@servicetitan/anvil2 1.40.2 → 1.40.3
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/CHANGELOG.md +15 -0
- package/dist/{DateField-CfNLRY0D.js → DateField-BQFAvS78.js} +6 -3
- package/dist/DateField-BQFAvS78.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-DtppOifM-DZvtSHar.js → DateFieldRange-BRjBcR4r-CfuSiOfZ.js} +137 -11
- package/dist/{DateFieldRange-DtppOifM-DZvtSHar.js.map → DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map} +1 -1
- package/dist/{DateFieldRange-BEL4Jdy8.js → DateFieldRange-CGA5ZTRa.js} +2 -2
- package/dist/{DateFieldRange-BEL4Jdy8.js.map → DateFieldRange-CGA5ZTRa.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CJ6j0p1L.js → DateFieldSingle-eP5l_TrQ.js} +2 -2
- package/dist/{DateFieldSingle-CJ6j0p1L.js.map → DateFieldSingle-eP5l_TrQ.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/index.js +3 -3
- package/dist/usePopoverCloseDelayWorkaround-BhhG-xEB-hfJZaXHC.js +21 -0
- package/dist/usePopoverCloseDelayWorkaround-BhhG-xEB-hfJZaXHC.js.map +1 -0
- package/package.json +2 -2
- package/dist/DateField-CfNLRY0D.js.map +0 -1
- package/dist/event-BEJFimi3.js +0 -6
- package/dist/event-BEJFimi3.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @servicetitan/anvil2
|
|
2
2
|
|
|
3
|
+
## 1.40.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1373](https://github.com/servicetitan/hammer/pull/1373) [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateField, DateFieldSingle, DateFieldRange] Tweak conditional rendering of popover content
|
|
8
|
+
|
|
9
|
+
- [#1373](https://github.com/servicetitan/hammer/pull/1373) [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateFieldSingle, DateFieldRange] Reduce number of excess `onChange` calls
|
|
10
|
+
|
|
11
|
+
- [#1373](https://github.com/servicetitan/hammer/pull/1373) [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateField, DateFieldSingle, DateFieldRange] Restrict calendar positioning to verticial axis
|
|
12
|
+
|
|
13
|
+
- [#1373](https://github.com/servicetitan/hammer/pull/1373) [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf) Thanks [@AdamLantz](https://github.com/AdamLantz)! - [DateFieldSingle, DateFieldRange] Update `onFocus` and `onBlur` to treat calendar as part of the focus area
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [[`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf), [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf), [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf), [`d617c5f`](https://github.com/servicetitan/hammer/commit/d617c5f2a70e9b1cc6671cf1d317a5e3b3eec3cf)]:
|
|
16
|
+
- @servicetitan/hammer-react@1.38.3
|
|
17
|
+
|
|
3
18
|
## 1.40.2
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -5,7 +5,7 @@ import { c as childrenToString } from './childrenToString-Bz9MqbHb-Bz9MqbHb.js';
|
|
|
5
5
|
import { I as InputMask } from './InputMask-Hn-xudp1-BKhtZ7Zk.js';
|
|
6
6
|
import { D as DateTime, i as isValidDate, t as toDateString, f as Calendar } from './Calendar-KVYGk3wS-CEptqxjI.js';
|
|
7
7
|
import { I as Icon } from './Icon-B6HmlQiR-BxQkO3X5.js';
|
|
8
|
-
import { S as SvgEvent } from './
|
|
8
|
+
import { S as SvgEvent, u as usePopoverCloseDelayWorkaround } from './usePopoverCloseDelayWorkaround-BhhG-xEB-hfJZaXHC.js';
|
|
9
9
|
import { u as useKeyboardFocusables, s as supportsPopover } from './ProgressBar-CzXzPpIX-Clg1J71o.js';
|
|
10
10
|
import { T as TextField } from './TextField-BIeCvDD--C7yp05g5.js';
|
|
11
11
|
import { e as PopoverLegacy, d as Popover } from './Popover-jcmNuir0-DjlCqU1z.js';
|
|
@@ -466,6 +466,7 @@ const DateFieldLegacy = forwardRef(
|
|
|
466
466
|
open: openCalendar || open,
|
|
467
467
|
modal: true,
|
|
468
468
|
placement: "bottom-start",
|
|
469
|
+
disableFlipFallback: true,
|
|
469
470
|
disableTriggerFocus: true,
|
|
470
471
|
disableFocusLock,
|
|
471
472
|
children: [
|
|
@@ -952,6 +953,7 @@ const DateField$1 = forwardRef(
|
|
|
952
953
|
};
|
|
953
954
|
const currentValue = getCurrentValue();
|
|
954
955
|
const popoverOpen = openCalendar ?? open;
|
|
956
|
+
const shouldShowCalendar = usePopoverCloseDelayWorkaround(popoverOpen);
|
|
955
957
|
const calendar = range ? /* @__PURE__ */ jsx(
|
|
956
958
|
Calendar,
|
|
957
959
|
{
|
|
@@ -993,6 +995,7 @@ const DateField$1 = forwardRef(
|
|
|
993
995
|
open: popoverOpen,
|
|
994
996
|
modal: true,
|
|
995
997
|
placement: "bottom-start",
|
|
998
|
+
disableFlipFallback: true,
|
|
996
999
|
disableTriggerFocus: true,
|
|
997
1000
|
onOutsidePress: handleClickOutside,
|
|
998
1001
|
children: [
|
|
@@ -1107,7 +1110,7 @@ const DateField$1 = forwardRef(
|
|
|
1107
1110
|
}
|
|
1108
1111
|
);
|
|
1109
1112
|
} }),
|
|
1110
|
-
/* @__PURE__ */ jsx(Popover.Content, { ref: popperRef, "data-calendar-popover": true, children:
|
|
1113
|
+
/* @__PURE__ */ jsx(Popover.Content, { ref: popperRef, "data-calendar-popover": true, children: shouldShowCalendar && calendar })
|
|
1111
1114
|
]
|
|
1112
1115
|
}
|
|
1113
1116
|
);
|
|
@@ -1135,4 +1138,4 @@ const DateField = forwardRef(
|
|
|
1135
1138
|
DateField.displayName = DateField$1.displayName;
|
|
1136
1139
|
|
|
1137
1140
|
export { DateField as D };
|
|
1138
|
-
//# sourceMappingURL=DateField-
|
|
1141
|
+
//# sourceMappingURL=DateField-BQFAvS78.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateField-BQFAvS78.js","sources":["../../hammer-react/dist/DateFieldLegacy-CMikSff2.js","../../hammer-react/dist/DateField-C95DlleZ.js","../src/components/DateField/DateField.tsx"],"sourcesContent":["import { jsxs, jsx, Fragment } from 'react/jsx-runtime';\nimport { forwardRef, useState, useRef, useMemo, useEffect } from 'react';\nimport { I as InputMask } from './InputMask-Hn-xudp1.js';\nimport { T as TextField } from './TextField-BIeCvDD-.js';\nimport { P as PopoverLegacy } from './PopoverLegacy-PCbbcIr-.js';\nimport { j as isValidDate, t as toDateString, C as Calendar } from './Calendar-KVYGk3wS.js';\nimport { useMergeRefs } from '@floating-ui/react';\nimport { I as Icon } from './Icon-B6HmlQiR.js';\nimport Event from '@servicetitan/hammer-icon/mdi/round/event.svg';\nimport { DateTime } from 'luxon';\n\nconst RANGE_DIVIDER = \" — \";\nconst DateFieldLegacy = forwardRef(\n ({\n // DateFieldLegacy\n openCalendar,\n onFocus,\n onBlur,\n onChange,\n format = \"MM/dd/yyyy\",\n disableHint,\n // Calendar\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n startDay,\n defaultValue,\n value: inputValue,\n // Shared\n locale = Intl.DateTimeFormat().resolvedOptions().locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,\n range,\n // Input\n required,\n ...inputProps\n }, ref) => {\n const [open, setOpen] = useState(openCalendar || false);\n const [internalValue, setInternalValue] = useState();\n const [disableFocusLock, setDisableFocusLock] = useState(true);\n const inputRef = useRef(null);\n const calRef = useRef(null);\n const iconRef = useRef(null);\n const docRef = useRef(null);\n const floatRef = useRef(null);\n const isClickOutside = useRef(false);\n const formatMask = format.replace(/[^/]/g, \"_\");\n const hint = useMemo(\n () => disableHint ? void 0 : `format: ${format.replace(/M/g, \"m\")}`,\n [format, disableHint]\n );\n useEffect(() => {\n if (!docRef.current) {\n if (document != null) {\n docRef.current = document;\n return;\n }\n const doc = inputRef.current?.closest(\"body\")?.ownerDocument;\n if (doc) {\n docRef.current = doc;\n }\n if (docRef.current == null && inputRef.current?.parentNode != null) {\n let node = inputRef.current?.parentNode;\n while (node.parentNode != null) {\n node = node.parentNode;\n }\n docRef.current = node;\n }\n }\n const clickOutHandler = (ev) => {\n const realTarget = ev.composedPath()[0];\n if (!floatRef.current?.contains(realTarget) && !iconRef.current?.contains(realTarget) && inputRef.current !== realTarget) {\n setOpen(false);\n setDisableFocusLock(true);\n onBlur?.(ev);\n }\n };\n if (open) {\n docRef.current?.addEventListener(\"click\", clickOutHandler);\n } else {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n }\n return () => {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n };\n }, [open, onBlur]);\n useEffect(() => {\n if (range) {\n let start;\n let end;\n if (typeof inputValue === \"string\") {\n const parts = inputValue.split(RANGE_DIVIDER);\n start = parts[0];\n end = parts[1];\n } else {\n start = inputValue?.start ?? \"\";\n end = inputValue?.end ?? \"\";\n }\n const startDate = DateTime.fromFormat(start ?? \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const endDate = DateTime.fromFormat(end ?? \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const newData = {\n start: {\n value: start,\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: end,\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: `${start || formatMask}${RANGE_DIVIDER}${end || formatMask}`\n };\n setInternalValue(newData);\n } else {\n if (typeof inputValue !== \"string\") return;\n const inputDate = DateTime.fromFormat(inputValue, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const newData = {\n value: inputValue,\n date: toDateString(inputDate),\n isValid: inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n setInternalValue(newData);\n }\n }, [inputValue]);\n const mask = useMemo(() => {\n const maskPart = format.replace(/[Mdy]/g, \"9\");\n if (range) {\n return maskPart + RANGE_DIVIDER + maskPart;\n } else {\n return maskPart;\n }\n }, [format, range]);\n useEffect(() => {\n if (typeof inputValue === \"string\") return;\n if (defaultValue) {\n if (range) {\n const defValStart = defaultValue.start;\n const defValEnd = defaultValue.end;\n const initValStart = defValStart + (formatMask + RANGE_DIVIDER + formatMask).slice(\n defValStart?.length\n );\n const initValEnd = defValEnd + (formatMask + RANGE_DIVIDER + formatMask).slice(defValEnd?.length);\n const newValue = initValStart + RANGE_DIVIDER + initValEnd;\n const inputDateStart = DateTime.fromFormat(\n defValStart || \"\",\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const inputDateEnd = DateTime.fromFormat(defValEnd || \"\", format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const isValidStart = inputDateStart.isValid && isValidDate(\n inputDateStart,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const isValidEnd = inputDateEnd.isValid && isValidDate(\n inputDateEnd,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const initCalendarValue = {\n start: {\n value: initValStart,\n date: toDateString(inputDateStart),\n isValid: isValidStart\n },\n end: {\n value: initValEnd,\n date: toDateString(inputDateEnd),\n isValid: isValidEnd\n },\n value: newValue\n };\n setInternalValue(initCalendarValue);\n } else {\n const defVal = defaultValue;\n const initVal = defVal + formatMask.slice(defVal.length);\n const inputDate = DateTime.fromFormat(defVal, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const isValid = inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n );\n const initCalendarValue = {\n value: initVal,\n date: toDateString(inputDate),\n isValid\n };\n setInternalValue(initCalendarValue);\n }\n }\n }, []);\n const focusToCalendar = () => {\n if (calRef.current) {\n const currentFocusable = calRef.current.querySelectorAll('[tabindex = \"0\"]')[0];\n if (currentFocusable) {\n currentFocusable.focus();\n }\n }\n };\n const handleInputKeyDown = (ev) => {\n switch (ev.key) {\n case \"Tab\":\n setOpen(false);\n break;\n case \"ArrowDown\":\n if (!open) {\n setOpen(true);\n setTimeout(focusToCalendar, 100);\n } else {\n focusToCalendar();\n }\n }\n };\n const handleInputChange = (ev) => {\n if (range) {\n const parts = ev.target.value.split(RANGE_DIVIDER);\n if (parts.length !== 2) return;\n const startDate = DateTime.fromFormat(parts[0], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const endDate = DateTime.fromFormat(parts[1], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const returnValue = {\n start: {\n value: parts[0],\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: parts[1],\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: ev.target.value\n };\n if (!inputValue) {\n setInternalValue(returnValue);\n }\n onChange?.(ev, returnValue);\n } else {\n if (ev.target.value === internalValue?.date) return;\n const inputDate = DateTime.fromFormat(ev.target.value, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const returnValue = {\n value: ev.target.value,\n date: toDateString(inputDate),\n isValid: inputDate.isValid && isValidDate(\n inputDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n if (!inputValue) {\n setInternalValue(returnValue);\n }\n onChange?.(ev, returnValue);\n }\n };\n const handleInputBlur = (ev) => {\n if (isClickOutside.current) {\n isClickOutside.current = false;\n return;\n }\n if (!calRef.current?.contains(ev.relatedTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n };\n const handleCalendarKeyDown = (ev) => {\n switch (ev.key) {\n case \"Escape\":\n setDisableFocusLock(true);\n inputRef.current?.focus();\n break;\n }\n };\n const handleCalendarBlur = (ev) => {\n if (!(inputRef.current === ev.currentTarget || calRef.current === ev.currentTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n if (!(calRef.current === ev.currentTarget)) {\n setDisableFocusLock(true);\n }\n };\n const handleCalendarFocus = (_event) => {\n if (disableFocusLock) {\n setDisableFocusLock(false);\n }\n };\n const handleCalendarSelection = (data) => {\n if (range) {\n const calSelectData = data;\n const startVal = DateTime.fromISO(calSelectData?.value?.start || \"\", {\n zone: defaultTimeZone\n });\n const endVal = DateTime.fromISO(calSelectData?.value?.end || \"\", {\n zone: defaultTimeZone\n });\n let newValue = \"\";\n const newInternalValue = { value: \"\" };\n if (startVal.isValid) {\n newInternalValue.start = {\n value: startVal.toFormat(format),\n date: calSelectData?.value?.start,\n isValid: true\n };\n newValue += startVal.toFormat(format);\n } else {\n newValue += formatMask;\n }\n newValue += RANGE_DIVIDER;\n if (endVal.isValid) {\n newInternalValue.end = {\n value: endVal.toFormat(format),\n date: calSelectData?.value?.end,\n isValid: true\n };\n newValue += endVal.toFormat(format);\n } else {\n newValue += formatMask;\n }\n if (typeof inputValue !== \"string\") {\n setInternalValue(newInternalValue);\n }\n newInternalValue.value = newValue;\n const event = {\n target: {\n value: newValue\n }\n };\n onChange?.(event, newInternalValue);\n } else {\n const calSelectData = data;\n const val = DateTime.fromISO(calSelectData.value || \"\", {\n zone: defaultTimeZone\n });\n const newValue = val.toFormat(format);\n const newInternalValue = {\n value: newValue,\n date: calSelectData.value,\n isValid: val.isValid && isValidDate(\n val,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n if (typeof inputValue !== \"string\") {\n setInternalValue(newInternalValue);\n }\n const event = {\n target: {\n value: newValue\n }\n };\n onChange?.(event, newInternalValue);\n }\n };\n const handleInputFocus = (ev) => {\n if (!open) {\n setOpen(true);\n onFocus?.(ev);\n }\n };\n return /* @__PURE__ */ jsxs(\n PopoverLegacy,\n {\n open: openCalendar || open,\n modal: true,\n placement: \"bottom-start\",\n disableFlipFallback: true,\n disableTriggerFocus: true,\n disableFocusLock,\n children: [\n /* @__PURE__ */ jsx(PopoverLegacy.Trigger, { children: ({ ref: popoverRef, ...props }) => /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(\n InputMask,\n {\n mask,\n inputProps: {\n onKeyDown: handleInputKeyDown,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onFocus: handleInputFocus\n },\n value: internalValue?.value || \"\",\n ...props,\n ref: useMergeRefs([popoverRef, inputRef]),\n children: /* @__PURE__ */ jsx(\n TextField,\n {\n hint,\n ref,\n prefix: /* @__PURE__ */ jsx(Icon, { svg: Event, ref: iconRef }),\n ...inputProps,\n required\n }\n )\n }\n ) }) }),\n /* @__PURE__ */ jsx(PopoverLegacy.Content, { ref: floatRef, children: !range ? /* @__PURE__ */ jsx(\n Calendar,\n {\n ref: calRef,\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.date,\n value: internalValue?.date || void 0,\n locale,\n onBlur: handleCalendarBlur,\n onSelection: handleCalendarSelection,\n onFocus: handleCalendarFocus,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay\n }\n ) : /* @__PURE__ */ jsx(\n Calendar,\n {\n ref: calRef,\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.start?.date,\n value: internalValue ? {\n start: internalValue?.start?.date || void 0,\n end: internalValue?.end?.date || void 0\n } : void 0,\n locale,\n onBlur: handleCalendarBlur,\n onSelection: handleCalendarSelection,\n onFocus: handleCalendarFocus,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay,\n range: true\n }\n ) })\n ]\n }\n );\n }\n);\nDateFieldLegacy.displayName = \"DateFieldLegacy\";\n\nexport { DateFieldLegacy as D };\n//# sourceMappingURL=DateFieldLegacy-CMikSff2.js.map\n","import { jsx, jsxs } from 'react/jsx-runtime';\nimport { forwardRef, useState, useRef, useMemo, useEffect } from 'react';\nimport { I as InputMask } from './InputMask-Hn-xudp1.js';\nimport { j as isValidDate, t as toDateString, C as Calendar } from './Calendar-KVYGk3wS.js';\nimport { I as Icon } from './Icon-B6HmlQiR.js';\nimport Event from '@servicetitan/hammer-icon/mdi/round/event.svg';\nimport { DateTime } from 'luxon';\nimport { s as supportsPopover } from './ProgressBar-CzXzPpIX.js';\nimport { D as DateFieldLegacy } from './DateFieldLegacy-CMikSff2.js';\nimport { P as Popover } from './Popover-jcmNuir0.js';\nimport { u as usePopoverCloseDelayWorkaround } from './usePopoverCloseDelayWorkaround-BhhG-xEB.js';\nimport { u as useKeyboardFocusables } from './useKeyboardFocusables-CwVMAe5C.js';\nimport { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';\n\nconst RANGE_DIVIDER = \" – \";\nconst isoToDateFormat = (date, format) => {\n const luxonDate = DateTime.fromISO(date);\n if (luxonDate.isValid) {\n return luxonDate.toFormat(format);\n }\n return date;\n};\nconst DateField = forwardRef(\n (props, ref) => {\n const {\n // DateField\n openCalendar,\n onFocus,\n onBlur,\n onChange,\n onClick,\n format = \"MM/dd/yyyy\",\n disableHint,\n // Calendar\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n startDay,\n defaultValue,\n value: inputValue,\n // Shared\n // locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,\n range,\n // Input\n required,\n ...inputProps\n } = props;\n const [open, _setOpen] = useState(openCalendar || false);\n const setOpen = (val) => {\n if (open && !val) {\n inputRef.current?.focus();\n }\n _setOpen(val);\n };\n const [internalValue, setInternalValue] = useState();\n const inputRef = useRef(null);\n const popperRef = useRef(null);\n const documentRef = useRef(document.body);\n const hint = useMemo(\n () => disableHint ? void 0 : `format: ${format.replace(/M/g, \"m\")}`,\n [format, disableHint]\n );\n const { focusables } = useKeyboardFocusables(documentRef, {\n observeChange: true\n });\n const { focusables: popoverFocusables } = useKeyboardFocusables(popperRef, {\n observeChange: true\n });\n const pageFocusables = focusables?.filter(\n (item) => !popoverFocusables?.includes(item)\n );\n const [popoverRef, setPopoverRef] = useState();\n const combinedRef = useMergeRefs([popoverRef, inputRef]);\n useEffect(() => {\n if (!defaultValue) return;\n if (range) {\n const startDate = DateTime.fromFormat(\n isoToDateFormat(defaultValue.start ?? \"\", format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const endDate = DateTime.fromFormat(\n isoToDateFormat(defaultValue.end ?? \"\", format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const newValue2 = {\n start: {\n value: isoToDateFormat(defaultValue.start ?? \"\", format),\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: isoToDateFormat(defaultValue.end ?? \"\", format),\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: isoToDateFormat(defaultValue.start ?? \"\", format) + RANGE_DIVIDER + isoToDateFormat(defaultValue.end ?? \"\", format)\n };\n setInternalValue(newValue2);\n return;\n }\n const date = DateTime.fromFormat(\n isoToDateFormat(defaultValue, format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const newValue = {\n value: isoToDateFormat(defaultValue, format),\n date: toDateString(date),\n isValid: date.isValid && isValidDate(\n date,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n setInternalValue(newValue);\n }, []);\n const getCurrentValue = () => {\n if (inputValue !== void 0) {\n if (range) {\n const startDate = DateTime.fromFormat(\n isoToDateFormat(inputValue.start ?? \"\", format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const endDate = DateTime.fromFormat(\n isoToDateFormat(inputValue.end ?? \"\", format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n const returnValue = {\n start: {\n value: isoToDateFormat(inputValue.start ?? \"\", format),\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: isoToDateFormat(inputValue.end ?? \"\", format),\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: isoToDateFormat(inputValue.start ?? \"\", format) + RANGE_DIVIDER + isoToDateFormat(inputValue.end ?? \"\", format)\n };\n return returnValue;\n }\n const date = DateTime.fromFormat(\n isoToDateFormat(inputValue, format),\n format,\n {\n zone: defaultTimeZone\n }\n ).startOf(\"day\");\n return {\n value: isoToDateFormat(inputValue, format),\n date: toDateString(date),\n isValid: date.isValid && isValidDate(\n date,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n }\n return internalValue;\n };\n const handleInputFocus = (ev) => {\n onFocus?.(ev);\n };\n const handleInputBlur = (ev) => {\n if (!popperRef.current?.contains(ev.relatedTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n };\n const handleInputKeyDown = (ev) => {\n let currentFocusIndex = 0;\n switch (ev.key) {\n case \"Escape\":\n setOpen(false);\n break;\n case \"Tab\":\n if (!open || !pageFocusables?.length) {\n break;\n }\n ev.preventDefault();\n currentFocusIndex = pageFocusables.indexOf(inputRef.current) || 0;\n setOpen(false);\n if (ev.shiftKey) {\n if (currentFocusIndex === 0) {\n requestAnimationFrame(\n () => pageFocusables[pageFocusables.length - 1].focus()\n );\n } else {\n requestAnimationFrame(\n () => pageFocusables[currentFocusIndex - 1].focus()\n );\n }\n break;\n }\n if (pageFocusables.length > currentFocusIndex + 1) {\n requestAnimationFrame(\n () => pageFocusables[currentFocusIndex + 1].focus()\n );\n } else {\n requestAnimationFrame(() => pageFocusables[0].focus());\n }\n break;\n case \"ArrowDown\":\n if (!open) {\n setOpen(true);\n setTimeout(focusToCalendar, 200);\n } else {\n focusToCalendar();\n }\n }\n };\n const handleCalendarKeyDown = (ev) => {\n switch (ev.key) {\n case \"Escape\":\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n const handleInputClick = (ev) => {\n setOpen(true);\n onClick?.(ev);\n };\n const handleInputChange = (ev) => {\n if (range) {\n const parts = ev.target.value.split(RANGE_DIVIDER);\n if (parts.length !== 2) return;\n const startDate = DateTime.fromFormat(parts[0], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const endDate = DateTime.fromFormat(parts[1], format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const returnValue = {\n start: {\n value: parts[0],\n date: toDateString(startDate),\n isValid: startDate.isValid && isValidDate(\n startDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n end: {\n value: parts[1],\n date: toDateString(endDate),\n isValid: startDate.isValid && isValidDate(\n endDate,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n },\n value: ev.target.value\n };\n setInternalValue(returnValue);\n onChange?.(ev, returnValue);\n return;\n }\n const date = DateTime.fromFormat(ev.target.value, format, {\n zone: defaultTimeZone\n }).startOf(\"day\");\n const newDate = {\n value: ev.target.value,\n date: toDateString(date),\n isValid: date.isValid && isValidDate(\n date,\n minDate,\n maxDate,\n new Set(unavailableDates || unavailable?.dates),\n {\n dates: new Set(unavailable?.dates),\n daysOfWeek: new Set(unavailable?.daysOfWeek)\n },\n defaultTimeZone\n )\n };\n setInternalValue(newDate);\n onChange?.(ev, newDate);\n };\n const handleCalendarSelection = (data) => {\n if (range) {\n const startDate = data.value?.start ?? \"\";\n const endDate = data.value?.end ?? \"\";\n const startVal = DateTime.fromISO(startDate, {\n zone: defaultTimeZone\n });\n const startValue = startVal.toFormat(format);\n const endVal = DateTime.fromISO(endDate, {\n zone: defaultTimeZone\n });\n const endValue = endVal.toFormat(format);\n const newDateRange = {\n start: {\n value: startValue,\n date: startDate,\n isValid: true\n },\n end: {\n value: endValue,\n date: endDate,\n isValid: true\n },\n value: startValue + RANGE_DIVIDER + endValue\n };\n setInternalValue(newDateRange);\n const event2 = {\n target: {\n value: startValue + RANGE_DIVIDER + endValue\n }\n };\n handleInputChange(event2);\n return;\n }\n const date = data.value;\n const val = DateTime.fromISO(date || \"\", {\n zone: defaultTimeZone\n });\n const value = val.toFormat(format);\n const newDate = {\n value,\n date,\n isValid: true\n };\n setInternalValue(newDate);\n const event = {\n target: {\n value\n }\n };\n handleInputChange(event);\n };\n const focusToCalendar = () => {\n if (popperRef.current) {\n const currentFocusable = popperRef.current.querySelectorAll('[tabindex = \"0\"]')[0];\n if (currentFocusable) {\n currentFocusable.focus();\n }\n }\n };\n const handleClickOutside = () => {\n setOpen(false);\n };\n const currentValue = getCurrentValue();\n const popoverOpen = openCalendar ?? open;\n const shouldShowCalendar = usePopoverCloseDelayWorkaround(popoverOpen);\n const calendar = range ? /* @__PURE__ */ jsx(\n Calendar,\n {\n range: true,\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.start?.date,\n value: {\n start: currentValue?.start?.date || void 0,\n end: currentValue?.end?.date || void 0\n },\n onSelection: handleCalendarSelection,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay\n }\n ) : /* @__PURE__ */ jsx(\n Calendar,\n {\n onKeyDown: handleCalendarKeyDown,\n defaultFocusedDate: internalValue?.date,\n value: currentValue?.date || void 0,\n onSelection: handleCalendarSelection,\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n defaultTimeZone,\n startDay\n }\n );\n if (!supportsPopover())\n return /* @__PURE__ */ jsx(DateFieldLegacy, { ...props, ref });\n return /* @__PURE__ */ jsxs(\n Popover,\n {\n open: popoverOpen,\n modal: true,\n placement: \"bottom-start\",\n disableFlipFallback: true,\n disableTriggerFocus: true,\n onOutsidePress: handleClickOutside,\n children: [\n /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef }) => {\n setPopoverRef(iRef);\n return range ? /* @__PURE__ */ jsx(\n InputMask,\n {\n mask: \"99/99/9999\" + RANGE_DIVIDER + \"99/99/9999\",\n ref: combinedRef,\n onChange: handleInputChange,\n value: currentValue?.value,\n inputProps: {\n onFocus: handleInputFocus,\n prefix: /* @__PURE__ */ jsx(Icon, { svg: Event }),\n onBlur: handleInputBlur,\n onKeyDown: handleInputKeyDown,\n onClick: handleInputClick,\n hint,\n required,\n ...inputProps\n },\n customMaskHandler: [\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 0,\n endPosition: 2\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n },\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 3,\n endPosition: 5\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n },\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 13,\n endPosition: 15\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n },\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 16,\n endPosition: 18\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n }\n ]\n }\n ) : /* @__PURE__ */ jsx(\n InputMask,\n {\n mask: \"99/99/9999\",\n ref: combinedRef,\n onChange: handleInputChange,\n value: currentValue?.value,\n inputProps: {\n onFocus: handleInputFocus,\n prefix: /* @__PURE__ */ jsx(Icon, { svg: Event }),\n onBlur: handleInputBlur,\n onKeyDown: handleInputKeyDown,\n onClick: handleInputClick,\n hint,\n autoComplete: \"off\",\n required,\n ...inputProps\n },\n customMaskHandler: [\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 0,\n endPosition: 2\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n },\n {\n match: {\n matchPattern: new RegExp(/^(\\d)\\//),\n startPosition: 3,\n endPosition: 5\n },\n apply: {\n applyPattern: \"0$1\",\n caretOffset: 2\n }\n }\n ]\n }\n );\n } }),\n /* @__PURE__ */ jsx(Popover.Content, { ref: popperRef, \"data-calendar-popover\": true, children: shouldShowCalendar && calendar })\n ]\n }\n );\n }\n);\nDateField.displayName = \"DateField\";\n\nexport { DateField as D };\n//# sourceMappingURL=DateField-C95DlleZ.js.map\n","import {\n DateFieldProps as CoreDateFieldProps,\n DateSelect as CoreDateSelect,\n DateRangeSelect as CoreDateRangeSelect,\n DateField as CoreDateField,\n childrenToString,\n} from \"@servicetitan/hammer-react\";\nimport { Ref, forwardRef } from \"react\";\nimport { useTrackingId } from \"../../hooks/useTrackingId\";\n\n/**\n * Props for the DateField component\n * @property {string} label - Label for the date field\n * @property {string} [placeholder] - Placeholder text for the input\n * @property {string} [description] - Helper text description\n * @property {string} [moreInfo] - Additional information text\n * @property {string} [format] - Date format (MM/dd/yyyy or dd/MM/yyyy)\n * @property {boolean} [range] - Enable date range selection mode\n * @property {Date} [minDate] - Minimum selectable date\n * @property {Date} [maxDate] - Maximum selectable date\n * @property {Date[]} [unavailableDates] - Dates that cannot be selected\n * @property {Locale} [locale] - Locale for date formatting\n * @property {IanaZone} [defaultTimeZone] - Default timezone for date operations\n * @property {boolean} [openCalendar] - Whether to open calendar on mount\n * @property {boolean} [disableHint] - Whether to disable the format hint\n * @property {string} [value] - Controlled value for the date field\n * @property {string} [defaultValue] - Default value for the date field\n * @property {(event: ChangeEvent<HTMLInputElement>, data: DateSelect | DateRangeSelect) => void} [onChange] - Callback when date selection changes\n * @extends DataTrackingId\n */\nexport type DateFieldProps = CoreDateFieldProps & {\n [\"data-tracking-id\"]?: string;\n};\n\n/**\n * Data structure for a single date selection\n * @property {string} value - The formatted date string value\n * @property {string | null | undefined} date - The ISO date string or null if invalid\n * @property {boolean} isValid - Whether the date is valid according to constraints\n */\nexport type DateSelect = CoreDateSelect;\n\n/**\n * Data structure for a date range selection\n * @property {DateSelect} [start] - The start date selection\n * @property {DateSelect} [end] - The end date selection\n * @property {string} value - The combined formatted range string\n */\nexport type DateRangeSelect = CoreDateRangeSelect;\n\n/**\n * DateField component for selecting dates with calendar popup and input validation\n *\n * Features:\n * - Single date and date range selection modes\n * - Calendar popup with keyboard navigation\n * - Input mask validation with format hints\n * - Configurable date formats (MM/dd/yyyy, dd/MM/yyyy)\n * - Min/max date constraints and unavailable dates\n * - Locale and timezone support\n * - Accessibility with ARIA attributes\n * - Keyboard navigation and focus management\n * - Popover and legacy fallback modes\n * - Automatic tracking ID generation for analytics\n *\n * @param props - The component props\n * @param ref - Forwarded ref to the input element\n * @returns A date field component with calendar integration\n *\n * @example\n * <DateField\n * label=\"Select Date\"\n * format=\"MM/dd/yyyy\"\n * onChange={(event, data) => console.log(data.date)}\n * />\n *\n * @example\n * <DateField\n * label=\"Date Range\"\n * range={true}\n * onChange={(event, data) => console.log(data.start?.date, data.end?.date)}\n * />\n */\nexport const DateField = forwardRef(\n (props: DateFieldProps, ref: Ref<HTMLInputElement>) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n size: props.size,\n type: props.type,\n };\n\n const trackingId = useTrackingId({\n name: \"DateField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n return <CoreDateField ref={ref} data-tracking-id={trackingId} {...props} />;\n },\n);\nDateField.displayName = CoreDateField.displayName;\n"],"names":["RANGE_DIVIDER","Event","DateField","useMergeRefs","CoreDateField"],"mappings":"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"}
|
package/dist/DateField.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { D as DateField, D as default } from './DateField-
|
|
1
|
+
export { D as DateField, D as default } from './DateField-BQFAvS78.js';
|
|
2
2
|
//# sourceMappingURL=DateField.js.map
|
|
@@ -4,7 +4,7 @@ import { D as DateTime, f as Calendar } from './Calendar-KVYGk3wS-CEptqxjI.js';
|
|
|
4
4
|
import { T as TextField } from './TextField-BIeCvDD--C7yp05g5.js';
|
|
5
5
|
import { u as useMergeRefs$1 } from './floating-ui.react-BFNinq1w.js';
|
|
6
6
|
import { I as Icon } from './Icon-B6HmlQiR-BxQkO3X5.js';
|
|
7
|
-
import { S as SvgEvent } from './
|
|
7
|
+
import { u as usePopoverCloseDelayWorkaround, S as SvgEvent } from './usePopoverCloseDelayWorkaround-BhhG-xEB-hfJZaXHC.js';
|
|
8
8
|
import { d as Popover } from './Popover-jcmNuir0-DjlCqU1z.js';
|
|
9
9
|
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
|
|
10
10
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DAv5LXXh-DAv5LXXh.js';
|
|
@@ -2115,6 +2115,8 @@ const NormalizedDateFieldSingle = forwardRef(
|
|
|
2115
2115
|
unavailable,
|
|
2116
2116
|
minDate,
|
|
2117
2117
|
maxDate,
|
|
2118
|
+
onFocus,
|
|
2119
|
+
onBlur,
|
|
2118
2120
|
required = false,
|
|
2119
2121
|
...rest
|
|
2120
2122
|
}, ref) => {
|
|
@@ -2138,6 +2140,7 @@ const NormalizedDateFieldSingle = forwardRef(
|
|
|
2138
2140
|
defaultValue: defaultValueProp
|
|
2139
2141
|
});
|
|
2140
2142
|
const popoverSupported = usePopoverSupport();
|
|
2143
|
+
const shouldShowCalendar = usePopoverCloseDelayWorkaround(calendarOpen);
|
|
2141
2144
|
const currentValidity = useMemo(
|
|
2142
2145
|
() => validateDate({
|
|
2143
2146
|
date: lastValidDate,
|
|
@@ -2225,16 +2228,17 @@ const NormalizedDateFieldSingle = forwardRef(
|
|
|
2225
2228
|
open: calendarOpen,
|
|
2226
2229
|
modal: true,
|
|
2227
2230
|
placement: "bottom-start",
|
|
2231
|
+
disableFlipFallback: true,
|
|
2228
2232
|
disableTriggerFocus: true,
|
|
2229
2233
|
onClose: () => setCalendarOpen(false),
|
|
2230
2234
|
disableAutoUpdate: true,
|
|
2231
|
-
|
|
2235
|
+
onClickOutside: () => setCalendarOpen(false),
|
|
2232
2236
|
children: [
|
|
2233
2237
|
/* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef }) => {
|
|
2234
2238
|
setPopoverTriggerRef(iRef);
|
|
2235
2239
|
return justTheField;
|
|
2236
2240
|
} }),
|
|
2237
|
-
/* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-calendar-popover"
|
|
2241
|
+
/* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: shouldShowCalendar && /* @__PURE__ */ jsx(
|
|
2238
2242
|
Calendar,
|
|
2239
2243
|
{
|
|
2240
2244
|
range: false,
|
|
@@ -2259,14 +2263,103 @@ const NormalizedDateFieldSingle = forwardRef(
|
|
|
2259
2263
|
);
|
|
2260
2264
|
NormalizedDateFieldSingle.displayName = "NormalizedDateFieldSingle";
|
|
2261
2265
|
|
|
2266
|
+
function containsRelatedTarget(event) {
|
|
2267
|
+
if (event.currentTarget instanceof HTMLElement && event.relatedTarget instanceof HTMLElement) {
|
|
2268
|
+
return event.currentTarget.contains(event.relatedTarget);
|
|
2269
|
+
}
|
|
2270
|
+
return false;
|
|
2271
|
+
}
|
|
2272
|
+
function useFocusWithin({
|
|
2273
|
+
onBlur,
|
|
2274
|
+
onFocus
|
|
2275
|
+
} = {}) {
|
|
2276
|
+
const [focused, setFocused] = useState(false);
|
|
2277
|
+
const focusedRef = useRef(false);
|
|
2278
|
+
const elementRef = useRef(null);
|
|
2279
|
+
const _setFocused = useCallback((value) => {
|
|
2280
|
+
setFocused(value);
|
|
2281
|
+
focusedRef.current = value;
|
|
2282
|
+
}, []);
|
|
2283
|
+
const handleFocusIn = useCallback(
|
|
2284
|
+
(event) => {
|
|
2285
|
+
if (!focusedRef.current) {
|
|
2286
|
+
_setFocused(true);
|
|
2287
|
+
onFocus?.(event);
|
|
2288
|
+
}
|
|
2289
|
+
},
|
|
2290
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2291
|
+
[onFocus]
|
|
2292
|
+
);
|
|
2293
|
+
const handleFocusOut = useCallback(
|
|
2294
|
+
(event) => {
|
|
2295
|
+
if (focusedRef.current && !containsRelatedTarget(event)) {
|
|
2296
|
+
_setFocused(false);
|
|
2297
|
+
onBlur?.(event);
|
|
2298
|
+
}
|
|
2299
|
+
},
|
|
2300
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
2301
|
+
[onBlur]
|
|
2302
|
+
);
|
|
2303
|
+
useEffect(() => {
|
|
2304
|
+
const element = elementRef.current;
|
|
2305
|
+
if (!element) {
|
|
2306
|
+
return;
|
|
2307
|
+
}
|
|
2308
|
+
element.addEventListener("focusin", handleFocusIn);
|
|
2309
|
+
element.addEventListener("focusout", handleFocusOut);
|
|
2310
|
+
return () => {
|
|
2311
|
+
element.removeEventListener("focusin", handleFocusIn);
|
|
2312
|
+
element.removeEventListener("focusout", handleFocusOut);
|
|
2313
|
+
};
|
|
2314
|
+
}, [handleFocusIn, handleFocusOut]);
|
|
2315
|
+
return { ref: elementRef, focused };
|
|
2316
|
+
}
|
|
2317
|
+
|
|
2318
|
+
const useConditionalChange = ({
|
|
2319
|
+
changeHandler,
|
|
2320
|
+
compareFn
|
|
2321
|
+
}) => {
|
|
2322
|
+
const lastChangeRef = useRef(null);
|
|
2323
|
+
const onChange = useCallback(
|
|
2324
|
+
(change) => {
|
|
2325
|
+
if (!!lastChangeRef.current && !compareFn(lastChangeRef.current, change)) {
|
|
2326
|
+
return;
|
|
2327
|
+
}
|
|
2328
|
+
changeHandler?.(change);
|
|
2329
|
+
lastChangeRef.current = change;
|
|
2330
|
+
},
|
|
2331
|
+
[changeHandler, compareFn]
|
|
2332
|
+
);
|
|
2333
|
+
return onChange;
|
|
2334
|
+
};
|
|
2335
|
+
|
|
2262
2336
|
const DateFieldSingle = ({
|
|
2263
2337
|
value,
|
|
2264
2338
|
defaultValue,
|
|
2265
2339
|
minDate,
|
|
2266
2340
|
maxDate,
|
|
2267
2341
|
unavailable,
|
|
2342
|
+
onChange,
|
|
2343
|
+
onFocus,
|
|
2344
|
+
onBlur,
|
|
2268
2345
|
...rest
|
|
2269
2346
|
}) => {
|
|
2347
|
+
const handleBlur = useCallback(
|
|
2348
|
+
(event) => {
|
|
2349
|
+
onBlur?.(event);
|
|
2350
|
+
},
|
|
2351
|
+
[onBlur]
|
|
2352
|
+
);
|
|
2353
|
+
const handleFocus = useCallback(
|
|
2354
|
+
(event) => {
|
|
2355
|
+
onFocus?.(event);
|
|
2356
|
+
},
|
|
2357
|
+
[onFocus]
|
|
2358
|
+
);
|
|
2359
|
+
const { ref: wrapperRef } = useFocusWithin({
|
|
2360
|
+
onBlur: handleBlur,
|
|
2361
|
+
onFocus: handleFocus
|
|
2362
|
+
});
|
|
2270
2363
|
const normalizedValue = useMemo(() => convertStringToDate(value), [value]);
|
|
2271
2364
|
const normalizedDefaultValue = useMemo(
|
|
2272
2365
|
() => convertStringToDate(defaultValue),
|
|
@@ -2284,10 +2377,15 @@ const DateFieldSingle = ({
|
|
|
2284
2377
|
() => unavailable?.dates?.map((d) => convertStringToDate(d)).filter((d) => d !== null && d !== void 0),
|
|
2285
2378
|
[unavailable?.dates]
|
|
2286
2379
|
);
|
|
2287
|
-
|
|
2380
|
+
const handleChange = useConditionalChange({
|
|
2381
|
+
changeHandler: onChange,
|
|
2382
|
+
compareFn: (a, b) => a.isInputValid !== b.isInputValid || a.isInputEmpty !== b.isInputEmpty || a.isDateValid !== b.isDateValid || a.date !== b.date
|
|
2383
|
+
});
|
|
2384
|
+
return /* @__PURE__ */ jsx("div", { ref: wrapperRef, children: /* @__PURE__ */ jsx(
|
|
2288
2385
|
NormalizedDateFieldSingle,
|
|
2289
2386
|
{
|
|
2290
2387
|
...rest,
|
|
2388
|
+
onChange: handleChange,
|
|
2291
2389
|
value: normalizedValue,
|
|
2292
2390
|
defaultValue: normalizedDefaultValue,
|
|
2293
2391
|
minDate: normalizedMinDate,
|
|
@@ -2297,7 +2395,7 @@ const DateFieldSingle = ({
|
|
|
2297
2395
|
daysOfWeek: unavailable?.daysOfWeek
|
|
2298
2396
|
} : void 0
|
|
2299
2397
|
}
|
|
2300
|
-
);
|
|
2398
|
+
) });
|
|
2301
2399
|
};
|
|
2302
2400
|
DateFieldSingle.displayName = "DateFieldSingle";
|
|
2303
2401
|
|
|
@@ -2506,6 +2604,8 @@ const NormalizedDateFieldRange = forwardRef(
|
|
|
2506
2604
|
minDate,
|
|
2507
2605
|
maxDate,
|
|
2508
2606
|
required = false,
|
|
2607
|
+
onFocus,
|
|
2608
|
+
onBlur,
|
|
2509
2609
|
...rest
|
|
2510
2610
|
}, ref) => {
|
|
2511
2611
|
const inputRef = useRef(null);
|
|
@@ -2531,11 +2631,12 @@ const NormalizedDateFieldRange = forwardRef(
|
|
|
2531
2631
|
handleCalendarKeyDown,
|
|
2532
2632
|
handleInputKeyDown
|
|
2533
2633
|
} = useDateFieldOrchestration({
|
|
2534
|
-
inputRef
|
|
2634
|
+
inputRef,
|
|
2535
2635
|
calendarDefaultOpen: false,
|
|
2536
2636
|
popoverContentRef,
|
|
2537
2637
|
disableCalendar
|
|
2538
2638
|
});
|
|
2639
|
+
const shouldShowCalendar = usePopoverCloseDelayWorkaround(calendarOpen);
|
|
2539
2640
|
const isDateRangeValid = useMemo(() => {
|
|
2540
2641
|
return validateDate({
|
|
2541
2642
|
date: startDate ?? null,
|
|
@@ -2650,6 +2751,7 @@ const NormalizedDateFieldRange = forwardRef(
|
|
|
2650
2751
|
open: calendarOpen,
|
|
2651
2752
|
modal: true,
|
|
2652
2753
|
placement: "bottom-start",
|
|
2754
|
+
disableFlipFallback: true,
|
|
2653
2755
|
disableTriggerFocus: true,
|
|
2654
2756
|
onClose: () => setCalendarOpen(false),
|
|
2655
2757
|
disableAutoUpdate: true,
|
|
@@ -2659,7 +2761,7 @@ const NormalizedDateFieldRange = forwardRef(
|
|
|
2659
2761
|
setPopoverTriggerRef(iRef);
|
|
2660
2762
|
return justTheField;
|
|
2661
2763
|
} }),
|
|
2662
|
-
/* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-calendar-popover"
|
|
2764
|
+
/* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: shouldShowCalendar && /* @__PURE__ */ jsx(
|
|
2663
2765
|
Calendar,
|
|
2664
2766
|
{
|
|
2665
2767
|
range: true,
|
|
@@ -2710,8 +2812,27 @@ const DateFieldRange = ({
|
|
|
2710
2812
|
minDate,
|
|
2711
2813
|
maxDate,
|
|
2712
2814
|
unavailable,
|
|
2815
|
+
onChange,
|
|
2816
|
+
onFocus,
|
|
2817
|
+
onBlur,
|
|
2713
2818
|
...rest
|
|
2714
2819
|
}) => {
|
|
2820
|
+
const handleBlur = useCallback(
|
|
2821
|
+
(event) => {
|
|
2822
|
+
onBlur?.(event);
|
|
2823
|
+
},
|
|
2824
|
+
[onBlur]
|
|
2825
|
+
);
|
|
2826
|
+
const handleFocus = useCallback(
|
|
2827
|
+
(event) => {
|
|
2828
|
+
onFocus?.(event);
|
|
2829
|
+
},
|
|
2830
|
+
[onFocus]
|
|
2831
|
+
);
|
|
2832
|
+
const { ref: wrapperRef } = useFocusWithin({
|
|
2833
|
+
onBlur: handleBlur,
|
|
2834
|
+
onFocus: handleFocus
|
|
2835
|
+
});
|
|
2715
2836
|
const normalizedValue = useMemo(
|
|
2716
2837
|
() => value !== void 0 ? {
|
|
2717
2838
|
startDate: convertStringToDate(value?.startDate ?? null) ?? null,
|
|
@@ -2738,7 +2859,11 @@ const DateFieldRange = ({
|
|
|
2738
2859
|
() => unavailable?.dates?.map((d) => convertStringToDate(d)).filter((d) => d !== null && d !== void 0),
|
|
2739
2860
|
[unavailable?.dates]
|
|
2740
2861
|
);
|
|
2741
|
-
|
|
2862
|
+
const handleChange = useConditionalChange({
|
|
2863
|
+
changeHandler: onChange,
|
|
2864
|
+
compareFn: (a, b) => a.isInputValid !== b.isInputValid || a.isInputEmpty !== b.isInputEmpty || a.isDateRangeValid !== b.isDateRangeValid || a.startDate !== b.startDate || a.endDate !== b.endDate
|
|
2865
|
+
});
|
|
2866
|
+
return /* @__PURE__ */ jsx("div", { ref: wrapperRef, children: /* @__PURE__ */ jsx(
|
|
2742
2867
|
NormalizedDateFieldRange,
|
|
2743
2868
|
{
|
|
2744
2869
|
...rest,
|
|
@@ -2749,11 +2874,12 @@ const DateFieldRange = ({
|
|
|
2749
2874
|
unavailable: unavailable ? {
|
|
2750
2875
|
dates: normalizedUnavailableDates,
|
|
2751
2876
|
daysOfWeek: unavailable?.daysOfWeek
|
|
2752
|
-
} : void 0
|
|
2877
|
+
} : void 0,
|
|
2878
|
+
onChange: handleChange
|
|
2753
2879
|
}
|
|
2754
|
-
);
|
|
2880
|
+
) });
|
|
2755
2881
|
};
|
|
2756
2882
|
DateFieldRange.displayName = "DateFieldRange";
|
|
2757
2883
|
|
|
2758
2884
|
export { DateFieldRange as D, DateFieldSingle as a };
|
|
2759
|
-
//# sourceMappingURL=DateFieldRange-
|
|
2885
|
+
//# sourceMappingURL=DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map
|