@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 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 './event-BEJFimi3.js';
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: popoverOpen ? calendar : null })
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-CfNLRY0D.js.map
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-CfNLRY0D.js';
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 './event-BEJFimi3.js';
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
- onOutsidePress: () => setCalendarOpen(false),
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": true, children: /* @__PURE__ */ jsx(
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
- return /* @__PURE__ */ jsx(
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: { current: null },
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": true, children: /* @__PURE__ */ jsx(
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
- return /* @__PURE__ */ jsx(
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-DtppOifM-DZvtSHar.js.map
2885
+ //# sourceMappingURL=DateFieldRange-BRjBcR4r-CfuSiOfZ.js.map