@devslab/dds-solid 0.23.0 → 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 (87) hide show
  1. package/README.ko.md +15 -3
  2. package/README.md +15 -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 +5 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +168 -179
  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/segmented-control.d.ts +40 -0
  62. package/dist/segmented-control.d.ts.map +1 -0
  63. package/dist/segmented-control.js +133 -0
  64. package/dist/segmented-control.js.map +1 -0
  65. package/dist/segmented-control.server.js +138 -0
  66. package/dist/segmented-control.server.js.map +1 -0
  67. package/dist/select-picker.js +1 -1
  68. package/dist/select-picker.server.js +1 -1
  69. package/dist/server.js +8 -22
  70. package/dist/server.js.map +1 -1
  71. package/dist/time-only.d.ts +32 -0
  72. package/dist/time-only.d.ts.map +1 -0
  73. package/dist/time-picker-BlMWCQwk.js +113 -0
  74. package/dist/time-picker-BlMWCQwk.js.map +1 -0
  75. package/dist/time-picker.d.ts +34 -0
  76. package/dist/time-picker.d.ts.map +1 -0
  77. package/dist/time-picker.js +2 -0
  78. package/dist/time-picker.server.js +152 -0
  79. package/dist/time-picker.server.js.map +1 -0
  80. package/package.json +44 -4
  81. package/styles.css +31 -1
  82. package/dist/assets/calendar-view-1RO2mtf1.js.map +0 -1
  83. package/dist/assets/choice-DoXiK8nc.js.map +0 -1
  84. package/dist/calendar-view-CTBTPB4T.js +0 -444
  85. package/dist/calendar-view-CTBTPB4T.js.map +0 -1
  86. package/dist/choice-BPMiJlPJ.js +0 -395
  87. package/dist/choice-BPMiJlPJ.js.map +0 -1
@@ -0,0 +1,368 @@
1
+ import { l as e, t } from "./calendar-view-CZLsC57_.js";
2
+ import { n } from "./utils-oKxhg9RG.js";
3
+ import { c as r, d as i, h as a, i as o, o as s, t as c } from "./date-only-Bu4UmsTP.js";
4
+ import { Show as l, createEffect as u, createMemo as d, createSignal as f, createUniqueId as p, on as m, onCleanup as h, onMount as g } from "solid-js";
5
+ import { Portal as _, addEventListener as v, className as ee, createComponent as y, delegateEvents as b, effect as x, getNextElement as S, getNextMarker as C, insert as w, memo as T, runHydrationEvents as te, setAttribute as E, setProperty as D, template as O, use as ne } from "solid-js/web";
6
+ import { DatePicker as k, parseDate as A } from "@ark-ui/solid/date-picker";
7
+ //#region src/date-range-picker.tsx
8
+ var j = /*#__PURE__*/ O("<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\">"), re = /*#__PURE__*/ O("<span aria-hidden=true> *"), ie = /*#__PURE__*/ O("<label class=dds-field__label><!$><!/><!$><!/>"), ae = /*#__PURE__*/ O("<div class=dds-date-range-box><input type=text class=dds-date-range-input autocomplete=off autocorrect=off><span class=dds-date-range-separator aria-hidden=true>~</span><input type=text class=dds-date-range-input autocomplete=off autocorrect=off>"), oe = /*#__PURE__*/ O("<input type=hidden>"), se = /*#__PURE__*/ O("<span class=dds-field__error role=alert>"), ce = /*#__PURE__*/ O("<div role=group><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/>"), M = {
9
+ start: "",
10
+ end: ""
11
+ }, le = (e, t) => e.start === t.start && e.end === t.end;
12
+ function N(e) {
13
+ if (!s(e.start)) return [];
14
+ let t = A(e.start);
15
+ return s(e.end) && e.start <= e.end ? [t, A(e.end)] : [t];
16
+ }
17
+ function ue() {
18
+ return S(j);
19
+ }
20
+ function de(b) {
21
+ let O = () => b.locale ?? "ko-KR", j = b.id ?? `dds-date-range-${p()}`, de = `${j}-end`, fe = `${j}-label`, P = `${j}-error`, F = () => i(O(), b.messages), [I, L] = e({
22
+ value: () => b.value,
23
+ defaultValue: b.defaultValue ?? M,
24
+ onChange: void 0
25
+ }), R = (e) => ({
26
+ start: o(e.start, O()),
27
+ end: o(e.end, O())
28
+ }), [pe, me] = f({
29
+ ...R(I()),
30
+ locale: O()
31
+ }), z = (e, t) => {
32
+ let n = c(e, t);
33
+ return t !== O() && s(n) ? o(n, O()) : e;
34
+ }, B = d(() => {
35
+ let e = pe();
36
+ return {
37
+ start: z(e.start, e.locale),
38
+ end: z(e.end, e.locale)
39
+ };
40
+ }), V = (e) => me({
41
+ ...e,
42
+ locale: O()
43
+ }), [he, H] = f(N(I())), [ge, U] = f(!1), W, G, K, q = I(), J, [Y, _e] = f();
44
+ g(() => {
45
+ W && _e(W.closest("[role=\"dialog\"], [role=\"alertdialog\"]") ?? W.ownerDocument.body);
46
+ });
47
+ let X = () => b.disabled || b.readOnly, Z = d(() => a(B().start, B().end, b.required ?? !1, b.min, b.max, O())), Q = (e) => e === "required" ? F().required : e === "order" ? F().order : F().invalid, $ = () => Z().valid ? void 0 : Q(Z().reason), ve = () => b.invalid || !Z().start.valid, ye = () => b.invalid || !Z().end.valid || Z().reason === "order", be = () => b.label ?? b["aria-label"] ?? "";
48
+ u(m(() => [I().start, I().end], ([e, t]) => {
49
+ le({
50
+ start: e,
51
+ end: t
52
+ }, q) || (q = {
53
+ start: e,
54
+ end: t
55
+ }, V(R(q)), H(N(q)));
56
+ }, { defer: !0 })), u(() => {
57
+ let e = Z();
58
+ W?.setCustomValidity(e.start.valid ? "" : Q(e.start.reason)), G?.setCustomValidity(e.end.valid ? e.reason === "order" ? F().order : "" : Q(e.end.reason));
59
+ }), u(() => {
60
+ X() && (U(!1), J !== void 0 && cancelAnimationFrame(J));
61
+ }), g(() => {
62
+ let e = W?.ownerDocument;
63
+ if (!e) return;
64
+ let t = (t) => {
65
+ let n = b.form ? e.getElementById(b.form) : W?.form;
66
+ !n || t.target !== n || setTimeout(() => {
67
+ if (t.defaultPrevented) return;
68
+ let e = b.value ?? b.defaultValue ?? M;
69
+ q = e, L(e);
70
+ let n = R(e);
71
+ V(n), H(N(e)), W && (W.value = n.start), G && (G.value = n.end);
72
+ }, 0);
73
+ };
74
+ e.addEventListener("reset", t, !0), h(() => e.removeEventListener("reset", t, !0));
75
+ }), h(() => {
76
+ J !== void 0 && cancelAnimationFrame(J);
77
+ });
78
+ function xe(e, t = 1) {
79
+ J !== void 0 && cancelAnimationFrame(J);
80
+ let n = (t) => {
81
+ J = requestAnimationFrame(() => {
82
+ if (t > 1) return n(t - 1);
83
+ X() || e()?.focus({ preventScroll: !0 });
84
+ });
85
+ };
86
+ n(t);
87
+ }
88
+ function Se(e) {
89
+ X() || (H(N(e)), !le(e, q) && (q = e, L(e), b.onValueChange?.(e)));
90
+ }
91
+ function Ce(e, t) {
92
+ if (X()) return;
93
+ let n = {
94
+ ...B(),
95
+ [e]: t
96
+ }, r = a(n.start, n.end, !1, b.min, b.max, O()), i = r[e];
97
+ i.valid && (n[e] = o(i.value ?? "", O())), V(n), r.valid && Se(r.value);
98
+ }
99
+ function we(e) {
100
+ V(R(e)), Se(e);
101
+ }
102
+ let Te = () => (b.presets ?? []).map((e) => {
103
+ let t = () => a(e.value.start, e.value.end, !1, b.min, b.max, "en-US");
104
+ return {
105
+ label: e.label,
106
+ disabled: !t().valid,
107
+ onSelect: () => {
108
+ let e = t();
109
+ X() || !e.valid || (we(e.value), U(!1), xe(() => G, 2));
110
+ }
111
+ };
112
+ });
113
+ return (() => {
114
+ var e = S(ce), i = e.firstChild, [o, c] = C(i.nextSibling), u = o.nextSibling, [d, f] = C(u.nextSibling), p = d.nextSibling, [m, g] = C(p.nextSibling), le = m.nextSibling, [L, R] = C(le.nextSibling), pe = L.nextSibling, [me, z] = C(pe.nextSibling);
115
+ return w(e, y(l, {
116
+ get when() {
117
+ return b.label;
118
+ },
119
+ get children() {
120
+ var e = S(ie), t = e.firstChild, [n, r] = C(t.nextSibling), i = n.nextSibling, [a, o] = C(i.nextSibling);
121
+ return E(e, "id", fe), E(e, "for", j), w(e, () => b.label, n, r), w(e, y(l, {
122
+ get when() {
123
+ return b.required;
124
+ },
125
+ get children() {
126
+ return S(re);
127
+ }
128
+ }), a, o), e;
129
+ }
130
+ }), o, c), w(e, y(k.Root, {
131
+ get locale() {
132
+ return O();
133
+ },
134
+ get timeZone() {
135
+ return b.timeZone ?? "Asia/Seoul";
136
+ },
137
+ selectionMode: "range",
138
+ get disabled() {
139
+ return b.disabled;
140
+ },
141
+ get readOnly() {
142
+ return b.readOnly;
143
+ },
144
+ get required() {
145
+ return b.required;
146
+ },
147
+ get invalid() {
148
+ return b.invalid || !Z().valid;
149
+ },
150
+ get open() {
151
+ return T(() => !!ge())() && !X();
152
+ },
153
+ onOpenChange: (e) => {
154
+ U(e.open && !X()), e.open || H(N(q));
155
+ },
156
+ get min() {
157
+ return T(() => !!(b.min && s(b.min)))() ? A(b.min) : void 0;
158
+ },
159
+ get max() {
160
+ return T(() => !!(b.max && s(b.max)))() ? A(b.max) : void 0;
161
+ },
162
+ get startOfWeek() {
163
+ return b.startOfWeek ?? 0;
164
+ },
165
+ minView: "day",
166
+ maxView: "day",
167
+ fixedWeeks: !0,
168
+ get translations() {
169
+ return {
170
+ dayCell: (e) => F().selectDate(e.valueText),
171
+ clearTrigger: F().clear
172
+ };
173
+ },
174
+ get value() {
175
+ return he();
176
+ },
177
+ onValueChange: (e) => {
178
+ if (X() || (H(e.value), e.value.length < 2)) return;
179
+ let [t, n] = e.value.map((e) => e.toString()).sort(), r = a(t, n, !1, b.min, b.max, "en-US");
180
+ r.valid && (we(r.value), xe(() => G, 2));
181
+ },
182
+ get positioning() {
183
+ return {
184
+ placement: "bottom-start",
185
+ gutter: 8,
186
+ strategy: Y()?.matches("[role=\"dialog\"], [role=\"alertdialog\"]") ? "fixed" : "absolute",
187
+ hideWhenDetached: !!Y()?.matches("[role=\"dialog\"], [role=\"alertdialog\"]")
188
+ };
189
+ },
190
+ get children() {
191
+ return [y(k.Control, {
192
+ class: "dds-date-picker-control",
193
+ get children() {
194
+ return [(() => {
195
+ var e = S(ae), t = e.firstChild, i = t.nextSibling.nextSibling;
196
+ t.$$keydown = (e) => {
197
+ e.key === "Enter" && !e.isComposing && (e.preventDefault(), e.stopPropagation());
198
+ }, v(t, "input", (e) => {
199
+ e.stopPropagation(), Ce("start", e.currentTarget.value);
200
+ });
201
+ var a = W;
202
+ typeof a == "function" ? ne(a, t) : W = t, E(t, "spellcheck", !1), E(t, "id", j), i.$$keydown = (e) => {
203
+ e.key === "Enter" && !e.isComposing && (e.preventDefault(), e.stopPropagation());
204
+ }, v(i, "input", (e) => {
205
+ e.stopPropagation(), Ce("end", e.currentTarget.value);
206
+ });
207
+ var o = G;
208
+ return typeof o == "function" ? ne(o, i) : G = i, E(i, "spellcheck", !1), E(i, "id", de), x((a) => {
209
+ var o = ve() || ye() ? "" : void 0, s = b.disabled ? "" : void 0, c = r(O()) ? "YYYY/MM/DD" : "YYYY-MM-DD", l = b.form, u = F().startLabel, d = ve() ? "true" : void 0, f = b.required ? "true" : void 0, p = n(b["aria-describedby"], $() && P), m = b.required, h = b.readOnly, g = b.disabled, _ = r(O()) ? "YYYY/MM/DD" : "YYYY-MM-DD", v = b.form, ee = F().endLabel, y = ye() ? "true" : void 0, x = b.required ? "true" : void 0, S = n(b["aria-describedby"], $() && P), C = b.required, w = b.readOnly, T = b.disabled;
210
+ return o !== a.e && E(e, "data-invalid", a.e = o), s !== a.t && E(e, "data-disabled", a.t = s), c !== a.a && E(t, "placeholder", a.a = c), l !== a.o && E(t, "form", a.o = l), u !== a.i && E(t, "aria-label", a.i = u), d !== a.n && E(t, "aria-invalid", a.n = d), f !== a.s && E(t, "aria-required", a.s = f), p !== a.h && E(t, "aria-describedby", a.h = p), m !== a.r && D(t, "required", a.r = m), h !== a.d && D(t, "readOnly", a.d = h), g !== a.l && D(t, "disabled", a.l = g), _ !== a.u && E(i, "placeholder", a.u = _), v !== a.c && E(i, "form", a.c = v), ee !== a.w && E(i, "aria-label", a.w = ee), y !== a.m && E(i, "aria-invalid", a.m = y), x !== a.f && E(i, "aria-required", a.f = x), S !== a.y && E(i, "aria-describedby", a.y = S), C !== a.g && D(i, "required", a.g = C), w !== a.p && D(i, "readOnly", a.p = w), T !== a.b && D(i, "disabled", a.b = T), a;
211
+ }, {
212
+ e: void 0,
213
+ t: void 0,
214
+ a: void 0,
215
+ o: void 0,
216
+ i: void 0,
217
+ n: void 0,
218
+ s: void 0,
219
+ h: void 0,
220
+ r: void 0,
221
+ d: void 0,
222
+ l: void 0,
223
+ u: void 0,
224
+ c: void 0,
225
+ w: void 0,
226
+ m: void 0,
227
+ f: void 0,
228
+ y: void 0,
229
+ g: void 0,
230
+ p: void 0,
231
+ b: void 0
232
+ }), x(() => D(t, "value", B().start)), x(() => D(i, "value", B().end)), te(), e;
233
+ })(), y(k.Trigger, {
234
+ ref(e) {
235
+ var t = K;
236
+ typeof t == "function" ? t(e) : K = e;
237
+ },
238
+ class: "dds-btn dds-btn--secondary",
239
+ get "aria-label"() {
240
+ return `${be()} ${F().openCalendar}`.trim();
241
+ },
242
+ get children() {
243
+ return y(ue, {});
244
+ }
245
+ })];
246
+ }
247
+ }), y(l, {
248
+ get when() {
249
+ return Y();
250
+ },
251
+ children: (e) => y(_, {
252
+ get mount() {
253
+ return e();
254
+ },
255
+ get children() {
256
+ return y(k.Positioner, {
257
+ class: "dds-date-picker-positioner",
258
+ get children() {
259
+ return y(k.Content, {
260
+ ref: (e) => {
261
+ let t = (e) => {
262
+ e.key === "Escape" && xe(() => K, 2);
263
+ };
264
+ e.addEventListener("keydown", t, !0), h(() => e.removeEventListener("keydown", t, !0));
265
+ },
266
+ class: "dds-date-picker-content dds-date-range-content",
267
+ get "aria-label"() {
268
+ return `${be()} ${F().chooseRange}`.trim();
269
+ },
270
+ get children() {
271
+ return y(t, {
272
+ get timeZone() {
273
+ return b.timeZone;
274
+ },
275
+ get min() {
276
+ return b.min;
277
+ },
278
+ get max() {
279
+ return b.max;
280
+ },
281
+ get locale() {
282
+ return O();
283
+ },
284
+ get messages() {
285
+ return F();
286
+ },
287
+ get disabled() {
288
+ return b.disabled;
289
+ },
290
+ get readOnly() {
291
+ return b.readOnly;
292
+ },
293
+ showToday: !1,
294
+ get showClear() {
295
+ return b.clearable;
296
+ },
297
+ get presets() {
298
+ return Te();
299
+ },
300
+ get presetsLabel() {
301
+ return F().presets;
302
+ },
303
+ onClear: () => we(M)
304
+ });
305
+ }
306
+ });
307
+ }
308
+ });
309
+ }
310
+ })
311
+ })];
312
+ }
313
+ }), d, f), w(e, y(l, {
314
+ get when() {
315
+ return b.startName;
316
+ },
317
+ get children() {
318
+ var e = S(oe);
319
+ return x((t) => {
320
+ var n = b.startName, r = b.form, i = b.disabled;
321
+ return n !== t.e && E(e, "name", t.e = n), r !== t.t && E(e, "form", t.t = r), i !== t.a && D(e, "disabled", t.a = i), t;
322
+ }, {
323
+ e: void 0,
324
+ t: void 0,
325
+ a: void 0
326
+ }), x(() => D(e, "value", I().start)), e;
327
+ }
328
+ }), m, g), w(e, y(l, {
329
+ get when() {
330
+ return b.endName;
331
+ },
332
+ get children() {
333
+ var e = S(oe);
334
+ return x((t) => {
335
+ var n = b.endName, r = b.form, i = b.disabled;
336
+ return n !== t.e && E(e, "name", t.e = n), r !== t.t && E(e, "form", t.t = r), i !== t.a && D(e, "disabled", t.a = i), t;
337
+ }, {
338
+ e: void 0,
339
+ t: void 0,
340
+ a: void 0
341
+ }), x(() => D(e, "value", I().end)), e;
342
+ }
343
+ }), L, R), w(e, y(l, {
344
+ get when() {
345
+ return $();
346
+ },
347
+ get children() {
348
+ var e = S(se);
349
+ return E(e, "id", P), w(e, $), e;
350
+ }
351
+ }), me, z), x((t) => {
352
+ var n = `dds-field dds-date-picker dds-date-range-picker dds-date-picker--${b.labelPlacement ?? "outside"}${$() ? " dds-field--error" : ""}`, r = b["aria-labelledby"] ?? (b.label ? fe : void 0), i = b.label || b["aria-labelledby"] ? void 0 : b["aria-label"], a = B().start !== "" || B().end !== "" ? "true" : void 0, o = ve() || ye() ? "" : void 0, s = b.disabled ? "" : void 0;
353
+ return n !== t.e && ee(e, t.e = n), r !== t.t && E(e, "aria-labelledby", t.t = r), i !== t.a && E(e, "aria-label", t.a = i), a !== t.o && E(e, "data-filled", t.o = a), o !== t.i && E(e, "data-invalid", t.i = o), s !== t.n && E(e, "data-disabled", t.n = s), t;
354
+ }, {
355
+ e: void 0,
356
+ t: void 0,
357
+ a: void 0,
358
+ o: void 0,
359
+ i: void 0,
360
+ n: void 0
361
+ }), e;
362
+ })();
363
+ }
364
+ b(["keydown"]);
365
+ //#endregion
366
+ export { de as DateRangePicker };
367
+
368
+ //# sourceMappingURL=date-range-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-range-picker.js","names":["DatePicker","ArkDatePicker","parseDate","DateValue","Portal","createEffect","createMemo","createSignal","createUniqueId","on","onCleanup","onMount","Show","CalendarView","createControllableSignal","canonicalInput","displayDate","isCalendarDate","isKorean","rangeMessages","validateRange","DateRange","DateRangeMessages","describedBy","DateRangeValidity","DateRangePreset","label","value","DateRangePickerProps","labelPlacement","id","defaultValue","onValueChange","next","locale","timeZone","min","max","startOfWeek","messages","clearable","presets","required","disabled","readOnly","invalid","startName","endName","form","EMPTY","start","end","same","a","b","selectionOf","range","CalendarIcon","_$getNextElement","_tmpl$","DateRangePicker","props","endId","labelId","errorId","text","setValue","onChange","undefined","display","draftState","setDraftState","relocalize","draft","from","canonical","drafts","state","setDrafts","selection","setSelection","open","setOpen","startInput","HTMLInputElement","endInput","trigger","HTMLButtonElement","emitted","focusFrame","portalMount","setPortalMount","HTMLElement","closest","ownerDocument","body","blocked","validity","messageFor","reason","order","error","valid","startInvalid","endInvalid","fieldName","const","defer","setCustomValidity","cancelAnimationFrame","doc","reset","event","Event","getElementById","target","setTimeout","defaultPrevented","shown","addEventListener","removeEventListener","focusSoon","frames","run","left","requestAnimationFrame","focus","preventScroll","commit","changeDraft","side","typed","loose","part","choose","map","preset","onSelect","checked","_el$2","_tmpl$7","_el$14","firstChild","_el$15","_co$3","_$getNextMarker","nextSibling","_el$16","_el$17","_co$4","_el$18","_el$19","_co$5","_el$20","_el$21","_co$6","_el$22","_el$23","_co$7","_$insert","_$createComponent","when","children","_el$3","_tmpl$3","_el$5","_el$6","_co$","_el$7","_el$8","_co$2","_$setAttribute","_tmpl$2","Root","selectionMode","_$memo","onOpenChange","details","minView","maxView","fixedWeeks","translations","dayCell","selectDate","valueText","clearTrigger","clear","length","day","toString","sort","positioning","placement","gutter","strategy","matches","hideWhenDetached","Control","_el$9","_tmpl$4","_el$0","_el$1","_el$10","$$keydown","key","isComposing","preventDefault","stopPropagation","_$addEventListener","currentTarget","_ref$","_$use","_ref$2","_$effect","_p$","_v$","_v$2","_v$3","_v$4","_v$5","startLabel","_v$6","_v$7","_v$8","_v$9","_v$0","_v$1","_v$10","_v$11","_v$12","endLabel","_v$13","_v$14","_v$15","_v$16","_v$17","_v$18","e","t","o","i","n","s","h","r","_$setProperty","d","l","u","c","w","m","f","y","g","p","_$runHydrationEvents","Trigger","ref","r$","_ref$3","aria-label","openCalendar","trim","mount","Positioner","Content","node","restoreTrigger","KeyboardEvent","chooseRange","showToday","showClear","presetsLabel","onClear","_el$11","_tmpl$5","_v$19","_v$20","_v$21","_el$12","_v$22","_v$23","_v$24","_el$13","_tmpl$6","_v$25","_v$26","_v$27","_v$28","_v$29","_v$30","_$className","_$delegateEvents"],"sources":["../src/date-range-picker.tsx"],"sourcesContent":["import {\n DatePicker as ArkDatePicker,\n parseDate,\n type DateValue,\n} from \"@ark-ui/solid/date-picker\";\nimport { Portal } from \"solid-js/web\";\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n on,\n onCleanup,\n onMount,\n Show,\n} from \"solid-js\";\nimport { CalendarView } from \"./calendar-view\";\nimport { createControllableSignal } from \"./controllable\";\nimport {\n canonicalInput,\n displayDate,\n isCalendarDate,\n isKorean,\n rangeMessages,\n validateRange,\n type DateRange,\n type DateRangeMessages,\n} from \"./date-only\";\nimport { describedBy } from \"./utils\";\nexport type {\n DateRange,\n DateRangeMessages,\n DateRangeValidity,\n} from \"./date-only\";\n\n/** A consumer-supplied shortcut shown in the calendar footer. DDS ships no built-in list. */\nexport interface DateRangePreset {\n label: string;\n value: DateRange;\n}\n\nexport interface DateRangePickerProps {\n label?: string;\n /** Two inputs share one field label; \"inside\" is not offered. */\n labelPlacement?: \"outside\" | \"hidden\";\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n /** Id of the start input; the end input receives `${id}-end`. */\n id?: string;\n value?: DateRange;\n defaultValue?: DateRange;\n /** Called on user changes only, with YYYY-MM-DD or \"\" on each side; never with start after end. */\n onValueChange?: (next: DateRange) => void;\n locale?: string;\n timeZone?: string;\n min?: string;\n max?: string;\n startOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n messages?: DateRangeMessages;\n clearable?: boolean;\n presets?: DateRangePreset[];\n /** Both dates are required. */\n required?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n invalid?: boolean;\n /** Form field name submitting the start date (YYYY-MM-DD or \"\"). */\n startName?: string;\n /** Form field name submitting the end date (YYYY-MM-DD or \"\"). */\n endName?: string;\n form?: string;\n}\n\nconst EMPTY: DateRange = { start: \"\", end: \"\" };\nconst same = (a: DateRange, b: DateRange) =>\n a.start === b.start && a.end === b.end;\n\nfunction selectionOf(range: DateRange): DateValue[] {\n if (!isCalendarDate(range.start)) return [];\n const start = parseDate(range.start);\n return isCalendarDate(range.end) && range.start <= range.end\n ? [start, parseDate(range.end)]\n : [start];\n}\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}\n\nexport function DateRangePicker(props: DateRangePickerProps) {\n const locale = () => props.locale ?? \"ko-KR\",\n id = props.id ?? `dds-date-range-${createUniqueId()}`,\n endId = `${id}-end`,\n labelId = `${id}-label`,\n errorId = `${id}-error`;\n const text = () => rangeMessages(locale(), props.messages);\n const [value, setValue] = createControllableSignal<DateRange>({\n value: () => props.value,\n defaultValue: props.defaultValue ?? EMPTY,\n onChange: undefined,\n });\n const display = (range: DateRange) => ({\n start: displayDate(range.start, locale()),\n end: displayDate(range.end, locale()),\n });\n // Drafts keep their formatting locale so a locale change re-displays complete dates only.\n const [draftState, setDraftState] = createSignal({\n ...display(value()),\n locale: locale(),\n });\n const relocalize = (draft: string, from: string) => {\n const canonical = canonicalInput(draft, from);\n return from !== locale() && isCalendarDate(canonical)\n ? displayDate(canonical, locale())\n : draft;\n };\n const drafts = createMemo(() => {\n const state = draftState();\n return {\n start: relocalize(state.start, state.locale),\n end: relocalize(state.end, state.locale),\n };\n });\n const setDrafts = (next: DateRange) =>\n setDraftState({ ...next, locale: locale() });\n const [selection, setSelection] = createSignal(selectionOf(value()));\n const [open, setOpen] = createSignal(false);\n let startInput: HTMLInputElement | undefined,\n endInput: HTMLInputElement | undefined,\n trigger: HTMLButtonElement | undefined,\n emitted = value(),\n focusFrame: number | undefined;\n const [portalMount, setPortalMount] = createSignal<HTMLElement>();\n onMount(() => {\n if (startInput)\n setPortalMount(\n startInput.closest<HTMLElement>('[role=\"dialog\"], [role=\"alertdialog\"]') ??\n startInput.ownerDocument.body,\n );\n });\n const blocked = () => props.disabled || props.readOnly;\n const validity = createMemo(() =>\n validateRange(\n drafts().start,\n drafts().end,\n props.required ?? false,\n props.min,\n props.max,\n locale(),\n ),\n );\n const messageFor = (reason: string) =>\n reason === \"required\"\n ? text().required\n : reason === \"order\"\n ? text().order\n : text().invalid;\n const error = () =>\n validity().valid ? undefined : messageFor(validity().reason);\n const startInvalid = () => props.invalid || !validity().start.valid;\n const endInvalid = () =>\n props.invalid || !validity().end.valid || validity().reason === \"order\";\n const fieldName = () => props.label ?? props[\"aria-label\"] ?? \"\";\n\n createEffect(\n on(\n () => [value().start, value().end] as const,\n ([start, end]) => {\n if (same({ start, end }, emitted)) return;\n emitted = { start, end };\n setDrafts(display(emitted));\n setSelection(selectionOf(emitted));\n },\n { defer: true },\n ),\n );\n createEffect(() => {\n const state = validity();\n startInput?.setCustomValidity(\n state.start.valid ? \"\" : messageFor(state.start.reason),\n );\n endInput?.setCustomValidity(\n !state.end.valid\n ? messageFor(state.end.reason)\n : state.reason === \"order\"\n ? text().order\n : \"\",\n );\n });\n createEffect(() => {\n if (blocked()) {\n setOpen(false);\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n }\n });\n // Resolve the owning form when a reset happens: the field may mount before it joins its form.\n onMount(() => {\n const doc = startInput?.ownerDocument;\n if (!doc) return;\n const reset = (event: Event) => {\n const form = props.form ? doc.getElementById(props.form) : startInput?.form;\n if (!form || event.target !== form) return;\n // A task, not a microtask: a user-triggered reset runs its listeners before rewriting the controls.\n setTimeout(() => {\n if (event.defaultPrevented) return;\n const next = props.value ?? props.defaultValue ?? EMPTY;\n emitted = next;\n setValue(next);\n const shown = display(next);\n setDrafts(shown);\n setSelection(selectionOf(next));\n // Native reset rewrote the visible inputs; the drafts may not have changed.\n if (startInput) startInput.value = shown.start;\n if (endInput) endInput.value = shown.end;\n }, 0);\n };\n doc.addEventListener(\"reset\", reset, true);\n onCleanup(() => doc.removeEventListener(\"reset\", reset, true));\n });\n onCleanup(() => {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n });\n\n function focusSoon(target: () => HTMLElement | undefined, frames = 1) {\n if (focusFrame !== undefined) cancelAnimationFrame(focusFrame);\n const run = (left: number) => {\n focusFrame = requestAnimationFrame(() => {\n if (left > 1) return run(left - 1);\n if (!blocked()) target()?.focus({ preventScroll: true });\n });\n };\n run(frames);\n }\n function commit(next: DateRange) {\n if (blocked()) return;\n setSelection(selectionOf(next));\n if (same(next, emitted)) return;\n emitted = next;\n setValue(next);\n props.onValueChange?.(next);\n }\n /** Committing ignores `required` like DatePicker: an emptied side is still reported. */\n function changeDraft(side: \"start\" | \"end\", typed: string) {\n if (blocked()) return;\n const next = { ...drafts(), [side]: typed };\n const loose = validateRange(\n next.start,\n next.end,\n false,\n props.min,\n props.max,\n locale(),\n );\n const part = loose[side];\n if (part.valid) next[side] = displayDate(part.value ?? \"\", locale());\n setDrafts(next);\n if (loose.valid) commit(loose.value!);\n }\n function choose(range: DateRange) {\n setDrafts(display(range));\n commit(range);\n }\n const presets = () =>\n (props.presets ?? []).map((preset) => {\n const state = () =>\n validateRange(\n preset.value.start,\n preset.value.end,\n false,\n props.min,\n props.max,\n \"en-US\",\n );\n return {\n label: preset.label,\n disabled: !state().valid,\n onSelect: () => {\n const checked = state();\n if (blocked() || !checked.valid) return;\n choose(checked.value!);\n setOpen(false);\n focusSoon(() => endInput, 2);\n },\n };\n });\n\n\n return (\n <div\n class={`dds-field dds-date-picker dds-date-range-picker dds-date-picker--${props.labelPlacement ?? \"outside\"}${error() ? \" dds-field--error\" : \"\"}`}\n role=\"group\"\n aria-labelledby={\n props[\"aria-labelledby\"] ?? (props.label ? labelId : undefined)\n }\n aria-label={\n props.label || props[\"aria-labelledby\"] ? undefined : props[\"aria-label\"]\n }\n data-filled={drafts().start !== \"\" || drafts().end !== \"\" ? \"true\" : undefined}\n data-invalid={startInvalid() || endInvalid() ? \"\" : undefined}\n data-disabled={props.disabled ? \"\" : undefined}\n >\n <Show when={props.label}>\n <label id={labelId} 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 </Show>\n <ArkDatePicker.Root\n locale={locale()}\n timeZone={props.timeZone ?? \"Asia/Seoul\"}\n selectionMode=\"range\"\n disabled={props.disabled}\n readOnly={props.readOnly}\n required={props.required}\n invalid={props.invalid || !validity().valid}\n open={open() && !blocked()}\n onOpenChange={(details) => {\n setOpen(details.open && !blocked());\n // A half-chosen period is not a value: closing restores the committed one.\n if (!details.open) setSelection(selectionOf(emitted));\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 onValueChange={(details) => {\n if (blocked()) return;\n setSelection(details.value);\n if (details.value.length < 2) return;\n const [start, end] = details.value.map((day) => day.toString()).sort();\n const checked = validateRange(\n start!,\n end!,\n false,\n props.min,\n props.max,\n \"en-US\",\n );\n if (!checked.valid) return;\n choose(checked.value!);\n focusSoon(() => endInput, 2);\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 class=\"dds-date-picker-control\">\n <div\n class=\"dds-date-range-box\"\n data-invalid={startInvalid() || endInvalid() ? \"\" : undefined}\n data-disabled={props.disabled ? \"\" : undefined}\n >\n <input\n type=\"text\"\n class=\"dds-date-range-input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n id={id}\n ref={startInput}\n form={props.form}\n aria-label={text().startLabel}\n aria-invalid={startInvalid() ? \"true\" : undefined}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={describedBy(\n props[\"aria-describedby\"],\n error() && errorId,\n )}\n value={drafts().start}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(\"start\", event.currentTarget.value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n />\n <span class=\"dds-date-range-separator\" aria-hidden=\"true\">\n ~\n </span>\n <input\n type=\"text\"\n class=\"dds-date-range-input\"\n autocomplete=\"off\"\n autocorrect=\"off\"\n spellcheck={false}\n placeholder={isKorean(locale()) ? \"YYYY/MM/DD\" : \"YYYY-MM-DD\"}\n id={endId}\n ref={endInput}\n form={props.form}\n aria-label={text().endLabel}\n aria-invalid={endInvalid() ? \"true\" : undefined}\n aria-required={props.required ? \"true\" : undefined}\n aria-describedby={describedBy(\n props[\"aria-describedby\"],\n error() && errorId,\n )}\n value={drafts().end}\n required={props.required}\n readOnly={props.readOnly}\n disabled={props.disabled}\n on:input={(event) => {\n event.stopPropagation();\n changeDraft(\"end\", event.currentTarget.value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" && !event.isComposing) {\n event.preventDefault();\n event.stopPropagation();\n }\n }}\n />\n </div>\n <ArkDatePicker.Trigger\n ref={trigger}\n class=\"dds-btn dds-btn--secondary\"\n aria-label={`${fieldName()} ${text().openCalendar}`.trim()}\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\") focusSoon(() => trigger, 2);\n };\n node.addEventListener(\"keydown\", restoreTrigger, true);\n onCleanup(() =>\n node.removeEventListener(\"keydown\", restoreTrigger, true),\n );\n }}\n class=\"dds-date-picker-content dds-date-range-content\"\n aria-label={`${fieldName()} ${text().chooseRange}`.trim()}\n >\n <CalendarView\n timeZone={props.timeZone}\n min={props.min}\n max={props.max}\n locale={locale()}\n messages={text()}\n disabled={props.disabled}\n readOnly={props.readOnly}\n showToday={false}\n showClear={props.clearable}\n presets={presets()}\n presetsLabel={text().presets}\n onClear={() => choose(EMPTY)}\n />\n </ArkDatePicker.Content>\n </ArkDatePicker.Positioner>\n </Portal>\n )}\n </Show>\n </ArkDatePicker.Root>\n <Show when={props.startName}>\n <input\n type=\"hidden\"\n name={props.startName}\n form={props.form}\n value={value().start}\n disabled={props.disabled}\n />\n </Show>\n <Show when={props.endName}>\n <input\n type=\"hidden\"\n name={props.endName}\n form={props.form}\n value={value().end}\n disabled={props.disabled}\n />\n </Show>\n <Show when={error()}>\n <span id={errorId} class=\"dds-field__error\" role=\"alert\">\n {error()}\n </span>\n </Show>\n </div>\n );\n}\n"],"mappings":"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"}