diff --git a/packages/svelte-ux/src/lib/components/DateField.svelte b/packages/svelte-ux/src/lib/components/DateField.svelte index 33c54be47..91b34adff 100644 --- a/packages/svelte-ux/src/lib/components/DateField.svelte +++ b/packages/svelte-ux/src/lib/components/DateField.svelte @@ -13,11 +13,14 @@ const { format: format_ux } = getSettings(); export let value: Date | null = null; - export let format = $format_ux.settings.formats.dates.baseParsing ?? 'MM/dd/yyyy'; - export let mask = format.toLowerCase(); + export let format: string | undefined = undefined; + export let mask: string | undefined = undefined; export let replace = 'dmyh'; export let picker = false; + $: actualFormat = format ?? $format_ux.settings.formats.dates.baseParsing ?? 'MM/dd/yyyy'; + $: actualMask = mask ?? actualFormat.toLowerCase(); + // Field props export let label = ''; export let error = ''; @@ -38,7 +41,7 @@ function onInputChange(e: any) { inputValue = e.detail.value; const lastValue = value; - const parsedValue = parseDate(inputValue ?? '', format, new Date()); + const parsedValue = parseDate(inputValue ?? '', actualFormat, new Date()); value = isNaN(parsedValue.valueOf()) ? null : parsedValue; if (value != lastValue) { dispatch('change', { value }); @@ -65,8 +68,8 @@ let:id > { @@ -73,10 +80,10 @@ el.setSelectionRange(i, j); backspace = false; } - - dispatch('change', { value }); } + $: if (inputEl) applyMask(inputEl, mask); + onMount(() => { // Format on initial to handle partial values as well as different (but compatible) formats (ex. phone numbers) if (mask) {