@medusajs/ui 2.0.0 → 2.2.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.
- package/dist/cjs/components/button/button.js +8 -8
- package/dist/cjs/components/button/button.js.map +1 -1
- package/dist/cjs/components/calendar/calendar.js +1 -1
- package/dist/cjs/components/calendar/calendar.js.map +1 -1
- package/dist/cjs/components/checkbox/checkbox.js +1 -1
- package/dist/cjs/components/checkbox/checkbox.js.map +1 -1
- package/dist/cjs/components/command-bar/command-bar.js +5 -5
- package/dist/cjs/components/command-bar/command-bar.js.map +1 -1
- package/dist/cjs/components/currency-input/currency-input.js +10 -6
- package/dist/cjs/components/currency-input/currency-input.js.map +1 -1
- package/dist/cjs/components/date-picker/date-picker.js +165 -70
- package/dist/cjs/components/date-picker/date-picker.js.map +1 -1
- package/dist/cjs/components/dropdown-menu/dropdown-menu.js +7 -7
- package/dist/cjs/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/cjs/components/icon-button/icon-button.js +8 -8
- package/dist/cjs/components/icon-button/icon-button.js.map +1 -1
- package/dist/cjs/components/input/input.js +1 -1
- package/dist/cjs/components/input/input.js.map +1 -1
- package/dist/cjs/components/popover/index.d.ts +1 -0
- package/dist/cjs/components/popover/index.js +5 -0
- package/dist/cjs/components/popover/index.js.map +1 -0
- package/dist/cjs/components/popover/popover.d.ts +17 -0
- package/dist/cjs/components/popover/popover.js +41 -0
- package/dist/cjs/components/popover/popover.js.map +1 -0
- package/dist/cjs/components/radio-group/radio-group.d.ts +5 -0
- package/dist/cjs/components/radio-group/radio-group.js +25 -4
- package/dist/cjs/components/radio-group/radio-group.js.map +1 -1
- package/dist/cjs/components/select/select.js +3 -7
- package/dist/cjs/components/select/select.js.map +1 -1
- package/dist/cjs/components/table/table.js +3 -4
- package/dist/cjs/components/table/table.js.map +1 -1
- package/dist/cjs/components/text/text.d.ts +1 -0
- package/dist/cjs/components/text/text.js +64 -7
- package/dist/cjs/components/text/text.js.map +1 -1
- package/dist/cjs/components/textarea/textarea.js +1 -1
- package/dist/cjs/components/textarea/textarea.js.map +1 -1
- package/dist/cjs/components/time-input/time-input.js +1 -1
- package/dist/cjs/components/time-input/time-input.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/button/button.js +8 -8
- package/dist/esm/components/button/button.js.map +1 -1
- package/dist/esm/components/calendar/calendar.js +1 -1
- package/dist/esm/components/calendar/calendar.js.map +1 -1
- package/dist/esm/components/checkbox/checkbox.js +1 -1
- package/dist/esm/components/checkbox/checkbox.js.map +1 -1
- package/dist/esm/components/command-bar/command-bar.js +5 -5
- package/dist/esm/components/command-bar/command-bar.js.map +1 -1
- package/dist/esm/components/currency-input/currency-input.js +10 -6
- package/dist/esm/components/currency-input/currency-input.js.map +1 -1
- package/dist/esm/components/date-picker/date-picker.js +165 -70
- package/dist/esm/components/date-picker/date-picker.js.map +1 -1
- package/dist/esm/components/dropdown-menu/dropdown-menu.js +7 -7
- package/dist/esm/components/dropdown-menu/dropdown-menu.js.map +1 -1
- package/dist/esm/components/icon-button/icon-button.js +8 -8
- package/dist/esm/components/icon-button/icon-button.js.map +1 -1
- package/dist/esm/components/input/input.js +1 -1
- package/dist/esm/components/input/input.js.map +1 -1
- package/dist/esm/components/popover/index.d.ts +1 -0
- package/dist/esm/components/popover/index.js +2 -0
- package/dist/esm/components/popover/index.js.map +1 -0
- package/dist/esm/components/popover/popover.d.ts +17 -0
- package/dist/esm/components/popover/popover.js +37 -0
- package/dist/esm/components/popover/popover.js.map +1 -0
- package/dist/esm/components/radio-group/radio-group.d.ts +5 -0
- package/dist/esm/components/radio-group/radio-group.js +25 -4
- package/dist/esm/components/radio-group/radio-group.js.map +1 -1
- package/dist/esm/components/select/select.js +4 -8
- package/dist/esm/components/select/select.js.map +1 -1
- package/dist/esm/components/table/table.js +3 -4
- package/dist/esm/components/table/table.js.map +1 -1
- package/dist/esm/components/text/text.d.ts +1 -0
- package/dist/esm/components/text/text.js +64 -7
- package/dist/esm/components/text/text.js.map +1 -1
- package/dist/esm/components/textarea/textarea.js +1 -1
- package/dist/esm/components/textarea/textarea.js.map +1 -1
- package/dist/esm/components/time-input/time-input.js +1 -1
- package/dist/esm/components/time-input/time-input.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -10,11 +10,11 @@ import { TimeInput } from "../time-input";
|
|
|
10
10
|
import { clx } from "../../utils/clx";
|
|
11
11
|
import { isBrowserLocaleClockType24h } from "../../utils/is-browser-locale-hour-cycle-24h";
|
|
12
12
|
import { cva } from "class-variance-authority";
|
|
13
|
-
const displayVariants = cva(clx("text-ui-fg-base bg-ui-bg-field
|
|
13
|
+
const displayVariants = cva(clx("text-ui-fg-base bg-ui-bg-field transition-fg shadow-buttons-neutral flex w-full items-center gap-x-2 rounded-md outline-none", "hover:bg-ui-bg-field-hover", "focus:shadow-borders-interactive-with-active data-[state=open]:shadow-borders-interactive-with-active", "disabled:bg-ui-bg-disabled disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral", "aria-[invalid=true]:!shadow-borders-error"), {
|
|
14
14
|
variants: {
|
|
15
15
|
size: {
|
|
16
|
-
base: "
|
|
17
|
-
small: "
|
|
16
|
+
base: "txt-compact-medium h-10 px-3 py-2.5",
|
|
17
|
+
small: "txt-compact-small h-8 px-2 py-1.5",
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
defaultVariants: {
|
|
@@ -107,12 +107,11 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
|
|
|
107
107
|
const [open, setOpen] = React.useState(false);
|
|
108
108
|
const [date, setDate] = React.useState((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
|
|
109
109
|
const [month, setMonth] = React.useState(date);
|
|
110
|
-
const time = React.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}, [date]);
|
|
110
|
+
const [time, setTime] = React.useState(value
|
|
111
|
+
? new Time(value.getHours(), value.getMinutes())
|
|
112
|
+
: defaultValue
|
|
113
|
+
? new Time(defaultValue.getHours(), defaultValue.getMinutes())
|
|
114
|
+
: new Time(0, 0));
|
|
116
115
|
const initialDate = React.useMemo(() => {
|
|
117
116
|
return date;
|
|
118
117
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -135,23 +134,63 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
|
|
|
135
134
|
}
|
|
136
135
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
137
136
|
}, [open]);
|
|
138
|
-
const
|
|
137
|
+
const onCancel = () => {
|
|
139
138
|
setDate(initialDate);
|
|
139
|
+
setTime(initialDate
|
|
140
|
+
? new Time(initialDate.getHours(), initialDate.getMinutes())
|
|
141
|
+
: new Time(0, 0));
|
|
140
142
|
setOpen(false);
|
|
141
143
|
};
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
const onOpenChange = (open) => {
|
|
145
|
+
if (!open) {
|
|
146
|
+
onCancel();
|
|
147
|
+
}
|
|
148
|
+
setOpen(open);
|
|
145
149
|
};
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
150
|
+
const onDateChange = (date) => {
|
|
151
|
+
const newDate = date;
|
|
152
|
+
if (showTimePicker) {
|
|
153
|
+
/**
|
|
154
|
+
* If the time is cleared, and the date is
|
|
155
|
+
* changed then we want to reset the time.
|
|
156
|
+
*/
|
|
157
|
+
if (newDate && !time) {
|
|
158
|
+
setTime(new Time(0, 0));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* If the time is set, and the date is changed
|
|
162
|
+
* then we want to update the date with the
|
|
163
|
+
* time.
|
|
164
|
+
*/
|
|
165
|
+
if (newDate && time) {
|
|
166
|
+
newDate.setHours(time.hour);
|
|
167
|
+
newDate.setMinutes(time.minute);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
setDate(newDate);
|
|
171
|
+
};
|
|
172
|
+
const onTimeChange = (time) => {
|
|
173
|
+
setTime(time);
|
|
174
|
+
if (!date) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const newDate = new Date(date.getTime());
|
|
178
|
+
if (!time) {
|
|
179
|
+
/**
|
|
180
|
+
* When a segment of the time input is cleared,
|
|
181
|
+
* it will return `null` as the value is no longer
|
|
182
|
+
* a valid time. In this case, we want to set the
|
|
183
|
+
* time to for the date, effectivly resetting the
|
|
184
|
+
* input field.
|
|
185
|
+
*/
|
|
186
|
+
newDate.setHours(0);
|
|
187
|
+
newDate.setMinutes(0);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
149
190
|
newDate.setHours(time.hour);
|
|
150
191
|
newDate.setMinutes(time.minute);
|
|
151
|
-
newDate.setSeconds(time.second);
|
|
152
|
-
setDate(newDate);
|
|
153
|
-
onChange === null || onChange === void 0 ? void 0 : onChange(newDate);
|
|
154
192
|
}
|
|
193
|
+
setDate(newDate);
|
|
155
194
|
};
|
|
156
195
|
const formattedDate = React.useMemo(() => {
|
|
157
196
|
if (!date) {
|
|
@@ -159,38 +198,41 @@ const SingleDatePicker = ({ defaultValue, value, size = "base", onChange, preset
|
|
|
159
198
|
}
|
|
160
199
|
return formatDate(date, showTimePicker);
|
|
161
200
|
}, [date, showTimePicker]);
|
|
162
|
-
|
|
201
|
+
const onApply = () => {
|
|
202
|
+
setOpen(false);
|
|
203
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(date);
|
|
204
|
+
};
|
|
205
|
+
return (React.createElement(Primitives.Root, { open: open, onOpenChange: onOpenChange },
|
|
163
206
|
React.createElement(Display, { placeholder: "Pick a date", disabled: disabled, className: className, "aria-required": props.required || props["aria-required"], "aria-invalid": props["aria-invalid"], "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], size: size }, formattedDate),
|
|
164
207
|
React.createElement(Flyout, null,
|
|
165
208
|
React.createElement("div", { className: "flex" },
|
|
166
209
|
React.createElement("div", { className: "flex items-start" },
|
|
167
210
|
presets && presets.length > 0 && (React.createElement("div", { className: "relative h-full w-[160px] border-r" },
|
|
168
211
|
React.createElement("div", { className: "absolute inset-0 overflow-y-scroll p-3" },
|
|
169
|
-
React.createElement(PresetContainer, { currentValue: date, presets: presets, onSelect:
|
|
212
|
+
React.createElement(PresetContainer, { currentValue: date, presets: presets, onSelect: onDateChange })))),
|
|
170
213
|
React.createElement("div", null,
|
|
171
|
-
React.createElement(CalendarPrimitive, { mode: "single", month: month, onMonthChange: setMonth, selected: date, onSelect:
|
|
214
|
+
React.createElement(CalendarPrimitive, { mode: "single", month: month, onMonthChange: setMonth, selected: date, onSelect: onDateChange, disabled: disabled, ...props }),
|
|
172
215
|
showTimePicker && (React.createElement("div", { className: "border-ui-border-base border-t p-3" },
|
|
173
|
-
React.createElement(TimeInput, { "aria-label": "Time", onChange:
|
|
216
|
+
React.createElement(TimeInput, { "aria-label": "Time", onChange: onTimeChange, isDisabled: !date, value: time, isRequired: props.required }))),
|
|
174
217
|
React.createElement("div", { className: "border-ui-border-base flex items-center gap-x-2 border-t p-3" },
|
|
175
|
-
React.createElement(Button, { variant: "secondary", className: "w-full", type: "button", onClick:
|
|
176
|
-
React.createElement(Button, { variant: "primary", className: "w-full", type: "button", onClick:
|
|
218
|
+
React.createElement(Button, { variant: "secondary", className: "w-full", type: "button", onClick: onCancel }, "Cancel"),
|
|
219
|
+
React.createElement(Button, { variant: "primary", className: "w-full", type: "button", onClick: onApply }, "Apply"))))))));
|
|
177
220
|
};
|
|
178
221
|
const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTimePicker, presets, disabled, className, ...props }) => {
|
|
179
222
|
var _a;
|
|
180
223
|
const [open, setOpen] = React.useState(false);
|
|
181
224
|
const [range, setRange] = React.useState((_a = value !== null && value !== void 0 ? value : defaultValue) !== null && _a !== void 0 ? _a : undefined);
|
|
182
225
|
const [month, setMonth] = React.useState(range === null || range === void 0 ? void 0 : range.from);
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}, [range]);
|
|
226
|
+
const [startTime, setStartTime] = React.useState((value === null || value === void 0 ? void 0 : value.from)
|
|
227
|
+
? new Time(value.from.getHours(), value.from.getMinutes())
|
|
228
|
+
: (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.from)
|
|
229
|
+
? new Time(defaultValue.from.getHours(), defaultValue.from.getMinutes())
|
|
230
|
+
: new Time(0, 0));
|
|
231
|
+
const [endTime, setEndTime] = React.useState((value === null || value === void 0 ? void 0 : value.to)
|
|
232
|
+
? new Time(value.to.getHours(), value.to.getMinutes())
|
|
233
|
+
: (defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.to)
|
|
234
|
+
? new Time(defaultValue.to.getHours(), defaultValue.to.getMinutes())
|
|
235
|
+
: new Time(0, 0));
|
|
194
236
|
const initialRange = React.useMemo(() => {
|
|
195
237
|
return range;
|
|
196
238
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -213,15 +255,51 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
|
|
|
213
255
|
}
|
|
214
256
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
215
257
|
}, [open]);
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
258
|
+
const onRangeChange = (range) => {
|
|
259
|
+
const newRange = range;
|
|
260
|
+
if (showTimePicker) {
|
|
261
|
+
if ((newRange === null || newRange === void 0 ? void 0 : newRange.from) && !startTime) {
|
|
262
|
+
setStartTime(new Time(0, 0));
|
|
263
|
+
}
|
|
264
|
+
if ((newRange === null || newRange === void 0 ? void 0 : newRange.to) && !endTime) {
|
|
265
|
+
setEndTime(new Time(0, 0));
|
|
266
|
+
}
|
|
267
|
+
if ((newRange === null || newRange === void 0 ? void 0 : newRange.from) && startTime) {
|
|
268
|
+
newRange.from.setHours(startTime.hour);
|
|
269
|
+
newRange.from.setMinutes(startTime.minute);
|
|
270
|
+
}
|
|
271
|
+
if ((newRange === null || newRange === void 0 ? void 0 : newRange.to) && endTime) {
|
|
272
|
+
newRange.to.setHours(endTime.hour);
|
|
273
|
+
newRange.to.setMinutes(endTime.minute);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
setRange(newRange);
|
|
219
277
|
};
|
|
220
|
-
const
|
|
278
|
+
const onCancel = () => {
|
|
221
279
|
setRange(initialRange);
|
|
280
|
+
setStartTime((initialRange === null || initialRange === void 0 ? void 0 : initialRange.from)
|
|
281
|
+
? new Time(initialRange.from.getHours(), initialRange.from.getMinutes())
|
|
282
|
+
: new Time(0, 0));
|
|
283
|
+
setEndTime((initialRange === null || initialRange === void 0 ? void 0 : initialRange.to)
|
|
284
|
+
? new Time(initialRange.to.getHours(), initialRange.to.getMinutes())
|
|
285
|
+
: new Time(0, 0));
|
|
222
286
|
setOpen(false);
|
|
223
287
|
};
|
|
224
|
-
const
|
|
288
|
+
const onOpenChange = (open) => {
|
|
289
|
+
if (!open) {
|
|
290
|
+
onCancel();
|
|
291
|
+
}
|
|
292
|
+
setOpen(open);
|
|
293
|
+
};
|
|
294
|
+
const onTimeChange = (time, pos) => {
|
|
295
|
+
switch (pos) {
|
|
296
|
+
case "start":
|
|
297
|
+
setStartTime(time);
|
|
298
|
+
break;
|
|
299
|
+
case "end":
|
|
300
|
+
setEndTime(time);
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
225
303
|
if (!range) {
|
|
226
304
|
return;
|
|
227
305
|
}
|
|
@@ -230,8 +308,14 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
|
|
|
230
308
|
return;
|
|
231
309
|
}
|
|
232
310
|
const newDate = new Date(range.from.getTime());
|
|
233
|
-
|
|
234
|
-
|
|
311
|
+
if (!time) {
|
|
312
|
+
newDate.setHours(0);
|
|
313
|
+
newDate.setMinutes(0);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
newDate.setHours(time.hour);
|
|
317
|
+
newDate.setMinutes(time.minute);
|
|
318
|
+
}
|
|
235
319
|
setRange({
|
|
236
320
|
...range,
|
|
237
321
|
from: newDate,
|
|
@@ -242,8 +326,14 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
|
|
|
242
326
|
return;
|
|
243
327
|
}
|
|
244
328
|
const newDate = new Date(range.to.getTime());
|
|
245
|
-
|
|
246
|
-
|
|
329
|
+
if (!time) {
|
|
330
|
+
newDate.setHours(0);
|
|
331
|
+
newDate.setMinutes(0);
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
newDate.setHours(time.hour);
|
|
335
|
+
newDate.setMinutes(time.minute);
|
|
336
|
+
}
|
|
247
337
|
setRange({
|
|
248
338
|
...range,
|
|
249
339
|
to: newDate,
|
|
@@ -256,33 +346,38 @@ const RangeDatePicker = ({ defaultValue, value, onChange, size = "base", showTim
|
|
|
256
346
|
}
|
|
257
347
|
return `${range.from ? formatDate(range.from, showTimePicker) : ""} - ${range.to ? formatDate(range.to, showTimePicker) : ""}`;
|
|
258
348
|
}, [range, showTimePicker]);
|
|
259
|
-
|
|
349
|
+
const onApply = () => {
|
|
350
|
+
setOpen(false);
|
|
351
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(range);
|
|
352
|
+
};
|
|
353
|
+
return (React.createElement(Primitives.Root, { open: open, onOpenChange: onOpenChange },
|
|
260
354
|
React.createElement(Display, { placeholder: "Pick a date", disabled: disabled, className: className, "aria-required": props.required || props["aria-required"], "aria-invalid": props["aria-invalid"], "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"], size: size }, displayRange),
|
|
261
355
|
React.createElement(Flyout, null,
|
|
262
|
-
React.createElement("div", { className: "flex
|
|
263
|
-
|
|
264
|
-
React.createElement("div", { className: "
|
|
265
|
-
React.createElement(
|
|
266
|
-
|
|
267
|
-
React.createElement(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
React.createElement("div", { className: "
|
|
272
|
-
React.createElement("
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
React.createElement("
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
React.createElement("
|
|
280
|
-
React.createElement("
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
React.createElement(
|
|
285
|
-
|
|
356
|
+
React.createElement("div", { className: "flex" },
|
|
357
|
+
React.createElement("div", { className: "flex items-start" },
|
|
358
|
+
presets && presets.length > 0 && (React.createElement("div", { className: "relative h-full w-[160px] border-r" },
|
|
359
|
+
React.createElement("div", { className: "absolute inset-0 overflow-y-scroll p-3" },
|
|
360
|
+
React.createElement(PresetContainer, { currentValue: range, presets: presets, onSelect: onRangeChange })))),
|
|
361
|
+
React.createElement("div", null,
|
|
362
|
+
React.createElement(CalendarPrimitive, { mode: "range", selected: range, onSelect: onRangeChange, month: month, onMonthChange: setMonth, numberOfMonths: 2, disabled: disabled, classNames: {
|
|
363
|
+
months: "flex flex-row divide-x divide-ui-border-base",
|
|
364
|
+
}, ...props }),
|
|
365
|
+
showTimePicker && (React.createElement("div", { className: "border-ui-border-base flex items-center justify-evenly gap-x-3 border-t p-3" },
|
|
366
|
+
React.createElement("div", { className: "flex flex-1 items-center gap-x-2" },
|
|
367
|
+
React.createElement("span", { className: "text-ui-fg-subtle" }, "Start:"),
|
|
368
|
+
React.createElement(TimeInput, { value: startTime, onChange: (v) => onTimeChange(v, "start"), "aria-label": "Start date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.from), isRequired: props.required })),
|
|
369
|
+
React.createElement(Minus, { className: "text-ui-fg-muted" }),
|
|
370
|
+
React.createElement("div", { className: "flex flex-1 items-center gap-x-2" },
|
|
371
|
+
React.createElement("span", { className: "text-ui-fg-subtle" }, "End:"),
|
|
372
|
+
React.createElement(TimeInput, { value: endTime, onChange: (v) => onTimeChange(v, "end"), "aria-label": "End date time", isDisabled: !(range === null || range === void 0 ? void 0 : range.to), isRequired: props.required })))),
|
|
373
|
+
React.createElement("div", { className: "flex items-center justify-between border-t p-3" },
|
|
374
|
+
React.createElement("p", { className: clx("text-ui-fg-subtle txt-compact-small-plus") },
|
|
375
|
+
React.createElement("span", { className: "text-ui-fg-muted" }, "Range:"),
|
|
376
|
+
" ",
|
|
377
|
+
displayRange),
|
|
378
|
+
React.createElement("div", { className: "flex items-center gap-x-2" },
|
|
379
|
+
React.createElement(Button, { variant: "secondary", type: "button", onClick: onCancel }, "Cancel"),
|
|
380
|
+
React.createElement(Button, { variant: "primary", type: "button", onClick: onApply }, "Apply")))))))));
|
|
286
381
|
};
|
|
287
382
|
const validatePresets = (presets, rules) => {
|
|
288
383
|
const { toYear, fromYear, fromMonth, toMonth, fromDay, toDay } = rules;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../../src/components/date-picker/date-picker.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAC9C,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACjE,OAAO,KAAK,UAAU,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEnD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAA;AACtF,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAA;AAE9C,MAAM,eAAe,GAAG,GAAG,CACzB,GAAG,CACD,2JAA2J,EAC3J,4BAA4B,EAC5B,uJAAuJ,EACvJ,8EAA8E,EAC9E,uFAAuF,CACxF,EACD;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,IAAI,EAAE,0DAA0D;YAChE,KAAK,EAAE,yDAAyD;SACjE;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,MAAM;KACb;CACF,CACF,CAAA;AAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAM9B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACvE,OAAO,CACL,oBAAC,UAAU,CAAC,OAAO,IAAC,OAAO;QACzB,gCACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KAChD,KAAK;YAET,oBAAC,YAAY,IAAC,SAAS,EAAC,kBAAkB,GAAG;YAC7C,8BAAM,SAAS,EAAC,kEAAkE,IAC/E,QAAQ,CAAC,CAAC,CAAC,CACV,QAAQ,CACT,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,8BAAM,SAAS,EAAC,kBAAkB,IAAE,WAAW,CAAQ,CACxD,CAAC,CAAC,CAAC,IAAI,CACH,CACA,CACU,CACtB,CAAA;AACH,CAAC,CAAC,CAAA;AACF,OAAO,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAE1C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAG7B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3C,OAAO,CACL,oBAAC,UAAU,CAAC,MAAM;QAChB,oBAAC,UAAU,CAAC,OAAO,IACjB,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,CAAC,EACb,KAAK,EAAC,QAAQ,EACd,SAAS,EAAE,GAAG,CACZ,0EAA0E,EAC1E,gIAAgI,EAChI,6JAA6J,EAC7J,SAAS,CACV,KACG,KAAK,IAER,QAAQ,CACU,CACH,CACrB,CAAA;AACH,CAAC,CAAC,CAAA;AACF,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAA;AAoBxC,MAAM,eAAe,GAAG,CAAiC,EACvD,OAAO,EACP,QAAQ,EACR,YAAY,GAC0B,EAAE,EAAE;IAC1C,MAAM,kBAAkB,GAAG,CAAC,MAAW,EAA6B,EAAE;QACpE,OAAO,WAAW,IAAI,MAAM,CAAA;IAC9B,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,MAAW,EAAwB,EAAE;QAC1D,OAAO,MAAM,IAAI,MAAM,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,MAAe,EAAE,EAAE;QACtC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC9B,QAAQ,CAAC,MAAM,CAAC,SAAmB,CAAC,CAAA;SACrC;aAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YAChC,QAAQ,CAAC,MAAM,CAAC,IAAc,CAAC,CAAA;SAChC;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,KAAW,EAAE,KAAW,EAAE,EAAE;QAChD,OAAO,CACL,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE;YACnC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACrC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,CAC5C,CAAA;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,CAAC,MAAiB,EAAE,MAAiB,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAA;QAEzB,IAAI,SAAS,GAAG,KAAK,CAAA;QAErB,IAAI,KAAK,IAAI,KAAK,EAAE;YAClB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAE3C,IAAI,QAAQ,EAAE;gBACZ,SAAS,GAAG,IAAI,CAAA;aACjB;SACF;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAA;QACrB,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAA;QAErB,IAAI,OAAO,GAAG,KAAK,CAAA;QAEnB,IAAI,GAAG,IAAI,GAAG,EAAE;YACd,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YAErC,IAAI,MAAM,EAAE;gBACV,OAAO,GAAG,IAAI,CAAA;aACf;SACF;QAED,OAAO,SAAS,IAAI,OAAO,CAAA;IAC7B,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,MAAe,EAAE,EAAE;QACzC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,KAAK,GAAG,YAAqC,CAAA;YAEnD,OAAO,KAAK,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;SACvD;aAAM,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;YAChC,MAAM,KAAK,GAAG,YAAgC,CAAA;YAE9C,OAAO,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;SACjD;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,4BAAI,SAAS,EAAC,2BAA2B,IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC7B,OAAO,CACL,4BAAI,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,QAAQ;YAChC,gCACE,SAAS,EAAE,GAAG,CACZ,wGAAwG,EACxG,yEAAyE,EACzE,2BAA2B,EAC3B;oBACE,wBAAwB,EAAE,cAAc,CAAC,MAAM,CAAC;iBACjD,CACF,EACD,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,gBACtB,UAAU,MAAM,CAAC,KAAK,EAAE,IAEnC,MAAM,CAAC,KAAK,CACN,CACN,CACN,CAAA;IACH,CAAC,CAAC,CACC,CACN,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAAU,EAAE,WAAqB,EAAE,EAAE;IACvD,MAAM,QAAQ,GAAG,CAAC,2BAA2B,EAAE,CAAA;IAE/C,IAAI,WAAW,EAAE;QACf,IAAI,QAAQ,EAAE;YACZ,OAAO,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAA;SAC1C;QAED,OAAO,MAAM,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAA;KACzC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;AACpC,CAAC,CAAA;AAiCD,MAAM,gBAAgB,GAAG,CAAC,EACxB,YAAY,EACZ,KAAK,EACL,IAAI,GAAG,MAAM,EACb,QAAQ,EACR,OAAO,EACP,cAAc,EACd,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACI,EAAE,EAAE;;IAChB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CACpC,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,mCAAI,SAAS,CACnC,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAmB,IAAI,CAAC,CAAA;IAEhE,MAAM,IAAI,GAAc,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACzC,MAAM,IAAI,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE,mCAAI,CAAC,CAAA;QAClC,MAAM,MAAM,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,EAAE,mCAAI,CAAC,CAAA;QAEtC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;IAClC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,IAAI,CAAA;QACX,uDAAuD;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACnB,OAAO,CAAC,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,mCAAI,SAAS,CAAC,CAAA;IAC7C,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IAEzB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,IAAI,EAAE;YACR,QAAQ,CAAC,IAAI,CAAC,CAAA;SACf;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,IAAI,EAAE;YACT,QAAQ,CAAC,IAAI,CAAC,CAAA;SACf;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,CAAC,WAAW,CAAC,CAAA;QACpB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAE,EAAE;QAClD,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,IAAI,CAAC,CAAA;IAClB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,EAAE;QAC3C,IAAI,IAAI,EAAE;YACR,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YAExC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE/B,OAAO,CAAC,OAAO,CAAC,CAAA;YAChB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,OAAO,CAAC,CAAA;SACpB;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACvC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IACzC,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;IAE1B,OAAO,CACL,oBAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO;QAChD,oBAAC,OAAO,IACN,WAAW,EAAC,aAAa,EACzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,mBACL,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,kBACzC,KAAK,CAAC,cAAc,CAAC,gBACvB,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,IAAI,EAAE,IAAI,IAET,aAAa,CACN;QACV,oBAAC,MAAM;YACL,6BAAK,SAAS,EAAC,MAAM;gBACnB,6BAAK,SAAS,EAAC,kBAAkB;oBAC9B,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,6BAAK,SAAS,EAAC,oCAAoC;wBACjD,6BAAK,SAAS,EAAC,wCAAwC;4BACrD,oBAAC,eAAe,IACd,YAAY,EAAE,IAAI,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,gBAAgB,GAC1B,CACE,CACF,CACP;oBACD;wBACE,oBAAC,iBAAiB,IAChB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,QAAQ,EACvB,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,QAAQ,KACd,KAAK,GACT;wBACD,cAAc,IAAI,CACjB,6BAAK,SAAS,EAAC,oCAAoC;4BACjD,oBAAC,SAAS,kBACG,MAAM,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,CAAC,IAAI,EACjB,KAAK,EAAE,IAAI,EACX,UAAU,EAAE,KAAK,CAAC,QAAQ,GAC1B,CACE,CACP;wBACD,6BAAK,SAAS,EAAC,8DAA8D;4BAC3E,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,aAGd;4BACT,oBAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,QAAQ,EAClB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAGtB,CACL,CACF,CACF,CACF,CACC,CACO,CACnB,CAAA;AACH,CAAC,CAAA;AASD,MAAM,eAAe,GAAG,CAAC,EACvB,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,IAAI,GAAG,MAAM,EACb,cAAc,EACd,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,KAAK,EACG,EAAE,EAAE;;IACf,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CACtC,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,mCAAI,SAAS,CACnC,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAmB,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAA;IAEvE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QAC9B,MAAM,SAAS,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,QAAQ,EAAE,mCAAI,CAAC,CAAA;QAC9C,MAAM,WAAW,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,0CAAE,UAAU,EAAE,mCAAI,CAAC,CAAA;QAElD,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,0CAAE,QAAQ,EAAE,mCAAI,CAAC,CAAA;QAC1C,MAAM,SAAS,GAAG,MAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,0CAAE,UAAU,EAAE,mCAAI,CAAC,CAAA;QAE9C,OAAO;YACL,KAAK,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;YAC1C,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;SACrC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,OAAO,KAAK,CAAA;QACZ,uDAAuD;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;;QACnB,QAAQ,CAAC,MAAA,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,mCAAI,SAAS,CAAC,CAAA;IAC9C,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAA;IAEzB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,KAAK,EAAE;YACT,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;SACrB;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,IAAI,EAAE;YACT,QAAQ,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,CAAA;SACtB;QACD,uDAAuD;IACzD,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,MAAM,iBAAiB,GAAG,CAAC,KAA4B,EAAE,EAAE;QACzD,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,KAAK,CAAC,CAAA;IACnB,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,QAAQ,CAAC,YAAY,CAAC,CAAA;QACtB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,CAAC,IAAe,EAAE,GAAoB,EAAE,EAAE;QACjE,IAAI,CAAC,KAAK,EAAE;YACV,OAAM;SACP;QAED,IAAI,GAAG,KAAK,OAAO,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;gBACf,OAAM;aACP;YAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;YAE9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE/B,QAAQ,CAAC;gBACP,GAAG,KAAK;gBACR,IAAI,EAAE,OAAO;aACd,CAAC,CAAA;SACH;QAED,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE;gBACb,OAAM;aACP;YAED,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YAE5C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAE/B,QAAQ,CAAC;gBACP,GAAG,KAAK;gBACR,EAAE,EAAE,OAAO;aACZ,CAAC,CAAA;SACH;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,MAChE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EACpD,EAAE,CAAA;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAA;IAE3B,OAAO,CACL,oBAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO;QAChD,oBAAC,OAAO,IACN,WAAW,EAAC,aAAa,EACzB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,mBACL,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,kBACzC,KAAK,CAAC,cAAc,CAAC,gBACvB,KAAK,CAAC,YAAY,CAAC,qBACd,KAAK,CAAC,iBAAiB,CAAC,EACzC,IAAI,EAAE,IAAI,IAET,YAAY,CACL;QACV,oBAAC,MAAM;YACL,6BAAK,SAAS,EAAC,kBAAkB;gBAC9B,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,6BAAK,SAAS,EAAC,oCAAoC;oBACjD,6BAAK,SAAS,EAAC,wCAAwC;wBACrD,oBAAC,eAAe,IACd,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,GAC3B,CACE,CACF,CACP;gBACD;oBACE,oBAAC,iBAAiB,IAChB,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,KAAK,EACf,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,QAAQ,EACvB,cAAc,EAAE,CAAC,EACjB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE;4BACV,MAAM,EAAE,8CAA8C;yBACvD,KACG,KAAK,GACT;oBACD,cAAc,IAAI,CACjB,6BAAK,SAAS,EAAC,6EAA6E;wBAC1F,6BAAK,SAAS,EAAC,kCAAkC;4BAC/C,8BAAM,SAAS,EAAC,mBAAmB,aAAc;4BACjD,oBAAC,SAAS,IACR,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,gBAClC,iBAAiB,EAC5B,UAAU,EAAE,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,EACxB,UAAU,EAAE,KAAK,CAAC,QAAQ,GAC1B,CACE;wBACN,oBAAC,KAAK,IAAC,SAAS,EAAC,kBAAkB,GAAG;wBACtC,6BAAK,SAAS,EAAC,kCAAkC;4BAC/C,8BAAM,SAAS,EAAC,mBAAmB,WAAY;4BAC/C,oBAAC,SAAS,IACR,KAAK,EAAE,IAAI,CAAC,GAAG,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,gBAChC,eAAe,EAC1B,UAAU,EAAE,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,EAAE,CAAA,EACtB,UAAU,EAAE,KAAK,CAAC,QAAQ,GAC1B,CACE,CACF,CACP;oBACD,6BAAK,SAAS,EAAC,gDAAgD;wBAC7D,2BAAG,SAAS,EAAE,GAAG,CAAC,0CAA0C,CAAC;4BAC3D,8BAAM,SAAS,EAAC,kBAAkB,aAAc;;4BAAE,YAAY,CAC5D;wBACJ,6BAAK,SAAS,EAAC,2BAA2B;4BACxC,oBAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAY,aAGd;4BACT,oBAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAGtB,CACL,CACF,CACF,CACF,CACC,CACO,CACnB,CAAA;AACH,CAAC,CAAA;AAoBD,MAAM,eAAe,GAAG,CACtB,OAAyC,EACzC,KAAkB,EAClB,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEtE,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACjC,MAAM,aAAa,GAAG,QAAQ,CAAA;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAA;QAE1B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;YACzB,IAAI,MAAM,IAAI,MAAM,EAAE;gBACpB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAA;gBAE5C,IAAI,QAAQ,IAAI,UAAU,GAAG,QAAQ,EAAE;oBACrC,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,uBAAuB,aAAa,GAAG,CAC9D,CAAA;iBACF;gBAED,IAAI,MAAM,IAAI,UAAU,GAAG,MAAM,EAAE;oBACjC,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,oBAAoB,WAAW,GAAG,CACzD,CAAA;iBACF;gBAED,IAAI,SAAS,EAAE;oBACb,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;oBAE1C,IAAI,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE;wBACtC,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,wBAAwB,SAAS,GAAG,CAC3D,CAAA;qBACF;iBACF;gBAED,IAAI,OAAO,EAAE;oBACX,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;oBAE1C,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE;wBACpC,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,qBAAqB,OAAO,GAAG,CACtD,CAAA;qBACF;iBACF;gBAED,IAAI,OAAO,EAAE;oBACX,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;oBAEvC,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;wBACjC,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,sBAAsB,OAAO,GAAG,CACvD,CAAA;qBACF;iBACF;gBAED,IAAI,KAAK,EAAE;oBACT,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;oBAEvC,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE;wBAC/B,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,mBAAmB,MAAM,CAC7C,KAAK,EACL,cAAc,CACf,GAAG,CACL,CAAA;qBACF;iBACF;aACF;YAED,IAAI,WAAW,IAAI,MAAM,EAAE;gBACzB,MAAM,cAAc,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA;gBAC3D,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,EAAE,0CAAE,WAAW,EAAE,CAAA;gBAEvD,IAAI,cAAc,IAAI,QAAQ,IAAI,cAAc,GAAG,QAAQ,EAAE;oBAC3D,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,gCAAgC,aAAa,GAAG,CACvE,CAAA;iBACF;gBAED,IAAI,YAAY,IAAI,MAAM,IAAI,YAAY,GAAG,MAAM,EAAE;oBACnD,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,2BAA2B,WAAW,GAAG,CAChE,CAAA;iBACF;gBAED,IAAI,SAAS,EAAE;oBACb,MAAM,WAAW,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,IAAI,0CAAE,QAAQ,EAAE,CAAA;oBAErD,IAAI,WAAW,IAAI,WAAW,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE;wBACrD,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,iCAAiC,MAAM,CAC3D,SAAS,EACT,WAAW,CACZ,GAAG,CACL,CAAA;qBACF;iBACF;gBAED,IAAI,OAAO,EAAE;oBACX,MAAM,WAAW,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,EAAE,0CAAE,QAAQ,EAAE,CAAA;oBAEnD,IAAI,WAAW,IAAI,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE;wBACnD,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,4BAA4B,MAAM,CACtD,OAAO,EACP,WAAW,CACZ,GAAG,CACL,CAAA;qBACF;iBACF;gBAED,IAAI,OAAO,EAAE;oBACX,MAAM,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,IAAI,0CAAE,OAAO,EAAE,CAAA;oBAElD,IAAI,SAAS,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;wBAC9C,MAAM,IAAI,KAAK,CACb,UACE,MAAM,CAAC,SAAS,CAAC,IACnB,+BAA+B,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,CAClE,CAAA;qBACF;iBACF;gBAED,IAAI,KAAK,EAAE;oBACT,MAAM,SAAS,GAAG,MAAA,MAAM,CAAC,SAAS,CAAC,EAAE,0CAAE,OAAO,EAAE,CAAA;oBAEhD,IAAI,SAAS,IAAI,SAAS,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE;wBAC5C,MAAM,IAAI,KAAK,CACb,UAAU,MAAM,CAAC,KAAK,0BAA0B,MAAM,CACpD,KAAK,EACL,cAAc,CACf,GAAG,CACL,CAAA;qBACF;iBACF;aACF;QACH,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAmB,EAAE,EAAE;IACpE,IAAI,KAAK,CAAC,OAAO,EAAE;QACjB,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;KACtC;IAED,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,oBAAC,gBAAgB,OAAM,KAAqB,GAAI,CAAA;KACxD;IAED,OAAO,oBAAC,eAAe,OAAM,KAAoB,GAAI,CAAA;AACvD,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA","sourcesContent":["\"use client\"\n\nimport { Time } from \"@internationalized/date\"\nimport { Calendar as CalendarIcon, Minus } from \"@medusajs/icons\"\nimport * as Primitives from \"@radix-ui/react-popover\"\nimport { TimeValue } from \"@react-aria/datepicker\"\nimport { format } from \"date-fns\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/button\"\nimport { Calendar as CalendarPrimitive } from \"@/components/calendar\"\nimport { TimeInput } from \"@/components/time-input\"\nimport type { DateRange } from \"@/types\"\nimport { clx } from \"@/utils/clx\"\nimport { isBrowserLocaleClockType24h } from \"@/utils/is-browser-locale-hour-cycle-24h\"\nimport { cva } from \"class-variance-authority\"\n\nconst displayVariants = cva(\n clx(\n \"text-ui-fg-base bg-ui-bg-field border-ui-border-base transition-fg shadow-buttons-neutral flex w-full items-center gap-x-2 rounded-md border outline-none\",\n \"hover:bg-ui-bg-field-hover\",\n \"focus:border-ui-border-interactive focus:shadow-borders-active data-[state=open]:shadow-borders-active data-[state=open]:border-ui-border-interactive\",\n \"disabled:bg-ui-bg-disabled disabled:text-ui-fg-disabled disabled:shadow-none\",\n \"aria-[invalid=true]:!border-ui-border-error aria-[invalid=true]:!shadow-borders-error\"\n ),\n {\n variants: {\n size: {\n base: \"text-compact-small txt-compact-medium h-10 px-3 py-[9px]\",\n small: \"text-compact-medium txt-compact-small h-8 px-2 py-[5px]\",\n },\n },\n defaultVariants: {\n size: \"base\",\n },\n }\n)\n\nconst Display = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n placeholder?: string\n size?: \"small\" | \"base\"\n }\n>(({ className, children, placeholder, size = \"base\", ...props }, ref) => {\n return (\n <Primitives.Trigger asChild>\n <button\n ref={ref}\n className={clx(displayVariants({ size }), className)}\n {...props}\n >\n <CalendarIcon className=\"text-ui-fg-muted\" />\n <span className=\"flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-left\">\n {children ? (\n children\n ) : placeholder ? (\n <span className=\"text-ui-fg-muted\">{placeholder}</span>\n ) : null}\n </span>\n </button>\n </Primitives.Trigger>\n )\n})\nDisplay.displayName = \"DatePicker.Display\"\n\nconst Flyout = React.forwardRef<\n React.ElementRef<typeof Primitives.Content>,\n React.ComponentProps<typeof Primitives.Content>\n>(({ className, children, ...props }, ref) => {\n return (\n <Primitives.Portal>\n <Primitives.Content\n ref={ref}\n sideOffset={8}\n align=\"center\"\n className={clx(\n \"txt-compact-small shadow-elevation-flyout bg-ui-bg-base w-fit rounded-lg\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n >\n {children}\n </Primitives.Content>\n </Primitives.Portal>\n )\n})\nFlyout.displayName = \"DatePicker.Flyout\"\n\ninterface Preset {\n label: string\n}\n\ninterface DatePreset extends Preset {\n date: Date\n}\n\ninterface DateRangePreset extends Preset {\n dateRange: DateRange\n}\n\ntype PresetContainerProps<TPreset extends Preset, TValue> = {\n presets: TPreset[] | TPreset[]\n onSelect: (value: TValue) => void\n currentValue?: TValue\n}\n\nconst PresetContainer = <TPreset extends Preset, TValue>({\n presets,\n onSelect,\n currentValue,\n}: PresetContainerProps<TPreset, TValue>) => {\n const isDateRangePresets = (preset: any): preset is DateRangePreset => {\n return \"dateRange\" in preset\n }\n\n const isDatePresets = (preset: any): preset is DatePreset => {\n return \"date\" in preset\n }\n\n const handleClick = (preset: TPreset) => {\n if (isDateRangePresets(preset)) {\n onSelect(preset.dateRange as TValue)\n } else if (isDatePresets(preset)) {\n onSelect(preset.date as TValue)\n }\n }\n\n const compareDates = (date1: Date, date2: Date) => {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n )\n }\n\n const compareRanges = (range1: DateRange, range2: DateRange) => {\n const from1 = range1.from\n const from2 = range2.from\n\n let equalFrom = false\n\n if (from1 && from2) {\n const sameFrom = compareDates(from1, from2)\n\n if (sameFrom) {\n equalFrom = true\n }\n }\n\n const to1 = range1.to\n const to2 = range2.to\n\n let equalTo = false\n\n if (to1 && to2) {\n const sameTo = compareDates(to1, to2)\n\n if (sameTo) {\n equalTo = true\n }\n }\n\n return equalFrom && equalTo\n }\n\n const matchesCurrent = (preset: TPreset) => {\n if (isDateRangePresets(preset)) {\n const value = currentValue as DateRange | undefined\n\n return value && compareRanges(value, preset.dateRange)\n } else if (isDatePresets(preset)) {\n const value = currentValue as Date | undefined\n\n return value && compareDates(value, preset.date)\n }\n\n return false\n }\n\n return (\n <ul className=\"flex flex-col items-start\">\n {presets.map((preset, index) => {\n return (\n <li key={index} className=\"w-full\">\n <button\n className={clx(\n \"txt-compact-small-plus w-full overflow-hidden text-ellipsis whitespace-nowrap rounded-md p-2 text-left\",\n \"text-ui-fg-subtle hover:bg-ui-bg-base-hover outline-none transition-all\",\n \"focus:bg-ui-bg-base-hover\",\n {\n \"!bg-ui-bg-base-pressed\": matchesCurrent(preset),\n }\n )}\n onClick={() => handleClick(preset)}\n aria-label={`Select ${preset.label}`}\n >\n {preset.label}\n </button>\n </li>\n )\n })}\n </ul>\n )\n}\n\nconst formatDate = (date: Date, includeTime?: boolean) => {\n const usesAmPm = !isBrowserLocaleClockType24h()\n\n if (includeTime) {\n if (usesAmPm) {\n return format(date, \"MMM d, yyyy h:mm a\")\n }\n\n return format(date, \"MMM d, yyyy HH:mm\")\n }\n\n return format(date, \"MMM d, yyyy\")\n}\n\ntype CalendarProps = {\n fromYear?: number\n toYear?: number\n fromMonth?: Date\n toMonth?: Date\n fromDay?: Date\n toDay?: Date\n fromDate?: Date\n toDate?: Date\n}\n\ninterface PickerProps extends CalendarProps {\n className?: string\n disabled?: boolean\n required?: boolean\n size?: \"small\" | \"base\"\n showTimePicker?: boolean\n id?: string\n \"aria-invalid\"?: boolean\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n \"aria-required\"?: boolean\n}\n\ninterface SingleProps extends PickerProps {\n presets?: DatePreset[]\n defaultValue?: Date\n value?: Date\n onChange?: (date: Date | undefined) => void\n}\n\nconst SingleDatePicker = ({\n defaultValue,\n value,\n size = \"base\",\n onChange,\n presets,\n showTimePicker,\n disabled,\n className,\n ...props\n}: SingleProps) => {\n const [open, setOpen] = React.useState(false)\n const [date, setDate] = React.useState<Date | undefined>(\n value ?? defaultValue ?? undefined\n )\n const [month, setMonth] = React.useState<Date | undefined>(date)\n\n const time: TimeValue = React.useMemo(() => {\n const hour = date?.getHours() ?? 0\n const minute = date?.getMinutes() ?? 0\n\n return new Time(hour, minute, 0)\n }, [date])\n\n const initialDate = React.useMemo(() => {\n return date\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n /**\n * Update the date when the value changes.\n */\n React.useEffect(() => {\n setDate(value ?? defaultValue ?? undefined)\n }, [value, defaultValue])\n\n React.useEffect(() => {\n if (date) {\n setMonth(date)\n }\n }, [date])\n\n React.useEffect(() => {\n if (!open) {\n setMonth(date)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n const handleCancel = () => {\n setDate(initialDate)\n setOpen(false)\n }\n\n const handleDateChange = (date: Date | undefined) => {\n setDate(date)\n onChange?.(date)\n }\n\n const handleTimeChange = (time: TimeValue) => {\n if (date) {\n const newDate = new Date(date.getTime())\n\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n newDate.setSeconds(time.second)\n\n setDate(newDate)\n onChange?.(newDate)\n }\n }\n\n const formattedDate = React.useMemo(() => {\n if (!date) {\n return null\n }\n\n return formatDate(date, showTimePicker)\n }, [date, showTimePicker])\n\n return (\n <Primitives.Root open={open} onOpenChange={setOpen}>\n <Display\n placeholder=\"Pick a date\"\n disabled={disabled}\n className={className}\n aria-required={props.required || props[\"aria-required\"]}\n aria-invalid={props[\"aria-invalid\"]}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n size={size}\n >\n {formattedDate}\n </Display>\n <Flyout>\n <div className=\"flex\">\n <div className=\"flex items-start\">\n {presets && presets.length > 0 && (\n <div className=\"relative h-full w-[160px] border-r\">\n <div className=\"absolute inset-0 overflow-y-scroll p-3\">\n <PresetContainer\n currentValue={date}\n presets={presets}\n onSelect={handleDateChange}\n />\n </div>\n </div>\n )}\n <div>\n <CalendarPrimitive\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={date}\n onSelect={handleDateChange}\n disabled={disabled}\n {...props}\n />\n {showTimePicker && (\n <div className=\"border-ui-border-base border-t p-3\">\n <TimeInput\n aria-label=\"Time\"\n onChange={handleTimeChange}\n isDisabled={!date}\n value={time}\n isRequired={props.required}\n />\n </div>\n )}\n <div className=\"border-ui-border-base flex items-center gap-x-2 border-t p-3\">\n <Button\n variant=\"secondary\"\n className=\"w-full\"\n type=\"button\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n className=\"w-full\"\n type=\"button\"\n onClick={() => setOpen(false)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n </div>\n </Flyout>\n </Primitives.Root>\n )\n}\n\ninterface RangeProps extends PickerProps {\n presets?: DateRangePreset[]\n defaultValue?: DateRange\n value?: DateRange\n onChange?: (dateRange: DateRange | undefined) => void\n}\n\nconst RangeDatePicker = ({\n defaultValue,\n value,\n onChange,\n size = \"base\",\n showTimePicker,\n presets,\n disabled,\n className,\n ...props\n}: RangeProps) => {\n const [open, setOpen] = React.useState(false)\n const [range, setRange] = React.useState<DateRange | undefined>(\n value ?? defaultValue ?? undefined\n )\n const [month, setMonth] = React.useState<Date | undefined>(range?.from)\n\n const time = React.useMemo(() => {\n const startHour = range?.from?.getHours() ?? 0\n const startMinute = range?.from?.getMinutes() ?? 0\n\n const endHour = range?.to?.getHours() ?? 0\n const endMinute = range?.to?.getMinutes() ?? 0\n\n return {\n start: new Time(startHour, startMinute, 0),\n end: new Time(endHour, endMinute, 0),\n }\n }, [range])\n\n const initialRange = React.useMemo(() => {\n return range\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n /**\n * Update the range when the value changes.\n */\n React.useEffect(() => {\n setRange(value ?? defaultValue ?? undefined)\n }, [value, defaultValue])\n\n React.useEffect(() => {\n if (range) {\n setMonth(range.from)\n }\n }, [range])\n\n React.useEffect(() => {\n if (!open) {\n setMonth(range?.from)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n const handleRangeChange = (range: DateRange | undefined) => {\n setRange(range)\n onChange?.(range)\n }\n\n const handleCancel = () => {\n setRange(initialRange)\n setOpen(false)\n }\n\n const handleTimeChange = (time: TimeValue, pos: \"start\" | \"end\") => {\n if (!range) {\n return\n }\n\n if (pos === \"start\") {\n if (!range.from) {\n return\n }\n\n const newDate = new Date(range.from.getTime())\n\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n\n setRange({\n ...range,\n from: newDate,\n })\n }\n\n if (pos === \"end\") {\n if (!range.to) {\n return\n }\n\n const newDate = new Date(range.to.getTime())\n\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n\n setRange({\n ...range,\n to: newDate,\n })\n }\n }\n\n const displayRange = React.useMemo(() => {\n if (!range) {\n return null\n }\n\n return `${range.from ? formatDate(range.from, showTimePicker) : \"\"} - ${\n range.to ? formatDate(range.to, showTimePicker) : \"\"\n }`\n }, [range, showTimePicker])\n\n return (\n <Primitives.Root open={open} onOpenChange={setOpen}>\n <Display\n placeholder=\"Pick a date\"\n disabled={disabled}\n className={className}\n aria-required={props.required || props[\"aria-required\"]}\n aria-invalid={props[\"aria-invalid\"]}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n size={size}\n >\n {displayRange}\n </Display>\n <Flyout>\n <div className=\"flex items-start\">\n {presets && presets.length > 0 && (\n <div className=\"relative h-full w-[160px] border-r\">\n <div className=\"absolute inset-0 overflow-y-scroll p-3\">\n <PresetContainer\n currentValue={range}\n presets={presets}\n onSelect={handleRangeChange}\n />\n </div>\n </div>\n )}\n <div>\n <CalendarPrimitive\n mode=\"range\"\n selected={range}\n onSelect={handleRangeChange}\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={2}\n disabled={disabled}\n classNames={{\n months: \"flex flex-row divide-x divide-ui-border-base\",\n }}\n {...props}\n />\n {showTimePicker && (\n <div className=\"border-ui-border-base flex items-center justify-evenly gap-x-3 border-t p-3\">\n <div className=\"flex flex-1 items-center gap-x-2\">\n <span className=\"text-ui-fg-subtle\">Start:</span>\n <TimeInput\n value={time.start}\n onChange={(v) => handleTimeChange(v, \"start\")}\n aria-label=\"Start date time\"\n isDisabled={!range?.from}\n isRequired={props.required}\n />\n </div>\n <Minus className=\"text-ui-fg-muted\" />\n <div className=\"flex flex-1 items-center gap-x-2\">\n <span className=\"text-ui-fg-subtle\">End:</span>\n <TimeInput\n value={time.end}\n onChange={(v) => handleTimeChange(v, \"end\")}\n aria-label=\"End date time\"\n isDisabled={!range?.to}\n isRequired={props.required}\n />\n </div>\n </div>\n )}\n <div className=\"flex items-center justify-between border-t p-3\">\n <p className={clx(\"text-ui-fg-subtle txt-compact-small-plus\")}>\n <span className=\"text-ui-fg-muted\">Range:</span> {displayRange}\n </p>\n <div className=\"flex items-center gap-x-2\">\n <Button\n variant=\"secondary\"\n type=\"button\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n type=\"button\"\n onClick={() => setOpen(false)}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n </div>\n </Flyout>\n </Primitives.Root>\n )\n}\n\ntype DatePickerProps = (\n | {\n mode?: \"single\"\n presets?: DatePreset[]\n defaultValue?: Date\n value?: Date\n onChange?: (date: Date | undefined) => void\n }\n | {\n mode: \"range\"\n presets?: DateRangePreset[]\n defaultValue?: DateRange\n value?: DateRange\n onChange?: (dateRange: DateRange | undefined) => void\n }\n) &\n PickerProps\n\nconst validatePresets = (\n presets: DateRangePreset[] | DatePreset[],\n rules: PickerProps\n) => {\n const { toYear, fromYear, fromMonth, toMonth, fromDay, toDay } = rules\n\n if (presets && presets.length > 0) {\n const fromYearToUse = fromYear\n const toYearToUse = toYear\n\n presets.forEach((preset) => {\n if (\"date\" in preset) {\n const presetYear = preset.date.getFullYear()\n\n if (fromYear && presetYear < fromYear) {\n throw new Error(\n `Preset ${preset.label} is before fromYear ${fromYearToUse}.`\n )\n }\n\n if (toYear && presetYear > toYear) {\n throw new Error(\n `Preset ${preset.label} is after toYear ${toYearToUse}.`\n )\n }\n\n if (fromMonth) {\n const presetMonth = preset.date.getMonth()\n\n if (presetMonth < fromMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label} is before fromMonth ${fromMonth}.`\n )\n }\n }\n\n if (toMonth) {\n const presetMonth = preset.date.getMonth()\n\n if (presetMonth > toMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label} is after toMonth ${toMonth}.`\n )\n }\n }\n\n if (fromDay) {\n const presetDay = preset.date.getDate()\n\n if (presetDay < fromDay.getDate()) {\n throw new Error(\n `Preset ${preset.label} is before fromDay ${fromDay}.`\n )\n }\n }\n\n if (toDay) {\n const presetDay = preset.date.getDate()\n\n if (presetDay > toDay.getDate()) {\n throw new Error(\n `Preset ${preset.label} is after toDay ${format(\n toDay,\n \"MMM dd, yyyy\"\n )}.`\n )\n }\n }\n }\n\n if (\"dateRange\" in preset) {\n const presetFromYear = preset.dateRange.from?.getFullYear()\n const presetToYear = preset.dateRange.to?.getFullYear()\n\n if (presetFromYear && fromYear && presetFromYear < fromYear) {\n throw new Error(\n `Preset ${preset.label}'s 'from' is before fromYear ${fromYearToUse}.`\n )\n }\n\n if (presetToYear && toYear && presetToYear > toYear) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toYear ${toYearToUse}.`\n )\n }\n\n if (fromMonth) {\n const presetMonth = preset.dateRange.from?.getMonth()\n\n if (presetMonth && presetMonth < fromMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label}'s 'from' is before fromMonth ${format(\n fromMonth,\n \"MMM, yyyy\"\n )}.`\n )\n }\n }\n\n if (toMonth) {\n const presetMonth = preset.dateRange.to?.getMonth()\n\n if (presetMonth && presetMonth > toMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toMonth ${format(\n toMonth,\n \"MMM, yyyy\"\n )}.`\n )\n }\n }\n\n if (fromDay) {\n const presetDay = preset.dateRange.from?.getDate()\n\n if (presetDay && presetDay < fromDay.getDate()) {\n throw new Error(\n `Preset ${\n preset.dateRange.from\n }'s 'from' is before fromDay ${format(fromDay, \"MMM dd, yyyy\")}.`\n )\n }\n }\n\n if (toDay) {\n const presetDay = preset.dateRange.to?.getDate()\n\n if (presetDay && presetDay > toDay.getDate()) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toDay ${format(\n toDay,\n \"MMM dd, yyyy\"\n )}.`\n )\n }\n }\n }\n })\n }\n}\n\nconst DatePicker = ({ mode = \"single\", ...props }: DatePickerProps) => {\n if (props.presets) {\n validatePresets(props.presets, props)\n }\n\n if (mode === \"single\") {\n return <SingleDatePicker {...(props as SingleProps)} />\n }\n\n return <RangeDatePicker {...(props as RangeProps)} />\n}\n\nexport { DatePicker }\n"]}
|
|
1
|
+
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../../src/components/date-picker/date-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport { Time } from \"@internationalized/date\"\nimport { Calendar as CalendarIcon, Minus } from \"@medusajs/icons\"\nimport * as Primitives from \"@radix-ui/react-popover\"\nimport { TimeValue } from \"@react-aria/datepicker\"\nimport { format } from \"date-fns\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/button\"\nimport { Calendar as CalendarPrimitive } from \"@/components/calendar\"\nimport { TimeInput } from \"@/components/time-input\"\nimport type { DateRange } from \"@/types\"\nimport { clx } from \"@/utils/clx\"\nimport { isBrowserLocaleClockType24h } from \"@/utils/is-browser-locale-hour-cycle-24h\"\nimport { cva } from \"class-variance-authority\"\n\nconst displayVariants = cva(\n clx(\n \"text-ui-fg-base bg-ui-bg-field transition-fg shadow-buttons-neutral flex w-full items-center gap-x-2 rounded-md outline-none\",\n \"hover:bg-ui-bg-field-hover\",\n \"focus:shadow-borders-interactive-with-active data-[state=open]:shadow-borders-interactive-with-active\",\n \"disabled:bg-ui-bg-disabled disabled:text-ui-fg-disabled disabled:shadow-buttons-neutral\",\n \"aria-[invalid=true]:!shadow-borders-error\"\n ),\n {\n variants: {\n size: {\n base: \"txt-compact-medium h-10 px-3 py-2.5\",\n small: \"txt-compact-small h-8 px-2 py-1.5\",\n },\n },\n defaultVariants: {\n size: \"base\",\n },\n }\n)\n\nconst Display = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n placeholder?: string\n size?: \"small\" | \"base\"\n }\n>(({ className, children, placeholder, size = \"base\", ...props }, ref) => {\n return (\n <Primitives.Trigger asChild>\n <button\n ref={ref}\n className={clx(displayVariants({ size }), className)}\n {...props}\n >\n <CalendarIcon className=\"text-ui-fg-muted\" />\n <span className=\"flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-left\">\n {children ? (\n children\n ) : placeholder ? (\n <span className=\"text-ui-fg-muted\">{placeholder}</span>\n ) : null}\n </span>\n </button>\n </Primitives.Trigger>\n )\n})\nDisplay.displayName = \"DatePicker.Display\"\n\nconst Flyout = React.forwardRef<\n React.ElementRef<typeof Primitives.Content>,\n React.ComponentProps<typeof Primitives.Content>\n>(({ className, children, ...props }, ref) => {\n return (\n <Primitives.Portal>\n <Primitives.Content\n ref={ref}\n sideOffset={8}\n align=\"center\"\n className={clx(\n \"txt-compact-small shadow-elevation-flyout bg-ui-bg-base w-fit rounded-lg\",\n \"animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n >\n {children}\n </Primitives.Content>\n </Primitives.Portal>\n )\n})\nFlyout.displayName = \"DatePicker.Flyout\"\n\ninterface Preset {\n label: string\n}\n\ninterface DatePreset extends Preset {\n date: Date\n}\n\ninterface DateRangePreset extends Preset {\n dateRange: DateRange\n}\n\ntype PresetContainerProps<TPreset extends Preset, TValue> = {\n presets: TPreset[] | TPreset[]\n onSelect: (value: TValue) => void\n currentValue?: TValue\n}\n\nconst PresetContainer = <TPreset extends Preset, TValue>({\n presets,\n onSelect,\n currentValue,\n}: PresetContainerProps<TPreset, TValue>) => {\n const isDateRangePresets = (preset: any): preset is DateRangePreset => {\n return \"dateRange\" in preset\n }\n\n const isDatePresets = (preset: any): preset is DatePreset => {\n return \"date\" in preset\n }\n\n const handleClick = (preset: TPreset) => {\n if (isDateRangePresets(preset)) {\n onSelect(preset.dateRange as TValue)\n } else if (isDatePresets(preset)) {\n onSelect(preset.date as TValue)\n }\n }\n\n const compareDates = (date1: Date, date2: Date) => {\n return (\n date1.getDate() === date2.getDate() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n )\n }\n\n const compareRanges = (range1: DateRange, range2: DateRange) => {\n const from1 = range1.from\n const from2 = range2.from\n\n let equalFrom = false\n\n if (from1 && from2) {\n const sameFrom = compareDates(from1, from2)\n\n if (sameFrom) {\n equalFrom = true\n }\n }\n\n const to1 = range1.to\n const to2 = range2.to\n\n let equalTo = false\n\n if (to1 && to2) {\n const sameTo = compareDates(to1, to2)\n\n if (sameTo) {\n equalTo = true\n }\n }\n\n return equalFrom && equalTo\n }\n\n const matchesCurrent = (preset: TPreset) => {\n if (isDateRangePresets(preset)) {\n const value = currentValue as DateRange | undefined\n\n return value && compareRanges(value, preset.dateRange)\n } else if (isDatePresets(preset)) {\n const value = currentValue as Date | undefined\n\n return value && compareDates(value, preset.date)\n }\n\n return false\n }\n\n return (\n <ul className=\"flex flex-col items-start\">\n {presets.map((preset, index) => {\n return (\n <li key={index} className=\"w-full\">\n <button\n className={clx(\n \"txt-compact-small-plus w-full overflow-hidden text-ellipsis whitespace-nowrap rounded-md p-2 text-left\",\n \"text-ui-fg-subtle hover:bg-ui-bg-base-hover outline-none transition-all\",\n \"focus:bg-ui-bg-base-hover\",\n {\n \"!bg-ui-bg-base-pressed\": matchesCurrent(preset),\n }\n )}\n onClick={() => handleClick(preset)}\n aria-label={`Select ${preset.label}`}\n >\n {preset.label}\n </button>\n </li>\n )\n })}\n </ul>\n )\n}\n\nconst formatDate = (date: Date, includeTime?: boolean) => {\n const usesAmPm = !isBrowserLocaleClockType24h()\n\n if (includeTime) {\n if (usesAmPm) {\n return format(date, \"MMM d, yyyy h:mm a\")\n }\n\n return format(date, \"MMM d, yyyy HH:mm\")\n }\n\n return format(date, \"MMM d, yyyy\")\n}\n\ntype CalendarProps = {\n fromYear?: number\n toYear?: number\n fromMonth?: Date\n toMonth?: Date\n fromDay?: Date\n toDay?: Date\n fromDate?: Date\n toDate?: Date\n}\n\ninterface PickerProps extends CalendarProps {\n className?: string\n disabled?: boolean\n required?: boolean\n size?: \"small\" | \"base\"\n showTimePicker?: boolean\n id?: string\n \"aria-invalid\"?: boolean\n \"aria-label\"?: string\n \"aria-labelledby\"?: string\n \"aria-required\"?: boolean\n}\n\ninterface SingleProps extends PickerProps {\n presets?: DatePreset[]\n defaultValue?: Date\n value?: Date\n onChange?: (date: Date | undefined) => void\n}\n\nconst SingleDatePicker = ({\n defaultValue,\n value,\n size = \"base\",\n onChange,\n presets,\n showTimePicker,\n disabled,\n className,\n ...props\n}: SingleProps) => {\n const [open, setOpen] = React.useState(false)\n const [date, setDate] = React.useState<Date | undefined>(\n value ?? defaultValue ?? undefined\n )\n const [month, setMonth] = React.useState<Date | undefined>(date)\n\n const [time, setTime] = React.useState<TimeValue>(\n value\n ? new Time(value.getHours(), value.getMinutes())\n : defaultValue\n ? new Time(defaultValue.getHours(), defaultValue.getMinutes())\n : new Time(0, 0)\n )\n\n const initialDate = React.useMemo(() => {\n return date\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n /**\n * Update the date when the value changes.\n */\n React.useEffect(() => {\n setDate(value ?? defaultValue ?? undefined)\n }, [value, defaultValue])\n\n React.useEffect(() => {\n if (date) {\n setMonth(date)\n }\n }, [date])\n\n React.useEffect(() => {\n if (!open) {\n setMonth(date)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n const onCancel = () => {\n setDate(initialDate)\n setTime(\n initialDate\n ? new Time(initialDate.getHours(), initialDate.getMinutes())\n : new Time(0, 0)\n )\n setOpen(false)\n }\n\n const onOpenChange = (open: boolean) => {\n if (!open) {\n onCancel()\n }\n\n setOpen(open)\n }\n\n const onDateChange = (date: Date | undefined) => {\n const newDate = date\n\n if (showTimePicker) {\n /**\n * If the time is cleared, and the date is\n * changed then we want to reset the time.\n */\n if (newDate && !time) {\n setTime(new Time(0, 0))\n }\n\n /**\n * If the time is set, and the date is changed\n * then we want to update the date with the\n * time.\n */\n if (newDate && time) {\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n }\n }\n\n setDate(newDate)\n }\n\n const onTimeChange = (time: TimeValue) => {\n setTime(time)\n\n if (!date) {\n return\n }\n\n const newDate = new Date(date.getTime())\n\n if (!time) {\n /**\n * When a segment of the time input is cleared,\n * it will return `null` as the value is no longer\n * a valid time. In this case, we want to set the\n * time to for the date, effectivly resetting the\n * input field.\n */\n newDate.setHours(0)\n newDate.setMinutes(0)\n } else {\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n }\n\n setDate(newDate)\n }\n\n const formattedDate = React.useMemo(() => {\n if (!date) {\n return null\n }\n\n return formatDate(date, showTimePicker)\n }, [date, showTimePicker])\n\n const onApply = () => {\n setOpen(false)\n onChange?.(date)\n }\n\n return (\n <Primitives.Root open={open} onOpenChange={onOpenChange}>\n <Display\n placeholder=\"Pick a date\"\n disabled={disabled}\n className={className}\n aria-required={props.required || props[\"aria-required\"]}\n aria-invalid={props[\"aria-invalid\"]}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n size={size}\n >\n {formattedDate}\n </Display>\n <Flyout>\n <div className=\"flex\">\n <div className=\"flex items-start\">\n {presets && presets.length > 0 && (\n <div className=\"relative h-full w-[160px] border-r\">\n <div className=\"absolute inset-0 overflow-y-scroll p-3\">\n <PresetContainer\n currentValue={date}\n presets={presets}\n onSelect={onDateChange}\n />\n </div>\n </div>\n )}\n <div>\n <CalendarPrimitive\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n selected={date}\n onSelect={onDateChange}\n disabled={disabled}\n {...props}\n />\n {showTimePicker && (\n <div className=\"border-ui-border-base border-t p-3\">\n <TimeInput\n aria-label=\"Time\"\n onChange={onTimeChange}\n isDisabled={!date}\n value={time}\n isRequired={props.required}\n />\n </div>\n )}\n <div className=\"border-ui-border-base flex items-center gap-x-2 border-t p-3\">\n <Button\n variant=\"secondary\"\n className=\"w-full\"\n type=\"button\"\n onClick={onCancel}\n >\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n className=\"w-full\"\n type=\"button\"\n onClick={onApply}\n >\n Apply\n </Button>\n </div>\n </div>\n </div>\n </div>\n </Flyout>\n </Primitives.Root>\n )\n}\n\ninterface RangeProps extends PickerProps {\n presets?: DateRangePreset[]\n defaultValue?: DateRange\n value?: DateRange\n onChange?: (dateRange: DateRange | undefined) => void\n}\n\nconst RangeDatePicker = ({\n defaultValue,\n value,\n onChange,\n size = \"base\",\n showTimePicker,\n presets,\n disabled,\n className,\n ...props\n}: RangeProps) => {\n const [open, setOpen] = React.useState(false)\n const [range, setRange] = React.useState<DateRange | undefined>(\n value ?? defaultValue ?? undefined\n )\n const [month, setMonth] = React.useState<Date | undefined>(range?.from)\n\n const [startTime, setStartTime] = React.useState<TimeValue>(\n value?.from\n ? new Time(value.from.getHours(), value.from.getMinutes())\n : defaultValue?.from\n ? new Time(defaultValue.from.getHours(), defaultValue.from.getMinutes())\n : new Time(0, 0)\n )\n const [endTime, setEndTime] = React.useState<TimeValue>(\n value?.to\n ? new Time(value.to.getHours(), value.to.getMinutes())\n : defaultValue?.to\n ? new Time(defaultValue.to.getHours(), defaultValue.to.getMinutes())\n : new Time(0, 0)\n )\n\n const initialRange = React.useMemo(() => {\n return range\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n /**\n * Update the range when the value changes.\n */\n React.useEffect(() => {\n setRange(value ?? defaultValue ?? undefined)\n }, [value, defaultValue])\n\n React.useEffect(() => {\n if (range) {\n setMonth(range.from)\n }\n }, [range])\n\n React.useEffect(() => {\n if (!open) {\n setMonth(range?.from)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open])\n\n const onRangeChange = (range: DateRange | undefined) => {\n const newRange = range\n\n if (showTimePicker) {\n if (newRange?.from && !startTime) {\n setStartTime(new Time(0, 0))\n }\n\n if (newRange?.to && !endTime) {\n setEndTime(new Time(0, 0))\n }\n\n if (newRange?.from && startTime) {\n newRange.from.setHours(startTime.hour)\n newRange.from.setMinutes(startTime.minute)\n }\n\n if (newRange?.to && endTime) {\n newRange.to.setHours(endTime.hour)\n newRange.to.setMinutes(endTime.minute)\n }\n }\n\n setRange(newRange)\n }\n\n const onCancel = () => {\n setRange(initialRange)\n setStartTime(\n initialRange?.from\n ? new Time(initialRange.from.getHours(), initialRange.from.getMinutes())\n : new Time(0, 0)\n )\n setEndTime(\n initialRange?.to\n ? new Time(initialRange.to.getHours(), initialRange.to.getMinutes())\n : new Time(0, 0)\n )\n setOpen(false)\n }\n\n const onOpenChange = (open: boolean) => {\n if (!open) {\n onCancel()\n }\n\n setOpen(open)\n }\n\n const onTimeChange = (time: TimeValue, pos: \"start\" | \"end\") => {\n switch (pos) {\n case \"start\":\n setStartTime(time)\n break\n case \"end\":\n setEndTime(time)\n break\n }\n\n if (!range) {\n return\n }\n\n if (pos === \"start\") {\n if (!range.from) {\n return\n }\n\n const newDate = new Date(range.from.getTime())\n\n if (!time) {\n newDate.setHours(0)\n newDate.setMinutes(0)\n } else {\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n }\n\n setRange({\n ...range,\n from: newDate,\n })\n }\n\n if (pos === \"end\") {\n if (!range.to) {\n return\n }\n\n const newDate = new Date(range.to.getTime())\n\n if (!time) {\n newDate.setHours(0)\n newDate.setMinutes(0)\n } else {\n newDate.setHours(time.hour)\n newDate.setMinutes(time.minute)\n }\n\n setRange({\n ...range,\n to: newDate,\n })\n }\n }\n\n const displayRange = React.useMemo(() => {\n if (!range) {\n return null\n }\n\n return `${range.from ? formatDate(range.from, showTimePicker) : \"\"} - ${\n range.to ? formatDate(range.to, showTimePicker) : \"\"\n }`\n }, [range, showTimePicker])\n\n const onApply = () => {\n setOpen(false)\n onChange?.(range)\n }\n\n return (\n <Primitives.Root open={open} onOpenChange={onOpenChange}>\n <Display\n placeholder=\"Pick a date\"\n disabled={disabled}\n className={className}\n aria-required={props.required || props[\"aria-required\"]}\n aria-invalid={props[\"aria-invalid\"]}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"]}\n size={size}\n >\n {displayRange}\n </Display>\n <Flyout>\n <div className=\"flex\">\n <div className=\"flex items-start\">\n {presets && presets.length > 0 && (\n <div className=\"relative h-full w-[160px] border-r\">\n <div className=\"absolute inset-0 overflow-y-scroll p-3\">\n <PresetContainer\n currentValue={range}\n presets={presets}\n onSelect={onRangeChange}\n />\n </div>\n </div>\n )}\n <div>\n <CalendarPrimitive\n mode=\"range\"\n selected={range}\n onSelect={onRangeChange}\n month={month}\n onMonthChange={setMonth}\n numberOfMonths={2}\n disabled={disabled}\n classNames={{\n months: \"flex flex-row divide-x divide-ui-border-base\",\n }}\n {...props}\n />\n {showTimePicker && (\n <div className=\"border-ui-border-base flex items-center justify-evenly gap-x-3 border-t p-3\">\n <div className=\"flex flex-1 items-center gap-x-2\">\n <span className=\"text-ui-fg-subtle\">Start:</span>\n <TimeInput\n value={startTime}\n onChange={(v) => onTimeChange(v, \"start\")}\n aria-label=\"Start date time\"\n isDisabled={!range?.from}\n isRequired={props.required}\n />\n </div>\n <Minus className=\"text-ui-fg-muted\" />\n <div className=\"flex flex-1 items-center gap-x-2\">\n <span className=\"text-ui-fg-subtle\">End:</span>\n <TimeInput\n value={endTime}\n onChange={(v) => onTimeChange(v, \"end\")}\n aria-label=\"End date time\"\n isDisabled={!range?.to}\n isRequired={props.required}\n />\n </div>\n </div>\n )}\n <div className=\"flex items-center justify-between border-t p-3\">\n <p className={clx(\"text-ui-fg-subtle txt-compact-small-plus\")}>\n <span className=\"text-ui-fg-muted\">Range:</span>{\" \"}\n {displayRange}\n </p>\n <div className=\"flex items-center gap-x-2\">\n <Button variant=\"secondary\" type=\"button\" onClick={onCancel}>\n Cancel\n </Button>\n <Button variant=\"primary\" type=\"button\" onClick={onApply}>\n Apply\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </Flyout>\n </Primitives.Root>\n )\n}\n\ntype DatePickerProps = (\n | {\n mode?: \"single\"\n presets?: DatePreset[]\n defaultValue?: Date\n value?: Date\n onChange?: (date: Date | undefined) => void\n }\n | {\n mode: \"range\"\n presets?: DateRangePreset[]\n defaultValue?: DateRange\n value?: DateRange\n onChange?: (dateRange: DateRange | undefined) => void\n }\n) &\n PickerProps\n\nconst validatePresets = (\n presets: DateRangePreset[] | DatePreset[],\n rules: PickerProps\n) => {\n const { toYear, fromYear, fromMonth, toMonth, fromDay, toDay } = rules\n\n if (presets && presets.length > 0) {\n const fromYearToUse = fromYear\n const toYearToUse = toYear\n\n presets.forEach((preset) => {\n if (\"date\" in preset) {\n const presetYear = preset.date.getFullYear()\n\n if (fromYear && presetYear < fromYear) {\n throw new Error(\n `Preset ${preset.label} is before fromYear ${fromYearToUse}.`\n )\n }\n\n if (toYear && presetYear > toYear) {\n throw new Error(\n `Preset ${preset.label} is after toYear ${toYearToUse}.`\n )\n }\n\n if (fromMonth) {\n const presetMonth = preset.date.getMonth()\n\n if (presetMonth < fromMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label} is before fromMonth ${fromMonth}.`\n )\n }\n }\n\n if (toMonth) {\n const presetMonth = preset.date.getMonth()\n\n if (presetMonth > toMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label} is after toMonth ${toMonth}.`\n )\n }\n }\n\n if (fromDay) {\n const presetDay = preset.date.getDate()\n\n if (presetDay < fromDay.getDate()) {\n throw new Error(\n `Preset ${preset.label} is before fromDay ${fromDay}.`\n )\n }\n }\n\n if (toDay) {\n const presetDay = preset.date.getDate()\n\n if (presetDay > toDay.getDate()) {\n throw new Error(\n `Preset ${preset.label} is after toDay ${format(\n toDay,\n \"MMM dd, yyyy\"\n )}.`\n )\n }\n }\n }\n\n if (\"dateRange\" in preset) {\n const presetFromYear = preset.dateRange.from?.getFullYear()\n const presetToYear = preset.dateRange.to?.getFullYear()\n\n if (presetFromYear && fromYear && presetFromYear < fromYear) {\n throw new Error(\n `Preset ${preset.label}'s 'from' is before fromYear ${fromYearToUse}.`\n )\n }\n\n if (presetToYear && toYear && presetToYear > toYear) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toYear ${toYearToUse}.`\n )\n }\n\n if (fromMonth) {\n const presetMonth = preset.dateRange.from?.getMonth()\n\n if (presetMonth && presetMonth < fromMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label}'s 'from' is before fromMonth ${format(\n fromMonth,\n \"MMM, yyyy\"\n )}.`\n )\n }\n }\n\n if (toMonth) {\n const presetMonth = preset.dateRange.to?.getMonth()\n\n if (presetMonth && presetMonth > toMonth.getMonth()) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toMonth ${format(\n toMonth,\n \"MMM, yyyy\"\n )}.`\n )\n }\n }\n\n if (fromDay) {\n const presetDay = preset.dateRange.from?.getDate()\n\n if (presetDay && presetDay < fromDay.getDate()) {\n throw new Error(\n `Preset ${\n preset.dateRange.from\n }'s 'from' is before fromDay ${format(fromDay, \"MMM dd, yyyy\")}.`\n )\n }\n }\n\n if (toDay) {\n const presetDay = preset.dateRange.to?.getDate()\n\n if (presetDay && presetDay > toDay.getDate()) {\n throw new Error(\n `Preset ${preset.label}'s 'to' is after toDay ${format(\n toDay,\n \"MMM dd, yyyy\"\n )}.`\n )\n }\n }\n }\n })\n }\n}\n\nconst DatePicker = ({ mode = \"single\", ...props }: DatePickerProps) => {\n if (props.presets) {\n validatePresets(props.presets, props)\n }\n\n if (mode === \"single\") {\n return <SingleDatePicker {...(props as SingleProps)} />\n }\n\n return <RangeDatePicker {...(props as RangeProps)} />\n}\n\nexport { DatePicker }\n"]}
|
|
@@ -17,21 +17,21 @@ const SubMenuTrigger = React.forwardRef(({ className, children, ...props }, ref)
|
|
|
17
17
|
children,
|
|
18
18
|
React.createElement(ChevronRightMini, { className: "ml-auto" }))));
|
|
19
19
|
SubMenuTrigger.displayName = "DropdownMenu.SubMenuTrigger";
|
|
20
|
-
const SubMenuContent = React.forwardRef(({ className, ...props }, ref) => (React.createElement(Primitives.Portal, null,
|
|
21
|
-
React.createElement(Primitives.SubContent, { ref: ref, className: clx("bg-ui-bg-base text-ui-fg-base shadow-elevation-flyout min-w-[8rem] overflow-hidden rounded-lg border p-1", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }))));
|
|
20
|
+
const SubMenuContent = React.forwardRef(({ className, collisionPadding = 8, ...props }, ref) => (React.createElement(Primitives.Portal, null,
|
|
21
|
+
React.createElement(Primitives.SubContent, { ref: ref, collisionPadding: collisionPadding, className: clx("bg-ui-bg-base text-ui-fg-base shadow-elevation-flyout max-h-[var(--radix-popper-available-height)] min-w-[8rem] overflow-hidden rounded-lg border p-1", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }))));
|
|
22
22
|
SubMenuContent.displayName = "DropdownMenu.SubMenuContent";
|
|
23
|
-
const Content = React.forwardRef(({ className, sideOffset = 8, align = "start", ...props }, ref) => (React.createElement(Primitives.Portal, null,
|
|
24
|
-
React.createElement(Primitives.Content, { ref: ref, sideOffset: sideOffset, align: align, className: clx("bg-ui-bg-base text-ui-fg-base shadow-elevation-flyout min-w-[
|
|
23
|
+
const Content = React.forwardRef(({ className, sideOffset = 8, collisionPadding = 8, align = "start", ...props }, ref) => (React.createElement(Primitives.Portal, null,
|
|
24
|
+
React.createElement(Primitives.Content, { ref: ref, sideOffset: sideOffset, align: align, collisionPadding: collisionPadding, className: clx("bg-ui-bg-base text-ui-fg-base shadow-elevation-flyout max-h-[var(--radix-popper-available-height)] min-w-[220px] overflow-hidden rounded-lg p-1", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", className), ...props }))));
|
|
25
25
|
Content.displayName = "DropdownMenu.Content";
|
|
26
|
-
const Item = React.forwardRef(({ className, ...props }, ref) => (React.createElement(Primitives.Item, { ref: ref, className: clx("bg-ui-bg-base focus:bg-ui-bg-base-pressed text-ui-fg-base data-[disabled]:text-ui-fg-disabled txt-compact-small relative flex cursor-
|
|
26
|
+
const Item = React.forwardRef(({ className, ...props }, ref) => (React.createElement(Primitives.Item, { ref: ref, className: clx("bg-ui-bg-base focus:bg-ui-bg-base-pressed text-ui-fg-base data-[disabled]:text-ui-fg-disabled txt-compact-small relative flex cursor-pointer select-none items-center rounded-md px-3 py-2 outline-none transition-colors data-[disabled]:pointer-events-none", className), ...props })));
|
|
27
27
|
Item.displayName = "DropdownMenu.Item";
|
|
28
|
-
const CheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (React.createElement(Primitives.CheckboxItem, { ref: ref, className: clx("focus:bg-ui-bg-base-pressed text-ui-fg-base data-[disabled]:text-ui-fg-disabled relative flex cursor-
|
|
28
|
+
const CheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (React.createElement(Primitives.CheckboxItem, { ref: ref, className: clx("focus:bg-ui-bg-base-pressed text-ui-fg-base data-[disabled]:text-ui-fg-disabled relative flex cursor-pointer select-none items-center rounded-md py-2 pl-10 pr-3 text-sm outline-none transition-colors data-[disabled]:pointer-events-none", className), checked: checked, ...props },
|
|
29
29
|
React.createElement("span", { className: "absolute left-3 flex h-5 w-5 items-center justify-center" },
|
|
30
30
|
React.createElement(Primitives.ItemIndicator, null,
|
|
31
31
|
React.createElement(CheckMini, null))),
|
|
32
32
|
children)));
|
|
33
33
|
CheckboxItem.displayName = "DropdownMenu.CheckboxItem";
|
|
34
|
-
const RadioItem = React.forwardRef(({ className, children, ...props }, ref) => (React.createElement(Primitives.RadioItem, { ref: ref, className: clx("focus:bg-ui-bg-base-pressed hover:bg-ui-base-hover bg-ui-bg-base txt-compact-small relative flex cursor-
|
|
34
|
+
const RadioItem = React.forwardRef(({ className, children, ...props }, ref) => (React.createElement(Primitives.RadioItem, { ref: ref, className: clx("focus:bg-ui-bg-base-pressed hover:bg-ui-base-hover bg-ui-bg-base txt-compact-small relative flex cursor-pointer select-none items-center rounded-md py-2 pl-10 pr-3 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[state=checked]:font-medium data-[disabled]:opacity-50", className), ...props },
|
|
35
35
|
React.createElement("span", { className: "absolute left-3 flex h-5 w-5 items-center justify-center" },
|
|
36
36
|
React.createElement(Primitives.ItemIndicator, null,
|
|
37
37
|
React.createElement(EllipseMiniSolid, { className: "text-ui-fg-base" }))),
|