From e649e5389c7e932d669d9735d30b68c5ec49350b Mon Sep 17 00:00:00 2001 From: Caesarovich Date: Tue, 9 Sep 2025 02:09:52 +0200 Subject: [PATCH] fix: improve disabled state handling for Select.Trigger --- .changeset/eager-colts-clean.md | 5 +++++ .../src/components/select/select-trigger.tsx | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 .changeset/eager-colts-clean.md diff --git a/.changeset/eager-colts-clean.md b/.changeset/eager-colts-clean.md new file mode 100644 index 000000000..68fca4a71 --- /dev/null +++ b/.changeset/eager-colts-clean.md @@ -0,0 +1,5 @@ +--- +'@qwik-ui/headless': patch +--- + +Fix disabled state handling for Select.Trigger diff --git a/packages/kit-headless/src/components/select/select-trigger.tsx b/packages/kit-headless/src/components/select/select-trigger.tsx index f58391b43..c5f3792b9 100644 --- a/packages/kit-headless/src/components/select/select-trigger.tsx +++ b/packages/kit-headless/src/components/select/select-trigger.tsx @@ -3,6 +3,7 @@ import { Slot, component$, sync$, + useComputed$, useContext, useSignal, type PropsOf, @@ -27,6 +28,10 @@ export const HSelectTrigger = component$((props) => { const contextRefOpts = { context, givenContextRef: context.triggerRef }; const triggerRef = useCombinedRef(props.ref, contextRefOpts); + const isDisabled = useComputed$(() => + context.isDisabledSig.value || props.disabled ? true : undefined, + ); + const handleClickSync$ = sync$((e: MouseEvent) => { e.preventDefault(); }); @@ -132,7 +137,7 @@ export const HSelectTrigger = component$((props) => { onKeyDown$={[handleKeyDownSync$, handleKeyDown$, props.onKeyDown$]} data-open={context.isListboxOpenSig.value ? '' : undefined} data-closed={!context.isListboxOpenSig.value ? '' : undefined} - data-disabled={context.isDisabledSig.value ? '' : undefined} + data-disabled={isDisabled.value ? '' : undefined} data-invalid={context.isInvalidSig?.value ? '' : undefined} aria-labelledby={`${valueId} ${labelId} `} aria-describedby={`${descriptionId} @@ -140,7 +145,7 @@ export const HSelectTrigger = component$((props) => { aria-expanded={context.isListboxOpenSig.value ? true : false} aria-haspopup="listbox" aria-controls={panelId} - disabled={context.isDisabledSig.value ? true : undefined} + disabled={isDisabled.value} preventdefault:blur >