Skip to content

Commit

Permalink
make hidden inputs disabled if the wrapping component is disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
RobinMalfait committed Feb 21, 2024
1 parent 08baf09 commit 3fdf345
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,12 @@ function CheckboxFn<TTag extends ElementType = typeof DEFAULT_CHECKBOX_TAG, TTyp
return (
<>
{name != null && (
<FormFields data={checked ? { [name]: value || 'on' } : {}} form={form} onReset={reset} />
<FormFields
disabled={disabled}
data={checked ? { [name]: value || 'on' } : {}}
form={form}
onReset={reset}
/>
)}
{render({
ourProps,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,7 @@ function ComboboxFn<TValue, TTag extends ElementType = typeof DEFAULT_COMBOBOX_T
>
{name != null && (
<FormFields
disabled={disabled}
data={value != null ? { [name]: value } : {}}
form={form}
onReset={reset}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,12 @@ function ListboxFn<
})}
>
{name != null && value != null && (
<FormFields data={{ [name]: value }} form={form} onReset={reset} />
<FormFields
disabled={disabled}
data={{ [name]: value }}
form={form}
onReset={reset}
/>
)}
{render({
ourProps,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,7 @@ function RadioGroupFn<TTag extends ElementType = typeof DEFAULT_RADIO_GROUP_TAG,
<RadioGroupDataContext.Provider value={radioGroupData}>
{name != null && (
<FormFields
disabled={disabled}
data={value != null ? { [name]: value || 'on' } : {}}
form={form}
onReset={reset}
Expand Down
7 changes: 6 additions & 1 deletion packages/@headlessui-react/src/components/switch/switch.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,12 @@ function SwitchFn<TTag extends ElementType = typeof DEFAULT_SWITCH_TAG>(
return (
<>
{name != null && (
<FormFields data={checked ? { [name]: value || 'on' } : {}} form={form} onReset={reset} />
<FormFields
disabled={disabled}
data={checked ? { [name]: value || 'on' } : {}}
form={form}
onReset={reset}
/>
)}
{render({ ourProps, theirProps, slot, defaultTag: DEFAULT_SWITCH_TAG, name: 'Switch' })}
</>
Expand Down
3 changes: 3 additions & 0 deletions packages/@headlessui-react/src/internal/form-fields.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@ export function HoistFormFields({ children }: React.PropsWithChildren<{}>) {
export function FormFields({
data,
form: formId,
disabled,
onReset,
}: {
data: Record<string, any>
form?: string
disabled?: boolean
onReset?: (e: Event) => void
}) {
let [form, setForm] = useState<HTMLFormElement | null>(null)
Expand All @@ -61,6 +63,7 @@ export function FormFields({
hidden: true,
readOnly: true,
form: formId,
disabled,
name,
value,
})}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,7 @@ export let Combobox = defineComponent({
hidden: true,
readOnly: true,
form,
disabled,
name,
value,
})
Expand Down
1 change: 1 addition & 0 deletions packages/@headlessui-vue/src/components/listbox/listbox.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,7 @@ export let Listbox = defineComponent({
hidden: true,
readOnly: true,
form,
disabled,
name,
value,
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ export let RadioGroup = defineComponent({
hidden: true,
readOnly: true,
form,
disabled,
name,
value,
})
Expand Down
2 changes: 2 additions & 0 deletions packages/@headlessui-vue/src/components/switch/switch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ export let Switch = defineComponent({
name: { type: String, optional: true },
value: { type: String, optional: true },
id: { type: String, default: () => `headlessui-switch-${useId()}` },
disabled: { type: Boolean, default: false },
tabIndex: { type: Number, default: 0 },
},
inheritAttrs: false,
Expand Down Expand Up @@ -172,6 +173,7 @@ export let Switch = defineComponent({
readOnly: true,
checked: checked.value,
form,
disabled: theirProps.disabled,
name,
value,
})
Expand Down

0 comments on commit 3fdf345

Please sign in to comment.