@servicetitan/anvil2 1.46.2 → 1.46.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.
Files changed (164) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
  3. package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
  4. package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
  5. package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
  6. package/dist/Avatar.js +2 -2
  7. package/dist/{Calendar-X9qUi6Vx.js → Calendar-Cn0fOgog.js} +99 -48
  8. package/dist/Calendar-Cn0fOgog.js.map +1 -0
  9. package/dist/Calendar.js +1 -1
  10. package/dist/{Checkbox-CcYtto5f.js → Checkbox-C5PX8wur.js} +2 -2
  11. package/dist/{Checkbox-CcYtto5f.js.map → Checkbox-C5PX8wur.js.map} +1 -1
  12. package/dist/{Checkbox-BDohwHXQ.js → Checkbox-DAODkzN3.js} +2 -2
  13. package/dist/{Checkbox-BDohwHXQ.js.map → Checkbox-DAODkzN3.js.map} +1 -1
  14. package/dist/Checkbox.js +2 -2
  15. package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
  16. package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
  17. package/dist/Chip.js +1 -1
  18. package/dist/{Combobox-DQmW8Tyl.js → Combobox-DO8cIvRQ.js} +6 -6
  19. package/dist/{Combobox-DQmW8Tyl.js.map → Combobox-DO8cIvRQ.js.map} +1 -1
  20. package/dist/Combobox.js +1 -1
  21. package/dist/{DateField-C43nfkbx.js → DateField-qHdgwSlB.js} +35 -101
  22. package/dist/DateField-qHdgwSlB.js.map +1 -0
  23. package/dist/DateField.js +1 -1
  24. package/dist/{DateFieldRange-g7n5QYww.js → DateFieldRange-GNpWV70g.js} +54 -55
  25. package/dist/DateFieldRange-GNpWV70g.js.map +1 -0
  26. package/dist/DateFieldRange.js +1 -1
  27. package/dist/{DateFieldSingle-D3tneqeG.js → DateFieldSingle-B9caNibj.js} +50 -52
  28. package/dist/DateFieldSingle-B9caNibj.js.map +1 -0
  29. package/dist/DateFieldSingle.js +1 -1
  30. package/dist/{DateFieldYearless-3JBVj3wn.js → DateFieldYearless-BmeKGaDc.js} +2 -2
  31. package/dist/{DateFieldYearless-3JBVj3wn.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
  32. package/dist/DateFieldYearless.js +1 -1
  33. package/dist/{DaysOfTheWeek-RcPgDoM3.js → DaysOfTheWeek-DPH13VCK.js} +3 -3
  34. package/dist/{DaysOfTheWeek-RcPgDoM3.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
  35. package/dist/DaysOfTheWeek.js +1 -1
  36. package/dist/{Dialog-FNJ16gY6.js → Dialog-BHFLnFNQ.js} +5 -5
  37. package/dist/{Dialog-FNJ16gY6.js.map → Dialog-BHFLnFNQ.js.map} +1 -1
  38. package/dist/Dialog.js +1 -1
  39. package/dist/{Drawer-DT31CMRd.js → Drawer-BDA7Sjj9.js} +5 -5
  40. package/dist/{Drawer-DT31CMRd.js.map → Drawer-BDA7Sjj9.js.map} +1 -1
  41. package/dist/Drawer.js +1 -1
  42. package/dist/{FieldLabel-BP8QK5UR.js → FieldLabel-Bgl3iu13.js} +2 -2
  43. package/dist/{FieldLabel-BP8QK5UR.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
  44. package/dist/FieldLabel.js +1 -1
  45. package/dist/{InputMask-CPuYMcw9.js → InputMask-B13KumrK.js} +2 -2
  46. package/dist/{InputMask-CPuYMcw9.js.map → InputMask-B13KumrK.js.map} +1 -1
  47. package/dist/InputMask.js +1 -1
  48. package/dist/{ListView-BJI8BQJ-.js → ListView-C-cVQZHp.js} +3 -3
  49. package/dist/{ListView-BJI8BQJ-.js.map → ListView-C-cVQZHp.js.map} +1 -1
  50. package/dist/ListView.js +1 -1
  51. package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
  52. package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
  53. package/dist/Listbox.js +1 -1
  54. package/dist/{Menu-t_11BIhU.js → Menu-DUZqzpwg.js} +6 -8
  55. package/dist/Menu-DUZqzpwg.js.map +1 -0
  56. package/dist/Menu.js +1 -1
  57. package/dist/{NumberField-Bjf9Tyvf.js → NumberField-DWPAy1eG.js} +7 -7
  58. package/dist/{NumberField-Bjf9Tyvf.js.map → NumberField-DWPAy1eG.js.map} +1 -1
  59. package/dist/NumberField.css +9 -6
  60. package/dist/NumberField.js +1 -1
  61. package/dist/{Page-BAyXnhz2.js → Page-BfH2mGSt.js} +7 -7
  62. package/dist/{Page-BAyXnhz2.js.map → Page-BfH2mGSt.js.map} +1 -1
  63. package/dist/Page.js +1 -1
  64. package/dist/{Pagination-DCBic619.js → Pagination-B_G9QcHf.js} +3 -3
  65. package/dist/{Pagination-DCBic619.js.map → Pagination-B_G9QcHf.js.map} +1 -1
  66. package/dist/Pagination.js +1 -1
  67. package/dist/{Popover-CrksxqKk.js → Popover-v8R920kj.js} +135 -200
  68. package/dist/Popover-v8R920kj.js.map +1 -0
  69. package/dist/Popover.js +1 -1
  70. package/dist/{ProgressBar-CgsAW2d8.js → ProgressBar-BWN2yv1s.js} +2 -2
  71. package/dist/{ProgressBar-CgsAW2d8.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
  72. package/dist/ProgressBar.js +1 -1
  73. package/dist/{Radio-C_rvxw74.js → Radio-C5riI-do.js} +2 -2
  74. package/dist/{Radio-C_rvxw74.js.map → Radio-C5riI-do.js.map} +1 -1
  75. package/dist/Radio.js +2 -2
  76. package/dist/{RadioGroup-DxBblSrx.js → RadioGroup-B7O06pVu.js} +2 -2
  77. package/dist/{RadioGroup-DxBblSrx.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
  78. package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
  79. package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
  80. package/dist/SearchField.js +1 -1
  81. package/dist/{SegmentedControl-DC4BpdH5.js → SegmentedControl-CLDdes8W.js} +2 -2
  82. package/dist/{SegmentedControl-DC4BpdH5.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
  83. package/dist/SegmentedControl.js +1 -1
  84. package/dist/{SelectCard-DunNE9R3.js → SelectCard-Ca07K1FW.js} +3 -3
  85. package/dist/{SelectCard-DunNE9R3.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
  86. package/dist/SelectCard.js +1 -1
  87. package/dist/{SelectTrigger-BYysLREL.js → SelectTrigger-CaXX1SHG.js} +3 -3
  88. package/dist/{SelectTrigger-BYysLREL.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
  89. package/dist/SelectTrigger.js +1 -1
  90. package/dist/{SelectTriggerBase-DqUpJgzk.js → SelectTriggerBase-C7TLCna1.js} +3 -3
  91. package/dist/{SelectTriggerBase-DqUpJgzk.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
  92. package/dist/{SideNav-B9AWmF_H.js → SideNav-nqq5sAwz.js} +2 -2
  93. package/dist/{SideNav-B9AWmF_H.js.map → SideNav-nqq5sAwz.js.map} +1 -1
  94. package/dist/SideNav.js +1 -1
  95. package/dist/{Stepper-DHTrvfXw.js → Stepper-DQ_Hm-AI.js} +2 -2
  96. package/dist/{Stepper-DHTrvfXw.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
  97. package/dist/Stepper.js +1 -1
  98. package/dist/{Tab-0zx9hsw8.js → Tab-CzNx3IdF.js} +2 -2
  99. package/dist/{Tab-0zx9hsw8.js.map → Tab-CzNx3IdF.js.map} +1 -1
  100. package/dist/Tab.js +1 -1
  101. package/dist/{TextField-CFWs3lm9.js → TextField-D9gD-34Q.js} +3 -3
  102. package/dist/{TextField-CFWs3lm9.js.map → TextField-D9gD-34Q.js.map} +1 -1
  103. package/dist/{TextField-Cge6IRo5.js → TextField-uCHgwO5F.js} +2 -2
  104. package/dist/{TextField-Cge6IRo5.js.map → TextField-uCHgwO5F.js.map} +1 -1
  105. package/dist/TextField.js +1 -1
  106. package/dist/{Textarea-CXd3NKkW.js → Textarea-B2-6m291.js} +3 -3
  107. package/dist/{Textarea-CXd3NKkW.js.map → Textarea-B2-6m291.js.map} +1 -1
  108. package/dist/Textarea.js +1 -1
  109. package/dist/{TimeField-4v5aCwiG.js → TimeField-B5Jgy-Zg.js} +21 -8
  110. package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
  111. package/dist/TimeField.js +1 -1
  112. package/dist/Toast.js +2 -2
  113. package/dist/{Toaster-bON5Xc1P.js → Toaster-CHyB-Mxs.js} +3 -3
  114. package/dist/{Toaster-bON5Xc1P.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
  115. package/dist/{Toaster-D-rNSLTq.js → Toaster-CyiGDKMh.js} +3 -3
  116. package/dist/{Toaster-D-rNSLTq.js.map → Toaster-CyiGDKMh.js.map} +1 -1
  117. package/dist/{Toolbar-B2Jsuptz.js → Toolbar-BXGTrR6o.js} +16 -15
  118. package/dist/Toolbar-BXGTrR6o.js.map +1 -0
  119. package/dist/Toolbar.js +1 -1
  120. package/dist/{Tooltip-CtCLw_vx.js → Tooltip-DhtVlhah.js} +2 -2
  121. package/dist/{Tooltip-CtCLw_vx.js.map → Tooltip-DhtVlhah.js.map} +1 -1
  122. package/dist/Tooltip.js +1 -1
  123. package/dist/beta.js +1 -1
  124. package/dist/components/Calendar/Calendar.d.ts +5 -0
  125. package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
  126. package/dist/components/Popover/Popover.d.ts +136 -1
  127. package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
  128. package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
  129. package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
  130. package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
  131. package/dist/index.js +43 -43
  132. package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
  133. package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
  134. package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
  135. package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
  136. package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
  137. package/dist/{useDialogTransitionStates-C1TtiwA_.js → useKeyboardFocusables-ek2mYel-.js} +45 -4
  138. package/dist/useKeyboardFocusables-ek2mYel-.js.map +1 -0
  139. package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
  140. package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
  141. package/dist/useMergeRefs.js +1 -1
  142. package/dist/{useOnClickOutside-B1ddwORK.js → useOnClickOutside-C5AZE_I6.js} +6 -65
  143. package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
  144. package/dist/utils-CnKBdBNm.js +50 -0
  145. package/dist/utils-CnKBdBNm.js.map +1 -0
  146. package/package.json +1 -1
  147. package/dist/Calendar-X9qUi6Vx.js.map +0 -1
  148. package/dist/DateField-C43nfkbx.js.map +0 -1
  149. package/dist/DateFieldRange-g7n5QYww.js.map +0 -1
  150. package/dist/DateFieldSingle-D3tneqeG.js.map +0 -1
  151. package/dist/Menu-t_11BIhU.js.map +0 -1
  152. package/dist/Popover-CrksxqKk.js.map +0 -1
  153. package/dist/TimeField-4v5aCwiG.js.map +0 -1
  154. package/dist/Toolbar-B2Jsuptz.js.map +0 -1
  155. package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
  156. package/dist/useDateFieldOrchestration-DyAc3gPJ.js +0 -138
  157. package/dist/useDateFieldOrchestration-DyAc3gPJ.js.map +0 -1
  158. package/dist/useDialogTransitionStates-C1TtiwA_.js.map +0 -1
  159. package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
  160. package/dist/useMergeRefs-Bde85AWI.js +0 -21
  161. package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
  162. package/dist/useOnClickOutside-B1ddwORK.js.map +0 -1
  163. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
  164. package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
package/dist/Combobox.js CHANGED
@@ -1,3 +1,3 @@
1
- export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger, C as default } from './Combobox-DQmW8Tyl.js';
1
+ export { C as Combobox, c as ComboboxContent, a as ComboboxElement, i as ComboboxEmpty, e as ComboboxItem, f as ComboboxItemAddNew, d as ComboboxList, g as ComboboxSearchField, b as ComboboxSelect, h as ComboboxSelectTrigger, C as default } from './Combobox-DO8cIvRQ.js';
2
2
  export { u as useInfiniteCombobox } from './useInfiniteCombobox-WcRgC9p6.js';
3
3
  //# sourceMappingURL=Combobox.js.map
@@ -1,17 +1,15 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { forwardRef, useState, useRef, useMemo, useEffect } from 'react';
3
- import { D as DateTime, i as isValidDate, t as toDateString, C as Calendar } from './Calendar-X9qUi6Vx.js';
4
- import { I as InputMask } from './InputMask-CPuYMcw9.js';
3
+ import { D as DateTime, i as isValidDate, t as toDateString, C as Calendar } from './Calendar-Cn0fOgog.js';
4
+ import { I as InputMask } from './InputMask-B13KumrK.js';
5
5
  import { I as Icon } from './Icon-D8SPKeO4.js';
6
6
  import { S as SvgEvent } from './event-BEJFimi3.js';
7
- import { e as PopoverLegacy, P as Popover } from './Popover-CrksxqKk.js';
8
- import { u as usePopoverCloseDelayWorkaround } from './usePopoverCloseDelayWorkaround-BZcjPkvT.js';
9
- import { T as TextField } from './TextField-CFWs3lm9.js';
7
+ import { e as PopoverLegacy, P as Popover } from './Popover-v8R920kj.js';
8
+ import { m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
9
+ import { T as TextField } from './TextField-D9gD-34Q.js';
10
10
  import { u as useMergeRefs, s as supportsPopover } from './DrawerContext-D4tWTLVf.js';
11
11
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
12
12
  import { useTrackingId } from './useTrackingId.js';
13
- import { a as useKeyboardFocusables } from './useOnClickOutside-B1ddwORK.js';
14
- import { u as useMergeRefs$1 } from './useMergeRefs-Bde85AWI.js';
15
13
 
16
14
  const isoToDateFormat = (date, format) => {
17
15
  const luxonDate = DateTime.fromISO(date);
@@ -563,6 +561,8 @@ const DateField = forwardRef(
563
561
  size: props.size,
564
562
  type: props.type
565
563
  };
564
+ const popoverRootRef = useRef(null);
565
+ const popoverContentRef = useRef(null);
566
566
  const trackingId = useTrackingId({
567
567
  name: "DateField",
568
568
  data,
@@ -593,32 +593,12 @@ const DateField = forwardRef(
593
593
  required,
594
594
  ...inputProps
595
595
  } = props;
596
- const [open, _setOpen] = useState(openCalendar || false);
597
- const setOpen = (val) => {
598
- if (open && !val) {
599
- inputRef.current?.focus();
600
- }
601
- _setOpen(val);
602
- };
603
596
  const [internalValue, setInternalValue] = useState();
604
597
  const inputRef = useRef(null);
605
- const popperRef = useRef(null);
606
- const documentRef = useRef(document.body);
607
598
  const hint = useMemo(
608
599
  () => disableHint ? void 0 : `Format: ${format.replace(/M/g, "m")}`,
609
600
  [format, disableHint]
610
601
  );
611
- const { focusables } = useKeyboardFocusables(documentRef, {
612
- observeChange: true
613
- });
614
- const { focusables: popoverFocusables } = useKeyboardFocusables(popperRef, {
615
- observeChange: true
616
- });
617
- const pageFocusables = focusables?.filter(
618
- (item) => !popoverFocusables?.includes(item)
619
- );
620
- const [popoverRef, setPopoverRef] = useState();
621
- const combinedRef = useMergeRefs$1([popoverRef, inputRef]);
622
602
  useEffect(() => {
623
603
  if (!defaultValue) return;
624
604
  if (range) {
@@ -777,62 +757,20 @@ const DateField = forwardRef(
777
757
  onFocus?.(ev);
778
758
  };
779
759
  const handleInputBlur = (ev) => {
780
- if (!popperRef.current?.contains(ev.relatedTarget)) {
781
- setOpen(false);
760
+ if (!popoverContentRef.current?.contains(ev.relatedTarget)) {
782
761
  onBlur?.(ev);
783
762
  }
784
763
  };
785
764
  const handleInputKeyDown = (ev) => {
786
- let currentFocusIndex = 0;
787
- switch (ev.key) {
788
- case "Escape":
789
- setOpen(false);
790
- break;
791
- case "Tab":
792
- if (!open || !pageFocusables?.length) {
793
- break;
794
- }
795
- ev.preventDefault();
796
- currentFocusIndex = pageFocusables.indexOf(inputRef.current) || 0;
797
- setOpen(false);
798
- if (ev.shiftKey) {
799
- if (currentFocusIndex === 0) {
800
- requestAnimationFrame(
801
- () => pageFocusables[pageFocusables.length - 1].focus()
802
- );
803
- } else {
804
- requestAnimationFrame(
805
- () => pageFocusables[currentFocusIndex - 1].focus()
806
- );
807
- }
808
- break;
809
- }
810
- if (pageFocusables.length > currentFocusIndex + 1) {
811
- requestAnimationFrame(
812
- () => pageFocusables[currentFocusIndex + 1].focus()
813
- );
814
- } else {
815
- requestAnimationFrame(() => pageFocusables[0].focus());
816
- }
817
- break;
818
- case "ArrowDown":
819
- if (!open) {
820
- setOpen(true);
821
- setTimeout(focusToCalendar, 200);
822
- } else {
823
- focusToCalendar();
824
- }
825
- }
826
- };
827
- const handleCalendarKeyDown = (ev) => {
828
- switch (ev.key) {
829
- case "Escape":
830
- setOpen(false);
831
- inputRef.current?.focus();
765
+ if (ev.key === "ArrowDown") {
766
+ popoverRootRef.current?.openPopover();
767
+ requestAnimationFrame(() => {
768
+ popoverContentRef.current?.querySelector("button")?.focus();
769
+ });
832
770
  }
833
771
  };
834
772
  const handleInputClick = (ev) => {
835
- setOpen(true);
773
+ popoverRootRef.current?.openPopover();
836
774
  onClick?.(ev);
837
775
  };
838
776
  const handleInputChange = (ev) => {
@@ -955,25 +893,11 @@ const DateField = forwardRef(
955
893
  };
956
894
  handleInputChange(event);
957
895
  };
958
- const focusToCalendar = () => {
959
- if (popperRef.current) {
960
- const currentFocusable = popperRef.current.querySelectorAll('[tabindex = "0"]')[0];
961
- if (currentFocusable) {
962
- currentFocusable.focus();
963
- }
964
- }
965
- };
966
- const handleClickOutside = () => {
967
- setOpen(false);
968
- };
969
896
  const currentValue = getCurrentValue();
970
- const popoverOpen = openCalendar ?? open;
971
- const shouldShowCalendar = usePopoverCloseDelayWorkaround(popoverOpen);
972
897
  const calendar = range ? /* @__PURE__ */ jsx(
973
898
  Calendar,
974
899
  {
975
900
  range: true,
976
- onKeyDown: handleCalendarKeyDown,
977
901
  defaultFocusedDate: internalValue?.start?.date,
978
902
  value: {
979
903
  start: currentValue?.start?.date || void 0,
@@ -985,12 +909,12 @@ const DateField = forwardRef(
985
909
  unavailableDates,
986
910
  unavailable,
987
911
  defaultTimeZone,
988
- startDay
912
+ startDay,
913
+ _disableAutofocus: true
989
914
  }
990
915
  ) : /* @__PURE__ */ jsx(
991
916
  Calendar,
992
917
  {
993
- onKeyDown: handleCalendarKeyDown,
994
918
  defaultFocusedDate: internalValue?.date,
995
919
  value: currentValue?.date || void 0,
996
920
  onSelection: handleCalendarSelection,
@@ -999,7 +923,8 @@ const DateField = forwardRef(
999
923
  unavailableDates,
1000
924
  unavailable,
1001
925
  defaultTimeZone,
1002
- startDay
926
+ startDay,
927
+ _disableAutofocus: true
1003
928
  }
1004
929
  );
1005
930
  if (!supportsPopover())
@@ -1007,20 +932,21 @@ const DateField = forwardRef(
1007
932
  return /* @__PURE__ */ jsxs(
1008
933
  Popover,
1009
934
  {
1010
- open: popoverOpen,
1011
- modal: true,
935
+ ref: popoverRootRef,
1012
936
  placement: "bottom-start",
1013
937
  disableFlipFallback: true,
1014
938
  disableTriggerFocus: true,
1015
- onOutsidePress: handleClickOutside,
1016
939
  children: [
1017
940
  /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef }) => {
1018
- setPopoverRef(iRef);
941
+ const mergedRef = mergeRefs([
942
+ inputRef,
943
+ iRef
944
+ ]);
1019
945
  return range ? /* @__PURE__ */ jsx(
1020
946
  InputMask,
1021
947
  {
1022
948
  mask: "99/99/9999" + RANGE_DIVIDER + "99/99/9999",
1023
- ref: combinedRef,
949
+ ref: mergedRef,
1024
950
  onChange: handleInputChange,
1025
951
  value: currentValue?.value,
1026
952
  inputProps: {
@@ -1085,7 +1011,7 @@ const DateField = forwardRef(
1085
1011
  InputMask,
1086
1012
  {
1087
1013
  mask: "99/99/9999",
1088
- ref: combinedRef,
1014
+ ref: mergedRef,
1089
1015
  onChange: handleInputChange,
1090
1016
  value: currentValue?.value,
1091
1017
  inputProps: {
@@ -1127,7 +1053,15 @@ const DateField = forwardRef(
1127
1053
  }
1128
1054
  );
1129
1055
  } }),
1130
- /* @__PURE__ */ jsx(Popover.Content, { ref: popperRef, "data-calendar-popover": true, children: shouldShowCalendar && calendar })
1056
+ /* @__PURE__ */ jsx(
1057
+ Popover.Content,
1058
+ {
1059
+ ref: popoverContentRef,
1060
+ "data-calendar-popover": true,
1061
+ onBlur: handleInputBlur,
1062
+ children: calendar
1063
+ }
1064
+ )
1131
1065
  ]
1132
1066
  }
1133
1067
  );
@@ -1136,4 +1070,4 @@ const DateField = forwardRef(
1136
1070
  DateField.displayName = "DateField";
1137
1071
 
1138
1072
  export { DateField as D };
1139
- //# sourceMappingURL=DateField-C43nfkbx.js.map
1073
+ //# sourceMappingURL=DateField-qHdgwSlB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DateField-qHdgwSlB.js","sources":["../src/components/DateField/internal/isoToDateFormat.ts","../src/components/DateField/internal/DateFieldLegacy/DateFieldLegacy.tsx","../src/components/DateField/DateField.tsx"],"sourcesContent":["import { DateTime } from \"luxon\";\n\nexport const isoToDateFormat = (date: string, format: string) => {\n // Returns a string of the proper format for ISO strings and the input date string for non-ISO strings\n const luxonDate = DateTime.fromISO(date);\n if (luxonDate.isValid) {\n return luxonDate.toFormat(format);\n }\n return date;\n};\n","import {\n ChangeEvent,\n ChangeEventHandler,\n FocusEventHandler,\n KeyboardEventHandler,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { InputMask } from \"../../../InputMask\";\nimport {\n TextField,\n TextFieldProps,\n} from \"../../../TextField/internal/TextField\";\nimport { PopoverLegacy } from \"../../../Popover/internal/PopoverLegacy\";\nimport {\n CalendarProps,\n CalendarValue,\n CalendarRangeValue,\n} from \"../../../Calendar/Calendar\";\nimport { Calendar } from \"../../../Calendar\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { IanaZone, Locale } from \"../../../../types\";\nimport { Icon } from \"../../../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport { DateTime } from \"luxon\";\nimport { isValidDate, toDateString } from \"../../../Calendar/internal/utils\";\n\nconst RANGE_DIVIDER = \" — \";\n\ninterface DateFieldLegacyCommonProps {\n format?: \"MM/dd/yyyy\" | \"dd/MM/yyyy\";\n locale?: Locale;\n defaultTimeZone?: IanaZone;\n openCalendar?: boolean;\n disableHint?: boolean;\n}\n\nexport interface LegacyDateSelect {\n value: string;\n date: string | null | undefined;\n isValid: boolean;\n}\n\nexport interface LegacyDateRangeSelect {\n start?: LegacyDateSelect;\n end?: LegacyDateSelect;\n value: string;\n}\n\ninterface DateFieldLegacySingleProps {\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n data: LegacyDateSelect,\n ) => void;\n defaultValue?: string;\n range?: false;\n}\n\ninterface DateFieldLegacyRangeProps {\n onChange?: (\n event: ChangeEvent<HTMLInputElement>,\n data: LegacyDateRangeSelect,\n ) => void;\n defaultValue?: { start?: string; end?: string };\n range: true;\n}\n\nexport type DateFieldLegacyProps = Omit<CalendarProps, \"onChange\"> &\n Omit<\n TextFieldProps,\n \"prefix\" | \"suffix\" | \"hint\" | \"onChange\" | \"showCounter\"\n > &\n DateFieldLegacyCommonProps &\n (DateFieldLegacySingleProps | DateFieldLegacyRangeProps);\n\nexport const DateFieldLegacy = forwardRef<\n HTMLInputElement,\n DateFieldLegacyProps\n>(\n (\n {\n // DateFieldLegacy\n openCalendar,\n onFocus,\n onBlur,\n onChange,\n format = \"MM/dd/yyyy\",\n disableHint,\n\n // Calendar\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n startDay,\n defaultValue,\n value: inputValue,\n\n // Shared\n locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions()\n .timeZone as IanaZone,\n range,\n\n // Input\n required,\n ...inputProps\n },\n ref,\n ) => {\n const [open, setOpen] = useState(openCalendar || false);\n const [internalValue, setInternalValue] = useState<\n LegacyDateSelect | LegacyDateRangeSelect | undefined\n >();\n const [disableFocusLock, setDisableFocusLock] = useState(true);\n const inputRef = useRef<HTMLInputElement>(null);\n const calRef = useRef<HTMLDivElement>(null);\n const iconRef = useRef<HTMLElement>(null);\n const docRef = useRef<Document | Node | null>(null);\n const floatRef = useRef<HTMLDivElement>(null);\n const isClickOutside = useRef(false);\n const formatMask = format.replace(/[^/]/g, \"_\");\n const hint = useMemo(\n () => (disableHint ? undefined : `Format: ${format.replace(/M/g, \"m\")}`),\n [format, disableHint],\n );\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\n if (docRef.current == null && inputRef.current?.parentNode != null) {\n let node: Node = inputRef.current?.parentNode;\n while (node.parentNode != null) {\n node = node.parentNode;\n }\n docRef.current = node;\n }\n }\n const clickOutHandler = (ev: Event) => {\n // this is more accurate, especially in shadow doms\n const realTarget = ev.composedPath()[0] as Node;\n\n if (\n !floatRef.current?.contains(realTarget) &&\n !iconRef.current?.contains(realTarget) &&\n inputRef.current !== realTarget\n ) {\n setOpen(false);\n setDisableFocusLock(true);\n onBlur?.(ev as unknown as React.FocusEvent<HTMLInputElement>);\n }\n };\n\n if (open) {\n docRef.current?.addEventListener(\"click\", clickOutHandler);\n } else {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n }\n\n return () => {\n docRef.current?.removeEventListener(\"click\", clickOutHandler);\n };\n }, [open, onBlur]);\n\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: LegacyDateRangeSelect = {\n start: {\n value: start,\n date: toDateString(startDate),\n isValid:\n startDate.isValid &&\n 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:\n startDate.isValid &&\n 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: LegacyDateSelect = {\n value: inputValue,\n date: toDateString(inputDate),\n isValid:\n inputDate.isValid &&\n 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 // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputValue]);\n\n const mask: string = 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\n useEffect(() => {\n // Set default only if uncontrolled and we have a defaultValue.\n if (typeof inputValue === \"string\") return;\n if (defaultValue) {\n if (range) {\n // Get input value\n const defValStart = defaultValue.start;\n const defValEnd = defaultValue.end;\n\n const initValStart =\n defValStart +\n (formatMask + RANGE_DIVIDER + formatMask).slice(\n defValStart?.length,\n );\n const initValEnd =\n defValEnd +\n (formatMask + RANGE_DIVIDER + formatMask).slice(defValEnd?.length);\n const newValue = initValStart + RANGE_DIVIDER + initValEnd;\n\n // Set calendar value\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\n const isValidStart =\n inputDateStart.isValid &&\n 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\n const isValidEnd =\n inputDateEnd.isValid &&\n 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: LegacyDateRangeSelect = {\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 // Get input value\n const defVal = defaultValue as string;\n const initVal = defVal + formatMask.slice(defVal.length);\n\n // Set calendar value\n const inputDate = DateTime.fromFormat(defVal, format, {\n zone: defaultTimeZone,\n }).startOf(\"day\");\n const isValid =\n inputDate.isValid &&\n 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: LegacyDateSelect = {\n value: initVal,\n date: toDateString(inputDate),\n isValid,\n };\n setInternalValue(initCalendarValue);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const focusToCalendar = () => {\n if (calRef.current) {\n const currentFocusable =\n calRef.current.querySelectorAll('[tabindex = \"0\"]')[0];\n if (currentFocusable) {\n (currentFocusable as HTMLButtonElement).focus();\n }\n }\n };\n\n const handleInputKeyDown: KeyboardEventHandler<HTMLInputElement> = (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\n const handleInputChange: ChangeEventHandler<HTMLInputElement> = (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: LegacyDateRangeSelect = {\n start: {\n value: parts[0],\n date: toDateString(startDate),\n isValid:\n startDate.isValid &&\n 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:\n startDate.isValid &&\n 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 as LegacyDateSelect)?.date)\n return;\n // Check if the value is a real date.\n const inputDate = DateTime.fromFormat(ev.target.value, format, {\n zone: defaultTimeZone,\n }).startOf(\"day\");\n const returnValue: LegacyDateSelect = {\n value: ev.target.value,\n date: toDateString(inputDate),\n isValid:\n inputDate.isValid &&\n 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\n const handleInputBlur: React.FocusEventHandler<HTMLInputElement> = (ev) => {\n if (isClickOutside.current) {\n isClickOutside.current = false;\n return;\n }\n\n if (!calRef.current?.contains(ev.relatedTarget as Node)) {\n setOpen(false);\n onBlur?.(ev);\n }\n };\n\n const handleCalendarKeyDown: KeyboardEventHandler<HTMLDivElement> = (\n ev,\n ) => {\n switch (ev.key) {\n case \"Escape\":\n setDisableFocusLock(true);\n inputRef.current?.focus();\n break;\n }\n };\n\n const handleCalendarBlur: React.FocusEventHandler<HTMLDivElement> = (\n ev,\n ) => {\n if (\n !(\n inputRef.current === ev.currentTarget ||\n calRef.current === ev.currentTarget\n )\n ) {\n setOpen(false);\n onBlur?.(ev);\n }\n if (!(calRef.current === ev.currentTarget)) {\n setDisableFocusLock(true);\n }\n };\n\n const handleCalendarFocus: React.FocusEventHandler = (_event) => {\n if (disableFocusLock) {\n setDisableFocusLock(false);\n }\n };\n\n const handleCalendarSelection = (\n data: { value: CalendarValue } | { value: CalendarRangeValue },\n ) => {\n if (range) {\n const calSelectData = data as { value: CalendarRangeValue };\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: LegacyDateRangeSelect = { 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 } as ChangeEvent<HTMLInputElement>;\n onChange?.(event, newInternalValue);\n } else {\n const calSelectData = data as { value: CalendarValue };\n const val = DateTime.fromISO(calSelectData.value || \"\", {\n zone: defaultTimeZone,\n });\n const newValue = val.toFormat(format);\n const newInternalValue: LegacyDateSelect = {\n value: newValue,\n date: calSelectData.value,\n isValid:\n val.isValid &&\n 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 } as ChangeEvent<HTMLInputElement>;\n onChange?.(event, newInternalValue);\n }\n };\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = (ev) => {\n if (!open) {\n setOpen(true);\n onFocus?.(ev);\n }\n };\n\n return (\n <PopoverLegacy\n open={openCalendar || open}\n modal\n placement=\"bottom-start\"\n disableFlipFallback\n disableTriggerFocus\n disableFocusLock={disableFocusLock}\n >\n <PopoverLegacy.Trigger>\n {({ ref: popoverRef, ...props }) => (\n <>\n <InputMask\n mask={mask}\n inputProps={{\n onKeyDown: handleInputKeyDown,\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onFocus: handleInputFocus,\n }}\n value={internalValue?.value || \"\"}\n {...props}\n // eslint-disable-next-line react-hooks/rules-of-hooks\n ref={useMergeRefs([popoverRef, inputRef])}\n >\n <TextField\n hint={hint}\n ref={ref}\n prefix={<Icon svg={Event} ref={iconRef} />}\n {...inputProps}\n required={required}\n />\n </InputMask>\n </>\n )}\n </PopoverLegacy.Trigger>\n <PopoverLegacy.Content ref={floatRef}>\n {!range ? (\n <Calendar\n ref={calRef}\n onKeyDown={handleCalendarKeyDown}\n defaultFocusedDate={(internalValue as LegacyDateSelect)?.date}\n value={(internalValue as LegacyDateSelect)?.date || undefined}\n locale={locale}\n onBlur={handleCalendarBlur}\n onSelection={handleCalendarSelection}\n onFocus={handleCalendarFocus}\n minDate={minDate}\n maxDate={maxDate}\n unavailableDates={unavailableDates}\n unavailable={unavailable}\n defaultTimeZone={defaultTimeZone}\n startDay={startDay}\n />\n ) : (\n <Calendar\n ref={calRef}\n onKeyDown={handleCalendarKeyDown}\n defaultFocusedDate={\n (internalValue as LegacyDateRangeSelect)?.start?.date\n }\n value={\n internalValue\n ? {\n start:\n (internalValue as LegacyDateRangeSelect)?.start?.date ||\n undefined,\n end:\n (internalValue as LegacyDateRangeSelect)?.end?.date ||\n undefined,\n }\n : undefined\n }\n locale={locale}\n onBlur={handleCalendarBlur}\n onSelection={handleCalendarSelection}\n onFocus={handleCalendarFocus}\n minDate={minDate}\n maxDate={maxDate}\n unavailableDates={unavailableDates}\n unavailable={unavailable}\n defaultTimeZone={defaultTimeZone}\n startDay={startDay}\n range\n />\n )}\n </PopoverLegacy.Content>\n </PopoverLegacy>\n );\n },\n);\n\nDateFieldLegacy.displayName = \"DateFieldLegacy\";\n","import {\n ChangeEvent,\n ChangeEventHandler,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n Ref,\n RefObject,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useTrackingId } from \"../../hooks\";\nimport { DataTrackingId, IanaZone } from \"../../types\";\nimport Calendar, {\n CalendarProps,\n CalendarRangeValue,\n CalendarValue,\n} from \"../Calendar\";\nimport { TextFieldProps } from \"../TextField\";\nimport {\n DateFieldCommonProps,\n DateFieldRangeProps,\n DateFieldSingleProps,\n} from \"./types\";\nimport { childrenToString, supportsPopover } from \"../../internal/functions\";\nimport InputMask from \"../InputMask\";\nimport Icon from \"../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport { DateTime } from \"luxon\";\nimport { isoToDateFormat } from \"./internal/isoToDateFormat\";\nimport { isValidDate, toDateString } from \"../Calendar/internal/utils\";\nimport Popover from \"../Popover\";\nimport {\n DateFieldLegacy,\n DateFieldLegacyProps,\n} from \"./internal/DateFieldLegacy\";\nimport { mergeRefs } from \"../../hooks/useMergeRefs/useMergeRefs\";\n\nconst RANGE_DIVIDER = \" – \";\n\n/**\n * Data structure for a single date selection\n */\nexport type DateSelect = {\n /** The formatted date string value */\n value: string;\n /** The ISO date string or null if invalid */\n date: string | null | undefined;\n /** Whether the date is valid according to constraints */\n isValid: boolean;\n};\n\n/**\n * Data structure for a date range selection\n */\nexport type DateRangeSelect = {\n /** The start date selection */\n start?: DateSelect;\n /** The end date selection */\n end?: DateSelect;\n /** The combined formatted range string */\n value: string;\n};\n\n/**\n * Props for the DateField component\n */\nexport type DateFieldProps = Omit<\n CalendarProps,\n \"onChange\" | \"value\" | \"defaultValue\"\n> &\n Omit<\n TextFieldProps,\n | \"prefix\"\n | \"suffix\"\n | \"hint\"\n | \"onChange\"\n | \"showCounter\"\n | \"value\"\n | \"defaultValue\"\n > &\n DataTrackingId &\n DateFieldCommonProps &\n (DateFieldSingleProps | DateFieldRangeProps);\n\n/**\n * DateField component for selecting dates with calendar popup and input validation\n * @deprecated Use DateFieldSingle or DateFieldRange instead\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 popoverRootRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n\n const trackingId = useTrackingId({\n name: \"DateField\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n // DateField\n openCalendar,\n onFocus,\n onBlur,\n onChange,\n onClick,\n format = \"MM/dd/yyyy\",\n disableHint,\n\n // Calendar\n minDate,\n maxDate,\n unavailableDates,\n unavailable,\n startDay,\n defaultValue,\n value: inputValue,\n\n // Shared\n // locale = Intl.DateTimeFormat().resolvedOptions().locale as Locale,\n defaultTimeZone = Intl.DateTimeFormat().resolvedOptions()\n .timeZone as IanaZone,\n range,\n\n // Input\n required,\n ...inputProps\n } = props;\n\n const [internalValue, setInternalValue] = useState<\n DateSelect | DateRangeSelect | undefined\n >();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const hint = useMemo(\n () => (disableHint ? undefined : `Format: ${format.replace(/M/g, \"m\")}`),\n [format, disableHint],\n );\n\n useEffect(() => {\n // Set internalValue from defaultValue\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 newValue: DateRangeSelect = {\n start: {\n value: isoToDateFormat(defaultValue.start ?? \"\", format),\n date: toDateString(startDate),\n isValid:\n startDate.isValid &&\n 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:\n startDate.isValid &&\n 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:\n isoToDateFormat(defaultValue.start ?? \"\", format) +\n RANGE_DIVIDER +\n isoToDateFormat(defaultValue.end ?? \"\", format),\n };\n setInternalValue(newValue);\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:\n date.isValid &&\n 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 } as DateSelect;\n setInternalValue(newValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const getCurrentValue = () => {\n if (inputValue !== undefined) {\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: DateRangeSelect = {\n start: {\n value: isoToDateFormat(inputValue.start ?? \"\", format),\n date: toDateString(startDate),\n isValid:\n startDate.isValid &&\n 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:\n startDate.isValid &&\n 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:\n isoToDateFormat(inputValue.start ?? \"\", format) +\n RANGE_DIVIDER +\n 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:\n date.isValid &&\n 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 } as DateSelect;\n }\n return internalValue;\n };\n\n const handleInputFocus: FocusEventHandler<HTMLInputElement> = (ev) => {\n // DO NOT OPEN THE CALENDAR ON KEYBOARD OR MANUAL FOCUS EVENT\n onFocus?.(ev);\n };\n\n const handleInputBlur: FocusEventHandler<HTMLInputElement> = (ev) => {\n if (!popoverContentRef.current?.contains(ev.relatedTarget)) {\n onBlur?.(ev);\n }\n };\n\n const handleInputKeyDown: KeyboardEventHandler<HTMLInputElement> = (ev) => {\n if (ev.key === \"ArrowDown\") {\n popoverRootRef.current?.openPopover();\n requestAnimationFrame(() => {\n popoverContentRef.current?.querySelector(\"button\")?.focus();\n });\n }\n };\n\n const handleInputClick: MouseEventHandler<HTMLInputElement> = (ev) => {\n popoverRootRef.current?.openPopover();\n onClick?.(ev);\n };\n\n const handleInputChange: ChangeEventHandler<HTMLInputElement> = (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: DateRangeSelect = {\n start: {\n value: parts[0],\n date: toDateString(startDate),\n isValid:\n startDate.isValid &&\n 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:\n startDate.isValid &&\n 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: DateSelect = {\n value: ev.target.value,\n date: toDateString(date),\n isValid:\n date.isValid &&\n 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\n const handleCalendarSelection = (\n data: { value: CalendarValue } | { value: CalendarRangeValue },\n ) => {\n if (range) {\n const startDate = (data.value as CalendarRangeValue)?.start ?? \"\";\n const endDate = (data.value as CalendarRangeValue)?.end ?? \"\";\n\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\n const newDateRange: DateRangeSelect = {\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 event = {\n target: {\n value: startValue + RANGE_DIVIDER + endValue,\n },\n } as ChangeEvent<HTMLInputElement>;\n handleInputChange(event);\n return;\n }\n const date = data.value as CalendarValue;\n const val = DateTime.fromISO(date || \"\", {\n zone: defaultTimeZone,\n });\n\n const value = val.toFormat(format);\n const newDate: DateSelect = {\n value,\n date,\n isValid: true,\n };\n setInternalValue(newDate);\n const event = {\n target: {\n value,\n },\n } as ChangeEvent<HTMLInputElement>;\n handleInputChange(event);\n };\n\n const currentValue = getCurrentValue();\n\n const calendar = range ? (\n <Calendar\n range\n defaultFocusedDate={(internalValue as DateRangeSelect)?.start?.date}\n value={{\n start: (currentValue as DateRangeSelect)?.start?.date || undefined,\n end: (currentValue as DateRangeSelect)?.end?.date || undefined,\n }}\n onSelection={handleCalendarSelection}\n minDate={minDate}\n maxDate={maxDate}\n unavailableDates={unavailableDates}\n unavailable={unavailable}\n defaultTimeZone={defaultTimeZone}\n startDay={startDay}\n _disableAutofocus\n />\n ) : (\n <Calendar\n defaultFocusedDate={(internalValue as DateSelect)?.date}\n value={(currentValue as DateSelect)?.date || undefined}\n onSelection={handleCalendarSelection}\n minDate={minDate}\n maxDate={maxDate}\n unavailableDates={unavailableDates}\n unavailable={unavailable}\n defaultTimeZone={defaultTimeZone}\n startDay={startDay}\n _disableAutofocus\n />\n );\n\n if (!supportsPopover())\n return <DateFieldLegacy {...(props as DateFieldLegacyProps)} ref={ref} />;\n return (\n <Popover\n ref={popoverRootRef}\n placement=\"bottom-start\"\n disableFlipFallback\n disableTriggerFocus\n >\n <Popover.Trigger>\n {({ ref: iRef }) => {\n const mergedRef = mergeRefs([\n inputRef,\n iRef as RefObject<HTMLInputElement>,\n ]);\n return range ? (\n <InputMask\n mask={\"99/99/9999\" + RANGE_DIVIDER + \"99/99/9999\"}\n ref={mergedRef}\n onChange={handleInputChange}\n value={(currentValue as DateRangeSelect)?.value}\n inputProps={{\n onFocus: handleInputFocus,\n prefix: <Icon svg={Event} />,\n onBlur: handleInputBlur,\n onKeyDown: handleInputKeyDown,\n onClick: handleInputClick,\n hint,\n required,\n [\"data-tracking-id\"]: trackingId,\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 ) : (\n <InputMask\n mask={\"99/99/9999\"}\n ref={mergedRef}\n onChange={handleInputChange}\n value={(currentValue as DateSelect)?.value}\n inputProps={{\n onFocus: handleInputFocus,\n prefix: <Icon svg={Event} />,\n onBlur: handleInputBlur,\n onKeyDown: handleInputKeyDown,\n onClick: handleInputClick,\n hint,\n autoComplete: \"off\",\n required,\n [\"data-tracking-id\"]: trackingId,\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 </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n data-calendar-popover\n onBlur={handleInputBlur}\n >\n {calendar}\n </Popover.Content>\n </Popover>\n );\n },\n);\nDateField.displayName = \"DateField\";\n"],"names":["RANGE_DIVIDER","Event","newValue","data","event"],"mappings":"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"}
package/dist/DateField.js CHANGED
@@ -1,2 +1,2 @@
1
- export { D as DateField, D as default } from './DateField-C43nfkbx.js';
1
+ export { D as DateField, D as default } from './DateField-qHdgwSlB.js';
2
2
  //# sourceMappingURL=DateField.js.map
@@ -1,22 +1,21 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { c as maskitoDateRangeOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito, b as maskitoParseDate } from './index.esm-BwMVvxTV.js';
3
- import { T as TextField } from './TextField-CFWs3lm9.js';
3
+ import { T as TextField } from './TextField-D9gD-34Q.js';
4
4
  import { forwardRef, useState, useRef, useEffect, useMemo, useImperativeHandle, useCallback } from 'react';
5
5
  import { u as useMergeRefs } from './DrawerContext-D4tWTLVf.js';
6
- import { D as DateTime, C as Calendar } from './Calendar-X9qUi6Vx.js';
6
+ import { D as DateTime, C as Calendar } from './Calendar-Cn0fOgog.js';
7
7
  import { I as Icon } from './Icon-D8SPKeO4.js';
8
8
  import { S as SvgEvent } from './event-BEJFimi3.js';
9
9
  import { m as makeZeroShortcutPreprocessor } from './makeZeroShortcutPreprocessor-CxsiGTRW.js';
10
- import { D as DateModeToPlaceholderMap, a as DateModeToFormatMap, c as convertStringToDate, v as validateDate, u as useDateFieldOrchestration } from './useDateFieldOrchestration-DyAc3gPJ.js';
10
+ import { D as DateModeToPlaceholderMap, a as DateModeToFormatMap, c as convertStringToDate, v as validateDate } from './utils-CnKBdBNm.js';
11
11
  import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
12
12
  import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
13
- import { P as Popover } from './Popover-CrksxqKk.js';
14
- import { u as useFocusWithin } from './useFocusWithin-BhhgRXdZ.js';
13
+ import { P as Popover } from './Popover-v8R920kj.js';
14
+ import { m as mergeRefs } from './useMergeRefs-Dfmtq9cI.js';
15
15
  import { u as usePopoverSupport } from './usePopoverSupport-CWTCDfN2.js';
16
16
  import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
17
17
  import { useTrackingId } from './useTrackingId.js';
18
- import { u as useMergeRefs$1 } from './useMergeRefs-Bde85AWI.js';
19
- import { u as usePopoverCloseDelayWorkaround } from './usePopoverCloseDelayWorkaround-BZcjPkvT.js';
18
+ import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
20
19
 
21
20
  const datePlaceholderMask = ({
22
21
  mode,
@@ -270,7 +269,8 @@ const DateFieldRangeCalendar = ({
270
269
  dates: unavailable.dates?.map((d) => d.toISODate() ?? ""),
271
270
  daysOfWeek: unavailable.daysOfWeek
272
271
  } : void 0,
273
- _disableAutofocus: true
272
+ _disableAutofocus: true,
273
+ _disableFocus: true
274
274
  },
275
275
  `${startDate?.toISODate()}-${endDate?.toISODate()}`
276
276
  );
@@ -422,10 +422,20 @@ const DateFieldRange = (props) => {
422
422
  onChange: onChangeProp,
423
423
  ...rest
424
424
  } = props;
425
+ const popoverRef = useRef(null);
426
+ const handleInputKeyDown = (ev) => {
427
+ if (ev.key === "ArrowDown") {
428
+ ev.preventDefault();
429
+ popoverRef.current?.openPopover();
430
+ requestAnimationFrame(() => {
431
+ popoverContentRef.current?.querySelector("button")?.focus();
432
+ });
433
+ }
434
+ };
425
435
  const { props: wrapperProps } = useFocusWithin({
426
436
  onBlur: (e) => {
427
437
  onBlur?.(e);
428
- setCalendarOpen(false);
438
+ popoverRef.current?.closePopover();
429
439
  },
430
440
  onFocus
431
441
  });
@@ -438,9 +448,7 @@ const DateFieldRange = (props) => {
438
448
  onChange: onChangeProp
439
449
  });
440
450
  const inputRef = useRef(null);
441
- const [popoverTriggerRef, setPopoverTriggerRef] = useState();
442
451
  const popoverContentRef = useRef(null);
443
- const combinedRef = useMergeRefs$1([popoverTriggerRef, inputRef]);
444
452
  const popoverSupported = usePopoverSupport();
445
453
  const handleChange = (change) => {
446
454
  const sharedConstraints = {
@@ -467,18 +475,6 @@ const DateFieldRange = (props) => {
467
475
  defaultValueProp: defaultValue,
468
476
  onChange: handleChange
469
477
  });
470
- const {
471
- calendarOpen,
472
- setCalendarOpen,
473
- handleCalendarKeyDown,
474
- handleInputKeyDown
475
- } = useDateFieldOrchestration({
476
- inputRef,
477
- calendarDefaultOpen: false,
478
- popoverContentRef,
479
- disableCalendar
480
- });
481
- const shouldShowCalendar = usePopoverCloseDelayWorkaround(calendarOpen);
482
478
  const currentValidity = useMemo(() => {
483
479
  return validateDateRange({
484
480
  required,
@@ -496,55 +492,58 @@ const DateFieldRange = (props) => {
496
492
  }
497
493
  });
498
494
  }, [required, startDate, endDate, minDate, maxDate, unavailable]);
499
- const justTheField = /* @__PURE__ */ jsx(
500
- MaskedDateRangeInput,
501
- {
502
- "data-tracking-id": trackingId,
503
- ...rest,
504
- mode,
505
- ref: combinedRef,
506
- startDate: startDate ?? null,
507
- endDate: endDate ?? null,
508
- onChange: handleInputChange,
509
- disableHint: rest.disableHint,
510
- onKeyDown: handleInputKeyDown,
511
- onClick: () => setCalendarOpen(true),
512
- required,
513
- autoComplete: "off",
514
- "data-date-range-valid": currentValidity,
515
- onFocus: !disableCalendar && !popoverSupported ? onFocus : void 0,
516
- onBlur: !disableCalendar && !popoverSupported ? onBlur : void 0
517
- }
518
- );
495
+ const commonFieldProps = {
496
+ ...rest,
497
+ mode,
498
+ onChange: handleInputChange,
499
+ startDate: startDate ?? null,
500
+ endDate: endDate ?? null,
501
+ required,
502
+ autoComplete: "off",
503
+ "data-date-range-valid": currentValidity,
504
+ "data-tracking-id": trackingId
505
+ };
506
+ const justTheField = /* @__PURE__ */ jsx(MaskedDateRangeInput, { ...commonFieldProps, ref: inputRef });
519
507
  if (disableCalendar || !popoverSupported) {
520
508
  return justTheField;
521
509
  }
522
510
  return /* @__PURE__ */ jsx("div", { ...wrapperProps, children: /* @__PURE__ */ jsxs(
523
511
  Popover,
524
512
  {
525
- open: calendarOpen,
526
- modal: true,
513
+ ref: popoverRef,
527
514
  placement: "bottom-start",
528
515
  disableFlipFallback: true,
529
- disableTriggerFocus: true,
530
- onClose: () => setCalendarOpen(false),
531
516
  disableAutoUpdate: true,
532
- onOutsidePress: () => setCalendarOpen(false),
533
517
  children: [
534
- /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef }) => {
535
- setPopoverTriggerRef(iRef);
536
- return justTheField;
518
+ /* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef, onKeyDown }) => {
519
+ const mergedRef = mergeRefs([
520
+ inputRef,
521
+ iRef
522
+ ]);
523
+ return /* @__PURE__ */ jsx(
524
+ MaskedDateRangeInput,
525
+ {
526
+ ...commonFieldProps,
527
+ ref: mergedRef,
528
+ onKeyDown: (ev) => {
529
+ onKeyDown?.(ev);
530
+ handleInputKeyDown(ev);
531
+ },
532
+ onClick: () => popoverRef.current?.openPopover(),
533
+ onFocus,
534
+ onBlur
535
+ }
536
+ );
537
537
  } }),
538
- /* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: shouldShowCalendar && /* @__PURE__ */ jsx(
538
+ /* @__PURE__ */ jsx(Popover.Content, { ref: popoverContentRef, "data-testid": "calendar-popover", children: /* @__PURE__ */ jsx(
539
539
  DateFieldRangeCalendar,
540
540
  {
541
541
  startDate,
542
542
  endDate,
543
- onKeyDown: handleCalendarKeyDown,
544
543
  onSelection: (v) => {
545
544
  if (v.endDate) {
546
545
  inputRef.current?.focus();
547
- setCalendarOpen(false);
546
+ popoverRef.current?.closePopover();
548
547
  }
549
548
  handleCalendarSelection(v);
550
549
  },
@@ -560,4 +559,4 @@ const DateFieldRange = (props) => {
560
559
  DateFieldRange.displayName = "DateFieldRange";
561
560
 
562
561
  export { DateFieldRange as D, MaskedDateRangeInput as M, useDateFieldRangeState as a, DateFieldRangeCalendar as b, useDateFieldRangeConversion as u };
563
- //# sourceMappingURL=DateFieldRange-g7n5QYww.js.map
562
+ //# sourceMappingURL=DateFieldRange-GNpWV70g.js.map