@strapi/design-system 1.9.0 → 1.10.0-alpha.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/dist/Accordion/Accordion.js +70 -25
- package/dist/Accordion/Accordion.mjs +55 -0
- package/dist/Accordion/AccordionContent.js +19 -12
- package/dist/Accordion/AccordionContent.mjs +16 -0
- package/dist/Accordion/AccordionContext.js +17 -12
- package/dist/Accordion/AccordionContext.mjs +12 -0
- package/dist/Accordion/AccordionGroup.js +64 -32
- package/dist/Accordion/AccordionGroup.mjs +65 -0
- package/dist/Accordion/AccordionToggle.js +64 -31
- package/dist/Accordion/AccordionToggle.mjs +78 -0
- package/dist/Accordion/index.js +16 -11
- package/dist/Accordion/index.mjs +4 -0
- package/dist/Accordion/utils.js +18 -6
- package/dist/Accordion/utils.mjs +15 -0
- package/dist/Alert/Alert.js +41 -19
- package/dist/Alert/Alert.mjs +54 -0
- package/dist/Alert/index.js +9 -4
- package/dist/Alert/index.mjs +1 -0
- package/dist/Alert/utils.js +35 -16
- package/dist/Alert/utils.mjs +30 -0
- package/dist/Avatar/Avatar.js +57 -27
- package/dist/Avatar/Avatar.mjs +41 -0
- package/dist/Avatar/AvatarGroup.js +16 -8
- package/dist/Avatar/AvatarGroup.mjs +11 -0
- package/dist/Avatar/constants.js +9 -5
- package/dist/Avatar/constants.mjs +4 -0
- package/dist/Avatar/index.js +12 -7
- package/dist/Avatar/index.mjs +2 -0
- package/dist/Badge/Badge.js +22 -13
- package/dist/Badge/Badge.mjs +15 -0
- package/dist/Badge/index.js +9 -4
- package/dist/Badge/index.mjs +1 -0
- package/dist/BaseButton/BaseButton.js +46 -16
- package/dist/BaseButton/BaseButton.mjs +29 -0
- package/dist/BaseButton/index.js +10 -5
- package/dist/BaseButton/index.mjs +1 -0
- package/dist/BaseCheckbox/BaseCheckbox.js +75 -37
- package/dist/BaseCheckbox/BaseCheckbox.mjs +92 -0
- package/dist/BaseCheckbox/assets/checkmark-black.svg.js +5 -4
- package/dist/BaseCheckbox/assets/checkmark-black.svg.mjs +3 -0
- package/dist/BaseCheckbox/assets/checkmark.svg.js +5 -4
- package/dist/BaseCheckbox/assets/checkmark.svg.mjs +3 -0
- package/dist/BaseCheckbox/index.js +9 -4
- package/dist/BaseCheckbox/index.mjs +1 -0
- package/dist/BaseCheckbox/utils.js +15 -3
- package/dist/BaseCheckbox/utils.mjs +12 -0
- package/dist/BaseLink/BaseLink.js +18 -8
- package/dist/BaseLink/BaseLink.mjs +10 -0
- package/dist/BaseLink/index.js +9 -4
- package/dist/BaseLink/index.mjs +1 -0
- package/dist/BaseRadio/BaseRadio.js +39 -39
- package/dist/BaseRadio/BaseRadio.mjs +49 -0
- package/dist/BaseRadio/RadioGroup.js +20 -14
- package/dist/BaseRadio/RadioGroup.mjs +17 -0
- package/dist/BaseRadio/context.js +13 -9
- package/dist/BaseRadio/context.mjs +10 -0
- package/dist/BaseRadio/index.js +11 -6
- package/dist/BaseRadio/index.mjs +2 -0
- package/dist/BaseRadio/utils.js +33 -5
- package/dist/BaseRadio/utils.mjs +28 -0
- package/dist/Box/Box.js +79 -63
- package/dist/Box/Box.mjs +103 -0
- package/dist/Box/index.js +9 -4
- package/dist/Box/index.mjs +1 -0
- package/dist/Breadcrumbs/Breadcrumbs.js +31 -20
- package/dist/Breadcrumbs/Breadcrumbs.mjs +32 -0
- package/dist/Breadcrumbs/index.js +10 -5
- package/dist/Breadcrumbs/index.mjs +1 -0
- package/dist/Button/Button.js +45 -30
- package/dist/Button/Button.mjs +61 -0
- package/dist/Button/constants.js +27 -14
- package/dist/Button/constants.mjs +13 -0
- package/dist/Button/index.js +10 -5
- package/dist/Button/index.mjs +1 -0
- package/dist/Button/utils.js +121 -72
- package/dist/Button/utils.mjs +153 -0
- package/dist/Card/Card.js +16 -11
- package/dist/Card/Card.mjs +13 -0
- package/dist/Card/CardAction.js +30 -16
- package/dist/Card/CardAction.mjs +26 -0
- package/dist/Card/CardAsset.js +28 -15
- package/dist/Card/CardAsset.mjs +33 -0
- package/dist/Card/CardBadge.js +20 -10
- package/dist/Card/CardBadge.mjs +14 -0
- package/dist/Card/CardBody.js +12 -6
- package/dist/Card/CardBody.mjs +9 -0
- package/dist/Card/CardCheckbox.js +15 -12
- package/dist/Card/CardCheckbox.mjs +13 -0
- package/dist/Card/CardContent.js +18 -7
- package/dist/Card/CardContent.mjs +12 -0
- package/dist/Card/CardContext.js +11 -6
- package/dist/Card/CardContext.mjs +6 -0
- package/dist/Card/CardHeader.js +19 -8
- package/dist/Card/CardHeader.mjs +12 -0
- package/dist/Card/CardTimer.js +11 -7
- package/dist/Card/CardTimer.mjs +7 -0
- package/dist/Card/CardTitle.js +17 -10
- package/dist/Card/CardTitle.mjs +13 -0
- package/dist/Card/index.js +28 -23
- package/dist/Card/index.mjs +10 -0
- package/dist/CarouselInput/Carousel.js +73 -32
- package/dist/CarouselInput/Carousel.mjs +54 -0
- package/dist/CarouselInput/CarouselActions.js +10 -6
- package/dist/CarouselInput/CarouselActions.mjs +6 -0
- package/dist/CarouselInput/CarouselImage.js +29 -16
- package/dist/CarouselInput/CarouselImage.mjs +22 -0
- package/dist/CarouselInput/CarouselInput.js +19 -15
- package/dist/CarouselInput/CarouselInput.mjs +16 -0
- package/dist/CarouselInput/CarouselSlide.js +10 -6
- package/dist/CarouselInput/CarouselSlide.mjs +6 -0
- package/dist/CarouselInput/index.js +17 -12
- package/dist/CarouselInput/index.mjs +5 -0
- package/dist/Checkbox/Checkbox.js +59 -24
- package/dist/Checkbox/Checkbox.mjs +37 -0
- package/dist/Checkbox/index.js +9 -4
- package/dist/Checkbox/index.mjs +1 -0
- package/dist/Combobox/Combobox.js +175 -102
- package/dist/Combobox/Combobox.mjs +218 -0
- package/dist/Combobox/ComboboxList.js +12 -4
- package/dist/Combobox/ComboboxList.mjs +14 -0
- package/dist/Combobox/ComboboxOption.js +9 -5
- package/dist/Combobox/ComboboxOption.mjs +5 -0
- package/dist/Combobox/index.js +12 -7
- package/dist/Combobox/index.mjs +2 -0
- package/dist/DatePicker/DatePicker.js +682 -364
- package/dist/DatePicker/DatePicker.mjs +721 -0
- package/dist/DatePicker/index.js +9 -4
- package/dist/DatePicker/index.mjs +1 -0
- package/dist/DateTimePicker/DateTimePicker.js +140 -97
- package/dist/DateTimePicker/DateTimePicker.mjs +137 -0
- package/dist/DateTimePicker/index.js +10 -5
- package/dist/DateTimePicker/index.mjs +1 -0
- package/dist/DesignSystemProvider.js +26 -9
- package/dist/DesignSystemProvider.mjs +22 -0
- package/dist/Dialog/Dialog.js +38 -25
- package/dist/Dialog/Dialog.mjs +36 -0
- package/dist/Dialog/DialogBody.js +22 -11
- package/dist/Dialog/DialogBody.mjs +20 -0
- package/dist/Dialog/DialogFooter.js +20 -9
- package/dist/Dialog/DialogFooter.mjs +19 -0
- package/dist/Dialog/index.js +13 -8
- package/dist/Dialog/index.mjs +3 -0
- package/dist/DismissibleLayer/index.js +29 -5
- package/dist/DismissibleLayer/index.mjs +5 -0
- package/dist/Divider/Divider.js +19 -8
- package/dist/Divider/Divider.mjs +16 -0
- package/dist/Divider/index.js +9 -4
- package/dist/Divider/index.mjs +1 -0
- package/dist/EmptyStateLayout/EmptyStateLayout.js +20 -9
- package/dist/EmptyStateLayout/EmptyStateLayout.mjs +16 -0
- package/dist/EmptyStateLayout/index.js +9 -4
- package/dist/EmptyStateLayout/index.mjs +1 -0
- package/dist/EmptyStateLayout/story-assets/Illo.js +9 -5
- package/dist/EmptyStateLayout/story-assets/Illo.mjs +5 -0
- package/dist/Field/Field.js +16 -11
- package/dist/Field/Field.mjs +13 -0
- package/dist/Field/FieldAction.js +22 -14
- package/dist/Field/FieldAction.mjs +16 -0
- package/dist/Field/FieldContext.js +11 -6
- package/dist/Field/FieldContext.mjs +6 -0
- package/dist/Field/FieldError.js +16 -9
- package/dist/Field/FieldError.mjs +13 -0
- package/dist/Field/FieldHint.js +16 -9
- package/dist/Field/FieldHint.mjs +13 -0
- package/dist/Field/FieldInput.js +65 -43
- package/dist/Field/FieldInput.mjs +76 -0
- package/dist/Field/FieldLabel.js +40 -17
- package/dist/Field/FieldLabel.mjs +40 -0
- package/dist/Field/index.js +23 -18
- package/dist/Field/index.mjs +7 -0
- package/dist/Flex/Flex.js +30 -18
- package/dist/Flex/Flex.mjs +23 -0
- package/dist/Flex/index.js +9 -4
- package/dist/Flex/index.mjs +1 -0
- package/dist/FocusTrap/FocusTrap.js +67 -31
- package/dist/FocusTrap/FocusTrap.mjs +65 -0
- package/dist/FocusTrap/index.js +9 -4
- package/dist/FocusTrap/index.mjs +1 -0
- package/dist/Grid/Grid.js +22 -13
- package/dist/Grid/Grid.mjs +16 -0
- package/dist/Grid/GridItem.js +19 -11
- package/dist/Grid/GridItem.mjs +17 -0
- package/dist/Grid/index.js +11 -6
- package/dist/Grid/index.mjs +2 -0
- package/dist/Icon/Icon.js +25 -13
- package/dist/Icon/Icon.mjs +18 -0
- package/dist/Icon/index.js +9 -4
- package/dist/Icon/index.mjs +1 -0
- package/dist/IconButton/IconButton.js +101 -46
- package/dist/IconButton/IconButton.mjs +128 -0
- package/dist/IconButton/index.js +10 -5
- package/dist/IconButton/index.mjs +1 -0
- package/dist/JSONInput/JSONInput.js +122 -75
- package/dist/JSONInput/JSONInput.mjs +142 -0
- package/dist/JSONInput/index.js +9 -4
- package/dist/JSONInput/index.mjs +1 -0
- package/dist/JSONInput/utils/decorationExtension.js +42 -26
- package/dist/JSONInput/utils/decorationExtension.mjs +36 -0
- package/dist/KeyboardNavigable/KeyboardNavigable.js +71 -42
- package/dist/KeyboardNavigable/KeyboardNavigable.mjs +71 -0
- package/dist/KeyboardNavigable/index.js +9 -4
- package/dist/KeyboardNavigable/index.mjs +1 -0
- package/dist/Layout/ActionLayout.js +14 -5
- package/dist/Layout/ActionLayout.mjs +11 -0
- package/dist/Layout/ContentLayout.js +11 -5
- package/dist/Layout/ContentLayout.mjs +8 -0
- package/dist/Layout/GridLayout.js +14 -6
- package/dist/Layout/GridLayout.mjs +9 -0
- package/dist/Layout/HeaderLayout.js +51 -30
- package/dist/Layout/HeaderLayout.mjs +43 -0
- package/dist/Layout/Layout.js +21 -9
- package/dist/Layout/Layout.mjs +16 -0
- package/dist/Layout/TwoColsLayout.js +13 -7
- package/dist/Layout/TwoColsLayout.mjs +10 -0
- package/dist/Layout/index.js +20 -15
- package/dist/Layout/index.mjs +6 -0
- package/dist/Link/Link.js +53 -20
- package/dist/Link/Link.mjs +50 -0
- package/dist/Link/index.js +9 -4
- package/dist/Link/index.mjs +1 -0
- package/dist/LinkButton/LinkButton.js +51 -20
- package/dist/LinkButton/LinkButton.mjs +33 -0
- package/dist/LinkButton/index.js +9 -4
- package/dist/LinkButton/index.mjs +1 -0
- package/dist/LiveRegions/LiveRegions.js +12 -6
- package/dist/LiveRegions/LiveRegions.mjs +9 -0
- package/dist/LiveRegions/constants.js +10 -7
- package/dist/LiveRegions/constants.mjs +7 -0
- package/dist/LiveRegions/index.js +11 -6
- package/dist/LiveRegions/index.mjs +2 -0
- package/dist/LiveRegions/useNotifyAT.js +36 -16
- package/dist/LiveRegions/useNotifyAT.mjs +33 -0
- package/dist/Loader/Loader.js +44 -13
- package/dist/Loader/Loader.mjs +24 -0
- package/dist/Loader/assets/loader.svg.js +5 -4
- package/dist/Loader/assets/loader.svg.mjs +3 -0
- package/dist/Loader/index.js +9 -4
- package/dist/Loader/index.mjs +1 -0
- package/dist/Main/Main.js +18 -7
- package/dist/Main/Main.mjs +15 -0
- package/dist/Main/SkipToContent.js +20 -9
- package/dist/Main/SkipToContent.mjs +17 -0
- package/dist/Main/index.js +11 -6
- package/dist/Main/index.mjs +2 -0
- package/dist/MainNav/MainNav.js +21 -10
- package/dist/MainNav/MainNav.mjs +14 -0
- package/dist/MainNav/MainNavContext.js +11 -6
- package/dist/MainNav/MainNavContext.mjs +6 -0
- package/dist/MainNav/NavBrand.js +32 -16
- package/dist/MainNav/NavBrand.mjs +31 -0
- package/dist/MainNav/NavCondense.js +27 -18
- package/dist/MainNav/NavCondense.mjs +33 -0
- package/dist/MainNav/NavFooter.js +11 -5
- package/dist/MainNav/NavFooter.mjs +8 -0
- package/dist/MainNav/NavLink.js +59 -40
- package/dist/MainNav/NavLink.mjs +92 -0
- package/dist/MainNav/NavSection.js +31 -11
- package/dist/MainNav/NavSection.mjs +24 -0
- package/dist/MainNav/NavSections.js +24 -9
- package/dist/MainNav/NavSections.mjs +18 -0
- package/dist/MainNav/NavUser.js +27 -17
- package/dist/MainNav/NavUser.mjs +19 -0
- package/dist/MainNav/index.js +23 -18
- package/dist/MainNav/index.mjs +8 -0
- package/dist/ModalLayout/ModalBody.js +18 -7
- package/dist/ModalLayout/ModalBody.mjs +13 -0
- package/dist/ModalLayout/ModalContext.js +11 -7
- package/dist/ModalLayout/ModalContext.mjs +6 -0
- package/dist/ModalLayout/ModalFooter.js +21 -10
- package/dist/ModalLayout/ModalFooter.mjs +14 -0
- package/dist/ModalLayout/ModalHeader.js +25 -16
- package/dist/ModalLayout/ModalHeader.mjs +18 -0
- package/dist/ModalLayout/ModalLayout.js +26 -14
- package/dist/ModalLayout/ModalLayout.mjs +20 -0
- package/dist/ModalLayout/index.js +15 -10
- package/dist/ModalLayout/index.mjs +4 -0
- package/dist/NumberInput/NumberInput.js +121 -70
- package/dist/NumberInput/NumberInput.mjs +121 -0
- package/dist/NumberInput/index.js +9 -4
- package/dist/NumberInput/index.mjs +1 -0
- package/dist/Pagination/Pagination.js +38 -11
- package/dist/Pagination/Pagination.mjs +15 -0
- package/dist/Pagination/PaginationContext.js +11 -6
- package/dist/Pagination/PaginationContext.mjs +6 -0
- package/dist/Pagination/assets/next.svg.js +5 -4
- package/dist/Pagination/assets/next.svg.mjs +3 -0
- package/dist/Pagination/assets/previous.svg.js +5 -4
- package/dist/Pagination/assets/previous.svg.mjs +3 -0
- package/dist/Pagination/components.js +63 -46
- package/dist/Pagination/components.mjs +73 -0
- package/dist/Pagination/index.js +14 -9
- package/dist/Pagination/index.mjs +2 -0
- package/dist/Popover/Popover.js +149 -111
- package/dist/Popover/Popover.mjs +136 -0
- package/dist/Popover/index.js +12 -7
- package/dist/Popover/index.mjs +3 -0
- package/dist/Popover/primitives.js +10 -5
- package/dist/Popover/primitives.mjs +1 -0
- package/dist/Portal/Portal.js +35 -9
- package/dist/Portal/Portal.mjs +11 -0
- package/dist/Portal/index.js +9 -4
- package/dist/Portal/index.mjs +1 -0
- package/dist/ProgressBar/ProgressBar.js +21 -10
- package/dist/ProgressBar/ProgressBar.mjs +20 -0
- package/dist/ProgressBar/index.js +9 -4
- package/dist/ProgressBar/index.mjs +1 -0
- package/dist/Radio/Radio.js +13 -7
- package/dist/Radio/Radio.mjs +10 -0
- package/dist/Radio/index.js +11 -6
- package/dist/Radio/index.mjs +2 -0
- package/dist/RawTable/RawCell.js +147 -58
- package/dist/RawTable/RawCell.mjs +144 -0
- package/dist/RawTable/RawTable.js +84 -52
- package/dist/RawTable/RawTable.mjs +81 -0
- package/dist/RawTable/RawTableContext.js +17 -12
- package/dist/RawTable/RawTableContext.mjs +12 -0
- package/dist/RawTable/RawTbody.js +21 -8
- package/dist/RawTable/RawTbody.mjs +18 -0
- package/dist/RawTable/RawThead.js +20 -8
- package/dist/RawTable/RawThead.mjs +17 -0
- package/dist/RawTable/RawTr.js +21 -12
- package/dist/RawTable/RawTr.mjs +18 -0
- package/dist/RawTable/focusFocusable.js +11 -6
- package/dist/RawTable/focusFocusable.mjs +8 -0
- package/dist/RawTable/index.js +18 -13
- package/dist/RawTable/index.mjs +5 -0
- package/dist/Searchbar/SearchForm.js +9 -5
- package/dist/Searchbar/SearchForm.mjs +5 -0
- package/dist/Searchbar/Searchbar.js +45 -30
- package/dist/Searchbar/Searchbar.mjs +54 -0
- package/dist/Searchbar/index.js +11 -6
- package/dist/Searchbar/index.mjs +2 -0
- package/dist/Select/MultiSelect.js +143 -52
- package/dist/Select/MultiSelect.mjs +138 -0
- package/dist/Select/MultiSelectNested.js +24 -8
- package/dist/Select/MultiSelectNested.mjs +17 -0
- package/dist/Select/OptGroup.js +9 -5
- package/dist/Select/OptGroup.mjs +10 -0
- package/dist/Select/Option.js +14 -10
- package/dist/Select/Option.mjs +16 -0
- package/dist/Select/Select.js +37 -12
- package/dist/Select/Select.mjs +19 -0
- package/dist/Select/SelectList.js +141 -76
- package/dist/Select/SelectList.mjs +126 -0
- package/dist/Select/SelectParts.js +119 -60
- package/dist/Select/SelectParts.mjs +133 -0
- package/dist/Select/SingleSelect.js +109 -43
- package/dist/Select/SingleSelect.mjs +85 -0
- package/dist/Select/index.js +24 -19
- package/dist/Select/index.mjs +7 -0
- package/dist/SimpleMenu/SimpleMenu.js +159 -80
- package/dist/SimpleMenu/SimpleMenu.mjs +178 -0
- package/dist/SimpleMenu/index.js +10 -5
- package/dist/SimpleMenu/index.mjs +1 -0
- package/dist/SimpleMenu/utils.js +11 -8
- package/dist/SimpleMenu/utils.mjs +14 -0
- package/dist/Stack/Stack.js +43 -21
- package/dist/Stack/Stack.mjs +49 -0
- package/dist/Stack/index.js +9 -4
- package/dist/Stack/index.mjs +1 -0
- package/dist/Status/Status.js +32 -17
- package/dist/Status/Status.mjs +29 -0
- package/dist/Status/index.js +9 -4
- package/dist/Status/index.mjs +1 -0
- package/dist/SubNav/SubNav.js +23 -11
- package/dist/SubNav/SubNav.mjs +20 -0
- package/dist/SubNav/SubNavHeader.js +65 -37
- package/dist/SubNav/SubNavHeader.mjs +59 -0
- package/dist/SubNav/SubNavLink.js +38 -23
- package/dist/SubNav/SubNavLink.mjs +56 -0
- package/dist/SubNav/SubNavLinkSection.js +38 -21
- package/dist/SubNav/SubNavLinkSection.mjs +43 -0
- package/dist/SubNav/SubNavSection.js +33 -18
- package/dist/SubNav/SubNavSection.mjs +30 -0
- package/dist/SubNav/SubNavSectionLabel.js +29 -13
- package/dist/SubNav/SubNavSectionLabel.mjs +27 -0
- package/dist/SubNav/SubNavSections.js +20 -7
- package/dist/SubNav/SubNavSections.mjs +13 -0
- package/dist/SubNav/index.js +20 -15
- package/dist/SubNav/index.mjs +6 -0
- package/dist/Switch/Switch.js +32 -19
- package/dist/Switch/Switch.mjs +54 -0
- package/dist/Switch/index.js +9 -4
- package/dist/Switch/index.mjs +1 -0
- package/dist/Table/Cell.js +26 -11
- package/dist/Table/Cell.mjs +31 -0
- package/dist/Table/TFooter.js +26 -13
- package/dist/Table/TFooter.mjs +36 -0
- package/dist/Table/Table.js +54 -35
- package/dist/Table/Table.mjs +69 -0
- package/dist/Table/Tbody.js +18 -7
- package/dist/Table/Tbody.mjs +14 -0
- package/dist/Table/Thead.js +19 -8
- package/dist/Table/Thead.mjs +12 -0
- package/dist/Table/Tr.js +21 -10
- package/dist/Table/Tr.mjs +29 -0
- package/dist/Table/index.js +20 -15
- package/dist/Table/index.mjs +6 -0
- package/dist/Tabs/TabGroup.js +40 -15
- package/dist/Tabs/TabGroup.mjs +17 -0
- package/dist/Tabs/TabPanels.js +21 -12
- package/dist/Tabs/TabPanels.mjs +18 -0
- package/dist/Tabs/Tabs.js +145 -68
- package/dist/Tabs/Tabs.mjs +144 -0
- package/dist/Tabs/TabsContext.js +18 -13
- package/dist/Tabs/TabsContext.mjs +13 -0
- package/dist/Tabs/components.js +46 -25
- package/dist/Tabs/components.mjs +62 -0
- package/dist/Tabs/index.js +15 -10
- package/dist/Tabs/index.mjs +3 -0
- package/dist/Tag/Tag.js +29 -14
- package/dist/Tag/Tag.mjs +30 -0
- package/dist/Tag/index.js +9 -4
- package/dist/Tag/index.mjs +1 -0
- package/dist/TextButton/TextButton.js +52 -21
- package/dist/TextButton/TextButton.mjs +44 -0
- package/dist/TextButton/index.js +9 -4
- package/dist/TextButton/index.mjs +1 -0
- package/dist/TextInput/TextInput.js +32 -21
- package/dist/TextInput/TextInput.mjs +29 -0
- package/dist/TextInput/index.js +9 -4
- package/dist/TextInput/index.mjs +1 -0
- package/dist/Textarea/Textarea.js +44 -28
- package/dist/Textarea/Textarea.mjs +46 -0
- package/dist/Textarea/index.js +9 -4
- package/dist/Textarea/index.mjs +1 -0
- package/dist/ThemeProvider/ThemeProvider.js +16 -9
- package/dist/ThemeProvider/{ThemeProvider.cjs → ThemeProvider.mjs} +13 -3
- package/dist/ThemeProvider/hooks.js +10 -4
- package/dist/ThemeProvider/hooks.mjs +7 -0
- package/dist/ThemeProvider/index.js +11 -6
- package/dist/ThemeProvider/index.mjs +2 -0
- package/dist/TimePicker/TimePicker.js +133 -78
- package/dist/TimePicker/TimePicker.mjs +111 -0
- package/dist/TimePicker/index.js +10 -5
- package/dist/TimePicker/index.mjs +1 -0
- package/dist/ToggleCheckbox/ToggleCheckbox.js +73 -33
- package/dist/ToggleCheckbox/ToggleCheckbox.mjs +90 -0
- package/dist/ToggleCheckbox/index.js +9 -4
- package/dist/ToggleCheckbox/index.mjs +1 -0
- package/dist/ToggleInput/ToggleInput.js +81 -34
- package/dist/ToggleInput/ToggleInput.mjs +69 -0
- package/dist/ToggleInput/index.js +9 -4
- package/dist/ToggleInput/index.mjs +1 -0
- package/dist/Tooltip/Tooltip.js +55 -23
- package/dist/Tooltip/Tooltip.mjs +31 -0
- package/dist/Tooltip/hooks/useTooltipHandlers.js +38 -21
- package/dist/Tooltip/hooks/useTooltipHandlers.mjs +35 -0
- package/dist/Tooltip/hooks/useTooltipLayout.js +24 -16
- package/dist/Tooltip/hooks/useTooltipLayout.mjs +21 -0
- package/dist/Tooltip/index.js +9 -4
- package/dist/Tooltip/index.mjs +1 -0
- package/dist/Tooltip/utils/positionTooltip.js +72 -25
- package/dist/Tooltip/utils/positionTooltip.mjs +70 -0
- package/dist/Typography/Typography.js +30 -21
- package/dist/Typography/Typography.mjs +26 -0
- package/dist/Typography/constants.js +21 -11
- package/dist/Typography/constants.mjs +10 -0
- package/dist/Typography/index.js +9 -4
- package/dist/Typography/index.mjs +1 -0
- package/dist/Typography/utils.js +64 -50
- package/dist/Typography/utils.mjs +67 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +13 -5
- package/dist/VisuallyHidden/VisuallyHidden.mjs +14 -0
- package/dist/VisuallyHidden/index.js +9 -4
- package/dist/VisuallyHidden/index.mjs +1 -0
- package/dist/helpers/context.js +49 -20
- package/dist/helpers/context.mjs +26 -0
- package/dist/helpers/deprecations.js +20 -12
- package/dist/helpers/deprecations.mjs +16 -0
- package/dist/helpers/getDefaultLocale.js +31 -4
- package/dist/helpers/getDefaultLocale.mjs +32 -0
- package/dist/helpers/getFocusableNodes.js +35 -6
- package/dist/helpers/getFocusableNodes.mjs +31 -0
- package/dist/helpers/handleResponsiveValues.js +34 -24
- package/dist/helpers/handleResponsiveValues.mjs +33 -0
- package/dist/helpers/keyboardKeys.js +22 -19
- package/dist/helpers/keyboardKeys.mjs +19 -0
- package/dist/helpers/objects.js +20 -8
- package/dist/helpers/objects.mjs +17 -0
- package/dist/helpers/setOpacity.js +9 -4
- package/dist/helpers/setOpacity.mjs +5 -0
- package/dist/helpers/setTabIndexOnFirstItem.js +11 -6
- package/dist/helpers/setTabIndexOnFirstItem.mjs +8 -0
- package/dist/helpers/strings.js +7 -4
- package/dist/helpers/strings.mjs +3 -0
- package/dist/helpers/theme.js +13 -6
- package/dist/helpers/theme.mjs +10 -0
- package/dist/helpers/useElementOnScreen.js +13 -6
- package/dist/helpers/useElementOnScreen.mjs +14 -0
- package/dist/helpers/useId.js +13 -6
- package/dist/helpers/useId.mjs +14 -0
- package/dist/helpers/useIntersection.js +13 -6
- package/dist/helpers/useIntersection.mjs +14 -0
- package/dist/helpers/useLockScroll.js +11 -6
- package/dist/helpers/useLockScroll.mjs +14 -0
- package/dist/helpers/usePrevious.js +13 -6
- package/dist/helpers/usePrevious.mjs +14 -0
- package/dist/helpers/useResizeObserver.js +13 -6
- package/dist/helpers/useResizeObserver.mjs +14 -0
- package/dist/hooks/useComposeRefs.js +69 -11
- package/dist/hooks/useComposeRefs.mjs +47 -0
- package/dist/hooks/useControllableState.js +61 -20
- package/dist/hooks/useControllableState.mjs +39 -0
- package/dist/hooks/useDateFormatter.js +76 -18
- package/dist/hooks/useDateFormatter.mjs +54 -0
- package/dist/hooks/useElementOnScreen.js +26 -13
- package/dist/hooks/useElementOnScreen.mjs +24 -0
- package/dist/hooks/useId.js +24 -12
- package/dist/hooks/useId.mjs +17 -0
- package/dist/hooks/useIntersection.js +40 -22
- package/dist/hooks/useIntersection.mjs +37 -0
- package/dist/hooks/useLockScroll.js +15 -8
- package/dist/hooks/useLockScroll.mjs +14 -0
- package/dist/hooks/usePrevious.js +14 -9
- package/dist/hooks/usePrevious.mjs +11 -0
- package/dist/hooks/useResizeObserver.js +27 -15
- package/dist/hooks/useResizeObserver.mjs +24 -0
- package/dist/index.js +316 -311
- package/dist/index.mjs +141 -0
- package/dist/themes/common-theme.js +24 -20
- package/dist/themes/common-theme.mjs +21 -0
- package/dist/themes/darkTheme/dark-colors.js +54 -51
- package/dist/themes/darkTheme/dark-colors.mjs +51 -0
- package/dist/themes/darkTheme/dark-shadows.js +14 -11
- package/dist/themes/darkTheme/dark-shadows.mjs +11 -0
- package/dist/themes/darkTheme/index.js +14 -10
- package/dist/themes/darkTheme/index.mjs +11 -0
- package/dist/themes/extendTheme.js +38 -27
- package/dist/themes/extendTheme.mjs +43 -0
- package/dist/themes/index.js +17 -12
- package/dist/themes/index.mjs +4 -0
- package/dist/themes/lightTheme/index.js +14 -10
- package/dist/themes/lightTheme/index.mjs +11 -0
- package/dist/themes/lightTheme/light-colors.js +54 -51
- package/dist/themes/lightTheme/light-colors.mjs +51 -0
- package/dist/themes/lightTheme/light-shadows.js +14 -11
- package/dist/themes/lightTheme/light-shadows.mjs +11 -0
- package/dist/themes/sizes.js +24 -21
- package/dist/themes/sizes.mjs +21 -0
- package/dist/themes/utils.js +20 -12
- package/dist/themes/{utils.cjs → utils.mjs} +15 -7
- package/dist/v2/Breadcrumbs/Breadcrumbs.js +27 -18
- package/dist/v2/Breadcrumbs/Breadcrumbs.mjs +26 -0
- package/dist/v2/Breadcrumbs/Crumb.js +12 -8
- package/dist/v2/Breadcrumbs/Crumb.mjs +8 -0
- package/dist/v2/Breadcrumbs/CrumbLink.js +25 -16
- package/dist/v2/Breadcrumbs/CrumbLink.mjs +22 -0
- package/dist/v2/Breadcrumbs/CrumbSimpleMenu.js +21 -12
- package/dist/v2/Breadcrumbs/CrumbSimpleMenu.mjs +18 -0
- package/dist/v2/Breadcrumbs/Divider.js +13 -7
- package/dist/v2/Breadcrumbs/Divider.mjs +10 -0
- package/dist/v2/Breadcrumbs/index.js +15 -10
- package/dist/v2/Breadcrumbs/index.mjs +4 -0
- package/dist/v2/Link/Link.js +31 -19
- package/dist/v2/Link/Link.mjs +39 -0
- package/dist/v2/Link/index.js +9 -4
- package/dist/v2/Link/index.mjs +1 -0
- package/dist/v2/LinkButton/LinkButton.js +32 -21
- package/dist/v2/LinkButton/LinkButton.mjs +37 -0
- package/dist/v2/LinkButton/index.js +9 -4
- package/dist/v2/LinkButton/index.mjs +1 -0
- package/dist/v2/MainNav/MainNav.js +21 -10
- package/dist/v2/MainNav/MainNav.mjs +14 -0
- package/dist/v2/MainNav/MainNavContext.js +11 -6
- package/dist/v2/MainNav/MainNavContext.mjs +6 -0
- package/dist/v2/MainNav/NavBrand.js +39 -20
- package/dist/v2/MainNav/NavBrand.mjs +37 -0
- package/dist/v2/MainNav/NavCondense.js +31 -22
- package/dist/v2/MainNav/NavCondense.mjs +34 -0
- package/dist/v2/MainNav/NavFooter.js +11 -5
- package/dist/v2/MainNav/NavFooter.mjs +8 -0
- package/dist/v2/MainNav/NavLink.js +62 -42
- package/dist/v2/MainNav/NavLink.mjs +93 -0
- package/dist/v2/MainNav/NavSection.js +27 -11
- package/dist/v2/MainNav/NavSection.mjs +24 -0
- package/dist/v2/MainNav/NavSections.js +23 -9
- package/dist/v2/MainNav/NavSections.mjs +18 -0
- package/dist/v2/MainNav/NavUser.js +27 -17
- package/dist/v2/MainNav/NavUser.mjs +19 -0
- package/dist/v2/MainNav/index.js +23 -18
- package/dist/v2/MainNav/index.mjs +8 -0
- package/dist/v2/Pagination/Pagination.js +38 -11
- package/dist/v2/Pagination/Pagination.mjs +15 -0
- package/dist/v2/Pagination/PaginationContext.js +11 -6
- package/dist/v2/Pagination/PaginationContext.mjs +6 -0
- package/dist/v2/Pagination/assets/next.svg.js +5 -4
- package/dist/v2/Pagination/assets/next.svg.mjs +3 -0
- package/dist/v2/Pagination/assets/previous.svg.js +5 -4
- package/dist/v2/Pagination/assets/previous.svg.mjs +3 -0
- package/dist/v2/Pagination/components.js +65 -44
- package/dist/v2/Pagination/components.mjs +71 -0
- package/dist/v2/Pagination/index.js +14 -9
- package/dist/v2/Pagination/index.mjs +2 -0
- package/dist/v2/SimpleMenu/Menu.js +101 -44
- package/dist/v2/SimpleMenu/Menu.mjs +112 -0
- package/dist/v2/SimpleMenu/SimpleMenu.js +45 -24
- package/dist/v2/SimpleMenu/SimpleMenu.mjs +44 -0
- package/dist/v2/SimpleMenu/index.js +12 -7
- package/dist/v2/SimpleMenu/index.mjs +3 -0
- package/dist/v2/SubNav/SubNav.js +23 -11
- package/dist/v2/SubNav/SubNav.mjs +20 -0
- package/dist/v2/SubNav/SubNavHeader.js +63 -37
- package/dist/v2/SubNav/SubNavHeader.mjs +57 -0
- package/dist/v2/SubNav/SubNavLink.js +41 -25
- package/dist/v2/SubNav/SubNavLink.mjs +57 -0
- package/dist/v2/SubNav/SubNavLinkSection.js +37 -21
- package/dist/v2/SubNav/SubNavLinkSection.mjs +43 -0
- package/dist/v2/SubNav/SubNavSection.js +32 -18
- package/dist/v2/SubNav/SubNavSection.mjs +30 -0
- package/dist/v2/SubNav/SubNavSectionLabel.js +27 -13
- package/dist/v2/SubNav/SubNavSectionLabel.mjs +25 -0
- package/dist/v2/SubNav/SubNavSections.js +16 -7
- package/dist/v2/SubNav/SubNavSections.mjs +13 -0
- package/dist/v2/SubNav/index.js +20 -15
- package/dist/v2/SubNav/index.mjs +6 -0
- package/dist/v2/index.js +60 -55
- package/dist/v2/index.mjs +25 -0
- package/package.json +26 -19
- package/dist/Accordion/Accordion.cjs +0 -23
- package/dist/Accordion/AccordionContent.cjs +0 -1
- package/dist/Accordion/AccordionContext.cjs +0 -1
- package/dist/Accordion/AccordionGroup.cjs +0 -47
- package/dist/Accordion/AccordionToggle.cjs +0 -28
- package/dist/Accordion/index.cjs +0 -1
- package/dist/Accordion/utils.cjs +0 -1
- package/dist/Alert/Alert.cjs +0 -29
- package/dist/Alert/index.cjs +0 -1
- package/dist/Alert/utils.cjs +0 -1
- package/dist/Avatar/Avatar.cjs +0 -18
- package/dist/Avatar/AvatarGroup.cjs +0 -5
- package/dist/Avatar/constants.cjs +0 -1
- package/dist/Avatar/index.cjs +0 -1
- package/dist/Badge/Badge.cjs +0 -4
- package/dist/Badge/index.cjs +0 -1
- package/dist/BaseButton/BaseButton.cjs +0 -17
- package/dist/BaseButton/index.cjs +0 -1
- package/dist/BaseCheckbox/BaseCheckbox.cjs +0 -62
- package/dist/BaseCheckbox/assets/checkmark-black.svg.cjs +0 -1
- package/dist/BaseCheckbox/assets/checkmark.svg.cjs +0 -1
- package/dist/BaseCheckbox/index.cjs +0 -1
- package/dist/BaseCheckbox/utils.cjs +0 -1
- package/dist/BaseLink/BaseLink.cjs +0 -1
- package/dist/BaseLink/index.cjs +0 -1
- package/dist/BaseRadio/BaseRadio.cjs +0 -31
- package/dist/BaseRadio/RadioGroup.cjs +0 -1
- package/dist/BaseRadio/context.cjs +0 -1
- package/dist/BaseRadio/index.cjs +0 -1
- package/dist/BaseRadio/utils.cjs +0 -1
- package/dist/Box/Box.cjs +0 -79
- package/dist/Box/index.cjs +0 -1
- package/dist/Breadcrumbs/Breadcrumbs.cjs +0 -16
- package/dist/Breadcrumbs/index.cjs +0 -1
- package/dist/Button/Button.cjs +0 -36
- package/dist/Button/constants.cjs +0 -1
- package/dist/Button/index.cjs +0 -1
- package/dist/Button/utils.cjs +0 -87
- package/dist/Card/Card.cjs +0 -1
- package/dist/Card/CardAction.cjs +0 -6
- package/dist/Card/CardAsset.cjs +0 -19
- package/dist/Card/CardBadge.cjs +0 -6
- package/dist/Card/CardBody.cjs +0 -1
- package/dist/Card/CardCheckbox.cjs +0 -1
- package/dist/Card/CardContent.cjs +0 -3
- package/dist/Card/CardContext.cjs +0 -1
- package/dist/Card/CardHeader.cjs +0 -3
- package/dist/Card/CardTimer.cjs +0 -1
- package/dist/Card/CardTitle.cjs +0 -1
- package/dist/Card/index.cjs +0 -1
- package/dist/CarouselInput/Carousel.cjs +0 -13
- package/dist/CarouselInput/CarouselActions.cjs +0 -1
- package/dist/CarouselInput/CarouselImage.cjs +0 -3
- package/dist/CarouselInput/CarouselInput.cjs +0 -1
- package/dist/CarouselInput/CarouselSlide.cjs +0 -1
- package/dist/CarouselInput/index.cjs +0 -1
- package/dist/Checkbox/Checkbox.cjs +0 -7
- package/dist/Checkbox/index.cjs +0 -1
- package/dist/Combobox/Combobox.cjs +0 -107
- package/dist/Combobox/ComboboxList.cjs +0 -5
- package/dist/Combobox/ComboboxOption.cjs +0 -1
- package/dist/Combobox/index.cjs +0 -1
- package/dist/DatePicker/DatePicker.cjs +0 -88
- package/dist/DatePicker/index.cjs +0 -1
- package/dist/DateTimePicker/DateTimePicker.cjs +0 -7
- package/dist/DateTimePicker/index.cjs +0 -1
- package/dist/DesignSystemProvider.cjs +0 -1
- package/dist/Dialog/Dialog.cjs +0 -11
- package/dist/Dialog/DialogBody.cjs +0 -10
- package/dist/Dialog/DialogFooter.cjs +0 -9
- package/dist/Dialog/index.cjs +0 -1
- package/dist/DismissibleLayer/index.cjs +0 -1
- package/dist/Divider/Divider.cjs +0 -7
- package/dist/Divider/index.cjs +0 -1
- package/dist/EmptyStateLayout/EmptyStateLayout.cjs +0 -5
- package/dist/EmptyStateLayout/index.cjs +0 -1
- package/dist/EmptyStateLayout/story-assets/Illo.cjs +0 -1
- package/dist/Field/Field.cjs +0 -1
- package/dist/Field/FieldAction.cjs +0 -4
- package/dist/Field/FieldContext.cjs +0 -1
- package/dist/Field/FieldError.cjs +0 -1
- package/dist/Field/FieldHint.cjs +0 -1
- package/dist/Field/FieldInput.cjs +0 -41
- package/dist/Field/FieldLabel.cjs +0 -12
- package/dist/Field/index.cjs +0 -1
- package/dist/Flex/Flex.cjs +0 -9
- package/dist/Flex/index.cjs +0 -1
- package/dist/FocusTrap/FocusTrap.cjs +0 -1
- package/dist/FocusTrap/index.cjs +0 -1
- package/dist/Grid/Grid.cjs +0 -5
- package/dist/Grid/GridItem.cjs +0 -12
- package/dist/Grid/index.cjs +0 -1
- package/dist/Icon/Icon.cjs +0 -6
- package/dist/Icon/index.cjs +0 -1
- package/dist/IconButton/IconButton.cjs +0 -81
- package/dist/IconButton/index.cjs +0 -1
- package/dist/JSONInput/JSONInput.cjs +0 -33
- package/dist/JSONInput/index.cjs +0 -1
- package/dist/JSONInput/utils/decorationExtension.cjs +0 -1
- package/dist/KeyboardNavigable/KeyboardNavigable.cjs +0 -1
- package/dist/KeyboardNavigable/index.cjs +0 -1
- package/dist/Layout/ActionLayout.cjs +0 -1
- package/dist/Layout/ContentLayout.cjs +0 -1
- package/dist/Layout/GridLayout.cjs +0 -5
- package/dist/Layout/HeaderLayout.cjs +0 -4
- package/dist/Layout/Layout.cjs +0 -6
- package/dist/Layout/TwoColsLayout.cjs +0 -1
- package/dist/Layout/index.cjs +0 -1
- package/dist/Link/Link.cjs +0 -33
- package/dist/Link/index.cjs +0 -1
- package/dist/LinkButton/LinkButton.cjs +0 -15
- package/dist/LinkButton/index.cjs +0 -1
- package/dist/LiveRegions/LiveRegions.cjs +0 -1
- package/dist/LiveRegions/constants.cjs +0 -1
- package/dist/LiveRegions/index.cjs +0 -1
- package/dist/LiveRegions/useNotifyAT.cjs +0 -1
- package/dist/Loader/Loader.cjs +0 -12
- package/dist/Loader/assets/loader.svg.cjs +0 -1
- package/dist/Loader/index.cjs +0 -1
- package/dist/Main/Main.cjs +0 -6
- package/dist/Main/SkipToContent.cjs +0 -8
- package/dist/Main/index.cjs +0 -1
- package/dist/MainNav/MainNav.cjs +0 -4
- package/dist/MainNav/MainNavContext.cjs +0 -1
- package/dist/MainNav/NavBrand.cjs +0 -12
- package/dist/MainNav/NavCondense.cjs +0 -20
- package/dist/MainNav/NavFooter.cjs +0 -1
- package/dist/MainNav/NavLink.cjs +0 -69
- package/dist/MainNav/NavSection.cjs +0 -1
- package/dist/MainNav/NavSections.cjs +0 -4
- package/dist/MainNav/NavUser.cjs +0 -3
- package/dist/MainNav/index.cjs +0 -1
- package/dist/ModalLayout/ModalBody.cjs +0 -4
- package/dist/ModalLayout/ModalContext.cjs +0 -1
- package/dist/ModalLayout/ModalFooter.cjs +0 -4
- package/dist/ModalLayout/ModalHeader.cjs +0 -4
- package/dist/ModalLayout/ModalLayout.cjs +0 -4
- package/dist/ModalLayout/index.cjs +0 -1
- package/dist/NumberInput/NumberInput.cjs +0 -12
- package/dist/NumberInput/index.cjs +0 -1
- package/dist/Pagination/Pagination.cjs +0 -1
- package/dist/Pagination/PaginationContext.cjs +0 -1
- package/dist/Pagination/assets/next.svg.cjs +0 -1
- package/dist/Pagination/assets/previous.svg.cjs +0 -1
- package/dist/Pagination/components.cjs +0 -33
- package/dist/Pagination/index.cjs +0 -1
- package/dist/Popover/Popover.cjs +0 -25
- package/dist/Popover/index.cjs +0 -1
- package/dist/Popover/primitives.cjs +0 -1
- package/dist/Portal/Portal.cjs +0 -1
- package/dist/Portal/index.cjs +0 -1
- package/dist/ProgressBar/ProgressBar.cjs +0 -11
- package/dist/ProgressBar/index.cjs +0 -1
- package/dist/Radio/Radio.cjs +0 -1
- package/dist/Radio/index.cjs +0 -1
- package/dist/RawTable/RawCell.cjs +0 -1
- package/dist/RawTable/RawTable.cjs +0 -1
- package/dist/RawTable/RawTableContext.cjs +0 -1
- package/dist/RawTable/RawTbody.cjs +0 -1
- package/dist/RawTable/RawThead.cjs +0 -1
- package/dist/RawTable/RawTr.cjs +0 -1
- package/dist/RawTable/focusFocusable.cjs +0 -1
- package/dist/RawTable/index.cjs +0 -1
- package/dist/Searchbar/SearchForm.cjs +0 -1
- package/dist/Searchbar/Searchbar.cjs +0 -28
- package/dist/Searchbar/index.cjs +0 -1
- package/dist/Select/MultiSelect.cjs +0 -30
- package/dist/Select/MultiSelectNested.cjs +0 -3
- package/dist/Select/OptGroup.cjs +0 -5
- package/dist/Select/Option.cjs +0 -5
- package/dist/Select/Select.cjs +0 -6
- package/dist/Select/SelectList.cjs +0 -5
- package/dist/Select/SelectParts.cjs +0 -83
- package/dist/Select/SingleSelect.cjs +0 -1
- package/dist/Select/index.cjs +0 -1
- package/dist/SimpleMenu/SimpleMenu.cjs +0 -35
- package/dist/SimpleMenu/index.cjs +0 -1
- package/dist/SimpleMenu/utils.cjs +0 -12
- package/dist/Stack/Stack.cjs +0 -19
- package/dist/Stack/index.cjs +0 -1
- package/dist/Status/Status.cjs +0 -11
- package/dist/Status/index.cjs +0 -1
- package/dist/SubNav/SubNav.cjs +0 -10
- package/dist/SubNav/SubNavHeader.cjs +0 -4
- package/dist/SubNav/SubNavLink.cjs +0 -39
- package/dist/SubNav/SubNavLinkSection.cjs +0 -19
- package/dist/SubNav/SubNavSection.cjs +0 -8
- package/dist/SubNav/SubNavSectionLabel.cjs +0 -9
- package/dist/SubNav/SubNavSections.cjs +0 -1
- package/dist/SubNav/index.cjs +0 -1
- package/dist/Switch/Switch.cjs +0 -42
- package/dist/Switch/index.cjs +0 -1
- package/dist/Table/Cell.cjs +0 -17
- package/dist/Table/TFooter.cjs +0 -22
- package/dist/Table/Table.cjs +0 -34
- package/dist/Table/Tbody.cjs +0 -5
- package/dist/Table/Thead.cjs +0 -3
- package/dist/Table/Tr.cjs +0 -20
- package/dist/Table/index.cjs +0 -1
- package/dist/Tabs/TabGroup.cjs +0 -1
- package/dist/Tabs/TabPanels.cjs +0 -1
- package/dist/Tabs/Tabs.cjs +0 -5
- package/dist/Tabs/TabsContext.cjs +0 -1
- package/dist/Tabs/components.cjs +0 -43
- package/dist/Tabs/index.cjs +0 -1
- package/dist/Tag/Tag.cjs +0 -14
- package/dist/Tag/index.cjs +0 -1
- package/dist/TextButton/TextButton.cjs +0 -26
- package/dist/TextButton/index.cjs +0 -1
- package/dist/TextInput/TextInput.cjs +0 -1
- package/dist/TextInput/index.cjs +0 -1
- package/dist/Textarea/Textarea.cjs +0 -17
- package/dist/Textarea/index.cjs +0 -1
- package/dist/ThemeProvider/hooks.cjs +0 -1
- package/dist/ThemeProvider/index.cjs +0 -1
- package/dist/TimePicker/TimePicker.cjs +0 -8
- package/dist/TimePicker/index.cjs +0 -1
- package/dist/ToggleCheckbox/ToggleCheckbox.cjs +0 -36
- package/dist/ToggleCheckbox/index.cjs +0 -1
- package/dist/ToggleInput/ToggleInput.cjs +0 -22
- package/dist/ToggleInput/index.cjs +0 -1
- package/dist/Tooltip/Tooltip.cjs +0 -5
- package/dist/Tooltip/hooks/useTooltipHandlers.cjs +0 -1
- package/dist/Tooltip/hooks/useTooltipLayout.cjs +0 -1
- package/dist/Tooltip/index.cjs +0 -1
- package/dist/Tooltip/utils/positionTooltip.cjs +0 -1
- package/dist/Typography/Typography.cjs +0 -14
- package/dist/Typography/constants.cjs +0 -1
- package/dist/Typography/index.cjs +0 -1
- package/dist/Typography/utils.cjs +0 -34
- package/dist/VisuallyHidden/VisuallyHidden.cjs +0 -10
- package/dist/VisuallyHidden/index.cjs +0 -1
- package/dist/helpers/context.cjs +0 -1
- package/dist/helpers/deprecations.cjs +0 -1
- package/dist/helpers/getDefaultLocale.cjs +0 -4
- package/dist/helpers/getFocusableNodes.cjs +0 -1
- package/dist/helpers/handleResponsiveValues.cjs +0 -1
- package/dist/helpers/keyboardKeys.cjs +0 -1
- package/dist/helpers/objects.cjs +0 -1
- package/dist/helpers/setOpacity.cjs +0 -1
- package/dist/helpers/setTabIndexOnFirstItem.cjs +0 -1
- package/dist/helpers/strings.cjs +0 -1
- package/dist/helpers/theme.cjs +0 -1
- package/dist/helpers/useElementOnScreen.cjs +0 -4
- package/dist/helpers/useId.cjs +0 -4
- package/dist/helpers/useIntersection.cjs +0 -4
- package/dist/helpers/useLockScroll.cjs +0 -4
- package/dist/helpers/usePrevious.cjs +0 -4
- package/dist/helpers/useResizeObserver.cjs +0 -4
- package/dist/hooks/useComposeRefs.cjs +0 -1
- package/dist/hooks/useControllableState.cjs +0 -1
- package/dist/hooks/useDateFormatter.cjs +0 -1
- package/dist/hooks/useElementOnScreen.cjs +0 -1
- package/dist/hooks/useId.cjs +0 -1
- package/dist/hooks/useIntersection.cjs +0 -1
- package/dist/hooks/useLockScroll.cjs +0 -1
- package/dist/hooks/usePrevious.cjs +0 -1
- package/dist/hooks/useResizeObserver.cjs +0 -1
- package/dist/index.cjs +0 -1
- package/dist/themes/common-theme.cjs +0 -1
- package/dist/themes/darkTheme/dark-colors.cjs +0 -1
- package/dist/themes/darkTheme/dark-shadows.cjs +0 -1
- package/dist/themes/darkTheme/index.cjs +0 -1
- package/dist/themes/extendTheme.cjs +0 -13
- package/dist/themes/index.cjs +0 -1
- package/dist/themes/lightTheme/index.cjs +0 -1
- package/dist/themes/lightTheme/light-colors.cjs +0 -1
- package/dist/themes/lightTheme/light-shadows.cjs +0 -1
- package/dist/themes/sizes.cjs +0 -1
- package/dist/v2/Breadcrumbs/Breadcrumbs.cjs +0 -9
- package/dist/v2/Breadcrumbs/Crumb.cjs +0 -1
- package/dist/v2/Breadcrumbs/CrumbLink.cjs +0 -14
- package/dist/v2/Breadcrumbs/CrumbSimpleMenu.cjs +0 -9
- package/dist/v2/Breadcrumbs/Divider.cjs +0 -1
- package/dist/v2/Breadcrumbs/index.cjs +0 -1
- package/dist/v2/Link/Link.cjs +0 -25
- package/dist/v2/Link/index.cjs +0 -1
- package/dist/v2/LinkButton/LinkButton.cjs +0 -20
- package/dist/v2/LinkButton/index.cjs +0 -1
- package/dist/v2/MainNav/MainNav.cjs +0 -4
- package/dist/v2/MainNav/MainNavContext.cjs +0 -1
- package/dist/v2/MainNav/NavBrand.cjs +0 -12
- package/dist/v2/MainNav/NavCondense.cjs +0 -17
- package/dist/v2/MainNav/NavFooter.cjs +0 -1
- package/dist/v2/MainNav/NavLink.cjs +0 -69
- package/dist/v2/MainNav/NavSection.cjs +0 -1
- package/dist/v2/MainNav/NavSections.cjs +0 -4
- package/dist/v2/MainNav/NavUser.cjs +0 -3
- package/dist/v2/MainNav/index.cjs +0 -1
- package/dist/v2/Pagination/Pagination.cjs +0 -1
- package/dist/v2/Pagination/PaginationContext.cjs +0 -1
- package/dist/v2/Pagination/assets/next.svg.cjs +0 -1
- package/dist/v2/Pagination/assets/previous.svg.cjs +0 -1
- package/dist/v2/Pagination/components.cjs +0 -33
- package/dist/v2/Pagination/index.cjs +0 -1
- package/dist/v2/SimpleMenu/Menu.cjs +0 -65
- package/dist/v2/SimpleMenu/SimpleMenu.cjs +0 -1
- package/dist/v2/SimpleMenu/index.cjs +0 -1
- package/dist/v2/SubNav/SubNav.cjs +0 -10
- package/dist/v2/SubNav/SubNavHeader.cjs +0 -4
- package/dist/v2/SubNav/SubNavLink.cjs +0 -39
- package/dist/v2/SubNav/SubNavLinkSection.cjs +0 -19
- package/dist/v2/SubNav/SubNavSection.cjs +0 -8
- package/dist/v2/SubNav/SubNavSectionLabel.cjs +0 -9
- package/dist/v2/SubNav/SubNavSections.cjs +0 -1
- package/dist/v2/SubNav/index.cjs +0 -1
- package/dist/v2/index.cjs +0 -1
|
@@ -0,0 +1,721 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useFloating, offset, shift, flip, autoUpdate } from '@floating-ui/react-dom';
|
|
4
|
+
import { getLocalTimeZone, today, minDate, maxDate, startOfMonth, startOfWeek, getDayOfWeek, isSameDay, endOfMonth, parseAbsolute, toCalendarDate } from '@internationalized/date';
|
|
5
|
+
import { useFocusGuards } from '@radix-ui/react-focus-guards';
|
|
6
|
+
import { FocusScope } from '@radix-ui/react-focus-scope';
|
|
7
|
+
import { Cross, Calendar } from '@strapi/icons';
|
|
8
|
+
import { composeEventHandlers } from '@strapi/ui-primitives';
|
|
9
|
+
import { createPortal } from 'react-dom';
|
|
10
|
+
import { RemoveScroll } from 'react-remove-scroll';
|
|
11
|
+
import styled from 'styled-components';
|
|
12
|
+
import { useDesignSystem } from '../DesignSystemProvider.mjs';
|
|
13
|
+
import { DismissibleLayer } from '../DismissibleLayer/index.mjs';
|
|
14
|
+
import { createContext } from '../helpers/context.mjs';
|
|
15
|
+
import { once } from '../helpers/deprecations.mjs';
|
|
16
|
+
import { useComposedRefs } from '../hooks/useComposeRefs.mjs';
|
|
17
|
+
import { useControllableState } from '../hooks/useControllableState.mjs';
|
|
18
|
+
import { useDateFormatter } from '../hooks/useDateFormatter.mjs';
|
|
19
|
+
import { useId } from '../hooks/useId.mjs';
|
|
20
|
+
import { SingleSelectInput, SingleSelectOption } from '../Select/SingleSelect.mjs';
|
|
21
|
+
import { Portal } from '../Portal/Portal.mjs';
|
|
22
|
+
import { Flex } from '../Flex/Flex.mjs';
|
|
23
|
+
import { getThemeSize, inputFocusStyle } from '../themes/utils.mjs';
|
|
24
|
+
import { Box } from '../Box/Box.mjs';
|
|
25
|
+
import { Typography } from '../Typography/Typography.mjs';
|
|
26
|
+
import { Field } from '../Field/Field.mjs';
|
|
27
|
+
import { FieldLabel } from '../Field/FieldLabel.mjs';
|
|
28
|
+
import { FieldHint } from '../Field/FieldHint.mjs';
|
|
29
|
+
import { FieldError } from '../Field/FieldError.mjs';
|
|
30
|
+
|
|
31
|
+
const DEFAULT_PAST_RANGE = 200;
|
|
32
|
+
const DEFAULT_FUTURE_RANGE = 15;
|
|
33
|
+
const [DatePickerProvider, useDatePickerContext] = createContext('DatePicker');
|
|
34
|
+
const DatePickerInput = React.forwardRef(({
|
|
35
|
+
/**
|
|
36
|
+
* DatePickerCalendar props
|
|
37
|
+
*/
|
|
38
|
+
calendarLabel, className, initialDate, locale: defaultLocale, maxDate, minDate, monthSelectLabel = 'Month', onChange, selectedDate, yearSelectLabel = 'Year',
|
|
39
|
+
/**
|
|
40
|
+
* Combobox props
|
|
41
|
+
*/
|
|
42
|
+
error, id, disabled = false, placeholder, required = false, onClear, clearLabel = 'Clear', size,
|
|
43
|
+
/**
|
|
44
|
+
* @preserve
|
|
45
|
+
* @deprecated This is no longer used.
|
|
46
|
+
*/
|
|
47
|
+
ariaLabel: _ariaLabel,
|
|
48
|
+
/**
|
|
49
|
+
* @preserve
|
|
50
|
+
* @deprecated This is no longer used.
|
|
51
|
+
*/
|
|
52
|
+
selectedDateLabel: _selectedDateLabel, ...restProps }, ref) => {
|
|
53
|
+
const timeZone = getLocalTimeZone();
|
|
54
|
+
const designContext = useDesignSystem('DatePicker');
|
|
55
|
+
const locale = defaultLocale ?? designContext.locale;
|
|
56
|
+
const formatter = useDateFormatter(locale, {
|
|
57
|
+
day: '2-digit',
|
|
58
|
+
month: '2-digit',
|
|
59
|
+
year: 'numeric',
|
|
60
|
+
});
|
|
61
|
+
const [open, setOpen] = React.useState(false);
|
|
62
|
+
const [trigger, setTrigger] = React.useState(null);
|
|
63
|
+
const [textInput, setTextInput] = React.useState(null);
|
|
64
|
+
const [content, setContent] = React.useState(null);
|
|
65
|
+
const [textValue, setTextValue] = React.useState();
|
|
66
|
+
const [value, setValue] = useControllableState({
|
|
67
|
+
defaultProp: initialDate ? convertUTCDateToCalendarDate(initialDate) : undefined,
|
|
68
|
+
prop: selectedDate ? convertUTCDateToCalendarDate(selectedDate) : undefined,
|
|
69
|
+
onChange(date) {
|
|
70
|
+
if (onChange) {
|
|
71
|
+
onChange(date?.toDate(timeZone));
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const [actualMinDate, actualMaxDate] = React.useMemo(() => {
|
|
76
|
+
const now = initialDate ? convertUTCDateToCalendarDate(initialDate) : today('UTC');
|
|
77
|
+
const actualMinDate = minDate
|
|
78
|
+
? convertUTCDateToCalendarDate(minDate)
|
|
79
|
+
: now.set({ day: 1, month: 1, year: now.year - DEFAULT_PAST_RANGE });
|
|
80
|
+
let actualMaxDate = maxDate
|
|
81
|
+
? convertUTCDateToCalendarDate(maxDate)
|
|
82
|
+
: now.set({ day: 31, month: 12, year: now.year + DEFAULT_FUTURE_RANGE });
|
|
83
|
+
if (actualMaxDate.compare(actualMinDate) < 0) {
|
|
84
|
+
actualMaxDate = actualMinDate.set({ day: 31, month: 12, year: actualMinDate.year + DEFAULT_FUTURE_RANGE });
|
|
85
|
+
}
|
|
86
|
+
return [actualMinDate, actualMaxDate];
|
|
87
|
+
}, [minDate, maxDate, initialDate]);
|
|
88
|
+
/**
|
|
89
|
+
* Setting the initial calendar state based on priority.
|
|
90
|
+
*/
|
|
91
|
+
const [calendarDate, setCalendarDate] = React.useState(makeInitialCalendarDate({
|
|
92
|
+
currentValue: value,
|
|
93
|
+
minDate: actualMinDate,
|
|
94
|
+
maxDate: actualMaxDate,
|
|
95
|
+
}));
|
|
96
|
+
const contentId = useId();
|
|
97
|
+
const clearRef = React.useRef(null);
|
|
98
|
+
const handleClearClick = (e) => {
|
|
99
|
+
if (onClear && !disabled) {
|
|
100
|
+
setTextValue('');
|
|
101
|
+
setValue(undefined);
|
|
102
|
+
onClear(e);
|
|
103
|
+
textInput?.focus();
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const handleOpenChange = React.useCallback((nextOpen) => {
|
|
107
|
+
if (nextOpen && value) {
|
|
108
|
+
setCalendarDate(value);
|
|
109
|
+
}
|
|
110
|
+
setOpen(nextOpen);
|
|
111
|
+
}, [value]);
|
|
112
|
+
React.useLayoutEffect(() => {
|
|
113
|
+
if (selectedDate) {
|
|
114
|
+
const date = convertUTCDateToCalendarDate(selectedDate);
|
|
115
|
+
setTextValue(formatter.format(date.toDate(timeZone)));
|
|
116
|
+
setCalendarDate(date);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
setTextValue('');
|
|
120
|
+
}
|
|
121
|
+
}, [selectedDate, formatter, timeZone]);
|
|
122
|
+
React.useLayoutEffect(() => {
|
|
123
|
+
if (initialDate && textValue === undefined) {
|
|
124
|
+
const date = convertUTCDateToCalendarDate(initialDate);
|
|
125
|
+
setTextValue(formatter.format(date.toDate(timeZone)));
|
|
126
|
+
}
|
|
127
|
+
}, [initialDate, textValue, formatter, timeZone]);
|
|
128
|
+
const hintId = `${id}-hint`;
|
|
129
|
+
const errorId = `${id}-error`;
|
|
130
|
+
return (jsxs(DatePickerProvider, { calendarDate: calendarDate, content: content, contentId: contentId, disabled: disabled, locale: locale, minDate: actualMinDate, maxDate: actualMaxDate, open: open, onCalendarDateChange: setCalendarDate, onContentChange: setContent, onOpenChange: handleOpenChange, onTextInputChange: setTextInput, onTextValueChange: setTextValue, onTriggerChange: setTrigger, onValueChange: setValue, required: required, textInput: textInput, textValue: textValue, timeZone: timeZone, trigger: trigger, value: value, children: [jsxs(DatePickerTrigger, { className: className, size: size, hasError: Boolean(error), children: [jsx(StyledCalendarIcon, { "aria-hidden": true }), jsx(DatePickerTextInput, { ref: ref, placeholder: placeholder, "aria-describedby": `${hintId} ${errorId}`, id: id, ...restProps }), textValue && onClear ? (jsx(IconBox, { as: "button", hasRadius: true, background: "transparent", type: "button", onClick: handleClearClick, "aria-disabled": disabled, "aria-label": clearLabel, title: clearLabel, ref: clearRef, children: jsx(Cross, {}) })) : null] }), jsx(Portal, { children: jsx(DatePickerContent, { label: calendarLabel, children: jsx(DatePickerCalendar, { monthSelectLabel: monthSelectLabel, yearSelectLabel: yearSelectLabel }) }) })] }));
|
|
131
|
+
});
|
|
132
|
+
const isPrintableCharacter = (str) => {
|
|
133
|
+
return Boolean(str.match(/^[^a-zA-Z]*$/));
|
|
134
|
+
};
|
|
135
|
+
const makeInitialCalendarDate = ({ currentValue, minDate: minDate$1, maxDate: maxDate$1 }) => {
|
|
136
|
+
const now = today('UTC');
|
|
137
|
+
if (currentValue) {
|
|
138
|
+
return currentValue;
|
|
139
|
+
}
|
|
140
|
+
if (minDate(minDate$1, now) === minDate$1 && maxDate(maxDate$1, now) === maxDate$1) {
|
|
141
|
+
return now;
|
|
142
|
+
}
|
|
143
|
+
if (minDate(minDate$1, now) === now) {
|
|
144
|
+
return minDate$1;
|
|
145
|
+
}
|
|
146
|
+
if (maxDate(maxDate$1, now) === now) {
|
|
147
|
+
return maxDate$1;
|
|
148
|
+
}
|
|
149
|
+
return now;
|
|
150
|
+
};
|
|
151
|
+
/* -------------------------------------------------------------------------------------------------
|
|
152
|
+
* DatePickerTrigger
|
|
153
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
154
|
+
const DATE_PICKER_TRIGGER_NAME = 'DatePickerTrigger';
|
|
155
|
+
const DatePickerTrigger = React.forwardRef(({ hasError, size = 'M', ...restProps }, forwardedRef) => {
|
|
156
|
+
const context = useDatePickerContext(DATE_PICKER_TRIGGER_NAME);
|
|
157
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => context.onTriggerChange(node));
|
|
158
|
+
const handleOpenChange = () => {
|
|
159
|
+
if (!context.disabled) {
|
|
160
|
+
context.onOpenChange(true);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
return (jsx(FocusScope, { asChild: true,
|
|
164
|
+
// we make sure we're not trapping once it's been closed
|
|
165
|
+
// (closed !== unmounted when animating out)
|
|
166
|
+
trapped: context.open, onMountAutoFocus: (event) => {
|
|
167
|
+
// we prevent open autofocus because we manually focus the selected item
|
|
168
|
+
event.preventDefault();
|
|
169
|
+
}, onUnmountAutoFocus: (event) => {
|
|
170
|
+
/**
|
|
171
|
+
* In firefox there's a some kind of selection happening after
|
|
172
|
+
* unmounting all of this, so we make sure we clear that.
|
|
173
|
+
*/
|
|
174
|
+
document.getSelection()?.empty();
|
|
175
|
+
event.preventDefault();
|
|
176
|
+
}, children: jsx(TriggerElement, { ref: composedRefs, "$hasError": hasError, "$size": size, ...restProps, paddingLeft: 3, paddingRight: 3, hasRadius: true, gap: 3, overflow: "hidden", background: context.disabled ? 'neutral150' : 'neutral0', onClick: composeEventHandlers(restProps.onClick, () => {
|
|
177
|
+
// Whilst browsers generally have no issue focusing the trigger when clicking
|
|
178
|
+
// on a label, Safari seems to struggle with the fact that there's no `onClick`.
|
|
179
|
+
// We force `focus` in this case. Note: this doesn't create any other side-effect
|
|
180
|
+
// because we are preventing default in `onPointerDown` so effectively
|
|
181
|
+
// this only runs for a label "click"
|
|
182
|
+
context.textInput?.focus();
|
|
183
|
+
}), onPointerDown: composeEventHandlers(restProps.onPointerDown, (event) => {
|
|
184
|
+
// prevent implicit pointer capture
|
|
185
|
+
// https://www.w3.org/TR/pointerevents3/#implicit-pointer-capture
|
|
186
|
+
const target = event.target;
|
|
187
|
+
if (target.hasPointerCapture(event.pointerId)) {
|
|
188
|
+
target.releasePointerCapture(event.pointerId);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* This has been added to allow events inside the trigger to be easily fired
|
|
192
|
+
* e.g. the clear button or removing a tag
|
|
193
|
+
*/
|
|
194
|
+
const buttonTarg = target.closest('button') ?? target.closest('div');
|
|
195
|
+
if (buttonTarg !== event.currentTarget) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
// only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
|
|
199
|
+
// but not when the control key is pressed (avoiding MacOS right click)
|
|
200
|
+
if (event.button === 0 && event.ctrlKey === false) {
|
|
201
|
+
handleOpenChange();
|
|
202
|
+
/**
|
|
203
|
+
* Firefox had issues focussing the input correctly.
|
|
204
|
+
*/
|
|
205
|
+
context.textInput?.focus();
|
|
206
|
+
}
|
|
207
|
+
}) }) }));
|
|
208
|
+
});
|
|
209
|
+
const TriggerElement = styled(Flex) `
|
|
210
|
+
border: 1px solid ${({ theme, $hasError }) => ($hasError ? theme.colors.danger600 : theme.colors.neutral200)};
|
|
211
|
+
min-height: ${({ theme, $size }) => getThemeSize('input')({ theme, size: $size })};
|
|
212
|
+
|
|
213
|
+
&[data-disabled] {
|
|
214
|
+
color: ${({ theme }) => theme.colors.neutral600};
|
|
215
|
+
background: ${({ theme }) => theme.colors.neutral150};
|
|
216
|
+
cursor: not-allowed;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/* Required to ensure the below inputFocusStyles are adhered too */
|
|
220
|
+
&:focus-visible {
|
|
221
|
+
outline: none;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
${({ theme, $hasError }) => inputFocusStyle()({ theme, hasError: $hasError })};
|
|
225
|
+
`;
|
|
226
|
+
const IconBox = styled(Box) `
|
|
227
|
+
border: none;
|
|
228
|
+
|
|
229
|
+
svg {
|
|
230
|
+
height: ${11 / 16}rem;
|
|
231
|
+
width: ${11 / 16}rem;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
svg path {
|
|
235
|
+
fill: ${({ theme }) => theme.colors.neutral600};
|
|
236
|
+
}
|
|
237
|
+
`;
|
|
238
|
+
const StyledCalendarIcon = styled(Calendar) `
|
|
239
|
+
& > path {
|
|
240
|
+
fill: ${({ theme }) => theme.colors.neutral500};
|
|
241
|
+
}
|
|
242
|
+
`;
|
|
243
|
+
/* -------------------------------------------------------------------------------------------------
|
|
244
|
+
* DatePickerTextInput
|
|
245
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
246
|
+
const DATE_PICKER_TEXT_INPUT_NAME = 'DatePickerTextInput';
|
|
247
|
+
const DatePickerTextInput = React.forwardRef(({ placeholder, ...props }, forwardedRef) => {
|
|
248
|
+
const context = useDatePickerContext(DATE_PICKER_TEXT_INPUT_NAME);
|
|
249
|
+
const { onTextValueChange, textValue, onTextInputChange, onOpenChange, disabled, locale } = context;
|
|
250
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => onTextInputChange(node));
|
|
251
|
+
const handleOpenChange = () => {
|
|
252
|
+
if (!disabled) {
|
|
253
|
+
onOpenChange(true);
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
const formatter = useDateFormatter(locale, {
|
|
257
|
+
year: 'numeric',
|
|
258
|
+
month: '2-digit',
|
|
259
|
+
day: '2-digit',
|
|
260
|
+
});
|
|
261
|
+
const [dateFormatPlaceholder, separator, dateStructure] = React.useMemo(() => {
|
|
262
|
+
const parts = formatter.formatToParts(new Date());
|
|
263
|
+
const dateStructure = parts.filter((part) => part.type === 'year' || part.type === 'month' || part.type === 'day');
|
|
264
|
+
const placeholder = dateStructure.map((part) => {
|
|
265
|
+
switch (part.type) {
|
|
266
|
+
case 'day':
|
|
267
|
+
return 'DD';
|
|
268
|
+
case 'month':
|
|
269
|
+
return 'MM';
|
|
270
|
+
case 'year':
|
|
271
|
+
return 'YYYY';
|
|
272
|
+
default:
|
|
273
|
+
return '';
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
const separator = parts.find((part) => part.type === 'literal')?.value ?? '';
|
|
277
|
+
return [placeholder, separator, dateStructure];
|
|
278
|
+
}, [formatter]);
|
|
279
|
+
/**
|
|
280
|
+
* the `pattern` prop of an input cannot be a regex it must be a string without the `/` delimiters.
|
|
281
|
+
* Therefore, we manually escape the separator and `d` character.
|
|
282
|
+
*/
|
|
283
|
+
const inputPattern = dateFormatPlaceholder.map((part) => `\\d{${part.length}}`).join(`\\${separator}`);
|
|
284
|
+
return (jsx(Input, { role: "combobox", type: "text", inputMode: "numeric", ref: composedRefs, "aria-autocomplete": "none", "aria-controls": context.contentId, "aria-disabled": context.disabled, "aria-expanded": context.open, "aria-required": context.required, "aria-haspopup": "dialog", "data-state": context.open ? 'open' : 'closed', disabled: disabled, "data-disabled": disabled ? '' : undefined, pattern: inputPattern, placeholder: placeholder ?? dateFormatPlaceholder.join(separator), ...props, value: textValue ?? '', onBlur: composeEventHandlers(props.onBlur, () => {
|
|
285
|
+
if (!context.textValue) {
|
|
286
|
+
context.onValueChange(undefined);
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
289
|
+
context.onTextValueChange(formatter.format(context.calendarDate.toDate(context.timeZone)));
|
|
290
|
+
context.onValueChange(context.calendarDate);
|
|
291
|
+
}), onChange: composeEventHandlers(props.onChange, (event) => {
|
|
292
|
+
if (isPrintableCharacter(event.target.value)) {
|
|
293
|
+
const inputByPart = event.target.value.split(separator);
|
|
294
|
+
/**
|
|
295
|
+
* by using the dateStructure to understand the localised order we split and organise the event.target.value
|
|
296
|
+
* to DD MM YYYY and return as an array.
|
|
297
|
+
*/
|
|
298
|
+
const [day, month, year] = dateStructure
|
|
299
|
+
.map((part, index) => {
|
|
300
|
+
const value = inputByPart[index];
|
|
301
|
+
return {
|
|
302
|
+
...part,
|
|
303
|
+
value,
|
|
304
|
+
};
|
|
305
|
+
})
|
|
306
|
+
/**
|
|
307
|
+
* TODO: This could probably be better done?
|
|
308
|
+
*/
|
|
309
|
+
.sort((a, b) => {
|
|
310
|
+
if (a.type === 'year') {
|
|
311
|
+
return 1;
|
|
312
|
+
}
|
|
313
|
+
if (b.type === 'year') {
|
|
314
|
+
return -1;
|
|
315
|
+
}
|
|
316
|
+
if (a.type === 'month') {
|
|
317
|
+
return 1;
|
|
318
|
+
}
|
|
319
|
+
if (b.type === 'month') {
|
|
320
|
+
return -1;
|
|
321
|
+
}
|
|
322
|
+
return 0;
|
|
323
|
+
})
|
|
324
|
+
.map((part) => part.value);
|
|
325
|
+
const currentYear = context.calendarDate.year;
|
|
326
|
+
/**
|
|
327
|
+
* If a user types 2 for the year then the year should be the current year with the last number as what they typed.
|
|
328
|
+
* This applies for if they've typed two numbers but not three or four numbers.
|
|
329
|
+
*/
|
|
330
|
+
let newYear = context.calendarDate.year;
|
|
331
|
+
if (year) {
|
|
332
|
+
/**
|
|
333
|
+
* ensure the year is _at least_ 2 digits long so if the year
|
|
334
|
+
* is 2023 and you type 9 the year becomes 2009 instead of 2029,
|
|
335
|
+
* this is much similar to how other DatePickers work and makes more sense.
|
|
336
|
+
*/
|
|
337
|
+
let normalizedYear = year.length === 1 ? `0${year}` : year;
|
|
338
|
+
/**
|
|
339
|
+
* The year we set to _must_ be 4 digits long.
|
|
340
|
+
*/
|
|
341
|
+
newYear =
|
|
342
|
+
year.length < 3
|
|
343
|
+
? Number(`${currentYear}`.slice(0, 4 - normalizedYear.length) + normalizedYear)
|
|
344
|
+
: Number(normalizedYear);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* If you type a value like `94` and that's above the maxDate e.g. 2040 then
|
|
348
|
+
* we assume you would have meant 1994 and correct the date. Again, this is
|
|
349
|
+
* similar to how other DatePickers work.
|
|
350
|
+
*
|
|
351
|
+
* Note we only do this if the typed value is less than 3 digits long.
|
|
352
|
+
*/
|
|
353
|
+
if (year && year.length < 3 && newYear > context.maxDate.year) {
|
|
354
|
+
newYear -= 100;
|
|
355
|
+
}
|
|
356
|
+
const newDateWithYear = context.calendarDate.set({ year: newYear });
|
|
357
|
+
const maxMonthNumber = newDateWithYear.calendar.getMonthsInYear(newDateWithYear);
|
|
358
|
+
const newDateWithMonthAndYear = newDateWithYear.set({
|
|
359
|
+
month: month && Number(month) <= maxMonthNumber ? Number(month) : undefined,
|
|
360
|
+
});
|
|
361
|
+
const maxDayNumber = newDateWithMonthAndYear.calendar.getDaysInMonth(newDateWithMonthAndYear);
|
|
362
|
+
const newDateWithDayMonthAndYear = newDateWithMonthAndYear.set({
|
|
363
|
+
day: day && Number(day) <= maxDayNumber ? Number(day) : undefined,
|
|
364
|
+
});
|
|
365
|
+
context.onCalendarDateChange(constrainValue(newDateWithDayMonthAndYear, context.minDate, context.maxDate));
|
|
366
|
+
context.onTextValueChange(event.target.value);
|
|
367
|
+
}
|
|
368
|
+
}), onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
|
|
369
|
+
if (!context.open && (isPrintableCharacter(event.key) || ['ArrowDown', 'Backspace'].includes(event.key))) {
|
|
370
|
+
handleOpenChange();
|
|
371
|
+
}
|
|
372
|
+
else if (['Tab'].includes(event.key) && context.open) {
|
|
373
|
+
event.preventDefault();
|
|
374
|
+
}
|
|
375
|
+
else if (['Escape'].includes(event.key)) {
|
|
376
|
+
if (context.open) {
|
|
377
|
+
context.onOpenChange(false);
|
|
378
|
+
}
|
|
379
|
+
else {
|
|
380
|
+
context.onValueChange(undefined);
|
|
381
|
+
context.onTextValueChange('');
|
|
382
|
+
}
|
|
383
|
+
event.preventDefault();
|
|
384
|
+
}
|
|
385
|
+
else if (context.open && ['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {
|
|
386
|
+
event.preventDefault();
|
|
387
|
+
switch (event.key) {
|
|
388
|
+
case 'ArrowDown': {
|
|
389
|
+
const nextDate = context.calendarDate.add({ weeks: 1 });
|
|
390
|
+
if (context.maxDate && nextDate.compare(context.maxDate) > 0) {
|
|
391
|
+
return;
|
|
392
|
+
}
|
|
393
|
+
context.onCalendarDateChange(nextDate);
|
|
394
|
+
return;
|
|
395
|
+
}
|
|
396
|
+
case 'ArrowRight': {
|
|
397
|
+
const nextDate = context.calendarDate.add({ days: 1 });
|
|
398
|
+
if (context.maxDate && nextDate.compare(context.maxDate) > 0) {
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
context.onCalendarDateChange(nextDate);
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
case 'ArrowUp': {
|
|
405
|
+
const nextDate = context.calendarDate.subtract({ weeks: 1 });
|
|
406
|
+
if (context.minDate && nextDate.compare(context.minDate) < 0) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
context.onCalendarDateChange(nextDate);
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
case 'ArrowLeft': {
|
|
413
|
+
const nextDate = context.calendarDate.subtract({ days: 1 });
|
|
414
|
+
if (context.minDate && nextDate.compare(context.minDate) < 0) {
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
context.onCalendarDateChange(nextDate);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
else if (context.open && ['Enter'].includes(event.key)) {
|
|
422
|
+
event.preventDefault();
|
|
423
|
+
onTextValueChange(formatter.format(context.calendarDate.toDate(context.timeZone)));
|
|
424
|
+
context.onValueChange(context.calendarDate);
|
|
425
|
+
context.onOpenChange(false);
|
|
426
|
+
}
|
|
427
|
+
}) }));
|
|
428
|
+
});
|
|
429
|
+
function constrainValue(date, minValue, maxValue) {
|
|
430
|
+
if (minValue) {
|
|
431
|
+
date = maxDate(date, minValue);
|
|
432
|
+
}
|
|
433
|
+
if (maxValue) {
|
|
434
|
+
date = minDate(date, maxValue);
|
|
435
|
+
}
|
|
436
|
+
return date;
|
|
437
|
+
}
|
|
438
|
+
const Input = styled.input `
|
|
439
|
+
width: 100%;
|
|
440
|
+
font-size: ${14 / 16}rem;
|
|
441
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
442
|
+
height: 100%;
|
|
443
|
+
border: none;
|
|
444
|
+
background-color: transparent;
|
|
445
|
+
|
|
446
|
+
&:focus-visible {
|
|
447
|
+
outline: none;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
&[aria-disabled='true'] {
|
|
451
|
+
cursor: inherit;
|
|
452
|
+
}
|
|
453
|
+
`;
|
|
454
|
+
/* -------------------------------------------------------------------------------------------------
|
|
455
|
+
* DatePickerContent
|
|
456
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
457
|
+
const CONTENT_NAME = 'DatePickerContent';
|
|
458
|
+
const DatePickerContent = React.forwardRef((props, forwardedRef) => {
|
|
459
|
+
const [fragment, setFragment] = React.useState();
|
|
460
|
+
const context = useDatePickerContext(CONTENT_NAME);
|
|
461
|
+
// setting the fragment in `useLayoutEffect` as `DocumentFragment` doesn't exist on the server
|
|
462
|
+
React.useLayoutEffect(() => {
|
|
463
|
+
setFragment(new DocumentFragment());
|
|
464
|
+
}, []);
|
|
465
|
+
if (!context.open) {
|
|
466
|
+
const frag = fragment;
|
|
467
|
+
return frag ? createPortal(jsx("div", { children: props.children }), frag) : null;
|
|
468
|
+
}
|
|
469
|
+
return jsx(DatePickerContentImpl, { ...props, ref: forwardedRef });
|
|
470
|
+
});
|
|
471
|
+
/* -------------------------------------------------------------------------------------------------
|
|
472
|
+
* DatePickerContentImpl
|
|
473
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
474
|
+
const CONTENT_IMPL_NAME = 'DatePickerContent';
|
|
475
|
+
const DatePickerContentImpl = React.forwardRef((props, forwardedRef) => {
|
|
476
|
+
const { label = 'Choose date', ...restProps } = props;
|
|
477
|
+
const { onOpenChange, ...context } = useDatePickerContext(CONTENT_IMPL_NAME);
|
|
478
|
+
const { x, y, refs, strategy } = useFloating({
|
|
479
|
+
strategy: 'fixed',
|
|
480
|
+
placement: 'bottom-start',
|
|
481
|
+
middleware: [
|
|
482
|
+
offset({
|
|
483
|
+
mainAxis: 4,
|
|
484
|
+
}),
|
|
485
|
+
shift(),
|
|
486
|
+
flip(),
|
|
487
|
+
],
|
|
488
|
+
elements: {
|
|
489
|
+
reference: context.trigger,
|
|
490
|
+
},
|
|
491
|
+
whileElementsMounted: autoUpdate,
|
|
492
|
+
});
|
|
493
|
+
React.useEffect(() => {
|
|
494
|
+
const close = () => {
|
|
495
|
+
onOpenChange(false);
|
|
496
|
+
};
|
|
497
|
+
window.addEventListener('blur', close);
|
|
498
|
+
window.addEventListener('resize', close);
|
|
499
|
+
return () => {
|
|
500
|
+
window.removeEventListener('blur', close);
|
|
501
|
+
window.removeEventListener('resize', close);
|
|
502
|
+
};
|
|
503
|
+
}, [onOpenChange]);
|
|
504
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => context.onContentChange(node), refs.setFloating);
|
|
505
|
+
useFocusGuards();
|
|
506
|
+
return (jsx(RemoveScroll, { allowPinchZoom: true, children: jsx(DismissibleLayer, { asChild: true,
|
|
507
|
+
// When focus is trapped, a focusout event may still happen.
|
|
508
|
+
// We make sure we don't trigger our `onDismiss` in such case.
|
|
509
|
+
onFocusOutside: (event) => {
|
|
510
|
+
event.preventDefault();
|
|
511
|
+
}, onDismiss: () => {
|
|
512
|
+
onOpenChange(false);
|
|
513
|
+
}, children: jsx(ContentElement, { ref: composedRefs, "data-state": context.open ? 'open' : 'closed', onContextMenu: (event) => event.preventDefault(), id: context.contentId, role: "dialog", "aria-modal": "true", "aria-label": label, style: {
|
|
514
|
+
left: x,
|
|
515
|
+
top: y,
|
|
516
|
+
position: strategy,
|
|
517
|
+
}, hasRadius: true, background: "neutral0", padding: 1, ...restProps }) }) }));
|
|
518
|
+
});
|
|
519
|
+
const ContentElement = styled(Box) `
|
|
520
|
+
box-shadow: ${({ theme }) => theme.shadows.filterShadow};
|
|
521
|
+
z-index: ${({ theme }) => theme.zIndices[0]};
|
|
522
|
+
border: 1px solid ${({ theme }) => theme.colors.neutral150};
|
|
523
|
+
`;
|
|
524
|
+
/* -------------------------------------------------------------------------------------------------
|
|
525
|
+
* DatePickerCalendar
|
|
526
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
527
|
+
const DATE_PICKER_CALENDAR_NAME = 'DatePickerCalendar';
|
|
528
|
+
const DatePickerCalendar = React.forwardRef(({ monthSelectLabel, yearSelectLabel, ...restProps }, ref) => {
|
|
529
|
+
const { locale, timeZone, minDate, maxDate, calendarDate, onCalendarDateChange } = useDatePickerContext(DATE_PICKER_CALENDAR_NAME);
|
|
530
|
+
const startDate = startOfMonth(calendarDate);
|
|
531
|
+
const years = React.useMemo(() => {
|
|
532
|
+
const minYear = minDate.year;
|
|
533
|
+
const maxYear = maxDate.year;
|
|
534
|
+
return [...Array(maxYear - minYear + 1).keys()].map((y) => (minYear + y).toString());
|
|
535
|
+
}, [minDate, maxDate]);
|
|
536
|
+
const monthFormatter = useDateFormatter(locale, { month: 'long' });
|
|
537
|
+
const months = React.useMemo(() => [...Array(calendarDate.calendar.getMonthsInYear(calendarDate)).keys()].map((m) => monthFormatter.format(calendarDate.set({ month: m + 1 }).toDate(timeZone))), [calendarDate, monthFormatter, timeZone]);
|
|
538
|
+
const dayFormatter = useDateFormatter(locale, { weekday: 'short' });
|
|
539
|
+
/**
|
|
540
|
+
* These are the strings of our days of the week
|
|
541
|
+
* e.g. `Mon`, `Tue`, `Wed`, etc.
|
|
542
|
+
*/
|
|
543
|
+
const weekDays = React.useMemo(() => {
|
|
544
|
+
let weekStart = startOfWeek(today(timeZone), locale);
|
|
545
|
+
return [...new Array(7).keys()].map((index) => {
|
|
546
|
+
let date = weekStart.add({ days: index });
|
|
547
|
+
let dateDay = date.toDate(timeZone);
|
|
548
|
+
return dayFormatter.format(dateDay);
|
|
549
|
+
});
|
|
550
|
+
}, [timeZone, locale, dayFormatter]);
|
|
551
|
+
const handleMonthChange = (month) => {
|
|
552
|
+
if (typeof month === 'number') {
|
|
553
|
+
/**
|
|
554
|
+
* This just to make TS happy, we're not going to get a
|
|
555
|
+
* number because we only use strings as options
|
|
556
|
+
*/
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
const updatedDate = calendarDate.set({ month: months.indexOf(month) + 1 });
|
|
560
|
+
onCalendarDateChange(updatedDate);
|
|
561
|
+
};
|
|
562
|
+
const handleYearChange = (year) => {
|
|
563
|
+
if (typeof year === 'number') {
|
|
564
|
+
/**
|
|
565
|
+
* This just to make TS happy, we're not going to get a
|
|
566
|
+
* number because we only use strings as options
|
|
567
|
+
*/
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
const updatedDate = calendarDate.set({ year: parseInt(year, 10) });
|
|
571
|
+
onCalendarDateChange(updatedDate);
|
|
572
|
+
};
|
|
573
|
+
const getDatesInWeek = makeGetDatesInWeek(startDate, locale);
|
|
574
|
+
return (jsxs(Flex, { ref: ref, direction: "column", alignItems: "stretch", padding: 4, ...restProps, children: [jsxs(ToolbarFlex, { justifyContent: "flex-start", paddingBottom: 4, paddingLeft: 2, paddingRight: 2, gap: 2, children: [jsx(SingleSelectInput, { label: monthSelectLabel, size: "S", value: months[calendarDate.month - 1], onChange: handleMonthChange, children: months.map((month) => (jsx(SingleSelectOption, { value: month, children: month }, month))) }), jsx(SingleSelectInput, { size: "S", value: calendarDate.year.toString(), label: yearSelectLabel, onChange: handleYearChange, children: years.map((year) => (jsx(SingleSelectOption, { value: year, children: year }, year))) })] }), jsxs("table", { role: "grid", children: [jsx("thead", { "aria-hidden": true, children: jsx("tr", { "aria-rowindex": 0, children: weekDays.map((day, index) => (jsx(DatePickerHeaderCell, { "aria-colindex": index, children: day }, day))) }) }), jsx("tbody", { children: [...new Array(6).keys()].map((weekIndex) => (jsx("tr", { "aria-rowindex": weekIndex + 2, children: getDatesInWeek(weekIndex).map((date, index) => date ? (jsx(DatePickerCalendarCell, { "aria-colindex": index + 1, date: date, startDate: startDate }, date.toString())) : (jsx(Cell, { "aria-colindex": index + 1 }))) }, weekIndex))) })] })] }));
|
|
575
|
+
});
|
|
576
|
+
const makeGetDatesInWeek = (from, locale) => (weekIndex) => {
|
|
577
|
+
let date = from.add({ weeks: weekIndex });
|
|
578
|
+
let dates = [];
|
|
579
|
+
date = startOfWeek(date, locale);
|
|
580
|
+
/**
|
|
581
|
+
* startOfWeek will clamp dates within the calendar system's valid range, which may
|
|
582
|
+
* start in the middle of a week. In this case, add null placeholders.
|
|
583
|
+
*/
|
|
584
|
+
let dayOfWeek = getDayOfWeek(date, locale);
|
|
585
|
+
for (let i = 0; i < dayOfWeek; i++) {
|
|
586
|
+
dates.push(null);
|
|
587
|
+
}
|
|
588
|
+
while (dates.length < 7) {
|
|
589
|
+
dates.push(date);
|
|
590
|
+
let nextDate = date.add({ days: 1 });
|
|
591
|
+
if (isSameDay(date, nextDate)) {
|
|
592
|
+
/**
|
|
593
|
+
* If the next day is the same, we have hit the end of the calendar system.
|
|
594
|
+
*/
|
|
595
|
+
break;
|
|
596
|
+
}
|
|
597
|
+
date = nextDate;
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Add null placeholders if at the end of the calendar system.
|
|
601
|
+
*/
|
|
602
|
+
while (dates.length < 7) {
|
|
603
|
+
dates.push(null);
|
|
604
|
+
}
|
|
605
|
+
return dates;
|
|
606
|
+
};
|
|
607
|
+
const ToolbarFlex = styled(Flex) `
|
|
608
|
+
div[role='combobox'] {
|
|
609
|
+
border: 1px solid transparent;
|
|
610
|
+
background: transparent;
|
|
611
|
+
font-weight: ${(props) => props.theme.fontWeights.bold};
|
|
612
|
+
|
|
613
|
+
${Typography} {
|
|
614
|
+
color: ${({ theme }) => theme.colors.neutral800};
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
svg {
|
|
618
|
+
> g,
|
|
619
|
+
path {
|
|
620
|
+
fill: ${({ theme }) => theme.colors.neutral500};
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
&:hover {
|
|
625
|
+
background-color: ${({ theme }) => theme.colors.neutral100};
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
`;
|
|
629
|
+
const DatePickerHeaderCell = React.forwardRef(({ children, ...props }, forwardedRef) => {
|
|
630
|
+
return (jsx(Th, { as: "th", role: "gridcell", ref: forwardedRef, ...props, height: `${24 / 16}rem`, width: `${32 / 16}rem`, children: jsx(Typography, { variant: "pi", fontWeight: "bold", color: "neutral800", children: children.slice(0, 2) }) }));
|
|
631
|
+
});
|
|
632
|
+
const Th = styled(Box) `
|
|
633
|
+
border-radius: ${({ theme }) => theme.borderRadius};
|
|
634
|
+
text-transform: capitalize;
|
|
635
|
+
`;
|
|
636
|
+
/* -------------------------------------------------------------------------------------------------
|
|
637
|
+
* DatePickerCalendarCell
|
|
638
|
+
* -----------------------------------------------------------------------------------------------*/
|
|
639
|
+
const DATE_PICKER_CALEDNAR_CELL_NAME = 'DatePickerCalendarCell';
|
|
640
|
+
const DatePickerCalendarCell = React.forwardRef(({ date, startDate, ...props }, forwardedRef) => {
|
|
641
|
+
const { timeZone, locale, calendarDate, onValueChange, onOpenChange, onTextValueChange, onCalendarDateChange } = useDatePickerContext(DATE_PICKER_CALEDNAR_CELL_NAME);
|
|
642
|
+
const isSelected = isSameDay(calendarDate, date);
|
|
643
|
+
const dateFormatter = useDateFormatter(locale, {
|
|
644
|
+
weekday: 'long',
|
|
645
|
+
day: 'numeric',
|
|
646
|
+
month: 'long',
|
|
647
|
+
year: 'numeric',
|
|
648
|
+
});
|
|
649
|
+
const label = React.useMemo(() => dateFormatter.format(date.toDate(timeZone)), [dateFormatter, date, timeZone]);
|
|
650
|
+
const cellDateFormatter = useDateFormatter(locale, {
|
|
651
|
+
day: 'numeric',
|
|
652
|
+
calendar: date.calendar.identifier,
|
|
653
|
+
});
|
|
654
|
+
const formattedDate = React.useMemo(() => cellDateFormatter.formatToParts(date.toDate(timeZone)).find((part) => part.type === 'day').value, [cellDateFormatter, date, timeZone]);
|
|
655
|
+
const textValueFormatter = useDateFormatter(locale, {
|
|
656
|
+
day: '2-digit',
|
|
657
|
+
month: '2-digit',
|
|
658
|
+
year: 'numeric',
|
|
659
|
+
});
|
|
660
|
+
const endDate = endOfMonth(startDate);
|
|
661
|
+
const isOutsideVisibleRange = date.compare(startDate) < 0 || date.compare(endDate) > 0;
|
|
662
|
+
let textColor = 'neutral900';
|
|
663
|
+
if (isSelected) {
|
|
664
|
+
textColor = 'primary600';
|
|
665
|
+
}
|
|
666
|
+
else if (isOutsideVisibleRange) {
|
|
667
|
+
textColor = 'neutral600';
|
|
668
|
+
}
|
|
669
|
+
return (jsx(Cell, { as: "td", role: "gridcell", ref: forwardedRef, "aria-selected": isSelected, ...props, hasRadius: true, "aria-label": label, tabIndex: isSelected ? 0 : -1, background: isSelected ? 'primary100' : 'neutral0', cursor: "pointer", onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
|
|
670
|
+
event.preventDefault();
|
|
671
|
+
onCalendarDateChange(date);
|
|
672
|
+
onValueChange(date);
|
|
673
|
+
onTextValueChange(textValueFormatter.format(date.toDate(timeZone)));
|
|
674
|
+
onOpenChange(false);
|
|
675
|
+
}), children: jsx(Typography, { variant: "pi", textColor: textColor, children: formattedDate }) }));
|
|
676
|
+
});
|
|
677
|
+
const Cell = styled(Box) `
|
|
678
|
+
text-align: center;
|
|
679
|
+
padding: ${7 / 16}rem;
|
|
680
|
+
// Trick to prevent the outline from overflowing because of the general outline-offset
|
|
681
|
+
outline-offset: -2px !important;
|
|
682
|
+
|
|
683
|
+
&:hover {
|
|
684
|
+
background: ${({ theme }) => theme.colors.primary100};
|
|
685
|
+
|
|
686
|
+
& > ${Typography} {
|
|
687
|
+
color: ${({ theme }) => theme.colors.primary600};
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
`;
|
|
691
|
+
const DatePickerField = React.forwardRef((props, ref) => {
|
|
692
|
+
const { error, hint, id, required, label, ...restProps } = props;
|
|
693
|
+
const generatedId = useId(id);
|
|
694
|
+
return (jsx(Field, { error: error, hint: hint, required: required, id: generatedId, children: jsxs(Flex, { direction: "column", alignItems: "stretch", gap: 1, children: [jsx(FieldLabel, { children: label }), jsx(DatePickerInput, { ref: ref, id: generatedId, error: error, required: required, ...restProps }), jsx(FieldHint, {}), jsx(FieldError, {})] }) }));
|
|
695
|
+
});
|
|
696
|
+
const warnOnce = once(console.warn);
|
|
697
|
+
const convertUTCDateToCalendarDate = (date) => {
|
|
698
|
+
/**
|
|
699
|
+
* TODO: remove this in V2, it's a deprecated API
|
|
700
|
+
*/
|
|
701
|
+
if (typeof date === 'string') {
|
|
702
|
+
warnOnce("It looks like you're passing a string as representation of a Date to the DatePicker. This is deprecated, look to passing a Date instead.");
|
|
703
|
+
const timestamp = Date.parse(date);
|
|
704
|
+
if (!Number.isNaN(timestamp)) {
|
|
705
|
+
date = new Date(timestamp);
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
date = new Date();
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
const utcDateString = date.toISOString();
|
|
712
|
+
const zonedDateTime = parseAbsolute(utcDateString, 'UTC');
|
|
713
|
+
/**
|
|
714
|
+
* ZonedDateTime can't have weeks added,
|
|
715
|
+
* see – https://github.com/adobe/react-spectrum/issues/3667
|
|
716
|
+
*/
|
|
717
|
+
return toCalendarDate(zonedDateTime);
|
|
718
|
+
};
|
|
719
|
+
const DatePicker = DatePickerField;
|
|
720
|
+
|
|
721
|
+
export { DatePicker, DatePickerInput };
|