@servicetitan/anvil2 1.33.0 → 1.34.0
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 +44 -0
- package/dist/{Alert-D4O5XFXo.js → Alert-C9KfIA7s.js} +2 -2
- package/dist/{Alert-D4O5XFXo.js.map → Alert-C9KfIA7s.js.map} +1 -1
- package/dist/{Alert-BcjnX40X-DK8meb2Z.js → Alert-Dgaqfx1H-B6i-eGef.js} +5 -5
- package/dist/{Alert-BcjnX40X-DK8meb2Z.js.map → Alert-Dgaqfx1H-B6i-eGef.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-D30SgkZg.js → Announcement-9GxUBtDn.js} +4 -4
- package/dist/{Announcement-D30SgkZg.js.map → Announcement-9GxUBtDn.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-CuvqXRaZ.js → AnvilProvider-cP12DycW.js} +2 -2
- package/dist/{AnvilProvider-CuvqXRaZ.js.map → AnvilProvider-cP12DycW.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar-CuFvRBu5.js → Avatar-BpSF02VE.js} +3 -3
- package/dist/{Avatar-CuFvRBu5.js.map → Avatar-BpSF02VE.js.map} +1 -1
- package/dist/Avatar.js +1 -1
- package/dist/{Badge-DsZf3iVG.js → Badge-9kD_vUsd.js} +2 -2
- package/dist/{Badge-DsZf3iVG.js.map → Badge-9kD_vUsd.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs-B7Rs-8sE.js → Breadcrumbs-C3lqgwOX.js} +5 -5
- package/dist/{Breadcrumbs-B7Rs-8sE.js.map → Breadcrumbs-C3lqgwOX.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-BTnyx-np.js → Button-Cj9mSXot.js} +2 -2
- package/dist/{Button-BTnyx-np.js.map → Button-Cj9mSXot.js.map} +1 -1
- package/dist/{Button-CEDmdZ-2-DJVJnigb.js → Button-DbVpPjA8-CRQ01IJx.js} +3 -3
- package/dist/{Button-CEDmdZ-2-DJVJnigb.js.map → Button-DbVpPjA8-CRQ01IJx.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonCompound-BeUo4_Zv-psxZY03N.js → ButtonCompound-Agrm0TFv-BH9CzNcb.js} +2 -2
- package/dist/{ButtonCompound-BeUo4_Zv-psxZY03N.js.map → ButtonCompound-Agrm0TFv-BH9CzNcb.js.map} +1 -1
- package/dist/{ButtonCompound-BfrxUIu5.js → ButtonCompound-B7W5e4vE.js} +2 -2
- package/dist/{ButtonCompound-BfrxUIu5.js.map → ButtonCompound-B7W5e4vE.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-DBWcE6OF-BtCzzomr.js → ButtonLink-CnaMCnXx-B4b-kiOn.js} +3 -3
- package/dist/{ButtonLink-DBWcE6OF-BtCzzomr.js.map → ButtonLink-CnaMCnXx-B4b-kiOn.js.map} +1 -1
- package/dist/{ButtonLink-DFMrEFSO.js → ButtonLink-DhnsPaEF.js} +2 -2
- package/dist/{ButtonLink-DFMrEFSO.js.map → ButtonLink-DhnsPaEF.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-DZTrcapf-CMEhOep1.js → ButtonToggle-SIeaI8eo-BKc_4h00.js} +3 -3
- package/dist/{ButtonToggle-DZTrcapf-CMEhOep1.js.map → ButtonToggle-SIeaI8eo-BKc_4h00.js.map} +1 -1
- package/dist/{ButtonToggle-kryR_Zc2.js → ButtonToggle-gSoPbnCA.js} +2 -2
- package/dist/{ButtonToggle-kryR_Zc2.js.map → ButtonToggle-gSoPbnCA.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-ch54N6OS-0vxeSJFt.js → Calendar-C3dudrjk-nI60sdlM.js} +759 -215
- package/dist/{Calendar-ch54N6OS-0vxeSJFt.js.map → Calendar-C3dudrjk-nI60sdlM.js.map} +1 -1
- package/dist/{Calendar-ch54N6OS.css → Calendar-C3dudrjk.css} +58 -39
- package/dist/Calendar-rS4d2fR0.js +57 -0
- package/dist/Calendar-rS4d2fR0.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/{Card-DUNBw8AX.js → Card-Ca29zzJd.js} +2 -2
- package/dist/{Card-DUNBw8AX.js.map → Card-Ca29zzJd.js.map} +1 -1
- package/dist/{Card-DukbBYaA-C2a2vYKk.js → Card-Ct_7fGY7-31Vi9Yzf.js} +3 -3
- package/dist/{Card-DukbBYaA-C2a2vYKk.js.map → Card-Ct_7fGY7-31Vi9Yzf.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-ZLz_xJx9-CxqouREp.js → Checkbox-DyE0R-K8-C3EVQN9m.js} +4 -4
- package/dist/{Checkbox-ZLz_xJx9-CxqouREp.js.map → Checkbox-DyE0R-K8-C3EVQN9m.js.map} +1 -1
- package/dist/{Checkbox-C4JF-LvE.js → Checkbox-j9WXnNWd.js} +2 -2
- package/dist/{Checkbox-C4JF-LvE.js.map → Checkbox-j9WXnNWd.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-jA27WjrF.js → Chip-05TrhwYw.js} +2 -2
- package/dist/{Chip-jA27WjrF.js.map → Chip-05TrhwYw.js.map} +1 -1
- package/dist/{Chip-BQOzhPQv-C01SLYdN.js → Chip-Cew3VCIu-CqIWxD9_.js} +5 -5
- package/dist/{Chip-BQOzhPQv-C01SLYdN.js.map → Chip-Cew3VCIu-CqIWxD9_.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-VCa5Qplb.js → Combobox-zE9tn7wn.js} +13 -15
- package/dist/Combobox-zE9tn7wn.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-Ex0bquMB.js → DateField-DQZoanDf.js} +9 -7
- package/dist/DateField-DQZoanDf.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/{DaysOfTheWeek-CQqCFF2f.js → DaysOfTheWeek-AlDsOFtf.js} +4 -4
- package/dist/{DaysOfTheWeek-CQqCFF2f.js.map → DaysOfTheWeek-AlDsOFtf.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-Cb6t_xKu.js → Details-DM9iP_t8.js} +3 -3
- package/dist/{Details-Cb6t_xKu.js.map → Details-DM9iP_t8.js.map} +1 -1
- package/dist/Details.js +1 -1
- package/dist/{Dialog-QtgPY3ji.js → Dialog-DUDe5yhJ.js} +4 -4
- package/dist/{Dialog-QtgPY3ji.js.map → Dialog-DUDe5yhJ.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Divider-AD1Jb85d.js → Divider-BkObIjoj.js} +18 -18
- package/dist/{Divider-AD1Jb85d.js.map → Divider-BkObIjoj.js.map} +1 -1
- package/dist/Divider.css +35 -34
- package/dist/Divider.js +1 -1
- package/dist/Dnd.d.ts +2 -0
- package/dist/Dnd.js +2 -0
- package/dist/Dnd.js.map +1 -0
- package/dist/{DndSort-BVcdqJLB.js → DndSort-CYFyN62U.js} +60 -136
- package/dist/DndSort-CYFyN62U.js.map +1 -0
- package/dist/DndSort.css +19 -129
- package/dist/DndSort.js +1 -1
- package/dist/{Drawer-18QCWW4F.js → Drawer-D_dklfpD.js} +2 -2
- package/dist/{Drawer-18QCWW4F.js.map → Drawer-D_dklfpD.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{EditCard-WV9NqvY2.js → EditCard-f4J7t7CJ.js} +6 -6
- package/dist/{EditCard-WV9NqvY2.js.map → EditCard-f4J7t7CJ.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{Flex-Dvn6ix9U.js → Flex-BJR2T0Jm.js} +2 -2
- package/dist/{Flex-Dvn6ix9U.js.map → Flex-BJR2T0Jm.js.map} +1 -1
- package/dist/{Flex-CLu2TnzF-aW2OhBYv.js → Flex-D3J8BIR_-C2zh0Ijz.js} +3 -3
- package/dist/{Flex-CLu2TnzF-aW2OhBYv.js.map → Flex-D3J8BIR_-C2zh0Ijz.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-Ck2zeDY5.js → Grid-UUtdRKEw.js} +11 -14
- package/dist/Grid-UUtdRKEw.js.map +1 -0
- package/dist/Grid-fAy_LSLI.js +14 -0
- package/dist/Grid-fAy_LSLI.js.map +1 -0
- package/dist/Grid.css +28 -2
- package/dist/Grid.js +1 -1
- package/dist/{HammerProvider-C9QySDSZ-3uQ0NgD4.js → HammerProvider-BEJW4XcH-DqSojvnV.js} +3 -3
- package/dist/{HammerProvider-C9QySDSZ-3uQ0NgD4.js.map → HammerProvider-BEJW4XcH-DqSojvnV.js.map} +1 -1
- package/dist/{Icon-DS8qT4VL.js → Icon-B-yv1NsA.js} +2 -2
- package/dist/{Icon-DS8qT4VL.js.map → Icon-B-yv1NsA.js.map} +1 -1
- package/dist/{Icon-DuwR7O2z-C_rTZRSc.js → Icon-BBWg60pO-Dja0R43O.js} +3 -3
- package/dist/{Icon-DuwR7O2z-C_rTZRSc.js.map → Icon-BBWg60pO-Dja0R43O.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-CAaKh5xX-n62jt7dp.js → InputMask-AKOc3b38-zx_7dK4s.js} +2 -2
- package/dist/{InputMask-CAaKh5xX-n62jt7dp.js.map → InputMask-AKOc3b38-zx_7dK4s.js.map} +1 -1
- package/dist/{InputMask-txxn_qIf.js → InputMask-BwZzy1ro.js} +2 -2
- package/dist/{InputMask-txxn_qIf.js.map → InputMask-BwZzy1ro.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{Link-DTjA-qJZ.js → Link-Bi-vl2qx.js} +2 -2
- package/dist/{Link-DTjA-qJZ.js.map → Link-Bi-vl2qx.js.map} +1 -1
- package/dist/{Link-DIyZHRIV-DPk42hgW.js → Link-DOoU15kC-wEaJlH49.js} +4 -4
- package/dist/{Link-DIyZHRIV-DPk42hgW.js.map → Link-DOoU15kC-wEaJlH49.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{ListView-DNwkCrxf.js → ListView-CR2XpWrO.js} +4 -4
- package/dist/{ListView-DNwkCrxf.js.map → ListView-CR2XpWrO.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-eNhS0Wmx.js → Listbox-Ct0GfHqX.js} +2 -2
- package/dist/{Listbox-eNhS0Wmx.js.map → Listbox-Ct0GfHqX.js.map} +1 -1
- package/dist/{Listbox-DlKyRbri-Dc3ny9gH.js → Listbox-NoAVDANI-Cqjqgppx.js} +5 -5
- package/dist/{Listbox-DlKyRbri-Dc3ny9gH.js.map → Listbox-NoAVDANI-Cqjqgppx.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{LocalizationProvider-BrxC1a2D-BuTo3KlY.js → LocalizationProvider-FkvhW-le-eTJyO1sx.js} +2 -2
- package/dist/{LocalizationProvider-BrxC1a2D-BuTo3KlY.js.map → LocalizationProvider-FkvhW-le-eTJyO1sx.js.map} +1 -1
- package/dist/LocalizationProvider.js +1 -1
- package/dist/{Menu-DvVci7Qr.js → Menu-Br7c8XAk.js} +5 -5
- package/dist/{Menu-DvVci7Qr.js.map → Menu-Br7c8XAk.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{Overflow-DDsq_uUA.js → Overflow-TPQZMkIA.js} +2 -2
- package/dist/{Overflow-DDsq_uUA.js.map → Overflow-TPQZMkIA.js.map} +1 -1
- package/dist/{Overflow-D6S5X1N4-C7YfnaOv.js → Overflow-urnuIZpA-1Bv74Mt5.js} +4 -4
- package/dist/{Overflow-D6S5X1N4-C7YfnaOv.js.map → Overflow-urnuIZpA-1Bv74Mt5.js.map} +1 -1
- package/dist/Overflow.js +1 -1
- package/dist/{Page-BFVfMExj.js → Page-DHMLtw2u.js} +15 -16
- package/dist/Page-DHMLtw2u.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Popover-CbeghwZg--83MWVgP.js → Popover-B_iz3Kor-VlCc73xa.js} +5 -5
- package/dist/{Popover-CbeghwZg--83MWVgP.js.map → Popover-B_iz3Kor-VlCc73xa.js.map} +1 -1
- package/dist/{Popover-BbcT-mFU.js → Popover-DFODumkN.js} +2 -2
- package/dist/{Popover-BbcT-mFU.js.map → Popover-DFODumkN.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-OtKoZ_jO.js → ProgressBar-CIgdJEaT.js} +2 -2
- package/dist/{ProgressBar-OtKoZ_jO.js.map → ProgressBar-CIgdJEaT.js.map} +1 -1
- package/dist/{ProgressBar-DojG9LHF-nlymvlXw.js → ProgressBar-DVZ4c_tz-lVWWEGJ-.js} +38 -31
- package/dist/ProgressBar-DVZ4c_tz-lVWWEGJ-.js.map +1 -0
- package/dist/{ProgressBar-DojG9LHF.css → ProgressBar-DVZ4c_tz.css} +54 -54
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BWK27b7p.js → Radio-C2pokxpu.js} +2 -2
- package/dist/{Radio-BWK27b7p.js.map → Radio-C2pokxpu.js.map} +1 -1
- package/dist/{Radio-BbohS64t-Ch6NvYfF.js → Radio-Dcpe43rP-C__1V-Nc.js} +5 -5
- package/dist/{Radio-BbohS64t-Ch6NvYfF.js.map → Radio-Dcpe43rP-C__1V-Nc.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-DFYsJWmm.js → SearchField-D9PIWHKX.js} +3 -3
- package/dist/{SearchField-DFYsJWmm.js.map → SearchField-D9PIWHKX.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CcFyiME6.js → SegmentedControl-CYX3cgAa.js} +2 -2
- package/dist/{SegmentedControl-CcFyiME6.js.map → SegmentedControl-CYX3cgAa.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCardGroup-4MngIOom.js → SelectCard-DUYy3aEL-BVXjCaxz.js} +31 -37
- package/dist/SelectCard-DUYy3aEL-BVXjCaxz.js.map +1 -0
- package/dist/{SelectCardGroup.css → SelectCard-DUYy3aEL.css} +8 -7
- package/dist/SelectCard.js +1 -1
- package/dist/SelectCardGroup-ztR701IS.js +21 -0
- package/dist/SelectCardGroup-ztR701IS.js.map +1 -0
- package/dist/{SideNav-DRlSz_Rw.js → SideNav-bUPGgIKo.js} +3 -3
- package/dist/SideNav-bUPGgIKo.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/{Skeleton-CS6m62xI.js → Skeleton-DCglZF0L.js} +2 -2
- package/dist/{Skeleton-CS6m62xI.js.map → Skeleton-DCglZF0L.js.map} +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/{Stepper-CuQn-jSf.js → Stepper-Cg4uBRuW.js} +5 -5
- package/dist/{Stepper-CuQn-jSf.js.map → Stepper-Cg4uBRuW.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-DhiVhUgr.js → Switch-D_Cvuhz8.js} +3 -3
- package/dist/{Switch-DhiVhUgr.js.map → Switch-D_Cvuhz8.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-1vRtlOFk.js → Tab-BOYJ49rW.js} +3 -3
- package/dist/{Tab-1vRtlOFk.js.map → Tab-BOYJ49rW.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/{Text-66f6OgUp.js → Text-BNygzvON.js} +2 -2
- package/dist/{Text-66f6OgUp.js.map → Text-BNygzvON.js.map} +1 -1
- package/dist/{Text-BCRKWTMM-B3ftA79H.js → Text-hQPAQBGP-CEIjvHcA.js} +3 -3
- package/dist/{Text-BCRKWTMM-B3ftA79H.js.map → Text-hQPAQBGP-CEIjvHcA.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-Djr02a3D.js → TextField-34U2OcQ4.js} +2 -2
- package/dist/{TextField-Djr02a3D.js.map → TextField-34U2OcQ4.js.map} +1 -1
- package/dist/{TextField-DtlCGV8B-BPoNBGYn.js → TextField-Cii-Ei9K-Dkia66j2.js} +3 -3
- package/dist/{TextField-DtlCGV8B-BPoNBGYn.js.map → TextField-Cii-Ei9K-Dkia66j2.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DjqGI_N0.js → Textarea-CYWnwdau.js} +3 -3
- package/dist/{Textarea-DjqGI_N0.js.map → Textarea-CYWnwdau.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-DrK12Ru--CcKMzgE3.js → ThemeProvider-BIeaAmWx-B782UArj.js} +3 -3
- package/dist/{ThemeProvider-DrK12Ru--CcKMzgE3.js.map → ThemeProvider-BIeaAmWx-B782UArj.js.map} +1 -1
- package/dist/{ThemeProvider-CPGnKr9R.js → ThemeProvider-CkgwRESr.js} +2 -2
- package/dist/{ThemeProvider-CPGnKr9R.js.map → ThemeProvider-CkgwRESr.js.map} +1 -1
- package/dist/ThemeProvider.js +1 -1
- package/dist/Toast.js +1 -1
- package/dist/{Toolbar-DiUrfZ4O.js → Toolbar-9qQBNIEv.js} +10 -10
- package/dist/{Toolbar-DiUrfZ4O.js.map → Toolbar-9qQBNIEv.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-DE8tqyR3.js → Tooltip-C1l9sOpR.js} +2 -2
- package/dist/{Tooltip-DE8tqyR3.js.map → Tooltip-C1l9sOpR.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/components/Calendar/Calendar.d.ts +9 -3
- package/dist/components/Dnd/index.d.ts +1 -0
- package/dist/components/Flex/Flex.d.ts +6 -0
- package/dist/components/Grid/Grid.d.ts +3 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/index-BOekhwqw-Taf40KX_.js +106 -0
- package/dist/index-BOekhwqw-Taf40KX_.js.map +1 -0
- package/dist/index-BOekhwqw.css +121 -0
- package/dist/index.js +54 -53
- package/dist/index.js.map +1 -1
- package/dist/keyboard_arrow_up-CxzK6LAl.js +6 -0
- package/dist/keyboard_arrow_up-CxzK6LAl.js.map +1 -0
- package/dist/{toast-BRfZ2rPu.js → toast-VLrmyQji.js} +2 -2
- package/dist/{toast-BRfZ2rPu.js.map → toast-VLrmyQji.js.map} +1 -1
- package/dist/{useLayoutPropsUtil-3B2XYWSr-5ZanZ8Ew.js → useLayoutPropsUtil-GT5myWCm-Cgn7OEq9.js} +2 -2
- package/dist/useLayoutPropsUtil-GT5myWCm-Cgn7OEq9.js.map +1 -0
- package/dist/useLinkStyles.js +1 -1
- package/package.json +3 -3
- package/dist/Calendar-DFbt6fWP.js +0 -38
- package/dist/Calendar-DFbt6fWP.js.map +0 -1
- package/dist/Combobox-VCa5Qplb.js.map +0 -1
- package/dist/DateField-Ex0bquMB.js.map +0 -1
- package/dist/DndSort-BVcdqJLB.js.map +0 -1
- package/dist/Grid-Ck2zeDY5.js.map +0 -1
- package/dist/Page-BFVfMExj.js.map +0 -1
- package/dist/ProgressBar-DojG9LHF-nlymvlXw.js.map +0 -1
- package/dist/SelectCardGroup-4MngIOom.js.map +0 -1
- package/dist/SideNav-DRlSz_Rw.js.map +0 -1
- package/dist/useLayoutPropsUtil-3B2XYWSr-5ZanZ8Ew.js.map +0 -1
- /package/dist/{Alert-BcjnX40X.css → Alert-Dgaqfx1H.css} +0 -0
- /package/dist/{Card-DukbBYaA.css → Card-Ct_7fGY7.css} +0 -0
- /package/dist/{Chip-BQOzhPQv.css → Chip-Cew3VCIu.css} +0 -0
- /package/dist/{Flex-CLu2TnzF.css → Flex-D3J8BIR_.css} +0 -0
- /package/dist/{Icon-DuwR7O2z.css → Icon-BBWg60pO.css} +0 -0
- /package/dist/{Link-DIyZHRIV.css → Link-DOoU15kC.css} +0 -0
- /package/dist/{Overflow-D6S5X1N4.css → Overflow-urnuIZpA.css} +0 -0
- /package/dist/{Popover-CbeghwZg.css → Popover-B_iz3Kor.css} +0 -0
- /package/dist/{Radio-BbohS64t.css → Radio-Dcpe43rP.css} +0 -0
- /package/dist/{Text-BCRKWTMM.css → Text-hQPAQBGP.css} +0 -0
- /package/dist/{ThemeProvider-DrK12Ru-.css → ThemeProvider-BIeaAmWx.css} +0 -0
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { forwardRef, useRef, useCallback, useEffect,
|
|
4
|
-
import { B as Button } from './Button-CEDmdZ-2-DJVJnigb.js';
|
|
3
|
+
import { forwardRef, useRef, useCallback, useEffect, useState, useId, useMemo, createContext, useContext, useLayoutEffect } from 'react';
|
|
5
4
|
import { c as cx } from './index-tZvMCc77.js';
|
|
6
5
|
import { S as SrOnly } from './SrOnly-BXm1DGl3-BJVodjQp.js';
|
|
7
6
|
import { u as useSwipe } from './useSwipe-DIUHs7T5-DIUHs7T5.js';
|
|
8
|
-
import {
|
|
7
|
+
import { G as Grid } from './Grid-UUtdRKEw.js';
|
|
8
|
+
import { a as SelectCard } from './SelectCard-DUYy3aEL-BVXjCaxz.js';
|
|
9
|
+
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI-Bde85AWI.js';
|
|
10
|
+
import { B as Button } from './Button-DbVpPjA8-CRQ01IJx.js';
|
|
11
|
+
import { S as SvgKeyboardArrowDown } from './keyboard_arrow_down-C8WQ38p1.js';
|
|
12
|
+
import { S as SvgKeyboardArrowUp } from './keyboard_arrow_up-CxzK6LAl.js';
|
|
13
|
+
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-GT5myWCm-Cgn7OEq9.js';
|
|
9
14
|
|
|
10
|
-
import './Calendar-
|
|
15
|
+
import './Calendar-C3dudrjk.css';// these aren't really private, but nor are they really useful to document
|
|
11
16
|
|
|
12
17
|
/**
|
|
13
18
|
* @private
|
|
@@ -7990,41 +7995,73 @@ function friendlyDateTime(dateTimeish) {
|
|
|
7990
7995
|
}
|
|
7991
7996
|
}
|
|
7992
7997
|
|
|
7993
|
-
const SvgKeyboardArrowRight = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42z" }));
|
|
7994
|
-
|
|
7995
7998
|
const SvgKeyboardArrowLeft = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M14.71 15.88 10.83 12l3.88-3.88a.996.996 0 1 0-1.41-1.41L8.71 11.3a.996.996 0 0 0 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.39.39-1.03 0-1.42z" }));
|
|
7996
7999
|
|
|
7997
|
-
const
|
|
7998
|
-
|
|
7999
|
-
const
|
|
8000
|
-
const
|
|
8001
|
-
const
|
|
8002
|
-
const
|
|
8003
|
-
const
|
|
8004
|
-
const
|
|
8005
|
-
const
|
|
8006
|
-
const
|
|
8000
|
+
const SvgKeyboardArrowRight = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M9.29 15.88 13.17 12 9.29 8.12a.996.996 0 1 1 1.41-1.41l4.59 4.59c.39.39.39 1.02 0 1.41L10.7 17.3a.996.996 0 0 1-1.41 0c-.38-.39-.39-1.03 0-1.42z" }));
|
|
8001
|
+
|
|
8002
|
+
const calendar = "_calendar_otkxo_3";
|
|
8003
|
+
const header = "_header_otkxo_16";
|
|
8004
|
+
const controller = "_controller_otkxo_47";
|
|
8005
|
+
const spacer = "_spacer_otkxo_54";
|
|
8006
|
+
const cell = "_cell_otkxo_67";
|
|
8007
|
+
const overflow = "_overflow_otkxo_98";
|
|
8008
|
+
const weekday = "_weekday_otkxo_104";
|
|
8009
|
+
const range = "_range_otkxo_149";
|
|
8010
|
+
const selected = "_selected_otkxo_159";
|
|
8007
8011
|
const styles = {
|
|
8008
8012
|
calendar: calendar,
|
|
8009
8013
|
header: header,
|
|
8010
|
-
heading: heading,
|
|
8011
8014
|
controller: controller,
|
|
8012
8015
|
spacer: spacer,
|
|
8013
|
-
"day-grid": "_day-
|
|
8016
|
+
"day-grid": "_day-grid_otkxo_57",
|
|
8014
8017
|
cell: cell,
|
|
8015
8018
|
overflow: overflow,
|
|
8016
8019
|
weekday: weekday,
|
|
8017
|
-
"
|
|
8018
|
-
"
|
|
8020
|
+
"month-selection": "_month-selection_otkxo_116",
|
|
8021
|
+
"selection-checkbox": "_selection-checkbox_otkxo_116",
|
|
8022
|
+
"year-selection": "_year-selection_otkxo_117",
|
|
8023
|
+
"selection-card": "_selection-card_otkxo_126",
|
|
8024
|
+
"range-first": "_range-first_otkxo_149",
|
|
8025
|
+
"range-last": "_range-last_otkxo_149",
|
|
8019
8026
|
range: range,
|
|
8020
8027
|
selected: selected,
|
|
8021
|
-
"is-unavailable": "_is-
|
|
8022
|
-
"hover-last": "_hover-
|
|
8023
|
-
"range-fill": "_range-
|
|
8024
|
-
"range-disabled": "_range-
|
|
8025
|
-
"controller-button": "_controller-
|
|
8028
|
+
"is-unavailable": "_is-unavailable_otkxo_167",
|
|
8029
|
+
"hover-last": "_hover-last_otkxo_225",
|
|
8030
|
+
"range-fill": "_range-fill_otkxo_229",
|
|
8031
|
+
"range-disabled": "_range-disabled_otkxo_239",
|
|
8032
|
+
"controller-button": "_controller-button_otkxo_247"
|
|
8026
8033
|
};
|
|
8027
8034
|
|
|
8035
|
+
const CalendarContext = createContext(null);
|
|
8036
|
+
function useCalendar() {
|
|
8037
|
+
const context = useContext(CalendarContext);
|
|
8038
|
+
if (!context) {
|
|
8039
|
+
throw new Error("useCalendar must be used within a <Calendar>");
|
|
8040
|
+
}
|
|
8041
|
+
return context;
|
|
8042
|
+
}
|
|
8043
|
+
|
|
8044
|
+
const CalendarMonthButton = forwardRef((props, ref) => {
|
|
8045
|
+
const { calendarSelectionState, onClick, ...rest } = props;
|
|
8046
|
+
const { selectedMonth, locale } = useCalendar();
|
|
8047
|
+
const currentMonth = DateTime.fromObject({ month: selectedMonth }).setLocale(locale).toFormat("MMM");
|
|
8048
|
+
return /* @__PURE__ */ jsx(
|
|
8049
|
+
Button,
|
|
8050
|
+
{
|
|
8051
|
+
ref,
|
|
8052
|
+
appearance: "ghost",
|
|
8053
|
+
size: "small",
|
|
8054
|
+
onClick,
|
|
8055
|
+
icon: {
|
|
8056
|
+
after: calendarSelectionState === "month" ? SvgKeyboardArrowUp : SvgKeyboardArrowDown
|
|
8057
|
+
},
|
|
8058
|
+
...rest,
|
|
8059
|
+
children: currentMonth
|
|
8060
|
+
}
|
|
8061
|
+
);
|
|
8062
|
+
});
|
|
8063
|
+
CalendarMonthButton.displayName = "CalendarMonthButton";
|
|
8064
|
+
|
|
8028
8065
|
const isSameDay = (d1, d2) => {
|
|
8029
8066
|
if (!d1 || !d2) return void 0;
|
|
8030
8067
|
try {
|
|
@@ -8121,81 +8158,201 @@ function rangeUpdater(value, newDate, setValue, onSelection) {
|
|
|
8121
8158
|
}
|
|
8122
8159
|
}
|
|
8123
8160
|
|
|
8124
|
-
const
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8130
|
-
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8134
|
-
|
|
8135
|
-
|
|
8136
|
-
|
|
8137
|
-
|
|
8138
|
-
|
|
8161
|
+
const CalendarNextButton = forwardRef((props, ref) => {
|
|
8162
|
+
const { onClick, className, ...rest } = props;
|
|
8163
|
+
const {
|
|
8164
|
+
focusedDate,
|
|
8165
|
+
setFocusedDate,
|
|
8166
|
+
maxDate,
|
|
8167
|
+
setSelectedMonth,
|
|
8168
|
+
setSelectedYear
|
|
8169
|
+
} = useCalendar();
|
|
8170
|
+
const [disabled, setDisabled] = useState(false);
|
|
8171
|
+
useEffect(() => {
|
|
8172
|
+
setDisabled(
|
|
8173
|
+
maxDate != null && focusedDate.plus({ month: 1 }).startOf("month") > maxDate
|
|
8174
|
+
);
|
|
8175
|
+
}, [maxDate, focusedDate]);
|
|
8176
|
+
const onClickHandler = (e) => {
|
|
8177
|
+
onClick?.(e);
|
|
8178
|
+
const targetMonth = focusedDate.plus({ month: 1 }).startOf("month");
|
|
8179
|
+
const targetDate = focusedDate.plus({ month: 1 });
|
|
8180
|
+
const isCrossingYearBoundary = focusedDate.month === 12 && targetDate.month === 1;
|
|
8181
|
+
if (maxDate !== null) {
|
|
8182
|
+
if (targetDate.toMillis() <= maxDate?.toMillis()) {
|
|
8183
|
+
setFocusedDate(targetDate);
|
|
8184
|
+
setSelectedMonth(targetDate.month);
|
|
8185
|
+
if (isCrossingYearBoundary) {
|
|
8186
|
+
setSelectedYear(targetDate.year);
|
|
8139
8187
|
}
|
|
8140
8188
|
return;
|
|
8141
8189
|
}
|
|
8142
|
-
|
|
8143
|
-
|
|
8144
|
-
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8190
|
+
if (!isSameMonth(targetMonth, focusedDate)) {
|
|
8191
|
+
setFocusedDate(maxDate);
|
|
8192
|
+
setSelectedMonth(maxDate.month);
|
|
8193
|
+
if (isCrossingYearBoundary) {
|
|
8194
|
+
setSelectedYear(maxDate.year);
|
|
8195
|
+
}
|
|
8196
|
+
}
|
|
8197
|
+
return;
|
|
8198
|
+
}
|
|
8199
|
+
setFocusedDate(targetDate);
|
|
8200
|
+
setSelectedMonth(targetDate.month);
|
|
8201
|
+
if (isCrossingYearBoundary) {
|
|
8202
|
+
setSelectedYear(targetDate.year);
|
|
8203
|
+
}
|
|
8204
|
+
};
|
|
8205
|
+
return /* @__PURE__ */ jsx(
|
|
8206
|
+
Button,
|
|
8207
|
+
{
|
|
8208
|
+
onClick: onClickHandler,
|
|
8209
|
+
appearance: "ghost",
|
|
8210
|
+
size: "small",
|
|
8211
|
+
className: cx(styles["controller-button"], className),
|
|
8212
|
+
icon: SvgKeyboardArrowRight,
|
|
8213
|
+
"aria-label": "Next Month",
|
|
8214
|
+
"data-anv": "calendar-next",
|
|
8215
|
+
ref,
|
|
8216
|
+
...rest,
|
|
8217
|
+
disabled
|
|
8218
|
+
}
|
|
8219
|
+
);
|
|
8220
|
+
});
|
|
8221
|
+
CalendarNextButton.displayName = "CalendarNextButton";
|
|
8222
|
+
|
|
8223
|
+
const CalendarNowButton = forwardRef((props, ref) => {
|
|
8224
|
+
const { onClick, ...rest } = props;
|
|
8225
|
+
const {
|
|
8226
|
+
setFocusedDate,
|
|
8227
|
+
setSelectedMonth,
|
|
8228
|
+
setSelectedYear,
|
|
8229
|
+
value,
|
|
8230
|
+
setValue,
|
|
8231
|
+
defaultTimeZone,
|
|
8232
|
+
unavailableDates,
|
|
8233
|
+
unavailable,
|
|
8234
|
+
onSelection,
|
|
8235
|
+
minDate,
|
|
8236
|
+
maxDate,
|
|
8237
|
+
controlled,
|
|
8238
|
+
range
|
|
8239
|
+
} = useCalendar();
|
|
8240
|
+
const nToday = DateTime.fromISO(DateTime.now().toISO(), {
|
|
8241
|
+
zone: defaultTimeZone
|
|
8242
|
+
}).startOf("day");
|
|
8243
|
+
const onClickHandler = () => {
|
|
8244
|
+
setFocusedDate(nToday);
|
|
8245
|
+
setSelectedMonth(nToday.month);
|
|
8246
|
+
setSelectedYear(nToday.year);
|
|
8247
|
+
if (!range) {
|
|
8248
|
+
onSelection?.({
|
|
8249
|
+
value: toDateString(nToday) ?? void 0
|
|
8250
|
+
});
|
|
8251
|
+
if (!controlled) {
|
|
8252
|
+
setValue(nToday);
|
|
8156
8253
|
}
|
|
8254
|
+
return;
|
|
8255
|
+
}
|
|
8256
|
+
rangeUpdater(value, nToday, setValue, onSelection);
|
|
8257
|
+
};
|
|
8258
|
+
const isDisabled = isBeyondMaxDate(nToday, maxDate) || isBeyondMinDate(nToday, minDate) || isUnavailableDate(nToday, unavailableDates, unavailable, defaultTimeZone);
|
|
8259
|
+
return /* @__PURE__ */ jsx(
|
|
8260
|
+
Button,
|
|
8261
|
+
{
|
|
8262
|
+
ref,
|
|
8263
|
+
onClick: onClickHandler,
|
|
8264
|
+
appearance: "ghost",
|
|
8265
|
+
disabled: isDisabled,
|
|
8266
|
+
"data-anv": "calendar-now",
|
|
8267
|
+
size: "small",
|
|
8268
|
+
...rest,
|
|
8269
|
+
children: "Today"
|
|
8270
|
+
}
|
|
8271
|
+
);
|
|
8272
|
+
});
|
|
8273
|
+
CalendarNowButton.displayName = "CalendarNowButton";
|
|
8274
|
+
|
|
8275
|
+
const CalendarPrevButton = forwardRef((props, ref) => {
|
|
8276
|
+
const { onClick, className, ...rest } = props;
|
|
8277
|
+
const {
|
|
8278
|
+
focusedDate,
|
|
8279
|
+
setFocusedDate,
|
|
8280
|
+
minDate,
|
|
8281
|
+
setSelectedMonth,
|
|
8282
|
+
setSelectedYear
|
|
8283
|
+
} = useCalendar();
|
|
8284
|
+
const [disabled, setDisabled] = useState(false);
|
|
8285
|
+
useEffect(() => {
|
|
8286
|
+
setDisabled(
|
|
8287
|
+
minDate != null && focusedDate.minus({ month: 1 }).endOf("month") < minDate
|
|
8157
8288
|
);
|
|
8158
|
-
}
|
|
8159
|
-
)
|
|
8160
|
-
|
|
8161
|
-
|
|
8162
|
-
const
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
if (maxDate !== null) {
|
|
8171
|
-
if (targetDate.toMillis() <= maxDate?.toMillis()) {
|
|
8172
|
-
setFocusedDate(targetDate);
|
|
8173
|
-
return;
|
|
8174
|
-
}
|
|
8175
|
-
if (!isSameMonth(targetMonth, focusedDate)) {
|
|
8176
|
-
setFocusedDate(maxDate);
|
|
8289
|
+
}, [minDate, focusedDate]);
|
|
8290
|
+
const onClickHandler = (e) => {
|
|
8291
|
+
onClick?.(e);
|
|
8292
|
+
const targetMonth = focusedDate.minus({ month: 1 }).endOf("month");
|
|
8293
|
+
const targetDate = focusedDate.minus({ month: 1 });
|
|
8294
|
+
const isCrossingYearBoundary = focusedDate.month === 1 && targetDate.month === 12;
|
|
8295
|
+
if (minDate !== null) {
|
|
8296
|
+
if (targetDate.toMillis() >= minDate?.toMillis()) {
|
|
8297
|
+
setFocusedDate(targetDate);
|
|
8298
|
+
setSelectedMonth(targetDate.month);
|
|
8299
|
+
if (isCrossingYearBoundary) {
|
|
8300
|
+
setSelectedYear(targetDate.year);
|
|
8177
8301
|
}
|
|
8178
8302
|
return;
|
|
8179
8303
|
}
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
appearance: "ghost",
|
|
8187
|
-
size: "small",
|
|
8188
|
-
className: cx(styles["controller-button"], className),
|
|
8189
|
-
icon: SvgKeyboardArrowRight,
|
|
8190
|
-
"aria-label": "Next Month",
|
|
8191
|
-
"data-anv": "calendar-next",
|
|
8192
|
-
ref,
|
|
8193
|
-
...rest
|
|
8304
|
+
if (!isSameMonth(targetMonth, focusedDate)) {
|
|
8305
|
+
setFocusedDate(minDate);
|
|
8306
|
+
setSelectedMonth(minDate.month);
|
|
8307
|
+
if (isCrossingYearBoundary) {
|
|
8308
|
+
setSelectedYear(minDate.year);
|
|
8309
|
+
}
|
|
8194
8310
|
}
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
);
|
|
8198
|
-
|
|
8311
|
+
return;
|
|
8312
|
+
}
|
|
8313
|
+
setFocusedDate(targetDate);
|
|
8314
|
+
setSelectedMonth(targetDate.month);
|
|
8315
|
+
if (isCrossingYearBoundary) {
|
|
8316
|
+
setSelectedYear(targetDate.year);
|
|
8317
|
+
}
|
|
8318
|
+
};
|
|
8319
|
+
return /* @__PURE__ */ jsx(
|
|
8320
|
+
Button,
|
|
8321
|
+
{
|
|
8322
|
+
ref,
|
|
8323
|
+
onClick: onClickHandler,
|
|
8324
|
+
className: cx(styles["controller-button"], className),
|
|
8325
|
+
appearance: "ghost",
|
|
8326
|
+
size: "small",
|
|
8327
|
+
icon: SvgKeyboardArrowLeft,
|
|
8328
|
+
"data-anv": "calendar-prev",
|
|
8329
|
+
"aria-label": "Previous Month",
|
|
8330
|
+
...rest,
|
|
8331
|
+
disabled
|
|
8332
|
+
}
|
|
8333
|
+
);
|
|
8334
|
+
});
|
|
8335
|
+
CalendarPrevButton.displayName = "CalendarPrevButton";
|
|
8336
|
+
|
|
8337
|
+
const CalendarYearButton = forwardRef((props, ref) => {
|
|
8338
|
+
const { calendarSelectionState, ...rest } = props;
|
|
8339
|
+
const { selectedYear, locale } = useCalendar();
|
|
8340
|
+
const currentYear = DateTime.fromObject({ year: selectedYear }).setLocale(locale).toLocaleString({ year: "numeric" });
|
|
8341
|
+
return /* @__PURE__ */ jsx(
|
|
8342
|
+
Button,
|
|
8343
|
+
{
|
|
8344
|
+
ref,
|
|
8345
|
+
appearance: "ghost",
|
|
8346
|
+
size: "small",
|
|
8347
|
+
icon: {
|
|
8348
|
+
after: calendarSelectionState === "year" ? SvgKeyboardArrowUp : SvgKeyboardArrowDown
|
|
8349
|
+
},
|
|
8350
|
+
...rest,
|
|
8351
|
+
children: currentYear
|
|
8352
|
+
}
|
|
8353
|
+
);
|
|
8354
|
+
});
|
|
8355
|
+
CalendarYearButton.displayName = "CalendarYearButton";
|
|
8199
8356
|
|
|
8200
8357
|
const CalendarDay = forwardRef(
|
|
8201
8358
|
(props, ref) => {
|
|
@@ -8219,7 +8376,9 @@ const CalendarDay = forwardRef(
|
|
|
8219
8376
|
id: uid,
|
|
8220
8377
|
range,
|
|
8221
8378
|
dateFormat,
|
|
8222
|
-
startDay
|
|
8379
|
+
startDay,
|
|
8380
|
+
setSelectedMonth,
|
|
8381
|
+
setSelectedYear
|
|
8223
8382
|
} = context;
|
|
8224
8383
|
const initialized = useRef(false);
|
|
8225
8384
|
const futureDateSelection = useCallback(
|
|
@@ -8253,7 +8412,14 @@ const CalendarDay = forwardRef(
|
|
|
8253
8412
|
return;
|
|
8254
8413
|
}
|
|
8255
8414
|
setFocusedDate(targetDate);
|
|
8415
|
+
if (targetDate.month !== focusedDate.month) {
|
|
8416
|
+
setSelectedMonth(targetDate.month);
|
|
8417
|
+
if (targetDate.year !== focusedDate.year) {
|
|
8418
|
+
setSelectedYear(targetDate.year);
|
|
8419
|
+
}
|
|
8420
|
+
}
|
|
8256
8421
|
},
|
|
8422
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- we don't need to re-render when the selected month or year changes
|
|
8257
8423
|
[maxDate, setFocusedDate, defaultTimeZone, unavailableDates, unavailable]
|
|
8258
8424
|
);
|
|
8259
8425
|
const pastDateSelection = (targetDate) => {
|
|
@@ -8286,6 +8452,12 @@ const CalendarDay = forwardRef(
|
|
|
8286
8452
|
return;
|
|
8287
8453
|
}
|
|
8288
8454
|
setFocusedDate(targetDate);
|
|
8455
|
+
if (targetDate.month !== focusedDate.month) {
|
|
8456
|
+
setSelectedMonth(targetDate.month);
|
|
8457
|
+
if (targetDate.year !== focusedDate.year) {
|
|
8458
|
+
setSelectedYear(targetDate.year);
|
|
8459
|
+
}
|
|
8460
|
+
}
|
|
8289
8461
|
};
|
|
8290
8462
|
const isSelectedDate = (date2, compareDate) => {
|
|
8291
8463
|
if (!range) {
|
|
@@ -8311,7 +8483,9 @@ const CalendarDay = forwardRef(
|
|
|
8311
8483
|
case "Enter":
|
|
8312
8484
|
e.preventDefault();
|
|
8313
8485
|
if (!range) {
|
|
8314
|
-
!controlled
|
|
8486
|
+
if (!controlled) {
|
|
8487
|
+
setValue(isSameDay(value, focusedDate) ? null : focusedDate);
|
|
8488
|
+
}
|
|
8315
8489
|
onSelection?.({
|
|
8316
8490
|
value: isSameDay(value, focusedDate) ? void 0 : focusedDate.setZone(defaultTimeZone).startOf("day").toISO() ?? void 0
|
|
8317
8491
|
});
|
|
@@ -8380,7 +8554,9 @@ const CalendarDay = forwardRef(
|
|
|
8380
8554
|
onSelection?.({
|
|
8381
8555
|
value: toDateString(d.setZone(defaultTimeZone)) ?? void 0
|
|
8382
8556
|
});
|
|
8383
|
-
!controlled
|
|
8557
|
+
if (!controlled) {
|
|
8558
|
+
setValue(d);
|
|
8559
|
+
}
|
|
8384
8560
|
return;
|
|
8385
8561
|
}
|
|
8386
8562
|
rangeUpdater(value, d, setValue, onSelection);
|
|
@@ -8771,60 +8947,288 @@ const CalendarMonth = forwardRef(
|
|
|
8771
8947
|
);
|
|
8772
8948
|
CalendarMonth.displayName = "CalendarMonth";
|
|
8773
8949
|
|
|
8774
|
-
const
|
|
8775
|
-
|
|
8776
|
-
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8950
|
+
const CalendarMonthSelection = forwardRef(({ onMonthSelection, ...props }, ref) => {
|
|
8951
|
+
const { defaultTimeZone, maxDate, minDate, selectedMonth, selectedYear } = useCalendar();
|
|
8952
|
+
const monthSelectionRef = useRef(null);
|
|
8953
|
+
const combinedRef = useMergeRefs([ref, monthSelectionRef]);
|
|
8954
|
+
const currentDate = useMemo(
|
|
8955
|
+
() => DateTime.fromObject({ year: selectedYear, month: selectedMonth }).setZone(defaultTimeZone).startOf("day"),
|
|
8956
|
+
[defaultTimeZone, selectedYear, selectedMonth]
|
|
8957
|
+
);
|
|
8958
|
+
const dates = useMemo(
|
|
8959
|
+
() => Array.from({ length: 12 }, (_, i) => {
|
|
8960
|
+
const date = DateTime.fromObject({
|
|
8961
|
+
year: selectedYear,
|
|
8962
|
+
month: 1
|
|
8963
|
+
}).plus({
|
|
8964
|
+
month: i
|
|
8965
|
+
});
|
|
8966
|
+
const disabled = minDate && date < minDate || maxDate && date > maxDate;
|
|
8967
|
+
return {
|
|
8968
|
+
month: date.month,
|
|
8969
|
+
disabled: disabled ?? false
|
|
8970
|
+
};
|
|
8971
|
+
}),
|
|
8972
|
+
[maxDate, minDate, selectedYear]
|
|
8973
|
+
);
|
|
8974
|
+
const classes = cx(styles["month-selection"], props.className);
|
|
8975
|
+
const [focusedIndex, setFocusedIndex] = useState(selectedMonth - 1);
|
|
8976
|
+
useEffect(() => {
|
|
8977
|
+
if (minDate || maxDate) {
|
|
8978
|
+
let index = dates.findIndex(({ month }) => month === selectedMonth);
|
|
8979
|
+
while (dates[index].disabled && index < 11) {
|
|
8980
|
+
index++;
|
|
8981
|
+
}
|
|
8982
|
+
setFocusedIndex(index);
|
|
8983
|
+
} else {
|
|
8984
|
+
setFocusedIndex(selectedMonth - 1);
|
|
8985
|
+
}
|
|
8986
|
+
}, [selectedMonth, minDate, maxDate, dates]);
|
|
8987
|
+
const handleKeyDown = useCallback(
|
|
8988
|
+
(e) => {
|
|
8989
|
+
const target = e.target;
|
|
8990
|
+
const cards = monthSelectionRef.current?.querySelectorAll(
|
|
8991
|
+
"input[type='checkbox']"
|
|
8992
|
+
);
|
|
8993
|
+
if (!cards || cards.length === 0) {
|
|
8800
8994
|
return;
|
|
8801
8995
|
}
|
|
8802
|
-
|
|
8996
|
+
const cardArray = Array.from(cards);
|
|
8997
|
+
const currentIndex = cardArray.indexOf(target);
|
|
8998
|
+
if (currentIndex === -1) return;
|
|
8999
|
+
const updateFocusedIndex = (index) => {
|
|
9000
|
+
e.preventDefault();
|
|
9001
|
+
cardArray[index].focus();
|
|
9002
|
+
setFocusedIndex(index);
|
|
9003
|
+
};
|
|
9004
|
+
let newIndex;
|
|
9005
|
+
switch (e.key) {
|
|
9006
|
+
case "ArrowLeft":
|
|
9007
|
+
newIndex = currentIndex > 0 ? currentIndex - 1 : 11;
|
|
9008
|
+
while (dates[newIndex].disabled) {
|
|
9009
|
+
newIndex = newIndex > 0 ? newIndex - 1 : 11;
|
|
9010
|
+
}
|
|
9011
|
+
updateFocusedIndex(newIndex);
|
|
9012
|
+
break;
|
|
9013
|
+
case "ArrowRight":
|
|
9014
|
+
newIndex = currentIndex < 11 ? currentIndex + 1 : 0;
|
|
9015
|
+
while (dates[newIndex].disabled) {
|
|
9016
|
+
newIndex = newIndex < 11 ? newIndex + 1 : 0;
|
|
9017
|
+
}
|
|
9018
|
+
updateFocusedIndex(newIndex);
|
|
9019
|
+
break;
|
|
9020
|
+
case "ArrowUp":
|
|
9021
|
+
if (currentIndex < 3) {
|
|
9022
|
+
newIndex = currentIndex + 9;
|
|
9023
|
+
} else {
|
|
9024
|
+
newIndex = currentIndex - 3;
|
|
9025
|
+
}
|
|
9026
|
+
while (dates[newIndex].disabled) {
|
|
9027
|
+
if (newIndex > 2) {
|
|
9028
|
+
newIndex -= 3;
|
|
9029
|
+
} else {
|
|
9030
|
+
newIndex += 9;
|
|
9031
|
+
}
|
|
9032
|
+
}
|
|
9033
|
+
updateFocusedIndex(newIndex);
|
|
9034
|
+
break;
|
|
9035
|
+
case "ArrowDown":
|
|
9036
|
+
if (currentIndex > 8) {
|
|
9037
|
+
newIndex = currentIndex - 9;
|
|
9038
|
+
} else {
|
|
9039
|
+
newIndex = currentIndex + 3;
|
|
9040
|
+
}
|
|
9041
|
+
while (dates[newIndex].disabled) {
|
|
9042
|
+
if (newIndex < 9) {
|
|
9043
|
+
newIndex += 3;
|
|
9044
|
+
} else {
|
|
9045
|
+
newIndex -= 9;
|
|
9046
|
+
}
|
|
9047
|
+
}
|
|
9048
|
+
updateFocusedIndex(newIndex);
|
|
9049
|
+
break;
|
|
9050
|
+
case "Enter":
|
|
9051
|
+
case " ":
|
|
9052
|
+
e.preventDefault();
|
|
9053
|
+
if (!dates[currentIndex].disabled) {
|
|
9054
|
+
onMonthSelection(dates[currentIndex].month);
|
|
9055
|
+
}
|
|
9056
|
+
break;
|
|
9057
|
+
}
|
|
9058
|
+
},
|
|
9059
|
+
[dates, onMonthSelection]
|
|
9060
|
+
);
|
|
9061
|
+
return /* @__PURE__ */ jsx(
|
|
9062
|
+
"div",
|
|
9063
|
+
{
|
|
9064
|
+
ref: combinedRef,
|
|
9065
|
+
"data-anv": "calendar-month-selection",
|
|
9066
|
+
className: classes,
|
|
9067
|
+
...props,
|
|
9068
|
+
children: /* @__PURE__ */ jsx("div", { role: "grid", "aria-label": "Calendar month selection", children: /* @__PURE__ */ jsx(
|
|
9069
|
+
Grid,
|
|
9070
|
+
{
|
|
9071
|
+
templateColumns: "repeat(3, minmax(0, 1fr))",
|
|
9072
|
+
gap: 3,
|
|
9073
|
+
onKeyDown: handleKeyDown,
|
|
9074
|
+
role: "row",
|
|
9075
|
+
children: dates.map(({ month, disabled }, index) => /* @__PURE__ */ jsx("div", { role: "gridcell", children: /* @__PURE__ */ jsx(
|
|
9076
|
+
SelectCard,
|
|
9077
|
+
{
|
|
9078
|
+
id: month.toString(),
|
|
9079
|
+
disabled,
|
|
9080
|
+
onChange: () => onMonthSelection(month),
|
|
9081
|
+
checked: selectedMonth === month && selectedYear === currentDate.year,
|
|
9082
|
+
checkboxProps: {
|
|
9083
|
+
className: styles["selection-checkbox"],
|
|
9084
|
+
tabIndex: focusedIndex === index ? 0 : -1
|
|
9085
|
+
},
|
|
9086
|
+
className: styles["selection-card"],
|
|
9087
|
+
children: DateTime.fromObject({ month }).toFormat("MMMM")
|
|
9088
|
+
}
|
|
9089
|
+
) }, month.toString()))
|
|
9090
|
+
}
|
|
9091
|
+
) })
|
|
9092
|
+
}
|
|
9093
|
+
);
|
|
9094
|
+
});
|
|
9095
|
+
CalendarMonthSelection.displayName = "CalendarMonthSelection";
|
|
9096
|
+
|
|
9097
|
+
const CalendarYearSelection = forwardRef(({ onYearSelection, ...props }, ref) => {
|
|
9098
|
+
const { maxDate, minDate, selectedYear } = useCalendar();
|
|
9099
|
+
const containerRef = useRef(null);
|
|
9100
|
+
const combinedRef = useMergeRefs([ref, containerRef]);
|
|
9101
|
+
const initialYears = useMemo(
|
|
9102
|
+
() => Array.from({ length: 52 }, (_, i) => {
|
|
9103
|
+
const year = selectedYear - (selectedYear % 2 ? 24 : 25) + i;
|
|
9104
|
+
const disabled = minDate && year < minDate.year || maxDate && year > maxDate.year;
|
|
9105
|
+
return { year, disabled: disabled ?? false };
|
|
9106
|
+
}),
|
|
9107
|
+
[selectedYear, minDate, maxDate]
|
|
9108
|
+
);
|
|
9109
|
+
const [dates, setDates] = useState(initialYears);
|
|
9110
|
+
useLayoutEffect(() => {
|
|
9111
|
+
containerRef.current?.scrollTo({
|
|
9112
|
+
top: (containerRef.current?.scrollHeight ?? 0) / 2 - (containerRef.current?.clientHeight ?? 0) / 2
|
|
9113
|
+
});
|
|
9114
|
+
const container = containerRef.current;
|
|
9115
|
+
if (!container) return;
|
|
9116
|
+
const handleScroll = () => {
|
|
9117
|
+
const { scrollTop, scrollHeight, clientHeight } = container;
|
|
9118
|
+
const distanceFromTop = scrollTop;
|
|
9119
|
+
const distanceFromBottom = scrollHeight - scrollTop - clientHeight;
|
|
9120
|
+
if (distanceFromTop < 200 && !minDate) {
|
|
9121
|
+
setDates((prevDates) => {
|
|
9122
|
+
const firstYear = prevDates[0].year;
|
|
9123
|
+
const newDates = Array.from({ length: 20 }, (_, i) => ({
|
|
9124
|
+
year: firstYear - (20 - i),
|
|
9125
|
+
disabled: false
|
|
9126
|
+
}));
|
|
9127
|
+
return [...newDates, ...prevDates];
|
|
9128
|
+
});
|
|
9129
|
+
} else if (distanceFromBottom < 200 && !maxDate) {
|
|
9130
|
+
setDates((prevDates) => {
|
|
9131
|
+
const lastYear = prevDates[prevDates.length - 1].year;
|
|
9132
|
+
const newDates = Array.from({ length: 20 }, (_, i) => ({
|
|
9133
|
+
year: lastYear + (i + 1),
|
|
9134
|
+
disabled: false
|
|
9135
|
+
}));
|
|
9136
|
+
return [...prevDates, ...newDates];
|
|
9137
|
+
});
|
|
9138
|
+
}
|
|
8803
9139
|
};
|
|
8804
|
-
|
|
8805
|
-
return
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
|
|
8811
|
-
|
|
8812
|
-
|
|
8813
|
-
|
|
8814
|
-
|
|
8815
|
-
|
|
9140
|
+
container.addEventListener("scroll", handleScroll);
|
|
9141
|
+
return () => container.removeEventListener("scroll", handleScroll);
|
|
9142
|
+
}, [minDate, maxDate]);
|
|
9143
|
+
const classes = cx(styles["year-selection"], props.className);
|
|
9144
|
+
const [focusedIndex, setFocusedIndex] = useState(
|
|
9145
|
+
// start focused on the middle of the year selection, with odd numbers on the left
|
|
9146
|
+
selectedYear % 2 ? 24 : 25
|
|
9147
|
+
);
|
|
9148
|
+
const handleKeyDown = useCallback(
|
|
9149
|
+
(e) => {
|
|
9150
|
+
const target = e.target;
|
|
9151
|
+
const cards = containerRef.current?.querySelectorAll(
|
|
9152
|
+
"input[type='checkbox']"
|
|
9153
|
+
);
|
|
9154
|
+
if (!cards || cards.length === 0) {
|
|
9155
|
+
return;
|
|
8816
9156
|
}
|
|
8817
|
-
|
|
8818
|
-
|
|
8819
|
-
);
|
|
8820
|
-
|
|
9157
|
+
const cardArray = Array.from(cards);
|
|
9158
|
+
const currentIndex = cardArray.indexOf(target);
|
|
9159
|
+
if (currentIndex === -1) return;
|
|
9160
|
+
const updateFocusedIndex = (index) => {
|
|
9161
|
+
e.preventDefault();
|
|
9162
|
+
cardArray[index].focus();
|
|
9163
|
+
setFocusedIndex(index);
|
|
9164
|
+
};
|
|
9165
|
+
switch (e.key) {
|
|
9166
|
+
case "ArrowLeft":
|
|
9167
|
+
updateFocusedIndex(currentIndex - 1);
|
|
9168
|
+
break;
|
|
9169
|
+
case "ArrowRight":
|
|
9170
|
+
updateFocusedIndex(currentIndex + 1);
|
|
9171
|
+
break;
|
|
9172
|
+
case "ArrowUp":
|
|
9173
|
+
updateFocusedIndex(currentIndex - 2);
|
|
9174
|
+
break;
|
|
9175
|
+
case "ArrowDown":
|
|
9176
|
+
updateFocusedIndex(currentIndex + 2);
|
|
9177
|
+
break;
|
|
9178
|
+
case "Enter":
|
|
9179
|
+
case " ":
|
|
9180
|
+
e.preventDefault();
|
|
9181
|
+
onYearSelection(dates[currentIndex].year);
|
|
9182
|
+
break;
|
|
9183
|
+
}
|
|
9184
|
+
},
|
|
9185
|
+
[dates, onYearSelection]
|
|
9186
|
+
);
|
|
9187
|
+
return /* @__PURE__ */ jsx(
|
|
9188
|
+
"div",
|
|
9189
|
+
{
|
|
9190
|
+
ref: combinedRef,
|
|
9191
|
+
"data-anv": "calendar-year-selection",
|
|
9192
|
+
className: classes,
|
|
9193
|
+
...props,
|
|
9194
|
+
children: /* @__PURE__ */ jsx("div", { role: "grid", "aria-label": "Calendar year selection", children: /* @__PURE__ */ jsx(
|
|
9195
|
+
Grid,
|
|
9196
|
+
{
|
|
9197
|
+
templateColumns: "repeat(2, minmax(0, 1fr))",
|
|
9198
|
+
gap: 3,
|
|
9199
|
+
onKeyDown: handleKeyDown,
|
|
9200
|
+
role: "row",
|
|
9201
|
+
children: dates.map(({ year, disabled }, index) => {
|
|
9202
|
+
const yearDate = DateTime.fromObject({ year }).toFormat("yyyy");
|
|
9203
|
+
return /* @__PURE__ */ jsx("div", { role: "gridcell", children: /* @__PURE__ */ jsx(
|
|
9204
|
+
SelectCard,
|
|
9205
|
+
{
|
|
9206
|
+
id: yearDate,
|
|
9207
|
+
onChange: () => onYearSelection(year),
|
|
9208
|
+
checked: selectedYear === year,
|
|
9209
|
+
checkboxProps: {
|
|
9210
|
+
className: styles["selection-checkbox"],
|
|
9211
|
+
tabIndex: focusedIndex === index ? 0 : -1
|
|
9212
|
+
},
|
|
9213
|
+
className: styles["selection-card"],
|
|
9214
|
+
disabled,
|
|
9215
|
+
children: yearDate
|
|
9216
|
+
}
|
|
9217
|
+
) }, yearDate);
|
|
9218
|
+
})
|
|
9219
|
+
}
|
|
9220
|
+
) })
|
|
9221
|
+
}
|
|
9222
|
+
);
|
|
9223
|
+
});
|
|
9224
|
+
CalendarYearSelection.displayName = "CalendarYearSelection";
|
|
8821
9225
|
|
|
8822
|
-
const CalendarContext = createContext(null);
|
|
8823
9226
|
const Calendar = forwardRef(
|
|
8824
9227
|
(props, ref) => {
|
|
8825
9228
|
const uid = useId();
|
|
8826
9229
|
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
8827
9230
|
const {
|
|
9231
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- overriding children internally
|
|
8828
9232
|
children,
|
|
8829
9233
|
focusedDate: focusProp,
|
|
8830
9234
|
defaultFocusedDate,
|
|
@@ -8846,36 +9250,98 @@ const Calendar = forwardRef(
|
|
|
8846
9250
|
range,
|
|
8847
9251
|
...remainingProps
|
|
8848
9252
|
} = componentProps;
|
|
9253
|
+
const calendarRef = useRef(null);
|
|
9254
|
+
const combinedRef = useMergeRefs([ref, calendarRef]);
|
|
9255
|
+
const lastIValue = useRef(iValue);
|
|
9256
|
+
const buttonsRef = useRef(void 0);
|
|
9257
|
+
const [calendarWidth, setCalendarWidth] = useState(
|
|
9258
|
+
void 0
|
|
9259
|
+
);
|
|
9260
|
+
const [calendarSelectionState, setCalendarSelectionState] = useState("day");
|
|
9261
|
+
useEffect(() => {
|
|
9262
|
+
if (!calendarRef.current || style?.width != null) return;
|
|
9263
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
9264
|
+
for (const entry of entries) {
|
|
9265
|
+
const width = entry.contentRect.width;
|
|
9266
|
+
if (calendarSelectionState === "day" && width > 100) {
|
|
9267
|
+
setCalendarWidth(width);
|
|
9268
|
+
}
|
|
9269
|
+
}
|
|
9270
|
+
});
|
|
9271
|
+
resizeObserver.observe(calendarRef.current);
|
|
9272
|
+
return () => {
|
|
9273
|
+
resizeObserver.disconnect();
|
|
9274
|
+
};
|
|
9275
|
+
}, [calendarSelectionState, style?.width]);
|
|
8849
9276
|
const styleCombined = {
|
|
9277
|
+
width: calendarWidth,
|
|
8850
9278
|
...style,
|
|
8851
9279
|
...layoutStyles
|
|
8852
9280
|
};
|
|
8853
|
-
const
|
|
8854
|
-
|
|
8855
|
-
|
|
8856
|
-
|
|
8857
|
-
|
|
8858
|
-
|
|
8859
|
-
|
|
8860
|
-
|
|
8861
|
-
|
|
8862
|
-
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
9281
|
+
const { nDate, nDefaultDate, nToday } = useMemo(
|
|
9282
|
+
() => ({
|
|
9283
|
+
nDate: iValue ? typeof iValue === "string" ? normalizeDate(iValue, defaultTimeZone) : {
|
|
9284
|
+
start: iValue.start ? normalizeDate(iValue.start, defaultTimeZone) : null,
|
|
9285
|
+
end: iValue.end ? normalizeDate(iValue.end, defaultTimeZone) : null
|
|
9286
|
+
} : null,
|
|
9287
|
+
nDefaultDate: iDefaultValue ? typeof iDefaultValue === "string" ? normalizeDate(iDefaultValue, defaultTimeZone) : {
|
|
9288
|
+
start: iDefaultValue.start ? normalizeDate(iDefaultValue.start, defaultTimeZone) : null,
|
|
9289
|
+
end: iDefaultValue?.end ? normalizeDate(iDefaultValue.end, defaultTimeZone) : null
|
|
9290
|
+
} : null,
|
|
9291
|
+
nToday: typeof iValue === "string" ? normalizeDate(DateTime.now().toISO(), defaultTimeZone) : {
|
|
9292
|
+
start: normalizeDate(DateTime.now().toISO(), defaultTimeZone),
|
|
9293
|
+
end: normalizeDate(DateTime.now().toISO(), defaultTimeZone)
|
|
9294
|
+
}
|
|
9295
|
+
}),
|
|
9296
|
+
[iValue, iDefaultValue, defaultTimeZone]
|
|
9297
|
+
);
|
|
8866
9298
|
const [value, setValue] = useState(nDate ?? nDefaultDate ?? nToday);
|
|
8867
|
-
const
|
|
9299
|
+
const getInitialDate = useMemo(() => {
|
|
9300
|
+
if (defaultFocusedDate) {
|
|
9301
|
+
return normalizeDate(defaultFocusedDate, defaultTimeZone);
|
|
9302
|
+
}
|
|
9303
|
+
if (iDefaultValue) {
|
|
9304
|
+
const date = typeof iDefaultValue === "string" ? normalizeDate(iDefaultValue, defaultTimeZone) : normalizeDate(
|
|
9305
|
+
iDefaultValue.start ?? iDefaultValue.end ?? "",
|
|
9306
|
+
defaultTimeZone
|
|
9307
|
+
);
|
|
9308
|
+
return date;
|
|
9309
|
+
}
|
|
8868
9310
|
if (!DateTime.isDateTime(nDate) && !DateTime.isDateTime(nDefaultDate) && !DateTime.isDateTime(nToday)) {
|
|
8869
9311
|
return nDate?.start ?? nDefaultDate?.start ?? nToday?.start;
|
|
8870
9312
|
}
|
|
8871
9313
|
return nDate ?? nDefaultDate ?? nToday;
|
|
8872
|
-
}
|
|
8873
|
-
|
|
9314
|
+
}, [
|
|
9315
|
+
defaultFocusedDate,
|
|
9316
|
+
iDefaultValue,
|
|
9317
|
+
nDate,
|
|
9318
|
+
nDefaultDate,
|
|
9319
|
+
nToday,
|
|
9320
|
+
defaultTimeZone
|
|
9321
|
+
]);
|
|
9322
|
+
const initialDate = getInitialDate ?? DateTime.now();
|
|
9323
|
+
const [focusedDate, setFocusedDate] = useState(initialDate);
|
|
8874
9324
|
const [hoveredDate, setHoveredDate] = useState();
|
|
9325
|
+
const [selectedMonth, setSelectedMonth] = useState(
|
|
9326
|
+
initialDate.month
|
|
9327
|
+
);
|
|
9328
|
+
const [selectedYear, setSelectedYear] = useState(
|
|
9329
|
+
initialDate.year
|
|
9330
|
+
);
|
|
8875
9331
|
useEffect(() => {
|
|
8876
|
-
if (!focusProp) return;
|
|
8877
|
-
|
|
8878
|
-
|
|
9332
|
+
if (!focusProp && !defaultFocusedDate) return;
|
|
9333
|
+
if (focusProp) {
|
|
9334
|
+
setFocusedDate(normalizeDate(focusProp, defaultTimeZone));
|
|
9335
|
+
} else if (defaultFocusedDate) {
|
|
9336
|
+
setFocusedDate(normalizeDate(defaultFocusedDate, defaultTimeZone));
|
|
9337
|
+
setSelectedMonth(
|
|
9338
|
+
normalizeDate(defaultFocusedDate, defaultTimeZone).month
|
|
9339
|
+
);
|
|
9340
|
+
setSelectedYear(
|
|
9341
|
+
normalizeDate(defaultFocusedDate, defaultTimeZone).year
|
|
9342
|
+
);
|
|
9343
|
+
}
|
|
9344
|
+
}, [focusProp, defaultFocusedDate]);
|
|
8879
9345
|
useEffect(() => {
|
|
8880
9346
|
if (!iValue) {
|
|
8881
9347
|
lastIValue.current = iValue;
|
|
@@ -8895,6 +9361,14 @@ const Calendar = forwardRef(
|
|
|
8895
9361
|
}
|
|
8896
9362
|
lastIValue.current = iValue;
|
|
8897
9363
|
}, [iValue]);
|
|
9364
|
+
const normalizedMinDate = useMemo(
|
|
9365
|
+
() => minDate ? normalizeDate(minDate, defaultTimeZone) : null,
|
|
9366
|
+
[minDate, defaultTimeZone]
|
|
9367
|
+
);
|
|
9368
|
+
const normalizedMaxDate = useMemo(
|
|
9369
|
+
() => maxDate ? normalizeDate(maxDate, defaultTimeZone) : null,
|
|
9370
|
+
[maxDate, defaultTimeZone]
|
|
9371
|
+
);
|
|
8898
9372
|
const providerValue = useMemo(() => {
|
|
8899
9373
|
const format = {
|
|
8900
9374
|
weekday: "long",
|
|
@@ -8905,6 +9379,10 @@ const Calendar = forwardRef(
|
|
|
8905
9379
|
return {
|
|
8906
9380
|
focusedDate,
|
|
8907
9381
|
setFocusedDate,
|
|
9382
|
+
selectedMonth,
|
|
9383
|
+
setSelectedMonth,
|
|
9384
|
+
selectedYear,
|
|
9385
|
+
setSelectedYear,
|
|
8908
9386
|
hoveredDate,
|
|
8909
9387
|
setHoveredDate,
|
|
8910
9388
|
value,
|
|
@@ -8914,8 +9392,8 @@ const Calendar = forwardRef(
|
|
|
8914
9392
|
onSelection,
|
|
8915
9393
|
controlled: !!iValue,
|
|
8916
9394
|
range,
|
|
8917
|
-
minDate:
|
|
8918
|
-
maxDate:
|
|
9395
|
+
minDate: normalizedMinDate,
|
|
9396
|
+
maxDate: normalizedMaxDate,
|
|
8919
9397
|
unavailableDates: new Set(unavailableDates),
|
|
8920
9398
|
unavailable: {
|
|
8921
9399
|
dates: new Set(unavailable.dates),
|
|
@@ -8927,11 +9405,13 @@ const Calendar = forwardRef(
|
|
|
8927
9405
|
};
|
|
8928
9406
|
}, [
|
|
8929
9407
|
focusedDate,
|
|
9408
|
+
selectedMonth,
|
|
9409
|
+
selectedYear,
|
|
8930
9410
|
hoveredDate,
|
|
8931
9411
|
id,
|
|
8932
9412
|
locale,
|
|
8933
|
-
|
|
8934
|
-
|
|
9413
|
+
normalizedMaxDate,
|
|
9414
|
+
normalizedMinDate,
|
|
8935
9415
|
iValue,
|
|
8936
9416
|
onSelection,
|
|
8937
9417
|
range,
|
|
@@ -8942,74 +9422,138 @@ const Calendar = forwardRef(
|
|
|
8942
9422
|
value,
|
|
8943
9423
|
startDay
|
|
8944
9424
|
]);
|
|
8945
|
-
const
|
|
8946
|
-
|
|
8947
|
-
|
|
8948
|
-
year: "numeric"
|
|
8949
|
-
});
|
|
8950
|
-
};
|
|
8951
|
-
if ("range" in remainingProps && remainingProps.range === true) {
|
|
8952
|
-
return /* @__PURE__ */ jsx(
|
|
8953
|
-
CalendarContext.Provider,
|
|
8954
|
-
{
|
|
8955
|
-
value: providerValue,
|
|
8956
|
-
children: /* @__PURE__ */ jsxs(
|
|
8957
|
-
"div",
|
|
8958
|
-
{
|
|
8959
|
-
ref,
|
|
8960
|
-
id: id ?? uid,
|
|
8961
|
-
className: styles["calendar"],
|
|
8962
|
-
style: styleCombined,
|
|
8963
|
-
"data-anv": "calendar",
|
|
8964
|
-
...remainingProps,
|
|
8965
|
-
children: [
|
|
8966
|
-
/* @__PURE__ */ jsxs("div", { className: styles["header"], children: [
|
|
8967
|
-
/* @__PURE__ */ jsx("span", { className: styles["heading"], children: heading() }),
|
|
8968
|
-
/* @__PURE__ */ jsxs("span", { className: styles["controller"], children: [
|
|
8969
|
-
/* @__PURE__ */ jsx(CalendarNow, {}),
|
|
8970
|
-
/* @__PURE__ */ jsx(CalendarPrev, {}),
|
|
8971
|
-
/* @__PURE__ */ jsx(CalendarNext, {})
|
|
8972
|
-
] })
|
|
8973
|
-
] }),
|
|
8974
|
-
/* @__PURE__ */ jsx(CalendarMonth, {})
|
|
8975
|
-
]
|
|
8976
|
-
}
|
|
8977
|
-
)
|
|
8978
|
-
}
|
|
9425
|
+
const updateHeaderButtons = useCallback(() => {
|
|
9426
|
+
buttonsRef.current = calendarRef.current?.querySelectorAll(
|
|
9427
|
+
"[data-calendar-header-button]"
|
|
8979
9428
|
);
|
|
8980
|
-
}
|
|
9429
|
+
}, []);
|
|
9430
|
+
useEffect(() => {
|
|
9431
|
+
updateHeaderButtons();
|
|
9432
|
+
}, [updateHeaderButtons]);
|
|
9433
|
+
const handleHeaderKeyDown = useCallback((e) => {
|
|
9434
|
+
const target = e.target;
|
|
9435
|
+
if (!buttonsRef.current || buttonsRef.current.length === 0) {
|
|
9436
|
+
return;
|
|
9437
|
+
}
|
|
9438
|
+
const buttonArray = Array.from(buttonsRef.current);
|
|
9439
|
+
const currentIndex = buttonArray.indexOf(target);
|
|
9440
|
+
if (currentIndex === -1) return;
|
|
9441
|
+
let newIndex;
|
|
9442
|
+
switch (e.key) {
|
|
9443
|
+
case "ArrowLeft":
|
|
9444
|
+
e.preventDefault();
|
|
9445
|
+
newIndex = currentIndex > 0 ? currentIndex - 1 : buttonArray.length - 1;
|
|
9446
|
+
buttonArray[newIndex].focus();
|
|
9447
|
+
break;
|
|
9448
|
+
case "ArrowRight":
|
|
9449
|
+
e.preventDefault();
|
|
9450
|
+
newIndex = currentIndex < buttonArray.length - 1 ? currentIndex + 1 : 0;
|
|
9451
|
+
buttonArray[newIndex].focus();
|
|
9452
|
+
break;
|
|
9453
|
+
}
|
|
9454
|
+
}, []);
|
|
9455
|
+
const handleMonthSelection = useCallback(
|
|
9456
|
+
(month) => {
|
|
9457
|
+
setSelectedMonth(month);
|
|
9458
|
+
setFocusedDate(
|
|
9459
|
+
DateTime.fromObject({
|
|
9460
|
+
year: focusedDate?.year ?? 1,
|
|
9461
|
+
month,
|
|
9462
|
+
day: 1
|
|
9463
|
+
})
|
|
9464
|
+
);
|
|
9465
|
+
setCalendarSelectionState("day");
|
|
9466
|
+
},
|
|
9467
|
+
[focusedDate]
|
|
9468
|
+
);
|
|
9469
|
+
const handleYearSelection = useCallback(
|
|
9470
|
+
(year) => {
|
|
9471
|
+
setSelectedYear(year);
|
|
9472
|
+
setFocusedDate(
|
|
9473
|
+
DateTime.fromObject({
|
|
9474
|
+
year,
|
|
9475
|
+
month: focusedDate?.month ?? 1,
|
|
9476
|
+
day: 1
|
|
9477
|
+
})
|
|
9478
|
+
);
|
|
9479
|
+
setCalendarSelectionState("day");
|
|
9480
|
+
},
|
|
9481
|
+
[focusedDate]
|
|
9482
|
+
);
|
|
8981
9483
|
return /* @__PURE__ */ jsx(CalendarContext.Provider, { value: providerValue, children: /* @__PURE__ */ jsxs(
|
|
8982
9484
|
"div",
|
|
8983
9485
|
{
|
|
8984
|
-
ref,
|
|
9486
|
+
ref: combinedRef,
|
|
8985
9487
|
id: id ?? uid,
|
|
8986
9488
|
style: styleCombined,
|
|
8987
9489
|
className: styles["calendar"],
|
|
8988
9490
|
"data-anv": "calendar",
|
|
8989
9491
|
...remainingProps,
|
|
8990
9492
|
children: [
|
|
8991
|
-
/* @__PURE__ */
|
|
8992
|
-
|
|
8993
|
-
|
|
8994
|
-
|
|
8995
|
-
|
|
8996
|
-
|
|
8997
|
-
|
|
8998
|
-
|
|
8999
|
-
|
|
9493
|
+
/* @__PURE__ */ jsx("div", { className: styles["header"], children: /* @__PURE__ */ jsxs(
|
|
9494
|
+
"span",
|
|
9495
|
+
{
|
|
9496
|
+
"aria-label": "Calendar navigation",
|
|
9497
|
+
role: "toolbar",
|
|
9498
|
+
onKeyDown: handleHeaderKeyDown,
|
|
9499
|
+
className: styles["controller"],
|
|
9500
|
+
children: [
|
|
9501
|
+
/* @__PURE__ */ jsx(
|
|
9502
|
+
CalendarMonthButton,
|
|
9503
|
+
{
|
|
9504
|
+
"data-calendar-header-button": true,
|
|
9505
|
+
calendarSelectionState,
|
|
9506
|
+
onClick: () => setCalendarSelectionState(
|
|
9507
|
+
(prev) => prev === "month" ? "day" : "month"
|
|
9508
|
+
)
|
|
9509
|
+
}
|
|
9510
|
+
),
|
|
9511
|
+
/* @__PURE__ */ jsx(
|
|
9512
|
+
CalendarYearButton,
|
|
9513
|
+
{
|
|
9514
|
+
tabIndex: -1,
|
|
9515
|
+
"data-calendar-header-button": true,
|
|
9516
|
+
calendarSelectionState,
|
|
9517
|
+
onClick: () => setCalendarSelectionState(
|
|
9518
|
+
(prev) => prev === "year" ? "day" : "year"
|
|
9519
|
+
)
|
|
9520
|
+
}
|
|
9521
|
+
),
|
|
9522
|
+
calendarSelectionState === "day" && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9523
|
+
/* @__PURE__ */ jsx(
|
|
9524
|
+
CalendarPrevButton,
|
|
9525
|
+
{
|
|
9526
|
+
tabIndex: -1,
|
|
9527
|
+
"data-calendar-header-button": true
|
|
9528
|
+
}
|
|
9529
|
+
),
|
|
9530
|
+
/* @__PURE__ */ jsx(
|
|
9531
|
+
CalendarNextButton,
|
|
9532
|
+
{
|
|
9533
|
+
tabIndex: -1,
|
|
9534
|
+
"data-calendar-header-button": true
|
|
9535
|
+
}
|
|
9536
|
+
),
|
|
9537
|
+
/* @__PURE__ */ jsx(
|
|
9538
|
+
CalendarNowButton,
|
|
9539
|
+
{
|
|
9540
|
+
tabIndex: -1,
|
|
9541
|
+
"data-calendar-header-button": true
|
|
9542
|
+
}
|
|
9543
|
+
)
|
|
9544
|
+
] })
|
|
9545
|
+
]
|
|
9546
|
+
}
|
|
9547
|
+
) }),
|
|
9548
|
+
calendarSelectionState === "day" && /* @__PURE__ */ jsx(CalendarMonth, {}),
|
|
9549
|
+
calendarSelectionState === "month" && /* @__PURE__ */ jsx(CalendarMonthSelection, { onMonthSelection: handleMonthSelection }),
|
|
9550
|
+
calendarSelectionState === "year" && /* @__PURE__ */ jsx(CalendarYearSelection, { onYearSelection: handleYearSelection })
|
|
9000
9551
|
]
|
|
9001
9552
|
}
|
|
9002
9553
|
) });
|
|
9003
9554
|
}
|
|
9004
9555
|
);
|
|
9005
|
-
function useCalendar() {
|
|
9006
|
-
const context = useContext(CalendarContext);
|
|
9007
|
-
if (!context) {
|
|
9008
|
-
throw new Error("useCalendar must be used within a <Calendar>");
|
|
9009
|
-
}
|
|
9010
|
-
return context;
|
|
9011
|
-
}
|
|
9012
9556
|
Calendar.displayName = "Calendar";
|
|
9013
9557
|
|
|
9014
|
-
export {
|
|
9015
|
-
//# sourceMappingURL=Calendar-
|
|
9558
|
+
export { CalendarNowButton as C, DateTime as D, CalendarMonth as a, CalendarNextButton as b, CalendarPrevButton as c, CalendarMonthButton as d, CalendarYearButton as e, Calendar as f, isValidDate as i, toDateString as t };
|
|
9559
|
+
//# sourceMappingURL=Calendar-C3dudrjk-nI60sdlM.js.map
|