date input: add onchange callback prop

This commit is contained in:
Elijah Duffy
2025-12-11 17:02:32 -08:00
parent a538db4065
commit 3409adc614

View File

@@ -24,6 +24,7 @@
invalidMessage?: string; invalidMessage?: string;
class?: ClassValue | undefined | null; class?: ClassValue | undefined | null;
format?: FormatString[]; format?: FormatString[];
onchange?: (date: CalendarDate | null) => void;
} }
let { let {
@@ -37,7 +38,8 @@
required = false, required = false,
invalidMessage = 'Valid date is required', invalidMessage = 'Valid date is required',
class: classValue, class: classValue,
format = ['year', 'month', 'day'] format = ['year', 'month', 'day'],
onchange
}: Props = $props(); }: Props = $props();
const id = $derived(generateIdentifier('dateinput', name)); const id = $derived(generateIdentifier('dateinput', name));
@@ -109,6 +111,7 @@
setPrevious(); setPrevious();
previousYearValue = undefined; previousYearValue = undefined;
value = null; value = null;
onchange?.(value);
} }
return; return;
} }
@@ -122,6 +125,7 @@
setPrevious(); setPrevious();
previousMonthValue = undefined; previousMonthValue = undefined;
value = null; value = null;
onchange?.(value);
} }
return; return;
} }
@@ -135,6 +139,7 @@
setPrevious(); setPrevious();
previousDayValue = undefined; previousDayValue = undefined;
value = null; value = null;
onchange?.(value);
} }
return; return;
} }
@@ -146,6 +151,7 @@
day ?? (value ? value.day : min.day) day ?? (value ? value.day : min.day)
); );
value = newDate; value = newDate;
onchange?.(value);
}; };
type caretPos = { start: number; end: number } | null; type caretPos = { start: number; end: number } | null;