asterui 0.12.63 → 0.12.64
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.
- package/dist/components/Collapse.js +58 -56
- package/dist/components/Collapse.js.map +1 -1
- package/dist/components/DatePicker.d.ts +19 -1
- package/dist/components/DatePicker.js +266 -87
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/Menu.d.ts +1 -1
- package/dist/components/Menu.js +99 -93
- package/dist/components/Menu.js.map +1 -1
- package/dist/components/Modal.js +26 -17
- package/dist/components/Modal.js.map +1 -1
- package/dist/components/Notification.js +53 -45
- package/dist/components/Notification.js.map +1 -1
- package/dist/components/Tabs.js +69 -57
- package/dist/components/Tabs.js.map +1 -1
- package/dist/components/Tooltip.js +38 -35
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Transfer.js +130 -121
- package/dist/components/Transfer.js.map +1 -1
- package/dist/components/TreeSelect.js +49 -48
- package/dist/components/TreeSelect.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { Input as
|
|
4
|
-
import { useConfig as
|
|
5
|
-
const
|
|
1
|
+
import { jsxs as w, jsx as s } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as _, useState as D, useRef as ee, useEffect as L } from "react";
|
|
3
|
+
import { Input as te } from "./Input.js";
|
|
4
|
+
import { useConfig as ne } from "../providers/ConfigProvider.js";
|
|
5
|
+
const x = "btn", Y = "btn-ghost", S = "btn-sm", I = "btn-square", se = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], re = [
|
|
6
6
|
"January",
|
|
7
7
|
"February",
|
|
8
8
|
"March",
|
|
@@ -16,92 +16,108 @@ const M = "btn", y = "btn-ghost", S = "btn-sm", F = "btn-square", H = ["Su", "Mo
|
|
|
16
16
|
"November",
|
|
17
17
|
"December"
|
|
18
18
|
];
|
|
19
|
-
function
|
|
20
|
-
if (!
|
|
21
|
-
const
|
|
22
|
-
return n.replace("YYYY", String(
|
|
19
|
+
function A(r, n = "MM/DD/YYYY") {
|
|
20
|
+
if (!r) return "";
|
|
21
|
+
const m = r.getFullYear(), g = String(r.getMonth() + 1).padStart(2, "0"), R = String(r.getDate()).padStart(2, "0");
|
|
22
|
+
return n.replace("YYYY", String(m)).replace("MM", g).replace("DD", R);
|
|
23
23
|
}
|
|
24
|
-
function
|
|
25
|
-
return new Date(
|
|
24
|
+
function ae(r, n) {
|
|
25
|
+
return new Date(r, n + 1, 0).getDate();
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
return new Date(
|
|
27
|
+
function oe(r, n) {
|
|
28
|
+
return new Date(r, n, 1).getDay();
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
function q(r) {
|
|
31
|
+
return new Date(r.getFullYear(), r.getMonth(), r.getDate());
|
|
32
|
+
}
|
|
33
|
+
function X(r, n) {
|
|
34
|
+
return r.getFullYear() === n.getFullYear() && r.getMonth() === n.getMonth() && r.getDate() === n.getDate();
|
|
35
|
+
}
|
|
36
|
+
function Z(r, n) {
|
|
37
|
+
return q(r).getTime() < q(n).getTime();
|
|
38
|
+
}
|
|
39
|
+
function ue(r, n) {
|
|
40
|
+
return q(r).getTime() > q(n).getTime();
|
|
41
|
+
}
|
|
42
|
+
function fe(r, n = "MM/DD/YYYY") {
|
|
43
|
+
const [m, g] = r;
|
|
44
|
+
return m && g ? `${A(m, n)} - ${A(g, n)}` : m ? `${A(m, n)} - ` : "";
|
|
45
|
+
}
|
|
46
|
+
const le = _(function({
|
|
31
47
|
value: n,
|
|
32
|
-
defaultValue:
|
|
33
|
-
onChange:
|
|
34
|
-
format:
|
|
35
|
-
placeholder:
|
|
36
|
-
disabled:
|
|
37
|
-
size:
|
|
38
|
-
"data-testid":
|
|
39
|
-
className:
|
|
40
|
-
...
|
|
41
|
-
},
|
|
42
|
-
const { componentSize:
|
|
43
|
-
n ||
|
|
44
|
-
), [
|
|
45
|
-
|
|
46
|
-
), [
|
|
47
|
-
|
|
48
|
-
),
|
|
49
|
-
|
|
50
|
-
n !== void 0 &&
|
|
51
|
-
}, [n]),
|
|
52
|
-
function e(
|
|
53
|
-
|
|
48
|
+
defaultValue: m,
|
|
49
|
+
onChange: g,
|
|
50
|
+
format: R,
|
|
51
|
+
placeholder: $ = "Select date",
|
|
52
|
+
disabled: k = !1,
|
|
53
|
+
size: V,
|
|
54
|
+
"data-testid": y,
|
|
55
|
+
className: J = "",
|
|
56
|
+
...G
|
|
57
|
+
}, H) {
|
|
58
|
+
const { componentSize: W } = ne(), K = V ?? W ?? "md", P = (e) => y ? `${y}-${e}` : void 0, [u, C] = D(
|
|
59
|
+
n || m || null
|
|
60
|
+
), [v, h] = D(!1), [o, f] = D(
|
|
61
|
+
u ? u.getMonth() : (/* @__PURE__ */ new Date()).getMonth()
|
|
62
|
+
), [c, N] = D(
|
|
63
|
+
u ? u.getFullYear() : (/* @__PURE__ */ new Date()).getFullYear()
|
|
64
|
+
), l = ee(null);
|
|
65
|
+
L(() => {
|
|
66
|
+
n !== void 0 && C(n);
|
|
67
|
+
}, [n]), L(() => {
|
|
68
|
+
function e(i) {
|
|
69
|
+
l.current && !l.current.contains(i.target) && h(!1);
|
|
54
70
|
}
|
|
55
|
-
if (
|
|
71
|
+
if (v)
|
|
56
72
|
return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
|
|
57
|
-
}, [
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
},
|
|
66
|
-
for (let e = 0; e <
|
|
67
|
-
|
|
68
|
-
for (let e = 1; e <=
|
|
69
|
-
|
|
70
|
-
const
|
|
73
|
+
}, [v]);
|
|
74
|
+
const M = (e) => {
|
|
75
|
+
const i = new Date(c, o, e);
|
|
76
|
+
C(i), g?.(i), h(!1);
|
|
77
|
+
}, p = () => {
|
|
78
|
+
o === 0 ? (f(11), N(c - 1)) : f(o - 1);
|
|
79
|
+
}, F = () => {
|
|
80
|
+
o === 11 ? (f(0), N(c + 1)) : f(o + 1);
|
|
81
|
+
}, T = ae(c, o), Q = oe(c, o), O = [];
|
|
82
|
+
for (let e = 0; e < Q; e++)
|
|
83
|
+
O.push(null);
|
|
84
|
+
for (let e = 1; e <= T; e++)
|
|
85
|
+
O.push(e);
|
|
86
|
+
const B = (e) => !e || !u ? !1 : u.getDate() === e && u.getMonth() === o && u.getFullYear() === c, U = (e) => {
|
|
71
87
|
if (!e) return !1;
|
|
72
|
-
const
|
|
73
|
-
return
|
|
88
|
+
const i = /* @__PURE__ */ new Date();
|
|
89
|
+
return i.getDate() === e && i.getMonth() === o && i.getFullYear() === c;
|
|
74
90
|
};
|
|
75
|
-
return /* @__PURE__ */
|
|
76
|
-
/* @__PURE__ */
|
|
77
|
-
|
|
91
|
+
return /* @__PURE__ */ w("div", { ref: H || l, className: `relative ${J}`, "data-state": v ? "open" : "closed", "data-testid": y, ...G, children: [
|
|
92
|
+
/* @__PURE__ */ s(
|
|
93
|
+
te,
|
|
78
94
|
{
|
|
79
|
-
value:
|
|
80
|
-
placeholder:
|
|
81
|
-
disabled:
|
|
82
|
-
size:
|
|
95
|
+
value: A(u, R),
|
|
96
|
+
placeholder: $,
|
|
97
|
+
disabled: k,
|
|
98
|
+
size: K,
|
|
83
99
|
readOnly: !0,
|
|
84
|
-
onClick: () => !
|
|
100
|
+
onClick: () => !k && h(!v),
|
|
85
101
|
className: "cursor-pointer",
|
|
86
|
-
"data-testid":
|
|
102
|
+
"data-testid": P("input")
|
|
87
103
|
}
|
|
88
104
|
),
|
|
89
|
-
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
-
/* @__PURE__ */
|
|
105
|
+
v && /* @__PURE__ */ w("div", { className: "absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80", "data-testid": P("calendar"), children: [
|
|
106
|
+
/* @__PURE__ */ w("div", { className: "flex items-center justify-between mb-4", children: [
|
|
107
|
+
/* @__PURE__ */ s(
|
|
92
108
|
"button",
|
|
93
109
|
{
|
|
94
110
|
type: "button",
|
|
95
|
-
onClick:
|
|
96
|
-
className: `${
|
|
97
|
-
children: /* @__PURE__ */
|
|
111
|
+
onClick: p,
|
|
112
|
+
className: `${x} ${Y} ${S} ${I}`,
|
|
113
|
+
children: /* @__PURE__ */ s(
|
|
98
114
|
"svg",
|
|
99
115
|
{
|
|
100
116
|
xmlns: "http://www.w3.org/2000/svg",
|
|
101
117
|
className: "h-5 w-5",
|
|
102
118
|
viewBox: "0 0 20 20",
|
|
103
119
|
fill: "currentColor",
|
|
104
|
-
children: /* @__PURE__ */
|
|
120
|
+
children: /* @__PURE__ */ s(
|
|
105
121
|
"path",
|
|
106
122
|
{
|
|
107
123
|
fillRule: "evenodd",
|
|
@@ -113,25 +129,25 @@ const te = J(function({
|
|
|
113
129
|
)
|
|
114
130
|
}
|
|
115
131
|
),
|
|
116
|
-
/* @__PURE__ */
|
|
117
|
-
|
|
132
|
+
/* @__PURE__ */ w("div", { className: "text-base font-semibold", children: [
|
|
133
|
+
re[o],
|
|
118
134
|
" ",
|
|
119
|
-
|
|
135
|
+
c
|
|
120
136
|
] }),
|
|
121
|
-
/* @__PURE__ */
|
|
137
|
+
/* @__PURE__ */ s(
|
|
122
138
|
"button",
|
|
123
139
|
{
|
|
124
140
|
type: "button",
|
|
125
|
-
onClick:
|
|
126
|
-
className: `${
|
|
127
|
-
children: /* @__PURE__ */
|
|
141
|
+
onClick: F,
|
|
142
|
+
className: `${x} ${Y} ${S} ${I}`,
|
|
143
|
+
children: /* @__PURE__ */ s(
|
|
128
144
|
"svg",
|
|
129
145
|
{
|
|
130
146
|
xmlns: "http://www.w3.org/2000/svg",
|
|
131
147
|
className: "h-5 w-5",
|
|
132
148
|
viewBox: "0 0 20 20",
|
|
133
149
|
fill: "currentColor",
|
|
134
|
-
children: /* @__PURE__ */
|
|
150
|
+
children: /* @__PURE__ */ s(
|
|
135
151
|
"path",
|
|
136
152
|
{
|
|
137
153
|
fillRule: "evenodd",
|
|
@@ -144,7 +160,7 @@ const te = J(function({
|
|
|
144
160
|
}
|
|
145
161
|
)
|
|
146
162
|
] }),
|
|
147
|
-
/* @__PURE__ */
|
|
163
|
+
/* @__PURE__ */ s("div", { className: "grid grid-cols-7 gap-1 mb-2", children: se.map((e) => /* @__PURE__ */ s(
|
|
148
164
|
"div",
|
|
149
165
|
{
|
|
150
166
|
className: "text-center text-xs font-semibold text-base-content/60 py-2",
|
|
@@ -152,39 +168,202 @@ const te = J(function({
|
|
|
152
168
|
},
|
|
153
169
|
e
|
|
154
170
|
)) }),
|
|
155
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ s("div", { className: "grid grid-cols-7 gap-1", children: O.map((e, i) => /* @__PURE__ */ s(
|
|
156
172
|
"button",
|
|
157
173
|
{
|
|
158
174
|
type: "button",
|
|
159
175
|
disabled: !e,
|
|
160
|
-
onClick: () => e &&
|
|
176
|
+
onClick: () => e && M(e),
|
|
161
177
|
className: `
|
|
162
178
|
aspect-square flex items-center justify-center text-sm rounded-lg
|
|
163
179
|
${e ? "hover:bg-base-200" : "invisible"}
|
|
164
|
-
${
|
|
165
|
-
${
|
|
180
|
+
${B(e) ? "bg-primary text-primary-content hover:bg-primary/90" : ""}
|
|
181
|
+
${U(e) && !B(e) ? "border border-primary" : ""}
|
|
166
182
|
${e ? "cursor-pointer" : ""}
|
|
167
183
|
`,
|
|
168
184
|
children: e
|
|
169
185
|
},
|
|
170
|
-
|
|
186
|
+
i
|
|
171
187
|
)) }),
|
|
172
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ s("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ s(
|
|
173
189
|
"button",
|
|
174
190
|
{
|
|
175
191
|
type: "button",
|
|
176
192
|
onClick: () => {
|
|
177
193
|
const e = /* @__PURE__ */ new Date();
|
|
178
|
-
|
|
194
|
+
C(e), f(e.getMonth()), N(e.getFullYear()), g?.(e), h(!1);
|
|
195
|
+
},
|
|
196
|
+
className: `${x} ${Y} ${S}`,
|
|
197
|
+
children: "Today"
|
|
198
|
+
}
|
|
199
|
+
) })
|
|
200
|
+
] })
|
|
201
|
+
] });
|
|
202
|
+
}), ie = _(function({
|
|
203
|
+
value: n,
|
|
204
|
+
defaultValue: m,
|
|
205
|
+
onChange: g,
|
|
206
|
+
format: R,
|
|
207
|
+
placeholder: $,
|
|
208
|
+
disabled: k = !1,
|
|
209
|
+
size: V,
|
|
210
|
+
"data-testid": y,
|
|
211
|
+
className: J = "",
|
|
212
|
+
...G
|
|
213
|
+
}, H) {
|
|
214
|
+
const { componentSize: W } = ne(), K = V ?? W ?? "md", [P, u] = Array.isArray($) ? $ : [$ ?? "Start date", "End date"], C = Array.isArray($) ? `${P} - ${u}` : $ ?? "Start date - End date", v = (t) => y ? `${y}-${t}` : void 0, [h, o] = D(
|
|
215
|
+
n || m || [null, null]
|
|
216
|
+
), [f, c] = D(!1), N = h[0] ?? h[1] ?? /* @__PURE__ */ new Date(), [l, M] = D(N.getMonth()), [p, F] = D(N.getFullYear()), T = ee(null);
|
|
217
|
+
L(() => {
|
|
218
|
+
n !== void 0 && o(n);
|
|
219
|
+
}, [n]), L(() => {
|
|
220
|
+
function t(d) {
|
|
221
|
+
T.current && !T.current.contains(d.target) && c(!1);
|
|
222
|
+
}
|
|
223
|
+
if (f)
|
|
224
|
+
return document.addEventListener("mousedown", t), () => document.removeEventListener("mousedown", t);
|
|
225
|
+
}, [f]);
|
|
226
|
+
const Q = (t) => {
|
|
227
|
+
const d = new Date(p, l, t);
|
|
228
|
+
let [a, b] = h;
|
|
229
|
+
!a || a && b ? (a = d, b = null) : a && !b && (Z(d, a) ? (b = a, a = d) : b = d);
|
|
230
|
+
const z = [a, b];
|
|
231
|
+
o(z), g?.(z), a && b && c(!1);
|
|
232
|
+
}, O = () => {
|
|
233
|
+
l === 0 ? (M(11), F(p - 1)) : M(l - 1);
|
|
234
|
+
}, B = () => {
|
|
235
|
+
l === 11 ? (M(0), F(p + 1)) : M(l + 1);
|
|
236
|
+
}, U = ae(p, l), e = oe(p, l), i = [];
|
|
237
|
+
for (let t = 0; t < e; t++)
|
|
238
|
+
i.push(null);
|
|
239
|
+
for (let t = 1; t <= U; t++)
|
|
240
|
+
i.push(t);
|
|
241
|
+
const ce = (t) => {
|
|
242
|
+
if (!t) return !1;
|
|
243
|
+
const d = /* @__PURE__ */ new Date();
|
|
244
|
+
return d.getDate() === t && d.getMonth() === l && d.getFullYear() === p;
|
|
245
|
+
}, [E, j] = h;
|
|
246
|
+
return /* @__PURE__ */ w("div", { ref: H || T, className: `relative ${J}`, "data-state": f ? "open" : "closed", "data-testid": y, ...G, children: [
|
|
247
|
+
/* @__PURE__ */ s(
|
|
248
|
+
te,
|
|
249
|
+
{
|
|
250
|
+
value: fe(h, R),
|
|
251
|
+
placeholder: C,
|
|
252
|
+
disabled: k,
|
|
253
|
+
size: K,
|
|
254
|
+
readOnly: !0,
|
|
255
|
+
onClick: () => !k && c(!f),
|
|
256
|
+
className: "cursor-pointer",
|
|
257
|
+
"data-testid": v("input")
|
|
258
|
+
}
|
|
259
|
+
),
|
|
260
|
+
f && /* @__PURE__ */ w("div", { className: "absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80", "data-testid": v("calendar"), children: [
|
|
261
|
+
/* @__PURE__ */ w("div", { className: "flex items-center justify-between mb-4", children: [
|
|
262
|
+
/* @__PURE__ */ s(
|
|
263
|
+
"button",
|
|
264
|
+
{
|
|
265
|
+
type: "button",
|
|
266
|
+
onClick: O,
|
|
267
|
+
className: `${x} ${Y} ${S} ${I}`,
|
|
268
|
+
children: /* @__PURE__ */ s(
|
|
269
|
+
"svg",
|
|
270
|
+
{
|
|
271
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
272
|
+
className: "h-5 w-5",
|
|
273
|
+
viewBox: "0 0 20 20",
|
|
274
|
+
fill: "currentColor",
|
|
275
|
+
children: /* @__PURE__ */ s(
|
|
276
|
+
"path",
|
|
277
|
+
{
|
|
278
|
+
fillRule: "evenodd",
|
|
279
|
+
d: "M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",
|
|
280
|
+
clipRule: "evenodd"
|
|
281
|
+
}
|
|
282
|
+
)
|
|
283
|
+
}
|
|
284
|
+
)
|
|
285
|
+
}
|
|
286
|
+
),
|
|
287
|
+
/* @__PURE__ */ w("div", { className: "text-base font-semibold", children: [
|
|
288
|
+
re[l],
|
|
289
|
+
" ",
|
|
290
|
+
p
|
|
291
|
+
] }),
|
|
292
|
+
/* @__PURE__ */ s(
|
|
293
|
+
"button",
|
|
294
|
+
{
|
|
295
|
+
type: "button",
|
|
296
|
+
onClick: B,
|
|
297
|
+
className: `${x} ${Y} ${S} ${I}`,
|
|
298
|
+
children: /* @__PURE__ */ s(
|
|
299
|
+
"svg",
|
|
300
|
+
{
|
|
301
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
302
|
+
className: "h-5 w-5",
|
|
303
|
+
viewBox: "0 0 20 20",
|
|
304
|
+
fill: "currentColor",
|
|
305
|
+
children: /* @__PURE__ */ s(
|
|
306
|
+
"path",
|
|
307
|
+
{
|
|
308
|
+
fillRule: "evenodd",
|
|
309
|
+
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
|
310
|
+
clipRule: "evenodd"
|
|
311
|
+
}
|
|
312
|
+
)
|
|
313
|
+
}
|
|
314
|
+
)
|
|
315
|
+
}
|
|
316
|
+
)
|
|
317
|
+
] }),
|
|
318
|
+
/* @__PURE__ */ s("div", { className: "grid grid-cols-7 gap-1 mb-2", children: se.map((t) => /* @__PURE__ */ s(
|
|
319
|
+
"div",
|
|
320
|
+
{
|
|
321
|
+
className: "text-center text-xs font-semibold text-base-content/60 py-2",
|
|
322
|
+
children: t
|
|
323
|
+
},
|
|
324
|
+
t
|
|
325
|
+
)) }),
|
|
326
|
+
/* @__PURE__ */ s("div", { className: "grid grid-cols-7 gap-1", children: i.map((t, d) => {
|
|
327
|
+
const a = t ? new Date(p, l, t) : null, b = !!a && !!E && X(a, E), z = !!a && !!j && X(a, j), de = !!a && !!E && !!j && ue(a, E) && Z(a, j);
|
|
328
|
+
return /* @__PURE__ */ s(
|
|
329
|
+
"button",
|
|
330
|
+
{
|
|
331
|
+
type: "button",
|
|
332
|
+
disabled: !t,
|
|
333
|
+
onClick: () => t && Q(t),
|
|
334
|
+
className: `
|
|
335
|
+
aspect-square flex items-center justify-center text-sm rounded-lg
|
|
336
|
+
${t ? "hover:bg-base-200" : "invisible"}
|
|
337
|
+
${de ? "bg-primary/10" : ""}
|
|
338
|
+
${b || z ? "bg-primary text-primary-content hover:bg-primary/90" : ""}
|
|
339
|
+
${ce(t) && !b && !z ? "border border-primary" : ""}
|
|
340
|
+
${t ? "cursor-pointer" : ""}
|
|
341
|
+
`,
|
|
342
|
+
children: t
|
|
343
|
+
},
|
|
344
|
+
d
|
|
345
|
+
);
|
|
346
|
+
}) }),
|
|
347
|
+
/* @__PURE__ */ s("div", { className: "mt-4 flex justify-end", children: /* @__PURE__ */ s(
|
|
348
|
+
"button",
|
|
349
|
+
{
|
|
350
|
+
type: "button",
|
|
351
|
+
onClick: () => {
|
|
352
|
+
const t = /* @__PURE__ */ new Date();
|
|
353
|
+
o([t, t]), M(t.getMonth()), F(t.getFullYear()), g?.([t, t]), c(!1);
|
|
179
354
|
},
|
|
180
|
-
className: `${
|
|
355
|
+
className: `${x} ${Y} ${S}`,
|
|
181
356
|
children: "Today"
|
|
182
357
|
}
|
|
183
358
|
) })
|
|
184
359
|
] })
|
|
185
360
|
] });
|
|
186
361
|
});
|
|
362
|
+
le.displayName = "DatePicker";
|
|
363
|
+
ie.displayName = "DatePicker.Range";
|
|
364
|
+
const me = le;
|
|
365
|
+
me.Range = ie;
|
|
187
366
|
export {
|
|
188
|
-
|
|
367
|
+
me as DatePicker
|
|
189
368
|
};
|
|
190
369
|
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.js","sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, forwardRef } from 'react'\nimport { Input } from './Input'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'btn'\nconst dBtnGhost = 'btn-ghost'\nconst dBtnSm = 'btn-sm'\nconst dBtnSquare = 'btn-square'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: Date | null\n defaultValue?: Date | null\n onChange?: (date: Date | null) => void\n format?: string\n placeholder?: string\n disabled?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nfunction formatDate(date: Date | null, format: string = 'MM/DD/YYYY'): string {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay()\n}\n\nexport const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n format,\n placeholder = 'Select date',\n disabled = false,\n size,\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const [selectedDate, setSelectedDate] = useState<Date | null>(\n value || defaultValue || null\n )\n const [isOpen, setIsOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState(\n selectedDate ? selectedDate.getMonth() : new Date().getMonth()\n )\n const [viewYear, setViewYear] = useState(\n selectedDate ? selectedDate.getFullYear() : new Date().getFullYear()\n )\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (value !== undefined) {\n setSelectedDate(value)\n }\n }, [value])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n setSelectedDate(newDate)\n onChange?.(newDate)\n setIsOpen(false)\n }\n\n const handlePrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n }\n\n const handleNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDayOfMonth = getFirstDayOfMonth(viewYear, viewMonth)\n\n const calendarDays: (number | null)[] = []\n for (let i = 0; i < firstDayOfMonth; i++) {\n calendarDays.push(null)\n }\n for (let i = 1; i <= daysInMonth; i++) {\n calendarDays.push(i)\n }\n\n const isSelectedDay = (day: number | null): boolean => {\n if (!day || !selectedDate) return false\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === viewMonth &&\n selectedDate.getFullYear() === viewYear\n )\n }\n\n const isToday = (day: number | null): boolean => {\n if (!day) return false\n const today = new Date()\n return (\n today.getDate() === day &&\n today.getMonth() === viewMonth &&\n today.getFullYear() === viewYear\n )\n }\n\n return (\n <div ref={ref || containerRef} className={`relative ${className}`} data-state={isOpen ? 'open' : 'closed'} data-testid={testId} {...rest}>\n <Input\n value={formatDate(selectedDate, format)}\n placeholder={placeholder}\n disabled={disabled}\n size={effectiveSize}\n readOnly\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"cursor-pointer\"\n data-testid={getTestId('input')}\n />\n\n {isOpen && (\n <div className=\"absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80\" data-testid={getTestId('calendar')}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n <div className=\"text-base font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Days of week */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {DAYS.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-semibold text-base-content/60 py-2\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => (\n <button\n key={index}\n type=\"button\"\n disabled={!day}\n onClick={() => day && handleDateSelect(day)}\n className={`\n aspect-square flex items-center justify-center text-sm rounded-lg\n ${!day ? 'invisible' : 'hover:bg-base-200'}\n ${isSelectedDay(day) ? 'bg-primary text-primary-content hover:bg-primary/90' : ''}\n ${isToday(day) && !isSelectedDay(day) ? 'border border-primary' : ''}\n ${day ? 'cursor-pointer' : ''}\n `}\n >\n {day}\n </button>\n ))}\n </div>\n\n {/* Today button */}\n <div className=\"mt-4 flex justify-end\">\n <button\n type=\"button\"\n onClick={() => {\n const today = new Date()\n setSelectedDate(today)\n setViewMonth(today.getMonth())\n setViewYear(today.getFullYear())\n onChange?.(today)\n setIsOpen(false)\n }}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n >\n Today\n </button>\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["dBtn","dBtnGhost","dBtnSm","dBtnSquare","DAYS","MONTHS","formatDate","date","format","year","month","day","getDaysInMonth","getFirstDayOfMonth","DatePicker","forwardRef","value","defaultValue","onChange","placeholder","disabled","size","testId","className","rest","ref","componentSize","useConfig","effectiveSize","getTestId","suffix","selectedDate","setSelectedDate","useState","isOpen","setIsOpen","viewMonth","setViewMonth","viewYear","setViewYear","containerRef","useRef","useEffect","handleClickOutside","event","handleDateSelect","newDate","handlePrevMonth","handleNextMonth","daysInMonth","firstDayOfMonth","calendarDays","i","isSelectedDay","isToday","today","jsx","Input","jsxs","index"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../src/components/DatePicker.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, forwardRef } from 'react'\nimport { Input } from './Input'\nimport { useConfig } from '../providers/ConfigProvider'\n\n// DaisyUI classes\nconst dBtn = 'btn'\nconst dBtnGhost = 'btn-ghost'\nconst dBtnSm = 'btn-sm'\nconst dBtnSquare = 'btn-square'\n\nexport interface DatePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: Date | null\n defaultValue?: Date | null\n onChange?: (date: Date | null) => void\n format?: string\n placeholder?: string\n disabled?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nexport type DateRangeValue = [Date | null, Date | null]\n\nexport interface DateRangePickerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n value?: DateRangeValue\n defaultValue?: DateRangeValue\n onChange?: (range: DateRangeValue) => void\n format?: string\n placeholder?: [string, string] | string\n disabled?: boolean\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n]\n\nfunction formatDate(date: Date | null, format: string = 'MM/DD/YYYY'): string {\n if (!date) return ''\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, '0')\n const day = String(date.getDate()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n}\n\nfunction getDaysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate()\n}\n\nfunction getFirstDayOfMonth(year: number, month: number): number {\n return new Date(year, month, 1).getDay()\n}\n\nfunction stripTime(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\n}\n\nfunction isSameDay(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear()\n && a.getMonth() === b.getMonth()\n && a.getDate() === b.getDate()\n}\n\nfunction isBeforeDay(a: Date, b: Date): boolean {\n return stripTime(a).getTime() < stripTime(b).getTime()\n}\n\nfunction isAfterDay(a: Date, b: Date): boolean {\n return stripTime(a).getTime() > stripTime(b).getTime()\n}\n\nfunction formatRange(range: DateRangeValue, format: string = 'MM/DD/YYYY'): string {\n const [start, end] = range\n if (start && end) return `${formatDate(start, format)} - ${formatDate(end, format)}`\n if (start) return `${formatDate(start, format)} - `\n return ''\n}\n\nconst DatePickerComponent = forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(\n {\n value,\n defaultValue,\n onChange,\n format,\n placeholder = 'Select date',\n disabled = false,\n size,\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const [selectedDate, setSelectedDate] = useState<Date | null>(\n value || defaultValue || null\n )\n const [isOpen, setIsOpen] = useState(false)\n const [viewMonth, setViewMonth] = useState(\n selectedDate ? selectedDate.getMonth() : new Date().getMonth()\n )\n const [viewYear, setViewYear] = useState(\n selectedDate ? selectedDate.getFullYear() : new Date().getFullYear()\n )\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (value !== undefined) {\n setSelectedDate(value)\n }\n }, [value])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n setSelectedDate(newDate)\n onChange?.(newDate)\n setIsOpen(false)\n }\n\n const handlePrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n }\n\n const handleNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDayOfMonth = getFirstDayOfMonth(viewYear, viewMonth)\n\n const calendarDays: (number | null)[] = []\n for (let i = 0; i < firstDayOfMonth; i++) {\n calendarDays.push(null)\n }\n for (let i = 1; i <= daysInMonth; i++) {\n calendarDays.push(i)\n }\n\n const isSelectedDay = (day: number | null): boolean => {\n if (!day || !selectedDate) return false\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === viewMonth &&\n selectedDate.getFullYear() === viewYear\n )\n }\n\n const isToday = (day: number | null): boolean => {\n if (!day) return false\n const today = new Date()\n return (\n today.getDate() === day &&\n today.getMonth() === viewMonth &&\n today.getFullYear() === viewYear\n )\n }\n\n return (\n <div ref={ref || containerRef} className={`relative ${className}`} data-state={isOpen ? 'open' : 'closed'} data-testid={testId} {...rest}>\n <Input\n value={formatDate(selectedDate, format)}\n placeholder={placeholder}\n disabled={disabled}\n size={effectiveSize}\n readOnly\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"cursor-pointer\"\n data-testid={getTestId('input')}\n />\n\n {isOpen && (\n <div className=\"absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80\" data-testid={getTestId('calendar')}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n <div className=\"text-base font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Days of week */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {DAYS.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-semibold text-base-content/60 py-2\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => (\n <button\n key={index}\n type=\"button\"\n disabled={!day}\n onClick={() => day && handleDateSelect(day)}\n className={`\n aspect-square flex items-center justify-center text-sm rounded-lg\n ${!day ? 'invisible' : 'hover:bg-base-200'}\n ${isSelectedDay(day) ? 'bg-primary text-primary-content hover:bg-primary/90' : ''}\n ${isToday(day) && !isSelectedDay(day) ? 'border border-primary' : ''}\n ${day ? 'cursor-pointer' : ''}\n `}\n >\n {day}\n </button>\n ))}\n </div>\n\n {/* Today button */}\n <div className=\"mt-4 flex justify-end\">\n <button\n type=\"button\"\n onClick={() => {\n const today = new Date()\n setSelectedDate(today)\n setViewMonth(today.getMonth())\n setViewYear(today.getFullYear())\n onChange?.(today)\n setIsOpen(false)\n }}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n >\n Today\n </button>\n </div>\n </div>\n )}\n </div>\n )\n})\n\nconst DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(function DateRangePicker(\n {\n value,\n defaultValue,\n onChange,\n format,\n placeholder,\n disabled = false,\n size,\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const { componentSize } = useConfig()\n const effectiveSize = size ?? componentSize ?? 'md'\n\n const [startPlaceholder, endPlaceholder] = Array.isArray(placeholder)\n ? placeholder\n : [placeholder ?? 'Start date', 'End date']\n const resolvedPlaceholder = Array.isArray(placeholder)\n ? `${startPlaceholder} - ${endPlaceholder}`\n : placeholder ?? 'Start date - End date'\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const [selectedRange, setSelectedRange] = useState<DateRangeValue>(\n value || defaultValue || [null, null]\n )\n const [isOpen, setIsOpen] = useState(false)\n const initialDate = selectedRange[0] ?? selectedRange[1] ?? new Date()\n const [viewMonth, setViewMonth] = useState(initialDate.getMonth())\n const [viewYear, setViewYear] = useState(initialDate.getFullYear())\n\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (value !== undefined) {\n setSelectedRange(value)\n }\n }, [value])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n const handleDateSelect = (day: number) => {\n const newDate = new Date(viewYear, viewMonth, day)\n let [start, end] = selectedRange\n\n if (!start || (start && end)) {\n start = newDate\n end = null\n } else if (start && !end) {\n if (isBeforeDay(newDate, start)) {\n end = start\n start = newDate\n } else {\n end = newDate\n }\n }\n\n const nextRange: DateRangeValue = [start, end]\n setSelectedRange(nextRange)\n onChange?.(nextRange)\n if (start && end) {\n setIsOpen(false)\n }\n }\n\n const handlePrevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11)\n setViewYear(viewYear - 1)\n } else {\n setViewMonth(viewMonth - 1)\n }\n }\n\n const handleNextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0)\n setViewYear(viewYear + 1)\n } else {\n setViewMonth(viewMonth + 1)\n }\n }\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth)\n const firstDayOfMonth = getFirstDayOfMonth(viewYear, viewMonth)\n\n const calendarDays: (number | null)[] = []\n for (let i = 0; i < firstDayOfMonth; i++) {\n calendarDays.push(null)\n }\n for (let i = 1; i <= daysInMonth; i++) {\n calendarDays.push(i)\n }\n\n const isToday = (day: number | null): boolean => {\n if (!day) return false\n const today = new Date()\n return (\n today.getDate() === day &&\n today.getMonth() === viewMonth &&\n today.getFullYear() === viewYear\n )\n }\n\n const [rangeStart, rangeEnd] = selectedRange\n\n return (\n <div ref={ref || containerRef} className={`relative ${className}`} data-state={isOpen ? 'open' : 'closed'} data-testid={testId} {...rest}>\n <Input\n value={formatRange(selectedRange, format)}\n placeholder={resolvedPlaceholder}\n disabled={disabled}\n size={effectiveSize}\n readOnly\n onClick={() => !disabled && setIsOpen(!isOpen)}\n className=\"cursor-pointer\"\n data-testid={getTestId('input')}\n />\n\n {isOpen && (\n <div className=\"absolute top-full left-0 mt-2 bg-base-100 border border-base-300 rounded-lg shadow-lg p-4 z-50 w-80\" data-testid={getTestId('calendar')}>\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePrevMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n <div className=\"text-base font-semibold\">\n {MONTHS[viewMonth]} {viewYear}\n </div>\n\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm} ${dBtnSquare}`}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n\n {/* Days of week */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {DAYS.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-semibold text-base-content/60 py-2\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const dayDate = day ? new Date(viewYear, viewMonth, day) : null\n const isStart = !!dayDate && !!rangeStart && isSameDay(dayDate, rangeStart)\n const isEnd = !!dayDate && !!rangeEnd && isSameDay(dayDate, rangeEnd)\n const isInRange = !!dayDate && !!rangeStart && !!rangeEnd\n && isAfterDay(dayDate, rangeStart)\n && isBeforeDay(dayDate, rangeEnd)\n\n return (\n <button\n key={index}\n type=\"button\"\n disabled={!day}\n onClick={() => day && handleDateSelect(day)}\n className={`\n aspect-square flex items-center justify-center text-sm rounded-lg\n ${!day ? 'invisible' : 'hover:bg-base-200'}\n ${isInRange ? 'bg-primary/10' : ''}\n ${isStart || isEnd ? 'bg-primary text-primary-content hover:bg-primary/90' : ''}\n ${isToday(day) && !isStart && !isEnd ? 'border border-primary' : ''}\n ${day ? 'cursor-pointer' : ''}\n `}\n >\n {day}\n </button>\n )\n })}\n </div>\n\n {/* Today button */}\n <div className=\"mt-4 flex justify-end\">\n <button\n type=\"button\"\n onClick={() => {\n const today = new Date()\n setSelectedRange([today, today])\n setViewMonth(today.getMonth())\n setViewYear(today.getFullYear())\n onChange?.([today, today])\n setIsOpen(false)\n }}\n className={`${dBtn} ${dBtnGhost} ${dBtnSm}`}\n >\n Today\n </button>\n </div>\n </div>\n )}\n </div>\n )\n})\n\nDatePickerComponent.displayName = 'DatePicker'\nDateRangePicker.displayName = 'DatePicker.Range'\n\ntype DatePickerType = typeof DatePickerComponent & {\n Range: typeof DateRangePicker\n}\n\nexport const DatePicker = DatePickerComponent as DatePickerType\nDatePicker.Range = DateRangePicker\n"],"names":["dBtn","dBtnGhost","dBtnSm","dBtnSquare","DAYS","MONTHS","formatDate","date","format","year","month","day","getDaysInMonth","getFirstDayOfMonth","stripTime","isSameDay","a","b","isBeforeDay","isAfterDay","formatRange","range","start","end","DatePickerComponent","forwardRef","value","defaultValue","onChange","placeholder","disabled","size","testId","className","rest","ref","componentSize","useConfig","effectiveSize","getTestId","suffix","selectedDate","setSelectedDate","useState","isOpen","setIsOpen","viewMonth","setViewMonth","viewYear","setViewYear","containerRef","useRef","useEffect","handleClickOutside","event","handleDateSelect","newDate","handlePrevMonth","handleNextMonth","daysInMonth","firstDayOfMonth","calendarDays","i","isSelectedDay","isToday","today","jsx","Input","jsxs","index","DateRangePicker","startPlaceholder","endPlaceholder","resolvedPlaceholder","selectedRange","setSelectedRange","initialDate","nextRange","rangeStart","rangeEnd","dayDate","isStart","isEnd","isInRange","DatePicker"],"mappings":"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"}
|
|
@@ -61,7 +61,7 @@ export interface MenuTitleProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
|
61
61
|
export interface MenuDividerProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
62
62
|
}
|
|
63
63
|
declare function MenuRoot({ children, items, mode, size, selectedKeys: controlledSelectedKeys, defaultSelectedKeys, openKeys: controlledOpenKeys, defaultOpenKeys, onSelect, onOpenChange, className, 'data-testid': testId, ...rest }: MenuProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
-
declare function MenuItem({ children, icon, disabled, onClick, active, className, _key, ...rest }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
declare function MenuItem({ children, icon, disabled, onClick, onKeyDown, active, className, _key, tabIndex, ...rest }: MenuItemProps): import("react/jsx-runtime").JSX.Element;
|
|
65
65
|
declare function MenuSubMenu({ children, label, title, icon, disabled, className, _key, ...rest }: MenuSubMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
66
66
|
declare function MenuTitle({ children, className, ...rest }: MenuTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
67
67
|
declare function MenuDivider({ className, ...rest }: MenuDividerProps): import("react/jsx-runtime").JSX.Element;
|