@yamada-ui/react 2.2.1-dev-20260502071616 → 2.2.1-dev-20260503043723
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/date-picker/use-date-picker.cjs +20 -16
- package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js +21 -17
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/types/components/accordion/accordion.d.ts +2 -2
- package/dist/types/components/accordion/use-accordion.d.ts +11 -11
- package/dist/types/components/action-bar/action-bar.d.ts +2 -2
- package/dist/types/components/airy/airy.d.ts +2 -2
- package/dist/types/components/alert/alert.d.ts +2 -2
- package/dist/types/components/alert/alert.style.d.ts +1 -1
- package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
- package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
- package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
- package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
- package/dist/types/components/avatar/avatar.d.ts +5 -5
- package/dist/types/components/avatar/avatar.style.d.ts +1 -1
- package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
- package/dist/types/components/badge/badge.d.ts +2 -2
- package/dist/types/components/bleed/bleed.d.ts +2 -2
- package/dist/types/components/blockquote/blockquote.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
- package/dist/types/components/breadcrumb/breadcrumb.style.d.ts +1 -1
- package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
- package/dist/types/components/button/button.d.ts +2 -2
- package/dist/types/components/button/icon-button.d.ts +2 -2
- package/dist/types/components/calendar/calendar.d.ts +2 -2
- package/dist/types/components/calendar/calendar.style.d.ts +2 -2
- package/dist/types/components/calendar/use-calendar.d.ts +8 -8
- package/dist/types/components/card/card.d.ts +2 -2
- package/dist/types/components/carousel/carousel.d.ts +2 -2
- package/dist/types/components/carousel/carousel.style.d.ts +2 -2
- package/dist/types/components/carousel/use-carousel.d.ts +3 -3
- package/dist/types/components/center/center.d.ts +2 -2
- package/dist/types/components/chart/area-chart.d.ts +2 -2
- package/dist/types/components/chart/bar-chart.d.ts +2 -2
- package/dist/types/components/chart/cartesian-chart.style.d.ts +1 -1
- package/dist/types/components/chart/chart.d.ts +5 -5
- package/dist/types/components/chart/composed-chart.d.ts +2 -2
- package/dist/types/components/chart/donut-chart.d.ts +2 -2
- package/dist/types/components/chart/line-chart.d.ts +2 -2
- package/dist/types/components/chart/pie-chart.d.ts +2 -2
- package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
- package/dist/types/components/chart/radar-chart.d.ts +2 -2
- package/dist/types/components/chart/radial-chart.d.ts +2 -2
- package/dist/types/components/chart/use-chart.d.ts +2 -2
- package/dist/types/components/checkbox/checkbox.d.ts +5 -5
- package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
- package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
- package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
- package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
- package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
- package/dist/types/components/close-button/close-button.d.ts +2 -2
- package/dist/types/components/code/code.d.ts +2 -2
- package/dist/types/components/collapse/collapse.d.ts +2 -2
- package/dist/types/components/color-picker/color-picker.d.ts +2 -2
- package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.d.ts +2 -2
- package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
- package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
- package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
- package/dist/types/components/container/container.d.ts +2 -2
- package/dist/types/components/data-list/data-list.d.ts +2 -2
- package/dist/types/components/data-list/data-list.style.d.ts +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +2 -2
- package/dist/types/components/date-picker/date-picker.style.d.ts +1 -1
- package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
- package/dist/types/components/drawer/drawer.d.ts +2 -2
- package/dist/types/components/dropzone/dropzone.d.ts +5 -5
- package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
- package/dist/types/components/editable/editable.d.ts +4 -4
- package/dist/types/components/editable/use-editable.d.ts +2 -2
- package/dist/types/components/em/em.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.d.ts +2 -2
- package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
- package/dist/types/components/fade/fade.d.ts +2 -2
- package/dist/types/components/field/field.d.ts +3 -3
- package/dist/types/components/field/use-field-props.d.ts +4 -4
- package/dist/types/components/fieldset/fieldset.d.ts +3 -3
- package/dist/types/components/file-button/file-button.d.ts +2 -2
- package/dist/types/components/file-button/use-file-button.d.ts +18 -18
- package/dist/types/components/file-input/file-input.d.ts +2 -2
- package/dist/types/components/file-input/use-file-input.d.ts +17 -17
- package/dist/types/components/flex/flex.d.ts +2 -2
- package/dist/types/components/flip/flip.d.ts +4 -4
- package/dist/types/components/float/float.d.ts +2 -2
- package/dist/types/components/form/form.d.ts +3 -3
- package/dist/types/components/form/form.style.d.ts +1 -1
- package/dist/types/components/format/format-byte.d.ts +4 -4
- package/dist/types/components/format/format-date-time.d.ts +4 -4
- package/dist/types/components/format/format-number.d.ts +2 -2
- package/dist/types/components/grid/grid-item.d.ts +2 -2
- package/dist/types/components/grid/grid.d.ts +2 -2
- package/dist/types/components/group/group.d.ts +2 -2
- package/dist/types/components/group/use-group.d.ts +2 -2
- package/dist/types/components/heading/heading.d.ts +2 -2
- package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
- package/dist/types/components/icon/icon.d.ts +5 -5
- package/dist/types/components/image/image.d.ts +2 -2
- package/dist/types/components/indicator/indicator.d.ts +4 -4
- package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
- package/dist/types/components/input/input-addon.d.ts +2 -2
- package/dist/types/components/input/input-element.d.ts +2 -2
- package/dist/types/components/input/input.d.ts +2 -2
- package/dist/types/components/kbd/kbd.d.ts +2 -2
- package/dist/types/components/link/link.d.ts +2 -2
- package/dist/types/components/link-box/link-box.d.ts +2 -2
- package/dist/types/components/list/list.d.ts +2 -2
- package/dist/types/components/loading/loading-provider.d.ts +2 -2
- package/dist/types/components/loading/loading.d.ts +3 -3
- package/dist/types/components/mark/mark.d.ts +2 -2
- package/dist/types/components/menu/menu.d.ts +2 -2
- package/dist/types/components/menu/menu.style.d.ts +2 -2
- package/dist/types/components/menu/use-menu.d.ts +11 -11
- package/dist/types/components/modal/modal.d.ts +2 -2
- package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
- package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
- package/dist/types/components/native-popover/native-popover.d.ts +2 -2
- package/dist/types/components/native-select/native-select.d.ts +2 -2
- package/dist/types/components/native-table/native-table.d.ts +4 -4
- package/dist/types/components/number-input/number-input.d.ts +2 -2
- package/dist/types/components/number-input/number-input.style.d.ts +1 -1
- package/dist/types/components/pagination/pagination.d.ts +2 -2
- package/dist/types/components/pagination/use-pagination.d.ts +2 -2
- package/dist/types/components/password-input/password-input.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.d.ts +2 -2
- package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
- package/dist/types/components/password-input/use-password-input.d.ts +2 -2
- package/dist/types/components/pin-input/pin-input.d.ts +2 -2
- package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
- package/dist/types/components/popover/popover.d.ts +2 -2
- package/dist/types/components/progress/progress.d.ts +4 -4
- package/dist/types/components/progress/use-progress.d.ts +706 -706
- package/dist/types/components/qr-code/qr-code.d.ts +2 -2
- package/dist/types/components/radio/radio.d.ts +5 -5
- package/dist/types/components/radio/radio.style.d.ts +1 -1
- package/dist/types/components/radio/use-radio-group.d.ts +2 -2
- package/dist/types/components/radio-card/radio-card.d.ts +5 -5
- package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
- package/dist/types/components/rating/rating.style.d.ts +2 -2
- package/dist/types/components/rating/use-rating.d.ts +7 -7
- package/dist/types/components/reorder/reorder.d.ts +2 -2
- package/dist/types/components/reorder/use-reorder.d.ts +4 -4
- package/dist/types/components/resizable/resizable.d.ts +2 -2
- package/dist/types/components/resizable/use-resizable.d.ts +2 -2
- package/dist/types/components/ripple/ripple.d.ts +2 -2
- package/dist/types/components/ripple/use-ripple.d.ts +2 -2
- package/dist/types/components/rotate/rotate.d.ts +2 -2
- package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
- package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
- package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
- package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
- package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/select/select.style.d.ts +1 -1
- package/dist/types/components/select/use-select.d.ts +4 -4
- package/dist/types/components/separator/separator.d.ts +2 -2
- package/dist/types/components/sidebar/sidebar.d.ts +2 -2
- package/dist/types/components/sidebar/use-sidebar.d.ts +9 -9
- package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton.d.ts +2 -2
- package/dist/types/components/slide/slide.d.ts +2 -2
- package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
- package/dist/types/components/slider/slider.d.ts +2 -2
- package/dist/types/components/slider/use-slider.d.ts +2 -2
- package/dist/types/components/stack/h-stack.d.ts +2 -2
- package/dist/types/components/stack/stack.d.ts +2 -2
- package/dist/types/components/stack/v-stack.d.ts +2 -2
- package/dist/types/components/stack/z-stack.d.ts +2 -2
- package/dist/types/components/stat/stat.d.ts +2 -2
- package/dist/types/components/stat/stat.style.d.ts +2 -2
- package/dist/types/components/status/status.d.ts +2 -2
- package/dist/types/components/status/status.style.d.ts +2 -2
- package/dist/types/components/steps/steps.d.ts +2 -2
- package/dist/types/components/steps/steps.style.d.ts +1 -1
- package/dist/types/components/steps/use-steps.d.ts +10 -10
- package/dist/types/components/switch/switch.d.ts +2 -2
- package/dist/types/components/table/table.d.ts +2 -2
- package/dist/types/components/tabs/tabs.d.ts +2 -2
- package/dist/types/components/tabs/tabs.style.d.ts +1 -1
- package/dist/types/components/tabs/use-tabs.d.ts +16 -16
- package/dist/types/components/tag/tag.d.ts +2 -2
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/components/text/text.d.ts +2 -2
- package/dist/types/components/textarea/textarea.d.ts +2 -2
- package/dist/types/components/textarea/use-autosize.d.ts +2 -2
- package/dist/types/components/timeline/timeline.d.ts +5 -5
- package/dist/types/components/timeline/timeline.style.d.ts +1 -1
- package/dist/types/components/toggle/toggle.d.ts +5 -5
- package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
- package/dist/types/components/toggle/use-toggle.d.ts +2 -2
- package/dist/types/components/tooltip/tooltip.d.ts +2 -2
- package/dist/types/components/tree/tree.d.ts +2 -2
- package/dist/types/components/tree/tree.style.d.ts +1 -1
- package/dist/types/components/tree/use-tree.d.ts +223 -223
- package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
- package/dist/types/components/wrap/wrap.d.ts +2 -2
- package/dist/types/core/components/create-component.d.ts +7 -7
- package/dist/types/core/system/color-mode-provider.d.ts +2 -2
- package/dist/types/core/system/storage-script.d.ts +3 -3
- package/dist/types/core/system/styled.d.ts +2 -2
- package/dist/types/core/system/system-provider.d.ts +2 -2
- package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
- package/dist/types/hooks/use-clickable/index.d.ts +2 -2
- package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
- package/dist/types/hooks/use-combobox/index.d.ts +12 -12
- package/dist/types/hooks/use-counter/index.d.ts +2 -2
- package/dist/types/hooks/use-descendants/index.d.ts +2 -2
- package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
- package/dist/types/hooks/use-popper/index.d.ts +2 -2
- package/dist/types/hooks/use-resize-observer/index.d.ts +3 -3
- package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
- package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
- package/dist/types/utils/children.d.ts +2 -2
- package/package.json +2 -2
|
@@ -5,6 +5,8 @@ const require_dom = require('../../utils/dom.cjs');
|
|
|
5
5
|
const require_effect = require('../../utils/effect.cjs');
|
|
6
6
|
const require_ref = require('../../utils/ref.cjs');
|
|
7
7
|
const require_utils_index = require('../../utils/index.cjs');
|
|
8
|
+
const require_environment_provider = require('../../core/system/environment-provider.cjs');
|
|
9
|
+
require('../../core/index.cjs');
|
|
8
10
|
const require_hooks_use_controllable_state_index = require('../../hooks/use-controllable-state/index.cjs');
|
|
9
11
|
const require_i18n_provider = require('../../providers/i18n-provider/i18n-provider.cjs');
|
|
10
12
|
require('../../providers/i18n-provider/index.cjs');
|
|
@@ -30,6 +32,7 @@ const defaultRender = ({ count, focused, index, max, separator, value }) => {
|
|
|
30
32
|
};
|
|
31
33
|
const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDate = require_use_calendar.DEFAULT_MIN_DATE, ...props } = {}) => {
|
|
32
34
|
if ((0, dayjs.default)(minDate).isAfter((0, dayjs.default)(maxDate))) maxDate = minDate;
|
|
35
|
+
const { getDocument } = require_environment_provider.useEnvironment();
|
|
33
36
|
const { locale: defaultLocale, t } = require_i18n_provider.useI18n("datePicker");
|
|
34
37
|
const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
|
|
35
38
|
end: void 0,
|
|
@@ -265,13 +268,7 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
265
268
|
},
|
|
266
269
|
Enter: (ev$1) => {
|
|
267
270
|
if (!open || !inputValue$1.length) return;
|
|
268
|
-
if ((0, require_utils_index.utils_exports.isArray)(value)) {
|
|
269
|
-
const date = stringToDate(inputValue$1);
|
|
270
|
-
if (!date) return;
|
|
271
|
-
ev$1.preventDefault();
|
|
272
|
-
setInputValue("");
|
|
273
|
-
setValue((prev) => require_use_calendar.updateMaybeDateValue(date, max)(prev));
|
|
274
|
-
} else if ((0, require_utils_index.utils_exports.isObject)(value) && !(0, require_utils_index.utils_exports.isDate)(value)) {
|
|
271
|
+
if ((0, require_utils_index.utils_exports.isObject)(value) && !(0, require_utils_index.utils_exports.isArray)(value) && !(0, require_utils_index.utils_exports.isDate)(value)) {
|
|
275
272
|
const align = (0, require_utils_index.utils_exports.contains)(endInputRef.current, ev$1.target) ? "end" : "start";
|
|
276
273
|
const date = stringToDate(inputValue$1, value.start && align === "end" ? (0, dayjs.default)(value.start).add(1, "day").toDate() : void 0, value.end && align === "start" ? (0, dayjs.default)(value.end).subtract(1, "day").toDate() : void 0);
|
|
277
274
|
if (!date) return;
|
|
@@ -286,8 +283,13 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
286
283
|
const date = stringToDate(inputValue$1);
|
|
287
284
|
if (!date) return;
|
|
288
285
|
ev$1.preventDefault();
|
|
289
|
-
|
|
290
|
-
|
|
286
|
+
if ((0, require_utils_index.utils_exports.isArray)(value)) {
|
|
287
|
+
setInputValue("");
|
|
288
|
+
setValue((prev) => (0, require_utils_index.utils_exports.isArray)(prev) && !require_use_calendar.isIncludeDates(date, prev) && (!(0, require_utils_index.utils_exports.isNumber)(max) || prev.length < max) ? [...prev, date] : prev);
|
|
289
|
+
} else {
|
|
290
|
+
setInputValue(dateToString(date));
|
|
291
|
+
setValue(date);
|
|
292
|
+
}
|
|
291
293
|
}
|
|
292
294
|
}
|
|
293
295
|
}, { preventDefault: false });
|
|
@@ -304,20 +306,22 @@ const useDatePicker = ({ maxDate = require_use_calendar.DEFAULT_MAX_DATE, minDat
|
|
|
304
306
|
const onClick = (0, react.useCallback)((ev) => {
|
|
305
307
|
if (!interactive) return;
|
|
306
308
|
focusByClickRef.current = true;
|
|
307
|
-
if (allowInput) if ((0, require_utils_index.utils_exports.isObject)(value) && !(0, require_utils_index.utils_exports.isArray)(value) && !(0, require_utils_index.utils_exports.isDate)(value)) {
|
|
308
|
-
if ((0, require_utils_index.utils_exports.
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if (!
|
|
312
|
-
|
|
309
|
+
if (allowInput) if ((0, require_utils_index.utils_exports.isObject)(value) && !(0, require_utils_index.utils_exports.isArray)(value) && !(0, require_utils_index.utils_exports.isDate)(value)) if (startInputRef.current && (0, require_utils_index.utils_exports.contains)(startInputRef.current, ev.target)) {
|
|
310
|
+
if (!(0, require_utils_index.utils_exports.isActiveElement)(startInputRef.current, getDocument())) ev.defaultPrevented = true;
|
|
311
|
+
startInputRef.current.focus();
|
|
312
|
+
} else if (endInputRef.current && (0, require_utils_index.utils_exports.contains)(endInputRef.current, ev.target)) {
|
|
313
|
+
if (!(0, require_utils_index.utils_exports.isActiveElement)(endInputRef.current, getDocument())) ev.defaultPrevented = true;
|
|
314
|
+
endInputRef.current.focus();
|
|
313
315
|
} else startInputRef.current?.focus();
|
|
316
|
+
else startInputRef.current?.focus();
|
|
314
317
|
if (openOnClick) onOpen();
|
|
315
318
|
}, [
|
|
316
319
|
allowInput,
|
|
317
320
|
interactive,
|
|
318
321
|
onOpen,
|
|
319
322
|
openOnClick,
|
|
320
|
-
value
|
|
323
|
+
value,
|
|
324
|
+
getDocument
|
|
321
325
|
]);
|
|
322
326
|
const onMouseDown = (0, react.useCallback)((ev) => {
|
|
323
327
|
if (!openOnFocus) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-date-picker.cjs","names":["defaultRender: DatePickerRender","DEFAULT_MAX_DATE","DEFAULT_MIN_DATE","useI18n","useFieldProps","useDateTimeFormat","inputFormat","calendarFormat","useCalendarProps","useControllableState","value","getAdjustedMonth","isBeforeDate","isAfterDate","useCombobox","onClear","updateMaybeDateValue","startPlaceholder","inputValue","minDate","maxDate","isComposing","ev","getRootProps: PropGetter","props","getFieldProps: PropGetter","mergeRefs","ref","getInputProps: PropGetter<\"input\", { align?: InputAlign }>","inputProps: HTMLProps<\"input\">","visuallyHiddenAttributes","getContentProps: PropGetter","getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>>","getIconProps: PropGetter","runKeyAction"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let value = defaultMonth\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n value = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n value = getAdjustedMonth(valueProp, value)\n } else if (defaultValue) {\n value = getAdjustedMonth(defaultValue, value)\n }\n\n return value\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue) {\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid()) {\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n } else {\n return defaultInputValue as MaybeInputValue<Range>\n }\n }\n } else if (isDate(value)) {\n return dateToString(value) as MaybeInputValue<Range>\n } else if (isObject(value) && !isArray(value)) {\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n } else {\n return \"\" as MaybeInputValue<Range>\n }\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs().add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput) {\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (contains(startInputRef.current, ev.target)) return\n if (contains(endInputRef.current, ev.target)) return\n\n const { end, start } = value\n\n if ((!start && !end) || !!end) {\n startInputRef.current?.focus()\n } else {\n endInputRef.current?.focus()\n }\n } else {\n startInputRef.current?.focus()\n }\n }\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n }\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) {\n return undefined as MaybeDateValue<Multiple, Range>\n } else if (isArray(prev)) {\n return [] as unknown as MaybeDateValue<Multiple, Range>\n } else if (isObject(prev)) {\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n } else {\n return prev\n }\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear) {\n if (allowInput) {\n startInputRef.current?.focus()\n } else {\n fieldRef.current?.focus()\n }\n }\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp)) {\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-date-picker.cjs","names":["defaultRender: DatePickerRender","DEFAULT_MAX_DATE","DEFAULT_MIN_DATE","useEnvironment","useI18n","useFieldProps","useDateTimeFormat","inputFormat","calendarFormat","useCalendarProps","useControllableState","value","getAdjustedMonth","isBeforeDate","isAfterDate","useCombobox","onClear","updateMaybeDateValue","startPlaceholder","inputValue","minDate","maxDate","isComposing","ev","isIncludeDates","getRootProps: PropGetter","props","getFieldProps: PropGetter","mergeRefs","ref","getInputProps: PropGetter<\"input\", { align?: InputAlign }>","inputProps: HTMLProps<\"input\">","visuallyHiddenAttributes","getContentProps: PropGetter","getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>>","getIconProps: PropGetter","runKeyAction"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isActiveElement,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n isIncludeDates,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { getDocument } = useEnvironment()\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let value = defaultMonth\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n value = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n value = getAdjustedMonth(valueProp, value)\n } else if (defaultValue) {\n value = getAdjustedMonth(defaultValue, value)\n }\n\n return value\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue) {\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid()) {\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n } else {\n return defaultInputValue as MaybeInputValue<Range>\n }\n }\n } else if (isDate(value)) {\n return dateToString(value) as MaybeInputValue<Range>\n } else if (isObject(value) && !isArray(value)) {\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n } else {\n return \"\" as MaybeInputValue<Range>\n }\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs().add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue((prev) =>\n isArray(prev) &&\n !isIncludeDates(date, prev) &&\n (!isNumber(max) || prev.length < max)\n ? ([...prev, date] as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput) {\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (\n startInputRef.current &&\n contains(startInputRef.current, ev.target)\n ) {\n if (!isActiveElement(startInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n startInputRef.current.focus()\n } else if (\n endInputRef.current &&\n contains(endInputRef.current, ev.target)\n ) {\n if (!isActiveElement(endInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n endInputRef.current.focus()\n } else {\n startInputRef.current?.focus()\n }\n } else {\n startInputRef.current?.focus()\n }\n }\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value, getDocument],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n }\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) {\n return undefined as MaybeDateValue<Multiple, Range>\n } else if (isArray(prev)) {\n return [] as unknown as MaybeDateValue<Multiple, Range>\n } else if (isObject(prev)) {\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n } else {\n return prev\n }\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear) {\n if (allowInput) {\n startInputRef.current?.focus()\n } else {\n fieldRef.current?.focus()\n }\n }\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp)) {\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ import { isComposing, runKeyAction, visuallyHiddenAttributes } from "../../utils
|
|
|
4
4
|
import { useUpdateEffect } from "../../utils/effect.js";
|
|
5
5
|
import { mergeRefs } from "../../utils/ref.js";
|
|
6
6
|
import { utils_exports } from "../../utils/index.js";
|
|
7
|
+
import { useEnvironment } from "../../core/system/environment-provider.js";
|
|
8
|
+
import "../../core/index.js";
|
|
7
9
|
import { useControllableState } from "../../hooks/use-controllable-state/index.js";
|
|
8
10
|
import { useI18n } from "../../providers/i18n-provider/i18n-provider.js";
|
|
9
11
|
import "../../providers/i18n-provider/index.js";
|
|
@@ -12,7 +14,7 @@ import "../field/index.js";
|
|
|
12
14
|
import { useCombobox } from "../../hooks/use-combobox/index.js";
|
|
13
15
|
import { useDateTimeFormat } from "../format/use-format-date-time.js";
|
|
14
16
|
import "../format/index.js";
|
|
15
|
-
import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE, getAdjustedMonth, isAfterDate, isBeforeDate, updateMaybeDateValue, useCalendarProps } from "../calendar/use-calendar.js";
|
|
17
|
+
import { DEFAULT_MAX_DATE, DEFAULT_MIN_DATE, getAdjustedMonth, isAfterDate, isBeforeDate, isIncludeDates, updateMaybeDateValue, useCalendarProps } from "../calendar/use-calendar.js";
|
|
16
18
|
import "../calendar/index.js";
|
|
17
19
|
import { cloneElement, isValidElement, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
18
20
|
import { jsxs } from "react/jsx-runtime";
|
|
@@ -28,6 +30,7 @@ const defaultRender = ({ count, focused, index, max, separator, value }) => {
|
|
|
28
30
|
};
|
|
29
31
|
const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE, ...props } = {}) => {
|
|
30
32
|
if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate;
|
|
33
|
+
const { getDocument } = useEnvironment();
|
|
31
34
|
const { locale: defaultLocale, t } = useI18n("datePicker");
|
|
32
35
|
const { props: { id, ref, name, allowInput = true, allowInputBeyond = false, closeOnChange = false, multiple = false, closeOnSelect = !multiple, defaultInputValue, defaultMonth = /* @__PURE__ */ new Date(), range = false, defaultValue = range ? {
|
|
33
36
|
end: void 0,
|
|
@@ -263,13 +266,7 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
|
|
|
263
266
|
},
|
|
264
267
|
Enter: (ev$1) => {
|
|
265
268
|
if (!open || !inputValue$1.length) return;
|
|
266
|
-
if ((0, utils_exports.isArray)(value)) {
|
|
267
|
-
const date = stringToDate(inputValue$1);
|
|
268
|
-
if (!date) return;
|
|
269
|
-
ev$1.preventDefault();
|
|
270
|
-
setInputValue("");
|
|
271
|
-
setValue((prev) => updateMaybeDateValue(date, max)(prev));
|
|
272
|
-
} else if ((0, utils_exports.isObject)(value) && !(0, utils_exports.isDate)(value)) {
|
|
269
|
+
if ((0, utils_exports.isObject)(value) && !(0, utils_exports.isArray)(value) && !(0, utils_exports.isDate)(value)) {
|
|
273
270
|
const align = (0, utils_exports.contains)(endInputRef.current, ev$1.target) ? "end" : "start";
|
|
274
271
|
const date = stringToDate(inputValue$1, value.start && align === "end" ? dayjs(value.start).add(1, "day").toDate() : void 0, value.end && align === "start" ? dayjs(value.end).subtract(1, "day").toDate() : void 0);
|
|
275
272
|
if (!date) return;
|
|
@@ -284,8 +281,13 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
|
|
|
284
281
|
const date = stringToDate(inputValue$1);
|
|
285
282
|
if (!date) return;
|
|
286
283
|
ev$1.preventDefault();
|
|
287
|
-
|
|
288
|
-
|
|
284
|
+
if ((0, utils_exports.isArray)(value)) {
|
|
285
|
+
setInputValue("");
|
|
286
|
+
setValue((prev) => (0, utils_exports.isArray)(prev) && !isIncludeDates(date, prev) && (!(0, utils_exports.isNumber)(max) || prev.length < max) ? [...prev, date] : prev);
|
|
287
|
+
} else {
|
|
288
|
+
setInputValue(dateToString(date));
|
|
289
|
+
setValue(date);
|
|
290
|
+
}
|
|
289
291
|
}
|
|
290
292
|
}
|
|
291
293
|
}, { preventDefault: false });
|
|
@@ -302,20 +304,22 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
|
|
|
302
304
|
const onClick = useCallback((ev) => {
|
|
303
305
|
if (!interactive) return;
|
|
304
306
|
focusByClickRef.current = true;
|
|
305
|
-
if (allowInput) if ((0, utils_exports.isObject)(value) && !(0, utils_exports.isArray)(value) && !(0, utils_exports.isDate)(value)) {
|
|
306
|
-
if ((0, utils_exports.
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
if (!
|
|
310
|
-
|
|
307
|
+
if (allowInput) if ((0, utils_exports.isObject)(value) && !(0, utils_exports.isArray)(value) && !(0, utils_exports.isDate)(value)) if (startInputRef.current && (0, utils_exports.contains)(startInputRef.current, ev.target)) {
|
|
308
|
+
if (!(0, utils_exports.isActiveElement)(startInputRef.current, getDocument())) ev.defaultPrevented = true;
|
|
309
|
+
startInputRef.current.focus();
|
|
310
|
+
} else if (endInputRef.current && (0, utils_exports.contains)(endInputRef.current, ev.target)) {
|
|
311
|
+
if (!(0, utils_exports.isActiveElement)(endInputRef.current, getDocument())) ev.defaultPrevented = true;
|
|
312
|
+
endInputRef.current.focus();
|
|
311
313
|
} else startInputRef.current?.focus();
|
|
314
|
+
else startInputRef.current?.focus();
|
|
312
315
|
if (openOnClick) onOpen();
|
|
313
316
|
}, [
|
|
314
317
|
allowInput,
|
|
315
318
|
interactive,
|
|
316
319
|
onOpen,
|
|
317
320
|
openOnClick,
|
|
318
|
-
value
|
|
321
|
+
value,
|
|
322
|
+
getDocument
|
|
319
323
|
]);
|
|
320
324
|
const onMouseDown = useCallback((ev) => {
|
|
321
325
|
if (!openOnFocus) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-date-picker.js","names":["defaultRender: DatePickerRender","inputFormat","calendarFormat","value","onClear","startPlaceholder","inputValue","minDate","maxDate","ev","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\", { align?: InputAlign }>","inputProps: HTMLProps<\"input\">","getContentProps: PropGetter","getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>>","getIconProps: PropGetter"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let value = defaultMonth\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n value = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n value = getAdjustedMonth(valueProp, value)\n } else if (defaultValue) {\n value = getAdjustedMonth(defaultValue, value)\n }\n\n return value\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue) {\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid()) {\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n } else {\n return defaultInputValue as MaybeInputValue<Range>\n }\n }\n } else if (isDate(value)) {\n return dateToString(value) as MaybeInputValue<Range>\n } else if (isObject(value) && !isArray(value)) {\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n } else {\n return \"\" as MaybeInputValue<Range>\n }\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs().add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput) {\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (contains(startInputRef.current, ev.target)) return\n if (contains(endInputRef.current, ev.target)) return\n\n const { end, start } = value\n\n if ((!start && !end) || !!end) {\n startInputRef.current?.focus()\n } else {\n endInputRef.current?.focus()\n }\n } else {\n startInputRef.current?.focus()\n }\n }\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n }\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) {\n return undefined as MaybeDateValue<Multiple, Range>\n } else if (isArray(prev)) {\n return [] as unknown as MaybeDateValue<Multiple, Range>\n } else if (isObject(prev)) {\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n } else {\n return prev\n }\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear) {\n if (allowInput) {\n startInputRef.current?.focus()\n } else {\n fieldRef.current?.focus()\n }\n }\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp)) {\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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ACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAEH,MAAMK,kBAA8B,aACjC,EAAE,YAAK,GAAGL,YAAU,EAAE,KACrB,wBAAwB;EACtB,KAAK,UAAUE,OAAK,WAAW;EAC/B,MAAM;EACN,GAAGF;EACJ,CAAC,EACJ,CAAC,wBAAwB,CAC1B;CAED,MAAMM,mBACJ,aACG,aACE;EACC,UAAU,CAAC;EACX,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,GAAG;EACH,GAAGN;EACJ,GACH;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAEH,MAAMO,eAA2B,aAC9B,aAAW;EAAE,GAAG;EAAW,GAAGP;EAAO,GACtC,CAAC,UAAU,CACZ;AAkBD,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBA/BoC,aACnC,UAAQ,EAAE,KACT,aAAa;GACX,6CAA0B,CAAC,YAAY;GACvC,cAAc,EAAE,cAAc;GAC9B,MAAM;GACN,UAAU,cAAc,IAAI;GAC5B,GAAGA;GACH,uCAAoBA,QAAM,SAAS,QAAQ;GAC3C,yCAAsBA,QAAM,YAAY,OACtC,aAAa,IAAI;IAAE,OAAO;IAAS,OAAO;IAAS,CAAC,CACrD;GACF,CAAC,EACJ;GAAC;GAAc;GAAa;GAAS;GAAE,CACxC;EAkBC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
|
|
1
|
+
{"version":3,"file":"use-date-picker.js","names":["defaultRender: DatePickerRender","inputFormat","calendarFormat","value","onClear","startPlaceholder","inputValue","minDate","maxDate","ev","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\", { align?: InputAlign }>","inputProps: HTMLProps<\"input\">","getContentProps: PropGetter","getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>>","getIconProps: PropGetter"],"sources":["../../../../src/components/date-picker/use-date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type { UseComboboxProps } from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type {\n CalendarFormat,\n MaybeDateValue,\n UseCalendarProps,\n} from \"../calendar\"\nimport type { FieldProps } from \"../field\"\nimport dayjs from \"dayjs\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { useCombobox } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n dataAttr,\n focusTransfer,\n handlerAll,\n isActiveElement,\n isArray,\n isComposing,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport {\n DEFAULT_MAX_DATE,\n DEFAULT_MIN_DATE,\n getAdjustedMonth,\n isAfterDate,\n isBeforeDate,\n isIncludeDates,\n updateMaybeDateValue,\n useCalendarProps,\n} from \"../calendar\"\nimport { useFieldProps } from \"../field\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport interface DatePickerFormat extends CalendarFormat {\n input?: Intl.DateTimeFormatOptions | null\n}\n\ntype InputAlign = \"end\" | \"start\"\ntype MaybeInputValue<Range extends boolean = false> = Range extends true\n ? { end?: string; start?: string }\n : string | undefined\n\ninterface DatePickerRenderProps {\n count: number\n date: Date\n focused: boolean\n index: number\n separator: string\n value: string\n onClear: () => void\n max?: number\n}\n\nexport interface DatePickerRender {\n (props: DatePickerRenderProps): ReactNode\n}\n\nconst defaultRender: DatePickerRender = ({\n count,\n focused,\n index,\n max,\n separator,\n value,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {value}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nexport interface UseDatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<UseCalendarProps<Multiple, Range>, \"format\" | \"ref\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, allows input.\n *\n * @default true\n */\n allowInput?: boolean\n /**\n * If `true`, allows input of dates beyond the `minDate` and `maxDate` restrictions.\n *\n * @default true\n */\n allowInputBeyond?: boolean\n /**\n * If `true`, the date picker will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: MaybeInputValue<Range>\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: DatePickerFormat\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: MaybeInputValue<Range>\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the date picker will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the date picker will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The pattern used to check the input element.\n */\n pattern?: RegExp\n /**\n * The placeholder for date picker.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: MaybeInputValue<Range>) => void\n /**\n * Function that converts the input value to Date type.\n */\n parseDate?: (value: string) => Date | undefined\n /**\n * The function to render the selected date.\n */\n render?: (props: DatePickerRenderProps) => ReactNode\n}\n\nexport const useDatePicker = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n ...props\n}: UseDatePickerProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { getDocument } = useEnvironment()\n const { locale: defaultLocale, t } = useI18n(\"datePicker\")\n const {\n props: {\n id,\n ref,\n name,\n allowInput = true,\n allowInputBeyond = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultMonth = new Date(),\n range = false,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled,\n focusOnClear = true,\n format,\n inputValue: inputValueProp,\n locale = defaultLocale,\n max,\n month: monthProp,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n parseDate,\n pattern,\n placeholder: placeholderProp,\n placement = \"end-start\",\n readOnly,\n render = defaultRender,\n required,\n separator = range ? \"-\" : \",\",\n value: valueProp,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n onInputChange: onInputChangeProp,\n ...computedProps\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const dateTimeFormat = useDateTimeFormat({ locale })\n const { calendarFormat, inputFormat } = useMemo(() => {\n const { input: inputFormat, ...calendarFormat } = format ?? {}\n const defaultInputFormat: Intl.DateTimeFormatOptions = {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }\n\n return {\n calendarFormat,\n inputFormat:\n inputFormat !== null ? (inputFormat ?? defaultInputFormat) : undefined,\n }\n }, [format])\n const [calendarProps, rest] = useCalendarProps<Multiple, Range>(computedProps)\n const { excludeDate } = calendarProps\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const startInputRef = useRef<HTMLInputElement>(null)\n const endInputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue as MaybeDateValue<Multiple, Range>,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n let value = defaultMonth\n\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n value = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n value = getAdjustedMonth(valueProp, value)\n } else if (defaultValue) {\n value = getAdjustedMonth(defaultValue, value)\n }\n\n return value\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const stringToDate = useCallback(\n (value: string, start: Date = minDate, end: Date = maxDate) => {\n let date = parseDate?.(value)\n\n if (!date && dayjs(value).isValid())\n date = dayjs(value).locale(locale).toDate()\n\n if (date == null) return undefined\n if (excludeDate?.(date)) return undefined\n\n if (!allowInputBeyond) {\n if (isBeforeDate(date, start)) date = start\n if (isAfterDate(date, end)) date = end\n }\n\n return date\n },\n [allowInputBeyond, excludeDate, locale, maxDate, minDate, parseDate],\n )\n const dateToString = useCallback(\n (date?: Date) => {\n if (date == null) return \"\"\n\n return dateTimeFormat(date, inputFormat)\n },\n [dateTimeFormat, inputFormat],\n )\n const [inputValue, setInputValue] = useControllableState({\n defaultValue: () => {\n if (defaultInputValue) {\n if (isObject(defaultInputValue)) {\n if (dayjs(defaultInputValue.start).isValid())\n defaultInputValue.start = dateTimeFormat(\n dayjs(defaultInputValue.start).toDate(),\n inputFormat,\n )\n\n if (dayjs(defaultInputValue.end).isValid())\n defaultInputValue.end = dateTimeFormat(\n dayjs(defaultInputValue.end).toDate(),\n inputFormat,\n )\n\n return defaultInputValue\n } else {\n if (dayjs(defaultInputValue).isValid()) {\n return dateTimeFormat(\n dayjs(defaultInputValue).toDate(),\n inputFormat,\n ) as MaybeInputValue<Range>\n } else {\n return defaultInputValue as MaybeInputValue<Range>\n }\n }\n } else if (isDate(value)) {\n return dateToString(value) as MaybeInputValue<Range>\n } else if (isObject(value) && !isArray(value)) {\n return {\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>\n } else {\n return \"\" as MaybeInputValue<Range>\n }\n },\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const {\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getTriggerProps,\n popoverProps,\n onClose,\n onOpen,\n } = useCombobox({\n disabled,\n matchWidth: false,\n openOnClick: false,\n openOnEnter: !allowInput,\n openOnSpace: !allowInput,\n placement,\n readOnly,\n transferFocus: false,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((date, index) => {\n const value = dateToString(date)\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n setValue(\n (prev) =>\n updateMaybeDateValue(date, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n }\n\n const component = render({\n count,\n date,\n focused,\n index,\n max,\n separator,\n value,\n onClear,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [dateToString, focused, max, render, separator, setValue, value])\n const { endPlaceholder, startPlaceholder } = useMemo(() => {\n if (range) {\n const startPlaceholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n const endPlaceholder =\n placeholderProp ??\n dateTimeFormat(dayjs().add(1, \"day\").toDate(), inputFormat)\n\n return { endPlaceholder, startPlaceholder }\n } else {\n const placeholder =\n placeholderProp ?? dateTimeFormat(new Date(), inputFormat)\n\n return { endPlaceholder: placeholder, startPlaceholder: placeholder }\n }\n }, [dateTimeFormat, inputFormat, placeholderProp, range])\n\n const onChange = useCallback(\n (value: MaybeDateValue<Multiple, Range>) => {\n setValue(value)\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n\n if (!closeOnSelect) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (value.end && value.start) onClose()\n } else {\n onClose()\n }\n },\n [setValue, closeOnSelect, setInputValue, dateToString, onClose],\n )\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!allowInput) return\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n let inputValue = ev.target.value\n\n if (pattern) inputValue = inputValue.replace(pattern, \"\")\n\n if (isArray(value)) {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n\n if (date) setMonth(dayjs(date).set(\"date\", 1).toDate())\n } else if (isObject(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target) ? \"end\" : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: inputValue })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev) ? { ...prev, [align]: date } : prev,\n )\n } else {\n const date = stringToDate(inputValue)\n\n setInputValue(inputValue as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n },\n [\n allowInput,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n pattern,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (isArray(value)) {\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) =>\n isArray(prev)\n ? (prev.slice(0, -1) as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else if (isObject(value) && !isDate(value)) {\n if (inputValue.length) return\n if (!contains(endInputRef.current, ev.target)) return\n\n ev.preventDefault()\n\n setInputValue({ end: \"\", start: \"\" } as MaybeInputValue<Range>)\n setValue({ end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >)\n\n startInputRef.current?.focus()\n }\n },\n Enter: (ev) => {\n if (!open || !inputValue.length) return\n\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n const align = contains(endInputRef.current, ev.target)\n ? \"end\"\n : \"start\"\n const minDate =\n value.start && align === \"end\"\n ? dayjs(value.start).add(1, \"day\").toDate()\n : undefined\n const maxDate =\n value.end && align === \"start\"\n ? dayjs(value.end).subtract(1, \"day\").toDate()\n : undefined\n const date = stringToDate(inputValue, minDate, maxDate)\n\n if (!date) return\n\n ev.preventDefault()\n\n setInputValue((prev) =>\n isObject(prev)\n ? Object.assign({}, prev, { [align]: dateToString(date) })\n : prev,\n )\n setValue((prev) =>\n isObject(prev) && !isDate(prev)\n ? { ...prev, [align]: date }\n : prev,\n )\n\n if (align === \"start\") endInputRef.current?.focus()\n } else {\n const date = stringToDate(inputValue)\n\n if (!date) return\n\n ev.preventDefault()\n\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n\n setValue((prev) =>\n isArray(prev) &&\n !isIncludeDates(date, prev) &&\n (!isNumber(max) || prev.length < max)\n ? ([...prev, date] as MaybeDateValue<Multiple, Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(date) as MaybeInputValue<Range>)\n setValue(date as MaybeDateValue<Multiple, Range>)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n dateToString,\n disabled,\n max,\n open,\n setInputValue,\n setValue,\n stringToDate,\n value,\n ],\n )\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n if (allowInput) {\n if (isObject(value) && !isArray(value) && !isDate(value)) {\n if (\n startInputRef.current &&\n contains(startInputRef.current, ev.target)\n ) {\n if (!isActiveElement(startInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n startInputRef.current.focus()\n } else if (\n endInputRef.current &&\n contains(endInputRef.current, ev.target)\n ) {\n if (!isActiveElement(endInputRef.current, getDocument()!))\n ev.defaultPrevented = true\n\n endInputRef.current.focus()\n } else {\n startInputRef.current?.focus()\n }\n } else {\n startInputRef.current?.focus()\n }\n }\n\n if (openOnClick) onOpen()\n },\n [allowInput, interactive, onOpen, openOnClick, value, getDocument],\n )\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLDivElement | HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFieldFocus = useCallback(() => {\n if (allowInput) return\n\n if (openOnFocus) onOpen()\n\n focusByClickRef.current = false\n }, [allowInput, onOpen, openOnFocus])\n\n const onInputFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current) onOpen()\n\n focusByClickRef.current = false\n },\n [onOpen, openOnFocus],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n setFocused(false)\n\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n if (isArray(value)) {\n setInputValue(\"\" as MaybeInputValue<Range>)\n } else if (isObject(value) && !isDate(value)) {\n setInputValue((prev) =>\n isObject(prev)\n ? ({\n end: dateToString(value.end),\n start: dateToString(value.start),\n } as MaybeInputValue<Range>)\n : prev,\n )\n } else {\n setInputValue(dateToString(value) as MaybeInputValue<Range>)\n }\n }\n },\n [dateToString, setInputValue, value],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => {\n if (isDate(prev)) {\n return undefined as MaybeDateValue<Multiple, Range>\n } else if (isArray(prev)) {\n return [] as unknown as MaybeDateValue<Multiple, Range>\n } else if (isObject(prev)) {\n return { end: undefined, start: undefined } as MaybeDateValue<\n Multiple,\n Range\n >\n } else {\n return prev\n }\n })\n\n setInputValue(\n (range ? { end: \"\", start: \"\" } : \"\") as MaybeInputValue<Range>,\n )\n\n if (focusOnClear) {\n if (allowInput) {\n startInputRef.current?.focus()\n } else {\n fieldRef.current?.focus()\n }\n }\n }, [allowInput, focusOnClear, interactive, range, setInputValue, setValue])\n\n useEffect(() => {\n if (!open) return\n\n return focusTransfer(\n contentRef.current,\n allowInput ? startInputRef.current : fieldRef.current,\n )\n }, [allowInput, open])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value, range])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n if (isObject(valueProp) && !isDate(valueProp)) {\n setInputValue({\n end: dateToString(valueProp.end),\n start: dateToString(valueProp.start),\n } as MaybeInputValue<Range>)\n } else {\n setInputValue(dateToString(valueProp) as MaybeInputValue<Range>)\n }\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n \"data-range\": dataAttr(range),\n ...dataProps,\n ...props,\n }),\n [dataProps, range],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n \"aria-haspopup\": \"dialog\",\n tabIndex: !allowInput ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, onFieldFocus),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n\n [allowInput, getTriggerProps, onClick, onFieldFocus, onMouseDown],\n )\n\n const getInputProps: PropGetter<\"input\", { align?: InputAlign }> =\n useCallback(\n ({ align = \"start\", ...props } = {}) => {\n const inputProps: HTMLProps<\"input\"> = {\n style: {\n ...(!allowInput ? { pointerEvents: \"none\" } : {}),\n ...props.style,\n },\n autoComplete: \"off\",\n disabled,\n readOnly,\n required,\n tabIndex: allowInput ? 0 : -1,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onInputFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }\n\n if (isObject(inputValue)) {\n if (align === \"start\") {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue.start\n inputProps.placeholder = startPlaceholder\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, endInputRef)\n inputProps.value = inputValue.end\n inputProps.placeholder = endPlaceholder\n }\n\n if (!inputValue.start && align === \"start\") {\n inputProps.id = id\n inputProps.name = name\n }\n\n if (!!inputValue.start && align === \"end\") {\n inputProps.id = id\n inputProps.name = name\n }\n } else {\n inputProps.ref = mergeRefs(props.ref, ref, startInputRef)\n inputProps.value = inputValue\n inputProps.id = id\n inputProps.name = name\n\n if (isArray(value)) {\n inputProps.style = {\n ...(!focused && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...inputProps.style,\n }\n inputProps.placeholder = !value.length\n ? startPlaceholder\n : undefined\n inputProps[\"data-max\"] = dataAttr(\n isNumber(max) && value.length >= max,\n )\n } else {\n inputProps.placeholder = startPlaceholder\n }\n }\n\n return inputProps\n },\n [\n allowInput,\n dataProps,\n disabled,\n endPlaceholder,\n focused,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onInputFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n readOnly,\n ref,\n required,\n startPlaceholder,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n role: \"dialog\",\n ...props,\n }),\n [getComboboxContentProps],\n )\n\n const getCalendarProps: PropGetter<UseCalendarProps<Multiple, Range>> =\n useCallback(\n (props) =>\n ({\n disabled: !interactive,\n format: calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n onChangeMonth: setMonth,\n ...calendarProps,\n ...props,\n }) as UseCalendarProps<Multiple, Range>,\n [\n interactive,\n calendarFormat,\n locale,\n max,\n maxDate,\n minDate,\n month,\n multiple,\n range,\n value,\n onChange,\n setMonth,\n calendarProps,\n ],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n dateToString,\n inputValue,\n interactive,\n month,\n open,\n range,\n separator,\n setInputValue,\n setMonth,\n setValue,\n stringToDate,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n }\n}\n\nexport type UseDatePickerReturn = ReturnType<typeof useDatePicker>\n"],"mappings":"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,eAAW,cAAc,CAAC,MAAM,SAC5B,mBACA;AACJ,eAAW,sEACA,IAAI,IAAI,MAAM,UAAU,IAClC;SAED,YAAW,cAAc;;AAI7B,SAAO;IAET;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAEH,MAAMK,kBAA8B,aACjC,EAAE,YAAK,GAAGL,YAAU,EAAE,KACrB,wBAAwB;EACtB,KAAK,UAAUE,OAAK,WAAW;EAC/B,MAAM;EACN,GAAGF;EACJ,CAAC,EACJ,CAAC,wBAAwB,CAC1B;CAED,MAAMM,mBACJ,aACG,aACE;EACC,UAAU,CAAC;EACX,QAAQ;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAAe;EACf,GAAG;EACH,GAAGN;EACJ,GACH;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAEH,MAAMO,eAA2B,aAC9B,aAAW;EAAE,GAAG;EAAW,GAAGP;EAAO,GACtC,CAAC,UAAU,CACZ;AAkBD,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,mBA/BoC,aACnC,UAAQ,EAAE,KACT,aAAa;GACX,6CAA0B,CAAC,YAAY;GACvC,cAAc,EAAE,cAAc;GAC9B,MAAM;GACN,UAAU,cAAc,IAAI;GAC5B,GAAGA;GACH,uCAAoBA,QAAM,SAAS,QAAQ;GAC3C,yCAAsBA,QAAM,YAAY,OACtC,aAAa,IAAI;IAAE,OAAO;IAAS,OAAO;IAAS,CAAC,CACrD;GACF,CAAC,EACJ;GAAC;GAAc;GAAa;GAAS;GAAE,CACxC;EAkBC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
|
|
@@ -9,7 +9,7 @@ import "../collapse/index.js";
|
|
|
9
9
|
import "../../index.js";
|
|
10
10
|
import { AccordionStyle } from "./accordion.style.js";
|
|
11
11
|
import { UseAccordionItemProps, UseAccordionProps } from "./use-accordion.js";
|
|
12
|
-
import * as
|
|
12
|
+
import * as react303 from "react";
|
|
13
13
|
|
|
14
14
|
//#region src/components/accordion/accordion.d.ts
|
|
15
15
|
interface AccordionCallBackProps {
|
|
@@ -33,7 +33,7 @@ interface AccordionRootProps extends Omit<HTMLStyledProps, "onChange">, ThemePro
|
|
|
33
33
|
*/
|
|
34
34
|
items?: AccordionItem[];
|
|
35
35
|
}
|
|
36
|
-
declare const AccordionPropsContext:
|
|
36
|
+
declare const AccordionPropsContext: react303.Context<Partial<AccordionRootProps> | undefined>, useAccordionPropsContext: () => Partial<AccordionRootProps> | undefined;
|
|
37
37
|
/**
|
|
38
38
|
* `Accordion` is a component for a list that displays information in an expandable or collapsible manner.
|
|
39
39
|
*
|