@procore/core-react 12.41.0 → 12.43.0

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 (261) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.js +11 -5
  3. package/dist/AnchorNavigation/AnchorNavigation.js.map +1 -1
  4. package/dist/AnchorNavigation/AnchorNavigation.styles.d.ts +1 -0
  5. package/dist/AnchorNavigation/AnchorNavigation.styles.js +7 -3
  6. package/dist/AnchorNavigation/AnchorNavigation.styles.js.map +1 -1
  7. package/dist/AnchorNavigation/AnchorNavigation.types.d.ts +7 -1
  8. package/dist/AnchorNavigation/AnchorNavigation.types.js.map +1 -1
  9. package/dist/Avatar/Avatar.styles.js +5 -5
  10. package/dist/AvatarStack/AvatarStack.styles.d.ts +74 -74
  11. package/dist/AvatarStack/AvatarStack.styles.js +7 -7
  12. package/dist/Badge/Badge.styles.js +2 -2
  13. package/dist/BadgePill/BadgePill.styles.js +4 -4
  14. package/dist/Banner/Banner.styles.js +10 -10
  15. package/dist/Box/Box.styles.js +1 -1
  16. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  17. package/dist/Button/Button.styles.js +5 -5
  18. package/dist/Button/Button.types.d.ts +1 -4
  19. package/dist/Button/Button.types.js.map +1 -1
  20. package/dist/Button/index.d.ts +1 -1
  21. package/dist/Button/index.js.map +1 -1
  22. package/dist/Calendar/Calendar.styles.js +9 -9
  23. package/dist/Card/Card.styles.js +1 -1
  24. package/dist/Checkbox/Checkbox.js +1 -0
  25. package/dist/Checkbox/Checkbox.js.map +1 -1
  26. package/dist/Checkbox/Checkbox.styles.js +6 -6
  27. package/dist/ContactItem/ContactItem.js +7 -3
  28. package/dist/ContactItem/ContactItem.js.map +1 -1
  29. package/dist/ContactItem/ContactItem.styles.js +5 -5
  30. package/dist/Content/Content.styles.js +2 -2
  31. package/dist/DateInput/DateInput.js +9 -0
  32. package/dist/DateInput/DateInput.js.map +1 -1
  33. package/dist/DateInput/DateInput.styles.js +6 -6
  34. package/dist/DetailPage/DetailPage.styles.js +7 -7
  35. package/dist/Dropdown/Dropdown.styles.js +3 -3
  36. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  37. package/dist/Dropzone/Dropzone.js +1 -1
  38. package/dist/Dropzone/Dropzone.styles.js +9 -9
  39. package/dist/EmptyState/EmptyState.styles.js +6 -6
  40. package/dist/Field/Field.styles.js +3 -3
  41. package/dist/FileList/FileList.styles.js +3 -3
  42. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  43. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  44. package/dist/FileSelect/FileSelect.styles.js +2 -2
  45. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  46. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  47. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  48. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  49. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  50. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.d.ts +1 -1
  51. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  52. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  53. package/dist/FileToken/FileToken.styles.js +6 -6
  54. package/dist/FileToken/FileTokenInner.js +1 -3
  55. package/dist/FileToken/FileTokenInner.js.map +1 -1
  56. package/dist/FilterToken/FilterToken.styles.js +5 -5
  57. package/dist/FlexList/FlexList.styles.js +1 -1
  58. package/dist/Form/Form.styles.js +13 -13
  59. package/dist/Form/StyledFormikForm.styles.d.ts +2 -2
  60. package/dist/Form/StyledFormikForm.styles.js +2 -2
  61. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  62. package/dist/Grid/Grid.styles.js +2 -2
  63. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  64. package/dist/Input/Input.styles.js +1 -1
  65. package/dist/Link/Link.styles.js +1 -1
  66. package/dist/ListPage/ListPage.styles.js +8 -8
  67. package/dist/Loader/Loader.styles.js +2 -2
  68. package/dist/MenuImperative/MenuImperative.d.ts +1 -1
  69. package/dist/MenuImperative/MenuImperative.js +126 -34
  70. package/dist/MenuImperative/MenuImperative.js.map +1 -1
  71. package/dist/MenuImperative/MenuImperative.styles.js +15 -15
  72. package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
  73. package/dist/MenuImperative/MenuImperative.types.d.ts +36 -0
  74. package/dist/MenuImperative/MenuImperative.types.js.map +1 -1
  75. package/dist/MenuImperative/sensors.d.ts +6 -3
  76. package/dist/MenuImperative/sensors.js +42 -34
  77. package/dist/MenuImperative/sensors.js.map +1 -1
  78. package/dist/Modal/Modal.d.ts +4 -0
  79. package/dist/Modal/Modal.js +30 -14
  80. package/dist/Modal/Modal.js.map +1 -1
  81. package/dist/Modal/Modal.styles.js +13 -13
  82. package/dist/Modal/Modal.types.d.ts +28 -5
  83. package/dist/Modal/Modal.types.js.map +1 -1
  84. package/dist/Modal/index.d.ts +1 -1
  85. package/dist/Modal/index.js.map +1 -1
  86. package/dist/MultiSelect/MultiSelect.js +7 -5
  87. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  88. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  89. package/dist/NextMenu/NextMenu.styles.js +3 -3
  90. package/dist/Notation/Notation.js +1 -1
  91. package/dist/NumberInput/NumberInput.styles.js +7 -7
  92. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  93. package/dist/OverlayTrigger/a11yPresets.d.ts +23 -30
  94. package/dist/OverlayTrigger/a11yPresets.js +29 -27
  95. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  96. package/dist/PageLayout/PageLayout.styles.d.ts +1 -1
  97. package/dist/PageLayout/PageLayout.styles.js +16 -16
  98. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
  99. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  100. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  101. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  102. package/dist/Pagination/Pagination.styles.js +5 -5
  103. package/dist/Panel/Panel.styles.js +11 -11
  104. package/dist/Pill/Pill.styles.js +3 -3
  105. package/dist/PillSelect/PillSelect.styles.js +4 -4
  106. package/dist/Popover/Popover.styles.js +2 -2
  107. package/dist/Portal/Portal.styles.js +1 -1
  108. package/dist/ProgressBar/ProgressBar.styles.js +4 -4
  109. package/dist/ProgressBar/ProgressBar.styles.js.map +1 -1
  110. package/dist/RadioButton/RadioButton.styles.js +3 -3
  111. package/dist/Required/Required.styles.js +3 -3
  112. package/dist/Search/Search.styles.js +5 -5
  113. package/dist/Section/Section.styles.js +7 -7
  114. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  115. package/dist/Select/Select.js +3 -2
  116. package/dist/Select/Select.js.map +1 -1
  117. package/dist/Select/Select.styles.js +8 -8
  118. package/dist/Semantic/Semantic.styles.d.ts +74 -74
  119. package/dist/Semantic/Semantic.styles.js +9 -9
  120. package/dist/Slider/Slider.styles.js +5 -5
  121. package/dist/Spinner/Spinner.styles.js +7 -7
  122. package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
  123. package/dist/SuperSelect/SuperSelect.components.js +35 -22
  124. package/dist/SuperSelect/SuperSelect.components.js.map +1 -1
  125. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  126. package/dist/SuperSelect/SuperSelect.styles.d.ts +4 -2
  127. package/dist/SuperSelect/SuperSelect.styles.js +49 -42
  128. package/dist/SuperSelect/SuperSelect.styles.js.map +1 -1
  129. package/dist/SuperSelect/SuperSelect.types.d.ts +3 -4
  130. package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
  131. package/dist/SuperSelect/presets/filterPreset.js +7 -2
  132. package/dist/SuperSelect/presets/filterPreset.js.map +1 -1
  133. package/dist/SuperSelect/useSuperSelect.d.ts +1 -1
  134. package/dist/SuperSelect/useSuperSelect.js +117 -90
  135. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  136. package/dist/Switch/Switch.styles.js +4 -4
  137. package/dist/Table/Table.styles.js +28 -28
  138. package/dist/TableShelf/TableShelf.styles.js +5 -5
  139. package/dist/Tabs/Tabs.js +1 -1
  140. package/dist/Tabs/Tabs.js.map +1 -1
  141. package/dist/Tabs/Tabs.styles.js +15 -15
  142. package/dist/Tearsheet/Tearsheet.js +1 -1
  143. package/dist/Tearsheet/Tearsheet.js.map +1 -1
  144. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  145. package/dist/Tearsheet/storybook/PageLayoutDemo.js +1 -0
  146. package/dist/Tearsheet/storybook/PageLayoutDemo.js.map +1 -1
  147. package/dist/TextArea/TextArea.styles.js +1 -1
  148. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  149. package/dist/Thumbnail/Thumbnail.hooks.d.ts +58 -58
  150. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  151. package/dist/ThumbnailGrid/ThumbnailGrid.styles.d.ts +1 -1
  152. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  153. package/dist/TieredSelect/TieredSelect.styles.d.ts +1 -1
  154. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  155. package/dist/Tile/Tile.styles.js +8 -8
  156. package/dist/Title/Title.styles.js +7 -7
  157. package/dist/Toast/Toast.styles.js +3 -3
  158. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  159. package/dist/Token/Token.js +1 -1
  160. package/dist/Token/Token.js.map +1 -1
  161. package/dist/Token/Token.styles.js +3 -3
  162. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  163. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  164. package/dist/ToolLandingPageTemplate/ToolLandingPageTemplate.d.ts +1 -1
  165. package/dist/Tooltip/Tooltip.styles.js +3 -3
  166. package/dist/Tree/Tree.js +1 -1
  167. package/dist/Tree/Tree.styles.js +10 -10
  168. package/dist/Typeahead/Typeahead.js +7 -3
  169. package/dist/Typeahead/Typeahead.js.map +1 -1
  170. package/dist/Typeahead/Typeahead.styles.js +3 -3
  171. package/dist/Typography/Typography.styles.js +1 -1
  172. package/dist/Typography/Typography.table.story.js +2 -2
  173. package/dist/Typography/Typography.types.d.ts +1 -0
  174. package/dist/Typography/Typography.types.js.map +1 -1
  175. package/dist/_hooks/I18n.d.ts +28 -0
  176. package/dist/_locales/en.json +15 -1
  177. package/dist/_locales/pseudo.json +15 -1
  178. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  179. package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
  180. package/dist/_styles/colors.js +1 -3
  181. package/dist/_styles/colors.js.map +1 -1
  182. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +13 -3
  183. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  184. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  185. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  186. package/dist/_typedoc/Banner/Banner.types.json +15 -15
  187. package/dist/_typedoc/Box/Box.types.json +72 -72
  188. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  189. package/dist/_typedoc/Button/Button.types.json +17 -17
  190. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  191. package/dist/_typedoc/Card/Card.types.json +6 -6
  192. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  193. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  194. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  195. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  196. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  197. package/dist/_typedoc/Dropdown/Dropdown.types.json +39 -39
  198. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +31 -31
  199. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  200. package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
  201. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  202. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  203. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  204. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  205. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  206. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  207. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  208. package/dist/_typedoc/Form/Form.types.json +832 -832
  209. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  210. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  211. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +54 -54
  212. package/dist/_typedoc/Input/Input.types.json +2 -2
  213. package/dist/_typedoc/Link/Link.types.json +1 -1
  214. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  215. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  216. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +147 -77
  217. package/dist/_typedoc/Modal/Modal.types.json +96 -68
  218. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +33 -33
  219. package/dist/_typedoc/NextTile/NextTile.types.json +32 -32
  220. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  221. package/dist/_typedoc/NumberInput/NumberInput.types.json +54 -54
  222. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
  223. package/dist/_typedoc/PageLayout/PageLayout.types.json +28 -28
  224. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  225. package/dist/_typedoc/Panel/Panel.types.json +27 -27
  226. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  227. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  228. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  229. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  230. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  231. package/dist/_typedoc/Required/Required.types.json +5 -5
  232. package/dist/_typedoc/Search/Search.types.json +18 -18
  233. package/dist/_typedoc/Section/Section.types.json +15 -15
  234. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  235. package/dist/_typedoc/Select/Select.types.json +69 -69
  236. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  237. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  238. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  239. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  240. package/dist/_typedoc/Table/Table.types.json +102 -102
  241. package/dist/_typedoc/Tabs/Tabs.types.json +21 -21
  242. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  243. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  244. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  245. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  246. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  247. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  248. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  249. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  250. package/dist/_typedoc/Title/Title.types.json +3 -3
  251. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  252. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  253. package/dist/_typedoc/Token/Token.types.json +7 -7
  254. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  255. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +10 -10
  256. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  257. package/dist/_typedoc/Tree/Tree.types.json +90 -90
  258. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  259. package/dist/_typedoc/Typography/Typography.types.json +12 -11
  260. package/dist/_typedoc/_utils/types.json +3 -3
  261. package/package.json +3 -3
@@ -1,11 +1,12 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
2
  var _excluded = ["circular", "onDragEnd", "onScrollBottom", "onSelect", "role", "onChangeActiveDescendant", "onKeyboardNavigation", "id", "multiple"],
3
- _excluded2 = ["clickable", "item", "id", "label", "children"],
4
- _excluded3 = ["hasCheckbox", "children", "selected", "provided"],
5
- _excluded4 = ["as", "children", "item", "onClick", "selected", "suggested", "disabled", "id", "role", "restoreFocus", "draggableId", "draggableIndex", "droppableIn"],
6
- _excluded5 = ["selected", "disabled", "error", "indeterminate", "children", "role"],
7
- _excluded6 = ["className", "i18nScope", "placeholder", "onChange", "value"],
8
- _excluded7 = ["padding"];
3
+ _excluded2 = ["clickable", "item", "label", "labelId", "children", "id"],
4
+ _excluded3 = ["id", "children"],
5
+ _excluded4 = ["hasCheckbox", "children", "selected", "provided", "dndInstructionsId"],
6
+ _excluded5 = ["as", "children", "item", "onClick", "selected", "suggested", "disabled", "id", "role", "restoreFocus", "draggableId", "draggableIndex", "droppableIn"],
7
+ _excluded6 = ["selected", "disabled", "error", "indeterminate", "children", "role"],
8
+ _excluded7 = ["className", "i18nScope", "placeholder", "onChange", "value"],
9
+ _excluded8 = ["padding"];
9
10
  function _objectDestructuringEmpty(t) { if (null == t) throw new TypeError("Cannot destructure " + t); }
10
11
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
11
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -26,6 +27,7 @@ import { Grip } from '@procore/core-icons/dist';
26
27
  import { useLabel } from '@react-aria/label';
27
28
  import { useId } from '@react-aria/utils';
28
29
  import React, { isValidElement, useEffect, useMemo, useState } from 'react';
30
+ import { flushSync } from 'react-dom';
29
31
  import { Checkbox, FakeCheckbox } from '../Checkbox/Checkbox';
30
32
  import { Typeahead } from '../Typeahead';
31
33
  import { useI18nContext } from '../_hooks/I18n';
@@ -36,7 +38,18 @@ import { mergeRefs } from '../_utils/mergeRefs';
36
38
  import { StyledDroppable, StyledFooter, StyledGrip, StyledGroup, StyledGroupLabel, StyledHeader, StyledItem, StyledMenu, StyledOptions, StyledSearch, StyledWrapper } from './MenuImperative.styles';
37
39
  import { createSensors } from './sensors';
38
40
  var onScrollBottomThreshold = 8;
39
- var NO_ANNOUCEMENT = '';
41
+
42
+ /**
43
+ * Finds the group element for a given droppable ID (from DnD result).
44
+ * Locates the Droppable via data-droppable-id, then returns its parent Group
45
+ * (ancestor with data-group="true") so we can read data-title for announcements.
46
+ */
47
+ function findGroupByDroppableId(container, droppableId) {
48
+ var droppable = container === null || container === void 0 ? void 0 : container.querySelector("[data-droppable-id=\"".concat(droppableId, "\"]"));
49
+ if (!droppable) return null;
50
+ var group = droppable.closest('[data-group="true"]');
51
+ return group !== null && group !== void 0 ? group : null;
52
+ }
40
53
  function noop() {}
41
54
  function isScrolledToBottom(e) {
42
55
  return e.currentTarget instanceof HTMLElement && e.currentTarget.scrollTop >= e.currentTarget.scrollHeight - e.currentTarget.clientHeight - onScrollBottomThreshold;
@@ -44,7 +57,10 @@ function isScrolledToBottom(e) {
44
57
  export var MenuContext = /*#__PURE__*/React.createContext({
45
58
  a11yOptionsProps: {},
46
59
  currentlyDroppableIn: [],
60
+ dndInstructionsId: '',
47
61
  onHoverItem: noop,
62
+ onFocusItem: noop,
63
+ onBlurItem: noop,
48
64
  onScrollBottom: noop,
49
65
  onSelect: noop,
50
66
  role: 'none'
@@ -56,6 +72,10 @@ export function useMenuContext() {
56
72
  }
57
73
  return context;
58
74
  }
75
+ var IsInsideDroppableContext = /*#__PURE__*/React.createContext(false);
76
+ function useIsInsideDroppable() {
77
+ return React.useContext(IsInsideDroppableContext);
78
+ }
59
79
 
60
80
  /**
61
81
  * Usefully if navigation is controlled by search input or another input.
@@ -136,6 +156,8 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
136
156
  _useState4 = _slicedToArray(_useState3, 2),
137
157
  currentlyDroppableIn = _useState4[0],
138
158
  setCurrentlyDroppableIn = _useState4[1];
159
+ var i18n = useI18nContext();
160
+ var dndInstructionsId = useId();
139
161
 
140
162
  // for context, used by Menu.Item
141
163
  var onSelect = React.useCallback(function (selection) {
@@ -146,6 +168,8 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
146
168
  return createSensors(ref, circular, onChangeHighlight);
147
169
  }, [circular, onChangeHighlight]),
148
170
  handleItemHover = _useMemo.handleItemHover,
171
+ handleItemFocus = _useMemo.handleItemFocus,
172
+ handleItemBlur = _useMemo.handleItemBlur,
149
173
  defaultKeyDownNavigationHandler = _useMemo.handleKeyDown,
150
174
  highlight = _useMemo.highlight,
151
175
  highlighted = _useMemo.highlighted,
@@ -157,7 +181,8 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
157
181
  prev = _useMemo.prev,
158
182
  next = _useMemo.next,
159
183
  select = _useMemo.select,
160
- updateSelectCallback = _useMemo.updateSelectCallback;
184
+ updateSelectCallback = _useMemo.updateSelectCallback,
185
+ setIsDragging = _useMemo.setIsDragging;
161
186
  var commonA11yOptionProps = _defineProperty({
162
187
  role: role,
163
188
  id: id
@@ -189,19 +214,53 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
189
214
  });
190
215
  useEffect(rehighlightCurrent);
191
216
  function onDragStart(start, provided) {
192
- // TODO Replace with localized instructions
193
- provided.announce(NO_ANNOUCEMENT);
217
+ var _findGroupByDroppable, _findGroupByDroppable2;
194
218
  var itemInfo = JSON.parse(start.draggableId);
195
- setCurrentlyDroppableIn(itemInfo.droppableIn);
196
- }
197
- function onDragUpdate(_update, provided) {
198
- // TODO Replace with localized instructions
199
- provided.announce(NO_ANNOUCEMENT);
219
+ // flushSync needed to ensure proper behavior in Safari
220
+ flushSync(function () {
221
+ return setCurrentlyDroppableIn(itemInfo.droppableIn);
222
+ });
223
+ setIsDragging(true);
224
+ var startPosition = start.source.index + 1;
225
+ var startGroupTitle = (_findGroupByDroppable = (_findGroupByDroppable2 = findGroupByDroppableId(ref.current, start.source.droppableId)) === null || _findGroupByDroppable2 === void 0 ? void 0 : _findGroupByDroppable2.getAttribute('data-title')) !== null && _findGroupByDroppable !== void 0 ? _findGroupByDroppable : '';
226
+ var announcement = startGroupTitle ? i18n.t('core.menuImperative.dragStartWithGroup', {
227
+ startPosition: startPosition,
228
+ startGroupTitle: startGroupTitle
229
+ }) : i18n.t('core.menuImperative.dragStart', {
230
+ startPosition: startPosition
231
+ });
232
+ provided.announce(announcement);
200
233
  }
234
+ var onDragUpdate = React.useCallback(function (_update, provided) {
235
+ var _findGroupByDroppable3, _findGroupByDroppable4, _update$destination, _findGroupByDroppable5, _findGroupByDroppable6;
236
+ var startPosition = _update.source.index + 1;
237
+ var startGroupTitle = (_findGroupByDroppable3 = (_findGroupByDroppable4 = findGroupByDroppableId(ref.current, _update.source.droppableId)) === null || _findGroupByDroppable4 === void 0 ? void 0 : _findGroupByDroppable4.getAttribute('data-title')) !== null && _findGroupByDroppable3 !== void 0 ? _findGroupByDroppable3 : '';
238
+ var endPosition = ((_update$destination = _update.destination) === null || _update$destination === void 0 ? void 0 : _update$destination.index) + 1;
239
+ var endGroupTitle = _update.destination ? (_findGroupByDroppable5 = (_findGroupByDroppable6 = findGroupByDroppableId(ref.current, _update.destination.droppableId)) === null || _findGroupByDroppable6 === void 0 ? void 0 : _findGroupByDroppable6.getAttribute('data-title')) !== null && _findGroupByDroppable5 !== void 0 ? _findGroupByDroppable5 : '' : '';
240
+ var announcement = startGroupTitle === endGroupTitle || !endGroupTitle || !startGroupTitle ? i18n.t('core.menuImperative.dragUpdate', {
241
+ startPosition: startPosition,
242
+ endPosition: endPosition
243
+ }) : i18n.t('core.menuImperative.dragUpdateWithGroup', {
244
+ startPosition: startPosition,
245
+ endPosition: endPosition,
246
+ startGroupTitle: startGroupTitle,
247
+ endGroupTitle: endGroupTitle
248
+ });
249
+ provided.announce(announcement);
250
+ }, []);
201
251
  var onDragEnd = React.useCallback(function (result, provided) {
202
- // TODO Replace with localized instructions
203
- provided.announce(NO_ANNOUCEMENT);
252
+ var _result$destination, _findGroupByDroppable7, _findGroupByDroppable8;
253
+ var endPosition = ((_result$destination = result.destination) === null || _result$destination === void 0 ? void 0 : _result$destination.index) + 1;
254
+ var endGroupTitle = result.destination ? (_findGroupByDroppable7 = (_findGroupByDroppable8 = findGroupByDroppableId(ref.current, result.destination.droppableId)) === null || _findGroupByDroppable8 === void 0 ? void 0 : _findGroupByDroppable8.getAttribute('data-title')) !== null && _findGroupByDroppable7 !== void 0 ? _findGroupByDroppable7 : '' : '';
255
+ var announcement = endGroupTitle ? i18n.t('core.menuImperative.dragEndWithGroup', {
256
+ endPosition: endPosition,
257
+ endGroupTitle: endGroupTitle
258
+ }) : i18n.t('core.menuImperative.dragEnd', {
259
+ endPosition: endPosition
260
+ });
261
+ provided.announce(announcement);
204
262
  setCurrentlyDroppableIn([]);
263
+ setIsDragging(false);
205
264
  if (result.reason === 'DROP' && result.destination) {
206
265
  var itemInfo = JSON.parse(result.draggableId);
207
266
  onDragEnd_({
@@ -210,7 +269,7 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
210
269
  destination: result.destination
211
270
  });
212
271
  }
213
- }, [onDragEnd_]);
272
+ }, [onDragEnd_, setIsDragging]);
214
273
 
215
274
  // for context, used by Menu.Options
216
275
  var onScrollBottom = React.useCallback(function (e) {
@@ -222,7 +281,10 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
222
281
  value: {
223
282
  a11yOptionsProps: a11yOptionsProps,
224
283
  currentlyDroppableIn: currentlyDroppableIn,
284
+ dndInstructionsId: dndInstructionsId,
225
285
  onHoverItem: handleItemHover,
286
+ onFocusItem: handleItemFocus,
287
+ onBlurItem: handleItemBlur,
226
288
  onScrollBottom: onScrollBottom,
227
289
  onSelect: onSelect,
228
290
  role: role
@@ -233,15 +295,19 @@ var MenuImperative_ = /*#__PURE__*/React.forwardRef(function Menu(_ref, forwardR
233
295
  onDragStart: onDragStart,
234
296
  onDragUpdate: onDragUpdate,
235
297
  onDragEnd: onDragEnd
236
- }, /*#__PURE__*/React.createElement(StyledMenu, props))));
298
+ }, /*#__PURE__*/React.createElement(StyledMenu, props))), /*#__PURE__*/React.createElement("div", {
299
+ id: dndInstructionsId,
300
+ hidden: true
301
+ }, i18n.t('core.menuImperative.dragAndDropInstructions')));
237
302
  });
238
303
  export var Group = /*#__PURE__*/React.forwardRef(function Group(_ref2, ref) {
239
304
  var clickable = _ref2.clickable,
240
305
  _ref2$item = _ref2.item,
241
306
  item = _ref2$item === void 0 ? 'group' : _ref2$item,
242
- id = _ref2.id,
243
307
  label = _ref2.label,
308
+ labelId = _ref2.labelId,
244
309
  children = _ref2.children,
310
+ id = _ref2.id,
245
311
  props = _objectWithoutProperties(_ref2, _excluded2);
246
312
  var _useLabel = useLabel({
247
313
  id: id,
@@ -250,10 +316,19 @@ export var Group = /*#__PURE__*/React.forwardRef(function Group(_ref2, ref) {
250
316
  }),
251
317
  fieldProps = _useLabel.fieldProps,
252
318
  labelProps = _useLabel.labelProps;
319
+ if (labelId) {
320
+ fieldProps = _objectSpread(_objectSpread({}, fieldProps), {}, {
321
+ 'aria-labelledby': labelId
322
+ });
323
+ labelProps = _objectSpread(_objectSpread({}, labelProps), {}, {
324
+ id: labelId
325
+ });
326
+ }
253
327
  return /*#__PURE__*/React.createElement(StyledGroup, _extends({
254
328
  ref: ref,
255
329
  "data-group": true,
256
330
  "data-value": JSON.stringify(item),
331
+ "data-title": label,
257
332
  role: label ? 'group' : 'separator'
258
333
  }, fieldProps, props), /*#__PURE__*/React.createElement(StyledGroupLabel, labelProps, label !== null && label !== void 0 ? label : children), label ? children : null);
259
334
  });
@@ -278,7 +353,8 @@ function findDraggableRecursively(children, draggableId) {
278
353
  }
279
354
  export function Droppable(_ref3) {
280
355
  var id = _ref3.id,
281
- children = _ref3.children;
356
+ children = _ref3.children,
357
+ props = _objectWithoutProperties(_ref3, _excluded3);
282
358
  var ctx = useMenuContext();
283
359
  var cloneZIndex = useZIndexContext().value;
284
360
  function renderItemClone(provided, _snapshot, rubric) {
@@ -289,7 +365,8 @@ export function Droppable(_ref3) {
289
365
  return /*#__PURE__*/React.createElement(ClonedItem, _extends({
290
366
  hasCheckbox: (draggingChild === null || draggingChild === void 0 ? void 0 : draggingChild.type) === CheckboxItem,
291
367
  provided: provided,
292
- cloneZIndex: cloneZIndex
368
+ cloneZIndex: cloneZIndex,
369
+ dndInstructionsId: ctx.dndInstructionsId
293
370
  }, cloneProps));
294
371
  }
295
372
  return /*#__PURE__*/React.createElement(DndDroppable, {
@@ -297,10 +374,13 @@ export function Droppable(_ref3) {
297
374
  isDropDisabled: !ctx.currentlyDroppableIn.includes(id),
298
375
  renderClone: renderItemClone
299
376
  }, function (provided, snapshot) {
300
- return /*#__PURE__*/React.createElement(StyledDroppable, {
377
+ return /*#__PURE__*/React.createElement(StyledDroppable, _extends({
301
378
  ref: provided.innerRef,
302
- "data-droppable": true
303
- }, children, provided.placeholder);
379
+ "data-droppable": true,
380
+ "data-droppable-id": id
381
+ }, props), /*#__PURE__*/React.createElement(IsInsideDroppableContext.Provider, {
382
+ value: true
383
+ }, children, provided.placeholder));
304
384
  });
305
385
  }
306
386
 
@@ -315,8 +395,10 @@ var ClonedItem = function ClonedItem(_ref4) {
315
395
  _ref4$selected = _ref4.selected,
316
396
  selected = _ref4$selected === void 0 ? false : _ref4$selected,
317
397
  provided = _ref4.provided,
318
- props = _objectWithoutProperties(_ref4, _excluded3);
398
+ dndInstructionsId = _ref4.dndInstructionsId,
399
+ props = _objectWithoutProperties(_ref4, _excluded4);
319
400
  var itemProps = _objectSpread(_objectSpread({}, props), {}, {
401
+ 'aria-describedby': dndInstructionsId,
320
402
  $selected: selected
321
403
  });
322
404
  var itemChildren = hasCheckbox ? /*#__PURE__*/React.createElement(Checkbox, {
@@ -362,9 +444,10 @@ forwardRef) {
362
444
  draggableId = _ref5.draggableId,
363
445
  draggableIndex = _ref5.draggableIndex,
364
446
  droppableIn = _ref5.droppableIn,
365
- props = _objectWithoutProperties(_ref5, _excluded4);
447
+ props = _objectWithoutProperties(_ref5, _excluded5);
366
448
  var id = useId(_id);
367
449
  var ctx = useMenuContext();
450
+ var isInsideDroppable = useIsInsideDroppable();
368
451
  var onClick = React.useCallback(function (event) {
369
452
  if (disabled) return;
370
453
  onClick_(event);
@@ -381,20 +464,30 @@ forwardRef) {
381
464
  var ariaSelected;
382
465
  if (ctx.role === 'listbox') {
383
466
  contextRole = 'option';
384
- ariaSelected = selected ? true : undefined;
385
467
  } else if (ctx.role === 'menu') {
386
468
  contextRole = 'menuitem';
387
469
  }
470
+ if ([role, contextRole].includes('option')) {
471
+ ariaSelected = selected ? true : undefined;
472
+ }
473
+ var ariaDescribedBy = isInsideDroppable ? ctx.dndInstructionsId : undefined;
388
474
  var itemProps = _objectSpread(_objectSpread({
389
475
  'aria-disabled': disabled ? true : undefined,
390
- 'aria-selected': ariaSelected
476
+ 'aria-describedby': ariaDescribedBy
391
477
  }, props), {}, {
478
+ 'aria-selected': ariaSelected,
392
479
  id: id,
393
480
  role: role !== null && role !== void 0 ? role : contextRole,
394
481
  onClick: onClick,
395
482
  onMouseMove: function onMouseMove(e) {
396
483
  return ctx.onHoverItem(e.currentTarget);
397
484
  },
485
+ onFocus: function onFocus(e) {
486
+ return ctx.onFocusItem(e.currentTarget);
487
+ },
488
+ onBlur: function onBlur(e) {
489
+ return ctx.onBlurItem(e.currentTarget);
490
+ },
398
491
  'data-group': false,
399
492
  'data-value': JSON.stringify(item),
400
493
  'data-selected': selected,
@@ -420,8 +513,7 @@ forwardRef) {
420
513
  as: as
421
514
  }, provided.draggableProps, provided.dragHandleProps, itemProps, {
422
515
  $isDraggable: !disabled,
423
- style: _objectSpread(_objectSpread({}, provided.draggableProps.style), itemProps.style),
424
- tabIndex: -1
516
+ style: _objectSpread(_objectSpread({}, provided.draggableProps.style), itemProps.style)
425
517
  }), !disabled && /*#__PURE__*/React.createElement(StyledGrip, null, /*#__PURE__*/React.createElement(Grip, {
426
518
  color: colors.gray45
427
519
  })), children);
@@ -444,7 +536,7 @@ export var CheckboxItem = /*#__PURE__*/React.forwardRef(function CheckboxItem(_r
444
536
  _ref6$children = _ref6.children,
445
537
  children = _ref6$children === void 0 ? null : _ref6$children,
446
538
  role = _ref6.role,
447
- props = _objectWithoutProperties(_ref6, _excluded5);
539
+ props = _objectWithoutProperties(_ref6, _excluded6);
448
540
  var ctx = useMenuContext();
449
541
  var contextRole;
450
542
  var ariaChecked;
@@ -494,7 +586,7 @@ export var Search = function Search(_ref7) {
494
586
  placeholder = _ref7.placeholder,
495
587
  _onChange = _ref7.onChange,
496
588
  valueProp = _ref7.value,
497
- props = _objectWithoutProperties(_ref7, _excluded6);
589
+ props = _objectWithoutProperties(_ref7, _excluded7);
498
590
  var I18n = useI18nContext();
499
591
  var isControlled = valueProp !== undefined;
500
592
  var _React$useState3 = React.useState(''),
@@ -533,7 +625,7 @@ export var Header = /*#__PURE__*/React.forwardRef(function Header(_ref8, ref) {
533
625
  export var Footer = /*#__PURE__*/React.forwardRef(function Footer(_ref9, ref) {
534
626
  var _ref9$padding = _ref9.padding,
535
627
  padding = _ref9$padding === void 0 ? 'md lg' : _ref9$padding,
536
- props = _objectWithoutProperties(_ref9, _excluded7);
628
+ props = _objectWithoutProperties(_ref9, _excluded8);
537
629
  return /*#__PURE__*/React.createElement(StyledFooter, _extends({
538
630
  ref: ref,
539
631
  padding: padding
@@ -1 +1 @@
1
- {"version":3,"file":"MenuImperative.js","names":["DragDropContext","Draggable","Droppable","DndDroppable","Grip","useLabel","useId","React","isValidElement","useEffect","useMemo","useState","Checkbox","FakeCheckbox","Typeahead","useI18nContext","useZIndexContext","colors","addSubcomponents","mergeRefs","StyledDroppable","StyledFooter","StyledGrip","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","createSensors","onScrollBottomThreshold","NO_ANNOUCEMENT","noop","isScrolledToBottom","e","currentTarget","HTMLElement","scrollTop","scrollHeight","clientHeight","MenuContext","createContext","a11yOptionsProps","currentlyDroppableIn","onHoverItem","onScrollBottom","onSelect","role","useMenuContext","context","useContext","Error","useMenuImperativeControlNavigation","ref","enable","arguments","length","undefined","options","_id","menuId","id","_React$useState","_React$useState2","_slicedToArray","activeDescendant","setActiveDescendant","_useState","_useState2","onKeyDown","setOnKeyDown","_ref$current","current","defaultKeyDownNavigationHandler","menuNavigationTriggerProps","menuProps","onChangeActiveDescendant","changeAriaActiveDescendantOnOptions","menuRef","querySelector","setAttribute","MenuImperative_","forwardRef","Menu","_ref","_ref$circular","circular","_ref$onDragEnd","onDragEnd","onDragEnd_","_ref$onScrollBottom","onScrollBottom_","_ref$onSelect","onSelect_","_ref$role","onKeyboardNavigation_","onKeyboardNavigation","multiple","props","_objectWithoutProperties","_excluded","useRef","_useState3","_useState4","setCurrentlyDroppableIn","useCallback","selection","onChangeHighlight","_useMemo","handleItemHover","handleKeyDown","highlight","highlighted","highlightFirst","highlightLast","highlightSelected","highlightSuggested","rehighlightCurrent","prev","next","select","updateSelectCallback","commonA11yOptionProps","_defineProperty","_objectSpread","tabIndex","useImperativeHandle","el","onDragStart","start","provided","announce","itemInfo","JSON","parse","draggableId","droppableIn","onDragUpdate","_update","result","reason","destination","source","createElement","Provider","value","Group","_ref2","clickable","_ref2$item","item","label","children","_excluded2","_useLabel","labelElementType","fieldProps","labelProps","_extends","stringify","findDraggableRecursively","nodeChildren","Children","toArray","i","child","matchingChild","_ref3","ctx","cloneZIndex","renderItemClone","_snapshot","rubric","_draggingChild$props","draggableInfo","draggingChild","cloneProps","ClonedItem","hasCheckbox","type","CheckboxItem","droppableId","isDropDisabled","includes","renderClone","snapshot","innerRef","placeholder","_ref4","_ref4$hasCheckbox","_ref4$children","_ref4$selected","selected","_excluded3","itemProps","$selected","itemChildren","indeterminate","error","checked","onChange","draggableProps","dragHandleProps","$isDraggable","$isDragging","style","zIndex","color","gray45","Item","_ref5","as","_ref5$children","_ref5$item","_ref5$onClick","onClick","onClick_","_ref5$selected","_ref5$suggested","suggested","_ref5$disabled","disabled","restoreFocus","draggableIndex","_excluded4","event","group","action","contextRole","ariaSelected","onMouseMove","$disabled","droppableInfo","Array","isArray","index","isDragDisabled","_ref6","_ref6$selected","_ref6$disabled","_ref6$error","_ref6$indeterminate","_ref6$children","_excluded5","ariaChecked","Options","i18n","t","onScroll","Search","_ref7","className","_ref7$i18nScope","i18nScope","_onChange","valueProp","_excluded6","I18n","isControlled","_React$useState3","_React$useState4","internalValue","setInternalValue","autoFocus","scope","Header","_ref8","_objectDestructuringEmpty","Footer","_ref9","_ref9$padding","padding","_excluded7","displayName","MenuImperative"],"sources":["../../src/MenuImperative/MenuImperative.tsx"],"sourcesContent":["import type {\n DraggableProvided,\n DraggableRubric,\n DraggableStateSnapshot,\n DragStart,\n DragUpdate,\n DroppableProvided,\n DroppableStateSnapshot,\n DropResult,\n ResponderProvided,\n} from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport {\n DragDropContext,\n Draggable,\n Droppable as DndDroppable,\n} from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport { Grip } from '@procore/core-icons/dist'\nimport { useLabel } from '@react-aria/label'\nimport { useId } from '@react-aria/utils'\nimport React, { isValidElement, useEffect, useMemo, useState } from 'react'\nimport type { CheckboxProps } from '../Checkbox'\nimport { Checkbox, FakeCheckbox } from '../Checkbox/Checkbox'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useZIndexContext } from '../_hooks/ZIndex'\nimport { colors } from '../_styles/colors'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { PolymorphicAs } from '../_utils/polymorphic'\nimport {\n StyledDroppable,\n StyledFooter,\n StyledGrip,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from './MenuImperative.styles'\nimport type {\n ControlNavigationProps,\n ControlNavigationReturn,\n DroppableProps,\n FooterProps,\n GroupProps,\n HeaderProps,\n ItemProps,\n ItemWithDraggingProps,\n MenuContext as IMenuContext,\n MenuItemDefaultElement,\n MenuItemProps,\n MenuProps,\n MenuRef,\n MenuSearchProps,\n OptionsProps,\n Selection,\n} from './MenuImperative.types'\nimport { createSensors } from './sensors'\n\nconst onScrollBottomThreshold = 8\nconst NO_ANNOUCEMENT = ''\n\nfunction noop() {}\n\nfunction isScrolledToBottom(e: React.UIEvent<HTMLDivElement, UIEvent>) {\n return (\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n )\n}\n\nexport const MenuContext = React.createContext<IMenuContext>({\n a11yOptionsProps: {},\n currentlyDroppableIn: [],\n onHoverItem: noop,\n onScrollBottom: noop,\n onSelect: noop,\n role: 'none',\n})\n\nexport function useMenuContext(): IMenuContext {\n const context = React.useContext(MenuContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `Menu` context, please wrap your component in `<MenuContext.Provider>`'\n )\n }\n\n return context\n}\n\n/**\n * Usefully if navigation is controlled by search input or another input.\n *\n * @param ref MenuImperative ref\n * @param enable True by default. Setting to false will change all props\n * to undefined (except id in menuProps), so navigation controlled by menu itself is restored.\n * @param options.menuId provide id otherwise it will be generated\n * @since 11.5.0\n */\nexport const useMenuImperativeControlNavigation = (\n ref: React.RefObject<MenuRef>,\n enable = true,\n options: ControlNavigationProps = {}\n): ControlNavigationReturn => {\n const { menuId: _id } = options\n const id = useId(_id)\n const [activeDescendant, setActiveDescendant] = React.useState<\n string | undefined\n >()\n const [onKeyDown, setOnKeyDown] = useState<React.KeyboardEventHandler>()\n // ref is null on first render\n React.useEffect(() => {\n setOnKeyDown(() => ref.current?.defaultKeyDownNavigationHandler)\n }, [])\n\n if (enable) {\n const menuNavigationTriggerProps = {\n 'aria-activedescendant': activeDescendant,\n 'aria-controls': id,\n onKeyDown,\n }\n\n const menuProps = {\n onChangeActiveDescendant: setActiveDescendant,\n id,\n }\n\n return {\n menuNavigationTriggerProps,\n menuProps,\n }\n } else {\n return {\n menuNavigationTriggerProps: {},\n menuProps: { id },\n }\n }\n}\n\nfunction changeAriaActiveDescendantOnOptions(id = '', menuRef: Element | null) {\n const options = menuRef?.querySelector<HTMLElement>(\n '[data-internal=\"menuimperative-options\"]'\n )\n\n options?.setAttribute('aria-activedescendant', id)\n}\n\nconst MenuImperative_ = React.forwardRef<MenuRef, MenuProps>(function Menu(\n {\n circular = false,\n onDragEnd: onDragEnd_ = noop,\n onScrollBottom: onScrollBottom_ = noop,\n onSelect: onSelect_ = noop,\n role = 'none',\n onChangeActiveDescendant,\n onKeyboardNavigation: onKeyboardNavigation_,\n id,\n multiple,\n ...props\n },\n forwardRef\n) {\n const ref = React.useRef<HTMLDivElement>(null)\n const [currentlyDroppableIn, setCurrentlyDroppableIn] = useState<string[]>([])\n\n // for context, used by Menu.Item\n const onSelect = React.useCallback(\n function (selection: Selection) {\n onSelect_(selection)\n },\n [onSelect_]\n )\n\n const onChangeHighlight = onChangeActiveDescendant\n ? onChangeActiveDescendant\n : changeAriaActiveDescendantOnOptions\n\n const {\n handleItemHover,\n handleKeyDown: defaultKeyDownNavigationHandler,\n highlight,\n highlighted,\n highlightFirst,\n highlightLast,\n highlightSelected,\n highlightSuggested,\n rehighlightCurrent,\n prev,\n next,\n select,\n updateSelectCallback,\n } = useMemo(\n () => createSensors(ref, circular, onChangeHighlight),\n [circular, onChangeHighlight]\n )\n\n const commonA11yOptionProps = {\n role,\n id,\n ['aria-multiselectable']: multiple,\n }\n\n const a11yOptionsProps = !onChangeActiveDescendant\n ? {\n ...commonA11yOptionProps,\n onKeyDown: onKeyboardNavigation_ ?? defaultKeyDownNavigationHandler,\n tabIndex: 0,\n }\n : {\n ...commonA11yOptionProps,\n onKeyDown: undefined,\n tabIndex: undefined,\n }\n\n updateSelectCallback(onSelect)\n\n // exposes internal menu API\n React.useImperativeHandle(forwardRef, () => ({\n el: ref.current,\n highlight,\n highlighted,\n highlightFirst,\n highlightLast,\n highlightSelected,\n highlightSuggested,\n next,\n prev,\n select,\n defaultKeyDownNavigationHandler,\n }))\n\n useEffect(rehighlightCurrent)\n\n function onDragStart(start: DragStart, provided: ResponderProvided) {\n // TODO Replace with localized instructions\n provided.announce(NO_ANNOUCEMENT)\n const itemInfo = JSON.parse(start.draggableId)\n setCurrentlyDroppableIn(itemInfo.droppableIn)\n }\n\n function onDragUpdate(_update: DragUpdate, provided: ResponderProvided) {\n // TODO Replace with localized instructions\n provided.announce(NO_ANNOUCEMENT)\n }\n\n const onDragEnd = React.useCallback(\n function (result: DropResult, provided: ResponderProvided) {\n // TODO Replace with localized instructions\n provided.announce(NO_ANNOUCEMENT)\n setCurrentlyDroppableIn([])\n if (result.reason === 'DROP' && result.destination) {\n const itemInfo = JSON.parse(result.draggableId)\n onDragEnd_({\n draggableId: itemInfo.draggableId,\n source: result.source,\n destination: result.destination,\n })\n }\n },\n [onDragEnd_]\n )\n\n // for context, used by Menu.Options\n const onScrollBottom = React.useCallback(\n function (e: React.UIEvent<HTMLDivElement, UIEvent>) {\n if (isScrolledToBottom(e)) {\n onScrollBottom_(e)\n }\n },\n [onScrollBottom_]\n )\n\n return (\n <MenuContext.Provider\n value={{\n a11yOptionsProps,\n currentlyDroppableIn,\n onHoverItem: handleItemHover,\n onScrollBottom,\n onSelect,\n role,\n }}\n >\n <StyledWrapper ref={ref}>\n <DragDropContext\n onDragStart={onDragStart}\n onDragUpdate={onDragUpdate}\n onDragEnd={onDragEnd}\n >\n <StyledMenu {...props} />\n </DragDropContext>\n </StyledWrapper>\n </MenuContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & GroupProps\n>(function Group(\n { clickable, item = 'group', id, label, children, ...props },\n ref\n) {\n const { fieldProps, labelProps } = useLabel({\n id,\n label: label ?? children,\n labelElementType: 'span',\n })\n\n return (\n <StyledGroup\n ref={ref}\n data-group={true}\n data-value={JSON.stringify(item)}\n role={label ? 'group' : 'separator'}\n {...fieldProps}\n {...props}\n >\n <StyledGroupLabel {...labelProps}>{label ?? children}</StyledGroupLabel>\n {label ? children : null}\n </StyledGroup>\n )\n})\n\nfunction findDraggableRecursively(\n children: React.ReactNode,\n draggableId: any\n): React.ReactElement | null {\n const nodeChildren = React.Children.toArray(children)\n for (let i = 0; i < nodeChildren.length; i++) {\n const child = nodeChildren[i]\n if (isValidElement(child)) {\n if ('draggableId' in child.props) {\n if (child.props.draggableId === draggableId) {\n return child\n }\n } else {\n const matchingChild = findDraggableRecursively(\n child.props.children,\n draggableId\n )\n if (matchingChild) {\n return matchingChild\n }\n }\n }\n }\n return null\n}\n\nexport function Droppable({ id, children }: DroppableProps) {\n const ctx = useMenuContext()\n const cloneZIndex = useZIndexContext().value\n\n function renderItemClone(\n provided: DraggableProvided,\n _snapshot: DraggableStateSnapshot,\n rubric: DraggableRubric\n ) {\n const draggableInfo = JSON.parse(rubric.draggableId)\n const draggingChild = findDraggableRecursively(\n children,\n draggableInfo.draggableId\n )\n const cloneProps = draggingChild?.props ?? {}\n\n return (\n <ClonedItem\n hasCheckbox={draggingChild?.type === CheckboxItem}\n provided={provided}\n cloneZIndex={cloneZIndex}\n {...cloneProps}\n />\n )\n }\n\n return (\n <DndDroppable\n droppableId={id}\n isDropDisabled={!ctx.currentlyDroppableIn.includes(id)}\n renderClone={renderItemClone}\n >\n {(provided: DroppableProvided, snapshot: DroppableStateSnapshot) => (\n <StyledDroppable ref={provided.innerRef} data-droppable>\n {children}\n {provided.placeholder}\n </StyledDroppable>\n )}\n </DndDroppable>\n )\n}\n\n// creates a version of a draggable item that can be positioned correctly within modals\n// this should always have the same appearance of an Item or CheckboxItem, but doesn't\n// need to handle selection events, which can't be done while the item is being dragged\nconst ClonedItem = ({\n hasCheckbox = false,\n children = null,\n selected = false,\n provided,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> &\n ItemProps &\n Omit<CheckboxProps, 'checked'> & {\n provided: DraggableProvided\n hasCheckbox: boolean\n cloneZIndex: number\n }) => {\n const itemProps = {\n ...props,\n $selected: selected,\n }\n\n const itemChildren = hasCheckbox ? (\n <Checkbox\n indeterminate={props.indeterminate}\n error={props.error}\n checked={selected}\n onChange={noop}\n >\n {children}\n </Checkbox>\n ) : (\n children\n )\n\n return (\n <StyledItem\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n {...itemProps}\n $isDraggable\n $isDragging\n style={{\n ...provided.draggableProps.style,\n ...props.style,\n zIndex: props.cloneZIndex,\n }}\n >\n <StyledGrip>\n <Grip color={colors.gray45} />\n </StyledGrip>\n {itemChildren}\n </StyledItem>\n )\n}\n\nexport const Item = React.forwardRef(function Item<\n E extends React.ElementType = MenuItemDefaultElement\n>(\n {\n as,\n /* @ts-ignore */\n children = null,\n item = null,\n /* @ts-ignore */\n onClick: onClick_ = noop,\n selected = false,\n suggested = false,\n disabled = false,\n id: _id,\n role,\n restoreFocus,\n draggableId,\n draggableIndex,\n droppableIn,\n ...props\n }: PolymorphicAs.ComponentPropsWithoutRef<MenuItemProps, E>,\n /**\n * TODO: although it is typed just fine from the outside (`<Menu.Item ref>` that is),\n * an effort is required to type it properly here too\n */\n forwardRef: React.Ref<any>\n) {\n const id = useId(_id)\n\n const ctx = useMenuContext()\n\n const onClick = React.useCallback(\n function (event: React.MouseEvent<HTMLDivElement, MouseEvent>) {\n if (disabled) return\n\n onClick_(event)\n\n ctx.onSelect({\n item,\n event,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n },\n [ctx, item, onClick_, disabled, selected]\n )\n\n let contextRole\n let ariaSelected\n\n if (ctx.role === 'listbox') {\n contextRole = 'option'\n ariaSelected = selected ? true : undefined\n } else if (ctx.role === 'menu') {\n contextRole = 'menuitem'\n }\n\n const itemProps = {\n 'aria-disabled': disabled ? true : undefined,\n 'aria-selected': ariaSelected,\n ...props,\n id,\n role: role ?? contextRole,\n onClick,\n onMouseMove: (e: any) => ctx.onHoverItem(e.currentTarget),\n 'data-group': false,\n 'data-value': JSON.stringify(item),\n 'data-selected': selected,\n 'data-suggested': suggested,\n 'data-disabled': disabled,\n 'data-restorefocus': restoreFocus,\n $disabled: disabled,\n $selected: selected,\n }\n\n if (\n droppableIn !== undefined &&\n draggableId !== undefined &&\n draggableIndex !== undefined\n ) {\n // encoding id and valid droppables as the draggableId, so we can use them to determine where this item can be dropped\n const droppableInfo = {\n draggableId,\n droppableIn: Array.isArray(droppableIn) ? droppableIn : [droppableIn],\n }\n return (\n <Draggable\n draggableId={JSON.stringify(droppableInfo)}\n index={draggableIndex}\n isDragDisabled={disabled}\n >\n {(provided: DraggableProvided) => (\n <StyledItem\n ref={mergeRefs(provided.innerRef, forwardRef)}\n as={as}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n {...itemProps}\n $isDraggable={!disabled}\n style={{ ...provided.draggableProps.style, ...itemProps.style }}\n tabIndex={-1}\n >\n {!disabled && (\n <StyledGrip>\n <Grip color={colors.gray45} />\n </StyledGrip>\n )}\n {children}\n </StyledItem>\n )}\n </Draggable>\n )\n }\n\n return (\n <StyledItem ref={forwardRef} as={as} {...itemProps}>\n {children}\n </StyledItem>\n )\n}) as PolymorphicAs.ComponentWithForwardedRef<\n MenuItemProps,\n MenuItemDefaultElement\n>\n\nexport const CheckboxItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> &\n (ItemProps | ItemWithDraggingProps) &\n Omit<CheckboxProps, 'checked'>\n>(function CheckboxItem(\n {\n selected = false,\n disabled = false,\n error = false,\n indeterminate = false,\n children = null,\n role,\n ...props\n },\n forwardRef\n) {\n const ctx = useMenuContext()\n\n let contextRole\n let ariaChecked: React.AriaAttributes['aria-checked']\n let ariaSelected\n\n if (ctx.role === 'listbox') {\n contextRole = 'option'\n ariaSelected = selected ? true : undefined\n } else if (ctx.role === 'menu') {\n contextRole = 'menuitemcheckbox'\n\n if (indeterminate) {\n ariaChecked = 'mixed'\n } else {\n ariaChecked = selected ? 'true' : 'false'\n }\n }\n\n return (\n <Item\n aria-checked={ariaChecked}\n aria-disabled={disabled ? true : undefined}\n aria-selected={ariaSelected}\n {...props}\n role={role ?? contextRole}\n selected={selected}\n disabled={disabled}\n ref={forwardRef}\n >\n <FakeCheckbox\n indeterminate={indeterminate}\n error={error}\n disabled={disabled}\n checked={selected}\n >\n {children}\n </FakeCheckbox>\n </Item>\n )\n})\nexport const Options = React.forwardRef<HTMLDivElement, OptionsProps>(\n function Options(props, ref) {\n const ctx = useMenuContext()\n const i18n = useI18nContext()\n\n return (\n <StyledOptions\n aria-label={i18n.t('core.menuImperative.options.ariaLabel')}\n {...props}\n {...ctx.a11yOptionsProps}\n data-internal=\"menuimperative-options\"\n ref={ref}\n onScroll={ctx.onScrollBottom}\n />\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n value: valueProp,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n\n const isControlled = valueProp !== undefined\n const [internalValue, setInternalValue] = React.useState('')\n const value = isControlled ? valueProp : internalValue\n\n const onChange: NonNullable<TypeaheadProps['onChange']> = React.useCallback(\n function (value, event) {\n if (!isControlled) {\n setInternalValue(value)\n }\n _onChange?.(event as unknown as React.ChangeEvent<HTMLInputElement>)\n },\n [_onChange, isControlled]\n )\n\n // intentionally changed to type text + searchbox,\n // voiceOver focus goes to clear button when no results in Chrome\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n type=\"text\"\n role=\"searchbox\"\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & HeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & FooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenuImperative_.displayName = 'Menu'\n\nDroppable.displayName = 'Menu.Droppable'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu-imperative--demo)\n\n */\nexport const MenuImperative = addSubcomponents(\n {\n CheckboxItem,\n Droppable,\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n MenuImperative_\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"MenuImperative.js","names":["DragDropContext","Draggable","Droppable","DndDroppable","Grip","useLabel","useId","React","isValidElement","useEffect","useMemo","useState","flushSync","Checkbox","FakeCheckbox","Typeahead","useI18nContext","useZIndexContext","colors","addSubcomponents","mergeRefs","StyledDroppable","StyledFooter","StyledGrip","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","createSensors","onScrollBottomThreshold","findGroupByDroppableId","container","droppableId","droppable","querySelector","concat","group","closest","noop","isScrolledToBottom","e","currentTarget","HTMLElement","scrollTop","scrollHeight","clientHeight","MenuContext","createContext","a11yOptionsProps","currentlyDroppableIn","dndInstructionsId","onHoverItem","onFocusItem","onBlurItem","onScrollBottom","onSelect","role","useMenuContext","context","useContext","Error","IsInsideDroppableContext","useIsInsideDroppable","useMenuImperativeControlNavigation","ref","enable","arguments","length","undefined","options","_id","menuId","id","_React$useState","_React$useState2","_slicedToArray","activeDescendant","setActiveDescendant","_useState","_useState2","onKeyDown","setOnKeyDown","_ref$current","current","defaultKeyDownNavigationHandler","menuNavigationTriggerProps","menuProps","onChangeActiveDescendant","changeAriaActiveDescendantOnOptions","menuRef","setAttribute","MenuImperative_","forwardRef","Menu","_ref","_ref$circular","circular","_ref$onDragEnd","onDragEnd","onDragEnd_","_ref$onScrollBottom","onScrollBottom_","_ref$onSelect","onSelect_","_ref$role","onKeyboardNavigation_","onKeyboardNavigation","multiple","props","_objectWithoutProperties","_excluded","useRef","_useState3","_useState4","setCurrentlyDroppableIn","i18n","useCallback","selection","onChangeHighlight","_useMemo","handleItemHover","handleItemFocus","handleItemBlur","handleKeyDown","highlight","highlighted","highlightFirst","highlightLast","highlightSelected","highlightSuggested","rehighlightCurrent","prev","next","select","updateSelectCallback","setIsDragging","commonA11yOptionProps","_defineProperty","_objectSpread","tabIndex","useImperativeHandle","el","onDragStart","start","provided","_findGroupByDroppable","_findGroupByDroppable2","itemInfo","JSON","parse","draggableId","droppableIn","startPosition","source","index","startGroupTitle","getAttribute","announcement","t","announce","onDragUpdate","_update","_findGroupByDroppable3","_findGroupByDroppable4","_update$destination","_findGroupByDroppable5","_findGroupByDroppable6","endPosition","destination","endGroupTitle","result","_result$destination","_findGroupByDroppable7","_findGroupByDroppable8","reason","createElement","Provider","value","hidden","Group","_ref2","clickable","_ref2$item","item","label","labelId","children","_excluded2","_useLabel","labelElementType","fieldProps","labelProps","_extends","stringify","findDraggableRecursively","nodeChildren","Children","toArray","i","child","matchingChild","_ref3","_excluded3","ctx","cloneZIndex","renderItemClone","_snapshot","rubric","_draggingChild$props","draggableInfo","draggingChild","cloneProps","ClonedItem","hasCheckbox","type","CheckboxItem","isDropDisabled","includes","renderClone","snapshot","innerRef","placeholder","_ref4","_ref4$hasCheckbox","_ref4$children","_ref4$selected","selected","_excluded4","itemProps","$selected","itemChildren","indeterminate","error","checked","onChange","draggableProps","dragHandleProps","$isDraggable","$isDragging","style","zIndex","color","gray45","Item","_ref5","as","_ref5$children","_ref5$item","_ref5$onClick","onClick","onClick_","_ref5$selected","_ref5$suggested","suggested","_ref5$disabled","disabled","restoreFocus","draggableIndex","_excluded5","isInsideDroppable","event","action","contextRole","ariaSelected","ariaDescribedBy","onMouseMove","onFocus","onBlur","$disabled","droppableInfo","Array","isArray","isDragDisabled","_ref6","_ref6$selected","_ref6$disabled","_ref6$error","_ref6$indeterminate","_ref6$children","_excluded6","ariaChecked","Options","onScroll","Search","_ref7","className","_ref7$i18nScope","i18nScope","_onChange","valueProp","_excluded7","I18n","isControlled","_React$useState3","_React$useState4","internalValue","setInternalValue","autoFocus","scope","Header","_ref8","_objectDestructuringEmpty","Footer","_ref9","_ref9$padding","padding","_excluded8","displayName","MenuImperative"],"sources":["../../src/MenuImperative/MenuImperative.tsx"],"sourcesContent":["import type {\n DraggableProvided,\n DraggableRubric,\n DraggableStateSnapshot,\n DragStart,\n DragUpdate,\n DroppableProvided,\n DroppableStateSnapshot,\n DropResult,\n ResponderProvided,\n} from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport {\n DragDropContext,\n Draggable,\n Droppable as DndDroppable,\n} from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport { Grip } from '@procore/core-icons/dist'\nimport { useLabel } from '@react-aria/label'\nimport { useId } from '@react-aria/utils'\nimport React, { isValidElement, useEffect, useMemo, useState } from 'react'\nimport { flushSync } from 'react-dom'\nimport type { CheckboxProps } from '../Checkbox'\nimport { Checkbox, FakeCheckbox } from '../Checkbox/Checkbox'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useZIndexContext } from '../_hooks/ZIndex'\nimport { colors } from '../_styles/colors'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { PolymorphicAs } from '../_utils/polymorphic'\nimport {\n StyledDroppable,\n StyledFooter,\n StyledGrip,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from './MenuImperative.styles'\nimport type {\n ControlNavigationProps,\n ControlNavigationReturn,\n DroppableProps,\n FooterProps,\n GroupProps,\n HeaderProps,\n ItemProps,\n ItemWithDraggingProps,\n MenuContext as IMenuContext,\n MenuItemDefaultElement,\n MenuItemProps,\n MenuProps,\n MenuRef,\n MenuSearchProps,\n OptionsProps,\n Selection,\n} from './MenuImperative.types'\nimport { createSensors } from './sensors'\n\nconst onScrollBottomThreshold = 8\n\n/**\n * Finds the group element for a given droppable ID (from DnD result).\n * Locates the Droppable via data-droppable-id, then returns its parent Group\n * (ancestor with data-group=\"true\") so we can read data-title for announcements.\n */\nfunction findGroupByDroppableId(\n container: HTMLElement | null,\n droppableId: string\n): HTMLElement | null {\n const droppable = container?.querySelector<HTMLElement>(\n `[data-droppable-id=\"${droppableId}\"]`\n )\n if (!droppable) return null\n const group = droppable.closest<HTMLElement>('[data-group=\"true\"]')\n return group ?? null\n}\n\nfunction noop() {}\n\nfunction isScrolledToBottom(e: React.UIEvent<HTMLDivElement, UIEvent>) {\n return (\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n )\n}\n\nexport const MenuContext = React.createContext<IMenuContext>({\n a11yOptionsProps: {},\n currentlyDroppableIn: [],\n dndInstructionsId: '',\n onHoverItem: noop,\n onFocusItem: noop,\n onBlurItem: noop,\n onScrollBottom: noop,\n onSelect: noop,\n role: 'none',\n})\n\nexport function useMenuContext(): IMenuContext {\n const context = React.useContext(MenuContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `Menu` context, please wrap your component in `<MenuContext.Provider>`'\n )\n }\n\n return context\n}\n\nconst IsInsideDroppableContext = React.createContext(false)\n\nfunction useIsInsideDroppable(): boolean {\n return React.useContext(IsInsideDroppableContext)\n}\n\n/**\n * Usefully if navigation is controlled by search input or another input.\n *\n * @param ref MenuImperative ref\n * @param enable True by default. Setting to false will change all props\n * to undefined (except id in menuProps), so navigation controlled by menu itself is restored.\n * @param options.menuId provide id otherwise it will be generated\n * @since 11.5.0\n */\nexport const useMenuImperativeControlNavigation = (\n ref: React.RefObject<MenuRef>,\n enable = true,\n options: ControlNavigationProps = {}\n): ControlNavigationReturn => {\n const { menuId: _id } = options\n const id = useId(_id)\n const [activeDescendant, setActiveDescendant] = React.useState<\n string | undefined\n >()\n const [onKeyDown, setOnKeyDown] = useState<React.KeyboardEventHandler>()\n // ref is null on first render\n React.useEffect(() => {\n setOnKeyDown(() => ref.current?.defaultKeyDownNavigationHandler)\n }, [])\n\n if (enable) {\n const menuNavigationTriggerProps = {\n 'aria-activedescendant': activeDescendant,\n 'aria-controls': id,\n onKeyDown,\n }\n\n const menuProps = {\n onChangeActiveDescendant: setActiveDescendant,\n id,\n }\n\n return {\n menuNavigationTriggerProps,\n menuProps,\n }\n } else {\n return {\n menuNavigationTriggerProps: {},\n menuProps: { id },\n }\n }\n}\n\nfunction changeAriaActiveDescendantOnOptions(id = '', menuRef: Element | null) {\n const options = menuRef?.querySelector<HTMLElement>(\n '[data-internal=\"menuimperative-options\"]'\n )\n\n options?.setAttribute('aria-activedescendant', id)\n}\n\nconst MenuImperative_ = React.forwardRef<MenuRef, MenuProps>(function Menu(\n {\n circular = false,\n onDragEnd: onDragEnd_ = noop,\n onScrollBottom: onScrollBottom_ = noop,\n onSelect: onSelect_ = noop,\n role = 'none',\n onChangeActiveDescendant,\n onKeyboardNavigation: onKeyboardNavigation_,\n id,\n multiple,\n ...props\n },\n forwardRef\n) {\n const ref = React.useRef<HTMLDivElement>(null)\n const [currentlyDroppableIn, setCurrentlyDroppableIn] = useState<string[]>([])\n const i18n = useI18nContext()\n const dndInstructionsId = useId()\n\n // for context, used by Menu.Item\n const onSelect = React.useCallback(\n function (selection: Selection) {\n onSelect_(selection)\n },\n [onSelect_]\n )\n\n const onChangeHighlight = onChangeActiveDescendant\n ? onChangeActiveDescendant\n : changeAriaActiveDescendantOnOptions\n\n const {\n handleItemHover,\n handleItemFocus,\n handleItemBlur,\n handleKeyDown: defaultKeyDownNavigationHandler,\n highlight,\n highlighted,\n highlightFirst,\n highlightLast,\n highlightSelected,\n highlightSuggested,\n rehighlightCurrent,\n prev,\n next,\n select,\n updateSelectCallback,\n setIsDragging,\n } = useMemo(\n () => createSensors(ref, circular, onChangeHighlight),\n [circular, onChangeHighlight]\n )\n\n const commonA11yOptionProps = {\n role,\n id,\n ['aria-multiselectable']: multiple,\n }\n\n const a11yOptionsProps = !onChangeActiveDescendant\n ? {\n ...commonA11yOptionProps,\n onKeyDown: onKeyboardNavigation_ ?? defaultKeyDownNavigationHandler,\n tabIndex: 0,\n }\n : {\n ...commonA11yOptionProps,\n onKeyDown: undefined,\n tabIndex: undefined,\n }\n\n updateSelectCallback(onSelect)\n\n // exposes internal menu API\n React.useImperativeHandle(forwardRef, () => ({\n el: ref.current,\n highlight,\n highlighted,\n highlightFirst,\n highlightLast,\n highlightSelected,\n highlightSuggested,\n next,\n prev,\n select,\n defaultKeyDownNavigationHandler,\n }))\n\n useEffect(rehighlightCurrent)\n\n function onDragStart(start: DragStart, provided: ResponderProvided) {\n const itemInfo = JSON.parse(start.draggableId)\n // flushSync needed to ensure proper behavior in Safari\n flushSync(() => setCurrentlyDroppableIn(itemInfo.droppableIn))\n setIsDragging(true)\n\n const startPosition = start.source.index + 1\n const startGroupTitle =\n findGroupByDroppableId(\n ref.current,\n start.source.droppableId\n )?.getAttribute('data-title') ?? ''\n\n const announcement = startGroupTitle\n ? i18n.t('core.menuImperative.dragStartWithGroup', {\n startPosition,\n startGroupTitle,\n })\n : i18n.t('core.menuImperative.dragStart', {\n startPosition,\n })\n provided.announce(announcement)\n }\n\n const onDragUpdate = React.useCallback(function (\n _update: DragUpdate,\n provided: ResponderProvided\n ) {\n const startPosition = _update.source.index + 1\n const startGroupTitle =\n findGroupByDroppableId(\n ref.current,\n _update.source.droppableId\n )?.getAttribute('data-title') ?? ''\n\n const endPosition = _update.destination?.index + 1\n const endGroupTitle = _update.destination\n ? findGroupByDroppableId(\n ref.current,\n _update.destination.droppableId\n )?.getAttribute('data-title') ?? ''\n : ''\n\n const announcement =\n startGroupTitle === endGroupTitle || !endGroupTitle || !startGroupTitle\n ? i18n.t('core.menuImperative.dragUpdate', {\n startPosition,\n endPosition,\n })\n : i18n.t('core.menuImperative.dragUpdateWithGroup', {\n startPosition,\n endPosition,\n startGroupTitle,\n endGroupTitle,\n })\n provided.announce(announcement)\n },\n [])\n\n const onDragEnd = React.useCallback(\n function (result: DropResult, provided: ResponderProvided) {\n const endPosition = result.destination?.index + 1\n const endGroupTitle = result.destination\n ? findGroupByDroppableId(\n ref.current,\n result.destination.droppableId\n )?.getAttribute('data-title') ?? ''\n : ''\n\n const announcement = endGroupTitle\n ? i18n.t('core.menuImperative.dragEndWithGroup', {\n endPosition,\n endGroupTitle,\n })\n : i18n.t('core.menuImperative.dragEnd', {\n endPosition,\n })\n provided.announce(announcement)\n setCurrentlyDroppableIn([])\n setIsDragging(false)\n if (result.reason === 'DROP' && result.destination) {\n const itemInfo = JSON.parse(result.draggableId)\n onDragEnd_({\n draggableId: itemInfo.draggableId,\n source: result.source,\n destination: result.destination,\n })\n }\n },\n [onDragEnd_, setIsDragging]\n )\n\n // for context, used by Menu.Options\n const onScrollBottom = React.useCallback(\n function (e: React.UIEvent<HTMLDivElement, UIEvent>) {\n if (isScrolledToBottom(e)) {\n onScrollBottom_(e)\n }\n },\n [onScrollBottom_]\n )\n\n return (\n <MenuContext.Provider\n value={{\n a11yOptionsProps,\n currentlyDroppableIn,\n dndInstructionsId,\n onHoverItem: handleItemHover,\n onFocusItem: handleItemFocus,\n onBlurItem: handleItemBlur,\n onScrollBottom,\n onSelect,\n role,\n }}\n >\n <StyledWrapper ref={ref}>\n <DragDropContext\n onDragStart={onDragStart}\n onDragUpdate={onDragUpdate}\n onDragEnd={onDragEnd}\n >\n <StyledMenu {...props} />\n </DragDropContext>\n </StyledWrapper>\n <div id={dndInstructionsId} hidden>\n {i18n.t('core.menuImperative.dragAndDropInstructions')}\n </div>\n </MenuContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & GroupProps\n>(function Group(\n { clickable, item = 'group', label, labelId, children, id, ...props },\n ref\n) {\n let { fieldProps, labelProps } = useLabel({\n id,\n label: label ?? children,\n labelElementType: 'span',\n })\n\n if (labelId) {\n fieldProps = {\n ...fieldProps,\n 'aria-labelledby': labelId,\n }\n labelProps = {\n ...labelProps,\n id: labelId,\n }\n }\n\n return (\n <StyledGroup\n ref={ref}\n data-group={true}\n data-value={JSON.stringify(item)}\n data-title={label}\n role={label ? 'group' : 'separator'}\n {...fieldProps}\n {...props}\n >\n <StyledGroupLabel {...labelProps}>{label ?? children}</StyledGroupLabel>\n {label ? children : null}\n </StyledGroup>\n )\n})\n\nfunction findDraggableRecursively(\n children: React.ReactNode,\n draggableId: any\n): React.ReactElement | null {\n const nodeChildren = React.Children.toArray(children)\n for (let i = 0; i < nodeChildren.length; i++) {\n const child = nodeChildren[i]\n if (isValidElement(child)) {\n if ('draggableId' in child.props) {\n if (child.props.draggableId === draggableId) {\n return child\n }\n } else {\n const matchingChild = findDraggableRecursively(\n child.props.children,\n draggableId\n )\n if (matchingChild) {\n return matchingChild\n }\n }\n }\n }\n return null\n}\n\nexport function Droppable({ id, children, ...props }: DroppableProps) {\n const ctx = useMenuContext()\n const cloneZIndex = useZIndexContext().value\n\n function renderItemClone(\n provided: DraggableProvided,\n _snapshot: DraggableStateSnapshot,\n rubric: DraggableRubric\n ) {\n const draggableInfo = JSON.parse(rubric.draggableId)\n const draggingChild = findDraggableRecursively(\n children,\n draggableInfo.draggableId\n )\n const cloneProps = draggingChild?.props ?? {}\n\n return (\n <ClonedItem\n hasCheckbox={draggingChild?.type === CheckboxItem}\n provided={provided}\n cloneZIndex={cloneZIndex}\n dndInstructionsId={ctx.dndInstructionsId}\n {...cloneProps}\n />\n )\n }\n\n return (\n <DndDroppable\n droppableId={id}\n isDropDisabled={!ctx.currentlyDroppableIn.includes(id)}\n renderClone={renderItemClone}\n >\n {(provided: DroppableProvided, snapshot: DroppableStateSnapshot) => (\n <StyledDroppable\n ref={provided.innerRef}\n data-droppable\n data-droppable-id={id}\n {...props}\n >\n <IsInsideDroppableContext.Provider value={true}>\n {children}\n {provided.placeholder}\n </IsInsideDroppableContext.Provider>\n </StyledDroppable>\n )}\n </DndDroppable>\n )\n}\n\n// creates a version of a draggable item that can be positioned correctly within modals\n// this should always have the same appearance of an Item or CheckboxItem, but doesn't\n// need to handle selection events, which can't be done while the item is being dragged\nconst ClonedItem = ({\n hasCheckbox = false,\n children = null,\n selected = false,\n provided,\n dndInstructionsId,\n ...props\n}: React.HTMLAttributes<HTMLDivElement> &\n ItemProps &\n Omit<CheckboxProps, 'checked'> & {\n provided: DraggableProvided\n hasCheckbox: boolean\n cloneZIndex: number\n dndInstructionsId: string\n }) => {\n const itemProps = {\n ...props,\n 'aria-describedby': dndInstructionsId,\n $selected: selected,\n }\n\n const itemChildren = hasCheckbox ? (\n <Checkbox\n indeterminate={props.indeterminate}\n error={props.error}\n checked={selected}\n onChange={noop}\n >\n {children}\n </Checkbox>\n ) : (\n children\n )\n\n return (\n <StyledItem\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n {...itemProps}\n $isDraggable\n $isDragging\n style={{\n ...provided.draggableProps.style,\n ...props.style,\n zIndex: props.cloneZIndex,\n }}\n >\n <StyledGrip>\n <Grip color={colors.gray45} />\n </StyledGrip>\n {itemChildren}\n </StyledItem>\n )\n}\n\nexport const Item = React.forwardRef(function Item<\n E extends React.ElementType = MenuItemDefaultElement\n>(\n {\n as,\n /* @ts-ignore */\n children = null,\n item = null,\n /* @ts-ignore */\n onClick: onClick_ = noop,\n selected = false,\n suggested = false,\n disabled = false,\n id: _id,\n role,\n restoreFocus,\n draggableId,\n draggableIndex,\n droppableIn,\n ...props\n }: PolymorphicAs.ComponentPropsWithoutRef<MenuItemProps, E>,\n /**\n * TODO: although it is typed just fine from the outside (`<Menu.Item ref>` that is),\n * an effort is required to type it properly here too\n */\n forwardRef: React.Ref<any>\n) {\n const id = useId(_id)\n\n const ctx = useMenuContext()\n const isInsideDroppable = useIsInsideDroppable()\n\n const onClick = React.useCallback(\n function (event: React.MouseEvent<HTMLDivElement, MouseEvent>) {\n if (disabled) return\n\n onClick_(event)\n\n ctx.onSelect({\n item,\n event,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n },\n [ctx, item, onClick_, disabled, selected]\n )\n\n let contextRole\n let ariaSelected\n\n if (ctx.role === 'listbox') {\n contextRole = 'option'\n } else if (ctx.role === 'menu') {\n contextRole = 'menuitem'\n }\n\n if ([role, contextRole].includes('option')) {\n ariaSelected = selected ? true : undefined\n }\n\n const ariaDescribedBy = isInsideDroppable ? ctx.dndInstructionsId : undefined\n\n const itemProps = {\n 'aria-disabled': disabled ? true : undefined,\n 'aria-describedby': ariaDescribedBy,\n ...props,\n 'aria-selected': ariaSelected,\n id,\n role: role ?? contextRole,\n onClick,\n onMouseMove: (e: any) => ctx.onHoverItem(e.currentTarget),\n onFocus: (e: any) => ctx.onFocusItem(e.currentTarget),\n onBlur: (e: any) => ctx.onBlurItem(e.currentTarget),\n 'data-group': false,\n 'data-value': JSON.stringify(item),\n 'data-selected': selected,\n 'data-suggested': suggested,\n 'data-disabled': disabled,\n 'data-restorefocus': restoreFocus,\n $disabled: disabled,\n $selected: selected,\n }\n\n if (\n droppableIn !== undefined &&\n draggableId !== undefined &&\n draggableIndex !== undefined\n ) {\n // encoding id and valid droppables as the draggableId, so we can use them to determine where this item can be dropped\n const droppableInfo = {\n draggableId,\n droppableIn: Array.isArray(droppableIn) ? droppableIn : [droppableIn],\n }\n return (\n <Draggable\n draggableId={JSON.stringify(droppableInfo)}\n index={draggableIndex}\n isDragDisabled={disabled}\n >\n {(provided: DraggableProvided) => (\n <StyledItem\n ref={mergeRefs(provided.innerRef, forwardRef)}\n as={as}\n {...provided.draggableProps}\n {...provided.dragHandleProps}\n {...itemProps}\n $isDraggable={!disabled}\n style={{ ...provided.draggableProps.style, ...itemProps.style }}\n >\n {!disabled && (\n <StyledGrip>\n <Grip color={colors.gray45} />\n </StyledGrip>\n )}\n {children}\n </StyledItem>\n )}\n </Draggable>\n )\n }\n\n return (\n <StyledItem ref={forwardRef} as={as} {...itemProps}>\n {children}\n </StyledItem>\n )\n}) as PolymorphicAs.ComponentWithForwardedRef<\n MenuItemProps,\n MenuItemDefaultElement\n>\n\nexport const CheckboxItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> &\n (ItemProps | ItemWithDraggingProps) &\n Omit<CheckboxProps, 'checked'>\n>(function CheckboxItem(\n {\n selected = false,\n disabled = false,\n error = false,\n indeterminate = false,\n children = null,\n role,\n ...props\n },\n forwardRef\n) {\n const ctx = useMenuContext()\n\n let contextRole\n let ariaChecked: React.AriaAttributes['aria-checked']\n let ariaSelected\n\n if (ctx.role === 'listbox') {\n contextRole = 'option'\n ariaSelected = selected ? true : undefined\n } else if (ctx.role === 'menu') {\n contextRole = 'menuitemcheckbox'\n\n if (indeterminate) {\n ariaChecked = 'mixed'\n } else {\n ariaChecked = selected ? 'true' : 'false'\n }\n }\n\n return (\n <Item\n aria-checked={ariaChecked}\n aria-disabled={disabled ? true : undefined}\n aria-selected={ariaSelected}\n {...props}\n role={role ?? contextRole}\n selected={selected}\n disabled={disabled}\n ref={forwardRef}\n >\n <FakeCheckbox\n indeterminate={indeterminate}\n error={error}\n disabled={disabled}\n checked={selected}\n >\n {children}\n </FakeCheckbox>\n </Item>\n )\n})\nexport const Options = React.forwardRef<HTMLDivElement, OptionsProps>(\n function Options(props, ref) {\n const ctx = useMenuContext()\n const i18n = useI18nContext()\n\n return (\n <StyledOptions\n aria-label={i18n.t('core.menuImperative.options.ariaLabel')}\n {...props}\n {...ctx.a11yOptionsProps}\n data-internal=\"menuimperative-options\"\n ref={ref}\n onScroll={ctx.onScrollBottom}\n />\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n value: valueProp,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n\n const isControlled = valueProp !== undefined\n const [internalValue, setInternalValue] = React.useState('')\n const value = isControlled ? valueProp : internalValue\n\n const onChange: NonNullable<TypeaheadProps['onChange']> = React.useCallback(\n function (value, event) {\n if (!isControlled) {\n setInternalValue(value)\n }\n _onChange?.(event as unknown as React.ChangeEvent<HTMLInputElement>)\n },\n [_onChange, isControlled]\n )\n\n // intentionally changed to type text + searchbox,\n // voiceOver focus goes to clear button when no results in Chrome\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\n type=\"text\"\n role=\"searchbox\"\n autoFocus={true}\n placeholder={placeholder || I18n.t('search', { scope: i18nScope })}\n onChange={onChange}\n value={value}\n />\n </StyledSearch>\n )\n}\n\nexport const Header = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & HeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & FooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenuImperative_.displayName = 'Menu'\n\nDroppable.displayName = 'Menu.Droppable'\n\nFooter.displayName = 'Menu.Footer'\n\nGroup.displayName = 'Menu.Group'\n\nHeader.displayName = 'Menu.Header'\n\nItem.displayName = 'Menu.Item'\n\nOptions.displayName = 'Menu.Options'\n\nSearch.displayName = 'Menu.Search'\n\n/**\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu-imperative--demo)\n\n */\nexport const MenuImperative = addSubcomponents(\n {\n CheckboxItem,\n Droppable,\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n MenuImperative_\n)\n"],"mappings":"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"}