@servicetitan/anvil2 1.46.1 → 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.
- package/CHANGELOG.md +48 -0
- package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
- package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
- package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
- package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
- package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
- package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
- package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/Badge-DCA9mfc2.js.map +1 -1
- package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
- package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
- package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
- package/dist/Button.css +48 -48
- package/dist/Button.js +1 -1
- package/dist/Button.module-C1g9rrJs.js +25 -0
- package/dist/Button.module-C1g9rrJs.js.map +1 -0
- package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
- package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
- package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
- package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BQ5F2ENO.js → Calendar-Cn0fOgog.js} +366 -169
- package/dist/Calendar-Cn0fOgog.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/Card-vTYeSkxt.js.map +1 -1
- package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-C5PX8wur.js} +2 -2
- package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-C5PX8wur.js.map} +1 -1
- package/dist/{Checkbox-DDrmVC-u.js → Checkbox-DAODkzN3.js} +2 -2
- package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-DAODkzN3.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
- package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-B9nesJuc.js → Combobox-DO8cIvRQ.js} +146 -55
- package/dist/Combobox-DO8cIvRQ.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-DXxPsRtf.js → DateField-qHdgwSlB.js} +36 -102
- package/dist/DateField-qHdgwSlB.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-GNpWV70g.js} +57 -58
- package/dist/DateFieldRange-GNpWV70g.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-B9caNibj.js} +53 -55
- package/dist/DateFieldSingle-B9caNibj.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-BmeKGaDc.js} +4 -4
- package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-DPH13VCK.js} +4 -4
- package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/Details-CF8DImjw.js.map +1 -1
- package/dist/{Dialog-CgkrvrQu.js → Dialog-BHFLnFNQ.js} +7 -7
- package/dist/{Dialog-CgkrvrQu.js.map → Dialog-BHFLnFNQ.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Divider-DJe8kLf2.js.map +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +2 -2
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CM4ZbAro.js → Drawer-BDA7Sjj9.js} +7 -7
- package/dist/{Drawer-CM4ZbAro.js.map → Drawer-BDA7Sjj9.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
- package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
- package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
- package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-Bgl3iu13.js} +2 -2
- package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
- package/dist/Flex-BdQMekvA.js.map +1 -1
- package/dist/Grid-MGUC698u.js.map +1 -1
- package/dist/Helper-BkIDJqgA.js.map +1 -1
- package/dist/Icon-D8SPKeO4.js.map +1 -1
- package/dist/{InputMask-_F139qFu.js → InputMask-B13KumrK.js} +3 -3
- package/dist/{InputMask-_F139qFu.js.map → InputMask-B13KumrK.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/Layout-CUUb2PVr.js.map +1 -1
- package/dist/Link-eRsLWPaQ.js.map +1 -1
- package/dist/LinkButton-2lXfrVoU.js.map +1 -1
- package/dist/{ListView-pb3rIcze.js → ListView-C-cVQZHp.js} +3 -3
- package/dist/{ListView-pb3rIcze.js.map → ListView-C-cVQZHp.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
- package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
- package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
- package/dist/{Menu-DEVZz9xZ.js → Menu-DUZqzpwg.js} +8 -10
- package/dist/Menu-DUZqzpwg.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-CkZZrkYC.js → NumberField-DWPAy1eG.js} +11 -11
- package/dist/{NumberField-CkZZrkYC.js.map → NumberField-DWPAy1eG.js.map} +1 -1
- package/dist/NumberField.css +9 -6
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-BMDkbDcU.js → Page-BfH2mGSt.js} +11 -11
- package/dist/Page-BfH2mGSt.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BJsCppgW.js → Pagination-B_G9QcHf.js} +48 -24
- package/dist/Pagination-B_G9QcHf.js.map +1 -0
- package/dist/Pagination.css +6 -6
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-r26xMIfm.js → Popover-v8R920kj.js} +137 -196
- package/dist/Popover-v8R920kj.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
- package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-BWN2yv1s.js} +2 -2
- package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C89VCMXd.js → Radio-C5riI-do.js} +2 -2
- package/dist/{Radio-C89VCMXd.js.map → Radio-C5riI-do.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-B7O06pVu.js} +2 -2
- package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
- package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
- package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-CLDdes8W.js} +4 -4
- package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-BTYZg9TG.js → SelectCard-Ca07K1FW.js} +3 -3
- package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-CaXX1SHG.js} +3 -3
- package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-C7TLCna1.js} +4 -4
- package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
- package/dist/{SideNav-CBAzYyML.js → SideNav-nqq5sAwz.js} +3 -3
- package/dist/SideNav-nqq5sAwz.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Spinner-wmO8Epw0.js.map +1 -1
- package/dist/SrOnly-CTsYSuby.js.map +1 -1
- package/dist/{Stepper-D-fOH9TF.js → Stepper-DQ_Hm-AI.js} +4 -4
- package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/Switch-C2ddZcr9.js.map +1 -1
- package/dist/{Tab-wNucMTgo.js → Tab-CzNx3IdF.js} +45 -37
- package/dist/Tab-CzNx3IdF.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Text-BqvcbXyp.js.map +1 -1
- package/dist/{TextField-D8fow9j7.js → TextField-D9gD-34Q.js} +3 -3
- package/dist/{TextField-D8fow9j7.js.map → TextField-D9gD-34Q.js.map} +1 -1
- package/dist/{TextField-BiHxlzE3.js → TextField-uCHgwO5F.js} +2 -2
- package/dist/{TextField-BiHxlzE3.js.map → TextField-uCHgwO5F.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-BdVJJlbP.js → Textarea-B2-6m291.js} +3 -3
- package/dist/{Textarea-BdVJJlbP.js.map → Textarea-B2-6m291.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
- package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
- package/dist/{TimeField-CmbErrsZ.js → TimeField-B5Jgy-Zg.js} +363 -360
- package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-B7zUwJOt.js → Toaster-CHyB-Mxs.js} +3 -3
- package/dist/{Toaster-B7zUwJOt.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
- package/dist/{Toaster-9cpG_tWR.js → Toaster-CyiGDKMh.js} +18 -18
- package/dist/{Toaster-9cpG_tWR.js.map → Toaster-CyiGDKMh.js.map} +1 -1
- package/dist/{Toolbar-D4zuUFhb.js → Toolbar-BXGTrR6o.js} +19 -18
- package/dist/Toolbar-BXGTrR6o.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BI3Xs75X.js → Tooltip-DhtVlhah.js} +9 -3
- package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-DhtVlhah.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
- package/dist/beta.js +1 -1
- package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +5 -0
- package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
- package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
- package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
- package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
- package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
- package/dist/components/Popover/Popover.d.ts +136 -1
- package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
- package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
- package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
- package/dist/components/TimeField/TimeField.d.ts +4 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
- package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
- package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
- package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
- package/dist/index-tZvMCc77.js.map +1 -1
- package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
- package/dist/index.esm-BwMVvxTV.js.map +1 -0
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
- package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
- package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
- package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
- package/dist/proxy-BbFHSE6L.js.map +1 -0
- package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
- package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
- package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
- package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
- package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
- package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
- package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
- package/dist/{useDialogTransitionStates-2NaE_noq.js → useKeyboardFocusables-ek2mYel-.js} +46 -5
- package/dist/useKeyboardFocusables-ek2mYel-.js.map +1 -0
- package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
- package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
- package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
- package/dist/useMergeRefs.js +1 -1
- package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-C5AZE_I6.js} +6 -62
- package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
- package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
- package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
- package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
- package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
- package/dist/usePrevious-Bvq-5auG.js.map +1 -1
- package/dist/useSize.js.map +1 -1
- package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
- package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
- package/dist/useSwipe.js +1 -1
- package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
- package/dist/useTrackingId.js.map +1 -1
- package/dist/utils-CnKBdBNm.js +50 -0
- package/dist/utils-CnKBdBNm.js.map +1 -0
- package/package.json +12 -18
- package/dist/Button.module-pUNSKoVC.js +0 -25
- package/dist/Button.module-pUNSKoVC.js.map +0 -1
- package/dist/Calendar-BQ5F2ENO.js.map +0 -1
- package/dist/Combobox-B9nesJuc.js.map +0 -1
- package/dist/DateField-DXxPsRtf.js.map +0 -1
- package/dist/DateFieldRange-Xauviu1w.js.map +0 -1
- package/dist/DateFieldSingle-yLnwpVzd.js.map +0 -1
- package/dist/DrawerContext-DboTgTmo.js.map +0 -1
- package/dist/Menu-DEVZz9xZ.js.map +0 -1
- package/dist/Page-BMDkbDcU.js.map +0 -1
- package/dist/Pagination-BJsCppgW.js.map +0 -1
- package/dist/Popover-r26xMIfm.js.map +0 -1
- package/dist/SideNav-CBAzYyML.js.map +0 -1
- package/dist/Tab-wNucMTgo.js.map +0 -1
- package/dist/TimeField-CmbErrsZ.js.map +0 -1
- package/dist/Toolbar-D4zuUFhb.js.map +0 -1
- package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
- package/dist/index.esm-D889iexm.js.map +0 -1
- package/dist/proxy-CreWmH-e.js.map +0 -1
- package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
- package/dist/useDateFieldOrchestration-BNJCsRkS.js +0 -138
- package/dist/useDateFieldOrchestration-BNJCsRkS.js.map +0 -1
- package/dist/useDialogTransitionStates-2NaE_noq.js.map +0 -1
- package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
- package/dist/useMergeRefs-Bde85AWI.js +0 -21
- package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
- package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateField-DXxPsRtf.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, useMergeRefs } 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 {\n useKeyboardFocusables,\n usePopoverCloseDelayWorkaround,\n} from \"../../internal/hooks\";\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\";\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 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 const [open, _setOpen] = useState(openCalendar || false);\n const setOpen = (val: boolean) => {\n if (open && !val) {\n inputRef.current?.focus();\n }\n _setOpen(val);\n };\n\n const [internalValue, setInternalValue] = useState<\n DateSelect | DateRangeSelect | undefined\n >();\n\n const inputRef = useRef<HTMLInputElement>(null);\n const popperRef = useRef<HTMLDivElement>(null);\n const documentRef = useRef<HTMLElement>(document.body);\n const hint = useMemo(\n () => (disableHint ? undefined : `Format: ${format.replace(/M/g, \"m\")}`),\n [format, disableHint],\n );\n\n const { focusables } = useKeyboardFocusables(documentRef, {\n observeChange: true,\n });\n\n const { focusables: popoverFocusables } = useKeyboardFocusables(popperRef, {\n observeChange: true,\n });\n\n const pageFocusables = focusables?.filter(\n (item) => !popoverFocusables?.includes(item),\n );\n\n const [popoverRef, setPopoverRef] = useState<RefObject<HTMLInputElement>>();\n const combinedRef = useMergeRefs([popoverRef, inputRef]);\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 (!popperRef.current?.contains(ev.relatedTarget)) {\n setOpen(false);\n onBlur?.(ev);\n }\n };\n\n const handleInputKeyDown: KeyboardEventHandler<HTMLInputElement> = (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\n const handleCalendarKeyDown: KeyboardEventHandler<HTMLDivElement> = (\n ev,\n ) => {\n switch (ev.key) {\n case \"Escape\":\n setOpen(false);\n inputRef.current?.focus();\n }\n };\n\n const handleInputClick: MouseEventHandler<HTMLInputElement> = (ev) => {\n setOpen(true);\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 focusToCalendar = () => {\n if (popperRef.current) {\n const currentFocusable =\n popperRef.current.querySelectorAll('[tabindex = \"0\"]')[0];\n if (currentFocusable) {\n (currentFocusable as HTMLButtonElement).focus();\n }\n }\n };\n\n const handleClickOutside = () => {\n setOpen(false);\n };\n\n const currentValue = getCurrentValue();\n\n const popoverOpen = openCalendar ?? open;\n\n const shouldShowCalendar = usePopoverCloseDelayWorkaround(popoverOpen);\n\n const calendar = range ? (\n <Calendar\n range\n onKeyDown={handleCalendarKeyDown}\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 />\n ) : (\n <Calendar\n onKeyDown={handleCalendarKeyDown}\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 />\n );\n\n if (!supportsPopover())\n return <DateFieldLegacy {...(props as DateFieldLegacyProps)} ref={ref} />;\n return (\n <Popover\n open={popoverOpen}\n modal\n placement=\"bottom-start\"\n disableFlipFallback\n disableTriggerFocus\n onOutsidePress={handleClickOutside}\n >\n <Popover.Trigger>\n {({ ref: iRef }) => {\n setPopoverRef(iRef as RefObject<HTMLInputElement>);\n return range ? (\n <InputMask\n mask={\"99/99/9999\" + RANGE_DIVIDER + \"99/99/9999\"}\n ref={combinedRef}\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={combinedRef}\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 ref={popperRef} data-calendar-popover>\n {shouldShowCalendar && calendar}\n </Popover.Content>\n </Popover>\n );\n },\n);\nDateField.displayName = \"DateField\";\n"],"names":["RANGE_DIVIDER","Event","useMergeRefs","newValue","data","event"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateFieldRange-Xauviu1w.js","sources":["../src/components/DateFieldRange/internal/maskito/dateRangePlaceholderMask.ts","../src/components/DateFieldRange/internal/MaskedDateRangeInput.tsx","../src/components/DateFieldRange/internal/DateFieldRangeCalendar.tsx","../src/components/DateFieldRange/internal/useDateFieldRangeConversion.ts","../src/components/DateFieldRange/internal/useDateFieldRangeState.ts","../src/components/DateFieldRange/internal/utils.ts","../src/components/DateFieldRange/DateFieldRange.tsx"],"sourcesContent":["import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n MaskitoDateMode,\n maskitoDateRangeOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\n\nexport type DateMode = Extract<\n MaskitoDateMode,\n \"dd/mm/yyyy\" | \"mm/dd/yyyy\" | \"yyyy/mm/dd\"\n>;\n\nconst datePlaceholderMask = ({\n mode,\n dateSeparator = \"/\",\n rangeSeparator = \" - \",\n placeholder,\n}: {\n mode: DateMode;\n dateSeparator?: string;\n rangeSeparator?: string;\n placeholder: string;\n}) => {\n const dateRangeOptions = maskitoDateRangeOptionsGenerator({\n mode,\n dateSeparator,\n rangeSeparator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateRangeOptions,\n plugins: plugins.concat(dateRangeOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateRangeOptions.preprocessors,\n makeZeroShortcutPreprocessor(placeholder, dateSeparator),\n ],\n postprocessors: [\n // NOTE this is super fragile. If Maskito maintainers change the order of the post-processors, this will break.\n // The last postprocessor is the date swap postprocessor, which we don't want to run.\n // A unit test is added to ensure this doesn't break on a dependency update.\n ...dateRangeOptions.postprocessors.slice(0, -1),\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default datePlaceholderMask;\n","import { maskitoParseDate } from \"@maskito/kit\";\nimport { useMaskito } from \"@maskito/react\";\nimport { TextField, TextFieldProps } from \"../../TextField/internal/TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { DateTime } from \"luxon\";\nimport { Icon } from \"../../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport dateRangePlaceholderMask from \"./maskito/dateRangePlaceholderMask\";\nimport {\n DateModeToFormatMap,\n DateModeToPlaceholderMap,\n} from \"../../DateFieldSingle/internal/constants\";\nimport { DateMode } from \"../../DateFieldSingle/types\";\nimport { usePrevious } from \"../../../internal/hooks\";\n\nconst RANGE_SEPARATOR = \" - \";\n\nexport type MaskedDateRangeInputChange = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedDateRangeInputChangeHandler = (\n change: MaskedDateRangeInputChange,\n) => void;\n\nexport type MaskedDateRangeInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\" | \"prefix\"\n> & {\n onChange: MaskedDateRangeInputChangeHandler;\n mode?: DateMode;\n startDate: DateTime | null;\n endDate: DateTime | null;\n disableHint?: boolean;\n};\n\nexport type MaskedDateRangeInputRef = HTMLInputElement & {\n setDateRange: (startDate: DateTime | null, endDate: DateTime | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDates` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateRangeInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n * @param props.startDate - The start date.\n * @param props.endDate - The end date.\n * @param props.disableHint - Whether to disable the hint.\n */\nexport const MaskedDateRangeInput = forwardRef<\n MaskedDateRangeInputRef,\n MaskedDateRangeInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd/yyyy\",\n startDate,\n endDate,\n disableHint = false,\n ...props\n },\n ref,\n ) => {\n const halfPlaceholder = DateModeToPlaceholderMap[mode];\n const fullPlaceholder = `${halfPlaceholder}${RANGE_SEPARATOR}${halfPlaceholder}`;\n\n // Tracks the value of the input as it is being typed.\n const [inputValue, setInputValue] = useState(fullPlaceholder);\n\n const { options, removePlaceholder } = dateRangePlaceholderMask({\n mode,\n placeholder: fullPlaceholder,\n dateSeparator: \"/\",\n rangeSeparator: RANGE_SEPARATOR,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousStartDate = usePrevious(startDate);\n const previousEndDate = usePrevious(endDate);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((previousInputValue) =>\n swapMode(previousInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, fullPlaceholder, previousMode]);\n\n // Update the input value when the parent's start date or end date changes.\n useEffect(() => {\n if (startDate === undefined || endDate === undefined) return;\n // Return early if the values haven't actually changed.\n if (startDate === previousStartDate && endDate === previousEndDate)\n return;\n if (\n // plus one just represents a date that is guaranteed to be different.\n startDate?.equals(previousStartDate ?? startDate?.plus({ days: 1 })) &&\n (endDate?.equals(previousEndDate ?? endDate?.plus({ days: 1 })) ||\n endDate === previousEndDate)\n )\n return;\n const startDateString =\n startDate?.toFormat(DateModeToFormatMap[mode]) ?? halfPlaceholder;\n const endDateString =\n endDate?.toFormat(DateModeToFormatMap[mode]) ?? halfPlaceholder;\n const newInputValue = `${startDateString}${RANGE_SEPARATOR}${endDateString}`;\n setInputValue(newInputValue);\n }, [\n startDate,\n endDate,\n mode,\n halfPlaceholder,\n previousStartDate,\n previousEndDate,\n ]);\n\n const currentParsedData = useMemo(() => {\n return parseRangeInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n startDate: newlyParsedStartDate,\n endDate: newlyParsedEndDate,\n isInputValid,\n isInputEmpty,\n isHalfEmpty,\n } = parseRangeInputValue(event.target.value, mode, removePlaceholder);\n\n // We only want to call onChange for substantive changes.\n // This is to avoid unnecessary re-renders of upstream components.\n const isValueDifferent =\n isInputValid !== currentParsedData.isInputValid || // The input has changed validity\n isInputEmpty !== currentParsedData.isInputEmpty || // The input has changed emptiness\n (newlyParsedStartDate === null) !==\n (currentParsedData.startDate === null) || // The start date has changed from empty to non-empty or vice versa\n (newlyParsedEndDate === null) !==\n (currentParsedData.endDate === null) || // The end date has changed from empty to non-empty or vice versa\n isHalfEmpty !== currentParsedData.isHalfEmpty || // The half has changed from empty to non-empty or vice versa\n (newlyParsedStartDate !== null &&\n currentParsedData.startDate !== null &&\n !newlyParsedStartDate.equals(currentParsedData.startDate)) || // The start date has changed\n (newlyParsedEndDate !== null &&\n currentParsedData.endDate !== null &&\n !newlyParsedEndDate.equals(currentParsedData.endDate)); // The end date has changed\n\n // If the value has not changed, we do not need to call onChange.\n if (!isValueDifferent) return;\n onChange?.({\n startDate: isInputEmpty\n ? null\n : (newlyParsedStartDate ?? startDate ?? null),\n endDate:\n isInputEmpty || isHalfEmpty\n ? null\n : (newlyParsedEndDate ?? endDate ?? null),\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedDateRangeInputRef;\n return Object.assign(input, {\n setDateRange: (\n startDate: DateTime | null,\n endDate: DateTime | null,\n ) => {\n const startDateString = startDate?.toFormat(\n DateModeToFormatMap[mode],\n );\n const endDateString = endDate?.toFormat(DateModeToFormatMap[mode]);\n const newInputValue = `${startDateString ?? halfPlaceholder}${RANGE_SEPARATOR}${endDateString ?? halfPlaceholder}`;\n setInputValue(newInputValue);\n },\n });\n }, [mode, halfPlaceholder]);\n\n return (\n <TextField\n ref={combinedRef}\n data-start-date={startDate?.toISODate() ?? \"\"}\n data-end-date={endDate?.toISODate() ?? \"\"}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n prefix={<Icon svg={Event} />}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n },\n);\n\nMaskedDateRangeInput.displayName = \"MaskedDateRangeInput\";\n\nfunction parseRangeInputValue(\n value: string,\n mode: DateMode,\n removePlaceholder: (value: string) => string,\n) {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [startDate, endDate] = valueMinusPlaceholder.split(RANGE_SEPARATOR);\n const startJsDate = maskitoParseDate(startDate, { mode });\n const endJsDate = endDate ? maskitoParseDate(endDate, { mode }) : null;\n const startLuxonDate = startJsDate\n ? DateTime.fromJSDate(startJsDate, { zone: \"utc\" })\n : null;\n const endLuxonDate = endJsDate\n ? DateTime.fromJSDate(endJsDate, { zone: \"utc\" })\n : null;\n return {\n startDate: startLuxonDate,\n endDate: endLuxonDate,\n isInputValid: !!(startLuxonDate && endLuxonDate), // input valid if both dates are filled\n isInputEmpty: valueMinusPlaceholder === \"\", // input empty if nothing is typed\n isHalfEmpty: endDate === undefined,\n };\n}\n\nfunction swapMode(inputString: string, previousMode: DateMode, mode: DateMode) {\n const halves = inputString.split(RANGE_SEPARATOR);\n const segments = halves.map((half) => half.split(\"/\"));\n\n let startDay, startMonth, startYear, endDay, endMonth, endYear;\n if (previousMode === \"mm/dd/yyyy\") {\n startDay = segments[0][1];\n startMonth = segments[0][0];\n startYear = segments[0][2];\n endDay = segments[1][1];\n endMonth = segments[1][0];\n endYear = segments[1][2];\n }\n if (previousMode === \"dd/mm/yyyy\") {\n startDay = segments[0][0];\n startMonth = segments[0][1];\n startYear = segments[0][2];\n endDay = segments[1][0];\n endMonth = segments[1][1];\n endYear = segments[1][2];\n }\n if (previousMode === \"yyyy/mm/dd\") {\n startDay = segments[0][2];\n startMonth = segments[0][1];\n startYear = segments[0][0];\n endDay = segments[1][2];\n endMonth = segments[1][1];\n endYear = segments[1][0];\n }\n\n if (mode === \"mm/dd/yyyy\") {\n return `${startMonth}/${startDay}/${startYear}${RANGE_SEPARATOR}${endMonth}/${endDay}/${endYear}`;\n }\n if (mode === \"dd/mm/yyyy\") {\n return `${startDay}/${startMonth}/${startYear}${RANGE_SEPARATOR}${endDay}/${endMonth}/${endYear}`;\n }\n if (mode === \"yyyy/mm/dd\") {\n return `${startYear}/${startMonth}/${startDay}${RANGE_SEPARATOR}${endYear}/${endMonth}/${endDay}`;\n }\n\n return inputString;\n}\n","import { DateTime, WeekdayNumbers } from \"luxon\";\nimport { Calendar, CalendarRangeValue } from \"../../Calendar/Calendar\";\nimport { useMemo } from \"react\";\nimport { usePrevious } from \"../../../internal/hooks\";\n\nexport type DateFieldRangeCalendarProps = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n onSelection: ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => void;\n minDate?: DateTime | null;\n maxDate?: DateTime | null;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: WeekdayNumbers[];\n };\n};\n\nexport const DateFieldRangeCalendar = ({\n startDate,\n endDate,\n onKeyDown,\n onSelection,\n minDate,\n maxDate,\n unavailable,\n}: DateFieldRangeCalendarProps) => {\n const previousStartDate = usePrevious(startDate);\n const previousEndDate = usePrevious(endDate);\n\n const handleCalendarSelection = (data: { value: CalendarRangeValue }) => {\n if (!data.value) return;\n const calStartDate = data.value.start\n ? DateTime.fromISO(data.value.start, { zone: \"utc\" })\n : null;\n const calEndDate = data.value.end\n ? DateTime.fromISO(data.value.end, { zone: \"utc\" })\n : null;\n onSelection({\n startDate: calStartDate,\n endDate: calEndDate,\n });\n };\n\n const defaultFocusedDate = useMemo(() => {\n // Nothing selected, focus today\n if (!startDate && !endDate) return DateTime.now().toISODate();\n if (!startDate) return endDate?.toISODate();\n if (!endDate) return startDate?.toISODate();\n if (endDate && !previousEndDate?.equals(endDate)) {\n return endDate.toISODate();\n } else if (startDate && !previousStartDate?.equals(startDate)) {\n return startDate.toISODate();\n }\n\n if (endDate) return endDate.toISODate();\n if (startDate) return startDate.toISODate();\n return DateTime.now().toISODate();\n }, [previousStartDate, previousEndDate, startDate, endDate]);\n\n return (\n <Calendar\n // Crappy hack because the Calendar does not update when the value changes.\n key={`${startDate?.toISODate()}-${endDate?.toISODate()}`}\n range={true}\n onKeyDown={onKeyDown}\n defaultFocusedDate={defaultFocusedDate}\n value={{\n start: startDate?.toISODate() || undefined,\n end: endDate?.toISODate() || undefined,\n }}\n onSelection={handleCalendarSelection}\n defaultTimeZone=\"UTC\"\n minDate={minDate?.toISODate() ?? undefined}\n maxDate={maxDate?.toISODate() ?? undefined}\n unavailable={\n unavailable\n ? {\n dates: unavailable.dates?.map((d) => d.toISODate() ?? \"\"),\n daysOfWeek: unavailable.daysOfWeek,\n }\n : undefined\n }\n _disableAutofocus\n />\n );\n};\n","import { useCallback, useMemo } from \"react\";\nimport { DateFieldRangeChange, DateFieldRangeProps } from \"../DateFieldRange\";\nimport { convertStringToDate } from \"../../DateFieldSingle/internal/utils\";\nimport { DateTime } from \"luxon\";\n\n/**\n * This hook is used to convert the string props of a DateFieldRange component to a DateTime format.\n *\n * @param props - The props of the DateFieldRange component.\n * @returns The normalized value, defaultValue, minDate, maxDate, and unavailable dates in DateTime format.\n * @internal This hook is not intended to be used directly in consumer code.\n */\nexport const useDateFieldRangeConversion = (props: DateFieldRangeProps) => {\n const { value, defaultValue, minDate, maxDate, unavailable, onChange } =\n props;\n\n const normalizedValue = useMemo(() => {\n if (value === null || value === undefined) return value;\n return {\n startDate: convertStringToDate(value.startDate) ?? null,\n endDate: convertStringToDate(value.endDate) ?? null,\n };\n }, [value]);\n\n const normalizedDefaultValue = useMemo(() => {\n if (defaultValue === null || defaultValue === undefined)\n return defaultValue;\n return {\n startDate: convertStringToDate(defaultValue.startDate) ?? null,\n endDate: convertStringToDate(defaultValue.endDate) ?? null,\n };\n }, [defaultValue]);\n\n const normalizedMinDate = useMemo(\n () => convertStringToDate(minDate),\n [minDate],\n );\n const normalizedMaxDate = useMemo(\n () => convertStringToDate(maxDate),\n [maxDate],\n );\n\n const normalizedUnavailableDates = useMemo(() => {\n return unavailable?.dates\n ?.map((date) => convertStringToDate(date))\n .filter((date) => date !== null && date !== undefined);\n }, [unavailable?.dates]);\n\n const handleChange = useCallback(\n (\n change: Omit<DateFieldRangeChange, \"startDate\" | \"endDate\"> & {\n startDate: DateTime | null;\n endDate: DateTime | null;\n },\n ) => {\n onChange?.({\n ...change,\n startDate: change.startDate?.toISODate() ?? null,\n endDate: change.endDate?.toISODate() ?? null,\n });\n },\n [onChange],\n );\n\n return {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: normalizedUnavailableDates,\n daysOfWeek: unavailable?.daysOfWeek,\n },\n onChange: handleChange,\n };\n};\n","import { DateTime } from \"luxon\";\nimport { useOptionallyControlledState } from \"../../../internal/hooks\";\nimport { MaskedDateRangeInputChange } from \"./MaskedDateRangeInput\";\n\nexport type DateFieldRangeStateChange = {\n startDate: DateTime | null;\n endDate: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type DateFieldRangeStateChangeHandler = (\n change: DateFieldRangeStateChange,\n) => void;\n\nexport type DateFieldRangeStateParam = {\n /**\n * The controlled value of the start date.\n */\n valueProp?: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n } | null;\n /**\n * The default value of the start date.\n */\n defaultValueProp?: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n } | null;\n /**\n * The function to call when the state changes.\n */\n onChange: DateFieldRangeStateChangeHandler;\n};\n\n/**\n * This hook is used to keep the state of a DateFieldRange component in sync with the input and calendar.\n */\nexport type DateFieldRangeState = {\n /**\n * The start date.\n */\n startDate: DateTime | null;\n /**\n * The end date.\n */\n endDate: DateTime | null;\n /**\n * The function to set the start date.\n */\n setStartDate: (date: DateTime | null) => void;\n /**\n * The function to set the end date.\n */\n setEndDate: (date: DateTime | null) => void;\n /**\n * The function to handle the input change.\n */\n handleInputChange: (change: MaskedDateRangeInputChange) => void;\n /**\n * The function to handle the calendar selection.\n */\n handleCalendarSelection: ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => void;\n};\n\n/**\n * This is a hook for keeping state in sync between a date input and calendar.\n */\nexport function useDateFieldRangeState({\n valueProp,\n defaultValueProp,\n onChange,\n}: DateFieldRangeStateParam): DateFieldRangeState {\n const [startDate, setStartDate] =\n useOptionallyControlledState<DateTime | null>({\n controlledValue:\n valueProp !== undefined ? valueProp?.startDate : undefined,\n defaultValue:\n defaultValueProp !== undefined\n ? defaultValueProp?.startDate\n : undefined,\n });\n const [endDate, setEndDate] = useOptionallyControlledState<DateTime | null>({\n controlledValue: valueProp !== undefined ? valueProp?.endDate : undefined,\n defaultValue:\n defaultValueProp !== undefined ? defaultValueProp?.endDate : undefined,\n });\n\n const setSharedValue = (value: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => {\n setStartDate(value.startDate);\n setEndDate(value.endDate);\n };\n\n const handleInputChange = (change: MaskedDateRangeInputChange) => {\n const range = change.isInputEmpty\n ? null\n : {\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n };\n\n onChange?.({\n startDate: range?.startDate ?? null,\n endDate: range?.endDate ?? null,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n });\n\n setStartDate(range?.startDate ?? null);\n setEndDate(range?.endDate ?? null);\n };\n\n const handleCalendarSelection = ({\n startDate,\n endDate,\n }: {\n startDate: DateTime | null;\n endDate: DateTime | null;\n }) => {\n setSharedValue({ startDate, endDate });\n onChange?.({\n startDate,\n endDate,\n isInputValid: true,\n isInputEmpty: false,\n });\n };\n\n return {\n startDate,\n endDate,\n setStartDate,\n setEndDate,\n handleInputChange,\n handleCalendarSelection,\n };\n}\n","import { DateTime } from \"luxon\";\nimport { validateDate } from \"../../DateFieldSingle/internal/utils\";\n\ntype DateConstraints = {\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n};\n\nexport function validateDateRange({\n required,\n startDate,\n endDate,\n startDateConstraints,\n endDateConstraints,\n}: {\n required?: boolean;\n startDate: DateTime | null;\n endDate: DateTime | null;\n startDateConstraints: DateConstraints;\n endDateConstraints: DateConstraints;\n}) {\n if (!required && !startDate && !endDate) return true;\n return (\n validateDate({\n date: startDate,\n constraints: { ...startDateConstraints, required: true },\n }) &&\n validateDate({\n date: endDate,\n constraints: { ...endDateConstraints, required: true },\n }) &&\n (!startDate || !endDate || startDate <= endDate)\n );\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport {\n MaskedDateRangeInput,\n MaskedDateRangeInputProps,\n MaskedDateRangeInputRef,\n} from \"./internal/MaskedDateRangeInput\";\nimport { DateMode } from \"../DateFieldSingle/types\";\nimport { DateFieldRangeCalendar } from \"./internal/DateFieldRangeCalendar\";\nimport { RefObject, useMemo, useRef, useState } from \"react\";\nimport { useDateFieldRangeConversion } from \"./internal/useDateFieldRangeConversion\";\nimport {\n DateFieldRangeStateChange,\n useDateFieldRangeState,\n} from \"./internal/useDateFieldRangeState\";\nimport {\n useFocusWithin,\n usePopoverCloseDelayWorkaround,\n usePopoverSupport,\n} from \"../../internal/hooks\";\nimport { validateDateRange } from \"./internal/utils\";\nimport { useDateFieldOrchestration } from \"../DateFieldSingle/internal/useDateFieldOrchestration\";\nimport Popover from \"../Popover\";\n\nexport type DateFieldRangeChange = {\n /**\n * The start date in ISO 8601 format.\n * @example \"2025-03-22\"\n */\n startDate: string | null;\n /**\n * The end date in ISO 8601 format.\n * @example \"2025-07-02\"\n */\n endDate: string | null;\n /**\n * Whether the input field contains two parsable dates.\n * This is not the same as the date range being valid.\n *\n */\n isInputValid: boolean;\n /**\n * Whether the input field is empty.\n */\n isInputEmpty: boolean;\n /**\n * Whether the start and end dates are valid according to the constraints.\n * Constraints include:\n * - Required\n * - Unavailable dates\n * - Unavailable days of the week\n * - Min date\n * - Max date\n */\n isDateRangeValid: boolean;\n};\n\nexport type DateFieldRangeChangeHandler = (\n change: DateFieldRangeChange,\n) => void;\n\nexport type DateFieldRangeValue = {\n startDate: string | null;\n endDate: string | null;\n} | null;\n\nexport type DateFieldRangeProps = Omit<\n MaskedDateRangeInputProps,\n | \"onChange\"\n | \"value\"\n | \"autoComplete\"\n | \"onClick\"\n | \"onKeyDown\"\n | \"ref\"\n | \"required\"\n | \"startDate\"\n | \"endDate\"\n | \"defaultValue\"\n | \"onFocus\"\n | \"onBlur\"\n> & {\n value?: DateFieldRangeValue;\n defaultValue?: DateFieldRangeValue;\n onChange?: DateFieldRangeChangeHandler;\n mode?: Extract<DateMode, \"mm/dd/yyyy\" | \"dd/mm/yyyy\">;\n disableHint?: boolean;\n disableCalendar?: boolean;\n unavailable?: {\n dates?: string[];\n daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];\n };\n minDate?: string;\n maxDate?: string;\n required?: boolean;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & DataTrackingId;\n\nexport const DateFieldRange = (props: DateFieldRangeProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldRange\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n onFocus,\n onBlur,\n disableCalendar,\n required,\n mode,\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n ...rest\n } = props;\n\n const { props: wrapperProps } = useFocusWithin({\n onBlur: (e) => {\n onBlur?.(e);\n setCalendarOpen(false);\n },\n onFocus: onFocus,\n });\n\n const { value, defaultValue, minDate, maxDate, unavailable, onChange } =\n useDateFieldRangeConversion({\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n });\n\n const inputRef = useRef<MaskedDateRangeInputRef>(null);\n const [popoverTriggerRef, setPopoverTriggerRef] =\n useState<RefObject<HTMLInputElement>>();\n const popoverContentRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([popoverTriggerRef, inputRef]);\n const popoverSupported = usePopoverSupport();\n\n const handleChange = (change: DateFieldRangeStateChange) => {\n const sharedConstraints = {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n };\n\n onChange?.({\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n isDateRangeValid: validateDateRange({\n required: required,\n startDate: change.startDate?.startOf(\"day\") ?? null,\n endDate: change.endDate?.startOf(\"day\") ?? null,\n startDateConstraints: sharedConstraints,\n endDateConstraints: sharedConstraints,\n }),\n });\n };\n\n const { startDate, endDate, handleInputChange, handleCalendarSelection } =\n useDateFieldRangeState({\n valueProp: value,\n defaultValueProp: defaultValue,\n onChange: handleChange,\n });\n\n const {\n calendarOpen,\n setCalendarOpen,\n handleCalendarKeyDown,\n handleInputKeyDown,\n } = useDateFieldOrchestration({\n inputRef,\n calendarDefaultOpen: false,\n popoverContentRef,\n disableCalendar,\n });\n\n const shouldShowCalendar = usePopoverCloseDelayWorkaround(calendarOpen);\n\n const currentValidity = useMemo(() => {\n return validateDateRange({\n required,\n startDate,\n endDate,\n startDateConstraints: {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n endDateConstraints: {\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n });\n }, [required, startDate, endDate, minDate, maxDate, unavailable]);\n\n const justTheField = (\n <MaskedDateRangeInput\n data-tracking-id={trackingId}\n {...rest}\n mode={mode}\n ref={combinedRef}\n startDate={startDate ?? null}\n endDate={endDate ?? null}\n onChange={handleInputChange}\n disableHint={rest.disableHint}\n onKeyDown={handleInputKeyDown}\n onClick={() => setCalendarOpen(true)}\n required={required}\n autoComplete=\"off\"\n data-date-range-valid={currentValidity}\n onFocus={!disableCalendar && !popoverSupported ? onFocus : undefined}\n onBlur={!disableCalendar && !popoverSupported ? onBlur : undefined}\n />\n );\n\n if (disableCalendar || !popoverSupported) {\n return justTheField;\n }\n\n return (\n <div {...wrapperProps}>\n <Popover\n open={calendarOpen}\n modal\n placement=\"bottom-start\"\n disableFlipFallback\n disableTriggerFocus\n onClose={() => setCalendarOpen(false)}\n disableAutoUpdate\n onOutsidePress={() => setCalendarOpen(false)}\n >\n <Popover.Trigger>\n {({ ref: iRef }) => {\n setPopoverTriggerRef(iRef as RefObject<HTMLInputElement>);\n return justTheField;\n }}\n </Popover.Trigger>\n <Popover.Content ref={popoverContentRef} data-testid=\"calendar-popover\">\n {shouldShowCalendar && (\n <DateFieldRangeCalendar\n startDate={startDate}\n endDate={endDate}\n onKeyDown={handleCalendarKeyDown}\n onSelection={(v) => {\n if (v.endDate) {\n inputRef.current?.focus();\n setCalendarOpen(false);\n }\n handleCalendarSelection(v);\n }}\n minDate={minDate}\n maxDate={maxDate}\n unavailable={unavailable}\n />\n )}\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nDateFieldRange.displayName = \"DateFieldRange\";\n"],"names":["datePlaceholderMask","dateRangePlaceholderMask","startDate","endDate","Event","useMergeRefs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DateFieldSingle-yLnwpVzd.js","sources":["../src/components/DateFieldSingle/internal/maskito/datePlaceholderMask.ts","../src/components/DateFieldSingle/internal/MaskedDateInput.tsx","../src/components/DateFieldSingle/internal/useDateFieldSingleConversion.ts","../src/components/DateFieldSingle/internal/useDateFieldSingleState.ts","../src/components/DateFieldSingle/internal/DateFieldSingleCalendar.tsx","../src/components/DateFieldSingle/DateFieldSingle.tsx"],"sourcesContent":["import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\nimport { makeZeroShortcutPreprocessor } from \"./makeZeroShortcutPreprocessor\";\nimport { DateMode } from \"../../types\";\n\nconst datePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n}: {\n mode: DateMode;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat(dateOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: datePlaceholderMask, removePlaceholder };\n};\n\nexport default datePlaceholderMask;\n","import { maskitoParseDate } from \"@maskito/kit\";\nimport { useMaskito } from \"@maskito/react\";\nimport { TextField, TextFieldProps } from \"../../TextField/internal/TextField\";\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport { DateTime } from \"luxon\";\nimport datePlaceholderMask from \"./maskito/datePlaceholderMask\";\nimport { Icon } from \"../../Icon\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport { DateModeToFormatMap, DateModeToPlaceholderMap } from \"./constants\";\nimport { DateMode } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\n\nexport type MaskedDateInputChange = {\n date: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type MaskedDateInputChangeHandler = (\n change: MaskedDateInputChange,\n) => void;\n\nexport type MaskedDateInputProps = Omit<\n TextFieldProps,\n \"onChange\" | \"value\" | \"ref\" | \"showCounter\" | \"hint\" | \"prefix\"\n> & {\n onChange: MaskedDateInputChangeHandler;\n mode?: DateMode;\n lastValidDate: DateTime | null;\n disableHint?: boolean;\n};\n\nexport type MaskedDateInputRef = HTMLInputElement & {\n setDate: (date: DateTime | null) => void;\n};\n\n/**\n * A masked date input component that allows for the input of a date in a specific format.\n *\n * Provides a `setDate` method that can be used to set the date from outside the component (e.g from a calendar).\n *\n * @internal This component is not intended to be used directly in consumer code.\n *\n * @param props - The props for the MaskedDateInput component.\n * @param props.onChange - The function to call when the date changes.\n * @param props.mode - The mode of the date input.\n */\nexport const MaskedDateInput = forwardRef<\n MaskedDateInputRef,\n MaskedDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd/yyyy\",\n lastValidDate,\n disableHint = false,\n ...props\n },\n ref,\n ) => {\n const placeholder = DateModeToPlaceholderMap[mode];\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder } = datePlaceholderMask({\n mode,\n placeholder,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousDateRef = useRef<DateTime | null>(null);\n const previousMode = usePrevious(mode);\n\n // Update the input value when the mode changes.\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n // Update the input value when the parent's date changes.\n useEffect(() => {\n if (lastValidDate === undefined) return;\n if (lastValidDate === previousDateRef.current) return; // Note: Reference equality is intentional here\n if (!lastValidDate?.equals(previousDateRef.current ?? DateTime.now())) {\n setInputValue(\n lastValidDate?.toFormat(DateModeToFormatMap[mode]) ?? placeholder,\n );\n previousDateRef.current = lastValidDate;\n }\n }, [lastValidDate, mode, placeholder]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const { date, isInputValid, isInputEmpty } = parseInputValue(\n event.target.value,\n mode,\n removePlaceholder,\n );\n\n // We only want to call onChange for substantive changes.\n // This is to avoid unnecessary re-renders of upstream components.\n const isValueDifferent =\n isInputValid !== currentParsedData.isInputValid || // The input has changed validity\n isInputEmpty !== currentParsedData.isInputEmpty || // The input has changed emptiness\n (date === null) !== (currentParsedData.date === null) || // The input has changed from empty to non-empty or vice versa\n (date !== null &&\n lastValidDate !== null &&\n !date.equals(lastValidDate)); // The date has changed\n\n // If the value has not changed, we do not need to call onChange.\n if (!isValueDifferent) return;\n onChange?.({\n date: date ?? lastValidDate ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n // Extend the input ref with additional methods.\n // This provides a way to set the input value from outside the component.\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as MaskedDateInputRef;\n return Object.assign(input, {\n setDate: (date: DateTime | null) => {\n setInputValue(\n date?.toFormat(DateModeToFormatMap[mode]) ?? placeholder,\n );\n },\n });\n }, [mode, placeholder]);\n\n return (\n <TextField\n ref={combinedRef}\n data-date={lastValidDate?.toISODate() ?? \"\"}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n {...props}\n showCounter={false}\n value={inputValue}\n onChange={handleChange}\n prefix={<Icon svg={Event} />}\n hint={disableHint ? undefined : `Format: ${mode}`}\n />\n );\n },\n);\n\nMaskedDateInput.displayName = \"MaskedDateInput\";\n\nfunction parseInputValue(\n value: string,\n mode: DateMode,\n removePlaceholder: (value: string) => string,\n) {\n const valueMinusPlaceholder = removePlaceholder(value);\n const jsDate = maskitoParseDate(valueMinusPlaceholder, { mode });\n const luxonDate = jsDate\n ? DateTime.fromJSDate(jsDate, { zone: \"utc\" })\n : null;\n return {\n date: luxonDate,\n isInputValid: !!luxonDate,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\nfunction swapMode(inputString: string, previousMode: DateMode, mode: DateMode) {\n const { day, month, year } = divideSegments(inputString, previousMode);\n return orderSegmentsByMode(day, month, year, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: DateMode,\n): {\n day: string;\n month: string;\n year: string;\n} {\n const [segment1, segment2, segment3] = value.split(\"/\");\n if (mode === \"dd/mm/yyyy\") {\n return { day: segment1, month: segment2, year: segment3 };\n } else if (mode === \"mm/dd/yyyy\") {\n return { day: segment2, month: segment1, year: segment3 };\n } else if (mode === \"yyyy/mm/dd\") {\n return { day: segment3, month: segment2, year: segment1 };\n }\n return { day: \"__\", month: \"__\", year: \"____\" };\n}\n\nfunction orderSegmentsByMode(\n day: string,\n month: string,\n year: string,\n mode: DateMode,\n) {\n if (mode === \"dd/mm/yyyy\") {\n return `${day}/${month}/${year}`;\n } else if (mode === \"mm/dd/yyyy\") {\n return `${month}/${day}/${year}`;\n } else if (mode === \"yyyy/mm/dd\") {\n return `${year}/${month}/${day}`;\n } else {\n return \"\";\n }\n}\n","import { useCallback, useMemo } from \"react\";\nimport { convertStringToDate } from \"./utils\";\nimport {\n DateFieldSingleChange,\n DateFieldSingleProps,\n} from \"../DateFieldSingle\";\nimport { DateTime, WeekdayNumbers } from \"luxon\";\n\nexport type DateFieldSingleConversion = {\n /**\n * The current value of the date field.\n */\n value?: DateTime | null;\n /**\n * The default (uncontrolled) value of the date field.\n */\n defaultValue?: DateTime | null;\n /**\n * The minimum date of the date field.\n */\n minDate?: DateTime | null;\n /**\n * The maximum date of the date field.\n */\n maxDate?: DateTime | null;\n /**\n * The unavailable dates of the date field.\n */\n unavailable: {\n /**\n * The unavailable dates of the date field.\n */\n dates?: DateTime[];\n /**\n * The unavailable days of the week of the date field.\n */\n daysOfWeek?: WeekdayNumbers[];\n };\n /**\n * The callback for when the date changes.\n */\n onChange: (\n change: Omit<DateFieldSingleChange, \"date\"> & { date: DateTime | null },\n ) => void;\n};\n\n/**\n * Converts the props of the DateFieldSingle component to Luxon DateTime objects for easier internal use.\n * @param props - The props of the DateFieldSingle component using ISO 8601 strings.\n * @returns The converted props using Luxon DateTime objects.\n */\nexport function useDateFieldSingleConversion({\n value,\n defaultValue,\n minDate,\n maxDate,\n unavailable,\n onChange,\n}: DateFieldSingleProps): DateFieldSingleConversion {\n const normalizedValue = useMemo(() => convertStringToDate(value), [value]);\n const normalizedDefaultValue = useMemo(\n () => convertStringToDate(defaultValue),\n [defaultValue],\n );\n const normalizedMinDate = useMemo(\n () => convertStringToDate(minDate),\n [minDate],\n );\n const normalizedMaxDate = useMemo(\n () => convertStringToDate(maxDate),\n [maxDate],\n );\n const normalizedUnavailableDates = useMemo(\n () =>\n unavailable?.dates\n ?.map((d) => convertStringToDate(d))\n .filter((d) => d !== null && d !== undefined),\n [unavailable?.dates],\n );\n\n const handleChange = useCallback(\n (\n change: Omit<DateFieldSingleChange, \"date\"> & { date: DateTime | null },\n ) => {\n onChange?.({\n ...change,\n date: change.date?.toISODate() ?? null,\n });\n },\n [onChange],\n );\n\n return {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate: normalizedMinDate,\n maxDate: normalizedMaxDate,\n unavailable: {\n dates: normalizedUnavailableDates,\n daysOfWeek: unavailable?.daysOfWeek,\n },\n onChange: handleChange,\n };\n}\n","import { DateTime } from \"luxon\";\nimport { useOptionallyControlledState } from \"../../../internal/hooks\";\nimport { MaskedDateInputChange } from \"./MaskedDateInput\";\n\nexport type DateFieldSingleStateChange = {\n date: DateTime | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n};\n\nexport type DateFieldSingleStateChangeHandler = (\n change: DateFieldSingleStateChange,\n) => void;\n\nexport type DateFieldSingleStateParam = {\n /**\n * The controlled value of the date field.\n */\n valueProp?: DateTime | null;\n /**\n * The default (uncontrolled) value of the date field.\n */\n defaultValueProp?: DateTime | null;\n /**\n * Callback for when the date changes.\n */\n onChange: DateFieldSingleStateChangeHandler;\n};\n\nexport type DateFieldSingleState = {\n /**\n * The current value (DateTime) of the date field.\n */\n value: DateTime | null;\n /**\n * Sets the value of the date field.\n */\n setValue: (value: DateTime | null) => void;\n /**\n * Handles the change of the input field.\n */\n handleInputChange: (change: MaskedDateInputChange) => void;\n /**\n * Handles the selection of a date in the calendar.\n */\n handleCalendarSelection: (date: DateTime) => void;\n};\n\n/**\n * This is a hook for keeping state in sync between a date input and calendar.\n */\nexport function useDateFieldSingleState({\n valueProp,\n defaultValueProp,\n onChange,\n}: DateFieldSingleStateParam): DateFieldSingleState {\n const [value, setValue] = useOptionallyControlledState<DateTime | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n\n const handleInputChange = (change: MaskedDateInputChange) => {\n const date = change.isInputEmpty\n ? null\n : (change.date?.startOf(\"day\") ?? null);\n onChange?.({\n date,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n });\n if (change.isInputValid) {\n setValue(change.isInputEmpty ? null : change.date);\n }\n if (change.isInputEmpty) {\n setValue(null);\n return;\n }\n if (change.date) {\n setValue(change.date);\n }\n };\n\n const handleCalendarSelection = (date: DateTime) => {\n setValue(date);\n onChange?.({\n date,\n isInputValid: true,\n isInputEmpty: false,\n });\n };\n\n return {\n value,\n setValue,\n handleInputChange,\n handleCalendarSelection,\n };\n}\n","import { DateTime, WeekdayNumbers } from \"luxon\";\nimport { Calendar, CalendarProps, CalendarValue } from \"../../Calendar\";\n\ntype DateFieldSingleCalendarProps = Omit<\n CalendarProps,\n | \"onSelection\"\n | \"value\"\n | \"onKeyDown\"\n | \"defaultFocusedDate\"\n | \"range\"\n | \"defaultTimeZone\"\n | \"unavailable\"\n | \"minDate\"\n | \"maxDate\"\n | \"defaultValue\"\n | \"_disableAutofocus\"\n> & {\n onKeyDown?: (event: React.KeyboardEvent<HTMLDivElement>) => void;\n value: DateTime | null;\n onSelection: (date: DateTime) => void;\n minDate?: DateTime | null;\n maxDate?: DateTime | null;\n unavailable?: { dates?: DateTime[]; daysOfWeek?: WeekdayNumbers[] };\n};\n\nexport function DateFieldSingleCalendar({\n onKeyDown,\n value,\n onSelection,\n minDate,\n maxDate,\n unavailable,\n ...rest\n}: DateFieldSingleCalendarProps) {\n const handleCalendarSelection = (data: { value: CalendarValue }) => {\n if (data.value) {\n const date = DateTime.fromISO(data.value, { zone: \"utc\" });\n onSelection(date);\n }\n };\n\n return (\n <Calendar\n {...rest}\n range={false}\n onKeyDown={onKeyDown}\n defaultFocusedDate={value?.toISODate() || DateTime.now().toISODate()}\n value={value?.toISODate() || undefined}\n onSelection={handleCalendarSelection}\n defaultTimeZone=\"UTC\"\n minDate={minDate?.toISODate() ?? undefined}\n maxDate={maxDate?.toISODate() ?? undefined}\n unavailable={\n unavailable\n ? {\n dates: unavailable.dates?.map((d) => d.toISODate() ?? \"\"),\n daysOfWeek: unavailable.daysOfWeek,\n }\n : undefined\n }\n _disableAutofocus\n />\n );\n}\n","import { childrenToString } from \"../../internal/functions\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport { DataTrackingId } from \"../../types\";\nimport Popover from \"../Popover\";\nimport { RefObject, useMemo, useRef, useState } from \"react\";\nimport {\n MaskedDateInput,\n MaskedDateInputProps,\n MaskedDateInputRef,\n} from \"./internal/MaskedDateInput\";\nimport { DateMode } from \"./types\";\nimport { useDateFieldSingleConversion } from \"./internal/useDateFieldSingleConversion\";\nimport {\n DateFieldSingleStateChangeHandler,\n useDateFieldSingleState,\n} from \"./internal/useDateFieldSingleState\";\nimport { validateDate } from \"./internal/utils\";\nimport {\n useFocusWithin,\n usePopoverCloseDelayWorkaround,\n usePopoverSupport,\n} from \"../../internal/hooks\";\nimport { useDateFieldOrchestration } from \"./internal/useDateFieldOrchestration\";\nimport { DateFieldSingleCalendar } from \"./internal/DateFieldSingleCalendar\";\n\nexport type DateFieldSingleProps = Omit<\n MaskedDateInputProps,\n | \"onChange\"\n | \"value\"\n | \"autoComplete\"\n | \"onClick\"\n | \"onKeyDown\"\n | \"ref\"\n | \"lastValidDate\"\n | \"setLastValidDate\"\n | \"required\"\n | \"onFocus\"\n | \"onBlur\"\n> & {\n value?: string | null;\n defaultValue?: string | null;\n onChange?: DateFieldSingleChangeHandler;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n mode?: Extract<DateMode, \"mm/dd/yyyy\" | \"dd/mm/yyyy\">;\n disableHint?: boolean;\n disableCalendar?: boolean;\n unavailable?: {\n /**\n * The specific dates that are unavailable. ISO 8601 format.\n * @example [\"2025-07-02\"]\n */\n dates?: string[];\n /**\n * The days of the week that are unavailable.\n * (1-7, where 1 is Monday and 7 is Sunday)\n */\n daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[];\n };\n minDate?: string;\n maxDate?: string;\n required?: boolean;\n} & DataTrackingId;\n\nexport type DateFieldSingleChange = {\n /**\n * The date in ISO 8601 format.\n * @example \"2025-07-02\"\n */\n date: string | null;\n /**\n * Whether the input is valid. That is, it matches the format and is not empty.\n * This does not mean that the date is valid according to the constraints.\n */\n isInputValid: boolean;\n /**\n * Whether the input is empty.\n */\n isInputEmpty: boolean;\n /**\n * Whether the date is valid according to the constraints.\n * Constraints include:\n * - Required\n * - Unavailable dates\n * - Unavailable days of the week\n * - Min date\n * - Max date\n */\n isDateValid: boolean;\n};\n\nexport type DateFieldSingleChangeHandler = (\n change: DateFieldSingleChange,\n) => void;\n\nexport const DateFieldSingle = (props: DateFieldSingleProps) => {\n const data = {\n label: childrenToString(props.label),\n labelProps: props.labelProps,\n description: childrenToString(props.description),\n };\n\n const trackingId = useTrackingId({\n name: \"DateFieldSingle\",\n data,\n hasOverride: !!props[\"data-tracking-id\"],\n });\n\n const {\n onFocus,\n onBlur,\n disableCalendar,\n required,\n mode,\n value: valueProp,\n defaultValue: defaultValueProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n onChange: onChangeProp,\n ...rest\n } = props;\n\n const inputRef = useRef<MaskedDateInputRef>(null);\n // We convert any props that deal in ISO 8601 strings to Luxon DateTime objects for easier internal use.\n const {\n value: normalizedValue,\n defaultValue: normalizedDefaultValue,\n minDate,\n maxDate,\n unavailable,\n onChange,\n } = useDateFieldSingleConversion({\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate: minDateProp,\n maxDate: maxDateProp,\n unavailable: unavailableProp,\n });\n\n const handleChange: DateFieldSingleStateChangeHandler = (change) => {\n onChange?.({\n ...change,\n isDateValid: validateDate({\n date: change.date,\n constraints: {\n required,\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n }),\n });\n };\n\n // We use a hook to keep the value of input and the calendar in sync.\n const { value, handleInputChange, handleCalendarSelection } =\n useDateFieldSingleState({\n valueProp: normalizedValue,\n defaultValueProp: normalizedDefaultValue,\n onChange: handleChange,\n });\n\n const { props: wrapperProps } = useFocusWithin({\n onBlur: (e) => {\n onBlur?.(e);\n setCalendarOpen(false);\n },\n onFocus,\n });\n\n const [popoverTriggerRef, setPopoverTriggerRef] =\n useState<RefObject<HTMLInputElement>>();\n const popoverContentRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([popoverTriggerRef, inputRef]);\n const {\n calendarOpen,\n setCalendarOpen,\n handleCalendarKeyDown,\n handleInputKeyDown,\n } = useDateFieldOrchestration({\n inputRef,\n calendarDefaultOpen: false,\n popoverContentRef,\n disableCalendar,\n });\n\n const popoverSupported = usePopoverSupport();\n\n const shouldShowCalendar = usePopoverCloseDelayWorkaround(calendarOpen);\n\n const currentValidity = useMemo(\n () =>\n validateDate({\n date: value,\n constraints: {\n required,\n unavailable,\n minDate: minDate ?? undefined,\n maxDate: maxDate ?? undefined,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const justTheField = (\n <MaskedDateInput\n {...rest}\n mode={mode}\n ref={combinedRef}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n onClick={() => setCalendarOpen(true)}\n lastValidDate={value}\n required={required}\n autoComplete=\"off\"\n data-date-valid={currentValidity}\n data-tracking-id={trackingId}\n onFocus={!disableCalendar && !popoverSupported ? onFocus : undefined}\n onBlur={!disableCalendar && !popoverSupported ? onBlur : undefined}\n />\n );\n\n if (disableCalendar || !popoverSupported) {\n return justTheField;\n }\n\n return (\n <div {...wrapperProps}>\n <Popover\n open={calendarOpen}\n modal\n placement=\"bottom-start\"\n disableFlipFallback\n disableTriggerFocus\n onClose={() => setCalendarOpen(false)}\n disableAutoUpdate\n onClickOutside={() => setCalendarOpen(false)}\n >\n <Popover.Trigger>\n {({ ref: iRef }) => {\n setPopoverTriggerRef(iRef as RefObject<HTMLInputElement>);\n return justTheField;\n }}\n </Popover.Trigger>\n <Popover.Content ref={popoverContentRef} data-testid=\"calendar-popover\">\n {shouldShowCalendar && (\n <DateFieldSingleCalendar\n onKeyDown={handleCalendarKeyDown}\n value={value}\n onSelection={(v) => {\n inputRef.current?.focus();\n handleCalendarSelection(v);\n setCalendarOpen(false);\n }}\n minDate={minDate}\n maxDate={maxDate}\n unavailable={unavailable}\n />\n )}\n </Popover.Content>\n </Popover>\n </div>\n );\n};\n\nDateFieldSingle.displayName = \"DateFieldSingle\";\n"],"names":["datePlaceholderMask","Event","useMergeRefs"],"mappings":"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"}
|