@workday/canvas-kit-react 9.0.0-alpha.368-next.6 → 9.0.0-alpha.382-next.2
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/ActionBarList.tsx +2 -2
- package/banner/lib/hooks/index.ts +2 -0
- package/banner/lib/hooks/useThemedPalette.ts +3 -3
- package/common/lib/theming/README.md +97 -0
- package/common/lib/theming/index.ts +1 -1
- package/common/lib/theming/useTheme.ts +79 -22
- package/common/lib/theming/useThemedRing.ts +114 -0
- package/common/lib/utils/colorUtils.ts +20 -7
- package/common/lib/utils/components.ts +4 -0
- package/common/lib/utils/memoize.ts +1 -1
- package/dist/commonjs/action-bar/lib/ActionBar.js +8 -9
- package/dist/commonjs/action-bar/lib/ActionBarItem.js +7 -18
- package/dist/commonjs/action-bar/lib/ActionBarList.js +13 -38
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.js +13 -24
- package/dist/commonjs/action-bar/lib/useActionBarModel.js +39 -38
- package/dist/commonjs/avatar/lib/Avatar.js +52 -74
- package/dist/commonjs/badge/lib/CountBadge.js +23 -43
- package/dist/commonjs/banner/lib/Banner.js +32 -48
- package/dist/commonjs/banner/lib/BannerActionText.js +7 -30
- package/dist/commonjs/banner/lib/BannerIcon.js +9 -31
- package/dist/commonjs/banner/lib/BannerLabel.js +6 -29
- package/dist/commonjs/banner/lib/hooks/index.d.ts +2 -0
- package/dist/commonjs/banner/lib/hooks/index.d.ts.map +1 -1
- package/dist/commonjs/banner/lib/hooks/index.js +3 -0
- package/dist/commonjs/banner/lib/hooks/useBanner.js +5 -6
- package/dist/commonjs/banner/lib/hooks/useBannerActionText.js +4 -5
- package/dist/commonjs/banner/lib/hooks/useBannerIcon.js +6 -7
- package/dist/commonjs/banner/lib/hooks/useBannerLabel.js +4 -5
- package/dist/commonjs/banner/lib/hooks/useBannerModel.js +8 -16
- package/dist/commonjs/banner/lib/hooks/useThemedPalette.d.ts +1 -1
- package/dist/commonjs/banner/lib/hooks/useThemedPalette.d.ts.map +1 -1
- package/dist/commonjs/banner/lib/hooks/useThemedPalette.js +11 -11
- package/dist/commonjs/breadcrumbs/lib/Breadcrumbs.js +12 -35
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.js +14 -37
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +14 -39
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsLink.js +15 -36
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.js +10 -33
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.js +7 -19
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +15 -38
- package/dist/commonjs/breadcrumbs/lib/hooks/useBreadcrumbsModel.js +38 -37
- package/dist/commonjs/breadcrumbs/lib/hooks/utils/index.js +4 -4
- package/dist/commonjs/button/lib/BaseButton.js +128 -78
- package/dist/commonjs/button/lib/DeleteButton.js +27 -58
- package/dist/commonjs/button/lib/ExternalHyperlink.js +25 -39
- package/dist/commonjs/button/lib/Hyperlink.js +9 -34
- package/dist/commonjs/button/lib/PrimaryButton.js +9 -32
- package/dist/commonjs/button/lib/SecondaryButton.js +9 -32
- package/dist/commonjs/button/lib/TertiaryButton.js +23 -49
- package/dist/commonjs/button/lib/ToolbarDropdownButton.js +13 -39
- package/dist/commonjs/button/lib/ToolbarIconButton.js +16 -43
- package/dist/commonjs/button/lib/deprecated_Button.js +51 -54
- package/dist/commonjs/button/lib/parts/ButtonLabel.js +6 -29
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +7 -30
- package/dist/commonjs/card/lib/Card.js +8 -31
- package/dist/commonjs/card/lib/CardBody.js +6 -29
- package/dist/commonjs/card/lib/CardHeading.js +5 -28
- package/dist/commonjs/checkbox/lib/Checkbox.js +120 -129
- package/dist/commonjs/collection/lib/ListBox.js +11 -34
- package/dist/commonjs/collection/lib/react-virtual.js +2 -2
- package/dist/commonjs/collection/lib/useBaseListModel.js +57 -61
- package/dist/commonjs/collection/lib/useCursorListModel.js +98 -130
- package/dist/commonjs/collection/lib/useGridModel.js +14 -32
- package/dist/commonjs/collection/lib/useListItemRegister.js +16 -18
- package/dist/commonjs/collection/lib/useListItemRovingFocus.js +35 -40
- package/dist/commonjs/collection/lib/useListItemSelect.js +6 -8
- package/dist/commonjs/collection/lib/useListModel.js +2 -2
- package/dist/commonjs/collection/lib/useListRenderItem.js +9 -9
- package/dist/commonjs/collection/lib/useListResetCursorOnBlur.js +9 -10
- package/dist/commonjs/collection/lib/useOverflowListItemMeasure.js +10 -11
- package/dist/commonjs/collection/lib/useOverflowListMeasure.js +8 -8
- package/dist/commonjs/collection/lib/useOverflowListModel.js +61 -56
- package/dist/commonjs/collection/lib/useOverflowListTarget.js +10 -10
- package/dist/commonjs/collection/lib/useSelectionListModel.js +31 -37
- package/dist/commonjs/color-picker/lib/ColorInput.js +45 -81
- package/dist/commonjs/color-picker/lib/ColorPreview.js +7 -32
- package/dist/commonjs/color-picker/lib/parts/ColorSwatch.js +15 -43
- package/dist/commonjs/common/lib/CanvasProvider.js +15 -57
- package/dist/commonjs/common/lib/EllipsisText.js +6 -18
- package/dist/commonjs/common/lib/InputProvider.js +73 -93
- package/dist/commonjs/common/lib/parts/_brand-assets.js +6 -6
- package/dist/commonjs/common/lib/responsive/useResponsiveContainerStyles.js +22 -49
- package/dist/commonjs/common/lib/styles/errorRing.js +11 -10
- package/dist/commonjs/common/lib/styles/focusRing.js +19 -21
- package/dist/commonjs/common/lib/styles/hideMouseFocus.js +13 -9
- package/dist/commonjs/common/lib/theming/breakpoints.js +10 -10
- package/dist/commonjs/common/lib/theming/createCanvasTheme.js +36 -65
- package/dist/commonjs/common/lib/theming/getObjectProxy.js +3 -3
- package/dist/commonjs/common/lib/theming/index.d.ts +1 -1
- package/dist/commonjs/common/lib/theming/index.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/index.js +1 -1
- package/dist/commonjs/common/lib/theming/styled.js +10 -14
- package/dist/commonjs/common/lib/theming/theme.js +3 -3
- package/dist/commonjs/common/lib/theming/useIsRTL.js +5 -5
- package/dist/commonjs/common/lib/theming/useTheme.d.ts +49 -5
- package/dist/commonjs/common/lib/theming/useTheme.d.ts.map +1 -1
- package/dist/commonjs/common/lib/theming/useTheme.js +82 -37
- package/dist/commonjs/common/lib/theming/useThemedRing.d.ts +43 -0
- package/dist/commonjs/common/lib/theming/useThemedRing.d.ts.map +1 -0
- package/dist/commonjs/common/lib/theming/useThemedRing.js +100 -0
- package/dist/commonjs/common/lib/utils/changeFocus.js +3 -3
- package/dist/commonjs/common/lib/utils/colorUtils.d.ts +7 -0
- package/dist/commonjs/common/lib/utils/colorUtils.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/colorUtils.js +28 -15
- package/dist/commonjs/common/lib/utils/components.d.ts +3 -1
- package/dist/commonjs/common/lib/utils/components.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/components.js +46 -89
- package/dist/commonjs/common/lib/utils/deepMerge.js +4 -4
- package/dist/commonjs/common/lib/utils/elements.js +16 -16
- package/dist/commonjs/common/lib/utils/getTranslateFromOrigin.js +2 -2
- package/dist/commonjs/common/lib/utils/isWithinBreakpoint.js +1 -1
- package/dist/commonjs/common/lib/utils/makeMq.js +4 -4
- package/dist/commonjs/common/lib/utils/memoize.d.ts +1 -1
- package/dist/commonjs/common/lib/utils/memoize.d.ts.map +1 -1
- package/dist/commonjs/common/lib/utils/memoize.js +4 -8
- package/dist/commonjs/common/lib/utils/mergeCallback.js +1 -5
- package/dist/commonjs/common/lib/utils/mergeProps.js +5 -16
- package/dist/commonjs/common/lib/utils/models.js +48 -70
- package/dist/commonjs/common/lib/utils/useConstant.js +2 -2
- package/dist/commonjs/common/lib/utils/useIsFullscreen.js +7 -7
- package/dist/commonjs/common/lib/utils/useModalityType.js +9 -9
- package/dist/commonjs/common/lib/utils/useMount.js +3 -3
- package/dist/commonjs/common/lib/utils/useResizeObserver.js +9 -21
- package/dist/commonjs/common/lib/utils/useUniqueId.js +8 -8
- package/dist/commonjs/common/lib/utils/useWindowSize.js +10 -10
- package/dist/commonjs/dialog/lib/Dialog.js +7 -8
- package/dist/commonjs/dialog/lib/DialogCard.js +6 -17
- package/dist/commonjs/dialog/lib/DialogPopper.js +9 -32
- package/dist/commonjs/dialog/lib/hooks/useDialogCard.js +4 -5
- package/dist/commonjs/dialog/lib/hooks/useDialogModel.js +4 -4
- package/dist/commonjs/dialog/lib/hooks/useDialogPopper.js +4 -5
- package/dist/commonjs/disclosure/lib/useDisclosureModel.js +12 -12
- package/dist/commonjs/form-field/lib/FormField.js +41 -84
- package/dist/commonjs/form-field/lib/Hint.js +13 -47
- package/dist/commonjs/form-field/lib/Label.js +43 -86
- package/dist/commonjs/icon/lib/AccentIcon.d.ts +3 -2
- package/dist/commonjs/icon/lib/AccentIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/AccentIcon.js +15 -41
- package/dist/commonjs/icon/lib/AppletIcon.js +16 -40
- package/dist/commonjs/icon/lib/Graphic.js +9 -33
- package/dist/commonjs/icon/lib/Icon.js +12 -31
- package/dist/commonjs/icon/lib/Svg.js +11 -34
- package/dist/commonjs/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIcon.js +36 -63
- package/dist/commonjs/icon/lib/SystemIconCircle.d.ts +2 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.js +18 -47
- package/dist/commonjs/icon/lib/utils.d.ts +0 -2
- package/dist/commonjs/icon/lib/utils.d.ts.map +1 -1
- package/dist/commonjs/icon/lib/utils.js +2 -10
- package/dist/commonjs/layout/lib/Box.js +26 -51
- package/dist/commonjs/layout/lib/Flex.js +8 -31
- package/dist/commonjs/layout/lib/Grid.js +11 -35
- package/dist/commonjs/layout/lib/utils/background.js +1 -1
- package/dist/commonjs/layout/lib/utils/border/color.js +1 -1
- package/dist/commonjs/layout/lib/utils/border/index.js +20 -24
- package/dist/commonjs/layout/lib/utils/border/lineStyle.js +1 -1
- package/dist/commonjs/layout/lib/utils/border/radius.js +1 -1
- package/dist/commonjs/layout/lib/utils/border/shorthand.js +1 -1
- package/dist/commonjs/layout/lib/utils/border/width.js +1 -1
- package/dist/commonjs/layout/lib/utils/buildStyleFns.js +40 -43
- package/dist/commonjs/layout/lib/utils/color.js +1 -1
- package/dist/commonjs/layout/lib/utils/depth.js +1 -1
- package/dist/commonjs/layout/lib/utils/flex.js +1 -1
- package/dist/commonjs/layout/lib/utils/flexItem.js +1 -1
- package/dist/commonjs/layout/lib/utils/getValidChildren.js +2 -4
- package/dist/commonjs/layout/lib/utils/grid.js +1 -1
- package/dist/commonjs/layout/lib/utils/gridItem.js +1 -1
- package/dist/commonjs/layout/lib/utils/layout.js +1 -1
- package/dist/commonjs/layout/lib/utils/other.js +1 -1
- package/dist/commonjs/layout/lib/utils/position.d.ts +4 -0
- package/dist/commonjs/layout/lib/utils/position.d.ts.map +1 -1
- package/dist/commonjs/layout/lib/utils/position.js +6 -1
- package/dist/commonjs/layout/lib/utils/space.js +1 -1
- package/dist/commonjs/layout/lib/utils/text.js +1 -1
- package/dist/commonjs/loading-dots/lib/LoadingDots.js +20 -42
- package/dist/commonjs/menu/lib/Menu.js +10 -11
- package/dist/commonjs/menu/lib/MenuCard.js +14 -26
- package/dist/commonjs/menu/lib/MenuContextTarget.js +9 -32
- package/dist/commonjs/menu/lib/MenuDivider.js +9 -20
- package/dist/commonjs/menu/lib/MenuItem.js +77 -86
- package/dist/commonjs/menu/lib/MenuList.js +8 -31
- package/dist/commonjs/menu/lib/MenuPopper.js +6 -29
- package/dist/commonjs/menu/lib/MenuTarget.js +11 -35
- package/dist/commonjs/menu/lib/useMenuModel.js +22 -24
- package/dist/commonjs/modal/lib/Modal.js +10 -10
- package/dist/commonjs/modal/lib/ModalBody.js +13 -26
- package/dist/commonjs/modal/lib/ModalCard.js +13 -27
- package/dist/commonjs/modal/lib/ModalHeading.js +13 -26
- package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +8 -19
- package/dist/commonjs/modal/lib/ModalOverlay.js +39 -52
- package/dist/commonjs/modal/lib/hooks/useCloseOnOverlayClick.js +17 -17
- package/dist/commonjs/modal/lib/hooks/useModalCard.js +3 -3
- package/dist/commonjs/modal/lib/hooks/useModalHeading.js +7 -7
- package/dist/commonjs/modal/lib/hooks/useModalModel.js +5 -5
- package/dist/commonjs/pagination/lib/Pagination/AdditionalDetails.js +15 -36
- package/dist/commonjs/pagination/lib/Pagination/Controls.js +37 -63
- package/dist/commonjs/pagination/lib/Pagination/GoTo/Form.js +11 -34
- package/dist/commonjs/pagination/lib/Pagination/GoTo/Label.js +7 -30
- package/dist/commonjs/pagination/lib/Pagination/GoTo/TextInput.js +7 -18
- package/dist/commonjs/pagination/lib/Pagination/GoTo/useGoToForm.js +12 -13
- package/dist/commonjs/pagination/lib/Pagination/Nav.js +4 -15
- package/dist/commonjs/pagination/lib/Pagination/PageButton.js +15 -39
- package/dist/commonjs/pagination/lib/Pagination/PageList.js +10 -34
- package/dist/commonjs/pagination/lib/Pagination/Pagination.js +15 -37
- package/dist/commonjs/pagination/lib/Pagination/buildPageRange.js +9 -15
- package/dist/commonjs/pagination/lib/Pagination/common/List.js +8 -32
- package/dist/commonjs/pagination/lib/Pagination/common/useLiveRegion.js +8 -26
- package/dist/commonjs/pagination/lib/Pagination/common/utils/getValidChildren.js +2 -4
- package/dist/commonjs/pagination/lib/Pagination/common/utils/useRTL.js +5 -5
- package/dist/commonjs/pagination/lib/Pagination/usePaginationModel.js +31 -31
- package/dist/commonjs/popup/lib/Popper.js +34 -56
- package/dist/commonjs/popup/lib/Popup.js +11 -12
- package/dist/commonjs/popup/lib/PopupBody.js +6 -17
- package/dist/commonjs/popup/lib/PopupCard.js +33 -55
- package/dist/commonjs/popup/lib/PopupCloseButton.js +6 -29
- package/dist/commonjs/popup/lib/PopupCloseIcon.js +8 -31
- package/dist/commonjs/popup/lib/PopupHeading.js +6 -29
- package/dist/commonjs/popup/lib/PopupPopper.js +6 -29
- package/dist/commonjs/popup/lib/PopupTarget.js +6 -17
- package/dist/commonjs/popup/lib/getTransformFromPlacement.js +6 -6
- package/dist/commonjs/popup/lib/hooks/focus-trap-js.js +23 -27
- package/dist/commonjs/popup/lib/hooks/useAlwaysCloseOnOutsideClick.js +9 -9
- package/dist/commonjs/popup/lib/hooks/useAssistiveHideSiblings.js +14 -17
- package/dist/commonjs/popup/lib/hooks/useBringToTopOnClick.js +11 -11
- package/dist/commonjs/popup/lib/hooks/useCloseOnEscape.js +9 -9
- package/dist/commonjs/popup/lib/hooks/useCloseOnFullscreenExit.js +9 -9
- package/dist/commonjs/popup/lib/hooks/useCloseOnOutsideClick.js +12 -12
- package/dist/commonjs/popup/lib/hooks/useCloseOnTargetHidden.js +12 -12
- package/dist/commonjs/popup/lib/hooks/useDisableBodyScroll.js +10 -10
- package/dist/commonjs/popup/lib/hooks/useFocusRedirect.js +10 -10
- package/dist/commonjs/popup/lib/hooks/useFocusTrap.js +9 -9
- package/dist/commonjs/popup/lib/hooks/useInitialFocus.js +10 -10
- package/dist/commonjs/popup/lib/hooks/usePopupCard.js +3 -4
- package/dist/commonjs/popup/lib/hooks/usePopupCloseButton.js +3 -4
- package/dist/commonjs/popup/lib/hooks/usePopupHeading.js +3 -4
- package/dist/commonjs/popup/lib/hooks/usePopupModel.js +29 -34
- package/dist/commonjs/popup/lib/hooks/usePopupPopper.js +8 -9
- package/dist/commonjs/popup/lib/hooks/usePopupStack.js +15 -15
- package/dist/commonjs/popup/lib/hooks/usePopupTarget.js +5 -6
- package/dist/commonjs/popup/lib/hooks/usePopupTargetContext.js +5 -6
- package/dist/commonjs/popup/lib/hooks/useReturnFocus.js +19 -19
- package/dist/commonjs/popup/lib/hooks/useTransferOnFullscreenEnter.js +10 -10
- package/dist/commonjs/popup/lib/hooks/useTransferOnFullscreenExit.js +10 -10
- package/dist/commonjs/radio/lib/Radio.js +113 -133
- package/dist/commonjs/radio/lib/RadioGroup.js +33 -78
- package/dist/commonjs/segmented-control/lib/SegmentedControl.js +7 -30
- package/dist/commonjs/segmented-control/lib/SegmentedControlButton.js +40 -61
- package/dist/commonjs/select/lib/Select.js +47 -64
- package/dist/commonjs/select/lib/SelectOption.js +6 -48
- package/dist/commonjs/side-panel/lib/SidePanel.js +60 -122
- package/dist/commonjs/skeleton/lib/parts/skeletonHeader.js +5 -30
- package/dist/commonjs/skeleton/lib/parts/skeletonShape.js +12 -40
- package/dist/commonjs/skeleton/lib/parts/skeletonText.js +12 -38
- package/dist/commonjs/skeleton/lib/skeleton.js +15 -40
- package/dist/commonjs/status-indicator/lib/StatusIndicator.js +28 -61
- package/dist/commonjs/switch/lib/Switch.js +55 -65
- package/dist/commonjs/table/lib/Table.js +10 -52
- package/dist/commonjs/table/lib/TableRow.js +40 -67
- package/dist/commonjs/tabs/lib/Tabs.js +11 -12
- package/dist/commonjs/tabs/lib/TabsItem.d.ts +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.js +81 -86
- package/dist/commonjs/tabs/lib/TabsList.js +25 -51
- package/dist/commonjs/tabs/lib/TabsMenuPopper.js +6 -29
- package/dist/commonjs/tabs/lib/TabsOverflowButton.js +12 -35
- package/dist/commonjs/tabs/lib/TabsPanel.js +17 -42
- package/dist/commonjs/tabs/lib/TabsPanels.js +5 -6
- package/dist/commonjs/tabs/lib/useTabsModel.js +44 -43
- package/dist/commonjs/testing/lib/ComponentStatesTable.js +11 -20
- package/dist/commonjs/testing/lib/StaticStates.js +10 -34
- package/dist/commonjs/testing/lib/permutateProps.js +13 -26
- package/dist/commonjs/text/lib/LabelText.js +6 -29
- package/dist/commonjs/text/lib/Text.js +13 -39
- package/dist/commonjs/text/lib/TypeLevelComponents.js +15 -41
- package/dist/commonjs/text-area/lib/TextArea.js +42 -55
- package/dist/commonjs/text-input/lib/InputIconContainer.js +11 -17
- package/dist/commonjs/text-input/lib/TextInput.js +38 -51
- package/dist/commonjs/toast/lib/Toast.js +13 -36
- package/dist/commonjs/toast/lib/ToastBody.js +5 -28
- package/dist/commonjs/toast/lib/ToastCloseIcon.js +5 -16
- package/dist/commonjs/toast/lib/ToastIcon.js +5 -16
- package/dist/commonjs/toast/lib/ToastLink.js +5 -28
- package/dist/commonjs/toast/lib/ToastMessage.js +6 -29
- package/dist/commonjs/toast/lib/hooks/useToastModel.js +8 -16
- package/dist/commonjs/tokens/index.d.ts +2 -2
- package/dist/commonjs/tokens/index.d.ts.map +1 -1
- package/dist/commonjs/tokens/index.js +6 -6
- package/dist/commonjs/tokens/lib/type/fontFamilies.js +3 -3
- package/dist/commonjs/tokens/lib/type/index.js +7 -7
- package/dist/commonjs/tokens/lib/type/levels.js +4 -4
- package/dist/commonjs/tokens/lib/type/variants.js +1 -1
- package/dist/commonjs/tooltip/lib/OverflowTooltip.js +34 -54
- package/dist/commonjs/tooltip/lib/Tooltip.js +26 -47
- package/dist/commonjs/tooltip/lib/TooltipContainer.js +37 -35
- package/dist/commonjs/tooltip/lib/useTooltip.js +32 -34
- package/dist/es6/action-bar/lib/ActionBar.js +3 -4
- package/dist/es6/action-bar/lib/ActionBarItem.js +4 -15
- package/dist/es6/action-bar/lib/ActionBarList.js +10 -35
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.js +6 -17
- package/dist/es6/action-bar/lib/useActionBarModel.js +36 -35
- package/dist/es6/avatar/lib/Avatar.js +46 -68
- package/dist/es6/badge/lib/CountBadge.js +20 -40
- package/dist/es6/banner/lib/Banner.js +25 -41
- package/dist/es6/banner/lib/BannerActionText.js +4 -27
- package/dist/es6/banner/lib/BannerIcon.js +5 -27
- package/dist/es6/banner/lib/BannerLabel.js +3 -26
- package/dist/es6/banner/lib/hooks/index.d.ts +2 -0
- package/dist/es6/banner/lib/hooks/index.d.ts.map +1 -1
- package/dist/es6/banner/lib/hooks/index.js +2 -0
- package/dist/es6/banner/lib/hooks/useBanner.js +3 -4
- package/dist/es6/banner/lib/hooks/useBannerActionText.js +2 -3
- package/dist/es6/banner/lib/hooks/useBannerIcon.js +2 -3
- package/dist/es6/banner/lib/hooks/useBannerLabel.js +2 -3
- package/dist/es6/banner/lib/hooks/useBannerModel.js +8 -16
- package/dist/es6/banner/lib/hooks/useThemedPalette.d.ts +1 -1
- package/dist/es6/banner/lib/hooks/useThemedPalette.d.ts.map +1 -1
- package/dist/es6/banner/lib/hooks/useThemedPalette.js +7 -7
- package/dist/es6/breadcrumbs/lib/Breadcrumbs.js +3 -26
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.js +9 -32
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +6 -31
- package/dist/es6/breadcrumbs/lib/BreadcrumbsLink.js +11 -32
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.js +5 -28
- package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.js +6 -18
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +6 -29
- package/dist/es6/breadcrumbs/lib/hooks/useBreadcrumbsModel.js +34 -33
- package/dist/es6/breadcrumbs/lib/hooks/utils/index.js +4 -4
- package/dist/es6/button/lib/BaseButton.js +123 -73
- package/dist/es6/button/lib/DeleteButton.js +25 -56
- package/dist/es6/button/lib/ExternalHyperlink.js +21 -35
- package/dist/es6/button/lib/Hyperlink.js +7 -32
- package/dist/es6/button/lib/PrimaryButton.js +6 -29
- package/dist/es6/button/lib/SecondaryButton.js +6 -29
- package/dist/es6/button/lib/TertiaryButton.js +20 -46
- package/dist/es6/button/lib/ToolbarDropdownButton.js +9 -35
- package/dist/es6/button/lib/ToolbarIconButton.js +13 -40
- package/dist/es6/button/lib/deprecated_Button.js +48 -51
- package/dist/es6/button/lib/parts/ButtonLabel.js +4 -27
- package/dist/es6/button/lib/parts/ButtonLabelIcon.js +5 -28
- package/dist/es6/card/lib/Card.js +3 -26
- package/dist/es6/card/lib/CardBody.js +3 -26
- package/dist/es6/card/lib/CardHeading.js +3 -26
- package/dist/es6/checkbox/lib/Checkbox.js +116 -125
- package/dist/es6/collection/lib/ListBox.js +7 -30
- package/dist/es6/collection/lib/react-virtual.js +1 -1
- package/dist/es6/collection/lib/useBaseListModel.js +55 -59
- package/dist/es6/collection/lib/useCursorListModel.js +110 -142
- package/dist/es6/collection/lib/useGridModel.js +12 -30
- package/dist/es6/collection/lib/useListItemRegister.js +13 -15
- package/dist/es6/collection/lib/useListItemRovingFocus.js +33 -38
- package/dist/es6/collection/lib/useListItemSelect.js +4 -6
- package/dist/es6/collection/lib/useListModel.js +1 -1
- package/dist/es6/collection/lib/useListRenderItem.js +8 -8
- package/dist/es6/collection/lib/useListResetCursorOnBlur.js +5 -6
- package/dist/es6/collection/lib/useOverflowListItemMeasure.js +8 -9
- package/dist/es6/collection/lib/useOverflowListMeasure.js +5 -5
- package/dist/es6/collection/lib/useOverflowListModel.js +59 -54
- package/dist/es6/collection/lib/useOverflowListTarget.js +7 -7
- package/dist/es6/collection/lib/useSelectionListModel.js +31 -37
- package/dist/es6/color-picker/lib/ColorInput.js +41 -77
- package/dist/es6/color-picker/lib/ColorPreview.js +3 -28
- package/dist/es6/color-picker/lib/parts/ColorSwatch.js +8 -36
- package/dist/es6/common/lib/CanvasProvider.js +11 -54
- package/dist/es6/common/lib/EllipsisText.js +5 -17
- package/dist/es6/common/lib/InputProvider.js +72 -93
- package/dist/es6/common/lib/parts/_brand-assets.js +6 -6
- package/dist/es6/common/lib/responsive/useResponsiveContainerStyles.js +20 -47
- package/dist/es6/common/lib/styles/accessibleHide.js +1 -1
- package/dist/es6/common/lib/styles/errorRing.js +8 -7
- package/dist/es6/common/lib/styles/focusRing.js +16 -18
- package/dist/es6/common/lib/styles/hideMouseFocus.js +13 -9
- package/dist/es6/common/lib/theming/breakpoints.js +12 -12
- package/dist/es6/common/lib/theming/createCanvasTheme.js +29 -58
- package/dist/es6/common/lib/theming/getObjectProxy.js +3 -3
- package/dist/es6/common/lib/theming/index.d.ts +1 -1
- package/dist/es6/common/lib/theming/index.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/index.js +1 -1
- package/dist/es6/common/lib/theming/styled.js +7 -11
- package/dist/es6/common/lib/theming/theme.js +5 -5
- package/dist/es6/common/lib/theming/useIsRTL.js +2 -2
- package/dist/es6/common/lib/theming/useTheme.d.ts +49 -5
- package/dist/es6/common/lib/theming/useTheme.d.ts.map +1 -1
- package/dist/es6/common/lib/theming/useTheme.js +78 -34
- package/dist/es6/common/lib/theming/useThemedRing.d.ts +43 -0
- package/dist/es6/common/lib/theming/useThemedRing.d.ts.map +1 -0
- package/dist/es6/common/lib/theming/useThemedRing.js +92 -0
- package/dist/es6/common/lib/utils/changeFocus.js +3 -3
- package/dist/es6/common/lib/utils/colorUtils.d.ts +7 -0
- package/dist/es6/common/lib/utils/colorUtils.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/colorUtils.js +24 -12
- package/dist/es6/common/lib/utils/components.d.ts +3 -1
- package/dist/es6/common/lib/utils/components.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/components.js +43 -86
- package/dist/es6/common/lib/utils/deepMerge.js +4 -4
- package/dist/es6/common/lib/utils/elements.js +16 -16
- package/dist/es6/common/lib/utils/getTranslateFromOrigin.js +2 -2
- package/dist/es6/common/lib/utils/isWithinBreakpoint.js +1 -1
- package/dist/es6/common/lib/utils/makeMq.js +4 -4
- package/dist/es6/common/lib/utils/memoize.d.ts +1 -1
- package/dist/es6/common/lib/utils/memoize.d.ts.map +1 -1
- package/dist/es6/common/lib/utils/memoize.js +4 -8
- package/dist/es6/common/lib/utils/mergeCallback.js +1 -5
- package/dist/es6/common/lib/utils/mergeProps.js +4 -15
- package/dist/es6/common/lib/utils/models.js +47 -69
- package/dist/es6/common/lib/utils/useConstant.js +1 -1
- package/dist/es6/common/lib/utils/useIsFullscreen.js +5 -5
- package/dist/es6/common/lib/utils/useModalityType.js +8 -8
- package/dist/es6/common/lib/utils/useMount.js +2 -2
- package/dist/es6/common/lib/utils/useResizeObserver.js +6 -18
- package/dist/es6/common/lib/utils/useUniqueId.js +8 -8
- package/dist/es6/common/lib/utils/useWindowSize.js +8 -8
- package/dist/es6/dialog/lib/Dialog.js +2 -3
- package/dist/es6/dialog/lib/DialogCard.js +3 -14
- package/dist/es6/dialog/lib/DialogPopper.js +6 -29
- package/dist/es6/dialog/lib/hooks/useDialogCard.js +2 -3
- package/dist/es6/dialog/lib/hooks/useDialogModel.js +3 -3
- package/dist/es6/dialog/lib/hooks/useDialogPopper.js +2 -3
- package/dist/es6/disclosure/lib/useDisclosureModel.js +11 -11
- package/dist/es6/form-field/lib/FormField.js +35 -79
- package/dist/es6/form-field/lib/Hint.js +9 -43
- package/dist/es6/form-field/lib/Label.js +39 -82
- package/dist/es6/icon/lib/AccentIcon.d.ts +3 -2
- package/dist/es6/icon/lib/AccentIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/AccentIcon.js +12 -38
- package/dist/es6/icon/lib/AppletIcon.js +12 -36
- package/dist/es6/icon/lib/Graphic.js +6 -30
- package/dist/es6/icon/lib/Icon.js +10 -29
- package/dist/es6/icon/lib/Svg.js +8 -31
- package/dist/es6/icon/lib/SystemIcon.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIcon.js +33 -60
- package/dist/es6/icon/lib/SystemIconCircle.d.ts +2 -1
- package/dist/es6/icon/lib/SystemIconCircle.d.ts.map +1 -1
- package/dist/es6/icon/lib/SystemIconCircle.js +14 -43
- package/dist/es6/icon/lib/utils.d.ts +0 -2
- package/dist/es6/icon/lib/utils.d.ts.map +1 -1
- package/dist/es6/icon/lib/utils.js +1 -8
- package/dist/es6/layout/lib/Box.js +12 -37
- package/dist/es6/layout/lib/Flex.js +4 -27
- package/dist/es6/layout/lib/Grid.js +7 -31
- package/dist/es6/layout/lib/utils/background.js +3 -3
- package/dist/es6/layout/lib/utils/border/color.js +2 -2
- package/dist/es6/layout/lib/utils/border/index.js +14 -18
- package/dist/es6/layout/lib/utils/border/lineStyle.js +2 -2
- package/dist/es6/layout/lib/utils/border/radius.js +2 -2
- package/dist/es6/layout/lib/utils/border/shorthand.js +2 -2
- package/dist/es6/layout/lib/utils/border/width.js +2 -2
- package/dist/es6/layout/lib/utils/buildStyleFns.js +39 -42
- package/dist/es6/layout/lib/utils/color.js +3 -3
- package/dist/es6/layout/lib/utils/depth.js +3 -3
- package/dist/es6/layout/lib/utils/flex.js +3 -3
- package/dist/es6/layout/lib/utils/flexItem.js +3 -3
- package/dist/es6/layout/lib/utils/getValidChildren.js +1 -3
- package/dist/es6/layout/lib/utils/grid.js +3 -3
- package/dist/es6/layout/lib/utils/gridItem.js +3 -3
- package/dist/es6/layout/lib/utils/layout.js +3 -3
- package/dist/es6/layout/lib/utils/other.js +3 -3
- package/dist/es6/layout/lib/utils/position.d.ts +4 -0
- package/dist/es6/layout/lib/utils/position.d.ts.map +1 -1
- package/dist/es6/layout/lib/utils/position.js +8 -3
- package/dist/es6/layout/lib/utils/space.js +3 -3
- package/dist/es6/layout/lib/utils/text.js +3 -3
- package/dist/es6/loading-dots/lib/LoadingDots.js +16 -38
- package/dist/es6/menu/lib/Menu.js +2 -3
- package/dist/es6/menu/lib/MenuCard.js +9 -21
- package/dist/es6/menu/lib/MenuContextTarget.js +7 -30
- package/dist/es6/menu/lib/MenuDivider.js +6 -17
- package/dist/es6/menu/lib/MenuItem.js +70 -79
- package/dist/es6/menu/lib/MenuList.js +4 -27
- package/dist/es6/menu/lib/MenuPopper.js +4 -27
- package/dist/es6/menu/lib/MenuTarget.js +10 -34
- package/dist/es6/menu/lib/useMenuModel.js +20 -22
- package/dist/es6/modal/lib/Modal.js +2 -2
- package/dist/es6/modal/lib/ModalBody.js +10 -23
- package/dist/es6/modal/lib/ModalCard.js +10 -24
- package/dist/es6/modal/lib/ModalHeading.js +10 -23
- package/dist/es6/modal/lib/ModalOverflowOverlay.js +4 -15
- package/dist/es6/modal/lib/ModalOverlay.js +33 -46
- package/dist/es6/modal/lib/hooks/useCloseOnOverlayClick.js +13 -13
- package/dist/es6/modal/lib/hooks/useModalCard.js +1 -1
- package/dist/es6/modal/lib/hooks/useModalHeading.js +5 -5
- package/dist/es6/modal/lib/hooks/useModalModel.js +3 -3
- package/dist/es6/pagination/lib/Pagination/AdditionalDetails.js +10 -31
- package/dist/es6/pagination/lib/Pagination/Controls.js +35 -61
- package/dist/es6/pagination/lib/Pagination/GoTo/Form.js +7 -30
- package/dist/es6/pagination/lib/Pagination/GoTo/Label.js +4 -27
- package/dist/es6/pagination/lib/Pagination/GoTo/TextInput.js +4 -15
- package/dist/es6/pagination/lib/Pagination/GoTo/useGoToForm.js +12 -13
- package/dist/es6/pagination/lib/Pagination/Nav.js +2 -13
- package/dist/es6/pagination/lib/Pagination/PageButton.js +11 -35
- package/dist/es6/pagination/lib/Pagination/PageList.js +7 -31
- package/dist/es6/pagination/lib/Pagination/Pagination.js +16 -38
- package/dist/es6/pagination/lib/Pagination/buildPageRange.js +9 -15
- package/dist/es6/pagination/lib/Pagination/common/List.js +7 -31
- package/dist/es6/pagination/lib/Pagination/common/useLiveRegion.js +8 -26
- package/dist/es6/pagination/lib/Pagination/common/utils/getValidChildren.js +1 -3
- package/dist/es6/pagination/lib/Pagination/common/utils/useRTL.js +4 -4
- package/dist/es6/pagination/lib/Pagination/usePaginationModel.js +29 -29
- package/dist/es6/popup/lib/Popper.js +29 -51
- package/dist/es6/popup/lib/Popup.js +2 -3
- package/dist/es6/popup/lib/PopupBody.js +3 -14
- package/dist/es6/popup/lib/PopupCard.js +26 -48
- package/dist/es6/popup/lib/PopupCloseButton.js +3 -26
- package/dist/es6/popup/lib/PopupCloseIcon.js +3 -26
- package/dist/es6/popup/lib/PopupHeading.js +3 -26
- package/dist/es6/popup/lib/PopupPopper.js +3 -26
- package/dist/es6/popup/lib/PopupTarget.js +3 -14
- package/dist/es6/popup/lib/getTransformFromPlacement.js +6 -6
- package/dist/es6/popup/lib/hooks/focus-trap-js.js +23 -27
- package/dist/es6/popup/lib/hooks/useAlwaysCloseOnOutsideClick.js +5 -5
- package/dist/es6/popup/lib/hooks/useAssistiveHideSiblings.js +11 -14
- package/dist/es6/popup/lib/hooks/useBringToTopOnClick.js +7 -7
- package/dist/es6/popup/lib/hooks/useCloseOnEscape.js +5 -5
- package/dist/es6/popup/lib/hooks/useCloseOnFullscreenExit.js +5 -5
- package/dist/es6/popup/lib/hooks/useCloseOnOutsideClick.js +8 -8
- package/dist/es6/popup/lib/hooks/useCloseOnTargetHidden.js +9 -9
- package/dist/es6/popup/lib/hooks/useDisableBodyScroll.js +7 -7
- package/dist/es6/popup/lib/hooks/useFocusRedirect.js +7 -7
- package/dist/es6/popup/lib/hooks/useFocusTrap.js +5 -5
- package/dist/es6/popup/lib/hooks/useInitialFocus.js +7 -7
- package/dist/es6/popup/lib/hooks/usePopupCard.js +1 -2
- package/dist/es6/popup/lib/hooks/usePopupCloseButton.js +1 -2
- package/dist/es6/popup/lib/hooks/usePopupHeading.js +1 -2
- package/dist/es6/popup/lib/hooks/usePopupModel.js +28 -33
- package/dist/es6/popup/lib/hooks/usePopupPopper.js +5 -6
- package/dist/es6/popup/lib/hooks/usePopupStack.js +12 -12
- package/dist/es6/popup/lib/hooks/usePopupTarget.js +3 -4
- package/dist/es6/popup/lib/hooks/usePopupTargetContext.js +3 -4
- package/dist/es6/popup/lib/hooks/useReturnFocus.js +15 -15
- package/dist/es6/popup/lib/hooks/useTransferOnFullscreenEnter.js +5 -5
- package/dist/es6/popup/lib/hooks/useTransferOnFullscreenExit.js +5 -5
- package/dist/es6/radio/lib/Radio.js +110 -130
- package/dist/es6/radio/lib/RadioGroup.js +29 -75
- package/dist/es6/segmented-control/lib/SegmentedControl.js +5 -28
- package/dist/es6/segmented-control/lib/SegmentedControlButton.js +37 -58
- package/dist/es6/select/lib/Select.js +44 -61
- package/dist/es6/select/lib/SelectOption.js +5 -48
- package/dist/es6/side-panel/lib/SidePanel.js +54 -117
- package/dist/es6/skeleton/lib/parts/skeletonHeader.js +2 -27
- package/dist/es6/skeleton/lib/parts/skeletonShape.js +9 -37
- package/dist/es6/skeleton/lib/parts/skeletonText.js +9 -35
- package/dist/es6/skeleton/lib/skeleton.js +9 -34
- package/dist/es6/status-indicator/lib/StatusIndicator.js +25 -59
- package/dist/es6/switch/lib/Switch.js +54 -64
- package/dist/es6/table/lib/Table.js +9 -52
- package/dist/es6/table/lib/TableRow.js +35 -62
- package/dist/es6/tabs/lib/Tabs.js +2 -3
- package/dist/es6/tabs/lib/TabsItem.d.ts +1 -1
- package/dist/es6/tabs/lib/TabsItem.js +74 -79
- package/dist/es6/tabs/lib/TabsList.js +20 -46
- package/dist/es6/tabs/lib/TabsMenuPopper.js +4 -27
- package/dist/es6/tabs/lib/TabsOverflowButton.js +5 -28
- package/dist/es6/tabs/lib/TabsPanel.js +13 -38
- package/dist/es6/tabs/lib/TabsPanels.js +2 -3
- package/dist/es6/tabs/lib/useTabsModel.js +41 -40
- package/dist/es6/testing/lib/ComponentStatesTable.js +9 -18
- package/dist/es6/testing/lib/StaticStates.js +8 -32
- package/dist/es6/testing/lib/permutateProps.js +13 -26
- package/dist/es6/text/lib/LabelText.js +3 -26
- package/dist/es6/text/lib/Text.js +10 -36
- package/dist/es6/text/lib/TypeLevelComponents.js +16 -42
- package/dist/es6/text-area/lib/TextArea.js +41 -54
- package/dist/es6/text-input/lib/InputIconContainer.js +8 -14
- package/dist/es6/text-input/lib/TextInput.js +37 -50
- package/dist/es6/toast/lib/Toast.js +4 -27
- package/dist/es6/toast/lib/ToastBody.js +3 -26
- package/dist/es6/toast/lib/ToastCloseIcon.js +3 -14
- package/dist/es6/toast/lib/ToastIcon.js +3 -14
- package/dist/es6/toast/lib/ToastLink.js +3 -26
- package/dist/es6/toast/lib/ToastMessage.js +3 -26
- package/dist/es6/toast/lib/hooks/useToastModel.js +8 -16
- package/dist/es6/tokens/index.d.ts +2 -2
- package/dist/es6/tokens/index.d.ts.map +1 -1
- package/dist/es6/tokens/index.js +16 -16
- package/dist/es6/tokens/lib/depth.js +1 -1
- package/dist/es6/tokens/lib/radius.js +1 -1
- package/dist/es6/tokens/lib/space.js +2 -2
- package/dist/es6/tokens/lib/type/fontFamilies.js +6 -6
- package/dist/es6/tokens/lib/type/fontSizes.js +1 -1
- package/dist/es6/tokens/lib/type/fontWeights.js +1 -1
- package/dist/es6/tokens/lib/type/index.js +8 -8
- package/dist/es6/tokens/lib/type/levels.js +1 -1
- package/dist/es6/tokens/lib/type/variants.js +1 -1
- package/dist/es6/tooltip/lib/OverflowTooltip.js +29 -49
- package/dist/es6/tooltip/lib/Tooltip.js +21 -42
- package/dist/es6/tooltip/lib/TooltipContainer.js +33 -31
- package/dist/es6/tooltip/lib/useTooltip.js +29 -31
- package/icon/lib/AccentIcon.tsx +5 -6
- package/icon/lib/SystemIcon.tsx +1 -2
- package/icon/lib/SystemIconCircle.tsx +4 -3
- package/icon/lib/utils.ts +0 -8
- package/layout/lib/utils/position.ts +9 -0
- package/modal/lib/ModalBody.tsx +2 -2
- package/modal/lib/ModalCard.tsx +2 -2
- package/modal/lib/ModalHeading.tsx +2 -2
- package/modal/lib/ModalOverlay.tsx +2 -2
- package/package.json +3 -3
- package/tokens/index.ts +3 -3
- package/common/lib/theming/getCanvasTheme.ts +0 -40
- package/dist/commonjs/common/lib/theming/getCanvasTheme.d.ts +0 -28
- package/dist/commonjs/common/lib/theming/getCanvasTheme.d.ts.map +0 -1
- package/dist/commonjs/common/lib/theming/getCanvasTheme.js +0 -42
- package/dist/es6/common/lib/theming/getCanvasTheme.d.ts +0 -28
- package/dist/es6/common/lib/theming/getCanvasTheme.d.ts.map +0 -1
- package/dist/es6/common/lib/theming/getCanvasTheme.js +0 -37
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
2
|
-
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
3
|
-
to[j] = from[i];
|
|
4
|
-
return to;
|
|
5
|
-
};
|
|
6
1
|
import React from 'react';
|
|
7
2
|
import { createElemPropsHook } from '@workday/canvas-kit-react/common';
|
|
8
3
|
import { usePopupModel } from './usePopupModel';
|
|
@@ -17,21 +12,23 @@ import { usePopupModel } from './usePopupModel';
|
|
|
17
12
|
*
|
|
18
13
|
* This should be used on popup elements that need to hide content (i.e. Modals).
|
|
19
14
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
React.useEffect(
|
|
15
|
+
export const useAssistiveHideSiblings = createElemPropsHook(usePopupModel)(model => {
|
|
16
|
+
const visible = model.state.visibility !== 'hidden';
|
|
17
|
+
React.useEffect(() => {
|
|
23
18
|
var _a, _b;
|
|
24
19
|
if (!visible) {
|
|
25
20
|
return;
|
|
26
21
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const siblings = [
|
|
23
|
+
...(_b = (_a = model.state.stackRef.current) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.children,
|
|
24
|
+
].filter(el => el !== model.state.stackRef.current);
|
|
25
|
+
const prevAriaHidden = siblings.map(el => el.getAttribute('aria-hidden'));
|
|
26
|
+
siblings.forEach(el => {
|
|
30
27
|
el.setAttribute('aria-hidden', 'true');
|
|
31
28
|
});
|
|
32
|
-
return
|
|
33
|
-
siblings.forEach(
|
|
34
|
-
|
|
29
|
+
return () => {
|
|
30
|
+
siblings.forEach((el, index) => {
|
|
31
|
+
const prev = prevAriaHidden[index];
|
|
35
32
|
if (prev) {
|
|
36
33
|
el.setAttribute('aria-hidden', prev);
|
|
37
34
|
}
|
|
@@ -11,25 +11,25 @@ import { usePopupModel } from './usePopupModel';
|
|
|
11
11
|
*
|
|
12
12
|
* This should be used on popup elements that are meant to persist (i.e. Windows).
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
export const useBringToTopOnClick = createElemPropsHook(usePopupModel)(model => {
|
|
15
|
+
const timer = React.useRef(-1);
|
|
16
|
+
const onClick = React.useCallback((event) => {
|
|
17
17
|
// requestAnimationFrame is used to control timing of when `bringToTop` is called.
|
|
18
18
|
// https://github.com/Workday/canvas-kit/pull/670#discussion_r436158184
|
|
19
|
-
timer.current = requestAnimationFrame(
|
|
19
|
+
timer.current = requestAnimationFrame(() => {
|
|
20
20
|
var _a;
|
|
21
21
|
if ((_a = model.state.stackRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) {
|
|
22
22
|
PopupStack.bringToTop(model.state.stackRef.current);
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
}, [model.state.stackRef]);
|
|
26
|
-
|
|
27
|
-
React.useLayoutEffect(
|
|
26
|
+
const visible = model.state.visibility !== 'hidden';
|
|
27
|
+
React.useLayoutEffect(() => {
|
|
28
28
|
if (!visible) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
document.addEventListener('click', onClick);
|
|
32
|
-
return
|
|
32
|
+
return () => {
|
|
33
33
|
cancelAnimationFrame(timer.current);
|
|
34
34
|
document.removeEventListener('click', onClick);
|
|
35
35
|
};
|
|
@@ -9,21 +9,21 @@ import { usePopupModel } from './usePopupModel';
|
|
|
9
9
|
* This should be used with popup elements that are dismissible like Tooltips, Modals, non-modal
|
|
10
10
|
* dialogs, dropdown menus, etc.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
13
|
-
|
|
12
|
+
export const useCloseOnEscape = createElemPropsHook(usePopupModel)(model => {
|
|
13
|
+
const onKeyDown = React.useCallback((event) => {
|
|
14
14
|
if ((event.key === 'Esc' || event.key === 'Escape') &&
|
|
15
15
|
PopupStack.isTopmost(model.state.stackRef.current)) {
|
|
16
16
|
model.events.hide(event);
|
|
17
17
|
}
|
|
18
18
|
}, [model.state.stackRef, model.events]);
|
|
19
|
-
|
|
19
|
+
const visible = model.state.visibility !== 'hidden';
|
|
20
20
|
// `useLayoutEffect` for automation
|
|
21
|
-
React.useLayoutEffect(
|
|
21
|
+
React.useLayoutEffect(() => {
|
|
22
22
|
if (!visible) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
document.addEventListener('keydown', onKeyDown);
|
|
26
|
-
return
|
|
26
|
+
return () => {
|
|
27
27
|
document.removeEventListener('keydown', onKeyDown);
|
|
28
28
|
};
|
|
29
29
|
}, [onKeyDown, visible]);
|
|
@@ -7,20 +7,20 @@ import { usePopupModel } from './usePopupModel';
|
|
|
7
7
|
* the entire screen. This should be added to popup types that are very context sensitive like
|
|
8
8
|
* Tooltips.
|
|
9
9
|
*/
|
|
10
|
-
export
|
|
11
|
-
|
|
10
|
+
export const useCloseOnFullscreenExit = createElemPropsHook(usePopupModel)(model => {
|
|
11
|
+
const handler = React.useCallback((event) => {
|
|
12
12
|
if (!screenfull.isFullscreen) {
|
|
13
13
|
model.events.hide(event);
|
|
14
14
|
}
|
|
15
15
|
}, [model.events]);
|
|
16
|
-
|
|
17
|
-
React.useEffect(
|
|
16
|
+
const visible = model.state.visibility !== 'hidden';
|
|
17
|
+
React.useEffect(() => {
|
|
18
18
|
if (!visible) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
21
|
if (screenfull.isEnabled) {
|
|
22
22
|
screenfull.on('change', handler);
|
|
23
|
-
return
|
|
23
|
+
return () => {
|
|
24
24
|
screenfull.off('change', handler);
|
|
25
25
|
};
|
|
26
26
|
}
|
|
@@ -12,14 +12,14 @@ import { usePopupModel } from './usePopupModel';
|
|
|
12
12
|
* dropdown menus, etc. Tooltips and hierarchical menus should use
|
|
13
13
|
* {@link useAlwaysCloseOnClickOutside} instead.
|
|
14
14
|
*/
|
|
15
|
-
export
|
|
16
|
-
|
|
15
|
+
export const useCloseOnOutsideClick = createElemPropsHook(usePopupModel)(model => {
|
|
16
|
+
const onClick = React.useCallback((event) => {
|
|
17
17
|
if (!model.state.stackRef.current) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
.filter(
|
|
22
|
-
.sort(
|
|
20
|
+
const elements = PopupStack.getElements()
|
|
21
|
+
.filter(e => e.getAttribute('data-behavior-click-outside-close') === 'topmost')
|
|
22
|
+
.sort((a, b) => Number(a.style.zIndex) - Number(b.style.zIndex));
|
|
23
23
|
if (elements.length &&
|
|
24
24
|
elements[elements.length - 1] === model.state.stackRef.current &&
|
|
25
25
|
// Use `PopupStack.contains` instead of `ref.current.contains` so that the application can
|
|
@@ -29,15 +29,15 @@ export var useCloseOnOutsideClick = createElemPropsHook(usePopupModel)(function
|
|
|
29
29
|
model.events.hide(event);
|
|
30
30
|
}
|
|
31
31
|
}, [model.state.stackRef, model.events]);
|
|
32
|
-
|
|
33
|
-
React.useLayoutEffect(
|
|
32
|
+
const visible = model.state.visibility !== 'hidden';
|
|
33
|
+
React.useLayoutEffect(() => {
|
|
34
34
|
var _a;
|
|
35
35
|
if (!visible) {
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
38
|
document.addEventListener('mousedown', onClick);
|
|
39
39
|
(_a = model.state.stackRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute('data-behavior-click-outside-close', 'topmost');
|
|
40
|
-
return
|
|
40
|
+
return () => {
|
|
41
41
|
document.removeEventListener('mousedown', onClick);
|
|
42
42
|
};
|
|
43
43
|
}, [model.state.stackRef, visible, onClick]);
|
|
@@ -5,7 +5,7 @@ function getScrollParent(element) {
|
|
|
5
5
|
if (element === document.body || !element.parentElement) {
|
|
6
6
|
return element;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
const styles = getComputedStyle(element);
|
|
9
9
|
if (styles.overflowY === 'scroll' ||
|
|
10
10
|
styles.overflowY === 'auto' ||
|
|
11
11
|
styles.overflowX === 'scroll' ||
|
|
@@ -23,26 +23,26 @@ function getScrollParent(element) {
|
|
|
23
23
|
*
|
|
24
24
|
* This should be used with popup elements that are transitory like Tooltips and dropdown menus.
|
|
25
25
|
*/
|
|
26
|
-
export
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
export const useCloseOnTargetHidden = createElemPropsHook(usePopupModel)(model => {
|
|
27
|
+
const visible = model.state.visibility !== 'hidden';
|
|
28
|
+
const callback = React.useCallback(entries => {
|
|
29
29
|
if (entries[0].intersectionRatio < 0.5) {
|
|
30
30
|
model.events.hide();
|
|
31
31
|
}
|
|
32
32
|
}, [model.events]);
|
|
33
|
-
React.useLayoutEffect(
|
|
33
|
+
React.useLayoutEffect(() => {
|
|
34
34
|
if (!visible || !model.state.targetRef.current) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
const target = model.state.targetRef.current;
|
|
38
|
+
const scrollParent = getScrollParent(target);
|
|
39
39
|
// eslint-disable-next-line compat/compat
|
|
40
|
-
|
|
40
|
+
const observer = new IntersectionObserver(callback, {
|
|
41
41
|
root: scrollParent,
|
|
42
42
|
threshold: 0.5,
|
|
43
43
|
});
|
|
44
44
|
observer.observe(model.state.targetRef.current);
|
|
45
|
-
return
|
|
45
|
+
return () => {
|
|
46
46
|
observer.disconnect();
|
|
47
47
|
};
|
|
48
48
|
}, [callback, model.state.targetRef, visible]);
|
|
@@ -8,19 +8,19 @@ import { usePopupModel } from './usePopupModel';
|
|
|
8
8
|
* This should be used with popup elements that hide all other content and force the user to accept
|
|
9
9
|
* or dismiss the popup before continuing (i.e. Modals).
|
|
10
10
|
*/
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
React.useLayoutEffect(
|
|
11
|
+
export const useDisableBodyScroll = createElemPropsHook(usePopupModel)(model => {
|
|
12
|
+
const visible = model.state.visibility !== 'hidden';
|
|
13
|
+
React.useLayoutEffect(() => {
|
|
14
14
|
if (!visible) {
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const overflowY = document.body.style.overflowY;
|
|
18
|
+
const overflowX = document.body.style.overflowX;
|
|
19
|
+
const overflow = document.body.style.overflow;
|
|
20
20
|
document.body.style.overflow = 'hidden';
|
|
21
21
|
document.body.style.overflowY = 'hidden';
|
|
22
22
|
document.body.style.overflowX = 'hidden';
|
|
23
|
-
return
|
|
23
|
+
return () => {
|
|
24
24
|
document.body.style.overflow = overflow;
|
|
25
25
|
document.body.style.overflowY = overflowY;
|
|
26
26
|
document.body.style.overflowX = overflowX;
|
|
@@ -13,11 +13,11 @@ import { usePopupModel } from './usePopupModel';
|
|
|
13
13
|
*
|
|
14
14
|
* This should be used with non-modal dialogs.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
17
|
-
|
|
16
|
+
export const useFocusRedirect = createElemPropsHook(usePopupModel)(model => {
|
|
17
|
+
const onKeyDown = React.useCallback((event) => {
|
|
18
18
|
if (model.state.stackRef.current && event.key === 'Tab') {
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const firstFocusableElement = getFirstFocusableElement(model.state.stackRef.current);
|
|
20
|
+
const lastFocusableElement = getLastFocusableElement(model.state.stackRef.current);
|
|
21
21
|
if (event.getModifierState('Shift') && document.activeElement === firstFocusableElement) {
|
|
22
22
|
event.preventDefault();
|
|
23
23
|
model.events.hide(event);
|
|
@@ -28,14 +28,14 @@ export var useFocusRedirect = createElemPropsHook(usePopupModel)(function (model
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
}, [model.events, model.state.stackRef]);
|
|
31
|
-
|
|
31
|
+
const visible = model.state.visibility !== 'hidden';
|
|
32
32
|
// `useLayoutEffect` for automation
|
|
33
|
-
React.useLayoutEffect(
|
|
33
|
+
React.useLayoutEffect(() => {
|
|
34
34
|
if (!visible) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
37
|
document.addEventListener('keydown', onKeyDown);
|
|
38
|
-
return
|
|
38
|
+
return () => {
|
|
39
39
|
document.removeEventListener('keydown', onKeyDown);
|
|
40
40
|
};
|
|
41
41
|
}, [visible, onKeyDown]);
|
|
@@ -11,20 +11,20 @@ import { usePopupModel } from './usePopupModel';
|
|
|
11
11
|
*
|
|
12
12
|
* This should be used on popup elements that need to hide content (i.e. Modals).
|
|
13
13
|
*/
|
|
14
|
-
export
|
|
15
|
-
|
|
14
|
+
export const useFocusTrap = createElemPropsHook(usePopupModel)(model => {
|
|
15
|
+
const onKeyDown = React.useCallback((event) => {
|
|
16
16
|
if (model.state.stackRef.current) {
|
|
17
17
|
tabTrappingKey(event, model.state.stackRef.current);
|
|
18
18
|
}
|
|
19
19
|
}, [model.state.stackRef]);
|
|
20
|
-
|
|
20
|
+
const visible = model.state.visibility !== 'hidden';
|
|
21
21
|
// `useLayoutEffect` for automation
|
|
22
|
-
React.useLayoutEffect(
|
|
22
|
+
React.useLayoutEffect(() => {
|
|
23
23
|
if (!visible) {
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
document.addEventListener('keydown', onKeyDown);
|
|
27
|
-
return
|
|
27
|
+
return () => {
|
|
28
28
|
document.removeEventListener('keydown', onKeyDown);
|
|
29
29
|
};
|
|
30
30
|
}, [visible, onKeyDown]);
|
|
@@ -9,19 +9,19 @@ import { usePopupModel } from './usePopupModel';
|
|
|
9
9
|
* This should be used for popups that have focusable elements inside, like Modals, non-modal
|
|
10
10
|
* dialogs, menus, etc.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
13
|
-
|
|
12
|
+
export const useInitialFocus = createElemPropsHook(usePopupModel)(model => {
|
|
13
|
+
const visible = model.state.visibility !== 'hidden';
|
|
14
14
|
// Using `useEffect` instead of `useLayoutEffect` so that focus doesn't change _before_ PopperJS
|
|
15
15
|
// has positioned the Popup. If we change focus before positioning, the browser will scroll to the
|
|
16
16
|
// top of the page.
|
|
17
|
-
React.useEffect(
|
|
17
|
+
React.useEffect(() => {
|
|
18
18
|
var _a;
|
|
19
19
|
if (visible && model.state.stackRef.current) {
|
|
20
|
-
|
|
20
|
+
const element = ((_a = model.state.initialFocusRef) === null || _a === void 0 ? void 0 : _a.current) ||
|
|
21
21
|
getFirstFocusableElement(model.state.stackRef.current);
|
|
22
|
-
assert(
|
|
23
|
-
requestAnimationFrame(
|
|
24
|
-
changeFocus(
|
|
22
|
+
assert(element, 'No focusable element was found. Please ensure popup has at least one focusable element');
|
|
23
|
+
requestAnimationFrame(() => {
|
|
24
|
+
changeFocus(element);
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
27
|
}, [model.state.initialFocusRef, model.state.stackRef, visible]);
|
|
@@ -3,8 +3,7 @@ import { usePopupModel } from './usePopupModel';
|
|
|
3
3
|
/**
|
|
4
4
|
* Adds the necessary props to a {@link PopupCard Popup.Card} subcomponent.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
var state = _a.state;
|
|
6
|
+
export const usePopupCard = createElemPropsHook(usePopupModel)(({ state }) => {
|
|
8
7
|
return {
|
|
9
8
|
role: 'dialog',
|
|
10
9
|
'aria-labelledby': state.id,
|
|
@@ -5,8 +5,7 @@ import { usePopupModel } from './usePopupModel';
|
|
|
5
5
|
* {@link PopupCloseButton Popup.CloseButton} subcomponent and
|
|
6
6
|
* {@link PopupCloseIcon Popup.CloseIcon} subcomponent.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
9
|
-
var events = _a.events;
|
|
8
|
+
export const usePopupCloseButton = createElemPropsHook(usePopupModel)(({ events }) => {
|
|
10
9
|
return {
|
|
11
10
|
onClick: events.hide,
|
|
12
11
|
};
|
|
@@ -3,8 +3,7 @@ import { usePopupModel } from './usePopupModel';
|
|
|
3
3
|
/**
|
|
4
4
|
* Adds the necessary props to the {@link PopupHeading Popup.Heading} subcomponent.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
var state = _a.state;
|
|
6
|
+
export const usePopupHeading = createElemPropsHook(usePopupModel)(({ state }) => {
|
|
8
7
|
return {
|
|
9
8
|
id: state.id,
|
|
10
9
|
};
|
|
@@ -1,78 +1,73 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import * as React from 'react';
|
|
13
2
|
import { createModelHook } from '@workday/canvas-kit-react/common';
|
|
14
3
|
import { useDisclosureModel } from '@workday/canvas-kit-react/disclosure';
|
|
15
4
|
// eslint-disable-next-line no-empty-function
|
|
16
|
-
|
|
17
|
-
export
|
|
5
|
+
const noop = () => { };
|
|
6
|
+
export const usePopupModel = createModelHook({
|
|
18
7
|
// create enough of a model to use `Popup.Card` without a `Popup` container component.
|
|
19
8
|
defaultContext: { state: {}, events: { show: noop, hide: noop } },
|
|
20
|
-
defaultConfig:
|
|
9
|
+
defaultConfig: {
|
|
10
|
+
...useDisclosureModel.defaultConfig,
|
|
21
11
|
/**
|
|
22
12
|
* Optional reference to an element that should receive focus when a popup is hidden. If left
|
|
23
13
|
* blank, focus will return to the `targetRef`
|
|
24
14
|
*/
|
|
25
|
-
returnFocusRef: undefined,
|
|
15
|
+
returnFocusRef: undefined,
|
|
26
16
|
/**
|
|
27
17
|
* Optional reference to an element that should receive focus when a popup is shown. If left blank,
|
|
28
18
|
* focus will be moved to the first focusable element inside the popup.
|
|
29
19
|
*/
|
|
30
|
-
initialFocusRef: undefined
|
|
20
|
+
initialFocusRef: undefined,
|
|
21
|
+
},
|
|
31
22
|
requiredConfig: useDisclosureModel.requiredConfig,
|
|
32
|
-
})(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
23
|
+
})(config => {
|
|
24
|
+
const stackRef = React.useRef(null);
|
|
25
|
+
const targetRef = React.useRef(null);
|
|
26
|
+
const [placement, setPlacement] = React.useState('bottom');
|
|
27
|
+
const disclosure = useDisclosureModel(config);
|
|
28
|
+
const state = {
|
|
29
|
+
...disclosure.state,
|
|
38
30
|
/**
|
|
39
31
|
* Reference of the stack item used in the PopupStack. This value will be used in all
|
|
40
32
|
* Popup-related behaviors.
|
|
41
33
|
*/
|
|
42
|
-
stackRef
|
|
34
|
+
stackRef,
|
|
43
35
|
/**
|
|
44
36
|
* Reference of the target element. This will point to the element that triggered the showing of a
|
|
45
37
|
* Popup and is used in Popup-related behaviors.
|
|
46
38
|
*/
|
|
47
|
-
targetRef
|
|
39
|
+
targetRef,
|
|
48
40
|
/**
|
|
49
41
|
* Optional reference to an element that should receive focus when a popup is shown. If left blank,
|
|
50
42
|
* focus will be moved to the first focusable element inside the popup.
|
|
51
43
|
*/
|
|
52
|
-
initialFocusRef: config.initialFocusRef,
|
|
44
|
+
initialFocusRef: config.initialFocusRef,
|
|
53
45
|
/**
|
|
54
46
|
* Optional reference to an element that should receive focus when a popup is hidden. If left
|
|
55
47
|
* blank, focus will return to the `targetRef`
|
|
56
48
|
*/
|
|
57
|
-
returnFocusRef: config.returnFocusRef,
|
|
49
|
+
returnFocusRef: config.returnFocusRef,
|
|
58
50
|
/**
|
|
59
51
|
* The placement chosen by the positioning Popper. This should get set prior to showing the popup
|
|
60
52
|
* content.
|
|
61
53
|
* @default 'bottom'
|
|
62
54
|
*/
|
|
63
|
-
placement
|
|
64
|
-
|
|
55
|
+
placement,
|
|
56
|
+
};
|
|
57
|
+
const events = {
|
|
58
|
+
...disclosure.events,
|
|
65
59
|
/**
|
|
66
60
|
* Called whenever a popup placement changes around a target. This is useful for animations that
|
|
67
61
|
* depend on the placement chosen.
|
|
68
62
|
*/
|
|
69
|
-
updatePlacement
|
|
63
|
+
updatePlacement(data) {
|
|
70
64
|
setPlacement(data.placement);
|
|
71
|
-
}
|
|
65
|
+
},
|
|
66
|
+
};
|
|
72
67
|
return {
|
|
73
|
-
state
|
|
74
|
-
events
|
|
68
|
+
state,
|
|
69
|
+
events,
|
|
75
70
|
};
|
|
76
71
|
});
|
|
77
72
|
// create enough of a model to use `Popup.Card` without a `Popup` container component.
|
|
78
|
-
export
|
|
73
|
+
export const PopupModelContext = usePopupModel.Context;
|
|
@@ -5,19 +5,18 @@ import React from 'react';
|
|
|
5
5
|
* Adds the necessary props to a {@link Popper} component. Used by the
|
|
6
6
|
* {@link PopupPopper Popup.Popper} subcomponent.
|
|
7
7
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var onPlacementChange = React.useCallback(function (placement) {
|
|
8
|
+
export const usePopupPopper = createElemPropsHook(usePopupModel)(({ state, events }, ref) => {
|
|
9
|
+
const elementRef = useForkRef(ref, state.stackRef);
|
|
10
|
+
const onPlacementChange = React.useCallback((placement) => {
|
|
12
11
|
if (placement !== state.placement) {
|
|
13
12
|
// only update if the placement has changed
|
|
14
|
-
events.updatePlacement({ placement
|
|
13
|
+
events.updatePlacement({ placement });
|
|
15
14
|
}
|
|
16
15
|
}, [events, state.placement]);
|
|
17
16
|
return {
|
|
18
17
|
open: state.visibility !== 'hidden',
|
|
19
18
|
anchorElement: state.targetRef,
|
|
20
19
|
ref: elementRef,
|
|
21
|
-
onPlacementChange
|
|
20
|
+
onPlacementChange,
|
|
22
21
|
};
|
|
23
22
|
});
|
|
@@ -43,36 +43,36 @@ import { useLocalRef, useIsRTL } from '@workday/canvas-kit-react/common';
|
|
|
43
43
|
* by all ephemeral-type popups (like Tooltips, Select menus, etc). It will also add in clickOutside
|
|
44
44
|
* detection.
|
|
45
45
|
*/
|
|
46
|
-
export
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
export const usePopupStack = (ref, target) => {
|
|
47
|
+
const { elementRef, localRef } = useLocalRef(ref);
|
|
48
|
+
const isRTL = useIsRTL();
|
|
49
49
|
// useState function input ensures we only create a container once.
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const [popupRef] = React.useState(() => {
|
|
51
|
+
const container = PopupStack.createContainer();
|
|
52
52
|
elementRef(container);
|
|
53
53
|
return container;
|
|
54
|
-
})
|
|
54
|
+
});
|
|
55
55
|
// We useLayoutEffect to ensure proper timing of registration of the element to the popup stack.
|
|
56
56
|
// Without this, the timing is unpredictable when mixed with other frameworks. Other frameworks
|
|
57
57
|
// should also register as soon as the element is available
|
|
58
|
-
React.useLayoutEffect(
|
|
58
|
+
React.useLayoutEffect(() => {
|
|
59
59
|
if (popupRef !== localRef.current) {
|
|
60
|
-
throw Error(
|
|
60
|
+
throw Error(`The 'ref' passed to usePopupStack should not be applied to a React element. This will cause a runtime error where the PopupStack and React compete for the element. Instead use ReactDOM.createPortal(<YourComponent />, ref.current)`);
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
const targetEl = target
|
|
63
63
|
? 'current' in target
|
|
64
64
|
? target.current || undefined
|
|
65
65
|
: target
|
|
66
66
|
: undefined;
|
|
67
|
-
|
|
67
|
+
const element = localRef.current;
|
|
68
68
|
PopupStack.add({ element: element, owner: targetEl });
|
|
69
|
-
return
|
|
69
|
+
return () => {
|
|
70
70
|
PopupStack.remove(element);
|
|
71
71
|
};
|
|
72
72
|
}, [localRef, target, popupRef]);
|
|
73
73
|
// The direction will properly follow the theme via React context, but portals lose the `dir`
|
|
74
74
|
// hierarchy, so we'll add it back here.
|
|
75
|
-
React.useLayoutEffect(
|
|
75
|
+
React.useLayoutEffect(() => {
|
|
76
76
|
var _a, _b;
|
|
77
77
|
if (isRTL) {
|
|
78
78
|
(_a = localRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute('dir', 'rtl');
|
|
@@ -3,12 +3,11 @@ import { usePopupModel } from './usePopupModel';
|
|
|
3
3
|
/**
|
|
4
4
|
* Adds the necessary props to a {@link PopupTarget Popup.Target} subcomponent.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
var elementRef = useForkRef(ref, state.targetRef);
|
|
6
|
+
export const usePopupTarget = createElemPropsHook(usePopupModel)(({ events, state }, ref) => {
|
|
7
|
+
const elementRef = useForkRef(ref, state.targetRef);
|
|
9
8
|
return {
|
|
10
9
|
ref: elementRef,
|
|
11
|
-
onClick:
|
|
10
|
+
onClick: (event) => {
|
|
12
11
|
// If we're wrapping a target component that doesn't handle ref forwarding, update the
|
|
13
12
|
// `state.targetRef` manually. This ensures that custom target components don't need to handle
|
|
14
13
|
// ref forwarding since ref forwarding is only really needed to programmatically open popups
|
|
@@ -3,12 +3,11 @@ import { usePopupModel } from './usePopupModel';
|
|
|
3
3
|
/**
|
|
4
4
|
* Adds the necessary props to a `Target` component. Used by the Popup.Target subcomponent.
|
|
5
5
|
*/
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
var elementRef = useForkRef(ref, state.targetRef);
|
|
6
|
+
export const usePopupTargetContext = createElemPropsHook(usePopupModel)(({ events, state }, ref) => {
|
|
7
|
+
const elementRef = useForkRef(ref, state.targetRef);
|
|
9
8
|
return {
|
|
10
9
|
ref: elementRef,
|
|
11
|
-
onContextMenu:
|
|
10
|
+
onContextMenu: (event) => {
|
|
12
11
|
// If we're wrapping a target component that doesn't handle ref forwarding, update the
|
|
13
12
|
// `state.targetRef` manually. This ensures that custom target components don't need to handle
|
|
14
13
|
// ref forwarding since ref forwarding is only really needed to programmatically open popups
|