@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.
Files changed (302) hide show
  1. package/collection/index.ts +6 -1
  2. package/dist/commonjs/action-bar/lib/ActionBarList.js +1 -1
  3. package/dist/commonjs/action-bar/lib/ActionBarOverflowButton.js +1 -1
  4. package/dist/commonjs/avatar/lib/Avatar.js +13 -13
  5. package/dist/commonjs/avatar/lib/AvatarImage.js +1 -1
  6. package/dist/commonjs/avatar/lib/AvatarName.js +1 -1
  7. package/dist/commonjs/avatar/lib/BaseAvatar.js +14 -14
  8. package/dist/commonjs/badge/lib/CountBadge.js +6 -6
  9. package/dist/commonjs/banner/lib/Banner.js +5 -5
  10. package/dist/commonjs/banner/lib/BannerActionText.js +2 -2
  11. package/dist/commonjs/banner/lib/BannerIcon.js +1 -1
  12. package/dist/commonjs/banner/lib/BannerLabel.js +1 -1
  13. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
  14. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  15. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
  16. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsList.js +1 -1
  17. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
  18. package/dist/commonjs/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  19. package/dist/commonjs/button/lib/BaseButton.js +21 -21
  20. package/dist/commonjs/button/lib/DeleteButton.js +2 -2
  21. package/dist/commonjs/button/lib/ExternalHyperlink.js +1 -1
  22. package/dist/commonjs/button/lib/Hyperlink.js +5 -5
  23. package/dist/commonjs/button/lib/PrimaryButton.js +2 -2
  24. package/dist/commonjs/button/lib/SecondaryButton.js +2 -2
  25. package/dist/commonjs/button/lib/TertiaryButton.js +14 -14
  26. package/dist/commonjs/button/lib/ToolbarDropdownButton.js +3 -3
  27. package/dist/commonjs/button/lib/ToolbarIconButton.js +1 -1
  28. package/dist/commonjs/button/lib/parts/ButtonLabel.js +1 -1
  29. package/dist/commonjs/button/lib/parts/ButtonLabelIcon.js +5 -5
  30. package/dist/commonjs/card/lib/Card.js +3 -3
  31. package/dist/commonjs/card/lib/CardBody.js +1 -1
  32. package/dist/commonjs/card/lib/CardHeading.js +1 -1
  33. package/dist/commonjs/checkbox/lib/CheckBackground.js +6 -6
  34. package/dist/commonjs/checkbox/lib/CheckboxCheck.js +6 -6
  35. package/dist/commonjs/checkbox/lib/CheckboxContainer.js +2 -2
  36. package/dist/commonjs/checkbox/lib/CheckboxInput.js +5 -5
  37. package/dist/commonjs/checkbox/lib/CheckboxRipple.js +1 -1
  38. package/dist/commonjs/collection/index.d.ts +1 -1
  39. package/dist/commonjs/collection/index.d.ts.map +1 -1
  40. package/dist/commonjs/collection/lib/ListBox.js +3 -3
  41. package/dist/commonjs/color-picker/lib/ColorInput.js +3 -3
  42. package/dist/commonjs/color-picker/lib/ColorPreview.js +1 -1
  43. package/dist/commonjs/color-picker/lib/parts/ColorSwatch.js +2 -2
  44. package/dist/commonjs/combobox/lib/ComboboxMenuList.js +1 -1
  45. package/dist/commonjs/common/lib/AccessibleHide.js +1 -1
  46. package/dist/commonjs/common/lib/CanvasProvider.js +1 -1
  47. package/dist/commonjs/common/lib/EllipsisText.js +1 -1
  48. package/dist/commonjs/common/lib/styles/cornerShape.js +1 -1
  49. package/dist/commonjs/expandable/lib/Expandable.js +1 -1
  50. package/dist/commonjs/expandable/lib/ExpandableAvatar.js +1 -1
  51. package/dist/commonjs/expandable/lib/ExpandableContent.js +1 -1
  52. package/dist/commonjs/expandable/lib/ExpandableIcon.js +10 -10
  53. package/dist/commonjs/expandable/lib/ExpandableTarget.js +1 -1
  54. package/dist/commonjs/expandable/lib/ExpandableTitle.js +1 -1
  55. package/dist/commonjs/form-field/lib/FormFieldField.js +1 -1
  56. package/dist/commonjs/form-field/lib/FormFieldGroupLabel.js +5 -5
  57. package/dist/commonjs/form-field/lib/FormFieldGroupList.js +3 -3
  58. package/dist/commonjs/form-field/lib/FormFieldHint.js +3 -3
  59. package/dist/commonjs/form-field/lib/FormFieldLabel.js +6 -6
  60. package/dist/commonjs/form-field/lib/formFieldStencil.js +8 -8
  61. package/dist/commonjs/icon/lib/AccentIcon.js +2 -2
  62. package/dist/commonjs/icon/lib/AppletIcon.js +1 -1
  63. package/dist/commonjs/icon/lib/ExpressiveIcon.js +1 -1
  64. package/dist/commonjs/icon/lib/Graphic.js +4 -4
  65. package/dist/commonjs/icon/lib/Svg.js +3 -3
  66. package/dist/commonjs/icon/lib/SystemIcon.js +1 -1
  67. package/dist/commonjs/icon/lib/SystemIconCircle.js +2 -2
  68. package/dist/commonjs/information-highlight/lib/InformationHighlight.js +9 -9
  69. package/dist/commonjs/information-highlight/lib/parts/Body.js +3 -3
  70. package/dist/commonjs/information-highlight/lib/parts/Heading.js +3 -3
  71. package/dist/commonjs/information-highlight/lib/parts/Link.js +3 -3
  72. package/dist/commonjs/loading-dots/lib/LoadingDots.js +3 -3
  73. package/dist/commonjs/menu/lib/MenuCard.js +1 -1
  74. package/dist/commonjs/menu/lib/MenuDivider.js +1 -1
  75. package/dist/commonjs/menu/lib/MenuGroup.js +1 -1
  76. package/dist/commonjs/menu/lib/MenuItem.js +1 -1
  77. package/dist/commonjs/menu/lib/MenuList.js +3 -3
  78. package/dist/commonjs/menu/lib/MenuPopper.d.ts +5 -1
  79. package/dist/commonjs/menu/lib/MenuPopper.d.ts.map +1 -1
  80. package/dist/commonjs/menu/lib/MenuPopper.js +6 -2
  81. package/dist/commonjs/menu/lib/Submenu.d.ts.map +1 -1
  82. package/dist/commonjs/menu/lib/Submenu.js +68 -2
  83. package/dist/commonjs/modal/lib/ModalBody.js +1 -1
  84. package/dist/commonjs/modal/lib/ModalCard.js +1 -1
  85. package/dist/commonjs/modal/lib/ModalHeading.js +1 -1
  86. package/dist/commonjs/modal/lib/ModalOverflowOverlay.js +1 -1
  87. package/dist/commonjs/modal/lib/ModalOverlay.js +2 -2
  88. package/dist/commonjs/pagination/lib/Pagination/AdditionalDetails.js +2 -2
  89. package/dist/commonjs/pagination/lib/Pagination/Controls.js +2 -2
  90. package/dist/commonjs/pagination/lib/Pagination/GoTo/Form.js +1 -1
  91. package/dist/commonjs/pagination/lib/Pagination/GoTo/Label.js +1 -1
  92. package/dist/commonjs/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
  93. package/dist/commonjs/pagination/lib/Pagination/Nav.js +1 -1
  94. package/dist/commonjs/pagination/lib/Pagination/PageButton.js +2 -2
  95. package/dist/commonjs/pagination/lib/Pagination/PageList.js +1 -1
  96. package/dist/commonjs/pagination/lib/Pagination/Pagination.js +1 -1
  97. package/dist/commonjs/pagination/lib/Pagination/common/List.js +2 -2
  98. package/dist/commonjs/pill/lib/Pill.js +3 -3
  99. package/dist/commonjs/pill/lib/PillAvatar.js +1 -1
  100. package/dist/commonjs/pill/lib/PillCount.js +1 -1
  101. package/dist/commonjs/pill/lib/PillIcon.js +1 -1
  102. package/dist/commonjs/pill/lib/PillIconButton.js +1 -1
  103. package/dist/commonjs/pill/lib/PillLabel.js +1 -1
  104. package/dist/commonjs/popup/lib/Popper.d.ts +2 -1
  105. package/dist/commonjs/popup/lib/Popper.d.ts.map +1 -1
  106. package/dist/commonjs/popup/lib/Popper.js +4 -1
  107. package/dist/commonjs/popup/lib/PopupBody.js +1 -1
  108. package/dist/commonjs/popup/lib/PopupButtonGroup.js +5 -5
  109. package/dist/commonjs/popup/lib/PopupCard.js +2 -2
  110. package/dist/commonjs/popup/lib/PopupCloseIcon.js +1 -1
  111. package/dist/commonjs/popup/lib/PopupHeading.js +1 -1
  112. package/dist/commonjs/popup/lib/hooks/useDisableBodyScroll.js +1 -1
  113. package/dist/commonjs/segmented-control/lib/SegmentedControlItem.js +16 -16
  114. package/dist/commonjs/segmented-control/lib/SegmentedControlList.js +6 -6
  115. package/dist/commonjs/select/lib/SelectCard.js +1 -1
  116. package/dist/commonjs/select/lib/SelectInput.js +3 -3
  117. package/dist/commonjs/side-panel/lib/SidePanel.js +8 -8
  118. package/dist/commonjs/side-panel/lib/SidePanelHeading.js +3 -3
  119. package/dist/commonjs/side-panel/lib/SidePanelToggleButton.js +7 -7
  120. package/dist/commonjs/skeleton/lib/Skeleton.js +2 -2
  121. package/dist/commonjs/skeleton/lib/parts/SkeletonHeader.js +1 -1
  122. package/dist/commonjs/skeleton/lib/parts/SkeletonShape.js +2 -2
  123. package/dist/commonjs/skeleton/lib/parts/SkeletonText.js +2 -2
  124. package/dist/commonjs/switch/lib/Switch.js +7 -7
  125. package/dist/commonjs/table/lib/BaseTable.js +1 -1
  126. package/dist/commonjs/table/lib/Table.js +7 -7
  127. package/dist/commonjs/table/lib/parts/BaseTableBody.js +1 -1
  128. package/dist/commonjs/table/lib/parts/BaseTableCaption.js +1 -1
  129. package/dist/commonjs/table/lib/parts/BaseTableCell.js +1 -1
  130. package/dist/commonjs/table/lib/parts/BaseTableHead.js +1 -1
  131. package/dist/commonjs/table/lib/parts/BaseTableHeader.js +1 -1
  132. package/dist/commonjs/table/lib/parts/css-grid-table/TableRow.js +1 -1
  133. package/dist/commonjs/tabs/lib/TabsItem.js +1 -1
  134. package/dist/commonjs/tabs/lib/TabsList.js +8 -8
  135. package/dist/commonjs/tabs/lib/TabsOverflowButton.js +1 -1
  136. package/dist/commonjs/testing/lib/ComponentStatesTable.js +1 -1
  137. package/dist/commonjs/text/lib/LabelText.js +6 -6
  138. package/dist/commonjs/text/lib/Text.js +16 -16
  139. package/dist/commonjs/text/lib/TypeLevelComponents.js +4 -4
  140. package/dist/commonjs/text-area/lib/TextArea.js +5 -5
  141. package/dist/commonjs/text-input/lib/InputGroup.js +7 -7
  142. package/dist/commonjs/text-input/lib/TextInput.js +5 -5
  143. package/dist/commonjs/toast/lib/Toast.js +1 -1
  144. package/dist/commonjs/toast/lib/ToastBody.js +1 -1
  145. package/dist/commonjs/toast/lib/ToastCloseIcon.js +1 -1
  146. package/dist/commonjs/toast/lib/ToastIcon.js +1 -1
  147. package/dist/commonjs/toast/lib/ToastMessage.js +1 -1
  148. package/dist/commonjs/tooltip/lib/TooltipContainer.js +4 -4
  149. package/dist/commonjs/version/lib/version.js +1 -1
  150. package/dist/es6/action-bar/lib/ActionBarList.js +1 -1
  151. package/dist/es6/action-bar/lib/ActionBarOverflowButton.js +1 -1
  152. package/dist/es6/avatar/lib/Avatar.js +13 -13
  153. package/dist/es6/avatar/lib/AvatarImage.js +1 -1
  154. package/dist/es6/avatar/lib/AvatarName.js +1 -1
  155. package/dist/es6/avatar/lib/BaseAvatar.js +14 -14
  156. package/dist/es6/badge/lib/CountBadge.js +6 -6
  157. package/dist/es6/banner/lib/Banner.js +5 -5
  158. package/dist/es6/banner/lib/BannerActionText.js +2 -2
  159. package/dist/es6/banner/lib/BannerIcon.js +1 -1
  160. package/dist/es6/banner/lib/BannerLabel.js +1 -1
  161. package/dist/es6/breadcrumbs/lib/BreadcrumbsCurrentItem.js +1 -1
  162. package/dist/es6/breadcrumbs/lib/BreadcrumbsItem.js +1 -1
  163. package/dist/es6/breadcrumbs/lib/BreadcrumbsLink.js +1 -1
  164. package/dist/es6/breadcrumbs/lib/BreadcrumbsList.js +1 -1
  165. package/dist/es6/breadcrumbs/lib/BreadcrumbsMenu.js +2 -2
  166. package/dist/es6/breadcrumbs/lib/BreadcrumbsOverflowButton.js +1 -1
  167. package/dist/es6/button/lib/BaseButton.js +21 -21
  168. package/dist/es6/button/lib/DeleteButton.js +2 -2
  169. package/dist/es6/button/lib/ExternalHyperlink.js +1 -1
  170. package/dist/es6/button/lib/Hyperlink.js +5 -5
  171. package/dist/es6/button/lib/PrimaryButton.js +2 -2
  172. package/dist/es6/button/lib/SecondaryButton.js +2 -2
  173. package/dist/es6/button/lib/TertiaryButton.js +14 -14
  174. package/dist/es6/button/lib/ToolbarDropdownButton.js +3 -3
  175. package/dist/es6/button/lib/ToolbarIconButton.js +1 -1
  176. package/dist/es6/button/lib/parts/ButtonLabel.js +1 -1
  177. package/dist/es6/button/lib/parts/ButtonLabelIcon.js +5 -5
  178. package/dist/es6/card/lib/Card.js +3 -3
  179. package/dist/es6/card/lib/CardBody.js +1 -1
  180. package/dist/es6/card/lib/CardHeading.js +1 -1
  181. package/dist/es6/checkbox/lib/CheckBackground.js +6 -6
  182. package/dist/es6/checkbox/lib/CheckboxCheck.js +6 -6
  183. package/dist/es6/checkbox/lib/CheckboxContainer.js +2 -2
  184. package/dist/es6/checkbox/lib/CheckboxInput.js +5 -5
  185. package/dist/es6/checkbox/lib/CheckboxRipple.js +1 -1
  186. package/dist/es6/collection/index.d.ts +1 -1
  187. package/dist/es6/collection/index.d.ts.map +1 -1
  188. package/dist/es6/collection/index.js +1 -1
  189. package/dist/es6/collection/lib/ListBox.js +3 -3
  190. package/dist/es6/color-picker/lib/ColorInput.js +3 -3
  191. package/dist/es6/color-picker/lib/ColorPreview.js +1 -1
  192. package/dist/es6/color-picker/lib/parts/ColorSwatch.js +2 -2
  193. package/dist/es6/combobox/lib/ComboboxMenuList.js +1 -1
  194. package/dist/es6/common/lib/AccessibleHide.js +1 -1
  195. package/dist/es6/common/lib/CanvasProvider.js +1 -1
  196. package/dist/es6/common/lib/EllipsisText.js +1 -1
  197. package/dist/es6/common/lib/styles/cornerShape.js +1 -1
  198. package/dist/es6/expandable/lib/Expandable.js +1 -1
  199. package/dist/es6/expandable/lib/ExpandableAvatar.js +1 -1
  200. package/dist/es6/expandable/lib/ExpandableContent.js +1 -1
  201. package/dist/es6/expandable/lib/ExpandableIcon.js +10 -10
  202. package/dist/es6/expandable/lib/ExpandableTarget.js +1 -1
  203. package/dist/es6/expandable/lib/ExpandableTitle.js +1 -1
  204. package/dist/es6/form-field/lib/FormFieldField.js +1 -1
  205. package/dist/es6/form-field/lib/FormFieldGroupLabel.js +5 -5
  206. package/dist/es6/form-field/lib/FormFieldGroupList.js +3 -3
  207. package/dist/es6/form-field/lib/FormFieldHint.js +3 -3
  208. package/dist/es6/form-field/lib/FormFieldLabel.js +6 -6
  209. package/dist/es6/form-field/lib/formFieldStencil.js +8 -8
  210. package/dist/es6/icon/lib/AccentIcon.js +2 -2
  211. package/dist/es6/icon/lib/AppletIcon.js +1 -1
  212. package/dist/es6/icon/lib/ExpressiveIcon.js +1 -1
  213. package/dist/es6/icon/lib/Graphic.js +4 -4
  214. package/dist/es6/icon/lib/Svg.js +3 -3
  215. package/dist/es6/icon/lib/SystemIcon.js +1 -1
  216. package/dist/es6/icon/lib/SystemIconCircle.js +2 -2
  217. package/dist/es6/information-highlight/lib/InformationHighlight.js +9 -9
  218. package/dist/es6/information-highlight/lib/parts/Body.js +3 -3
  219. package/dist/es6/information-highlight/lib/parts/Heading.js +3 -3
  220. package/dist/es6/information-highlight/lib/parts/Link.js +3 -3
  221. package/dist/es6/loading-dots/lib/LoadingDots.js +3 -3
  222. package/dist/es6/menu/lib/MenuCard.js +1 -1
  223. package/dist/es6/menu/lib/MenuDivider.js +1 -1
  224. package/dist/es6/menu/lib/MenuGroup.js +1 -1
  225. package/dist/es6/menu/lib/MenuItem.js +1 -1
  226. package/dist/es6/menu/lib/MenuList.js +3 -3
  227. package/dist/es6/menu/lib/MenuPopper.d.ts +5 -1
  228. package/dist/es6/menu/lib/MenuPopper.d.ts.map +1 -1
  229. package/dist/es6/menu/lib/MenuPopper.js +5 -1
  230. package/dist/es6/menu/lib/Submenu.d.ts.map +1 -1
  231. package/dist/es6/menu/lib/Submenu.js +70 -4
  232. package/dist/es6/modal/lib/ModalBody.js +1 -1
  233. package/dist/es6/modal/lib/ModalCard.js +1 -1
  234. package/dist/es6/modal/lib/ModalHeading.js +1 -1
  235. package/dist/es6/modal/lib/ModalOverflowOverlay.js +1 -1
  236. package/dist/es6/modal/lib/ModalOverlay.js +2 -2
  237. package/dist/es6/pagination/lib/Pagination/AdditionalDetails.js +2 -2
  238. package/dist/es6/pagination/lib/Pagination/Controls.js +2 -2
  239. package/dist/es6/pagination/lib/Pagination/GoTo/Form.js +1 -1
  240. package/dist/es6/pagination/lib/Pagination/GoTo/Label.js +1 -1
  241. package/dist/es6/pagination/lib/Pagination/GoTo/TextInput.js +1 -1
  242. package/dist/es6/pagination/lib/Pagination/Nav.js +1 -1
  243. package/dist/es6/pagination/lib/Pagination/PageButton.js +2 -2
  244. package/dist/es6/pagination/lib/Pagination/PageList.js +1 -1
  245. package/dist/es6/pagination/lib/Pagination/Pagination.js +1 -1
  246. package/dist/es6/pagination/lib/Pagination/common/List.js +2 -2
  247. package/dist/es6/pill/lib/Pill.js +3 -3
  248. package/dist/es6/pill/lib/PillAvatar.js +1 -1
  249. package/dist/es6/pill/lib/PillCount.js +1 -1
  250. package/dist/es6/pill/lib/PillIcon.js +1 -1
  251. package/dist/es6/pill/lib/PillIconButton.js +1 -1
  252. package/dist/es6/pill/lib/PillLabel.js +1 -1
  253. package/dist/es6/popup/lib/Popper.d.ts +2 -1
  254. package/dist/es6/popup/lib/Popper.d.ts.map +1 -1
  255. package/dist/es6/popup/lib/Popper.js +4 -1
  256. package/dist/es6/popup/lib/PopupBody.js +1 -1
  257. package/dist/es6/popup/lib/PopupButtonGroup.js +5 -5
  258. package/dist/es6/popup/lib/PopupCard.js +2 -2
  259. package/dist/es6/popup/lib/PopupCloseIcon.js +1 -1
  260. package/dist/es6/popup/lib/PopupHeading.js +1 -1
  261. package/dist/es6/popup/lib/hooks/useDisableBodyScroll.js +1 -1
  262. package/dist/es6/segmented-control/lib/SegmentedControlItem.js +16 -16
  263. package/dist/es6/segmented-control/lib/SegmentedControlList.js +6 -6
  264. package/dist/es6/select/lib/SelectCard.js +1 -1
  265. package/dist/es6/select/lib/SelectInput.js +3 -3
  266. package/dist/es6/side-panel/lib/SidePanel.js +8 -8
  267. package/dist/es6/side-panel/lib/SidePanelHeading.js +3 -3
  268. package/dist/es6/side-panel/lib/SidePanelToggleButton.js +7 -7
  269. package/dist/es6/skeleton/lib/Skeleton.js +2 -2
  270. package/dist/es6/skeleton/lib/parts/SkeletonHeader.js +1 -1
  271. package/dist/es6/skeleton/lib/parts/SkeletonShape.js +2 -2
  272. package/dist/es6/skeleton/lib/parts/SkeletonText.js +2 -2
  273. package/dist/es6/switch/lib/Switch.js +7 -7
  274. package/dist/es6/table/lib/BaseTable.js +1 -1
  275. package/dist/es6/table/lib/Table.js +7 -7
  276. package/dist/es6/table/lib/parts/BaseTableBody.js +1 -1
  277. package/dist/es6/table/lib/parts/BaseTableCaption.js +1 -1
  278. package/dist/es6/table/lib/parts/BaseTableCell.js +1 -1
  279. package/dist/es6/table/lib/parts/BaseTableHead.js +1 -1
  280. package/dist/es6/table/lib/parts/BaseTableHeader.js +1 -1
  281. package/dist/es6/table/lib/parts/css-grid-table/TableRow.js +1 -1
  282. package/dist/es6/tabs/lib/TabsItem.js +1 -1
  283. package/dist/es6/tabs/lib/TabsList.js +8 -8
  284. package/dist/es6/tabs/lib/TabsOverflowButton.js +1 -1
  285. package/dist/es6/testing/lib/ComponentStatesTable.js +1 -1
  286. package/dist/es6/text/lib/LabelText.js +6 -6
  287. package/dist/es6/text/lib/Text.js +16 -16
  288. package/dist/es6/text/lib/TypeLevelComponents.js +4 -4
  289. package/dist/es6/text-area/lib/TextArea.js +5 -5
  290. package/dist/es6/text-input/lib/InputGroup.js +7 -7
  291. package/dist/es6/text-input/lib/TextInput.js +5 -5
  292. package/dist/es6/toast/lib/Toast.js +1 -1
  293. package/dist/es6/toast/lib/ToastBody.js +1 -1
  294. package/dist/es6/toast/lib/ToastCloseIcon.js +1 -1
  295. package/dist/es6/toast/lib/ToastIcon.js +1 -1
  296. package/dist/es6/toast/lib/ToastMessage.js +1 -1
  297. package/dist/es6/tooltip/lib/TooltipContainer.js +4 -4
  298. package/dist/es6/version/lib/version.js +1 -1
  299. package/menu/lib/MenuPopper.tsx +6 -1
  300. package/menu/lib/Submenu.tsx +95 -9
  301. package/package.json +4 -4
  302. package/popup/lib/Popper.tsx +6 -2
@@ -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 {defaultMenuPopperOptions, useMenuPopper} from './MenuPopper';
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>>(({children, ...elemProps}) => {
44
- return (
45
- <Popper placement="right-start" popperOptions={defaultMenuPopperOptions} {...elemProps}>
46
- {children}
47
- </Popper>
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",
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.3",
57
- "@workday/canvas-kit-styling": "^16.2.3",
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": "dd5a27ab062642ac115722808e063150f7866115"
72
+ "gitHead": "e5b96bcbbd1f827623f9e75b13699b74b4ac03dd"
73
73
  }
@@ -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
- ? {getBoundingClientRect: getAnchorClientRect}
168
+ ? {
169
+ getBoundingClientRect: getAnchorClientRect,
170
+ contextElement: getElementFromRefOrElement(anchorElement ?? null),
171
+ }
168
172
  : getElementFromRefOrElement(anchorElement ?? null);
169
173
  if (!anchorEl) {
170
174
  console.warn(