@devslab/dds-solid 0.22.1 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.ko.md +49 -3
  2. package/README.md +47 -3
  3. package/dist/assets/{calendar-view-1RO2mtf1.js → calendar-view-BBQGmkJ7.js} +181 -145
  4. package/dist/assets/calendar-view-BBQGmkJ7.js.map +1 -0
  5. package/dist/assets/{choice-DoXiK8nc.js → choice-DPmk9AHn.js} +41 -29
  6. package/dist/assets/choice-DPmk9AHn.js.map +1 -0
  7. package/dist/assets/choice-types-h4YVL8xH.js +24 -0
  8. package/dist/assets/choice-types-h4YVL8xH.js.map +1 -0
  9. package/dist/assets/date-only-0Ldsjp43.js +174 -0
  10. package/dist/assets/date-only-0Ldsjp43.js.map +1 -0
  11. package/dist/assets/direction-BpTqmXs-.js +24 -0
  12. package/dist/assets/direction-BpTqmXs-.js.map +1 -0
  13. package/dist/calendar-view-CZLsC57_.js +481 -0
  14. package/dist/calendar-view-CZLsC57_.js.map +1 -0
  15. package/dist/calendar-view.d.ts +10 -0
  16. package/dist/calendar-view.d.ts.map +1 -1
  17. package/dist/calendar.js +7 -6
  18. package/dist/calendar.js.map +1 -1
  19. package/dist/calendar.server.js +2 -1
  20. package/dist/calendar.server.js.map +1 -1
  21. package/dist/choice-CTNeFOVo.js +403 -0
  22. package/dist/choice-CTNeFOVo.js.map +1 -0
  23. package/dist/choice-types-kSaEnZPr.js +23 -0
  24. package/dist/choice-types-kSaEnZPr.js.map +1 -0
  25. package/dist/combobox.js +1 -1
  26. package/dist/combobox.server.js +1 -1
  27. package/dist/date-only-Bu4UmsTP.js +151 -0
  28. package/dist/date-only-Bu4UmsTP.js.map +1 -0
  29. package/dist/date-only.d.ts +92 -0
  30. package/dist/date-only.d.ts.map +1 -1
  31. package/dist/date-picker.js +51 -50
  32. package/dist/date-picker.js.map +1 -1
  33. package/dist/date-picker.server.js +2 -1
  34. package/dist/date-picker.server.js.map +1 -1
  35. package/dist/date-range-picker.d.ts +41 -0
  36. package/dist/date-range-picker.d.ts.map +1 -0
  37. package/dist/date-range-picker.js +368 -0
  38. package/dist/date-range-picker.js.map +1 -0
  39. package/dist/date-range-picker.server.js +347 -0
  40. package/dist/date-range-picker.server.js.map +1 -0
  41. package/dist/direction-CS85IDNU.js +21 -0
  42. package/dist/direction-CS85IDNU.js.map +1 -0
  43. package/dist/index.d.ts +6 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +193 -176
  46. package/dist/index.js.map +1 -1
  47. package/dist/internal/choice.d.ts +25 -3
  48. package/dist/internal/choice.d.ts.map +1 -1
  49. package/dist/month-picker.d.ts +33 -0
  50. package/dist/month-picker.d.ts.map +1 -0
  51. package/dist/month-picker.js +287 -0
  52. package/dist/month-picker.js.map +1 -0
  53. package/dist/month-picker.server.js +282 -0
  54. package/dist/month-picker.server.js.map +1 -0
  55. package/dist/number-input.d.ts +53 -0
  56. package/dist/number-input.d.ts.map +1 -0
  57. package/dist/number-input.js +267 -0
  58. package/dist/number-input.js.map +1 -0
  59. package/dist/number-input.server.js +237 -0
  60. package/dist/number-input.server.js.map +1 -0
  61. package/dist/pending-action.d.ts +36 -0
  62. package/dist/pending-action.d.ts.map +1 -0
  63. package/dist/segmented-control.d.ts +40 -0
  64. package/dist/segmented-control.d.ts.map +1 -0
  65. package/dist/segmented-control.js +133 -0
  66. package/dist/segmented-control.js.map +1 -0
  67. package/dist/segmented-control.server.js +138 -0
  68. package/dist/segmented-control.server.js.map +1 -0
  69. package/dist/select-picker.js +1 -1
  70. package/dist/select-picker.server.js +1 -1
  71. package/dist/server.js +49 -23
  72. package/dist/server.js.map +1 -1
  73. package/dist/time-only.d.ts +32 -0
  74. package/dist/time-only.d.ts.map +1 -0
  75. package/dist/time-picker-BlMWCQwk.js +113 -0
  76. package/dist/time-picker-BlMWCQwk.js.map +1 -0
  77. package/dist/time-picker.d.ts +34 -0
  78. package/dist/time-picker.d.ts.map +1 -0
  79. package/dist/time-picker.js +2 -0
  80. package/dist/time-picker.server.js +152 -0
  81. package/dist/time-picker.server.js.map +1 -0
  82. package/package.json +44 -4
  83. package/styles.css +31 -1
  84. package/dist/assets/calendar-view-1RO2mtf1.js.map +0 -1
  85. package/dist/assets/choice-DoXiK8nc.js.map +0 -1
  86. package/dist/calendar-view-CTBTPB4T.js +0 -444
  87. package/dist/calendar-view-CTBTPB4T.js.map +0 -1
  88. package/dist/choice-BPMiJlPJ.js +0 -395
  89. package/dist/choice-BPMiJlPJ.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.js","names":["DatePicker","ArkDatePicker","parseDate","Portal","createEffect","createMemo","createSignal","createUniqueId","Show","onCleanup","onMount","on","CalendarView","isCalendarDate","isKorean","displayDate","canonicalInput","validateInput","dateMessages","CalendarMessages","DatePickerValidity","DatePickerProps","label","value","onChange","locale","timeZone","disabled","readOnly","required","onValidityChange","state","min","max","startOfWeek","labelPlacement","messages","clearable","showToday","CalendarIcon","_$getNextElement","_tmpl$","calendarSelection","props","id","draftState","setDraftState","text","draft","canonical","setDraft","selection","setSelection","open","setOpen","input","HTMLInputElement","trigger","HTMLButtonElement","observedValue","emittedValue","notified","pendingEchoes","focusFrame","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","validity","error","valid","undefined","reason","invalid","const","nextLocale","acknowledged","indexOf","splice","setCustomValidity","callback","key","JSON","stringify","cancelAnimationFrame","commit","next","push","changeDraft","_el$2","_tmpl$5","_el$3","firstChild","_el$5","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","_$setAttribute","_$insert","_$createComponent","when","children","_tmpl$2","Root","_$memo","onOpenChange","details","minView","maxView","fixedWeeks","translations","dayCell","selectDate","valueText","clearTrigger","clear","format","toString","onValueChange","requestAnimationFrame","focus","preventScroll","positioning","placement","gutter","strategy","matches","hideWhenDetached","Control","data-filled","_el$9","_tmpl$3","$$keydown","event","isComposing","preventDefault","stopPropagation","addEventListener","_$addEventListener","currentTarget","_ref$","_$use","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","e","t","a","o","_$setProperty","i","n","s","_$runHydrationEvents","Trigger","ref","r$","_ref$2","aria-label","openCalendar","mount","Positioner","Content","node","restoreTrigger","KeyboardEvent","removeEventListener","showClear","onClear","_el$0","_tmpl$4","_v$8","_v$9","_$className","_$delegateEvents"],"sources":["../src/date-picker.tsx"],"sourcesContent":["import {\n DatePicker as ArkDatePicker,\n parseDate,\n} from \"@ark-ui/solid/date-picker\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n Show,\n onCleanup,\n onMount,\n on,\n} from \"solid-js\";\nimport { CalendarView } from \"./calendar-view\";\nimport {\n isCalendarDate,\n isKorean,\n displayDate,\n canonicalInput,\n validateInput,\n dateMessages,\n type CalendarMessages,\n type DatePickerValidity,\n} from \"./date-only\";\nexport type { DatePickerValidity, CalendarMessages } from \"./date-only\";\nexport interface DatePickerProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n locale?: string;\n timeZone?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n onValidityChange?: (state: DatePickerValidity) => void;\n min?: string;\n max?: string;\n startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n labelPlacement?: \"outside\" | \"inside\" | \"hidden\";\n messages?: CalendarMessages;\n clearable?: boolean;\n showToday?: boolean;\n}\nfunction CalendarIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3.5\" y=\"5.5\" width=\"17\" height=\"15\" rx=\"2\" />\n <path d=\"M7.5 3v5M16.5 3v5M3.5 10.5h17\" />\n </svg>\n );\n}\nfunction calendarSelection(value: string) {\n return isCalendarDate(value) ? [parseDate(value)] : [];\n}\nexport function DatePicker(props: DatePickerProps) {\n const locale = () => props.locale ?? \"ko-KR\",\n id = `dds-date-${createUniqueId()}`;\n const [draftState, setDraftState] = createSignal({\n text: displayDate(props.value, locale()),\n locale: locale(),\n });\n // Keep the draft's formatting locale with its text, so changing locale cannot\n // publish an intermediate invalid report before the synchronization effect.\n const draft = createMemo(() => {\n const state = draftState(),\n canonical = canonicalInput(state.text, state.locale);\n return state.locale !== locale() && isCalendarDate(canonical)\n ? displayDate(canonical, locale())\n : state.text;\n });\n const setDraft = (text: string) => setDraftState({ text, locale: locale() });\n const [selection, setSelection] = createSignal(\n calendarSelection(props.value),\n );\n const [open, setOpen] = createSignal(false);\n let input: HTMLInputElement | undefined,\n trigger: HTMLButtonElement | undefined,\n observedValue = props.value,\n emittedValue = props.value,\n notified = \"\",\n pendingEchoes: string[] = [],\n focusFrame: number | undefined;\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n if (input) {\n setPortalMount(\n input.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n input.ownerDocument.body,\n );\n }\n });\n const text = () => dateMessages(locale(), props.messages);\n const validity = createMemo(() =>\n validateInput(\n draft(),\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ),\n );\n const error = () =>\n validity().valid\n ? undefined\n : validity().reason === \"required\"\n ? text().required\n : text().invalid;\n createEffect(\n on(\n () => [props.value, locale()] as const,\n ([value, nextLocale]) => {\n if (observedValue === value) return;\n observedValue = value;\n const acknowledged = pendingEchoes.indexOf(value);\n if (acknowledged !== -1) {\n pendingEchoes.splice(acknowledged, 1);\n return;\n }\n pendingEchoes = [];\n emittedValue = value;\n setDraft(displayDate(value, nextLocale));\n if (value === \"\" || isCalendarDate(value))\n setSelection(calendarSelection(value));\n },\n ),\n );\n createEffect(() => {\n input?.setCustomValidity(error() ?? \"\");\n const state = validity(),\n callback = props.onValidityChange,\n key = JSON.stringify(state);\n if (callback && key !== notified) {\n notified = key;\n callback(state);\n }\n });\n createEffect(() => {\n if (props.disabled || props.readOnly) {\n setOpen(false);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n }\n });\n onCleanup(() => {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n });\n function commit(next: string) {\n if (props.disabled || props.readOnly) return;\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n if (next !== \"\" && !state.valid) return;\n const canonical = next === \"\" ? \"\" : state.value!;\n setSelection(calendarSelection(canonical));\n if (canonical !== emittedValue) {\n emittedValue = canonical;\n pendingEchoes.push(canonical);\n props.onChange(canonical);\n }\n }\n function changeDraft(next: string) {\n if (props.disabled || props.readOnly) return;\n setDraft(next);\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n input?.setCustomValidity(state.valid ? \"\" : text().invalid);\n if (next === \"\" || state.valid) {\n setDraft(displayDate(state.value ?? \"\", locale()));\n commit(next);\n }\n }\n return (\n <div\n class={`dds-field dds-date-picker dds-date-picker--${props.labelPlacement ?? \"outside\"}${error() ? \" dds-field--error\" : \"\"}`}\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n role=\"group\"\n >\n <label class=\"dds-field__label\" for={id}>\n {props.label}\n <Show when={props.required}>\n <span aria-hidden=\"true\"> *</span>\n </Show>\n </label>\n <ArkDatePicker.Root\n locale={locale()}\n timeZone={props.timeZone ?? \"Asia/Seoul\"}\n disabled={props.disabled}\n readOnly={props.readOnly}\n required={props.required}\n invalid={!validity().valid}\n open={open() && !props.disabled && !props.readOnly}\n onOpenChange={(details) =>\n setOpen(details.open && !props.disabled && !props.readOnly)\n }\n min={\n props.min && isCalendarDate(props.min)\n ? parseDate(props.min)\n : undefined\n }\n max={\n props.max && isCalendarDate(props.max)\n ? parseDate(props.max)\n : undefined\n }\n startOfWeek={props.startOfWeek ?? 0}\n minView=\"day\"\n maxView=\"day\"\n fixedWeeks\n translations={{\n dayCell: (state) => text().selectDate(state.valueText),\n clearTrigger: text().clear,\n }}\n value={selection()}\n format={(value) => displayDate(value.toString(), locale())}\n onValueChange={(details) => {\n if (props.disabled || props.readOnly) return;\n const next = details.value[0]?.toString() ?? \"\";\n if (\n next !== \"\" &&\n !validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ).valid\n )\n return;\n setDraft(displayDate(next, locale()));\n commit(next);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n input?.focus({ preventScroll: true });\n });\n }}\n positioning={{\n placement: \"bottom-start\",\n gutter: 8,\n strategy: portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n )\n ? \"fixed\"\n : \"absolute\",\n hideWhenDetached: !!portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n ),\n }}\n >\n <ArkDatePicker.Control\n class=\"dds-date-picker-control\"\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n >\n <input\n id={id}\n aria-invalid={validity().valid ? undefined : \"true\"}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={error() ? `${id}-error` : undefined}\n ref={input}\n type=\"text\"\n value={draft()}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(event.currentTarget.value);\n }}\n onBlur={() => commit(draft())}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n commit(draft());\n }\n }}\n />\n <ArkDatePicker.Trigger\n ref={trigger}\n class=\"dds-btn dds-btn--secondary\"\n aria-label={`${props.label} ${text().openCalendar}`}\n >\n <CalendarIcon />\n </ArkDatePicker.Trigger>\n </ArkDatePicker.Control>\n <Show when={portalMount()}>\n {(mount) => (\n <Portal mount={mount()}>\n <ArkDatePicker.Positioner class=\"dds-date-picker-positioner\">\n <ArkDatePicker.Content\n ref={(node) => {\n const restoreTrigger = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n if (focusFrame !== undefined)\n cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n trigger?.focus({ preventScroll: true });\n });\n });\n };\n node.addEventListener(\"keydown\", restoreTrigger, true);\n onCleanup(() =>\n node.removeEventListener(\"keydown\", restoreTrigger, true),\n );\n }}\n class=\"dds-date-picker-content\"\n aria-label={`${props.label} 날짜 선택`}\n >\n <CalendarView\n timeZone={props.timeZone}\n min={props.min}\n max={props.max}\n locale={locale()}\n messages={props.messages}\n disabled={props.disabled}\n readOnly={props.readOnly}\n showToday={props.showToday}\n showClear={props.clearable}\n onClear={() => {\n setDraft(\"\");\n commit(\"\");\n }}\n />\n </ArkDatePicker.Content>\n </ArkDatePicker.Positioner>\n </Portal>\n )}\n </Show>\n </ArkDatePicker.Root>\n <Show when={error()}>\n <span id={`${id}-error`} class=\"dds-field__error\" role=\"alert\">\n {error()}\n </span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker.js","names":["DatePicker","ArkDatePicker","parseDate","Portal","createEffect","createMemo","createSignal","createUniqueId","Show","onCleanup","onMount","on","CalendarView","isCalendarDate","isKorean","displayDate","canonicalInput","validateInput","dateMessages","CalendarMessages","DatePickerValidity","DatePickerProps","label","value","onChange","locale","timeZone","disabled","readOnly","required","onValidityChange","state","min","max","startOfWeek","labelPlacement","messages","clearable","showToday","CalendarIcon","_$getNextElement","_tmpl$","calendarSelection","props","id","draftState","setDraftState","text","draft","canonical","setDraft","selection","setSelection","open","setOpen","input","HTMLInputElement","trigger","HTMLButtonElement","observedValue","emittedValue","notified","pendingEchoes","focusFrame","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","validity","error","valid","undefined","reason","invalid","const","nextLocale","acknowledged","indexOf","splice","setCustomValidity","callback","key","JSON","stringify","cancelAnimationFrame","commit","next","push","changeDraft","_el$2","_tmpl$5","_el$3","firstChild","_el$5","_el$6","_co$","_$getNextMarker","nextSibling","_el$7","_el$8","_co$2","_el$1","_el$10","_co$3","_el$11","_el$12","_co$4","_$setAttribute","_$insert","_$createComponent","when","children","_tmpl$2","Root","_$memo","onOpenChange","details","minView","maxView","fixedWeeks","translations","dayCell","selectDate","valueText","clearTrigger","clear","format","toString","onValueChange","requestAnimationFrame","focus","preventScroll","positioning","placement","gutter","strategy","matches","hideWhenDetached","Control","data-filled","_el$9","_tmpl$3","$$keydown","event","isComposing","preventDefault","stopPropagation","addEventListener","_$addEventListener","currentTarget","_ref$","_$use","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","_v$6","_v$7","e","t","a","o","_$setProperty","i","n","s","_$runHydrationEvents","Trigger","ref","r$","_ref$2","aria-label","openCalendar","mount","Positioner","Content","node","restoreTrigger","KeyboardEvent","removeEventListener","showClear","onClear","_el$0","_tmpl$4","_v$8","_v$9","_$className","_$delegateEvents"],"sources":["../src/date-picker.tsx"],"sourcesContent":["import {\n DatePicker as ArkDatePicker,\n parseDate,\n} from \"@ark-ui/solid/date-picker\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n Show,\n onCleanup,\n onMount,\n on,\n} from \"solid-js\";\nimport { CalendarView } from \"./calendar-view\";\nimport {\n isCalendarDate,\n isKorean,\n displayDate,\n canonicalInput,\n validateInput,\n dateMessages,\n type CalendarMessages,\n type DatePickerValidity,\n} from \"./date-only\";\nexport type { DatePickerValidity, CalendarMessages } from \"./date-only\";\nexport interface DatePickerProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n locale?: string;\n timeZone?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n onValidityChange?: (state: DatePickerValidity) => void;\n min?: string;\n max?: string;\n startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n labelPlacement?: \"outside\" | \"inside\" | \"hidden\";\n messages?: CalendarMessages;\n clearable?: boolean;\n showToday?: boolean;\n}\nfunction CalendarIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3.5\" y=\"5.5\" width=\"17\" height=\"15\" rx=\"2\" />\n <path d=\"M7.5 3v5M16.5 3v5M3.5 10.5h17\" />\n </svg>\n );\n}\nfunction calendarSelection(value: string) {\n return isCalendarDate(value) ? [parseDate(value)] : [];\n}\nexport function DatePicker(props: DatePickerProps) {\n const locale = () => props.locale ?? \"ko-KR\",\n id = `dds-date-${createUniqueId()}`;\n const [draftState, setDraftState] = createSignal({\n text: displayDate(props.value, locale()),\n locale: locale(),\n });\n // Keep the draft's formatting locale with its text, so changing locale cannot\n // publish an intermediate invalid report before the synchronization effect.\n const draft = createMemo(() => {\n const state = draftState(),\n canonical = canonicalInput(state.text, state.locale);\n return state.locale !== locale() && isCalendarDate(canonical)\n ? displayDate(canonical, locale())\n : state.text;\n });\n const setDraft = (text: string) => setDraftState({ text, locale: locale() });\n const [selection, setSelection] = createSignal(\n calendarSelection(props.value),\n );\n const [open, setOpen] = createSignal(false);\n let input: HTMLInputElement | undefined,\n trigger: HTMLButtonElement | undefined,\n observedValue = props.value,\n emittedValue = props.value,\n notified = \"\",\n pendingEchoes: string[] = [],\n focusFrame: number | undefined;\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n if (input) {\n setPortalMount(\n input.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n input.ownerDocument.body,\n );\n }\n });\n const text = () => dateMessages(locale(), props.messages);\n const validity = createMemo(() =>\n validateInput(\n draft(),\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ),\n );\n const error = () =>\n validity().valid\n ? undefined\n : validity().reason === \"required\"\n ? text().required\n : text().invalid;\n createEffect(\n on(\n () => [props.value, locale()] as const,\n ([value, nextLocale]) => {\n if (observedValue === value) return;\n observedValue = value;\n const acknowledged = pendingEchoes.indexOf(value);\n if (acknowledged !== -1) {\n pendingEchoes.splice(acknowledged, 1);\n return;\n }\n pendingEchoes = [];\n emittedValue = value;\n setDraft(displayDate(value, nextLocale));\n if (value === \"\" || isCalendarDate(value))\n setSelection(calendarSelection(value));\n },\n ),\n );\n createEffect(() => {\n input?.setCustomValidity(error() ?? \"\");\n const state = validity(),\n callback = props.onValidityChange,\n key = JSON.stringify(state);\n if (callback && key !== notified) {\n notified = key;\n callback(state);\n }\n });\n createEffect(() => {\n if (props.disabled || props.readOnly) {\n setOpen(false);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n }\n });\n onCleanup(() => {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n });\n function commit(next: string) {\n if (props.disabled || props.readOnly) return;\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n if (next !== \"\" && !state.valid) return;\n const canonical = next === \"\" ? \"\" : state.value!;\n setSelection(calendarSelection(canonical));\n if (canonical !== emittedValue) {\n emittedValue = canonical;\n pendingEchoes.push(canonical);\n props.onChange(canonical);\n }\n }\n function changeDraft(next: string) {\n if (props.disabled || props.readOnly) return;\n setDraft(next);\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n input?.setCustomValidity(state.valid ? \"\" : text().invalid);\n if (next === \"\" || state.valid) {\n setDraft(displayDate(state.value ?? \"\", locale()));\n commit(next);\n }\n }\n return (\n <div\n class={`dds-field dds-date-picker dds-date-picker--${props.labelPlacement ?? \"outside\"}${error() ? \" dds-field--error\" : \"\"}`}\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n role=\"group\"\n >\n <label class=\"dds-field__label\" for={id}>\n {props.label}\n <Show when={props.required}>\n <span aria-hidden=\"true\"> *</span>\n </Show>\n </label>\n <ArkDatePicker.Root\n locale={locale()}\n timeZone={props.timeZone ?? \"Asia/Seoul\"}\n disabled={props.disabled}\n readOnly={props.readOnly}\n required={props.required}\n invalid={!validity().valid}\n open={open() && !props.disabled && !props.readOnly}\n onOpenChange={(details) =>\n setOpen(details.open && !props.disabled && !props.readOnly)\n }\n min={\n props.min && isCalendarDate(props.min)\n ? parseDate(props.min)\n : undefined\n }\n max={\n props.max && isCalendarDate(props.max)\n ? parseDate(props.max)\n : undefined\n }\n startOfWeek={props.startOfWeek ?? 0}\n minView=\"day\"\n maxView=\"day\"\n fixedWeeks\n translations={{\n dayCell: (state) => text().selectDate(state.valueText),\n clearTrigger: text().clear,\n }}\n value={selection()}\n format={(value) => displayDate(value.toString(), locale())}\n onValueChange={(details) => {\n if (props.disabled || props.readOnly) return;\n const next = details.value[0]?.toString() ?? \"\";\n if (\n next !== \"\" &&\n !validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ).valid\n )\n return;\n setDraft(displayDate(next, locale()));\n commit(next);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n input?.focus({ preventScroll: true });\n });\n }}\n positioning={{\n placement: \"bottom-start\",\n gutter: 8,\n strategy: portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n )\n ? \"fixed\"\n : \"absolute\",\n hideWhenDetached: !!portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n ),\n }}\n >\n <ArkDatePicker.Control\n class=\"dds-date-picker-control\"\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n >\n <input\n id={id}\n aria-invalid={validity().valid ? undefined : \"true\"}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={error() ? `${id}-error` : undefined}\n ref={input}\n type=\"text\"\n value={draft()}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(event.currentTarget.value);\n }}\n onBlur={() => commit(draft())}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n commit(draft());\n }\n }}\n />\n <ArkDatePicker.Trigger\n ref={trigger}\n class=\"dds-btn dds-btn--secondary\"\n aria-label={`${props.label} ${text().openCalendar}`}\n >\n <CalendarIcon />\n </ArkDatePicker.Trigger>\n </ArkDatePicker.Control>\n <Show when={portalMount()}>\n {(mount) => (\n <Portal mount={mount()}>\n <ArkDatePicker.Positioner class=\"dds-date-picker-positioner\">\n <ArkDatePicker.Content\n ref={(node) => {\n const restoreTrigger = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n if (focusFrame !== undefined)\n cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n trigger?.focus({ preventScroll: true });\n });\n });\n };\n node.addEventListener(\"keydown\", restoreTrigger, true);\n onCleanup(() =>\n node.removeEventListener(\"keydown\", restoreTrigger, true),\n );\n }}\n class=\"dds-date-picker-content\"\n aria-label={`${props.label} 날짜 선택`}\n >\n <CalendarView\n timeZone={props.timeZone}\n min={props.min}\n max={props.max}\n locale={locale()}\n messages={props.messages}\n disabled={props.disabled}\n readOnly={props.readOnly}\n showToday={props.showToday}\n showClear={props.clearable}\n onClear={() => {\n setDraft(\"\");\n commit(\"\");\n }}\n />\n </ArkDatePicker.Content>\n </ArkDatePicker.Positioner>\n </Portal>\n )}\n </Show>\n </ArkDatePicker.Root>\n <Show when={error()}>\n <span id={`${id}-error`} class=\"dds-field__error\" role=\"alert\">\n {error()}\n </span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { a as isCalendarDate, i as displayDate, n as canonicalInput, o as isKorean, r as dateMessages, s as validateInput, t as CalendarView } from "./assets/calendar-view-1RO2mtf1.js";
1
+ import { t as CalendarView } from "./assets/calendar-view-BBQGmkJ7.js";
2
+ import { c as isKorean, i as displayDate, o as isCalendarDate, p as validateInput, r as dateMessages, t as canonicalInput } from "./assets/date-only-0Ldsjp43.js";
2
3
  import { Show, createEffect, createMemo, createSignal, createUniqueId, on, onCleanup, onMount } from "solid-js";
3
4
  import { Portal, createComponent, escape, memo, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
4
5
  import { DatePicker as DatePicker$1, parseDate } from "@ark-ui/solid/date-picker";
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.server.js","names":["DatePicker","ArkDatePicker","parseDate","Portal","createEffect","createMemo","createSignal","createUniqueId","Show","onCleanup","onMount","on","CalendarView","isCalendarDate","isKorean","displayDate","canonicalInput","validateInput","dateMessages","CalendarMessages","DatePickerValidity","DatePickerProps","label","value","onChange","locale","timeZone","disabled","readOnly","required","onValidityChange","state","min","max","startOfWeek","labelPlacement","messages","clearable","showToday","CalendarIcon","_$ssr","_tmpl$","_$ssrHydrationKey","calendarSelection","props","id","draftState","setDraftState","text","draft","canonical","setDraft","selection","setSelection","open","setOpen","input","HTMLInputElement","trigger","HTMLButtonElement","observedValue","emittedValue","notified","pendingEchoes","focusFrame","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","validity","error","valid","undefined","reason","invalid","const","nextLocale","acknowledged","indexOf","splice","setCustomValidity","callback","key","JSON","stringify","cancelAnimationFrame","commit","next","push","changeDraft","_tmpl$5","_$escape","_$ssrAttribute","_$createComponent","when","children","_tmpl$2","Root","_$memo","onOpenChange","details","minView","maxView","fixedWeeks","translations","dayCell","selectDate","valueText","clearTrigger","clear","format","toString","onValueChange","requestAnimationFrame","focus","preventScroll","positioning","placement","gutter","strategy","matches","hideWhenDetached","Control","data-filled","_tmpl$3","Trigger","aria-label","openCalendar","mount","Positioner","Content","showClear","onClear","_tmpl$4"],"sources":["../src/date-picker.tsx"],"sourcesContent":["import {\n DatePicker as ArkDatePicker,\n parseDate,\n} from \"@ark-ui/solid/date-picker\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n Show,\n onCleanup,\n onMount,\n on,\n} from \"solid-js\";\nimport { CalendarView } from \"./calendar-view\";\nimport {\n isCalendarDate,\n isKorean,\n displayDate,\n canonicalInput,\n validateInput,\n dateMessages,\n type CalendarMessages,\n type DatePickerValidity,\n} from \"./date-only\";\nexport type { DatePickerValidity, CalendarMessages } from \"./date-only\";\nexport interface DatePickerProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n locale?: string;\n timeZone?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n onValidityChange?: (state: DatePickerValidity) => void;\n min?: string;\n max?: string;\n startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n labelPlacement?: \"outside\" | \"inside\" | \"hidden\";\n messages?: CalendarMessages;\n clearable?: boolean;\n showToday?: boolean;\n}\nfunction CalendarIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3.5\" y=\"5.5\" width=\"17\" height=\"15\" rx=\"2\" />\n <path d=\"M7.5 3v5M16.5 3v5M3.5 10.5h17\" />\n </svg>\n );\n}\nfunction calendarSelection(value: string) {\n return isCalendarDate(value) ? [parseDate(value)] : [];\n}\nexport function DatePicker(props: DatePickerProps) {\n const locale = () => props.locale ?? \"ko-KR\",\n id = `dds-date-${createUniqueId()}`;\n const [draftState, setDraftState] = createSignal({\n text: displayDate(props.value, locale()),\n locale: locale(),\n });\n // Keep the draft's formatting locale with its text, so changing locale cannot\n // publish an intermediate invalid report before the synchronization effect.\n const draft = createMemo(() => {\n const state = draftState(),\n canonical = canonicalInput(state.text, state.locale);\n return state.locale !== locale() && isCalendarDate(canonical)\n ? displayDate(canonical, locale())\n : state.text;\n });\n const setDraft = (text: string) => setDraftState({ text, locale: locale() });\n const [selection, setSelection] = createSignal(\n calendarSelection(props.value),\n );\n const [open, setOpen] = createSignal(false);\n let input: HTMLInputElement | undefined,\n trigger: HTMLButtonElement | undefined,\n observedValue = props.value,\n emittedValue = props.value,\n notified = \"\",\n pendingEchoes: string[] = [],\n focusFrame: number | undefined;\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n if (input) {\n setPortalMount(\n input.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n input.ownerDocument.body,\n );\n }\n });\n const text = () => dateMessages(locale(), props.messages);\n const validity = createMemo(() =>\n validateInput(\n draft(),\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ),\n );\n const error = () =>\n validity().valid\n ? undefined\n : validity().reason === \"required\"\n ? text().required\n : text().invalid;\n createEffect(\n on(\n () => [props.value, locale()] as const,\n ([value, nextLocale]) => {\n if (observedValue === value) return;\n observedValue = value;\n const acknowledged = pendingEchoes.indexOf(value);\n if (acknowledged !== -1) {\n pendingEchoes.splice(acknowledged, 1);\n return;\n }\n pendingEchoes = [];\n emittedValue = value;\n setDraft(displayDate(value, nextLocale));\n if (value === \"\" || isCalendarDate(value))\n setSelection(calendarSelection(value));\n },\n ),\n );\n createEffect(() => {\n input?.setCustomValidity(error() ?? \"\");\n const state = validity(),\n callback = props.onValidityChange,\n key = JSON.stringify(state);\n if (callback && key !== notified) {\n notified = key;\n callback(state);\n }\n });\n createEffect(() => {\n if (props.disabled || props.readOnly) {\n setOpen(false);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n }\n });\n onCleanup(() => {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n });\n function commit(next: string) {\n if (props.disabled || props.readOnly) return;\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n if (next !== \"\" && !state.valid) return;\n const canonical = next === \"\" ? \"\" : state.value!;\n setSelection(calendarSelection(canonical));\n if (canonical !== emittedValue) {\n emittedValue = canonical;\n pendingEchoes.push(canonical);\n props.onChange(canonical);\n }\n }\n function changeDraft(next: string) {\n if (props.disabled || props.readOnly) return;\n setDraft(next);\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n input?.setCustomValidity(state.valid ? \"\" : text().invalid);\n if (next === \"\" || state.valid) {\n setDraft(displayDate(state.value ?? \"\", locale()));\n commit(next);\n }\n }\n return (\n <div\n class={`dds-field dds-date-picker dds-date-picker--${props.labelPlacement ?? \"outside\"}${error() ? \" dds-field--error\" : \"\"}`}\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n role=\"group\"\n >\n <label class=\"dds-field__label\" for={id}>\n {props.label}\n <Show when={props.required}>\n <span aria-hidden=\"true\"> *</span>\n </Show>\n </label>\n <ArkDatePicker.Root\n locale={locale()}\n timeZone={props.timeZone ?? \"Asia/Seoul\"}\n disabled={props.disabled}\n readOnly={props.readOnly}\n required={props.required}\n invalid={!validity().valid}\n open={open() && !props.disabled && !props.readOnly}\n onOpenChange={(details) =>\n setOpen(details.open && !props.disabled && !props.readOnly)\n }\n min={\n props.min && isCalendarDate(props.min)\n ? parseDate(props.min)\n : undefined\n }\n max={\n props.max && isCalendarDate(props.max)\n ? parseDate(props.max)\n : undefined\n }\n startOfWeek={props.startOfWeek ?? 0}\n minView=\"day\"\n maxView=\"day\"\n fixedWeeks\n translations={{\n dayCell: (state) => text().selectDate(state.valueText),\n clearTrigger: text().clear,\n }}\n value={selection()}\n format={(value) => displayDate(value.toString(), locale())}\n onValueChange={(details) => {\n if (props.disabled || props.readOnly) return;\n const next = details.value[0]?.toString() ?? \"\";\n if (\n next !== \"\" &&\n !validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ).valid\n )\n return;\n setDraft(displayDate(next, locale()));\n commit(next);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n input?.focus({ preventScroll: true });\n });\n }}\n positioning={{\n placement: \"bottom-start\",\n gutter: 8,\n strategy: portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n )\n ? \"fixed\"\n : \"absolute\",\n hideWhenDetached: !!portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n ),\n }}\n >\n <ArkDatePicker.Control\n class=\"dds-date-picker-control\"\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n >\n <input\n id={id}\n aria-invalid={validity().valid ? undefined : \"true\"}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={error() ? `${id}-error` : undefined}\n ref={input}\n type=\"text\"\n value={draft()}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(event.currentTarget.value);\n }}\n onBlur={() => commit(draft())}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n commit(draft());\n }\n }}\n />\n <ArkDatePicker.Trigger\n ref={trigger}\n class=\"dds-btn dds-btn--secondary\"\n aria-label={`${props.label} ${text().openCalendar}`}\n >\n <CalendarIcon />\n </ArkDatePicker.Trigger>\n </ArkDatePicker.Control>\n <Show when={portalMount()}>\n {(mount) => (\n <Portal mount={mount()}>\n <ArkDatePicker.Positioner class=\"dds-date-picker-positioner\">\n <ArkDatePicker.Content\n ref={(node) => {\n const restoreTrigger = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n if (focusFrame !== undefined)\n cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n trigger?.focus({ preventScroll: true });\n });\n });\n };\n node.addEventListener(\"keydown\", restoreTrigger, true);\n onCleanup(() =>\n node.removeEventListener(\"keydown\", restoreTrigger, true),\n );\n }}\n class=\"dds-date-picker-content\"\n aria-label={`${props.label} 날짜 선택`}\n >\n <CalendarView\n timeZone={props.timeZone}\n min={props.min}\n max={props.max}\n locale={locale()}\n messages={props.messages}\n disabled={props.disabled}\n readOnly={props.readOnly}\n showToday={props.showToday}\n showClear={props.clearable}\n onClear={() => {\n setDraft(\"\");\n commit(\"\");\n }}\n />\n </ArkDatePicker.Content>\n </ArkDatePicker.Positioner>\n </Portal>\n )}\n </Show>\n </ArkDatePicker.Root>\n <Show when={error()}>\n <span id={`${id}-error`} class=\"dds-field__error\" role=\"alert\">\n {error()}\n </span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker.server.js","names":["DatePicker","ArkDatePicker","parseDate","Portal","createEffect","createMemo","createSignal","createUniqueId","Show","onCleanup","onMount","on","CalendarView","isCalendarDate","isKorean","displayDate","canonicalInput","validateInput","dateMessages","CalendarMessages","DatePickerValidity","DatePickerProps","label","value","onChange","locale","timeZone","disabled","readOnly","required","onValidityChange","state","min","max","startOfWeek","labelPlacement","messages","clearable","showToday","CalendarIcon","_$ssr","_tmpl$","_$ssrHydrationKey","calendarSelection","props","id","draftState","setDraftState","text","draft","canonical","setDraft","selection","setSelection","open","setOpen","input","HTMLInputElement","trigger","HTMLButtonElement","observedValue","emittedValue","notified","pendingEchoes","focusFrame","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","validity","error","valid","undefined","reason","invalid","const","nextLocale","acknowledged","indexOf","splice","setCustomValidity","callback","key","JSON","stringify","cancelAnimationFrame","commit","next","push","changeDraft","_tmpl$5","_$escape","_$ssrAttribute","_$createComponent","when","children","_tmpl$2","Root","_$memo","onOpenChange","details","minView","maxView","fixedWeeks","translations","dayCell","selectDate","valueText","clearTrigger","clear","format","toString","onValueChange","requestAnimationFrame","focus","preventScroll","positioning","placement","gutter","strategy","matches","hideWhenDetached","Control","data-filled","_tmpl$3","Trigger","aria-label","openCalendar","mount","Positioner","Content","showClear","onClear","_tmpl$4"],"sources":["../src/date-picker.tsx"],"sourcesContent":["import {\n DatePicker as ArkDatePicker,\n parseDate,\n} from \"@ark-ui/solid/date-picker\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n Show,\n onCleanup,\n onMount,\n on,\n} from \"solid-js\";\nimport { CalendarView } from \"./calendar-view\";\nimport {\n isCalendarDate,\n isKorean,\n displayDate,\n canonicalInput,\n validateInput,\n dateMessages,\n type CalendarMessages,\n type DatePickerValidity,\n} from \"./date-only\";\nexport type { DatePickerValidity, CalendarMessages } from \"./date-only\";\nexport interface DatePickerProps {\n label: string;\n value: string;\n onChange: (value: string) => void;\n locale?: string;\n timeZone?: string;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n onValidityChange?: (state: DatePickerValidity) => void;\n min?: string;\n max?: string;\n startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n labelPlacement?: \"outside\" | \"inside\" | \"hidden\";\n messages?: CalendarMessages;\n clearable?: boolean;\n showToday?: boolean;\n}\nfunction CalendarIcon() {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n aria-hidden=\"true\"\n >\n <rect x=\"3.5\" y=\"5.5\" width=\"17\" height=\"15\" rx=\"2\" />\n <path d=\"M7.5 3v5M16.5 3v5M3.5 10.5h17\" />\n </svg>\n );\n}\nfunction calendarSelection(value: string) {\n return isCalendarDate(value) ? [parseDate(value)] : [];\n}\nexport function DatePicker(props: DatePickerProps) {\n const locale = () => props.locale ?? \"ko-KR\",\n id = `dds-date-${createUniqueId()}`;\n const [draftState, setDraftState] = createSignal({\n text: displayDate(props.value, locale()),\n locale: locale(),\n });\n // Keep the draft's formatting locale with its text, so changing locale cannot\n // publish an intermediate invalid report before the synchronization effect.\n const draft = createMemo(() => {\n const state = draftState(),\n canonical = canonicalInput(state.text, state.locale);\n return state.locale !== locale() && isCalendarDate(canonical)\n ? displayDate(canonical, locale())\n : state.text;\n });\n const setDraft = (text: string) => setDraftState({ text, locale: locale() });\n const [selection, setSelection] = createSignal(\n calendarSelection(props.value),\n );\n const [open, setOpen] = createSignal(false);\n let input: HTMLInputElement | undefined,\n trigger: HTMLButtonElement | undefined,\n observedValue = props.value,\n emittedValue = props.value,\n notified = \"\",\n pendingEchoes: string[] = [],\n focusFrame: number | undefined;\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n if (input) {\n setPortalMount(\n input.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n input.ownerDocument.body,\n );\n }\n });\n const text = () => dateMessages(locale(), props.messages);\n const validity = createMemo(() =>\n validateInput(\n draft(),\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ),\n );\n const error = () =>\n validity().valid\n ? undefined\n : validity().reason === \"required\"\n ? text().required\n : text().invalid;\n createEffect(\n on(\n () => [props.value, locale()] as const,\n ([value, nextLocale]) => {\n if (observedValue === value) return;\n observedValue = value;\n const acknowledged = pendingEchoes.indexOf(value);\n if (acknowledged !== -1) {\n pendingEchoes.splice(acknowledged, 1);\n return;\n }\n pendingEchoes = [];\n emittedValue = value;\n setDraft(displayDate(value, nextLocale));\n if (value === \"\" || isCalendarDate(value))\n setSelection(calendarSelection(value));\n },\n ),\n );\n createEffect(() => {\n input?.setCustomValidity(error() ?? \"\");\n const state = validity(),\n callback = props.onValidityChange,\n key = JSON.stringify(state);\n if (callback && key !== notified) {\n notified = key;\n callback(state);\n }\n });\n createEffect(() => {\n if (props.disabled || props.readOnly) {\n setOpen(false);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n }\n });\n onCleanup(() => {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n });\n function commit(next: string) {\n if (props.disabled || props.readOnly) return;\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n if (next !== \"\" && !state.valid) return;\n const canonical = next === \"\" ? \"\" : state.value!;\n setSelection(calendarSelection(canonical));\n if (canonical !== emittedValue) {\n emittedValue = canonical;\n pendingEchoes.push(canonical);\n props.onChange(canonical);\n }\n }\n function changeDraft(next: string) {\n if (props.disabled || props.readOnly) return;\n setDraft(next);\n const state = validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n );\n input?.setCustomValidity(state.valid ? \"\" : text().invalid);\n if (next === \"\" || state.valid) {\n setDraft(displayDate(state.value ?? \"\", locale()));\n commit(next);\n }\n }\n return (\n <div\n class={`dds-field dds-date-picker dds-date-picker--${props.labelPlacement ?? \"outside\"}${error() ? \" dds-field--error\" : \"\"}`}\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n role=\"group\"\n >\n <label class=\"dds-field__label\" for={id}>\n {props.label}\n <Show when={props.required}>\n <span aria-hidden=\"true\"> *</span>\n </Show>\n </label>\n <ArkDatePicker.Root\n locale={locale()}\n timeZone={props.timeZone ?? \"Asia/Seoul\"}\n disabled={props.disabled}\n readOnly={props.readOnly}\n required={props.required}\n invalid={!validity().valid}\n open={open() && !props.disabled && !props.readOnly}\n onOpenChange={(details) =>\n setOpen(details.open && !props.disabled && !props.readOnly)\n }\n min={\n props.min && isCalendarDate(props.min)\n ? parseDate(props.min)\n : undefined\n }\n max={\n props.max && isCalendarDate(props.max)\n ? parseDate(props.max)\n : undefined\n }\n startOfWeek={props.startOfWeek ?? 0}\n minView=\"day\"\n maxView=\"day\"\n fixedWeeks\n translations={{\n dayCell: (state) => text().selectDate(state.valueText),\n clearTrigger: text().clear,\n }}\n value={selection()}\n format={(value) => displayDate(value.toString(), locale())}\n onValueChange={(details) => {\n if (props.disabled || props.readOnly) return;\n const next = details.value[0]?.toString() ?? \"\";\n if (\n next !== \"\" &&\n !validateInput(\n next,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ).valid\n )\n return;\n setDraft(displayDate(next, locale()));\n commit(next);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n input?.focus({ preventScroll: true });\n });\n }}\n positioning={{\n placement: \"bottom-start\",\n gutter: 8,\n strategy: portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n )\n ? \"fixed\"\n : \"absolute\",\n hideWhenDetached: !!portalMount()?.matches(\n '[role=\"dialog\"], [role=\"alertdialog\"]',\n ),\n }}\n >\n <ArkDatePicker.Control\n class=\"dds-date-picker-control\"\n data-filled={draft() !== \"\" ? \"true\" : undefined}\n >\n <input\n id={id}\n aria-invalid={validity().valid ? undefined : \"true\"}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={error() ? `${id}-error` : undefined}\n ref={input}\n type=\"text\"\n value={draft()}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(event.currentTarget.value);\n }}\n onBlur={() => commit(draft())}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n commit(draft());\n }\n }}\n />\n <ArkDatePicker.Trigger\n ref={trigger}\n class=\"dds-btn dds-btn--secondary\"\n aria-label={`${props.label} ${text().openCalendar}`}\n >\n <CalendarIcon />\n </ArkDatePicker.Trigger>\n </ArkDatePicker.Control>\n <Show when={portalMount()}>\n {(mount) => (\n <Portal mount={mount()}>\n <ArkDatePicker.Positioner class=\"dds-date-picker-positioner\">\n <ArkDatePicker.Content\n ref={(node) => {\n const restoreTrigger = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n if (focusFrame !== undefined)\n cancelAnimationFrame(focusFrame);\n focusFrame = requestAnimationFrame(() => {\n focusFrame = requestAnimationFrame(() => {\n if (!props.disabled && !props.readOnly)\n trigger?.focus({ preventScroll: true });\n });\n });\n };\n node.addEventListener(\"keydown\", restoreTrigger, true);\n onCleanup(() =>\n node.removeEventListener(\"keydown\", restoreTrigger, true),\n );\n }}\n class=\"dds-date-picker-content\"\n aria-label={`${props.label} 날짜 선택`}\n >\n <CalendarView\n timeZone={props.timeZone}\n min={props.min}\n max={props.max}\n locale={locale()}\n messages={props.messages}\n disabled={props.disabled}\n readOnly={props.readOnly}\n showToday={props.showToday}\n showClear={props.clearable}\n onClear={() => {\n setDraft(\"\");\n commit(\"\");\n }}\n />\n </ArkDatePicker.Content>\n </ArkDatePicker.Positioner>\n </Portal>\n )}\n </Show>\n </ArkDatePicker.Root>\n <Show when={error()}>\n <span id={`${id}-error`} class=\"dds-field__error\" role=\"alert\">\n {error()}\n </span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type DateRange, type DateRangeMessages } from "./date-only";
2
+ export type { DateRange, DateRangeMessages, DateRangeValidity, } from "./date-only";
3
+ /** A consumer-supplied shortcut shown in the calendar footer. DDS ships no built-in list. */
4
+ export interface DateRangePreset {
5
+ label: string;
6
+ value: DateRange;
7
+ }
8
+ export interface DateRangePickerProps {
9
+ label?: string;
10
+ /** Two inputs share one field label; "inside" is not offered. */
11
+ labelPlacement?: "outside" | "hidden";
12
+ "aria-label"?: string;
13
+ "aria-labelledby"?: string;
14
+ "aria-describedby"?: string;
15
+ /** Id of the start input; the end input receives `${id}-end`. */
16
+ id?: string;
17
+ value?: DateRange;
18
+ defaultValue?: DateRange;
19
+ /** Called on user changes only, with YYYY-MM-DD or "" on each side; never with start after end. */
20
+ onValueChange?: (next: DateRange) => void;
21
+ locale?: string;
22
+ timeZone?: string;
23
+ min?: string;
24
+ max?: string;
25
+ startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
26
+ messages?: DateRangeMessages;
27
+ clearable?: boolean;
28
+ presets?: DateRangePreset[];
29
+ /** Both dates are required. */
30
+ required?: boolean;
31
+ disabled?: boolean;
32
+ readOnly?: boolean;
33
+ invalid?: boolean;
34
+ /** Form field name submitting the start date (YYYY-MM-DD or ""). */
35
+ startName?: string;
36
+ /** Form field name submitting the end date (YYYY-MM-DD or ""). */
37
+ endName?: string;
38
+ form?: string;
39
+ }
40
+ export declare function DateRangePicker(props: DateRangePickerProps): import("solid-js").JSX.Element;
41
+ //# sourceMappingURL=date-range-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.d.ts","sourceRoot":"","sources":["../src/date-range-picker.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,6FAA6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iEAAiE;IACjE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,mGAAmG;IACnG,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA+BD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,kCA2a1D"}