@workday/canvas-kit-react 16.2.3 → 16.2.5
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/collection/index.ts +6 -1
- package/dist/commonjs/action-bar/lib/ActionBarList.js +1 -1
- package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.js +1 -1
- package/dist/commonjs/avatar/lib/Avatar.js +13 -13
- package/dist/commonjs/avatar/lib/AvatarImage.js +1 -1
- package/dist/commonjs/avatar/lib/AvatarName.js +1 -1
- package/dist/commonjs/avatar/lib/BaseAvatar.js +14 -14
- package/dist/commonjs/badge/lib/CountBadge.js +6 -6
- package/dist/commonjs/banner/lib/Banner.js +5 -5
- package/dist/commonjs/banner/lib/BannerActionText.js +2 -2
- package/dist/commonjs/banner/lib/BannerIcon.js +1 -1
- package/dist/commonjs/banner/lib/BannerLabel.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.js +1 -1
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
- package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
- package/dist/commonjs/button/lib/BaseButton.js +21 -21
- package/dist/commonjs/button/lib/DeleteButton.js +2 -2
- package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
- package/dist/commonjs/button/lib/Hyperlink.js +5 -5
- package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
- package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
- package/dist/commonjs/button/lib/TertiaryButton.js +14 -14
- package/dist/commonjs/button/lib/ToolbarDropdownButton.js +3 -3
- package/dist/commonjs/button/lib/ToolbarIconButton.js +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabel.js +1 -1
- package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +5 -5
- package/dist/commonjs/card/lib/Card.js +3 -3
- package/dist/commonjs/card/lib/CardBody.js +1 -1
- package/dist/commonjs/card/lib/CardHeading.js +1 -1
- package/dist/commonjs/checkbox/lib/CheckBackground.js +6 -6
- package/dist/commonjs/checkbox/lib/CheckboxCheck.js +6 -6
- package/dist/commonjs/checkbox/lib/CheckboxContainer.js +2 -2
- package/dist/commonjs/checkbox/lib/CheckboxInput.js +5 -5
- package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
- package/dist/commonjs/collection/index.d.ts +1 -1
- package/dist/commonjs/collection/index.d.ts.map +1 -1
- package/dist/commonjs/collection/lib/ListBox.js +3 -3
- package/dist/commonjs/color-picker/lib/ColorInput.js +3 -3
- package/dist/commonjs/color-picker/lib/ColorPreview.js +1 -1
- package/dist/commonjs/color-picker/lib/parts/ColorSwatch.js +2 -2
- package/dist/commonjs/combobox/lib/ComboboxMenuList.js +1 -1
- package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
- package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
- package/dist/commonjs/common/lib/EllipsisText.js +1 -1
- package/dist/commonjs/common/lib/styles/cornerShape.js +1 -1
- package/dist/commonjs/expandable/lib/Expandable.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableAvatar.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableContent.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableIcon.js +10 -10
- package/dist/commonjs/expandable/lib/ExpandableTarget.js +1 -1
- package/dist/commonjs/expandable/lib/ExpandableTitle.js +1 -1
- package/dist/commonjs/form-field/lib/FormFieldField.js +1 -1
- package/dist/commonjs/form-field/lib/FormFieldGroupLabel.js +5 -5
- package/dist/commonjs/form-field/lib/FormFieldGroupList.js +3 -3
- package/dist/commonjs/form-field/lib/FormFieldHint.js +3 -3
- package/dist/commonjs/form-field/lib/FormFieldLabel.js +6 -6
- package/dist/commonjs/form-field/lib/formFieldStencil.js +8 -8
- package/dist/commonjs/icon/lib/AccentIcon.js +2 -2
- package/dist/commonjs/icon/lib/AppletIcon.js +1 -1
- package/dist/commonjs/icon/lib/ExpressiveIcon.js +1 -1
- package/dist/commonjs/icon/lib/Graphic.js +4 -4
- package/dist/commonjs/icon/lib/Svg.js +3 -3
- package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
- package/dist/commonjs/icon/lib/SystemIconCircle.js +2 -2
- package/dist/commonjs/information-highlight/lib/InformationHighlight.js +9 -9
- package/dist/commonjs/information-highlight/lib/parts/Body.js +3 -3
- package/dist/commonjs/information-highlight/lib/parts/Heading.js +3 -3
- package/dist/commonjs/information-highlight/lib/parts/Link.js +3 -3
- package/dist/commonjs/loading-dots/lib/LoadingDots.js +3 -3
- package/dist/commonjs/menu/lib/MenuCard.js +1 -1
- package/dist/commonjs/menu/lib/MenuDivider.js +1 -1
- package/dist/commonjs/menu/lib/MenuGroup.js +1 -1
- package/dist/commonjs/menu/lib/MenuItem.js +1 -1
- package/dist/commonjs/menu/lib/MenuList.js +3 -3
- package/dist/commonjs/menu/lib/MenuPopper.d.ts +5 -1
- package/dist/commonjs/menu/lib/MenuPopper.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/MenuPopper.js +6 -2
- package/dist/commonjs/menu/lib/Submenu.d.ts.map +1 -1
- package/dist/commonjs/menu/lib/Submenu.js +68 -2
- package/dist/commonjs/modal/lib/ModalBody.js +1 -1
- package/dist/commonjs/modal/lib/ModalCard.js +1 -1
- package/dist/commonjs/modal/lib/ModalHeading.js +1 -1
- package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +1 -1
- package/dist/commonjs/modal/lib/ModalOverlay.js +2 -2
- package/dist/commonjs/pagination/lib/Pagination/AdditionalDetails.js +2 -2
- package/dist/commonjs/pagination/lib/Pagination/Controls.js +2 -2
- package/dist/commonjs/pagination/lib/Pagination/GoTo/Form.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/GoTo/Label.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/Nav.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/PageButton.js +2 -2
- package/dist/commonjs/pagination/lib/Pagination/PageList.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/Pagination.js +1 -1
- package/dist/commonjs/pagination/lib/Pagination/common/List.js +2 -2
- package/dist/commonjs/pill/lib/Pill.js +3 -3
- package/dist/commonjs/pill/lib/PillAvatar.js +1 -1
- package/dist/commonjs/pill/lib/PillCount.js +1 -1
- package/dist/commonjs/pill/lib/PillIcon.js +1 -1
- package/dist/commonjs/pill/lib/PillIconButton.js +1 -1
- package/dist/commonjs/pill/lib/PillLabel.js +1 -1
- package/dist/commonjs/popup/lib/Popper.d.ts +2 -1
- package/dist/commonjs/popup/lib/Popper.d.ts.map +1 -1
- package/dist/commonjs/popup/lib/Popper.js +4 -1
- package/dist/commonjs/popup/lib/PopupBody.js +1 -1
- package/dist/commonjs/popup/lib/PopupButtonGroup.js +5 -5
- package/dist/commonjs/popup/lib/PopupCard.js +2 -2
- package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
- package/dist/commonjs/popup/lib/PopupHeading.js +1 -1
- package/dist/commonjs/popup/lib/hooks/useDisableBodyScroll.js +1 -1
- package/dist/commonjs/segmented-control/lib/SegmentedControlItem.js +16 -16
- package/dist/commonjs/segmented-control/lib/SegmentedControlList.js +6 -6
- package/dist/commonjs/select/lib/SelectCard.js +1 -1
- package/dist/commonjs/select/lib/SelectInput.js +3 -3
- package/dist/commonjs/side-panel/lib/SidePanel.js +8 -8
- package/dist/commonjs/side-panel/lib/SidePanelHeading.js +3 -3
- package/dist/commonjs/side-panel/lib/SidePanelToggleButton.js +7 -7
- package/dist/commonjs/skeleton/lib/Skeleton.js +2 -2
- package/dist/commonjs/skeleton/lib/parts/SkeletonHeader.js +1 -1
- package/dist/commonjs/skeleton/lib/parts/SkeletonShape.js +2 -2
- package/dist/commonjs/skeleton/lib/parts/SkeletonText.js +2 -2
- package/dist/commonjs/switch/lib/Switch.js +7 -7
- package/dist/commonjs/table/lib/BaseTable.js +1 -1
- package/dist/commonjs/table/lib/Table.js +7 -7
- package/dist/commonjs/table/lib/parts/BaseTableBody.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableCaption.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableCell.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableHead.js +1 -1
- package/dist/commonjs/table/lib/parts/BaseTableHeader.js +1 -1
- package/dist/commonjs/table/lib/parts/css-grid-table/TableRow.js +1 -1
- package/dist/commonjs/tabs/lib/TabsItem.js +1 -1
- package/dist/commonjs/tabs/lib/TabsList.js +8 -8
- package/dist/commonjs/tabs/lib/TabsOverflowButton.js +1 -1
- package/dist/commonjs/testing/lib/ComponentStatesTable.js +1 -1
- package/dist/commonjs/text/lib/LabelText.js +6 -6
- package/dist/commonjs/text/lib/Text.js +16 -16
- package/dist/commonjs/text/lib/TypeLevelComponents.js +4 -4
- package/dist/commonjs/text-area/lib/TextArea.js +5 -5
- package/dist/commonjs/text-input/lib/InputGroup.js +7 -7
- package/dist/commonjs/text-input/lib/TextInput.js +5 -5
- package/dist/commonjs/toast/lib/Toast.js +1 -1
- package/dist/commonjs/toast/lib/ToastBody.js +1 -1
- package/dist/commonjs/toast/lib/ToastCloseIcon.js +1 -1
- package/dist/commonjs/toast/lib/ToastIcon.js +1 -1
- package/dist/commonjs/toast/lib/ToastMessage.js +1 -1
- package/dist/commonjs/tooltip/lib/TooltipContainer.js +4 -4
- package/dist/commonjs/version/lib/version.js +1 -1
- package/dist/es6/action-bar/lib/ActionBarList.js +1 -1
- package/dist/es6/action-bar/lib/ActionBarOverflowButton.js +1 -1
- package/dist/es6/avatar/lib/Avatar.js +13 -13
- package/dist/es6/avatar/lib/AvatarImage.js +1 -1
- package/dist/es6/avatar/lib/AvatarName.js +1 -1
- package/dist/es6/avatar/lib/BaseAvatar.js +14 -14
- package/dist/es6/badge/lib/CountBadge.js +6 -6
- package/dist/es6/banner/lib/Banner.js +5 -5
- package/dist/es6/banner/lib/BannerActionText.js +2 -2
- package/dist/es6/banner/lib/BannerIcon.js +1 -1
- package/dist/es6/banner/lib/BannerLabel.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsList.js +1 -1
- package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
- package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
- package/dist/es6/button/lib/BaseButton.js +21 -21
- package/dist/es6/button/lib/DeleteButton.js +2 -2
- package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
- package/dist/es6/button/lib/Hyperlink.js +5 -5
- package/dist/es6/button/lib/PrimaryButton.js +2 -2
- package/dist/es6/button/lib/SecondaryButton.js +2 -2
- package/dist/es6/button/lib/TertiaryButton.js +14 -14
- package/dist/es6/button/lib/ToolbarDropdownButton.js +3 -3
- package/dist/es6/button/lib/ToolbarIconButton.js +1 -1
- package/dist/es6/button/lib/parts/ButtonLabel.js +1 -1
- package/dist/es6/button/lib/parts/ButtonLabelIcon.js +5 -5
- package/dist/es6/card/lib/Card.js +3 -3
- package/dist/es6/card/lib/CardBody.js +1 -1
- package/dist/es6/card/lib/CardHeading.js +1 -1
- package/dist/es6/checkbox/lib/CheckBackground.js +6 -6
- package/dist/es6/checkbox/lib/CheckboxCheck.js +6 -6
- package/dist/es6/checkbox/lib/CheckboxContainer.js +2 -2
- package/dist/es6/checkbox/lib/CheckboxInput.js +5 -5
- package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
- package/dist/es6/collection/index.d.ts +1 -1
- package/dist/es6/collection/index.d.ts.map +1 -1
- package/dist/es6/collection/index.js +1 -1
- package/dist/es6/collection/lib/ListBox.js +3 -3
- package/dist/es6/color-picker/lib/ColorInput.js +3 -3
- package/dist/es6/color-picker/lib/ColorPreview.js +1 -1
- package/dist/es6/color-picker/lib/parts/ColorSwatch.js +2 -2
- package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
- package/dist/es6/common/lib/AccessibleHide.js +1 -1
- package/dist/es6/common/lib/CanvasProvider.js +1 -1
- package/dist/es6/common/lib/EllipsisText.js +1 -1
- package/dist/es6/common/lib/styles/cornerShape.js +1 -1
- package/dist/es6/expandable/lib/Expandable.js +1 -1
- package/dist/es6/expandable/lib/ExpandableAvatar.js +1 -1
- package/dist/es6/expandable/lib/ExpandableContent.js +1 -1
- package/dist/es6/expandable/lib/ExpandableIcon.js +10 -10
- package/dist/es6/expandable/lib/ExpandableTarget.js +1 -1
- package/dist/es6/expandable/lib/ExpandableTitle.js +1 -1
- package/dist/es6/form-field/lib/FormFieldField.js +1 -1
- package/dist/es6/form-field/lib/FormFieldGroupLabel.js +5 -5
- package/dist/es6/form-field/lib/FormFieldGroupList.js +3 -3
- package/dist/es6/form-field/lib/FormFieldHint.js +3 -3
- package/dist/es6/form-field/lib/FormFieldLabel.js +6 -6
- package/dist/es6/form-field/lib/formFieldStencil.js +8 -8
- package/dist/es6/icon/lib/AccentIcon.js +2 -2
- package/dist/es6/icon/lib/AppletIcon.js +1 -1
- package/dist/es6/icon/lib/ExpressiveIcon.js +1 -1
- package/dist/es6/icon/lib/Graphic.js +4 -4
- package/dist/es6/icon/lib/Svg.js +3 -3
- package/dist/es6/icon/lib/SystemIcon.js +1 -1
- package/dist/es6/icon/lib/SystemIconCircle.js +2 -2
- package/dist/es6/information-highlight/lib/InformationHighlight.js +9 -9
- package/dist/es6/information-highlight/lib/parts/Body.js +3 -3
- package/dist/es6/information-highlight/lib/parts/Heading.js +3 -3
- package/dist/es6/information-highlight/lib/parts/Link.js +3 -3
- package/dist/es6/loading-dots/lib/LoadingDots.js +3 -3
- package/dist/es6/menu/lib/MenuCard.js +1 -1
- package/dist/es6/menu/lib/MenuDivider.js +1 -1
- package/dist/es6/menu/lib/MenuGroup.js +1 -1
- package/dist/es6/menu/lib/MenuItem.js +1 -1
- package/dist/es6/menu/lib/MenuList.js +3 -3
- package/dist/es6/menu/lib/MenuPopper.d.ts +5 -1
- package/dist/es6/menu/lib/MenuPopper.d.ts.map +1 -1
- package/dist/es6/menu/lib/MenuPopper.js +5 -1
- package/dist/es6/menu/lib/Submenu.d.ts.map +1 -1
- package/dist/es6/menu/lib/Submenu.js +70 -4
- package/dist/es6/modal/lib/ModalBody.js +1 -1
- package/dist/es6/modal/lib/ModalCard.js +1 -1
- package/dist/es6/modal/lib/ModalHeading.js +1 -1
- package/dist/es6/modal/lib/ModalOverflowOverlay.js +1 -1
- package/dist/es6/modal/lib/ModalOverlay.js +2 -2
- package/dist/es6/pagination/lib/Pagination/AdditionalDetails.js +2 -2
- package/dist/es6/pagination/lib/Pagination/Controls.js +2 -2
- package/dist/es6/pagination/lib/Pagination/GoTo/Form.js +1 -1
- package/dist/es6/pagination/lib/Pagination/GoTo/Label.js +1 -1
- package/dist/es6/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
- package/dist/es6/pagination/lib/Pagination/Nav.js +1 -1
- package/dist/es6/pagination/lib/Pagination/PageButton.js +2 -2
- package/dist/es6/pagination/lib/Pagination/PageList.js +1 -1
- package/dist/es6/pagination/lib/Pagination/Pagination.js +1 -1
- package/dist/es6/pagination/lib/Pagination/common/List.js +2 -2
- package/dist/es6/pill/lib/Pill.js +3 -3
- package/dist/es6/pill/lib/PillAvatar.js +1 -1
- package/dist/es6/pill/lib/PillCount.js +1 -1
- package/dist/es6/pill/lib/PillIcon.js +1 -1
- package/dist/es6/pill/lib/PillIconButton.js +1 -1
- package/dist/es6/pill/lib/PillLabel.js +1 -1
- package/dist/es6/popup/lib/Popper.d.ts +2 -1
- package/dist/es6/popup/lib/Popper.d.ts.map +1 -1
- package/dist/es6/popup/lib/Popper.js +4 -1
- package/dist/es6/popup/lib/PopupBody.js +1 -1
- package/dist/es6/popup/lib/PopupButtonGroup.js +5 -5
- package/dist/es6/popup/lib/PopupCard.js +2 -2
- package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
- package/dist/es6/popup/lib/PopupHeading.js +1 -1
- package/dist/es6/popup/lib/hooks/useDisableBodyScroll.js +1 -1
- package/dist/es6/segmented-control/lib/SegmentedControlItem.js +16 -16
- package/dist/es6/segmented-control/lib/SegmentedControlList.js +6 -6
- package/dist/es6/select/lib/SelectCard.js +1 -1
- package/dist/es6/select/lib/SelectInput.js +3 -3
- package/dist/es6/side-panel/lib/SidePanel.js +8 -8
- package/dist/es6/side-panel/lib/SidePanelHeading.js +3 -3
- package/dist/es6/side-panel/lib/SidePanelToggleButton.js +7 -7
- package/dist/es6/skeleton/lib/Skeleton.js +2 -2
- package/dist/es6/skeleton/lib/parts/SkeletonHeader.js +1 -1
- package/dist/es6/skeleton/lib/parts/SkeletonShape.js +2 -2
- package/dist/es6/skeleton/lib/parts/SkeletonText.js +2 -2
- package/dist/es6/switch/lib/Switch.js +7 -7
- package/dist/es6/table/lib/BaseTable.js +1 -1
- package/dist/es6/table/lib/Table.js +7 -7
- package/dist/es6/table/lib/parts/BaseTableBody.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableCaption.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableCell.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableHead.js +1 -1
- package/dist/es6/table/lib/parts/BaseTableHeader.js +1 -1
- package/dist/es6/table/lib/parts/css-grid-table/TableRow.js +1 -1
- package/dist/es6/tabs/lib/TabsItem.js +1 -1
- package/dist/es6/tabs/lib/TabsList.js +8 -8
- package/dist/es6/tabs/lib/TabsOverflowButton.js +1 -1
- package/dist/es6/testing/lib/ComponentStatesTable.js +1 -1
- package/dist/es6/text/lib/LabelText.js +6 -6
- package/dist/es6/text/lib/Text.js +16 -16
- package/dist/es6/text/lib/TypeLevelComponents.js +4 -4
- package/dist/es6/text-area/lib/TextArea.js +5 -5
- package/dist/es6/text-input/lib/InputGroup.js +7 -7
- package/dist/es6/text-input/lib/TextInput.js +5 -5
- package/dist/es6/toast/lib/Toast.js +1 -1
- package/dist/es6/toast/lib/ToastBody.js +1 -1
- package/dist/es6/toast/lib/ToastCloseIcon.js +1 -1
- package/dist/es6/toast/lib/ToastIcon.js +1 -1
- package/dist/es6/toast/lib/ToastMessage.js +1 -1
- package/dist/es6/tooltip/lib/TooltipContainer.js +4 -4
- package/dist/es6/version/lib/version.js +1 -1
- package/menu/lib/MenuPopper.tsx +6 -1
- package/menu/lib/Submenu.tsx +95 -9
- package/package.json +4 -4
- package/popup/lib/Popper.tsx +6 -2
package/menu/lib/Submenu.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {Rect} from '@popperjs/core';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
|
|
3
4
|
import {
|
|
@@ -11,10 +12,11 @@ import {
|
|
|
11
12
|
composeHooks,
|
|
12
13
|
createElemPropsHook,
|
|
13
14
|
createSubcomponent,
|
|
15
|
+
isElementRTL,
|
|
14
16
|
subModelHook,
|
|
15
17
|
useForkRef,
|
|
16
18
|
} from '@workday/canvas-kit-react/common';
|
|
17
|
-
import {Popper} from '@workday/canvas-kit-react/popup';
|
|
19
|
+
import {Placement, Popper} from '@workday/canvas-kit-react/popup';
|
|
18
20
|
import {chevronRightSmallIcon} from '@workday/canvas-system-icons-web';
|
|
19
21
|
|
|
20
22
|
import {MenuCard} from './MenuCard';
|
|
@@ -23,7 +25,7 @@ import {MenuGroup} from './MenuGroup';
|
|
|
23
25
|
import {MenuItem, StyledMenuItem, useMenuItemArrowReturn, useMenuItemFocus} from './MenuItem';
|
|
24
26
|
import {MenuList} from './MenuList';
|
|
25
27
|
import {MenuOption} from './MenuOption';
|
|
26
|
-
import {
|
|
28
|
+
import {menuPopperOffset, useMenuPopper} from './MenuPopper';
|
|
27
29
|
import {useMenuModel} from './useMenuModel';
|
|
28
30
|
|
|
29
31
|
type MenuModelConfig = (typeof useMenuModel)['TConfig'];
|
|
@@ -37,16 +39,100 @@ export interface SubmenuProps
|
|
|
37
39
|
children: React.ReactNode;
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
type ElementRef = React.RefObject<HTMLElement | null>;
|
|
43
|
+
|
|
44
|
+
// The target sits inside the parent menu, so placements are measured against the parent's visible
|
|
45
|
+
// box instead. Otherwise vertical placements cover the parent, and a target scrolled out of the
|
|
46
|
+
// parent's list fails the side placements' fallback checks.
|
|
47
|
+
const getSubmenuAnchorRects = (parentRef?: ElementRef, targetRef?: ElementRef) => {
|
|
48
|
+
const parentEl = parentRef?.current;
|
|
49
|
+
const targetEl = targetRef?.current;
|
|
50
|
+
if (!parentEl || !targetEl) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const parent = parentEl.getBoundingClientRect();
|
|
54
|
+
const target = targetEl.getBoundingClientRect();
|
|
55
|
+
const top = Math.min(Math.max(target.top, parent.top), parent.bottom);
|
|
56
|
+
const bottom = Math.max(Math.min(target.bottom, parent.bottom), parent.top);
|
|
57
|
+
return {parent, anchor: {top, bottom, left: parent.left, right: parent.right}};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const getSubmenuOffsetModifier = (parentRef?: ElementRef, targetRef?: ElementRef) => ({
|
|
61
|
+
name: 'offset',
|
|
62
|
+
options: {
|
|
63
|
+
// Popper includes these offsets when checking overflow, so vertical fallbacks are only chosen
|
|
64
|
+
// when the submenu fits fully above or below the parent.
|
|
65
|
+
offset: ({placement, popper}: {placement: Placement; popper: Rect}) => {
|
|
66
|
+
const [skidding, distance] = menuPopperOffset;
|
|
67
|
+
const rects = getSubmenuAnchorRects(parentRef, targetRef);
|
|
68
|
+
const side = placement.split('-')[0];
|
|
69
|
+
if (!rects || (side !== 'top' && side !== 'bottom')) {
|
|
70
|
+
return [skidding, distance];
|
|
71
|
+
}
|
|
72
|
+
const {parent, anchor} = rects;
|
|
73
|
+
const wanted = side === 'bottom' ? parent.bottom - anchor.bottom : anchor.top - parent.top;
|
|
74
|
+
// How far the submenu can move before it leaves the viewport it is portalled into.
|
|
75
|
+
const available =
|
|
76
|
+
side === 'bottom'
|
|
77
|
+
? document.documentElement.clientHeight - popper.height - distance - anchor.bottom
|
|
78
|
+
: anchor.top - distance - popper.height;
|
|
79
|
+
// Clear the parent where there is room, and clear as much of it as the viewport allows where
|
|
80
|
+
// there is not. Going further would only push the submenu off screen, and clamping to the
|
|
81
|
+
// viewport edge also holds the submenu still while the parent scrolls underneath it.
|
|
82
|
+
return [skidding, distance + Math.max(0, Math.min(wanted, available))];
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
40
87
|
export const SubmenuPopper = createSubcomponent('div')({
|
|
41
88
|
modelHook: useMenuModel,
|
|
42
89
|
elemPropsHook: useMenuPopper,
|
|
43
|
-
})<ExtractProps<typeof Popper>>(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
90
|
+
})<ExtractProps<typeof Popper>>(
|
|
91
|
+
({children, fallbackPlacements, popperOptions, ...elemProps}, Element, model) => {
|
|
92
|
+
const parentContainerRef = model.UNSTABLE_parentModel?.state.containerRef;
|
|
93
|
+
const targetRef = model.state.targetRef;
|
|
94
|
+
const align = targetRef.current && isElementRTL(targetRef.current) ? 'end' : 'start';
|
|
95
|
+
|
|
96
|
+
const submenuFallbackPlacements = React.useMemo(
|
|
97
|
+
(): Placement[] => fallbackPlacements ?? [`bottom-${align}`, `top-${align}`],
|
|
98
|
+
[fallbackPlacements, align]
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
// Popper measures this rect for both positioning and overflow checks, and still listens to the
|
|
102
|
+
// target's scroll containers through `anchorElement`.
|
|
103
|
+
const getAnchorClientRect = React.useCallback(() => {
|
|
104
|
+
const rects = getSubmenuAnchorRects(parentContainerRef, targetRef);
|
|
105
|
+
if (!rects) {
|
|
106
|
+
return targetRef.current?.getBoundingClientRect() ?? new DOMRect();
|
|
107
|
+
}
|
|
108
|
+
const {top, bottom, left, right} = rects.anchor;
|
|
109
|
+
return new DOMRect(left, top, right - left, bottom - top);
|
|
110
|
+
}, [parentContainerRef, targetRef]);
|
|
111
|
+
|
|
112
|
+
const submenuPopperOptions = React.useMemo(
|
|
113
|
+
() => ({
|
|
114
|
+
...popperOptions,
|
|
115
|
+
modifiers: [
|
|
116
|
+
getSubmenuOffsetModifier(parentContainerRef, targetRef),
|
|
117
|
+
...(popperOptions?.modifiers ?? []),
|
|
118
|
+
],
|
|
119
|
+
}),
|
|
120
|
+
[popperOptions, parentContainerRef, targetRef]
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
return (
|
|
124
|
+
<Popper
|
|
125
|
+
placement="right-start"
|
|
126
|
+
getAnchorClientRect={getAnchorClientRect}
|
|
127
|
+
fallbackPlacements={submenuFallbackPlacements}
|
|
128
|
+
popperOptions={submenuPopperOptions}
|
|
129
|
+
{...elemProps}
|
|
130
|
+
>
|
|
131
|
+
{children}
|
|
132
|
+
</Popper>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
);
|
|
50
136
|
|
|
51
137
|
const useIntentTimer = (fn: Function, waitMs: number = 0): {start(): void; clear(): void} => {
|
|
52
138
|
const timer = React.useRef<number | undefined>(undefined);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workday/canvas-kit-react",
|
|
3
|
-
"version": "16.2.
|
|
3
|
+
"version": "16.2.5",
|
|
4
4
|
"description": "The parent module that contains all Workday Canvas Kit React components",
|
|
5
5
|
"author": "Workday, Inc. (https://www.workday.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"@tanstack/react-virtual": "^3.13.9",
|
|
54
54
|
"@workday/canvas-colors-web": "^2.0.0",
|
|
55
55
|
"@workday/canvas-expressive-icons-web": "1.0.2",
|
|
56
|
-
"@workday/canvas-kit-popup-stack": "^16.2.
|
|
57
|
-
"@workday/canvas-kit-styling": "^16.2.
|
|
56
|
+
"@workday/canvas-kit-popup-stack": "^16.2.5",
|
|
57
|
+
"@workday/canvas-kit-styling": "^16.2.5",
|
|
58
58
|
"@workday/canvas-system-icons-web": "^5.0.3",
|
|
59
59
|
"@workday/canvas-tokens-web": "^4.4.0",
|
|
60
60
|
"@workday/design-assets-types": "^0.3.0",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"@workday/canvas-accent-icons-web": "^3.0.0",
|
|
70
70
|
"@workday/canvas-applet-icons-web": "^2.0.0"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "e5b96bcbbd1f827623f9e75b13699b74b4ac03dd"
|
|
73
73
|
}
|
package/popup/lib/Popper.tsx
CHANGED
|
@@ -36,7 +36,8 @@ export interface PopperProps {
|
|
|
36
36
|
* instead of calling `getBoundingClientRect` on the `anchorElement` prop. Use this when you need
|
|
37
37
|
* complete control over positioning. When this prop is specified, it is safe to pass `null` into the
|
|
38
38
|
* `anchorElement` prop. If `null` is passed into the `anchorElement` prop, an `owner` will not be
|
|
39
|
-
* provided for the `PopupStack`.
|
|
39
|
+
* provided for the `PopupStack`. If an `anchorElement` is also provided, Popper listens to its
|
|
40
|
+
* scroll containers and uses it for clipping, so the Popper still updates when it scrolls.
|
|
40
41
|
*/
|
|
41
42
|
getAnchorClientRect?: () => DOMRect;
|
|
42
43
|
/**
|
|
@@ -164,7 +165,10 @@ const OpenPopper = React.forwardRef<HTMLDivElement, PopperProps>(
|
|
|
164
165
|
// useLayoutEffect prevents flashing of the popup before position is determined
|
|
165
166
|
React.useLayoutEffect(() => {
|
|
166
167
|
const anchorEl = getAnchorClientRect
|
|
167
|
-
? {
|
|
168
|
+
? {
|
|
169
|
+
getBoundingClientRect: getAnchorClientRect,
|
|
170
|
+
contextElement: getElementFromRefOrElement(anchorElement ?? null),
|
|
171
|
+
}
|
|
168
172
|
: getElementFromRefOrElement(anchorElement ?? null);
|
|
169
173
|
if (!anchorEl) {
|
|
170
174
|
console.warn(
|