@devslab/dds-solid 0.21.2 → 0.22.1

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 (72) hide show
  1. package/README.ko.md +6 -0
  2. package/README.md +6 -0
  3. package/dist/assets/calendar-view-1RO2mtf1.js +456 -0
  4. package/dist/assets/calendar-view-1RO2mtf1.js.map +1 -0
  5. package/dist/assets/choice-DoXiK8nc.js +443 -0
  6. package/dist/assets/choice-DoXiK8nc.js.map +1 -0
  7. package/dist/assets/utils-Ou0UJRlO.js +11 -0
  8. package/dist/assets/utils-Ou0UJRlO.js.map +1 -0
  9. package/dist/calendar-view-CTBTPB4T.js +444 -0
  10. package/dist/calendar-view-CTBTPB4T.js.map +1 -0
  11. package/dist/calendar-view.d.ts +16 -0
  12. package/dist/calendar-view.d.ts.map +1 -0
  13. package/dist/calendar.d.ts +19 -0
  14. package/dist/calendar.d.ts.map +1 -0
  15. package/dist/calendar.js +95 -0
  16. package/dist/calendar.js.map +1 -0
  17. package/dist/calendar.server.js +95 -0
  18. package/dist/calendar.server.js.map +1 -0
  19. package/dist/choice-BPMiJlPJ.js +395 -0
  20. package/dist/choice-BPMiJlPJ.js.map +1 -0
  21. package/dist/choice-types.d.ts +56 -0
  22. package/dist/choice-types.d.ts.map +1 -0
  23. package/dist/combobox.d.ts +4 -0
  24. package/dist/combobox.d.ts.map +1 -0
  25. package/dist/combobox.js +10 -0
  26. package/dist/combobox.js.map +1 -0
  27. package/dist/combobox.server.js +10 -0
  28. package/dist/combobox.server.js.map +1 -0
  29. package/dist/date-only.d.ts +36 -0
  30. package/dist/date-only.d.ts.map +1 -0
  31. package/dist/date-picker.d.ts +10 -1
  32. package/dist/date-picker.d.ts.map +1 -1
  33. package/dist/date-picker.js +258 -0
  34. package/dist/date-picker.js.map +1 -0
  35. package/dist/date-picker.server.js +260 -0
  36. package/dist/date-picker.server.js.map +1 -0
  37. package/dist/dropdown-menu.d.ts +31 -0
  38. package/dist/dropdown-menu.d.ts.map +1 -0
  39. package/dist/dropdown-menu.js +101 -0
  40. package/dist/dropdown-menu.js.map +1 -0
  41. package/dist/dropdown-menu.server.js +111 -0
  42. package/dist/dropdown-menu.server.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 +232 -647
  46. package/dist/index.js.map +1 -1
  47. package/dist/input.d.ts +26 -0
  48. package/dist/input.d.ts.map +1 -0
  49. package/dist/input.js +130 -0
  50. package/dist/input.js.map +1 -0
  51. package/dist/input.server.js +120 -0
  52. package/dist/input.server.js.map +1 -0
  53. package/dist/internal/choice.d.ts +5 -0
  54. package/dist/internal/choice.d.ts.map +1 -0
  55. package/dist/popover.d.ts +22 -0
  56. package/dist/popover.d.ts.map +1 -0
  57. package/dist/popover.js +76 -0
  58. package/dist/popover.js.map +1 -0
  59. package/dist/popover.server.js +79 -0
  60. package/dist/popover.server.js.map +1 -0
  61. package/dist/select-picker.d.ts +4 -0
  62. package/dist/select-picker.d.ts.map +1 -0
  63. package/dist/select-picker.js +10 -0
  64. package/dist/select-picker.js.map +1 -0
  65. package/dist/select-picker.server.js +10 -0
  66. package/dist/select-picker.server.js.map +1 -0
  67. package/dist/server.js +28 -445
  68. package/dist/server.js.map +1 -1
  69. package/dist/utils-oKxhg9RG.js +11 -0
  70. package/dist/utils-oKxhg9RG.js.map +1 -0
  71. package/package.json +63 -6
  72. package/styles.css +10 -1
@@ -0,0 +1,10 @@
1
+ import { t as e } from "./choice-BPMiJlPJ.js";
2
+ import { createComponent as t, mergeProps as n } from "solid-js/web";
3
+ //#region src/combobox.tsx
4
+ function r(r) {
5
+ return t(e, n(r, { searchable: !0 }));
6
+ }
7
+ //#endregion
8
+ export { r as Combobox };
9
+
10
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.js","names":["Choice","ComboboxProps","ChoiceOption","ChoiceMessages","ChoiceVirtualization","Combobox","props","_$createComponent","_$mergeProps","searchable"],"sources":["../src/combobox.tsx"],"sourcesContent":["import { Choice } from \"./internal/choice\";\nimport type { ComboboxProps } from \"./choice-types\";\nexport type {\n ComboboxProps,\n ChoiceOption,\n ChoiceMessages,\n ChoiceVirtualization,\n} from \"./choice-types\";\nexport function Combobox(props: ComboboxProps) {\n return <Choice {...props} searchable />;\n}\n"],"mappings":";;;AAQA,SAAgBK,EAASC,GAAsB;CAC7C,OAAAC,EAAQP,GAAMQ,EAAKF,GAAK,EAAEG,YAAU,GAAA,CAAA,CAAA;AACtC"}
@@ -0,0 +1,10 @@
1
+ import { t as Choice } from "./assets/choice-DoXiK8nc.js";
2
+ import { createComponent, mergeProps } from "solid-js/web";
3
+ //#region src/combobox.tsx
4
+ function Combobox(props) {
5
+ return createComponent(Choice, mergeProps(props, { searchable: true }));
6
+ }
7
+ //#endregion
8
+ export { Combobox };
9
+
10
+ //# sourceMappingURL=combobox.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.server.js","names":["Choice","ComboboxProps","ChoiceOption","ChoiceMessages","ChoiceVirtualization","Combobox","props","_$createComponent","_$mergeProps","searchable"],"sources":["../src/combobox.tsx"],"sourcesContent":["import { Choice } from \"./internal/choice\";\nimport type { ComboboxProps } from \"./choice-types\";\nexport type {\n ComboboxProps,\n ChoiceOption,\n ChoiceMessages,\n ChoiceVirtualization,\n} from \"./choice-types\";\nexport function Combobox(props: ComboboxProps) {\n return <Choice {...props} searchable />;\n}\n"],"mappings":";;;AAQA,SAAgBK,SAASC,OAAsB;CAC7C,OAAAC,gBAAQP,QAAMQ,WAAKF,OAAK,EAAEG,YAAU,KAAA,CAAA,CAAA;AACtC"}
@@ -0,0 +1,36 @@
1
+ export interface DatePickerValidity {
2
+ /** Exact displayed draft; never persist this display text as an API date. */
3
+ inputValue: string;
4
+ /** Valid ISO date, optional empty string, or null when invalid/incomplete. */
5
+ value: string | null;
6
+ valid: boolean;
7
+ reason: "valid" | "required" | "incomplete" | "invalid" | "rangeUnderflow" | "rangeOverflow";
8
+ }
9
+ export declare function isCalendarDate(value: string): boolean;
10
+ export declare function isKorean(locale: string): boolean;
11
+ export declare function displayDate(value: string, locale: string): string;
12
+ export declare function canonicalInput(inputValue: string, locale: string): string;
13
+ export declare function validateInput(inputValue: string, required: boolean, min?: string, max?: string, locale?: string): DatePickerValidity;
14
+ export interface CalendarMessages {
15
+ previousMonth?: string;
16
+ nextMonth?: string;
17
+ today?: string;
18
+ clear?: string;
19
+ openCalendar?: string;
20
+ selectDate?: (dateText: string) => string;
21
+ required?: string;
22
+ invalid?: string;
23
+ }
24
+ export declare function dateMessages(locale: string, messages?: CalendarMessages): {
25
+ previousMonth: string;
26
+ nextMonth: string;
27
+ today: string;
28
+ clear: string;
29
+ openCalendar: string;
30
+ selectDate: (text: string) => string;
31
+ required: string;
32
+ invalid: string;
33
+ };
34
+ /** Today is the sole timestamp boundary; stored dates remain Gregorian date-only strings. */
35
+ export declare function todayDate(timeZone: string): string;
36
+ //# sourceMappingURL=date-only.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-only.d.ts","sourceRoot":"","sources":["../src/date-only.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EACF,OAAO,GACP,UAAU,GACV,YAAY,GACZ,SAAS,GACT,gBAAgB,GAChB,eAAe,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,WAW3C;AACD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,WAEtC;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAIxD;AACD,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAIhE;AACD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,EACjB,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,EACZ,MAAM,SAAU,GACf,kBAAkB,CAyBpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,gBAAqB;;;;;;uBAQrD,MAAM;;;EAO5B;AAED,6FAA6F;AAC7F,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,UAUzC"}
@@ -1,13 +1,22 @@
1
+ import { type CalendarMessages, type DatePickerValidity } from "./date-only";
2
+ export type { DatePickerValidity, CalendarMessages } from "./date-only";
1
3
  export interface DatePickerProps {
2
4
  label: string;
3
- /** ISO calendar date (YYYY-MM-DD), or an empty string. */
4
5
  value: string;
5
6
  onChange: (value: string) => void;
6
7
  locale?: string;
7
8
  timeZone?: string;
8
9
  disabled?: boolean;
10
+ readOnly?: boolean;
11
+ required?: boolean;
12
+ onValidityChange?: (state: DatePickerValidity) => void;
9
13
  min?: string;
10
14
  max?: string;
15
+ startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
16
+ labelPlacement?: "outside" | "inside" | "hidden";
17
+ messages?: CalendarMessages;
18
+ clearable?: boolean;
19
+ showToday?: boolean;
11
20
  }
12
21
  export declare function DatePicker(props: DatePickerProps): import("solid-js").JSX.Element;
13
22
  //# sourceMappingURL=date-picker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAC,MAAM,CAAC;IACb,0DAA0D;IAC1D,KAAK,EAAC,MAAM,CAAC;IACb,QAAQ,EAAC,CAAC,KAAK,EAAC,MAAM,KAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAC,MAAM,CAAC;IACf,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAC,OAAO,CAAC;IAClB,GAAG,CAAC,EAAC,MAAM,CAAC;IACZ,GAAG,CAAC,EAAC,MAAM,CAAC;CACb;AAKD,wBAAgB,UAAU,CAAC,KAAK,EAAC,eAAe,kCA2B/C"}
1
+ {"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../src/date-picker.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACxE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACvD,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,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAoBD,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kCAwShD"}
@@ -0,0 +1,258 @@
1
+ import { a as e, i as t, n, o as r, r as i, s as a, t as o } from "./calendar-view-CTBTPB4T.js";
2
+ import { Show as s, createEffect as c, createMemo as l, createSignal as u, createUniqueId as d, on as f, onCleanup as p, onMount as m } from "solid-js";
3
+ import { Portal as h, addEventListener as ee, className as te, createComponent as g, delegateEvents as _, effect as v, getNextElement as y, getNextMarker as b, insert as x, memo as S, runHydrationEvents as ne, setAttribute as C, setProperty as w, template as T, use as re } from "solid-js/web";
4
+ import { DatePicker as E, parseDate as D } from "@ark-ui/solid/date-picker";
5
+ //#region src/date-picker.tsx
6
+ var O = /*#__PURE__*/ T("<svg width=20 height=20 viewBox=\"0 0 24 24\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden=true><rect x=3.5 y=5.5 width=17 height=15 rx=2></rect><path d=\"M7.5 3v5M16.5 3v5M3.5 10.5h17\">"), ie = /*#__PURE__*/ T("<span aria-hidden=true> *"), k = /*#__PURE__*/ T("<input type=text autocomplete=off autocorrect=off>"), A = /*#__PURE__*/ T("<span class=dds-field__error role=alert>"), j = /*#__PURE__*/ T("<div role=group><label class=dds-field__label><!$><!/><!$><!/></label><!$><!/><!$><!/>");
7
+ function M() {
8
+ return y(O);
9
+ }
10
+ function N(t) {
11
+ return e(t) ? [D(t)] : [];
12
+ }
13
+ function P(_) {
14
+ let T = () => _.locale ?? "ko-KR", O = `dds-date-${d()}`, [P, F] = u({
15
+ text: t(_.value, T()),
16
+ locale: T()
17
+ }), I = l(() => {
18
+ let r = P(), i = n(r.text, r.locale);
19
+ return r.locale !== T() && e(i) ? t(i, T()) : r.text;
20
+ }), L = (e) => F({
21
+ text: e,
22
+ locale: T()
23
+ }), [R, z] = u(N(_.value)), [B, V] = u(!1), H, U, W = _.value, G = _.value, K = "", q = [], J, [Y, ae] = u();
24
+ m(() => {
25
+ H && ae(H.closest("[role=\"dialog\"], [role=\"alertdialog\"]") ?? H.ownerDocument.body);
26
+ });
27
+ let X = () => i(T(), _.messages), Z = l(() => a(I(), _.required ?? !1, _.min, _.max, T())), Q = () => Z().valid ? void 0 : Z().reason === "required" ? X().required : X().invalid;
28
+ c(f(() => [_.value, T()], ([n, r]) => {
29
+ if (W === n) return;
30
+ W = n;
31
+ let i = q.indexOf(n);
32
+ if (i !== -1) {
33
+ q.splice(i, 1);
34
+ return;
35
+ }
36
+ q = [], G = n, L(t(n, r)), (n === "" || e(n)) && z(N(n));
37
+ })), c(() => {
38
+ H?.setCustomValidity(Q() ?? "");
39
+ let e = Z(), t = _.onValidityChange, n = JSON.stringify(e);
40
+ t && n !== K && (K = n, t(e));
41
+ }), c(() => {
42
+ (_.disabled || _.readOnly) && (V(!1), J !== void 0 && cancelAnimationFrame(J));
43
+ }), p(() => {
44
+ J !== void 0 && cancelAnimationFrame(J);
45
+ });
46
+ function $(e) {
47
+ if (_.disabled || _.readOnly) return;
48
+ let t = a(e, _.required ?? !1, _.min, _.max, T());
49
+ if (e !== "" && !t.valid) return;
50
+ let n = e === "" ? "" : t.value;
51
+ z(N(n)), n !== G && (G = n, q.push(n), _.onChange(n));
52
+ }
53
+ function oe(e) {
54
+ if (_.disabled || _.readOnly) return;
55
+ L(e);
56
+ let n = a(e, _.required ?? !1, _.min, _.max, T());
57
+ H?.setCustomValidity(n.valid ? "" : X().invalid), (e === "" || n.valid) && (L(t(n.value ?? "", T())), $(e));
58
+ }
59
+ return (() => {
60
+ var n = y(j), i = n.firstChild, c = i.firstChild, [l, u] = b(c.nextSibling), d = l.nextSibling, [f, m] = b(d.nextSibling), N = i.nextSibling, [P, F] = b(N.nextSibling), z = P.nextSibling, [W, G] = b(z.nextSibling);
61
+ return C(i, "for", O), x(i, () => _.label, l, u), x(i, g(s, {
62
+ get when() {
63
+ return _.required;
64
+ },
65
+ get children() {
66
+ return y(ie);
67
+ }
68
+ }), f, m), x(n, g(E.Root, {
69
+ get locale() {
70
+ return T();
71
+ },
72
+ get timeZone() {
73
+ return _.timeZone ?? "Asia/Seoul";
74
+ },
75
+ get disabled() {
76
+ return _.disabled;
77
+ },
78
+ get readOnly() {
79
+ return _.readOnly;
80
+ },
81
+ get required() {
82
+ return _.required;
83
+ },
84
+ get invalid() {
85
+ return !Z().valid;
86
+ },
87
+ get open() {
88
+ return S(() => !!(B() && !_.disabled))() && !_.readOnly;
89
+ },
90
+ onOpenChange: (e) => V(e.open && !_.disabled && !_.readOnly),
91
+ get min() {
92
+ return S(() => !!(_.min && e(_.min)))() ? D(_.min) : void 0;
93
+ },
94
+ get max() {
95
+ return S(() => !!(_.max && e(_.max)))() ? D(_.max) : void 0;
96
+ },
97
+ get startOfWeek() {
98
+ return _.startOfWeek ?? 0;
99
+ },
100
+ minView: "day",
101
+ maxView: "day",
102
+ fixedWeeks: !0,
103
+ get translations() {
104
+ return {
105
+ dayCell: (e) => X().selectDate(e.valueText),
106
+ clearTrigger: X().clear
107
+ };
108
+ },
109
+ get value() {
110
+ return R();
111
+ },
112
+ format: (e) => t(e.toString(), T()),
113
+ onValueChange: (e) => {
114
+ if (_.disabled || _.readOnly) return;
115
+ let n = e.value[0]?.toString() ?? "";
116
+ n !== "" && !a(n, _.required ?? !1, _.min, _.max, T()).valid || (L(t(n, T())), $(n), J !== void 0 && cancelAnimationFrame(J), J = requestAnimationFrame(() => {
117
+ !_.disabled && !_.readOnly && H?.focus({ preventScroll: !0 });
118
+ }));
119
+ },
120
+ get positioning() {
121
+ return {
122
+ placement: "bottom-start",
123
+ gutter: 8,
124
+ strategy: Y()?.matches("[role=\"dialog\"], [role=\"alertdialog\"]") ? "fixed" : "absolute",
125
+ hideWhenDetached: !!Y()?.matches("[role=\"dialog\"], [role=\"alertdialog\"]")
126
+ };
127
+ },
128
+ get children() {
129
+ return [g(E.Control, {
130
+ class: "dds-date-picker-control",
131
+ get "data-filled"() {
132
+ return I() === "" ? void 0 : "true";
133
+ },
134
+ get children() {
135
+ return [(() => {
136
+ var e = y(k);
137
+ e.$$keydown = (e) => {
138
+ e.key === "Enter" && !e.isComposing && (e.preventDefault(), e.stopPropagation(), $(I()));
139
+ }, e.addEventListener("blur", () => $(I())), ee(e, "input", (e) => {
140
+ e.stopPropagation(), oe(e.currentTarget.value);
141
+ });
142
+ var t = H;
143
+ return typeof t == "function" ? re(t, e) : H = e, C(e, "id", O), C(e, "spellcheck", !1), v((t) => {
144
+ var n = Z().valid ? void 0 : "true", i = _.required ? "true" : void 0, a = Q() ? `${O}-error` : void 0, o = _.required, s = _.readOnly, c = _.disabled, l = r(T()) ? "YYYY/MM/DD" : "YYYY-MM-DD";
145
+ return n !== t.e && C(e, "aria-invalid", t.e = n), i !== t.t && C(e, "aria-required", t.t = i), a !== t.a && C(e, "aria-describedby", t.a = a), o !== t.o && w(e, "required", t.o = o), s !== t.i && w(e, "readOnly", t.i = s), c !== t.n && w(e, "disabled", t.n = c), l !== t.s && C(e, "placeholder", t.s = l), t;
146
+ }, {
147
+ e: void 0,
148
+ t: void 0,
149
+ a: void 0,
150
+ o: void 0,
151
+ i: void 0,
152
+ n: void 0,
153
+ s: void 0
154
+ }), v(() => w(e, "value", I())), ne(), e;
155
+ })(), g(E.Trigger, {
156
+ ref(e) {
157
+ var t = U;
158
+ typeof t == "function" ? t(e) : U = e;
159
+ },
160
+ class: "dds-btn dds-btn--secondary",
161
+ get "aria-label"() {
162
+ return `${_.label} ${X().openCalendar}`;
163
+ },
164
+ get children() {
165
+ return g(M, {});
166
+ }
167
+ })];
168
+ }
169
+ }), g(s, {
170
+ get when() {
171
+ return Y();
172
+ },
173
+ children: (e) => g(h, {
174
+ get mount() {
175
+ return e();
176
+ },
177
+ get children() {
178
+ return g(E.Positioner, {
179
+ class: "dds-date-picker-positioner",
180
+ get children() {
181
+ return g(E.Content, {
182
+ ref: (e) => {
183
+ let t = (e) => {
184
+ e.key === "Escape" && (J !== void 0 && cancelAnimationFrame(J), J = requestAnimationFrame(() => {
185
+ J = requestAnimationFrame(() => {
186
+ !_.disabled && !_.readOnly && U?.focus({ preventScroll: !0 });
187
+ });
188
+ }));
189
+ };
190
+ e.addEventListener("keydown", t, !0), p(() => e.removeEventListener("keydown", t, !0));
191
+ },
192
+ class: "dds-date-picker-content",
193
+ get "aria-label"() {
194
+ return `${_.label} 날짜 선택`;
195
+ },
196
+ get children() {
197
+ return g(o, {
198
+ get timeZone() {
199
+ return _.timeZone;
200
+ },
201
+ get min() {
202
+ return _.min;
203
+ },
204
+ get max() {
205
+ return _.max;
206
+ },
207
+ get locale() {
208
+ return T();
209
+ },
210
+ get messages() {
211
+ return _.messages;
212
+ },
213
+ get disabled() {
214
+ return _.disabled;
215
+ },
216
+ get readOnly() {
217
+ return _.readOnly;
218
+ },
219
+ get showToday() {
220
+ return _.showToday;
221
+ },
222
+ get showClear() {
223
+ return _.clearable;
224
+ },
225
+ onClear: () => {
226
+ L(""), $("");
227
+ }
228
+ });
229
+ }
230
+ });
231
+ }
232
+ });
233
+ }
234
+ })
235
+ })];
236
+ }
237
+ }), P, F), x(n, g(s, {
238
+ get when() {
239
+ return Q();
240
+ },
241
+ get children() {
242
+ var e = y(A);
243
+ return C(e, "id", `${O}-error`), x(e, Q), e;
244
+ }
245
+ }), W, G), v((e) => {
246
+ var t = `dds-field dds-date-picker dds-date-picker--${_.labelPlacement ?? "outside"}${Q() ? " dds-field--error" : ""}`, r = I() === "" ? void 0 : "true";
247
+ return t !== e.e && te(n, e.e = t), r !== e.t && C(n, "data-filled", e.t = r), e;
248
+ }, {
249
+ e: void 0,
250
+ t: void 0
251
+ }), n;
252
+ })();
253
+ }
254
+ _(["keydown"]);
255
+ //#endregion
256
+ export { P as DatePicker };
257
+
258
+ //# sourceMappingURL=date-picker.js.map
@@ -0,0 +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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"}