@workday/canvas-kit-react 5.2.11 → 5.3.0-next.18
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/button/lib/PrimaryButton.tsx +110 -32
- package/button/lib/SecondaryButton.tsx +31 -16
- package/button/lib/TertiaryButton.tsx +45 -36
- package/button/lib/parts/ButtonContainer.tsx +18 -5
- package/button/lib/parts/ButtonLabelIcon.tsx +34 -14
- package/button/lib/types.ts +11 -0
- package/common/index.ts +1 -0
- package/common/lib/EllipsisText.tsx +11 -0
- 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/index.ts +1 -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 +4 -3
- 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 +35 -27
- 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 -20
- 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/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/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/index.d.ts +1 -0
- package/dist/commonjs/common/lib/utils/index.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/index.js +1 -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.map +1 -1
- package/dist/commonjs/common/lib/utils/useUniqueId.js +3 -10
- 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/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.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/PopupCard.js +2 -3
- 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/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 +117 -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/es6/action-bar/lib/ActionBar.d.ts.map +1 -1
- package/dist/es6/action-bar/lib/ActionBar.js +33 -22
- 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 -21
- 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/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/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/index.d.ts +1 -0
- package/dist/es6/common/lib/utils/index.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/index.js +1 -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.map +1 -1
- package/dist/es6/common/lib/utils/useUniqueId.js +3 -3
- 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/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.d.ts.map +1 -1
- package/dist/es6/popup/lib/PopupCard.js +3 -4
- 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/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 +111 -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/package.json +7 -6
- 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 -2
- 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 +59 -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 +185 -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/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/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/index.d.ts +1 -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/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/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/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/index.d.ts +1 -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/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/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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import {chevronDownSmallIcon} from '@workday/canvas-system-icons-web';
|
|
4
|
+
import {
|
|
5
|
+
createComponent,
|
|
6
|
+
useModelContext,
|
|
7
|
+
createHook,
|
|
8
|
+
composeHooks,
|
|
9
|
+
subModelHook,
|
|
10
|
+
} from '@workday/canvas-kit-react/common';
|
|
11
|
+
import {SystemIcon} from '@workday/canvas-kit-react/icon';
|
|
12
|
+
import {space} from '@workday/canvas-kit-react/tokens';
|
|
13
|
+
import {useOverflowTarget} from './overflow';
|
|
14
|
+
import {useMenuTarget} from './menu';
|
|
15
|
+
|
|
16
|
+
import {TabsModelContext} from './Tabs';
|
|
17
|
+
import {TabsModel} from './useTabsModel';
|
|
18
|
+
import {StyledTabItem} from './TabsItem';
|
|
19
|
+
|
|
20
|
+
export interface OverflowButtonProps {
|
|
21
|
+
/**
|
|
22
|
+
* The label text of the Tab.
|
|
23
|
+
*/
|
|
24
|
+
children: React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Optionally pass a model directly to this component. Default is to implicitly use the same
|
|
27
|
+
* model as the container component which uses React context. Only use this for advanced use-cases
|
|
28
|
+
*/
|
|
29
|
+
model?: TabsModel;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const TabsOverflowButton = createComponent('button')({
|
|
33
|
+
displayName: 'Tabs.OverflowButton',
|
|
34
|
+
Component: ({model, children, ...elemProps}: OverflowButtonProps, ref, Element) => {
|
|
35
|
+
const localModel = useModelContext(TabsModelContext, model);
|
|
36
|
+
|
|
37
|
+
const props = useTabsOverflowButton(localModel, elemProps, ref);
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<StyledTabItem hasIcon={true} spacing={space.xxxs} type="button" as={Element} {...props}>
|
|
41
|
+
<span>{children}</span>
|
|
42
|
+
<SystemIcon icon={chevronDownSmallIcon} />
|
|
43
|
+
</StyledTabItem>
|
|
44
|
+
);
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export const useTabsOverflowButton = composeHooks(
|
|
49
|
+
createHook(
|
|
50
|
+
(model: TabsModel, _?: React.Ref<HTMLButtonElement>, elemProps: {name?: string} = {}) => {
|
|
51
|
+
return {
|
|
52
|
+
'aria-haspopup': true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
),
|
|
56
|
+
useOverflowTarget,
|
|
57
|
+
subModelHook((m: TabsModel) => m.menu, useMenuTarget)
|
|
58
|
+
);
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
/** @jsx jsx */
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import
|
|
2
|
+
import styled from '@emotion/styled';
|
|
4
3
|
|
|
5
4
|
import {
|
|
6
5
|
createComponent,
|
|
7
|
-
mouseFocusBehavior,
|
|
8
|
-
useLocalRef,
|
|
9
6
|
useModelContext,
|
|
10
7
|
useMountLayout,
|
|
8
|
+
createHook,
|
|
9
|
+
ExtractProps,
|
|
10
|
+
hideMouseFocus,
|
|
11
|
+
StyledType,
|
|
11
12
|
} from '@workday/canvas-kit-react/common';
|
|
13
|
+
import {Box} from '@workday/canvas-kit-labs-react/common';
|
|
12
14
|
|
|
13
15
|
import {TabsModelContext} from './Tabs';
|
|
14
16
|
import {TabsModel} from './useTabsModel';
|
|
15
17
|
|
|
16
|
-
export interface TabPanelProps {
|
|
18
|
+
export interface TabPanelProps<T = unknown> extends ExtractProps<typeof Box, never> {
|
|
17
19
|
/**
|
|
18
20
|
* The contents of the TabPanel.
|
|
19
21
|
*/
|
|
@@ -35,28 +37,20 @@ export interface TabPanelProps {
|
|
|
35
37
|
* Optionally pass a model directly to this component. Default is to implicitly use the same
|
|
36
38
|
* model as the container component which uses React context. Only use this for advanced use-cases
|
|
37
39
|
*/
|
|
38
|
-
model?: TabsModel
|
|
40
|
+
model?: TabsModel<T>;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
const
|
|
42
|
-
mouseFocusBehavior({
|
|
43
|
-
'&:focus': {
|
|
44
|
-
outline: 'none',
|
|
45
|
-
},
|
|
46
|
-
})
|
|
47
|
-
);
|
|
43
|
+
const StyledTabsPanel = styled(Box)<StyledType>(hideMouseFocus);
|
|
48
44
|
|
|
49
|
-
export const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const
|
|
53
|
-
const [tabName, setTabName] = React.useState(name);
|
|
54
|
-
const {localRef, elementRef} = useLocalRef(ref);
|
|
45
|
+
export const useTabsPanel = createHook(
|
|
46
|
+
({state, events}: TabsModel, _?: React.Ref<HTMLElement>, elemProps: {name?: string} = {}) => {
|
|
47
|
+
const name = elemProps.name;
|
|
48
|
+
const [tabName, setTabName] = React.useState(elemProps.name || '');
|
|
55
49
|
|
|
56
50
|
useMountLayout(() => {
|
|
57
51
|
const index = state.panelIndexRef.current;
|
|
58
52
|
const tabName = name || String(index);
|
|
59
|
-
events.registerPanel({item: {id: tabName
|
|
53
|
+
events.registerPanel({item: {id: tabName}});
|
|
60
54
|
setTabName(tabName);
|
|
61
55
|
|
|
62
56
|
return () => {
|
|
@@ -64,19 +58,27 @@ export const TabPanel = createComponent('div')({
|
|
|
64
58
|
};
|
|
65
59
|
});
|
|
66
60
|
|
|
61
|
+
return {
|
|
62
|
+
role: 'tabpanel',
|
|
63
|
+
'aria-labelledby': `${state.id}-${tabName}`,
|
|
64
|
+
hidden: !!tabName && tabName !== state.selectedIds[0],
|
|
65
|
+
id: `tabpanel-${state.id}-${tabName}`,
|
|
66
|
+
tabIndex: 0,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
export const TabsPanel = createComponent('div')({
|
|
72
|
+
displayName: 'Tabs.Panel',
|
|
73
|
+
Component: ({children, model, ...elemProps}: TabPanelProps, ref, Element) => {
|
|
74
|
+
const localModel = useModelContext(TabsModelContext, model);
|
|
75
|
+
|
|
76
|
+
const props = useTabsPanel(localModel, elemProps, ref);
|
|
77
|
+
|
|
67
78
|
return (
|
|
68
|
-
<Element
|
|
69
|
-
ref={elementRef}
|
|
70
|
-
role="tabpanel"
|
|
71
|
-
css={styles}
|
|
72
|
-
aria-labelledby={`tab-${state.id}-${tabName}`}
|
|
73
|
-
hidden={!!tabName && tabName !== state.activeTab}
|
|
74
|
-
id={`tabpanel-${state.id}-${tabName}`}
|
|
75
|
-
tabIndex={0}
|
|
76
|
-
{...elemProps}
|
|
77
|
-
>
|
|
79
|
+
<StyledTabsPanel as={Element} {...props}>
|
|
78
80
|
{children}
|
|
79
|
-
</
|
|
81
|
+
</StyledTabsPanel>
|
|
80
82
|
);
|
|
81
83
|
},
|
|
82
84
|
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
import {createComponent, useModelContext} from '@workday/canvas-kit-react/common';
|
|
4
|
+
|
|
5
|
+
import {TabsModelContext} from './Tabs';
|
|
6
|
+
import {TabsModel} from './useTabsModel';
|
|
7
|
+
import {useRenderItems} from './list';
|
|
8
|
+
|
|
9
|
+
export interface TabsPanelsProps<T = unknown> {
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
children: ((item: T) => React.ReactNode) | React.ReactNode;
|
|
14
|
+
/**
|
|
15
|
+
* Optionally pass a model directly to this component. Default is to implicitly use the same
|
|
16
|
+
* model as the container component which uses React context. Only use this for advanced use-cases.
|
|
17
|
+
*/
|
|
18
|
+
model?: TabsModel<T>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const TabsPanels = createComponent()({
|
|
22
|
+
displayName: 'Tabs.Panels',
|
|
23
|
+
Component: ({children, model}: TabsPanelsProps) => {
|
|
24
|
+
const localModel = useModelContext(TabsModelContext, model);
|
|
25
|
+
|
|
26
|
+
return <>{useRenderItems(localModel, children)}</>;
|
|
27
|
+
},
|
|
28
|
+
});
|
package/tabs/lib/cursor/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './useRovingFocus';
|
|
2
2
|
export * from './useCursorModel';
|
|
@@ -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
|
};
|