feat: add conditional signup values
This commit is contained in:
@@ -20,8 +20,8 @@ import type { DateProps } from "./date"
|
||||
|
||||
export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
const intl = useIntl()
|
||||
const d = useWatch({ name })
|
||||
const { control, setValue } = useFormContext()
|
||||
const currentValue = useWatch({ name })
|
||||
const { control, setValue, trigger } = useFormContext()
|
||||
const { field } = useController({
|
||||
control,
|
||||
name,
|
||||
@@ -47,7 +47,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
}))
|
||||
const years = rangeArray(1900, currentYear - 18)
|
||||
.reverse()
|
||||
.map((year) => ({ value: year, label: `${year}` }))
|
||||
.map((year) => ({ value: year, label: year.toString() }))
|
||||
|
||||
function createOnSelect(selector: DateName) {
|
||||
/**
|
||||
@@ -68,6 +68,8 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
const month = selector === DateName.month ? value : newSegments.month
|
||||
if (year !== null && month !== null) {
|
||||
newSegments.daysInMonth = dt().year(year).month(month).daysInMonth()
|
||||
} else if (month !== null) {
|
||||
newSegments.daysInMonth = dt().month(month).daysInMonth()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +81,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
.set("date", Math.min(newSegments.date!, newSegments.daysInMonth))
|
||||
|
||||
setValue(name, newDate.format("YYYY-MM-DD"))
|
||||
trigger(name)
|
||||
}
|
||||
setDateSegment(newSegments)
|
||||
}
|
||||
@@ -95,9 +98,9 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
* date, but we can't check isNan since
|
||||
* we recieve the date as "1999-01-01"
|
||||
*/
|
||||
dateValue = dt(d).isValid() ? parseDate(d) : null
|
||||
dateValue = dt(currentValue).isValid() ? parseDate(currentValue) : null
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
console.warn("Known error for parse date in DateSelect: ", error)
|
||||
}
|
||||
|
||||
return (
|
||||
@@ -133,6 +136,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
defaultSelectedKey={
|
||||
segment.isPlaceholder ? undefined : segment.value
|
||||
}
|
||||
value={segment.isPlaceholder ? undefined : segment.value}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
@@ -151,6 +155,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
defaultSelectedKey={
|
||||
segment.isPlaceholder ? undefined : segment.value
|
||||
}
|
||||
value={segment.isPlaceholder ? undefined : segment.value}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
@@ -169,6 +174,7 @@ export default function DateSelect({ name, registerOptions = {} }: DateProps) {
|
||||
defaultSelectedKey={
|
||||
segment.isPlaceholder ? undefined : segment.value
|
||||
}
|
||||
value={segment.isPlaceholder ? undefined : segment.value}
|
||||
/>
|
||||
</div>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user