fix(SW-1509): fix default selected key by using initial parsed user values and not the re-rendered ones

This commit is contained in:
Christian Andolf
2025-04-15 13:14:08 +02:00
parent e04342110a
commit af918ac442

View File

@@ -22,13 +22,13 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
const lang = useLang() const lang = useLang()
const { control, setValue, formState, watch } = useFormContext() const { control, setValue, formState, watch } = useFormContext()
const { field, fieldState } = useController({ const { field } = useController({
control, control,
name, name,
rules: registerOptions, rules: registerOptions,
}) })
const currentDateValue = useWatch({ name }) const currentDateValue: string = useWatch({ name })
const year = watch(DateName.year) const year = watch(DateName.year)
const month = watch(DateName.month) const month = watch(DateName.month)
const day = watch(DateName.day) const day = watch(DateName.day)
@@ -61,16 +61,6 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
label: `${day}`, label: `${day}`,
})) }))
const dayLabel = intl.formatMessage({
defaultMessage: "Day",
})
const monthLabel = intl.formatMessage({
defaultMessage: "Month",
})
const yearLabel = intl.formatMessage({
defaultMessage: "Year",
})
useEffect(() => { useEffect(() => {
if (formState.isSubmitting) return if (formState.isSubmitting) return
@@ -130,35 +120,40 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
<div className={styles.segment}> <div className={styles.segment}>
<Select <Select
items={days} items={days}
label={dayLabel} label={intl.formatMessage({
defaultMessage: "Day",
})}
name={DateName.day} name={DateName.day}
onSelectionChange={(key) => setValue(DateName.day, Number(key))} onSelectionChange={(key) => setValue(DateName.day, Number(key))}
isInvalid={fieldState.invalid}
isRequired isRequired
enableFiltering enableFiltering
defaultSelectedKey={day} defaultSelectedKey={dateValue?.day}
/> />
</div> </div>
<div className={styles.segment}> <div className={styles.segment}>
<Select <Select
items={months} items={months}
label={monthLabel} label={intl.formatMessage({
defaultMessage: "Month",
})}
name={DateName.month} name={DateName.month}
onSelectionChange={(key) => setValue(DateName.month, Number(key))} onSelectionChange={(key) => setValue(DateName.month, Number(key))}
isRequired isRequired
enableFiltering enableFiltering
defaultSelectedKey={month} defaultSelectedKey={dateValue?.month}
/> />
</div> </div>
<div className={styles.segment}> <div className={styles.segment}>
<Select <Select
items={years} items={years}
label={yearLabel} label={intl.formatMessage({
defaultMessage: "Year",
})}
name={DateName.year} name={DateName.year}
onSelectionChange={(key) => setValue(DateName.year, Number(key))} onSelectionChange={(key) => setValue(DateName.year, Number(key))}
isRequired isRequired
enableFiltering enableFiltering
defaultSelectedKey={year} defaultSelectedKey={dateValue?.year}
/> />
</div> </div>
</div> </div>