@workday/canvas-kit-react 5.3.15 → 5.4.0-next.1
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/action-bar/lib/ActionBar.tsx +43 -30
- package/avatar/lib/Avatar.tsx +4 -0
- package/button/lib/PrimaryButton.tsx +110 -32
- package/button/lib/SecondaryButton.tsx +31 -16
- package/button/lib/TertiaryButton.tsx +45 -35
- package/button/lib/parts/ButtonContainer.tsx +18 -5
- package/button/lib/parts/ButtonLabelIcon.tsx +34 -14
- package/button/lib/types.ts +11 -0
- package/checkbox/lib/Checkbox.tsx +1 -1
- package/common/README.md +78 -0
- package/common/index.ts +1 -0
- package/common/lib/EllipsisText.tsx +11 -0
- package/common/lib/parts/_brand-assets.ts +6 -6
- package/common/lib/styles/accessibleHide.ts +2 -2
- package/common/lib/theming/README.md +189 -25
- package/common/lib/theming/breakpoints.ts +296 -16
- package/common/lib/theming/types.ts +191 -1
- package/common/lib/utils/components.ts +50 -23
- package/common/lib/utils/elements.ts +5 -1
- package/common/lib/utils/index.ts +2 -0
- package/common/lib/utils/mergeProps.ts +4 -0
- package/common/lib/utils/useConstant.ts +18 -0
- package/common/lib/utils/useResizeObserver.ts +29 -0
- package/common/lib/utils/useUniqueId.ts +46 -4
- package/cookie-banner/README.md +15 -10
- package/cookie-banner/index.ts +3 -3
- package/cookie-banner/lib/CookieBanner.tsx +29 -4
- package/dist/commonjs/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/commonjs/action-bar/lib/ActionBar.js +36 -28
- package/dist/commonjs/avatar/lib/Avatar.d.ts.map +1 -1
- package/dist/commonjs/avatar/lib/Avatar.js +3 -0
- package/dist/commonjs/button/lib/PrimaryButton.d.ts +80 -6
- package/dist/commonjs/button/lib/PrimaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/PrimaryButton.js +80 -26
- package/dist/commonjs/button/lib/SecondaryButton.d.ts +8 -5
- package/dist/commonjs/button/lib/SecondaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/SecondaryButton.js +22 -12
- package/dist/commonjs/button/lib/TertiaryButton.d.ts +8 -4
- package/dist/commonjs/button/lib/TertiaryButton.d.ts.map +1 -1
- package/dist/commonjs/button/lib/TertiaryButton.js +24 -19
- package/dist/commonjs/button/lib/parts/ButtonContainer.d.ts +5 -3
- package/dist/commonjs/button/lib/parts/ButtonContainer.d.ts.map +1 -1
- package/dist/commonjs/button/lib/parts/ButtonContainer.js +7 -9
- package/dist/commonjs/button/lib/parts/ButtonLabel.d.ts +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabel.d.ts.map +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +7 -4
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +28 -13
- package/dist/commonjs/button/lib/types.d.ts +9 -0
- package/dist/commonjs/button/lib/types.d.ts.map +1 -1
- package/dist/commonjs/checkbox/lib/Checkbox.d.ts +1 -1
- package/dist/commonjs/common/index.d.ts +1 -0
- package/dist/commonjs/common/index.d.ts.map +1 -1
- package/dist/commonjs/common/index.js +1 -0
- package/dist/commonjs/common/lib/EllipsisText.d.ts +5 -0
- package/dist/commonjs/common/lib/EllipsisText.d.ts.map +1 -0
- package/dist/commonjs/common/lib/EllipsisText.js +13 -0
- package/dist/commonjs/common/lib/parts/_brand-assets.d.ts.map +1 -1
- package/dist/commonjs/common/lib/parts/_brand-assets.js +6 -6
- package/dist/commonjs/common/lib/styles/accessibleHide.d.ts +2 -2
- package/dist/commonjs/common/lib/styles/accessibleHide.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/breakpoints.d.ts +287 -6
- package/dist/commonjs/common/lib/theming/breakpoints.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/breakpoints.js +192 -10
- package/dist/commonjs/common/lib/theming/types.d.ts +191 -1
- package/dist/commonjs/common/lib/theming/types.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/components.d.ts +19 -9
- package/dist/commonjs/common/lib/utils/components.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/components.js +12 -2
- package/dist/commonjs/common/lib/utils/elements.d.ts +2 -2
- package/dist/commonjs/common/lib/utils/elements.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/elements.js +4 -1
- package/dist/commonjs/common/lib/utils/index.d.ts +2 -0
- package/dist/commonjs/common/lib/utils/index.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/index.js +2 -0
- package/dist/commonjs/common/lib/utils/mergeProps.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/mergeProps.js +5 -0
- package/dist/commonjs/common/lib/utils/useConstant.d.ts +9 -0
- package/dist/commonjs/common/lib/utils/useConstant.d.ts.map +1 -0
- package/dist/commonjs/common/lib/utils/useConstant.js +18 -0
- package/dist/commonjs/common/lib/utils/useResizeObserver.d.ts +3 -0
- package/dist/commonjs/common/lib/utils/useResizeObserver.d.ts.map +1 -0
- package/dist/commonjs/common/lib/utils/useResizeObserver.js +42 -0
- package/dist/commonjs/common/lib/utils/useUniqueId.d.ts +28 -0
- package/dist/commonjs/common/lib/utils/useUniqueId.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/useUniqueId.js +42 -14
- package/dist/commonjs/cookie-banner/index.d.ts +3 -3
- package/dist/commonjs/cookie-banner/index.d.ts.map +1 -1
- package/dist/commonjs/cookie-banner/index.js +1 -1
- package/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts +19 -2
- package/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts.map +1 -1
- package/dist/commonjs/cookie-banner/lib/CookieBanner.js +19 -8
- package/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts +4 -16
- package/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts.map +1 -1
- package/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts +5 -2
- package/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/FormField.js +1 -2
- package/dist/commonjs/form-field/lib/Label.d.ts.map +1 -1
- package/dist/commonjs/form-field/lib/Label.js +3 -7
- package/dist/commonjs/modal/lib/ModalOverlay.d.ts +4 -2
- package/dist/commonjs/modal/lib/ModalOverlay.d.ts.map +1 -1
- package/dist/commonjs/modal/lib/hooks/useModalCard.d.ts +4 -16
- package/dist/commonjs/modal/lib/hooks/useModalCard.d.ts.map +1 -1
- package/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts +5 -17
- package/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts.map +1 -1
- package/dist/commonjs/page-header/index.d.ts +3 -3
- package/dist/commonjs/page-header/index.d.ts.map +1 -1
- package/dist/commonjs/page-header/index.js +1 -1
- package/dist/commonjs/page-header/lib/PageHeader.d.ts +19 -2
- package/dist/commonjs/page-header/lib/PageHeader.d.ts.map +1 -1
- package/dist/commonjs/page-header/lib/PageHeader.js +18 -7
- package/dist/commonjs/pagination/lib/Pagination/PageList.d.ts +1 -1
- package/dist/commonjs/pagination/lib/Pagination/PageList.d.ts.map +1 -1
- package/dist/commonjs/pagination/lib/Pagination/Pagination.d.ts +5 -5
- package/dist/commonjs/pagination/lib/Pagination/common/List.d.ts +1 -1
- package/dist/commonjs/pagination/lib/Pagination/common/List.d.ts.map +1 -1
- package/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
- package/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts.map +1 -1
- package/dist/commonjs/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
- package/dist/commonjs/popup/lib/PopupCard.js +2 -3
- package/dist/commonjs/popup/lib/hooks/focus-trap-js.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/focus-trap-js.js +1 -0
- package/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts +5 -2
- package/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts +4 -2
- package/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts +5 -2
- package/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts +4 -2
- package/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts +4 -2
- package/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/hooks/useReturnFocus.d.ts +1 -1
- package/dist/commonjs/popup/lib/hooks/useReturnFocus.js +1 -1
- package/dist/commonjs/radio/lib/Radio.d.ts +1 -1
- package/dist/commonjs/switch/lib/Switch.d.ts +1 -1
- package/dist/commonjs/table/lib/TableRow.d.ts +5 -4
- package/dist/commonjs/table/lib/TableRow.d.ts.map +1 -1
- package/dist/commonjs/table/lib/TableRow.js +12 -26
- package/dist/commonjs/tabs/index.d.ts +5 -0
- package/dist/commonjs/tabs/index.d.ts.map +1 -1
- package/dist/commonjs/tabs/index.js +11 -0
- package/dist/commonjs/tabs/lib/Tabs.d.ts +35 -7
- package/dist/commonjs/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/Tabs.js +28 -7
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +107 -0
- package/dist/commonjs/tabs/lib/TabsItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/TabsItem.js +140 -0
- package/dist/commonjs/tabs/lib/TabsList.d.ts +43 -0
- package/dist/commonjs/tabs/lib/TabsList.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/TabsList.js +53 -0
- package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +21 -0
- package/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/{TabList.js → TabsMenuPopper.js} +7 -19
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +31 -0
- package/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/TabsOverflowButton.js +57 -0
- package/{ts3.5/dist/commonjs/tabs/lib/TabPanel.d.ts → dist/commonjs/tabs/lib/TabsPanel.d.ts} +39 -29
- package/dist/commonjs/tabs/lib/TabsPanel.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/TabsPanel.js +64 -0
- package/dist/{es6/tabs/lib/TabList.d.ts → commonjs/tabs/lib/TabsPanels.d.ts} +5 -5
- package/dist/commonjs/tabs/lib/TabsPanels.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/TabsPanels.js +21 -0
- package/dist/commonjs/tabs/lib/cursor/index.d.ts +1 -1
- package/dist/commonjs/tabs/lib/cursor/index.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/cursor/index.js +1 -1
- package/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts +23 -13
- package/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/cursor/useCursorModel.js +50 -49
- package/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts +37 -0
- package/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/cursor/{hooks.js → useRovingFocus.js} +26 -50
- package/dist/commonjs/tabs/lib/list/index.d.ts +2 -1
- package/dist/commonjs/tabs/lib/list/index.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/list/index.js +2 -1
- package/dist/commonjs/tabs/lib/list/renderItem.d.ts +4 -0
- package/dist/commonjs/tabs/lib/list/renderItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/list/renderItem.js +18 -0
- package/dist/commonjs/tabs/lib/list/useListModel.d.ts +25 -13
- package/dist/commonjs/tabs/lib/list/useListModel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/list/useListModel.js +20 -7
- package/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts +14 -0
- package/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/list/useListRegisterItem.js +46 -0
- package/dist/commonjs/tabs/lib/menu/Menu.d.ts +80 -0
- package/dist/commonjs/tabs/lib/menu/Menu.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/Menu.js +94 -0
- package/dist/commonjs/tabs/lib/menu/MenuCard.d.ts +17 -0
- package/dist/commonjs/tabs/lib/menu/MenuCard.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/MenuCard.js +82 -0
- package/dist/commonjs/tabs/lib/menu/MenuItem.d.ts +62 -0
- package/dist/commonjs/tabs/lib/menu/MenuItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/MenuItem.js +145 -0
- package/dist/commonjs/tabs/lib/menu/MenuList.d.ts +23 -0
- package/dist/commonjs/tabs/lib/menu/MenuList.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/MenuList.js +52 -0
- package/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts +21 -0
- package/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/MenuPopper.js +45 -0
- package/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts +21 -0
- package/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/MenuTarget.js +60 -0
- package/dist/commonjs/tabs/lib/menu/index.d.ts +8 -0
- package/dist/commonjs/tabs/lib/menu/index.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/index.js +18 -0
- package/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts +35 -0
- package/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/menu/useMenuModel.js +33 -0
- package/dist/commonjs/tabs/lib/overflow/index.d.ts +5 -0
- package/dist/commonjs/tabs/lib/overflow/index.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/overflow/index.js +9 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +8 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.js +22 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts +10 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.js +32 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts +69 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowModel.js +126 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts +11 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/overflow/useOverflowTarget.js +35 -0
- package/dist/commonjs/tabs/lib/selection/index.d.ts +4 -0
- package/dist/commonjs/tabs/lib/selection/index.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/selection/index.js +8 -0
- package/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts +13 -0
- package/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/{hooks.js → selection/useResetCursorOnBlur.js} +8 -9
- package/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts +8 -0
- package/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/selection/useSelectionItem.js +16 -0
- package/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts +62 -0
- package/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts.map +1 -0
- package/dist/commonjs/tabs/lib/selection/useSelectionModel.js +80 -0
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts +39 -38
- package/dist/commonjs/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/commonjs/tabs/lib/useTabsModel.js +50 -37
- package/dist/commonjs/tokens/index.d.ts +3 -20
- package/dist/commonjs/tokens/index.d.ts.map +1 -1
- package/dist/commonjs/tokens/index.js +3 -6
- package/dist/commonjs/tokens/lib/depth.d.ts +109 -3
- package/dist/commonjs/tokens/lib/depth.d.ts.map +1 -1
- package/dist/commonjs/tokens/lib/depth.js +40 -5
- package/dist/commonjs/tooltip/lib/useTooltip.d.ts +1 -1
- package/dist/commonjs/tooltip/lib/useTooltip.js +2 -5
- package/dist/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBar.js +34 -23
- package/dist/es6/avatar/lib/Avatar.d.ts.map +1 -1
- package/dist/es6/avatar/lib/Avatar.js +3 -0
- package/dist/es6/button/lib/PrimaryButton.d.ts +80 -6
- package/dist/es6/button/lib/PrimaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/PrimaryButton.js +81 -27
- package/dist/es6/button/lib/SecondaryButton.d.ts +8 -5
- package/dist/es6/button/lib/SecondaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/SecondaryButton.js +22 -12
- package/dist/es6/button/lib/TertiaryButton.d.ts +8 -4
- package/dist/es6/button/lib/TertiaryButton.d.ts.map +1 -1
- package/dist/es6/button/lib/TertiaryButton.js +25 -20
- package/dist/es6/button/lib/parts/ButtonContainer.d.ts +5 -3
- package/dist/es6/button/lib/parts/ButtonContainer.d.ts.map +1 -1
- package/dist/es6/button/lib/parts/ButtonContainer.js +7 -9
- package/dist/es6/button/lib/parts/ButtonLabel.d.ts +1 -1
- package/dist/es6/button/lib/parts/ButtonLabel.d.ts.map +1 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +7 -4
- package/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts.map +1 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.js +28 -13
- package/dist/es6/button/lib/types.d.ts +9 -0
- package/dist/es6/button/lib/types.d.ts.map +1 -1
- package/dist/es6/checkbox/lib/Checkbox.d.ts +1 -1
- package/dist/es6/common/index.d.ts +1 -0
- package/dist/es6/common/index.d.ts.map +1 -1
- package/dist/es6/common/index.js +1 -0
- package/dist/es6/common/lib/EllipsisText.d.ts +5 -0
- package/dist/es6/common/lib/EllipsisText.d.ts.map +1 -0
- package/dist/es6/common/lib/EllipsisText.js +8 -0
- package/dist/es6/common/lib/parts/_brand-assets.d.ts.map +1 -1
- package/dist/es6/common/lib/parts/_brand-assets.js +6 -6
- package/dist/es6/common/lib/styles/accessibleHide.d.ts +2 -2
- package/dist/es6/common/lib/styles/accessibleHide.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/breakpoints.d.ts +287 -6
- package/dist/es6/common/lib/theming/breakpoints.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/breakpoints.js +192 -10
- package/dist/es6/common/lib/theming/types.d.ts +191 -1
- package/dist/es6/common/lib/theming/types.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/components.d.ts +19 -9
- package/dist/es6/common/lib/utils/components.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/components.js +12 -2
- package/dist/es6/common/lib/utils/elements.d.ts +2 -2
- package/dist/es6/common/lib/utils/elements.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/elements.js +4 -1
- package/dist/es6/common/lib/utils/index.d.ts +2 -0
- package/dist/es6/common/lib/utils/index.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/index.js +2 -0
- package/dist/es6/common/lib/utils/mergeProps.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/mergeProps.js +5 -0
- package/dist/es6/common/lib/utils/useConstant.d.ts +9 -0
- package/dist/es6/common/lib/utils/useConstant.d.ts.map +1 -0
- package/dist/es6/common/lib/utils/useConstant.js +15 -0
- package/dist/es6/common/lib/utils/useResizeObserver.d.ts +3 -0
- package/dist/es6/common/lib/utils/useResizeObserver.d.ts.map +1 -0
- package/dist/es6/common/lib/utils/useResizeObserver.js +37 -0
- package/dist/es6/common/lib/utils/useUniqueId.d.ts +28 -0
- package/dist/es6/common/lib/utils/useUniqueId.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/useUniqueId.js +42 -4
- package/dist/es6/cookie-banner/index.d.ts +3 -3
- package/dist/es6/cookie-banner/index.d.ts.map +1 -1
- package/dist/es6/cookie-banner/index.js +3 -3
- package/dist/es6/cookie-banner/lib/CookieBanner.d.ts +19 -2
- package/dist/es6/cookie-banner/lib/CookieBanner.d.ts.map +1 -1
- package/dist/es6/cookie-banner/lib/CookieBanner.js +19 -8
- package/dist/es6/dialog/lib/hooks/useDialogCard.d.ts +4 -16
- package/dist/es6/dialog/lib/hooks/useDialogCard.d.ts.map +1 -1
- package/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts +5 -2
- package/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts.map +1 -1
- package/dist/es6/form-field/lib/FormField.d.ts.map +1 -1
- package/dist/es6/form-field/lib/FormField.js +2 -3
- package/dist/es6/form-field/lib/Label.d.ts.map +1 -1
- package/dist/es6/form-field/lib/Label.js +1 -2
- package/dist/es6/modal/lib/ModalOverlay.d.ts +4 -2
- package/dist/es6/modal/lib/ModalOverlay.d.ts.map +1 -1
- package/dist/es6/modal/lib/hooks/useModalCard.d.ts +4 -16
- package/dist/es6/modal/lib/hooks/useModalCard.d.ts.map +1 -1
- package/dist/es6/modal/lib/hooks/useModalHeading.d.ts +5 -17
- package/dist/es6/modal/lib/hooks/useModalHeading.d.ts.map +1 -1
- package/dist/es6/page-header/index.d.ts +3 -3
- package/dist/es6/page-header/index.d.ts.map +1 -1
- package/dist/es6/page-header/index.js +3 -3
- package/dist/es6/page-header/lib/PageHeader.d.ts +19 -2
- package/dist/es6/page-header/lib/PageHeader.d.ts.map +1 -1
- package/dist/es6/page-header/lib/PageHeader.js +18 -7
- package/dist/es6/pagination/lib/Pagination/PageList.d.ts +1 -1
- package/dist/es6/pagination/lib/Pagination/PageList.d.ts.map +1 -1
- package/dist/es6/pagination/lib/Pagination/Pagination.d.ts +5 -5
- package/dist/es6/pagination/lib/Pagination/common/List.d.ts +1 -1
- package/dist/es6/pagination/lib/Pagination/common/List.d.ts.map +1 -1
- package/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
- package/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts.map +1 -1
- package/dist/es6/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
- package/dist/es6/popup/lib/PopupCard.js +3 -4
- package/dist/es6/popup/lib/hooks/focus-trap-js.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/focus-trap-js.js +1 -0
- package/dist/es6/popup/lib/hooks/usePopupCard.d.ts +5 -2
- package/dist/es6/popup/lib/hooks/usePopupCard.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts +4 -2
- package/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/usePopupHeading.d.ts +5 -2
- package/dist/es6/popup/lib/hooks/usePopupHeading.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/usePopupPopper.d.ts +4 -2
- package/dist/es6/popup/lib/hooks/usePopupPopper.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/usePopupTarget.d.ts +4 -2
- package/dist/es6/popup/lib/hooks/usePopupTarget.d.ts.map +1 -1
- package/dist/es6/popup/lib/hooks/useReturnFocus.d.ts +1 -1
- package/dist/es6/popup/lib/hooks/useReturnFocus.js +1 -1
- package/dist/es6/radio/lib/Radio.d.ts +1 -1
- package/dist/es6/switch/lib/Switch.d.ts +1 -1
- package/dist/es6/table/lib/TableRow.d.ts +5 -4
- package/dist/es6/table/lib/TableRow.d.ts.map +1 -1
- package/dist/es6/table/lib/TableRow.js +12 -26
- package/dist/es6/tabs/index.d.ts +5 -0
- package/dist/es6/tabs/index.d.ts.map +1 -1
- package/dist/es6/tabs/index.js +5 -0
- package/dist/es6/tabs/lib/Tabs.d.ts +35 -7
- package/dist/es6/tabs/lib/Tabs.d.ts.map +1 -1
- package/dist/es6/tabs/lib/Tabs.js +28 -7
- package/dist/es6/tabs/lib/TabsItem.d.ts +107 -0
- package/dist/es6/tabs/lib/TabsItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/TabsItem.js +131 -0
- package/dist/es6/tabs/lib/TabsList.d.ts +43 -0
- package/dist/es6/tabs/lib/TabsList.d.ts.map +1 -0
- package/dist/es6/tabs/lib/TabsList.js +44 -0
- package/dist/es6/tabs/lib/TabsMenuPopper.d.ts +21 -0
- package/dist/es6/tabs/lib/TabsMenuPopper.d.ts.map +1 -0
- package/dist/es6/tabs/lib/{TabList.js → TabsMenuPopper.js} +8 -20
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts +31 -0
- package/dist/es6/tabs/lib/TabsOverflowButton.d.ts.map +1 -0
- package/dist/es6/tabs/lib/TabsOverflowButton.js +48 -0
- package/dist/{commonjs/tabs/lib/TabPanel.d.ts → es6/tabs/lib/TabsPanel.d.ts} +15 -5
- package/dist/es6/tabs/lib/TabsPanel.d.ts.map +1 -0
- package/dist/es6/tabs/lib/TabsPanel.js +59 -0
- package/{ts3.5/dist/commonjs/tabs/lib/TabList.d.ts → dist/es6/tabs/lib/TabsPanels.d.ts} +15 -15
- package/dist/es6/tabs/lib/TabsPanels.d.ts.map +1 -0
- package/dist/es6/tabs/lib/TabsPanels.js +12 -0
- package/dist/es6/tabs/lib/cursor/index.d.ts +1 -1
- package/dist/es6/tabs/lib/cursor/index.d.ts.map +1 -1
- package/dist/es6/tabs/lib/cursor/index.js +1 -1
- package/dist/es6/tabs/lib/cursor/useCursorModel.d.ts +23 -13
- package/dist/es6/tabs/lib/cursor/useCursorModel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/cursor/useCursorModel.js +51 -50
- package/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts +37 -0
- package/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts.map +1 -0
- package/dist/es6/tabs/lib/cursor/useRovingFocus.js +84 -0
- package/dist/es6/tabs/lib/list/index.d.ts +2 -1
- package/dist/es6/tabs/lib/list/index.d.ts.map +1 -1
- package/dist/es6/tabs/lib/list/index.js +2 -1
- package/dist/es6/tabs/lib/list/renderItem.d.ts +4 -0
- package/dist/es6/tabs/lib/list/renderItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/list/renderItem.js +12 -0
- package/dist/es6/tabs/lib/list/useListModel.d.ts +25 -13
- package/dist/es6/tabs/lib/list/useListModel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/list/useListModel.js +21 -8
- package/dist/es6/tabs/lib/list/useListRegisterItem.d.ts +14 -0
- package/dist/es6/tabs/lib/list/useListRegisterItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/list/useListRegisterItem.js +41 -0
- package/dist/es6/tabs/lib/menu/Menu.d.ts +80 -0
- package/dist/es6/tabs/lib/menu/Menu.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/Menu.js +89 -0
- package/dist/es6/tabs/lib/menu/MenuCard.d.ts +17 -0
- package/dist/es6/tabs/lib/menu/MenuCard.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/MenuCard.js +73 -0
- package/dist/es6/tabs/lib/menu/MenuItem.d.ts +62 -0
- package/dist/es6/tabs/lib/menu/MenuItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/MenuItem.js +136 -0
- package/dist/es6/tabs/lib/menu/MenuList.d.ts +23 -0
- package/dist/es6/tabs/lib/menu/MenuList.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/MenuList.js +43 -0
- package/dist/es6/tabs/lib/menu/MenuPopper.d.ts +21 -0
- package/dist/es6/tabs/lib/menu/MenuPopper.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/MenuPopper.js +36 -0
- package/dist/es6/tabs/lib/menu/MenuTarget.d.ts +21 -0
- package/dist/es6/tabs/lib/menu/MenuTarget.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/MenuTarget.js +51 -0
- package/dist/es6/tabs/lib/menu/index.d.ts +8 -0
- package/dist/es6/tabs/lib/menu/index.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/index.js +7 -0
- package/dist/es6/tabs/lib/menu/useMenuModel.d.ts +35 -0
- package/dist/es6/tabs/lib/menu/useMenuModel.d.ts.map +1 -0
- package/dist/es6/tabs/lib/menu/useMenuModel.js +31 -0
- package/dist/es6/tabs/lib/overflow/index.d.ts +5 -0
- package/dist/es6/tabs/lib/overflow/index.d.ts.map +1 -0
- package/dist/es6/tabs/lib/overflow/index.js +4 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +8 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts.map +1 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.js +13 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts +10 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.js +30 -0
- package/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts +69 -0
- package/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts.map +1 -0
- package/dist/es6/tabs/lib/overflow/useOverflowModel.js +120 -0
- package/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts +11 -0
- package/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts.map +1 -0
- package/dist/es6/tabs/lib/overflow/useOverflowTarget.js +30 -0
- package/dist/es6/tabs/lib/selection/index.d.ts +4 -0
- package/dist/es6/tabs/lib/selection/index.d.ts.map +1 -0
- package/dist/es6/tabs/lib/selection/index.js +3 -0
- package/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts +13 -0
- package/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts.map +1 -0
- package/dist/es6/tabs/lib/{hooks.js → selection/useResetCursorOnBlur.js} +8 -9
- package/dist/es6/tabs/lib/selection/useSelectionItem.d.ts +8 -0
- package/dist/es6/tabs/lib/selection/useSelectionItem.d.ts.map +1 -0
- package/dist/es6/tabs/lib/selection/useSelectionItem.js +14 -0
- package/dist/es6/tabs/lib/selection/useSelectionModel.d.ts +62 -0
- package/dist/es6/tabs/lib/selection/useSelectionModel.d.ts.map +1 -0
- package/dist/es6/tabs/lib/selection/useSelectionModel.js +75 -0
- package/dist/es6/tabs/lib/useTabsModel.d.ts +39 -38
- package/dist/es6/tabs/lib/useTabsModel.d.ts.map +1 -1
- package/dist/es6/tabs/lib/useTabsModel.js +50 -37
- package/dist/es6/tokens/index.d.ts +3 -20
- package/dist/es6/tokens/index.d.ts.map +1 -1
- package/dist/es6/tokens/index.js +1 -1
- package/dist/es6/tokens/lib/depth.d.ts +109 -3
- package/dist/es6/tokens/lib/depth.d.ts.map +1 -1
- package/dist/es6/tokens/lib/depth.js +40 -2
- package/dist/es6/tooltip/lib/useTooltip.d.ts +1 -1
- package/dist/es6/tooltip/lib/useTooltip.js +2 -2
- package/form-field/lib/FormField.tsx +8 -3
- package/form-field/lib/Label.tsx +1 -2
- package/package.json +7 -7
- package/page-header/README.md +11 -6
- package/page-header/index.ts +3 -3
- package/page-header/lib/PageHeader.tsx +28 -3
- package/popup/lib/PopupCard.tsx +3 -3
- package/popup/lib/hooks/focus-trap-js.ts +1 -0
- package/popup/lib/hooks/useReturnFocus.tsx +1 -1
- package/radio/lib/Radio.tsx +1 -1
- package/switch/lib/Switch.tsx +1 -1
- package/table/lib/TableRow.tsx +19 -13
- package/tabs/index.ts +6 -0
- package/tabs/lib/Tabs.tsx +34 -9
- package/tabs/lib/TabsItem.tsx +250 -0
- package/tabs/lib/TabsList.tsx +67 -0
- package/tabs/lib/TabsMenuPopper.tsx +27 -0
- package/tabs/lib/TabsOverflowButton.tsx +58 -0
- package/tabs/lib/{TabPanel.tsx → TabsPanel.tsx} +33 -31
- package/tabs/lib/TabsPanels.tsx +28 -0
- package/tabs/lib/cursor/index.ts +1 -1
- package/tabs/lib/cursor/useCursorModel.tsx +78 -65
- package/tabs/lib/cursor/useRovingFocus.tsx +94 -0
- package/tabs/lib/list/index.ts +2 -1
- package/tabs/lib/list/renderItem.tsx +19 -0
- package/tabs/lib/list/useListModel.tsx +48 -23
- package/tabs/lib/list/useListRegisterItem.tsx +53 -0
- package/tabs/lib/menu/Menu.tsx +95 -0
- package/tabs/lib/menu/MenuCard.tsx +96 -0
- package/tabs/lib/menu/MenuItem.tsx +195 -0
- package/tabs/lib/menu/MenuList.tsx +58 -0
- package/tabs/lib/menu/MenuPopper.tsx +31 -0
- package/tabs/lib/menu/MenuTarget.tsx +52 -0
- package/tabs/lib/menu/index.ts +8 -0
- package/tabs/lib/menu/useMenuModel.tsx +67 -0
- package/tabs/lib/overflow/index.ts +4 -0
- package/tabs/lib/overflow/spec/tsconfig.json +3 -0
- package/tabs/lib/overflow/spec/useOverflowModel.spec.tsx +46 -0
- package/tabs/lib/overflow/useOverflowMeasureContainer.ts +20 -0
- package/tabs/lib/overflow/useOverflowMeasureItem.tsx +40 -0
- package/tabs/lib/overflow/useOverflowModel.tsx +207 -0
- package/tabs/lib/overflow/useOverflowTarget.tsx +42 -0
- package/tabs/lib/selection/index.ts +3 -0
- package/tabs/lib/selection/useResetCursorOnBlur.tsx +29 -0
- package/tabs/lib/selection/useSelectionItem.tsx +26 -0
- package/tabs/lib/selection/useSelectionModel.tsx +133 -0
- package/tabs/lib/useTabsModel.tsx +93 -78
- package/tokens/README.md +5 -12
- package/tokens/index.ts +2 -2
- package/tokens/lib/depth.ts +125 -3
- package/tooltip/lib/useTooltip.tsx +2 -2
- package/ts3.5/dist/commonjs/button/lib/PrimaryButton.d.ts +80 -6
- package/ts3.5/dist/commonjs/button/lib/SecondaryButton.d.ts +8 -5
- package/ts3.5/dist/commonjs/button/lib/TertiaryButton.d.ts +8 -4
- package/ts3.5/dist/commonjs/button/lib/parts/ButtonContainer.d.ts +5 -3
- package/ts3.5/dist/commonjs/button/lib/parts/ButtonLabel.d.ts +1 -1
- package/ts3.5/dist/commonjs/button/lib/parts/ButtonLabelIcon.d.ts +7 -4
- package/ts3.5/dist/commonjs/button/lib/types.d.ts +9 -0
- package/ts3.5/dist/commonjs/checkbox/lib/Checkbox.d.ts +1 -1
- package/ts3.5/dist/commonjs/common/index.d.ts +1 -0
- package/ts3.5/dist/commonjs/common/lib/EllipsisText.d.ts +5 -0
- package/ts3.5/dist/commonjs/common/lib/styles/accessibleHide.d.ts +2 -2
- package/ts3.5/dist/commonjs/common/lib/theming/breakpoints.d.ts +287 -6
- package/ts3.5/dist/commonjs/common/lib/theming/types.d.ts +191 -1
- package/ts3.5/dist/commonjs/common/lib/utils/components.d.ts +19 -9
- package/ts3.5/dist/commonjs/common/lib/utils/elements.d.ts +2 -2
- package/ts3.5/dist/commonjs/common/lib/utils/index.d.ts +2 -0
- package/ts3.5/dist/commonjs/common/lib/utils/useConstant.d.ts +9 -0
- package/ts3.5/dist/commonjs/common/lib/utils/useResizeObserver.d.ts +3 -0
- package/ts3.5/dist/commonjs/common/lib/utils/useUniqueId.d.ts +28 -0
- package/ts3.5/dist/commonjs/cookie-banner/index.d.ts +3 -3
- package/ts3.5/dist/commonjs/cookie-banner/lib/CookieBanner.d.ts +19 -2
- package/ts3.5/dist/commonjs/dialog/lib/hooks/useDialogCard.d.ts +4 -16
- package/ts3.5/dist/commonjs/dialog/lib/hooks/useDialogPopper.d.ts +5 -2
- package/ts3.5/dist/commonjs/modal/lib/ModalOverlay.d.ts +4 -2
- package/ts3.5/dist/commonjs/modal/lib/hooks/useModalCard.d.ts +4 -16
- package/ts3.5/dist/commonjs/modal/lib/hooks/useModalHeading.d.ts +5 -17
- package/ts3.5/dist/commonjs/page-header/index.d.ts +3 -3
- package/ts3.5/dist/commonjs/page-header/lib/PageHeader.d.ts +19 -2
- package/ts3.5/dist/commonjs/pagination/lib/Pagination/PageList.d.ts +1 -1
- package/ts3.5/dist/commonjs/pagination/lib/Pagination/Pagination.d.ts +5 -5
- package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/List.d.ts +1 -1
- package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
- package/ts3.5/dist/commonjs/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
- package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupCard.d.ts +5 -2
- package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupCloseButton.d.ts +4 -2
- package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupHeading.d.ts +5 -2
- package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupPopper.d.ts +4 -2
- package/ts3.5/dist/commonjs/popup/lib/hooks/usePopupTarget.d.ts +4 -2
- package/ts3.5/dist/commonjs/popup/lib/hooks/useReturnFocus.d.ts +1 -1
- package/ts3.5/dist/commonjs/radio/lib/Radio.d.ts +1 -1
- package/ts3.5/dist/commonjs/switch/lib/Switch.d.ts +1 -1
- package/ts3.5/dist/commonjs/table/lib/TableRow.d.ts +5 -4
- package/ts3.5/dist/commonjs/tabs/index.d.ts +5 -0
- package/ts3.5/dist/commonjs/tabs/lib/Tabs.d.ts +35 -7
- package/ts3.5/dist/commonjs/tabs/lib/TabsItem.d.ts +107 -0
- package/ts3.5/dist/commonjs/tabs/lib/TabsList.d.ts +43 -0
- package/ts3.5/dist/commonjs/tabs/lib/TabsMenuPopper.d.ts +21 -0
- package/ts3.5/dist/commonjs/tabs/lib/TabsOverflowButton.d.ts +31 -0
- package/{dist/es6/tabs/lib/TabPanel.d.ts → ts3.5/dist/commonjs/tabs/lib/TabsPanel.d.ts} +39 -29
- package/ts3.5/dist/{es6/tabs/lib/TabList.d.ts → commonjs/tabs/lib/TabsPanels.d.ts} +5 -5
- package/ts3.5/dist/commonjs/tabs/lib/cursor/index.d.ts +1 -1
- package/ts3.5/dist/commonjs/tabs/lib/cursor/useCursorModel.d.ts +23 -13
- package/ts3.5/dist/commonjs/tabs/lib/cursor/useRovingFocus.d.ts +37 -0
- package/ts3.5/dist/commonjs/tabs/lib/list/index.d.ts +2 -1
- package/ts3.5/dist/commonjs/tabs/lib/list/renderItem.d.ts +4 -0
- package/ts3.5/dist/commonjs/tabs/lib/list/useListModel.d.ts +25 -13
- package/ts3.5/dist/commonjs/tabs/lib/list/useListRegisterItem.d.ts +14 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/Menu.d.ts +80 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/MenuCard.d.ts +17 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/MenuItem.d.ts +62 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/MenuList.d.ts +23 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/MenuPopper.d.ts +21 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/MenuTarget.d.ts +21 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/index.d.ts +8 -0
- package/ts3.5/dist/commonjs/tabs/lib/menu/useMenuModel.d.ts +35 -0
- package/ts3.5/dist/commonjs/tabs/lib/overflow/index.d.ts +5 -0
- package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +8 -0
- package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowMeasureItem.d.ts +10 -0
- package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowModel.d.ts +69 -0
- package/ts3.5/dist/commonjs/tabs/lib/overflow/useOverflowTarget.d.ts +11 -0
- package/ts3.5/dist/commonjs/tabs/lib/selection/index.d.ts +4 -0
- package/ts3.5/dist/commonjs/tabs/lib/selection/useResetCursorOnBlur.d.ts +13 -0
- package/ts3.5/dist/commonjs/tabs/lib/selection/useSelectionItem.d.ts +8 -0
- package/ts3.5/dist/commonjs/tabs/lib/selection/useSelectionModel.d.ts +62 -0
- package/ts3.5/dist/commonjs/tabs/lib/useTabsModel.d.ts +39 -38
- package/ts3.5/dist/commonjs/tokens/index.d.ts +3 -20
- package/ts3.5/dist/commonjs/tokens/lib/depth.d.ts +109 -3
- package/ts3.5/dist/commonjs/tooltip/lib/useTooltip.d.ts +1 -1
- package/ts3.5/dist/es6/button/lib/PrimaryButton.d.ts +80 -6
- package/ts3.5/dist/es6/button/lib/SecondaryButton.d.ts +8 -5
- package/ts3.5/dist/es6/button/lib/TertiaryButton.d.ts +8 -4
- package/ts3.5/dist/es6/button/lib/parts/ButtonContainer.d.ts +5 -3
- package/ts3.5/dist/es6/button/lib/parts/ButtonLabel.d.ts +1 -1
- package/ts3.5/dist/es6/button/lib/parts/ButtonLabelIcon.d.ts +7 -4
- package/ts3.5/dist/es6/button/lib/types.d.ts +9 -0
- package/ts3.5/dist/es6/checkbox/lib/Checkbox.d.ts +1 -1
- package/ts3.5/dist/es6/common/index.d.ts +1 -0
- package/ts3.5/dist/es6/common/lib/EllipsisText.d.ts +5 -0
- package/ts3.5/dist/es6/common/lib/styles/accessibleHide.d.ts +2 -2
- package/ts3.5/dist/es6/common/lib/theming/breakpoints.d.ts +287 -6
- package/ts3.5/dist/es6/common/lib/theming/types.d.ts +191 -1
- package/ts3.5/dist/es6/common/lib/utils/components.d.ts +19 -9
- package/ts3.5/dist/es6/common/lib/utils/elements.d.ts +2 -2
- package/ts3.5/dist/es6/common/lib/utils/index.d.ts +2 -0
- package/ts3.5/dist/es6/common/lib/utils/useConstant.d.ts +9 -0
- package/ts3.5/dist/es6/common/lib/utils/useResizeObserver.d.ts +3 -0
- package/ts3.5/dist/es6/common/lib/utils/useUniqueId.d.ts +28 -0
- package/ts3.5/dist/es6/cookie-banner/index.d.ts +3 -3
- package/ts3.5/dist/es6/cookie-banner/lib/CookieBanner.d.ts +19 -2
- package/ts3.5/dist/es6/dialog/lib/hooks/useDialogCard.d.ts +4 -16
- package/ts3.5/dist/es6/dialog/lib/hooks/useDialogPopper.d.ts +5 -2
- package/ts3.5/dist/es6/modal/lib/ModalOverlay.d.ts +4 -2
- package/ts3.5/dist/es6/modal/lib/hooks/useModalCard.d.ts +4 -16
- package/ts3.5/dist/es6/modal/lib/hooks/useModalHeading.d.ts +5 -17
- package/ts3.5/dist/es6/page-header/index.d.ts +3 -3
- package/ts3.5/dist/es6/page-header/lib/PageHeader.d.ts +19 -2
- package/ts3.5/dist/es6/pagination/lib/Pagination/PageList.d.ts +1 -1
- package/ts3.5/dist/es6/pagination/lib/Pagination/Pagination.d.ts +5 -5
- package/ts3.5/dist/es6/pagination/lib/Pagination/common/List.d.ts +1 -1
- package/ts3.5/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.d.ts +1 -1
- package/ts3.5/dist/es6/pagination/lib/Pagination/common/utils/space.d.ts +28 -28
- package/ts3.5/dist/es6/popup/lib/hooks/usePopupCard.d.ts +5 -2
- package/ts3.5/dist/es6/popup/lib/hooks/usePopupCloseButton.d.ts +4 -2
- package/ts3.5/dist/es6/popup/lib/hooks/usePopupHeading.d.ts +5 -2
- package/ts3.5/dist/es6/popup/lib/hooks/usePopupPopper.d.ts +4 -2
- package/ts3.5/dist/es6/popup/lib/hooks/usePopupTarget.d.ts +4 -2
- package/ts3.5/dist/es6/popup/lib/hooks/useReturnFocus.d.ts +1 -1
- package/ts3.5/dist/es6/radio/lib/Radio.d.ts +1 -1
- package/ts3.5/dist/es6/switch/lib/Switch.d.ts +1 -1
- package/ts3.5/dist/es6/table/lib/TableRow.d.ts +5 -4
- package/ts3.5/dist/es6/tabs/index.d.ts +5 -0
- package/ts3.5/dist/es6/tabs/lib/Tabs.d.ts +35 -7
- package/ts3.5/dist/es6/tabs/lib/TabsItem.d.ts +107 -0
- package/ts3.5/dist/es6/tabs/lib/TabsList.d.ts +43 -0
- package/ts3.5/dist/es6/tabs/lib/TabsMenuPopper.d.ts +21 -0
- package/ts3.5/dist/es6/tabs/lib/TabsOverflowButton.d.ts +31 -0
- package/ts3.5/dist/es6/tabs/lib/{TabPanel.d.ts → TabsPanel.d.ts} +15 -5
- package/{dist/commonjs/tabs/lib/TabList.d.ts → ts3.5/dist/es6/tabs/lib/TabsPanels.d.ts} +15 -15
- package/ts3.5/dist/es6/tabs/lib/cursor/index.d.ts +1 -1
- package/ts3.5/dist/es6/tabs/lib/cursor/useCursorModel.d.ts +23 -13
- package/ts3.5/dist/es6/tabs/lib/cursor/useRovingFocus.d.ts +37 -0
- package/ts3.5/dist/es6/tabs/lib/list/index.d.ts +2 -1
- package/ts3.5/dist/es6/tabs/lib/list/renderItem.d.ts +4 -0
- package/ts3.5/dist/es6/tabs/lib/list/useListModel.d.ts +25 -13
- package/ts3.5/dist/es6/tabs/lib/list/useListRegisterItem.d.ts +14 -0
- package/ts3.5/dist/es6/tabs/lib/menu/Menu.d.ts +80 -0
- package/ts3.5/dist/es6/tabs/lib/menu/MenuCard.d.ts +17 -0
- package/ts3.5/dist/es6/tabs/lib/menu/MenuItem.d.ts +62 -0
- package/ts3.5/dist/es6/tabs/lib/menu/MenuList.d.ts +23 -0
- package/ts3.5/dist/es6/tabs/lib/menu/MenuPopper.d.ts +21 -0
- package/ts3.5/dist/es6/tabs/lib/menu/MenuTarget.d.ts +21 -0
- package/ts3.5/dist/es6/tabs/lib/menu/index.d.ts +8 -0
- package/ts3.5/dist/es6/tabs/lib/menu/useMenuModel.d.ts +35 -0
- package/ts3.5/dist/es6/tabs/lib/overflow/index.d.ts +5 -0
- package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowMeasureContainer.d.ts +8 -0
- package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowMeasureItem.d.ts +10 -0
- package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowModel.d.ts +69 -0
- package/ts3.5/dist/es6/tabs/lib/overflow/useOverflowTarget.d.ts +11 -0
- package/ts3.5/dist/es6/tabs/lib/selection/index.d.ts +4 -0
- package/ts3.5/dist/es6/tabs/lib/selection/useResetCursorOnBlur.d.ts +13 -0
- package/ts3.5/dist/es6/tabs/lib/selection/useSelectionItem.d.ts +8 -0
- package/ts3.5/dist/es6/tabs/lib/selection/useSelectionModel.d.ts +62 -0
- package/ts3.5/dist/es6/tabs/lib/useTabsModel.d.ts +39 -38
- package/ts3.5/dist/es6/tokens/index.d.ts +3 -20
- package/ts3.5/dist/es6/tokens/lib/depth.d.ts +109 -3
- package/ts3.5/dist/es6/tooltip/lib/useTooltip.d.ts +1 -1
- package/dist/commonjs/tabs/lib/Tab.d.ts +0 -49
- package/dist/commonjs/tabs/lib/Tab.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/Tab.js +0 -95
- package/dist/commonjs/tabs/lib/TabList.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/TabPanel.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/TabPanel.js +0 -56
- package/dist/commonjs/tabs/lib/cursor/hooks.d.ts +0 -39
- package/dist/commonjs/tabs/lib/cursor/hooks.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/hooks.d.ts +0 -10
- package/dist/commonjs/tabs/lib/hooks.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/list/hooks.d.ts +0 -11
- package/dist/commonjs/tabs/lib/list/hooks.d.ts.map +0 -1
- package/dist/commonjs/tabs/lib/list/hooks.js +0 -39
- package/dist/es6/tabs/lib/Tab.d.ts +0 -49
- package/dist/es6/tabs/lib/Tab.d.ts.map +0 -1
- package/dist/es6/tabs/lib/Tab.js +0 -86
- package/dist/es6/tabs/lib/TabList.d.ts.map +0 -1
- package/dist/es6/tabs/lib/TabPanel.d.ts.map +0 -1
- package/dist/es6/tabs/lib/TabPanel.js +0 -51
- package/dist/es6/tabs/lib/cursor/hooks.d.ts +0 -39
- package/dist/es6/tabs/lib/cursor/hooks.d.ts.map +0 -1
- package/dist/es6/tabs/lib/cursor/hooks.js +0 -108
- package/dist/es6/tabs/lib/hooks.d.ts +0 -10
- package/dist/es6/tabs/lib/hooks.d.ts.map +0 -1
- package/dist/es6/tabs/lib/list/hooks.d.ts +0 -11
- package/dist/es6/tabs/lib/list/hooks.d.ts.map +0 -1
- package/dist/es6/tabs/lib/list/hooks.js +0 -34
- package/tabs/lib/Tab.tsx +0 -170
- package/tabs/lib/TabList.tsx +0 -59
- package/tabs/lib/cursor/hooks.tsx +0 -122
- package/tabs/lib/hooks.tsx +0 -31
- package/tabs/lib/list/hooks.tsx +0 -45
- package/ts3.5/dist/commonjs/tabs/lib/Tab.d.ts +0 -49
- package/ts3.5/dist/commonjs/tabs/lib/cursor/hooks.d.ts +0 -39
- package/ts3.5/dist/commonjs/tabs/lib/hooks.d.ts +0 -10
- package/ts3.5/dist/commonjs/tabs/lib/list/hooks.d.ts +0 -11
- package/ts3.5/dist/es6/tabs/lib/Tab.d.ts +0 -49
- package/ts3.5/dist/es6/tabs/lib/cursor/hooks.d.ts +0 -39
- package/ts3.5/dist/es6/tabs/lib/hooks.d.ts +0 -10
- package/ts3.5/dist/es6/tabs/lib/list/hooks.d.ts +0 -11
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
createEventMap,
|
|
4
|
-
Model,
|
|
5
|
-
ToModelConfig,
|
|
6
|
-
useEventMap,
|
|
7
|
-
assert,
|
|
8
|
-
} from '@workday/canvas-kit-react/common';
|
|
2
|
+
import {createEventMap, ToModelConfig, useEventMap, assert} from '@workday/canvas-kit-react/common';
|
|
9
3
|
|
|
10
4
|
import {
|
|
11
5
|
ListState,
|
|
@@ -13,13 +7,13 @@ import {
|
|
|
13
7
|
BaseListModelConfig,
|
|
14
8
|
listEventMap,
|
|
15
9
|
useListModel,
|
|
16
|
-
Item,
|
|
17
10
|
ListModelConfig,
|
|
11
|
+
ListModel,
|
|
18
12
|
} from '../list/useListModel';
|
|
19
13
|
|
|
20
14
|
export type Orientation = 'horizontal' | 'vertical';
|
|
21
15
|
|
|
22
|
-
export type CursorState = ListState & {
|
|
16
|
+
export type CursorState<T = unknown> = ListState<T> & {
|
|
23
17
|
/** Orientation of the list. This property determines what "next" and "previous" mean. This should
|
|
24
18
|
* be set to match the layout of UI components */
|
|
25
19
|
orientation: Orientation;
|
|
@@ -27,7 +21,7 @@ export type CursorState = ListState & {
|
|
|
27
21
|
cursorId: string;
|
|
28
22
|
};
|
|
29
23
|
|
|
30
|
-
export type CursorEvents = ListEvents & {
|
|
24
|
+
export type CursorEvents<T = unknown> = ListEvents<T> & {
|
|
31
25
|
/** Directly sets the cursor to the list item by its identifier. */
|
|
32
26
|
goTo(data: {id: string}): void;
|
|
33
27
|
/** Set the cursor to the "next" item in the list. If the end of the list is detected, it will
|
|
@@ -42,7 +36,10 @@ export type CursorEvents = ListEvents & {
|
|
|
42
36
|
last(): void;
|
|
43
37
|
};
|
|
44
38
|
|
|
45
|
-
export
|
|
39
|
+
export interface CursorModel<T = unknown> extends ListModel<T> {
|
|
40
|
+
state: CursorState<T>;
|
|
41
|
+
events: CursorEvents<T>;
|
|
42
|
+
}
|
|
46
43
|
|
|
47
44
|
export const cursorEventMap = createEventMap<CursorEvents>()({
|
|
48
45
|
guards: {
|
|
@@ -61,98 +58,114 @@ export const cursorEventMap = createEventMap<CursorEvents>()({
|
|
|
61
58
|
},
|
|
62
59
|
});
|
|
63
60
|
|
|
64
|
-
export type BaseCursorModelConfig = BaseListModelConfig & {
|
|
61
|
+
export type BaseCursorModelConfig<T> = BaseListModelConfig<T> & {
|
|
65
62
|
/**
|
|
66
63
|
* The orientation of a list of items. Values are either `vertical` or `horizontal`. This value will
|
|
67
|
-
* effect which
|
|
64
|
+
* effect which ids activate progression through a list. For example, `horizontal` will activate with
|
|
68
65
|
* left and right arrows while `vertical` will activate with up and down arrows.
|
|
69
66
|
* @default 'vertical'
|
|
70
67
|
*/
|
|
71
68
|
orientation?: Orientation;
|
|
69
|
+
/**
|
|
70
|
+
* Initial cursor position. If not provided, the cursor will point to the first item in the list
|
|
71
|
+
*/
|
|
72
|
+
initialCursorId?: string;
|
|
72
73
|
};
|
|
73
74
|
|
|
74
|
-
export type CursorModelConfig = BaseCursorModelConfig &
|
|
75
|
-
Partial<ToModelConfig<CursorState
|
|
75
|
+
export type CursorModelConfig<T> = BaseCursorModelConfig<T> &
|
|
76
|
+
Partial<ToModelConfig<CursorState<T>, CursorEvents<T>, typeof cursorEventMap>>;
|
|
77
|
+
|
|
78
|
+
export const useCursorNavigation = <T extends unknown>(
|
|
79
|
+
state: CursorState<T>,
|
|
80
|
+
getId: ListModel<T>['getId']
|
|
81
|
+
) => {
|
|
82
|
+
// refs for performance so that new functions aren't created every render
|
|
83
|
+
const getIdRef = React.useRef(getId);
|
|
84
|
+
const itemsRef = React.useRef(state.items);
|
|
85
|
+
const nonInteractiveIdsRef = React.useRef(state.nonInteractiveIds);
|
|
86
|
+
|
|
87
|
+
itemsRef.current = state.items;
|
|
88
|
+
nonInteractiveIdsRef.current = state.nonInteractiveIds;
|
|
89
|
+
|
|
90
|
+
// return a memoized function to prevent recreation of functions every render
|
|
91
|
+
return React.useMemo(() => {
|
|
92
|
+
const getFirst = () => itemsRef.current[0];
|
|
93
|
+
const getLast = () => itemsRef.current[itemsRef.current.length - 1];
|
|
94
|
+
|
|
95
|
+
const getItem = (id: string): T => {
|
|
96
|
+
const item = id ? itemsRef.current.find(item => getIdRef.current(item) === id) : getFirst(); // no id, return first item
|
|
97
|
+
assert(item, `Item not found: ${id}`);
|
|
98
|
+
return item;
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const getOffsetItem = (offset: number) => (id: string, tries = itemsRef.current.length): T => {
|
|
102
|
+
const items = itemsRef.current;
|
|
103
|
+
const item = getItem(id);
|
|
104
|
+
|
|
105
|
+
const getId = getIdRef.current;
|
|
106
|
+
const currentIndex = items.findIndex(i => getId(item) === getId(i));
|
|
107
|
+
let nextIndex = currentIndex + offset;
|
|
108
|
+
if (nextIndex < 0) {
|
|
109
|
+
nextIndex = items.length - 1;
|
|
110
|
+
} else if (nextIndex >= items.length) {
|
|
111
|
+
nextIndex = 0;
|
|
112
|
+
}
|
|
76
113
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
114
|
+
if (nonInteractiveIdsRef.current.includes(getId(items[nextIndex])) && tries > 0) {
|
|
115
|
+
// The next item is disabled, try again, but only if we haven't already tried everything.
|
|
116
|
+
// Avoid an infinite loop with `tries`
|
|
117
|
+
return getOffsetItem(offset)(getId(items[nextIndex]), tries - 1);
|
|
118
|
+
}
|
|
80
119
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
120
|
+
return items[nextIndex];
|
|
121
|
+
};
|
|
84
122
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
assert(item, `Item not found: ${id}`);
|
|
88
|
-
return item;
|
|
89
|
-
};
|
|
123
|
+
const getNext = getOffsetItem(1);
|
|
124
|
+
const getPrevious = getOffsetItem(-1);
|
|
90
125
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const currentIndex = items.findIndex(({id}) => item.id === id);
|
|
94
|
-
let nextIndex = currentIndex + offset;
|
|
95
|
-
if (nextIndex < 0) {
|
|
96
|
-
nextIndex = items.length - 1;
|
|
97
|
-
} else if (nextIndex >= items.length) {
|
|
98
|
-
nextIndex = 0;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const disabledAttribute = items[nextIndex].ref.current?.getAttribute('disabled');
|
|
102
|
-
if (disabledAttribute !== null || disabledAttribute === 'false') {
|
|
103
|
-
// The next item is disabled, try again
|
|
104
|
-
return getOffsetItem(offset)(items[nextIndex].id, items);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return items[nextIndex];
|
|
126
|
+
return {getFirst, getLast, getItem, getNext, getPrevious};
|
|
127
|
+
}, []);
|
|
108
128
|
};
|
|
109
129
|
|
|
110
|
-
export const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
export const getPrevious = getOffsetItem(-1);
|
|
114
|
-
|
|
115
|
-
export const useCursorModel = (config: CursorModelConfig = {}): CursorModel => {
|
|
130
|
+
export const useCursorModel = <T extends unknown>(
|
|
131
|
+
config: CursorModelConfig<T> = {}
|
|
132
|
+
): CursorModel<T> => {
|
|
116
133
|
const [orientation] = React.useState(config.orientation || 'vertical');
|
|
117
134
|
const [cursorId, setCursorId] = React.useState('');
|
|
118
|
-
const
|
|
119
|
-
const
|
|
135
|
+
const list = useListModel(config as ListModelConfig<T>);
|
|
136
|
+
const initialCurrentRef = React.useRef(
|
|
137
|
+
config.initialCursorId || config.items?.length ? list.getId(config.items![0]) : ''
|
|
138
|
+
);
|
|
120
139
|
|
|
121
140
|
const state = {...list.state, orientation, cursorId};
|
|
141
|
+
const navigation = useCursorNavigation(state, list.getId);
|
|
122
142
|
|
|
123
143
|
const events = useEventMap(cursorEventMap, state, config, {
|
|
124
144
|
...list.events,
|
|
125
145
|
registerItem(data) {
|
|
126
146
|
// point the cursor at the first item
|
|
127
147
|
if (!initialCurrentRef.current) {
|
|
128
|
-
initialCurrentRef.current = data.item
|
|
148
|
+
initialCurrentRef.current = list.getId(data.item);
|
|
129
149
|
setCursorId(initialCurrentRef.current);
|
|
130
150
|
}
|
|
131
151
|
list.events.registerItem(data);
|
|
132
152
|
},
|
|
133
|
-
unregisterItem(data) {
|
|
134
|
-
// move the cursor forward if the the cursor is pointing to an item that is being removed
|
|
135
|
-
if (state.cursorId === data.id && state.items.some(i => i.ref.current !== null)) {
|
|
136
|
-
events.next();
|
|
137
|
-
}
|
|
138
|
-
list.events.unregisterItem(data);
|
|
139
|
-
},
|
|
140
153
|
goTo({id}) {
|
|
141
154
|
setCursorId(id);
|
|
142
155
|
},
|
|
143
156
|
next() {
|
|
144
|
-
setCursorId(getNext(state.cursorId
|
|
157
|
+
setCursorId(list.getId(navigation.getNext(state.cursorId)));
|
|
145
158
|
},
|
|
146
159
|
previous() {
|
|
147
|
-
setCursorId(getPrevious(state.cursorId
|
|
160
|
+
setCursorId(list.getId(navigation.getPrevious(state.cursorId)));
|
|
148
161
|
},
|
|
149
162
|
first() {
|
|
150
|
-
setCursorId(getFirst(
|
|
163
|
+
setCursorId(list.getId(navigation.getFirst()));
|
|
151
164
|
},
|
|
152
165
|
last() {
|
|
153
|
-
setCursorId(getLast(
|
|
166
|
+
setCursorId(list.getId(navigation.getLast()));
|
|
154
167
|
},
|
|
155
|
-
});
|
|
168
|
+
} as CursorEvents<T>);
|
|
156
169
|
|
|
157
|
-
return {state, events};
|
|
170
|
+
return {state, events, getId: list.getId};
|
|
158
171
|
};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {useIsRTL, createHook} from '@workday/canvas-kit-react/common';
|
|
3
|
+
|
|
4
|
+
import {CursorModel, useCursorNavigation} from './useCursorModel';
|
|
5
|
+
|
|
6
|
+
export const orientationKeyMap = {
|
|
7
|
+
horizontal: {
|
|
8
|
+
ArrowLeft: 'previous',
|
|
9
|
+
Left: 'previous',
|
|
10
|
+
ArrowRight: 'next',
|
|
11
|
+
Right: 'next',
|
|
12
|
+
Home: 'first',
|
|
13
|
+
End: 'last',
|
|
14
|
+
},
|
|
15
|
+
vertical: {
|
|
16
|
+
ArrowUp: 'previous',
|
|
17
|
+
Up: 'previous',
|
|
18
|
+
ArrowDown: 'next',
|
|
19
|
+
Down: 'next',
|
|
20
|
+
Home: 'first',
|
|
21
|
+
End: 'last',
|
|
22
|
+
},
|
|
23
|
+
} as const;
|
|
24
|
+
|
|
25
|
+
const rightToLeftMap = {
|
|
26
|
+
ArrowLeft: 'ArrowRight',
|
|
27
|
+
Left: 'Right',
|
|
28
|
+
ArrowRight: 'ArrowLeft',
|
|
29
|
+
Right: 'Left',
|
|
30
|
+
Home: 'End',
|
|
31
|
+
End: 'Home',
|
|
32
|
+
} as const;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Handles the roving focus behavior of a Cursor model. It should be added to the element
|
|
36
|
+
* representing a list item.
|
|
37
|
+
*
|
|
38
|
+
* @see https://www.w3.org/TR/wai-aria-practices/#kbd_roving_tabindex
|
|
39
|
+
*/
|
|
40
|
+
export const useRovingFocus = createHook(
|
|
41
|
+
({state, events, getId}: CursorModel, ref, elemProps: {name?: string} = {}) => {
|
|
42
|
+
// Tracks when this element has focus. If this item is removed while still focused, we have to
|
|
43
|
+
// inform the model to move the cursor to the next item.
|
|
44
|
+
const focusRef = React.useRef(false);
|
|
45
|
+
const getIdRef = React.useRef(getId);
|
|
46
|
+
|
|
47
|
+
// Create a ref out of state. We don't want to watch state on unmount, so we use a ref to get the
|
|
48
|
+
// current value at the time of unmounting. Otherwise, `state.items` would be a cached value of an
|
|
49
|
+
// empty array
|
|
50
|
+
const stateRef = React.useRef(state);
|
|
51
|
+
stateRef.current = state;
|
|
52
|
+
|
|
53
|
+
const keyDownRef = React.useRef(false);
|
|
54
|
+
const isRTL = useIsRTL();
|
|
55
|
+
|
|
56
|
+
const navigation = useCursorNavigation(state, getId);
|
|
57
|
+
|
|
58
|
+
React.useEffect(() => {
|
|
59
|
+
if (keyDownRef.current) {
|
|
60
|
+
const item = navigation.getItem(state.cursorId);
|
|
61
|
+
document.querySelector<HTMLElement>(`#${state.id}-${getIdRef.current(item)}`)?.focus();
|
|
62
|
+
|
|
63
|
+
keyDownRef.current = false;
|
|
64
|
+
}
|
|
65
|
+
}, [state.cursorId, state.id, navigation]);
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
onKeyDown(event: React.KeyboardEvent) {
|
|
69
|
+
(Object.keys(
|
|
70
|
+
orientationKeyMap[state.orientation]
|
|
71
|
+
) as (keyof typeof orientationKeyMap[typeof state.orientation])[]).forEach(key => {
|
|
72
|
+
if (isRTL ? event.key === rightToLeftMap[key] : event.key === key) {
|
|
73
|
+
const event = orientationKeyMap[state.orientation][key];
|
|
74
|
+
keyDownRef.current = true;
|
|
75
|
+
events[event]?.();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
},
|
|
79
|
+
onFocus() {
|
|
80
|
+
focusRef.current = true;
|
|
81
|
+
},
|
|
82
|
+
onBlur() {
|
|
83
|
+
focusRef.current = false;
|
|
84
|
+
},
|
|
85
|
+
id: `${state.id}-${elemProps.name}`,
|
|
86
|
+
tabIndex: !state.cursorId
|
|
87
|
+
? 0 // cursor isn't known yet, be safe and mark this as focusable
|
|
88
|
+
: !!elemProps.name && state.cursorId === elemProps.name
|
|
89
|
+
? 0 // A name is known and cursor is here
|
|
90
|
+
: -1, // A name is known an cursor is somewhere else
|
|
91
|
+
ref,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
);
|
package/tabs/lib/list/index.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {ListModel} from './useListModel';
|
|
4
|
+
|
|
5
|
+
export function useRenderItems<T>(
|
|
6
|
+
model: ListModel<T>,
|
|
7
|
+
children: ((item: T) => React.ReactNode) | React.ReactNode
|
|
8
|
+
) {
|
|
9
|
+
const items = React.useMemo(() => {
|
|
10
|
+
return typeof children === 'function'
|
|
11
|
+
? model.state.items.map(item => React.cloneElement(children(item), {key: model.getId(item)}))
|
|
12
|
+
: null;
|
|
13
|
+
// If we added `children` as a dependency, this memo would be useless. If the user wants the
|
|
14
|
+
// item to rerender, the item and items array needs to be updated.
|
|
15
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16
|
+
}, [model.state.items]);
|
|
17
|
+
|
|
18
|
+
return items || children;
|
|
19
|
+
}
|
|
@@ -5,34 +5,42 @@ import {
|
|
|
5
5
|
ToModelConfig,
|
|
6
6
|
useEventMap,
|
|
7
7
|
useUniqueId,
|
|
8
|
+
assert,
|
|
8
9
|
} from '@workday/canvas-kit-react/common';
|
|
9
10
|
|
|
10
|
-
export type
|
|
11
|
-
/** IDREF of the list. Children ids can be derived from this id */
|
|
12
|
-
id: string;
|
|
13
|
-
ref: React.RefObject<HTMLElement>;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type ListState = {
|
|
11
|
+
export type ListState<T = unknown> = {
|
|
17
12
|
/** IDREF of the list. Children ids can be derived from this id */
|
|
18
13
|
id: string;
|
|
19
14
|
/** Used as an auto-incrementing ID for accessibility */
|
|
20
15
|
indexRef: React.RefObject<number>;
|
|
21
|
-
items:
|
|
16
|
+
items: T[];
|
|
17
|
+
/**
|
|
18
|
+
* An array of ids of non-interactive elements. Non-interactive elements usually have `disabled`
|
|
19
|
+
* applied to them and thus are not focusable by the browser. Lists need to know about these so
|
|
20
|
+
* that keyboard navigation properly skips over these items. Interactive elements that are
|
|
21
|
+
* disabled should use `[aria-disabled]` instead and should still receive focus.
|
|
22
|
+
* @see https://www.w3.org/TR/wai-aria-practices-1.1/#kbd_disabled_controls
|
|
23
|
+
*/
|
|
24
|
+
nonInteractiveIds: string[];
|
|
22
25
|
};
|
|
23
26
|
|
|
24
|
-
export type ListEvents = {
|
|
27
|
+
export type ListEvents<T = unknown> = {
|
|
25
28
|
/** Register an item to the list. Takes in an identifier, a React.Ref and an optional index. This should be called on
|
|
26
29
|
* component mount */
|
|
27
|
-
registerItem(data: {item:
|
|
30
|
+
registerItem(data: {item: T; index?: number}): void;
|
|
28
31
|
/** Unregister an item by its identifier. This should be called when the component is unmounted */
|
|
29
32
|
unregisterItem(data: {id: string}): void;
|
|
30
33
|
/** Updates the position of a tab within the list. This should be called when a tab's index is updated */
|
|
31
34
|
updateItemPosition(data: {id: string; index: number}): void;
|
|
32
35
|
};
|
|
33
36
|
|
|
34
|
-
export
|
|
37
|
+
export interface ListModel<T = unknown> extends Model<ListState<T>, ListEvents<T>> {
|
|
38
|
+
getId: (item: T) => string;
|
|
39
|
+
}
|
|
35
40
|
|
|
41
|
+
// We don't have a way of knowing what the generic could be, so we leave it as `unknown`. It will
|
|
42
|
+
// probably need to be cast to the generic in use inside extending models. This will not effect the
|
|
43
|
+
// use of the model in an application, only in models composing this model.
|
|
36
44
|
export const listEventMap = createEventMap<ListEvents>()({
|
|
37
45
|
guards: {
|
|
38
46
|
/**
|
|
@@ -76,20 +84,37 @@ export const listEventMap = createEventMap<ListEvents>()({
|
|
|
76
84
|
},
|
|
77
85
|
});
|
|
78
86
|
|
|
79
|
-
export type BaseListModelConfig = {
|
|
87
|
+
export type BaseListModelConfig<T = unknown> = {
|
|
80
88
|
/** IDREF of the list. Children ids can be derived from this id */
|
|
81
89
|
id?: string;
|
|
90
|
+
items?: T[];
|
|
91
|
+
getId?: (item: T) => string;
|
|
92
|
+
/**
|
|
93
|
+
* Array of all ids which are currently disabled
|
|
94
|
+
*/
|
|
95
|
+
nonInteractiveIds?: string[];
|
|
82
96
|
};
|
|
83
97
|
|
|
84
|
-
export type ListModelConfig = BaseListModelConfig &
|
|
85
|
-
Partial<ToModelConfig<ListState
|
|
98
|
+
export type ListModelConfig<T> = BaseListModelConfig<T> &
|
|
99
|
+
Partial<ToModelConfig<ListState<T>, ListEvents<T>, typeof listEventMap>>;
|
|
100
|
+
|
|
101
|
+
export const defaultGetId = (item: any): string => {
|
|
102
|
+
assert(item.id, 'A list item must have an `id` field or a `getId` function defined');
|
|
103
|
+
return item.id;
|
|
104
|
+
};
|
|
86
105
|
|
|
87
|
-
export const useListModel = (config: ListModelConfig = {}): ListModel => {
|
|
106
|
+
export const useListModel = <T extends unknown>(config: ListModelConfig<T> = {}): ListModel<T> => {
|
|
88
107
|
const id = useUniqueId(config.id);
|
|
89
108
|
const indexRef = React.useRef(0);
|
|
90
|
-
const [items, setItems] = React.useState(
|
|
109
|
+
const [items, setItems] = React.useState(config.items || []);
|
|
110
|
+
const getId = config.getId || defaultGetId;
|
|
91
111
|
|
|
92
|
-
const state = {
|
|
112
|
+
const state = {
|
|
113
|
+
id,
|
|
114
|
+
items: config.items || items,
|
|
115
|
+
indexRef,
|
|
116
|
+
nonInteractiveIds: config.nonInteractiveIds || [],
|
|
117
|
+
};
|
|
93
118
|
|
|
94
119
|
const events = useEventMap(listEventMap, state, config, {
|
|
95
120
|
registerItem({item, index}) {
|
|
@@ -105,8 +130,8 @@ export const useListModel = (config: ListModelConfig = {}): ListModel => {
|
|
|
105
130
|
},
|
|
106
131
|
unregisterItem({id}) {
|
|
107
132
|
setItems(items => {
|
|
108
|
-
if (items.find(item => item
|
|
109
|
-
return items.filter(item => item
|
|
133
|
+
if (items.find(item => getId(item) === id)) {
|
|
134
|
+
return items.filter(item => getId(item) !== id);
|
|
110
135
|
} else {
|
|
111
136
|
return items;
|
|
112
137
|
}
|
|
@@ -114,12 +139,12 @@ export const useListModel = (config: ListModelConfig = {}): ListModel => {
|
|
|
114
139
|
},
|
|
115
140
|
updateItemPosition({id, index}) {
|
|
116
141
|
setItems(items => {
|
|
117
|
-
const copy = items.filter(item => item
|
|
118
|
-
copy.splice(index, 0, items.find(item => item
|
|
142
|
+
const copy = items.filter(item => getId(item) !== id);
|
|
143
|
+
copy.splice(index, 0, items.find(item => getId(item) === id)!);
|
|
119
144
|
return copy;
|
|
120
145
|
});
|
|
121
146
|
},
|
|
122
|
-
});
|
|
147
|
+
} as ListEvents<T>);
|
|
123
148
|
|
|
124
|
-
return {state, events};
|
|
149
|
+
return {state, events, getId};
|
|
125
150
|
};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {useMountLayout, createHook} from '@workday/canvas-kit-react/common';
|
|
4
|
+
|
|
5
|
+
import {ListModel} from './useListModel';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Registers an item with a list. It will return elemProps with a `name` which can be used by other
|
|
9
|
+
* hooks to identify the item in the list.
|
|
10
|
+
*/
|
|
11
|
+
export const useListRegisterItem = createHook(
|
|
12
|
+
(
|
|
13
|
+
{state, events, getId}: ListModel,
|
|
14
|
+
_?: React.Ref<HTMLElement>,
|
|
15
|
+
elemProps: {name?: string; index?: number; disabled?: boolean} = {}
|
|
16
|
+
) => {
|
|
17
|
+
const [localId, setLocalId] = React.useState(elemProps.name || '');
|
|
18
|
+
const firstRender = React.useRef(true);
|
|
19
|
+
|
|
20
|
+
React.useLayoutEffect(() => {
|
|
21
|
+
if (elemProps.index !== undefined && !firstRender.current) {
|
|
22
|
+
events.updateItemPosition({id: localId, index: elemProps.index});
|
|
23
|
+
}
|
|
24
|
+
// we only care about the index changing
|
|
25
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
26
|
+
}, [elemProps.index]);
|
|
27
|
+
|
|
28
|
+
useMountLayout(() => {
|
|
29
|
+
const defaultId = state.indexRef.current;
|
|
30
|
+
const itemId = elemProps.name || String(defaultId);
|
|
31
|
+
// bail early if item already exists. This happens if items were already provided.
|
|
32
|
+
if (state.items.find(item => getId(item) === elemProps.name)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
events.registerItem({
|
|
36
|
+
item: {id: itemId},
|
|
37
|
+
index: elemProps.index,
|
|
38
|
+
});
|
|
39
|
+
setLocalId(itemId);
|
|
40
|
+
firstRender.current = false;
|
|
41
|
+
|
|
42
|
+
return () => {
|
|
43
|
+
events.unregisterItem({id: itemId});
|
|
44
|
+
};
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
'data-name': localId,
|
|
49
|
+
name: localId,
|
|
50
|
+
disabled: elemProps.disabled || state.nonInteractiveIds.includes(localId) ? true : undefined,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
);
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {createComponent, useDefaultModel} from '@workday/canvas-kit-react/common';
|
|
4
|
+
|
|
5
|
+
import {MenuModel, MenuModelConfig, useMenuModel} from './useMenuModel';
|
|
6
|
+
import {MenuPopper} from './MenuPopper';
|
|
7
|
+
import {MenuTarget} from './MenuTarget';
|
|
8
|
+
import {MenuItem} from './MenuItem';
|
|
9
|
+
import {MenuCard} from './MenuCard';
|
|
10
|
+
import {MenuList} from './MenuList';
|
|
11
|
+
|
|
12
|
+
export const MenuModelContext = React.createContext<MenuModel>({} as any);
|
|
13
|
+
|
|
14
|
+
export interface MenuProps<T> extends MenuModelConfig<T> {
|
|
15
|
+
/**
|
|
16
|
+
* The contents of the Menu. Can be `Menu` children or any valid elements.
|
|
17
|
+
*/
|
|
18
|
+
children: React.ReactNode;
|
|
19
|
+
/**
|
|
20
|
+
* Optionally pass a model directly to this component. Default is to create a model out of model
|
|
21
|
+
* config passed to this component.
|
|
22
|
+
* @default useMenuModel(config)
|
|
23
|
+
*/
|
|
24
|
+
model?: MenuModel<T>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* An accessible dropdown menu component. A dropdown menu usually contains a target element that
|
|
29
|
+
* opens to a menu.
|
|
30
|
+
* @example
|
|
31
|
+
* <Menu>
|
|
32
|
+
* <Menu.Target>Open</Menu.Target>
|
|
33
|
+
* <Menu.Popper>
|
|
34
|
+
* <Menu.Card>
|
|
35
|
+
* <Menu.List>
|
|
36
|
+
* <Menu.Item name="first">First Item</Menu.Item>
|
|
37
|
+
* <Menu.Item name="second">Second Item</Menu.Item>
|
|
38
|
+
* </Menu.List>
|
|
39
|
+
* </Menu.Card>
|
|
40
|
+
* </Menu.Popper>
|
|
41
|
+
* </Menu>
|
|
42
|
+
*/
|
|
43
|
+
export const Menu = createComponent()({
|
|
44
|
+
displayName: 'Menu',
|
|
45
|
+
Component: ({children, model, ...config}: MenuProps<any>) => {
|
|
46
|
+
const value = useDefaultModel(model, config, useMenuModel);
|
|
47
|
+
|
|
48
|
+
return <MenuModelContext.Provider value={value}>{children}</MenuModelContext.Provider>;
|
|
49
|
+
},
|
|
50
|
+
subComponents: {
|
|
51
|
+
/**
|
|
52
|
+
* The menu card is a non-semantic element used to give the dropdown menu its distinct visual
|
|
53
|
+
* cue that the dropdown menu is floating above other content. A menu card usually contains a
|
|
54
|
+
* menu list, but can also contain other elements like a header or footer.
|
|
55
|
+
*/
|
|
56
|
+
Card: MenuCard,
|
|
57
|
+
/**
|
|
58
|
+
* The menu list follows the Collections API. A list can either contain static items
|
|
59
|
+
* or a render prop and `items` to the model.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const MyComponent = () => {
|
|
63
|
+
* const model = useMenuModel({
|
|
64
|
+
* items: [
|
|
65
|
+
* { id: 'first', text: 'First Item' },
|
|
66
|
+
* { id: 'second', text: 'Second Item' },
|
|
67
|
+
* ]
|
|
68
|
+
* })
|
|
69
|
+
*
|
|
70
|
+
* return (
|
|
71
|
+
* <Menu model={model}>
|
|
72
|
+
* <Menu.List>
|
|
73
|
+
* {(item) => <Menu.Item name={item.id}>{item.text}</Menu.Item>}
|
|
74
|
+
* </Menu.List>
|
|
75
|
+
* </Menu>
|
|
76
|
+
* )
|
|
77
|
+
* }
|
|
78
|
+
*/
|
|
79
|
+
List: MenuList,
|
|
80
|
+
/**
|
|
81
|
+
* A menu item has an optional `name` prop that identifies the item in the menu list and will be
|
|
82
|
+
* passed to the optional `onSelect` callback of the menu model. A menu item can contain any
|
|
83
|
+
* HTML. If more complex HTML is provided, consider
|
|
84
|
+
*/
|
|
85
|
+
Item: MenuItem,
|
|
86
|
+
Target: MenuTarget,
|
|
87
|
+
/**
|
|
88
|
+
* The "Popper" of a menu. The popper will appear around the `Menu.Target`. It renders a `div`
|
|
89
|
+
* element that is portalled to the `document.body` which is controlled by the `PopupStack. The
|
|
90
|
+
* `PopupStack` is not part of React. This means no extra props given to this component will be
|
|
91
|
+
* forwarded to the `div` element, but the `ref` will be forwarded.
|
|
92
|
+
*/
|
|
93
|
+
Popper: MenuPopper,
|
|
94
|
+
},
|
|
95
|
+
});
|