@procore/core-react 12.50.0 → 12.51.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 (254) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +14 -0
  3. package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
  4. package/dist/AnchorNavigation/AnchorNavigationProvider.js +11 -2
  5. package/dist/AnchorNavigation/AnchorNavigationProvider.js.map +1 -1
  6. package/dist/Avatar/Avatar.styles.js +5 -5
  7. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  8. package/dist/Badge/Badge.styles.js +2 -2
  9. package/dist/BadgePill/BadgePill.styles.js +4 -4
  10. package/dist/Banner/Banner.styles.js +10 -10
  11. package/dist/Box/Box.styles.js +1 -1
  12. package/dist/Breadcrumbs/Breadcrumbs.d.ts +15 -2
  13. package/dist/Breadcrumbs/Breadcrumbs.js +27 -4
  14. package/dist/Breadcrumbs/Breadcrumbs.js.map +1 -1
  15. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  16. package/dist/Breadcrumbs/Breadcrumbs.types.d.ts +9 -0
  17. package/dist/Breadcrumbs/Breadcrumbs.types.js.map +1 -1
  18. package/dist/Button/Button.styles.js +11 -12
  19. package/dist/Button/Button.styles.js.map +1 -1
  20. package/dist/Calendar/Calendar.styles.js +9 -9
  21. package/dist/Card/Card.styles.js +1 -1
  22. package/dist/Checkbox/Checkbox.styles.js +6 -6
  23. package/dist/ContactItem/ContactItem.styles.js +5 -5
  24. package/dist/Content/Content.styles.js +2 -2
  25. package/dist/DateInput/DateInput.styles.js +6 -6
  26. package/dist/DetailPage/DetailPage.styles.js +7 -7
  27. package/dist/Dropdown/Dropdown.js +2 -2
  28. package/dist/Dropdown/Dropdown.js.map +1 -1
  29. package/dist/Dropdown/Dropdown.styles.js +3 -3
  30. package/dist/Dropdown/Dropdown.types.d.ts +12 -2
  31. package/dist/Dropdown/Dropdown.types.js.map +1 -1
  32. package/dist/DropdownFlyout/DropdownFlyout.helpers.d.ts +3 -0
  33. package/dist/DropdownFlyout/DropdownFlyout.helpers.js +30 -2
  34. package/dist/DropdownFlyout/DropdownFlyout.helpers.js.map +1 -1
  35. package/dist/DropdownFlyout/DropdownFlyout.js +7 -1
  36. package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
  37. package/dist/DropdownFlyout/DropdownFlyout.styles.js +5 -5
  38. package/dist/DropdownFlyout/DropdownFlyout.styles.js.map +1 -1
  39. package/dist/DropdownFlyout/DropdownFlyout.types.d.ts +4 -0
  40. package/dist/DropdownFlyout/DropdownFlyout.types.js.map +1 -1
  41. package/dist/Dropzone/Dropzone.js +1 -1
  42. package/dist/Dropzone/Dropzone.styles.js +9 -9
  43. package/dist/EmptyState/EmptyState.styles.js +6 -6
  44. package/dist/Field/Field.styles.js +3 -3
  45. package/dist/FileList/FileList.styles.js +3 -3
  46. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  47. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  48. package/dist/FileSelect/FileSelect.styles.js +2 -2
  49. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  50. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  51. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  52. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  53. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  54. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  55. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  56. package/dist/FileToken/FileToken.styles.js +6 -6
  57. package/dist/FilterToken/FilterToken.styles.js +5 -5
  58. package/dist/FlexList/FlexList.styles.js +1 -1
  59. package/dist/Form/Form.styles.js +13 -13
  60. package/dist/Form/StyledFormikForm.styles.js +2 -2
  61. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +3 -3
  62. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js.map +1 -1
  63. package/dist/GhostPlaceholder/GhostPlaceholder.types.d.ts +10 -0
  64. package/dist/GhostPlaceholder/GhostPlaceholder.types.js.map +1 -1
  65. package/dist/Grid/Grid.styles.js +2 -2
  66. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  67. package/dist/Input/Input.styles.js +1 -1
  68. package/dist/Link/Link.styles.js +1 -1
  69. package/dist/ListPage/ListPage.styles.js +8 -8
  70. package/dist/Loader/Loader.styles.js +2 -2
  71. package/dist/Menu/Menu.js +7 -0
  72. package/dist/Menu/Menu.js.map +1 -1
  73. package/dist/Menu/Menu.types.d.ts +1 -0
  74. package/dist/Menu/Menu.types.js.map +1 -1
  75. package/dist/MenuImperative/MenuImperative.styles.d.ts +1 -0
  76. package/dist/MenuImperative/MenuImperative.styles.js +25 -22
  77. package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
  78. package/dist/MenuImperative/sensors.js +20 -4
  79. package/dist/MenuImperative/sensors.js.map +1 -1
  80. package/dist/Modal/Modal.styles.js +13 -13
  81. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  82. package/dist/NextMenu/NextMenu.styles.js +3 -3
  83. package/dist/NextTile/NextTile.styles.js +5 -5
  84. package/dist/Notation/Notation.js +1 -1
  85. package/dist/NumberInput/NumberInput.styles.js +7 -7
  86. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  87. package/dist/PageLayout/PageLayout.styles.js +17 -19
  88. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  89. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
  90. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  91. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  92. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  93. package/dist/Pagination/Pagination.styles.js +5 -5
  94. package/dist/Panel/Panel.styles.js +11 -11
  95. package/dist/Pill/Pill.styles.js +3 -3
  96. package/dist/PillSelect/PillSelect.styles.js +4 -4
  97. package/dist/Popover/Popover.styles.js +2 -2
  98. package/dist/Portal/Portal.styles.js +1 -1
  99. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  100. package/dist/RadioButton/RadioButton.styles.js +3 -3
  101. package/dist/Required/Required.styles.js +3 -3
  102. package/dist/Search/Search.styles.js +5 -5
  103. package/dist/Section/Section.styles.js +7 -7
  104. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  105. package/dist/Select/Select.styles.js +8 -8
  106. package/dist/Semantic/Semantic.styles.js +9 -9
  107. package/dist/Slider/Slider.styles.js +5 -5
  108. package/dist/Spinner/Spinner.styles.js +7 -7
  109. package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
  110. package/dist/SuperSelect/SuperSelect.components.js +2 -0
  111. package/dist/SuperSelect/SuperSelect.components.js.map +1 -1
  112. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  113. package/dist/SuperSelect/SuperSelect.styles.d.ts +1 -0
  114. package/dist/SuperSelect/SuperSelect.styles.js +79 -76
  115. package/dist/SuperSelect/SuperSelect.styles.js.map +1 -1
  116. package/dist/SuperSelect/SuperSelect.types.d.ts +1 -0
  117. package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
  118. package/dist/SuperSelect/useSuperSelect.js +1 -0
  119. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  120. package/dist/Switch/Switch.styles.js +4 -4
  121. package/dist/Table/Table.styles.js +29 -29
  122. package/dist/TableShelf/TableShelf.styles.js +5 -5
  123. package/dist/Tabs/Tabs.styles.js +16 -16
  124. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  125. package/dist/TextArea/TextArea.styles.js +1 -1
  126. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  127. package/dist/Thumbnail/Thumbnail.styles.js +21 -21
  128. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  129. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  130. package/dist/Tile/Tile.styles.js +8 -8
  131. package/dist/Title/Title.styles.js +7 -7
  132. package/dist/Toast/Toast.styles.js +3 -3
  133. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  134. package/dist/Token/Token.styles.js +5 -5
  135. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  136. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  137. package/dist/Tooltip/Tooltip.styles.js +3 -3
  138. package/dist/Tree/Tree.js +1 -1
  139. package/dist/Tree/Tree.styles.js +10 -10
  140. package/dist/Typeahead/Typeahead.styles.js +4 -4
  141. package/dist/Typography/Typography.styles.js +1 -1
  142. package/dist/Typography/Typography.table.story.js +2 -2
  143. package/dist/_hooks/I18n.d.ts +137 -10
  144. package/dist/_locales/de-DE.json +9 -5
  145. package/dist/_locales/en-AU.json +8 -4
  146. package/dist/_locales/en-CA.json +8 -4
  147. package/dist/_locales/en-GB.json +8 -4
  148. package/dist/_locales/en.json +1 -1
  149. package/dist/_locales/es-ES.json +8 -4
  150. package/dist/_locales/es.json +7 -3
  151. package/dist/_locales/fr-CA.json +11 -7
  152. package/dist/_locales/fr-FR.json +9 -5
  153. package/dist/_locales/is-IS.json +8 -4
  154. package/dist/_locales/it-IT.json +7 -3
  155. package/dist/_locales/ja-JP.json +9 -5
  156. package/dist/_locales/nb-NO.json +80 -76
  157. package/dist/_locales/pl-PL.json +8 -4
  158. package/dist/_locales/pt-BR.json +7 -3
  159. package/dist/_locales/pt-PT.json +14 -10
  160. package/dist/_locales/th-TH.json +8 -4
  161. package/dist/_locales/zh-SG.json +7 -3
  162. package/dist/_locales/zh-TW.json +13 -9
  163. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  164. package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
  165. package/dist/_storyHelpers_/primaryButtonThemeCssVars.d.ts +8 -0
  166. package/dist/_storyHelpers_/primaryButtonThemeCssVars.js +9 -0
  167. package/dist/_storyHelpers_/primaryButtonThemeCssVars.js.map +1 -0
  168. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +4 -4
  169. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  170. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  171. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  172. package/dist/_typedoc/Banner/Banner.types.json +15 -15
  173. package/dist/_typedoc/Box/Box.types.json +68 -68
  174. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +32 -10
  175. package/dist/_typedoc/Button/Button.types.json +14 -14
  176. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  177. package/dist/_typedoc/Card/Card.types.json +6 -6
  178. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  179. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  180. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  181. package/dist/_typedoc/DateSelect/DateSelect.types.json +14 -14
  182. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  183. package/dist/_typedoc/Dropdown/Dropdown.types.json +41 -40
  184. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +41 -31
  185. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  186. package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
  187. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  188. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  189. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  190. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  191. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  192. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  193. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  194. package/dist/_typedoc/Form/Form.types.json +770 -770
  195. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +14 -13
  196. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  197. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +54 -54
  198. package/dist/_typedoc/Input/Input.types.json +2 -2
  199. package/dist/_typedoc/Link/Link.types.json +1 -1
  200. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  201. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  202. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +84 -84
  203. package/dist/_typedoc/Modal/Modal.types.json +48 -48
  204. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +33 -33
  205. package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
  206. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  207. package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
  208. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
  209. package/dist/_typedoc/PageLayout/PageLayout.types.json +39 -39
  210. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  211. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  212. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  213. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  214. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  215. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  216. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  217. package/dist/_typedoc/Required/Required.types.json +5 -5
  218. package/dist/_typedoc/Search/Search.types.json +18 -18
  219. package/dist/_typedoc/Section/Section.types.json +15 -15
  220. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  221. package/dist/_typedoc/Select/Select.types.json +67 -67
  222. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  223. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  224. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  225. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  226. package/dist/_typedoc/Table/Table.types.json +105 -105
  227. package/dist/_typedoc/Tabs/Tabs.types.json +23 -23
  228. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  229. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  230. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  231. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  232. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  233. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  234. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  235. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  236. package/dist/_typedoc/Title/Title.types.json +1 -1
  237. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  238. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  239. package/dist/_typedoc/Token/Token.types.json +7 -7
  240. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  241. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  242. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  243. package/dist/_typedoc/Tree/Tree.types.json +88 -88
  244. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  245. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  246. package/dist/_typedoc/_utils/types.json +3 -3
  247. package/dist/_typedoc/a11y-tips.json +1 -1
  248. package/dist/_utils/shadowDOM.d.ts +3 -0
  249. package/dist/_utils/shadowDOM.js +20 -0
  250. package/dist/_utils/shadowDOM.js.map +1 -0
  251. package/dist/index.d.ts +1 -0
  252. package/dist/index.js +1 -0
  253. package/dist/index.js.map +1 -1
  254. package/package.json +3 -2
@@ -7,11 +7,11 @@ export var loaderTransitionDuration = 250;
7
7
  var movingStripes = /*#__PURE__*/keyframes(["from{background-position:", "px 0;}100%{background-position:0 ", "px;}"], backgroundSize, backgroundSize);
8
8
  export var StyledLoader = /*#__PURE__*/styled.div.withConfig({
9
9
  displayName: "StyledLoader",
10
- componentId: "core-12_50_0__sc-wgvjj9-0"
10
+ componentId: "core-12_51_0__sc-wgvjj9-0"
11
11
  })(["display:block;height:100%;left:0;min-width:12px;position:absolute;transition:width ", "ms ease-out;top:0;"], loaderTransitionDuration);
12
12
  export var StyledGradient = /*#__PURE__*/styled.div.withConfig({
13
13
  displayName: "StyledGradient",
14
- componentId: "core-12_50_0__sc-wgvjj9-1"
14
+ componentId: "core-12_51_0__sc-wgvjj9-1"
15
15
  })(["height:100%;", ""], function (_ref) {
16
16
  var $animated = _ref.$animated;
17
17
  return $animated ? css(["@media (prefers-reduced-motion:no-preference){animation:", " 0.5s linear infinite;}background-image:linear-gradient( 45deg,", " 26%,", " 25%,", " 51%,", " 50%,", " 76%,", " 75%,", " );background-size:", "px ", "px;"], movingStripes, color1, color2, color2, color1, color1, color2, color2, backgroundSize, backgroundSize) : css(["background-color:", ";"], colors.blue50);
package/dist/Menu/Menu.js CHANGED
@@ -78,6 +78,7 @@ export function useMenu(_ref) {
78
78
  size: 0
79
79
  });
80
80
  var highlighted = React.useRef(null);
81
+ var keyboardNavigated = React.useRef(false);
81
82
  var keyHandlerRef = externalKeyHandlerRef || /*#__PURE__*/React.createRef();
82
83
  var selectItem = React.useCallback(function (selection) {
83
84
  onSelect(selection);
@@ -85,9 +86,11 @@ export function useMenu(_ref) {
85
86
  var _onKeyDown = React.useCallback(function (e) {
86
87
  var key = e.key;
87
88
  if (key === 'ArrowDown' || key === 'Down') {
89
+ keyboardNavigated.current = true;
88
90
  listNavigation.increment();
89
91
  e.preventDefault();
90
92
  } else if (key === 'ArrowUp' || key === 'Up') {
93
+ keyboardNavigated.current = true;
91
94
  listNavigation.decrement();
92
95
  e.preventDefault();
93
96
  } else if (key === 'Enter') {
@@ -118,6 +121,7 @@ export function useMenu(_ref) {
118
121
  },
119
122
  highlighted: highlighted,
120
123
  isSelectable: isSelectable,
124
+ keyboardNavigated: keyboardNavigated,
121
125
  listNavigation: listNavigation,
122
126
  multiple: multiple,
123
127
  onScrollBottom: onScrollBottom,
@@ -212,6 +216,7 @@ export var Item = /*#__PURE__*/React.forwardRef(function Item(_ref4, ref) {
212
216
  props = _objectWithoutProperties(_ref4, _excluded3);
213
217
  var _useMenuHookContext = useMenuHookContext(),
214
218
  highlighted = _useMenuHookContext.highlighted,
219
+ keyboardNavigated = _useMenuHookContext.keyboardNavigated,
215
220
  listNavigation = _useMenuHookContext.listNavigation,
216
221
  multiple = _useMenuHookContext.multiple,
217
222
  selectItem = _useMenuHookContext.selectItem;
@@ -256,11 +261,13 @@ export var Item = /*#__PURE__*/React.forwardRef(function Item(_ref4, ref) {
256
261
  _onMouseMove(event);
257
262
  }
258
263
  if (listNavigation.index !== index) {
264
+ keyboardNavigated.current = false;
259
265
  listNavigation.set(index);
260
266
  }
261
267
  },
262
268
  ref: itemRef,
263
269
  role: "menuitem",
270
+ $focusVisible: isHighlighted && keyboardNavigated.current,
264
271
  $highlighted: isHighlighted,
265
272
  $selected: selected
266
273
  }), children);
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","createRef","selectItem","useCallback","selection","onKeyDown","key","increment","preventDefault","decrement","current","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","role","tabIndex","Group","_ref3","item","_excluded2","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} role=\"menu\" tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuGroupProps\n>(function Group({ children, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n >\n <StyledGroupLabel>{children}</StyledGroupLabel>\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const { highlighted, listNavigation, multiple, selectItem } =\n useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n role=\"menuitem\"\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\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> & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\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 Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"Menu.js","names":["React","StyledFooter","StyledGroup","StyledGroupLabel","StyledHeader","StyledItem","StyledMenu","StyledOptions","StyledSearch","StyledWrapper","useOverlayTriggerContext","Typeahead","useEventListener","useI18nContext","useListNavigation","addSubcomponents","usingHookOrDefault","onScrollBottomThreshold","isItem","element","type","Item","scrollIntoView","index","parentElement","scrollTop","offsetTop","clientHeight","_element$parentElemen","parentHeight","checkBottomScrollPosition","callback","onScroll","e","currentTarget","HTMLElement","scrollHeight","noop","useMenu","_ref","_ref$isSelectable","isSelectable","externalKeyHandlerRef","keyHandlerRef","_ref$multiple","multiple","onScrollBottom","_ref$onSearch","onSearch","_ref$onSelect","onSelect","_ref$scrollable","scrollable","listNavigation","circular","initialIndex","size","highlighted","useRef","keyboardNavigated","createRef","selectItem","useCallback","selection","onKeyDown","key","current","increment","preventDefault","decrement","click","useEffect","el","addEventListener","removeEventListener","domHandlers","nativeEvent","MenuHookContext","createContext","useMenuHookContext","context","useContext","Error","Menu_","forwardRef","Menu","_ref2","ref","children","_ref2$UNSAFE_closesOn","UNSAFE_closesOnSelect","_ref2$isSelectable","_ref2$onSelect","_ref2$scrollable","usingHook","props","_objectWithoutProperties","_excluded","overlayTriggerContext","menu","reset","hide","event","createElement","Provider","value","_objectSpread","_extends","role","tabIndex","Group","_ref3","item","_excluded2","_ref4","_ref4$index","_ref4$onClick","onClick","_ref4$selected","selected","_ref4$suggested","suggested","onMouseMove","_excluded3","_useMenuHookContext","itemRef","isHighlighted","set","group","$focusVisible","$highlighted","$selected","Options","_ref5","className","_ref5$scrollable","_useMenuHookContext2","menuScrollable","optionsRef","Children","toArray","filter","length","setSize","handler","scope","$scrollable","map","child","isValidElement","selectableIndex","cloneElement","Search","_ref6","_ref6$i18nScope","i18nScope","placeholder","_onChange","onChange","_excluded4","I18n","_React$useState","useState","_React$useState2","_slicedToArray","setValue","_menu$onSearch","target","call","autoFocus","t","Header","_ref7","_objectDestructuringEmpty","Footer","_ref8","_ref8$padding","padding","_excluded5","displayName"],"sources":["../../src/Menu/Menu.tsx"],"sourcesContent":["import React from 'react'\nimport {\n StyledFooter,\n StyledGroup,\n StyledGroupLabel,\n StyledHeader,\n StyledItem,\n StyledMenu,\n StyledOptions,\n StyledSearch,\n StyledWrapper,\n} from '../MenuImperative/MenuImperative.styles'\nimport { useOverlayTriggerContext } from '../OverlayTrigger/OverlayTrigger'\nimport type { TypeaheadProps } from '../Typeahead'\nimport { Typeahead } from '../Typeahead'\nimport { useEventListener } from '../_hooks/EventListener'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { useListNavigation } from '../_hooks/ListNavigation'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { usingHookOrDefault } from '../_utils/usingHookOrDefault'\nimport type {\n ElementTypeChecker,\n MenuFooterProps,\n MenuGroupProps,\n MenuHeaderProps,\n MenuHook,\n MenuHookConfig,\n MenuItemProps,\n MenuOptionsProps,\n MenuProps,\n MenuSearchProps,\n MenuSelection,\n} from './Menu.types'\n\nconst onScrollBottomThreshold = 8\n\nexport const isItem: ElementTypeChecker = (element) => element.type === Item\n\nfunction scrollIntoView(index: number, element: HTMLElement) {\n if (!element.parentElement) {\n return\n }\n\n if (index === 0) {\n element.parentElement.scrollTop = 0\n\n return\n }\n\n const { offsetTop, clientHeight } = element\n\n const { scrollTop, clientHeight: parentHeight } = element.parentElement\n\n if (offsetTop < scrollTop) {\n element.parentElement.scrollTop = offsetTop\n } else if (offsetTop + clientHeight > scrollTop + parentHeight) {\n element.parentElement.scrollTop = offsetTop - parentHeight + clientHeight\n }\n}\n\nfunction checkBottomScrollPosition(callback?: (e: Event) => void) {\n return function onScroll(e: Event) {\n if (\n callback &&\n e.currentTarget instanceof HTMLElement &&\n e.currentTarget.scrollTop >=\n e.currentTarget.scrollHeight -\n e.currentTarget.clientHeight -\n onScrollBottomThreshold\n ) {\n callback(e)\n }\n }\n}\n\nfunction noop() {}\n\nexport function useMenu({\n isSelectable = isItem,\n keyHandlerRef: externalKeyHandlerRef,\n multiple = false,\n onScrollBottom,\n onSearch = noop,\n onSelect = noop,\n scrollable = true,\n}: MenuHookConfig): MenuHook {\n const listNavigation = useListNavigation({\n circular: !onScrollBottom,\n initialIndex: 0,\n size: 0,\n })\n\n const highlighted = React.useRef<HTMLDivElement>(null)\n const keyboardNavigated = React.useRef(false)\n\n const keyHandlerRef = externalKeyHandlerRef || React.createRef<HTMLElement>()\n\n const selectItem = React.useCallback(\n (selection: MenuSelection) => {\n onSelect(selection)\n },\n [onSelect]\n )\n\n const onKeyDown = React.useCallback(\n function (e: KeyboardEvent) {\n const { key } = e\n\n if (key === 'ArrowDown' || key === 'Down') {\n keyboardNavigated.current = true\n listNavigation.increment()\n e.preventDefault()\n } else if (key === 'ArrowUp' || key === 'Up') {\n keyboardNavigated.current = true\n listNavigation.decrement()\n e.preventDefault()\n } else if (key === 'Enter') {\n if (highlighted.current) {\n highlighted.current.click()\n }\n }\n },\n [listNavigation]\n )\n\n // TODO - deprecate keyhandlerRef, this is just for backwards compatibility since we already exposed it\n React.useEffect(\n function () {\n let el: HTMLElement\n\n if (keyHandlerRef.current) {\n keyHandlerRef.current.addEventListener('keydown', onKeyDown)\n\n el = keyHandlerRef.current\n }\n\n return function () {\n if (el) {\n el.removeEventListener('keydown', onKeyDown)\n }\n }\n },\n [keyHandlerRef, onKeyDown]\n )\n\n return {\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) =>\n onKeyDown(e.nativeEvent),\n },\n highlighted,\n isSelectable,\n keyboardNavigated,\n listNavigation,\n multiple,\n onScrollBottom,\n onSearch,\n scrollable,\n selectItem,\n }\n}\n\nexport const MenuHookContext = React.createContext<MenuHook | null>(null)\n\nexport function useMenuHookContext(): MenuHook {\n const context = React.useContext(MenuHookContext)\n\n if (context === null) {\n throw new Error(\n 'Cannot find `MenuHook` context, please wrap your component in `<MenuHookContext.Provider>`'\n )\n }\n\n return context\n}\n\nexport const Menu_ = React.forwardRef<HTMLDivElement, MenuProps>(function Menu(\n {\n children,\n UNSAFE_closesOnSelect = true,\n isSelectable = isItem,\n keyHandlerRef,\n onScrollBottom,\n onSelect = noop,\n onSearch,\n scrollable = true,\n usingHook,\n ...props\n },\n ref\n) {\n // Don't be tempted to put this in useMenu. In order for hooks to be portable\n // across the dom tree, they should not contain context consumers.\n const overlayTriggerContext = useOverlayTriggerContext()\n\n const menu = usingHookOrDefault(\n usingHook,\n useMenu\n )({\n isSelectable,\n keyHandlerRef,\n onScrollBottom,\n onSelect,\n onSearch,\n scrollable,\n })\n\n React.useEffect(\n function () {\n // When unmounting, reset the listNavigation index and set\n // the current highlighted item to null. we only want to run this once,\n // so don't pass any dependencies\n return function () {\n menu.listNavigation.reset()\n menu.highlighted.current = null\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n function selectItem(selection: MenuSelection) {\n menu.selectItem(selection)\n\n if (UNSAFE_closesOnSelect) {\n overlayTriggerContext.hide(selection.event)\n }\n }\n\n return (\n <MenuHookContext.Provider value={{ ...menu, selectItem }}>\n <StyledWrapper {...menu.domHandlers} ref={ref} role=\"menu\" tabIndex={0}>\n <StyledMenu {...props}>{children}</StyledMenu>\n </StyledWrapper>\n </MenuHookContext.Provider>\n )\n})\n\nexport const Group = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuGroupProps\n>(function Group({ children, item, ...props }, ref) {\n return (\n <StyledGroup\n {...props}\n ref={ref}\n // onClick={(event) => {\n // TODO: implement selecting groups?\n // }}\n >\n <StyledGroupLabel>{children}</StyledGroupLabel>\n </StyledGroup>\n )\n})\n\nexport const Item = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuItemProps\n>(function Item(\n {\n children,\n index = 0,\n item,\n onClick = noop,\n selected = false,\n suggested = false,\n onMouseMove,\n ...props\n },\n ref\n) {\n const {\n highlighted,\n keyboardNavigated,\n listNavigation,\n multiple,\n selectItem,\n } = useMenuHookContext()\n\n const itemRef =\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (ref as React.RefObject<HTMLDivElement>) || React.useRef<HTMLDivElement>()\n\n const isHighlighted = index === listNavigation.index\n\n React.useEffect(\n function () {\n // When mounting, check if this item is selected or suggested, and if\n // it is, then set it as the current index and scroll to it.\n // We only want to run this once, so don't pass any dependencies\n\n if (multiple) {\n // don't do this behavior in multiple mode\n return\n }\n\n if (itemRef.current && (selected || suggested)) {\n highlighted.current = itemRef.current\n listNavigation.set(index)\n }\n },\n /* eslint-disable */ [] /* eslint-enable */\n )\n\n React.useEffect(\n function () {\n // If this item has become highlighted, scroll to it\n if (itemRef.current && isHighlighted) {\n highlighted.current = itemRef.current\n scrollIntoView(index, itemRef.current)\n }\n },\n [highlighted, index, isHighlighted, itemRef]\n )\n\n return (\n <StyledItem\n {...props}\n onClick={(event: React.MouseEvent<HTMLDivElement>) => {\n listNavigation.set(index)\n\n selectItem({ event: event.nativeEvent, item, group: false })\n\n onClick(event)\n }}\n onMouseMove={(event: React.MouseEvent<HTMLDivElement>) => {\n if (onMouseMove) {\n onMouseMove(event)\n }\n if (listNavigation.index !== index) {\n keyboardNavigated.current = false\n listNavigation.set(index)\n }\n }}\n ref={itemRef}\n role=\"menuitem\"\n $focusVisible={isHighlighted && keyboardNavigated.current}\n $highlighted={isHighlighted}\n $selected={selected}\n >\n {children}\n </StyledItem>\n )\n})\n\nexport const Options = React.forwardRef<HTMLDivElement, MenuOptionsProps>(\n function Options({ children, className, scrollable = true }, ref) {\n const {\n listNavigation,\n isSelectable,\n onScrollBottom,\n scrollable: menuScrollable,\n } = useMenuHookContext()\n\n const optionsRef =\n (ref as React.RefObject<HTMLDivElement>) || React.createRef()\n\n const size = React.Children.toArray(children).filter(isSelectable).length\n\n React.useEffect(\n function () {\n listNavigation.setSize(size)\n },\n [listNavigation, size]\n )\n\n useEventListener({\n event: 'scroll',\n handler: checkBottomScrollPosition(onScrollBottom),\n scope: optionsRef,\n })\n\n let index = 0\n\n return (\n <StyledOptions\n className={className}\n ref={optionsRef}\n $scrollable={menuScrollable || scrollable}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child) && isSelectable(child)) {\n const selectableIndex = index\n\n index = index + 1\n\n return React.cloneElement(child, {\n index: selectableIndex,\n })\n }\n\n return child\n })}\n </StyledOptions>\n )\n }\n)\n\nexport const Search = ({\n className,\n i18nScope = 'core.menu',\n placeholder,\n onChange: _onChange,\n ...props\n}: MenuSearchProps) => {\n const I18n = useI18nContext()\n const menu = useMenuHookContext()\n\n const [value, setValue] = React.useState('')\n\n const onChange: TypeaheadProps['onChange'] = React.useCallback(\n function (value: string, event: any) {\n setValue(event.target.value)\n menu.onSearch?.(event)\n menu.listNavigation.set(0)\n _onChange?.(event)\n },\n [_onChange]\n )\n\n return (\n <StyledSearch className={className}>\n <Typeahead\n {...props}\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> & MenuHeaderProps\n>(function Header({ ...props }, ref) {\n return <StyledHeader ref={ref} {...props} />\n})\n\nexport const Footer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & MenuFooterProps\n>(function Footer({ padding = 'md lg', ...props }, ref) {\n return <StyledFooter ref={ref} padding={padding} {...props} />\n})\n\nMenu_.displayName = 'Menu'\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 Menus are used in conjunction with components that contain dropdowns.\n For example, multi select, single select, and dropdown.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-menu--demo)\n\n @see [Design Guidelines](https://design.procore.com/menu)\n\n */\nexport const Menu = addSubcomponents(\n {\n Footer,\n Group,\n Header,\n Item,\n Options,\n Search,\n },\n Menu_\n)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,YAAY,EACZC,WAAW,EACXC,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,aAAa,QACR,yCAAyC;AAChD,SAASC,wBAAwB,QAAQ,kCAAkC;AAE3E,SAASC,SAAS,QAAQ,cAAc;AACxC,SAASC,gBAAgB,QAAQ,yBAAyB;AAC1D,SAASC,cAAc,QAAQ,gBAAgB;AAC/C,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,gBAAgB,QAAQ,4BAA4B;AAC7D,SAASC,kBAAkB,QAAQ,8BAA8B;AAejE,IAAMC,uBAAuB,GAAG,CAAC;AAEjC,OAAO,IAAMC,MAA0B,GAAG,SAA7BA,MAA0BA,CAAIC,OAAO;EAAA,OAAKA,OAAO,CAACC,IAAI,KAAKC,IAAI;AAAA;AAE5E,SAASC,cAAcA,CAACC,KAAa,EAAEJ,OAAoB,EAAE;EAC3D,IAAI,CAACA,OAAO,CAACK,aAAa,EAAE;IAC1B;EACF;EAEA,IAAID,KAAK,KAAK,CAAC,EAAE;IACfJ,OAAO,CAACK,aAAa,CAACC,SAAS,GAAG,CAAC;IAEnC;EACF;EAEA,IAAQC,SAAS,GAAmBP,OAAO,CAAnCO,SAAS;IAAEC,YAAY,GAAKR,OAAO,CAAxBQ,YAAY;EAE/B,IAAAC,qBAAA,GAAkDT,OAAO,CAACK,aAAa;IAA/DC,SAAS,GAAAG,qBAAA,CAATH,SAAS;IAAgBI,YAAY,GAAAD,qBAAA,CAA1BD,YAAY;EAE/B,IAAID,SAAS,GAAGD,SAAS,EAAE;IACzBN,OAAO,CAACK,aAAa,CAACC,SAAS,GAAGC,SAAS;EAC7C,CAAC,MAAM,IAAIA,SAAS,GAAGC,YAAY,GAAGF,SAAS,GAAGI,YAAY,EAAE;IAC9DV,OAAO,CAACK,aAAa,CAACC,SAAS,GAAGC,SAAS,GAAGG,YAAY,GAAGF,YAAY;EAC3E;AACF;AAEA,SAASG,yBAAyBA,CAACC,QAA6B,EAAE;EAChE,OAAO,SAASC,QAAQA,CAACC,CAAQ,EAAE;IACjC,IACEF,QAAQ,IACRE,CAAC,CAACC,aAAa,YAAYC,WAAW,IACtCF,CAAC,CAACC,aAAa,CAACT,SAAS,IACvBQ,CAAC,CAACC,aAAa,CAACE,YAAY,GAC1BH,CAAC,CAACC,aAAa,CAACP,YAAY,GAC5BV,uBAAuB,EAC3B;MACAc,QAAQ,CAACE,CAAC,CAAC;IACb;EACF,CAAC;AACH;AAEA,SAASI,IAAIA,CAAA,EAAG,CAAC;AAEjB,OAAO,SAASC,OAAOA,CAAAC,IAAA,EAQM;EAAA,IAAAC,iBAAA,GAAAD,IAAA,CAP3BE,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAGtB,MAAM,GAAAsB,iBAAA;IACNE,qBAAqB,GAAAH,IAAA,CAApCI,aAAa;IAAAC,aAAA,GAAAL,IAAA,CACbM,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,KAAK,GAAAA,aAAA;IAChBE,cAAc,GAAAP,IAAA,CAAdO,cAAc;IAAAC,aAAA,GAAAR,IAAA,CACdS,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAGV,IAAI,GAAAU,aAAA;IAAAE,aAAA,GAAAV,IAAA,CACfW,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAGZ,IAAI,GAAAY,aAAA;IAAAE,eAAA,GAAAZ,IAAA,CACfa,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;EAEjB,IAAME,cAAc,GAAGvC,iBAAiB,CAAC;IACvCwC,QAAQ,EAAE,CAACR,cAAc;IACzBS,YAAY,EAAE,CAAC;IACfC,IAAI,EAAE;EACR,CAAC,CAAC;EAEF,IAAMC,WAAW,GAAGzD,KAAK,CAAC0D,MAAM,CAAiB,IAAI,CAAC;EACtD,IAAMC,iBAAiB,GAAG3D,KAAK,CAAC0D,MAAM,CAAC,KAAK,CAAC;EAE7C,IAAMf,aAAa,GAAGD,qBAAqB,iBAAI1C,KAAK,CAAC4D,SAAS,CAAc,CAAC;EAE7E,IAAMC,UAAU,GAAG7D,KAAK,CAAC8D,WAAW,CAClC,UAACC,SAAwB,EAAK;IAC5Bb,QAAQ,CAACa,SAAS,CAAC;EACrB,CAAC,EACD,CAACb,QAAQ,CACX,CAAC;EAED,IAAMc,UAAS,GAAGhE,KAAK,CAAC8D,WAAW,CACjC,UAAU7B,CAAgB,EAAE;IAC1B,IAAQgC,GAAG,GAAKhC,CAAC,CAATgC,GAAG;IAEX,IAAIA,GAAG,KAAK,WAAW,IAAIA,GAAG,KAAK,MAAM,EAAE;MACzCN,iBAAiB,CAACO,OAAO,GAAG,IAAI;MAChCb,cAAc,CAACc,SAAS,CAAC,CAAC;MAC1BlC,CAAC,CAACmC,cAAc,CAAC,CAAC;IACpB,CAAC,MAAM,IAAIH,GAAG,KAAK,SAAS,IAAIA,GAAG,KAAK,IAAI,EAAE;MAC5CN,iBAAiB,CAACO,OAAO,GAAG,IAAI;MAChCb,cAAc,CAACgB,SAAS,CAAC,CAAC;MAC1BpC,CAAC,CAACmC,cAAc,CAAC,CAAC;IACpB,CAAC,MAAM,IAAIH,GAAG,KAAK,OAAO,EAAE;MAC1B,IAAIR,WAAW,CAACS,OAAO,EAAE;QACvBT,WAAW,CAACS,OAAO,CAACI,KAAK,CAAC,CAAC;MAC7B;IACF;EACF,CAAC,EACD,CAACjB,cAAc,CACjB,CAAC;;EAED;EACArD,KAAK,CAACuE,SAAS,CACb,YAAY;IACV,IAAIC,EAAe;IAEnB,IAAI7B,aAAa,CAACuB,OAAO,EAAE;MACzBvB,aAAa,CAACuB,OAAO,CAACO,gBAAgB,CAAC,SAAS,EAAET,UAAS,CAAC;MAE5DQ,EAAE,GAAG7B,aAAa,CAACuB,OAAO;IAC5B;IAEA,OAAO,YAAY;MACjB,IAAIM,EAAE,EAAE;QACNA,EAAE,CAACE,mBAAmB,CAAC,SAAS,EAAEV,UAAS,CAAC;MAC9C;IACF,CAAC;EACH,CAAC,EACD,CAACrB,aAAa,EAAEqB,UAAS,CAC3B,CAAC;EAED,OAAO;IACLW,WAAW,EAAE;MACXX,SAAS,EAAE,SAAXA,SAASA,CAAG/B,CAAmC;QAAA,OAC7C+B,UAAS,CAAC/B,CAAC,CAAC2C,WAAW,CAAC;MAAA;IAC5B,CAAC;IACDnB,WAAW,EAAXA,WAAW;IACXhB,YAAY,EAAZA,YAAY;IACZkB,iBAAiB,EAAjBA,iBAAiB;IACjBN,cAAc,EAAdA,cAAc;IACdR,QAAQ,EAARA,QAAQ;IACRC,cAAc,EAAdA,cAAc;IACdE,QAAQ,EAARA,QAAQ;IACRI,UAAU,EAAVA,UAAU;IACVS,UAAU,EAAVA;EACF,CAAC;AACH;AAEA,OAAO,IAAMgB,eAAe,gBAAG7E,KAAK,CAAC8E,aAAa,CAAkB,IAAI,CAAC;AAEzE,OAAO,SAASC,kBAAkBA,CAAA,EAAa;EAC7C,IAAMC,OAAO,GAAGhF,KAAK,CAACiF,UAAU,CAACJ,eAAe,CAAC;EAEjD,IAAIG,OAAO,KAAK,IAAI,EAAE;IACpB,MAAM,IAAIE,KAAK,CACb,4FACF,CAAC;EACH;EAEA,OAAOF,OAAO;AAChB;AAEA,OAAO,IAAMG,KAAK,gBAAGnF,KAAK,CAACoF,UAAU,CAA4B,SAASC,IAAIA,CAAAC,KAAA,EAa5EC,GAAG,EACH;EAAA,IAZEC,QAAQ,GAAAF,KAAA,CAARE,QAAQ;IAAAC,qBAAA,GAAAH,KAAA,CACRI,qBAAqB;IAArBA,qBAAqB,GAAAD,qBAAA,cAAG,IAAI,GAAAA,qBAAA;IAAAE,kBAAA,GAAAL,KAAA,CAC5B7C,YAAY;IAAZA,YAAY,GAAAkD,kBAAA,cAAGzE,MAAM,GAAAyE,kBAAA;IACrBhD,aAAa,GAAA2C,KAAA,CAAb3C,aAAa;IACbG,cAAc,GAAAwC,KAAA,CAAdxC,cAAc;IAAA8C,cAAA,GAAAN,KAAA,CACdpC,QAAQ;IAARA,QAAQ,GAAA0C,cAAA,cAAGvD,IAAI,GAAAuD,cAAA;IACf5C,QAAQ,GAAAsC,KAAA,CAARtC,QAAQ;IAAA6C,gBAAA,GAAAP,KAAA,CACRlC,UAAU;IAAVA,UAAU,GAAAyC,gBAAA,cAAG,IAAI,GAAAA,gBAAA;IACjBC,SAAS,GAAAR,KAAA,CAATQ,SAAS;IACNC,KAAK,GAAAC,wBAAA,CAAAV,KAAA,EAAAW,SAAA;EAIV;EACA;EACA,IAAMC,qBAAqB,GAAGxF,wBAAwB,CAAC,CAAC;EAExD,IAAMyF,IAAI,GAAGnF,kBAAkB,CAC7B8E,SAAS,EACTxD,OACF,CAAC,CAAC;IACAG,YAAY,EAAZA,YAAY;IACZE,aAAa,EAAbA,aAAa;IACbG,cAAc,EAAdA,cAAc;IACdI,QAAQ,EAARA,QAAQ;IACRF,QAAQ,EAARA,QAAQ;IACRI,UAAU,EAAVA;EACF,CAAC,CAAC;EAEFpD,KAAK,CAACuE,SAAS,CACb,YAAY;IACV;IACA;IACA;IACA,OAAO,YAAY;MACjB4B,IAAI,CAAC9C,cAAc,CAAC+C,KAAK,CAAC,CAAC;MAC3BD,IAAI,CAAC1C,WAAW,CAACS,OAAO,GAAG,IAAI;IACjC,CAAC;EACH,CAAC,EACD,oBAAqB,EAAE,CAAC,mBAC1B,CAAC;;EAED,SAASL,UAAUA,CAACE,SAAwB,EAAE;IAC5CoC,IAAI,CAACtC,UAAU,CAACE,SAAS,CAAC;IAE1B,IAAI2B,qBAAqB,EAAE;MACzBQ,qBAAqB,CAACG,IAAI,CAACtC,SAAS,CAACuC,KAAK,CAAC;IAC7C;EACF;EAEA,oBACEtG,KAAA,CAAAuG,aAAA,CAAC1B,eAAe,CAAC2B,QAAQ;IAACC,KAAK,EAAAC,aAAA,CAAAA,aAAA,KAAOP,IAAI;MAAEtC,UAAU,EAAVA;IAAU;EAAG,gBACvD7D,KAAA,CAAAuG,aAAA,CAAC9F,aAAa,EAAAkG,QAAA,KAAKR,IAAI,CAACxB,WAAW;IAAEY,GAAG,EAAEA,GAAI;IAACqB,IAAI,EAAC,MAAM;IAACC,QAAQ,EAAE;EAAE,iBACrE7G,KAAA,CAAAuG,aAAA,CAACjG,UAAU,EAAKyF,KAAK,EAAGP,QAAqB,CAChC,CACS,CAAC;AAE/B,CAAC,CAAC;AAEF,OAAO,IAAMsB,KAAK,gBAAG9G,KAAK,CAACoF,UAAU,CAGnC,SAAS0B,KAAKA,CAAAC,KAAA,EAA+BxB,GAAG,EAAE;EAAA,IAAjCC,QAAQ,GAAAuB,KAAA,CAARvB,QAAQ;IAAEwB,IAAI,GAAAD,KAAA,CAAJC,IAAI;IAAKjB,KAAK,GAAAC,wBAAA,CAAAe,KAAA,EAAAE,UAAA;EACzC,oBACEjH,KAAA,CAAAuG,aAAA,CAACrG,WAAW,EAAAyG,QAAA,KACNZ,KAAK;IACTR,GAAG,EAAEA;IACL;IACA;IACA;EAAA,iBAEAvF,KAAA,CAAAuG,aAAA,CAACpG,gBAAgB,QAAEqF,QAA2B,CACnC,CAAC;AAElB,CAAC,CAAC;AAEF,OAAO,IAAMnE,IAAI,gBAAGrB,KAAK,CAACoF,UAAU,CAGlC,SAAS/D,IAAIA,CAAA6F,KAAA,EAWb3B,GAAG,EACH;EAAA,IAVEC,QAAQ,GAAA0B,KAAA,CAAR1B,QAAQ;IAAA2B,WAAA,GAAAD,KAAA,CACR3F,KAAK;IAALA,KAAK,GAAA4F,WAAA,cAAG,CAAC,GAAAA,WAAA;IACTH,IAAI,GAAAE,KAAA,CAAJF,IAAI;IAAAI,aAAA,GAAAF,KAAA,CACJG,OAAO;IAAPA,QAAO,GAAAD,aAAA,cAAG/E,IAAI,GAAA+E,aAAA;IAAAE,cAAA,GAAAJ,KAAA,CACdK,QAAQ;IAARA,QAAQ,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IAAAE,eAAA,GAAAN,KAAA,CAChBO,SAAS;IAATA,SAAS,GAAAD,eAAA,cAAG,KAAK,GAAAA,eAAA;IACjBE,YAAW,GAAAR,KAAA,CAAXQ,WAAW;IACR3B,KAAK,GAAAC,wBAAA,CAAAkB,KAAA,EAAAS,UAAA;EAIV,IAAAC,mBAAA,GAMI7C,kBAAkB,CAAC,CAAC;IALtBtB,WAAW,GAAAmE,mBAAA,CAAXnE,WAAW;IACXE,iBAAiB,GAAAiE,mBAAA,CAAjBjE,iBAAiB;IACjBN,cAAc,GAAAuE,mBAAA,CAAdvE,cAAc;IACdR,QAAQ,GAAA+E,mBAAA,CAAR/E,QAAQ;IACRgB,UAAU,GAAA+D,mBAAA,CAAV/D,UAAU;EAGZ,IAAMgE,OAAO;EACX;EACCtC,GAAG,IAAwCvF,KAAK,CAAC0D,MAAM,CAAiB,CAAC;EAE5E,IAAMoE,aAAa,GAAGvG,KAAK,KAAK8B,cAAc,CAAC9B,KAAK;EAEpDvB,KAAK,CAACuE,SAAS,CACb,YAAY;IACV;IACA;IACA;;IAEA,IAAI1B,QAAQ,EAAE;MACZ;MACA;IACF;IAEA,IAAIgF,OAAO,CAAC3D,OAAO,KAAKqD,QAAQ,IAAIE,SAAS,CAAC,EAAE;MAC9ChE,WAAW,CAACS,OAAO,GAAG2D,OAAO,CAAC3D,OAAO;MACrCb,cAAc,CAAC0E,GAAG,CAACxG,KAAK,CAAC;IAC3B;EACF,CAAC,EACD,oBAAqB,EAAE,CAAC,mBAC1B,CAAC;;EAEDvB,KAAK,CAACuE,SAAS,CACb,YAAY;IACV;IACA,IAAIsD,OAAO,CAAC3D,OAAO,IAAI4D,aAAa,EAAE;MACpCrE,WAAW,CAACS,OAAO,GAAG2D,OAAO,CAAC3D,OAAO;MACrC5C,cAAc,CAACC,KAAK,EAAEsG,OAAO,CAAC3D,OAAO,CAAC;IACxC;EACF,CAAC,EACD,CAACT,WAAW,EAAElC,KAAK,EAAEuG,aAAa,EAAED,OAAO,CAC7C,CAAC;EAED,oBACE7H,KAAA,CAAAuG,aAAA,CAAClG,UAAU,EAAAsG,QAAA,KACLZ,KAAK;IACTsB,OAAO,EAAE,SAATA,OAAOA,CAAGf,KAAuC,EAAK;MACpDjD,cAAc,CAAC0E,GAAG,CAACxG,KAAK,CAAC;MAEzBsC,UAAU,CAAC;QAAEyC,KAAK,EAAEA,KAAK,CAAC1B,WAAW;QAAEoC,IAAI,EAAJA,IAAI;QAAEgB,KAAK,EAAE;MAAM,CAAC,CAAC;MAE5DX,QAAO,CAACf,KAAK,CAAC;IAChB,CAAE;IACFoB,WAAW,EAAE,SAAbA,WAAWA,CAAGpB,KAAuC,EAAK;MACxD,IAAIoB,YAAW,EAAE;QACfA,YAAW,CAACpB,KAAK,CAAC;MACpB;MACA,IAAIjD,cAAc,CAAC9B,KAAK,KAAKA,KAAK,EAAE;QAClCoC,iBAAiB,CAACO,OAAO,GAAG,KAAK;QACjCb,cAAc,CAAC0E,GAAG,CAACxG,KAAK,CAAC;MAC3B;IACF,CAAE;IACFgE,GAAG,EAAEsC,OAAQ;IACbjB,IAAI,EAAC,UAAU;IACfqB,aAAa,EAAEH,aAAa,IAAInE,iBAAiB,CAACO,OAAQ;IAC1DgE,YAAY,EAAEJ,aAAc;IAC5BK,SAAS,EAAEZ;EAAS,IAEnB/B,QACS,CAAC;AAEjB,CAAC,CAAC;AAEF,OAAO,IAAM4C,OAAO,gBAAGpI,KAAK,CAACoF,UAAU,CACrC,SAASgD,OAAOA,CAAAC,KAAA,EAA6C9C,GAAG,EAAE;EAAA,IAA/CC,QAAQ,GAAA6C,KAAA,CAAR7C,QAAQ;IAAE8C,SAAS,GAAAD,KAAA,CAATC,SAAS;IAAAC,gBAAA,GAAAF,KAAA,CAAEjF,UAAU;IAAVA,UAAU,GAAAmF,gBAAA,cAAG,IAAI,GAAAA,gBAAA;EACvD,IAAAC,oBAAA,GAKIzD,kBAAkB,CAAC,CAAC;IAJtB1B,cAAc,GAAAmF,oBAAA,CAAdnF,cAAc;IACdZ,YAAY,GAAA+F,oBAAA,CAAZ/F,YAAY;IACZK,cAAc,GAAA0F,oBAAA,CAAd1F,cAAc;IACF2F,cAAc,GAAAD,oBAAA,CAA1BpF,UAAU;EAGZ,IAAMsF,UAAU,GACbnD,GAAG,iBAAwCvF,KAAK,CAAC4D,SAAS,CAAC,CAAC;EAE/D,IAAMJ,IAAI,GAAGxD,KAAK,CAAC2I,QAAQ,CAACC,OAAO,CAACpD,QAAQ,CAAC,CAACqD,MAAM,CAACpG,YAAY,CAAC,CAACqG,MAAM;EAEzE9I,KAAK,CAACuE,SAAS,CACb,YAAY;IACVlB,cAAc,CAAC0F,OAAO,CAACvF,IAAI,CAAC;EAC9B,CAAC,EACD,CAACH,cAAc,EAAEG,IAAI,CACvB,CAAC;EAED5C,gBAAgB,CAAC;IACf0F,KAAK,EAAE,QAAQ;IACf0C,OAAO,EAAElH,yBAAyB,CAACgB,cAAc,CAAC;IAClDmG,KAAK,EAAEP;EACT,CAAC,CAAC;EAEF,IAAInH,KAAK,GAAG,CAAC;EAEb,oBACEvB,KAAA,CAAAuG,aAAA,CAAChG,aAAa;IACZ+H,SAAS,EAAEA,SAAU;IACrB/C,GAAG,EAAEmD,UAAW;IAChBQ,WAAW,EAAET,cAAc,IAAIrF;EAAW,GAEzCpD,KAAK,CAAC2I,QAAQ,CAACQ,GAAG,CAAC3D,QAAQ,EAAE,UAAC4D,KAAK,EAAK;IACvC,IAAI,cAAApJ,KAAK,CAACqJ,cAAc,CAACD,KAAK,CAAC,IAAI3G,YAAY,CAAC2G,KAAK,CAAC,EAAE;MACtD,IAAME,eAAe,GAAG/H,KAAK;MAE7BA,KAAK,GAAGA,KAAK,GAAG,CAAC;MAEjB,oBAAOvB,KAAK,CAACuJ,YAAY,CAACH,KAAK,EAAE;QAC/B7H,KAAK,EAAE+H;MACT,CAAC,CAAC;IACJ;IAEA,OAAOF,KAAK;EACd,CAAC,CACY,CAAC;AAEpB,CACF,CAAC;AAED,OAAO,IAAMI,MAAM,GAAG,SAATA,MAAMA,CAAAC,KAAA,EAMI;EAAA,IALrBnB,SAAS,GAAAmB,KAAA,CAATnB,SAAS;IAAAoB,eAAA,GAAAD,KAAA,CACTE,SAAS;IAATA,SAAS,GAAAD,eAAA,cAAG,WAAW,GAAAA,eAAA;IACvBE,WAAW,GAAAH,KAAA,CAAXG,WAAW;IACDC,SAAS,GAAAJ,KAAA,CAAnBK,QAAQ;IACL/D,KAAK,GAAAC,wBAAA,CAAAyD,KAAA,EAAAM,UAAA;EAER,IAAMC,IAAI,GAAGnJ,cAAc,CAAC,CAAC;EAC7B,IAAMsF,IAAI,GAAGpB,kBAAkB,CAAC,CAAC;EAEjC,IAAAkF,eAAA,GAA0BjK,KAAK,CAACkK,QAAQ,CAAC,EAAE,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAArCxD,KAAK,GAAA0D,gBAAA;IAAEE,QAAQ,GAAAF,gBAAA;EAEtB,IAAML,QAAoC,GAAG9J,KAAK,CAAC8D,WAAW,CAC5D,UAAU2C,KAAa,EAAEH,KAAU,EAAE;IAAA,IAAAgE,cAAA;IACnCD,QAAQ,CAAC/D,KAAK,CAACiE,MAAM,CAAC9D,KAAK,CAAC;IAC5B,CAAA6D,cAAA,GAAAnE,IAAI,CAACnD,QAAQ,cAAAsH,cAAA,uBAAbA,cAAA,CAAAE,IAAA,CAAArE,IAAI,EAAYG,KAAK,CAAC;IACtBH,IAAI,CAAC9C,cAAc,CAAC0E,GAAG,CAAC,CAAC,CAAC;IAC1B8B,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGvD,KAAK,CAAC;EACpB,CAAC,EACD,CAACuD,SAAS,CACZ,CAAC;EAED,oBACE7J,KAAA,CAAAuG,aAAA,CAAC/F,YAAY;IAAC8H,SAAS,EAAEA;EAAU,gBACjCtI,KAAA,CAAAuG,aAAA,CAAC5F,SAAS,EAAAgG,QAAA,KACJZ,KAAK;IACT0E,SAAS,EAAE,IAAK;IAChBb,WAAW,EAAEA,WAAW,IAAII,IAAI,CAACU,CAAC,CAAC,QAAQ,EAAE;MAAEzB,KAAK,EAAEU;IAAU,CAAC,CAAE;IACnEG,QAAQ,EAAEA,QAAS;IACnBrD,KAAK,EAAEA;EAAM,EACd,CACW,CAAC;AAEnB,CAAC;AAED,OAAO,IAAMkE,MAAM,gBAAG3K,KAAK,CAACoF,UAAU,CAGpC,SAASuF,MAAMA,CAAAC,KAAA,EAAerF,GAAG,EAAE;EAAA,IAAdQ,KAAK,GAAAY,QAAA,MAAAkE,yBAAA,CAAAD,KAAA,GAAAA,KAAA;EAC1B,oBAAO5K,KAAA,CAAAuG,aAAA,CAACnG,YAAY,EAAAuG,QAAA;IAACpB,GAAG,EAAEA;EAAI,GAAKQ,KAAK,CAAG,CAAC;AAC9C,CAAC,CAAC;AAEF,OAAO,IAAM+E,MAAM,gBAAG9K,KAAK,CAACoF,UAAU,CAGpC,SAAS0F,MAAMA,CAAAC,KAAA,EAAkCxF,GAAG,EAAE;EAAA,IAAAyF,aAAA,GAAAD,KAAA,CAApCE,OAAO;IAAPA,OAAO,GAAAD,aAAA,cAAG,OAAO,GAAAA,aAAA;IAAKjF,KAAK,GAAAC,wBAAA,CAAA+E,KAAA,EAAAG,UAAA;EAC7C,oBAAOlL,KAAA,CAAAuG,aAAA,CAACtG,YAAY,EAAA0G,QAAA;IAACpB,GAAG,EAAEA,GAAI;IAAC0F,OAAO,EAAEA;EAAQ,GAAKlF,KAAK,CAAG,CAAC;AAChE,CAAC,CAAC;AAEFZ,KAAK,CAACgG,WAAW,GAAG,MAAM;AAE1BL,MAAM,CAACK,WAAW,GAAG,aAAa;AAElCrE,KAAK,CAACqE,WAAW,GAAG,YAAY;AAEhCR,MAAM,CAACQ,WAAW,GAAG,aAAa;AAElC9J,IAAI,CAAC8J,WAAW,GAAG,WAAW;AAE9B/C,OAAO,CAAC+C,WAAW,GAAG,cAAc;AAEpC3B,MAAM,CAAC2B,WAAW,GAAG,aAAa;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAM9F,IAAI,GAAGtE,gBAAgB,CAClC;EACE+J,MAAM,EAANA,MAAM;EACNhE,KAAK,EAALA,KAAK;EACL6D,MAAM,EAANA,MAAM;EACNtJ,IAAI,EAAJA,IAAI;EACJ+G,OAAO,EAAPA,OAAO;EACPoB,MAAM,EAANA;AACF,CAAC,EACDrE,KACF,CAAC"}
@@ -164,6 +164,7 @@ export interface MenuHook {
164
164
  * @since 10.19.0
165
165
  */
166
166
  isSelectable: ElementTypeChecker;
167
+ keyboardNavigated: React.MutableRefObject<boolean>;
167
168
  /**
168
169
  * @since 10.19.0
169
170
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.js","names":[],"sources":["../../src/Menu/Menu.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { BoxProps } from '../Box/Box.types'\nimport type { SearchHook } from '../Search/Search.types'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { ListNavigationApi } from '../_hooks/ListNavigation'\nimport type { ChangeEvent } from '../_hooks/TextEntry'\nimport type { Props } from '../_utils/types'\n\nexport type ElementTypeChecker = (\n element: any,\n index?: number,\n list?: any[]\n) => boolean\n\nexport interface MenuSelection {\n /**\n * @since 10.19.0\n */\n event: Event\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n}\n\nexport interface MenuNavigationProps extends Props {\n /**\n * @since 10.19.0\n */\n index?: number\n /**\n * @since 10.19.0\n */\n ref?: React.Ref<any>\n}\n\nexport interface MenuItemProps extends MenuNavigationProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n /**\n * @since 10.19.0\n */\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => any\n /**\n * Is the item selected\n * @default false\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n}\n\nexport interface MenuGroupProps {\n /**\n * @since 10.19.0\n */\n className?: string\n\n /**\n * Can the group item be clicked\n * @since 10.19.0\n */\n clickable?: boolean\n\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n}\n\nexport interface MenuOptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n padding?: string\n\n /**\n * @default true\n */\n scrollable?: boolean\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\n * The i18n key to use for the menu search's configurable strings. Defaults to\n * using the core library's default strings.\n * @since 10.19.0\n */\n i18nScope?: string\n /**\n * @since 10.21.0\n */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport interface MenuHeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface MenuFooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuHookConfig {\n /**\n * @since 10.19.0\n */\n isSelectable?: MenuHook['isSelectable']\n /**\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuHook['onScrollBottom']\n /**\n * @since 10.19.0\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: MenuHook['selectItem']\n /**\n * @since 10.19.0\n */\n scrollable?: MenuHook['scrollable']\n /**\n * @since 10.19.0\n */\n usingSearchHook?: SearchHook\n}\n\nexport interface MenuHook {\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void\n }\n /**\n * @since 10.19.0\n */\n highlighted: React.MutableRefObject<HTMLDivElement | null>\n /**\n * @since 10.19.0\n */\n isSelectable: ElementTypeChecker\n /**\n * @since 10.19.0\n */\n listNavigation: ListNavigationApi\n /**\n * @since 10.19.0\n */\n multiple: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @default true\n */\n scrollable: boolean\n /**\n * @since 10.19.0\n */\n selectItem: (selection: MenuSelection) => void\n}\n\n// TODO unify with MenuHookConfig\nexport interface MenuProps extends Props, Omit<MenuOptionsProps, 'padding'> {\n /**\n * @deprecated\n *\n * The `isSelectable` prop has been deprecated and will be removed in a future version.\n * Menu item selection is now handled internally and there is no need to configure this\n * anymore.\n *\n * @deprecatedSince 10.20.0\n * @since 10.19.0\n */\n isSelectable?: ElementTypeChecker\n\n /**\n * Ref object which will get the key handler listeners\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n\n /**\n * Callback for selecting an item from the menu. `item` will be the `item` prop supplied to the\n * `Item` component. `group` will be `true` if the clicked item was a group label.\n * @since 10.19.0\n */\n onSelect?: (selection: MenuSelection) => any\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported. Please migrate to the other props like `onSelect` and `onSearch` on the `Menu` component. In v11, the **internal only** `useMenu` removed its search state. You should not be using `useMenu` nor this `usingHook` prop.\n * @since 10.19.0\n */\n usingHook?: MenuHook\n\n /**\n * Unsafe, do not use\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported\n * @since 10.19.0\n */\n UNSAFE_closesOnSelect?: boolean\n}\n"],"mappings":""}
1
+ {"version":3,"file":"Menu.types.js","names":[],"sources":["../../src/Menu/Menu.types.ts"],"sourcesContent":["import type React from 'react'\nimport type { BoxProps } from '../Box/Box.types'\nimport type { SearchHook } from '../Search/Search.types'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { ListNavigationApi } from '../_hooks/ListNavigation'\nimport type { ChangeEvent } from '../_hooks/TextEntry'\nimport type { Props } from '../_utils/types'\n\nexport type ElementTypeChecker = (\n element: any,\n index?: number,\n list?: any[]\n) => boolean\n\nexport interface MenuSelection {\n /**\n * @since 10.19.0\n */\n event: Event\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n}\n\nexport interface MenuNavigationProps extends Props {\n /**\n * @since 10.19.0\n */\n index?: number\n /**\n * @since 10.19.0\n */\n ref?: React.Ref<any>\n}\n\nexport interface MenuItemProps extends MenuNavigationProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n /**\n * @since 10.19.0\n */\n onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => any\n /**\n * Is the item selected\n * @default false\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n}\n\nexport interface MenuGroupProps {\n /**\n * @since 10.19.0\n */\n className?: string\n\n /**\n * Can the group item be clicked\n * @since 10.19.0\n */\n clickable?: boolean\n\n /**\n * Value which can be passed around various callback functions.\n * Can be anything!\n * @since 10.19.0\n */\n item?: any\n}\n\nexport interface MenuOptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n padding?: string\n\n /**\n * @default true\n */\n scrollable?: boolean\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\n * The i18n key to use for the menu search's configurable strings. Defaults to\n * using the core library's default strings.\n * @since 10.19.0\n */\n i18nScope?: string\n /**\n * @since 10.21.0\n */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void\n}\n\nexport interface MenuHeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface MenuFooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuHookConfig {\n /**\n * @since 10.19.0\n */\n isSelectable?: MenuHook['isSelectable']\n /**\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuHook['onScrollBottom']\n /**\n * @since 10.19.0\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: MenuHook['selectItem']\n /**\n * @since 10.19.0\n */\n scrollable?: MenuHook['scrollable']\n /**\n * @since 10.19.0\n */\n usingSearchHook?: SearchHook\n}\n\nexport interface MenuHook {\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLElement>) => void\n }\n /**\n * @since 10.19.0\n */\n highlighted: React.MutableRefObject<HTMLDivElement | null>\n /**\n * @since 10.19.0\n */\n isSelectable: ElementTypeChecker\n keyboardNavigated: React.MutableRefObject<boolean>\n /**\n * @since 10.19.0\n */\n listNavigation: ListNavigationApi\n /**\n * @since 10.19.0\n */\n multiple: boolean\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @default true\n */\n scrollable: boolean\n /**\n * @since 10.19.0\n */\n selectItem: (selection: MenuSelection) => void\n}\n\n// TODO unify with MenuHookConfig\nexport interface MenuProps extends Props, Omit<MenuOptionsProps, 'padding'> {\n /**\n * @deprecated\n *\n * The `isSelectable` prop has been deprecated and will be removed in a future version.\n * Menu item selection is now handled internally and there is no need to configure this\n * anymore.\n *\n * @deprecatedSince 10.20.0\n * @since 10.19.0\n */\n isSelectable?: ElementTypeChecker\n\n /**\n * Ref object which will get the key handler listeners\n * @since 10.19.0\n */\n keyHandlerRef?: React.RefObject<HTMLElement>\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: Event) => void\n\n /**\n * Callback for selecting an item from the menu. `item` will be the `item` prop supplied to the\n * `Item` component. `group` will be `true` if the clicked item was a group label.\n * @since 10.19.0\n */\n onSelect?: (selection: MenuSelection) => any\n /**\n * @since 11\n */\n onSearch?: (event: ChangeEvent) => void\n /**\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported. Please migrate to the other props like `onSelect` and `onSearch` on the `Menu` component. In v11, the **internal only** `useMenu` removed its search state. You should not be using `useMenu` nor this `usingHook` prop.\n * @since 10.19.0\n */\n usingHook?: MenuHook\n\n /**\n * Unsafe, do not use\n * @deprecatedSince 9\n * @deprecated Never offically documented/supported\n * @since 10.19.0\n */\n UNSAFE_closesOnSelect?: boolean\n}\n"],"mappings":""}
@@ -13,6 +13,7 @@ export declare const StyledItem: import("styled-components/dist/types").IStyledC
13
13
  $disabled?: boolean | undefined;
14
14
  $selected?: boolean | undefined;
15
15
  $highlighted?: boolean | undefined;
16
+ $focusVisible?: boolean | undefined;
16
17
  $isDraggable?: boolean | undefined;
17
18
  $isDragging?: boolean | undefined;
18
19
  }>> & string;
@@ -11,15 +11,15 @@ var optionMinHeight = 32;
11
11
  // Do not merge with StyledMenu, needed for max-height working in IE
12
12
  export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
13
13
  displayName: "StyledWrapper",
14
- componentId: "core-12_50_0__sc-z984sz-0"
14
+ componentId: "core-12_51_0__sc-z984sz-0"
15
15
  })(["border-radius:inherit;display:flex;max-height:inherit;min-width:inherit;outline:none;width:inherit;"]);
16
16
  export var StyledMenu = /*#__PURE__*/styled.div.withConfig({
17
17
  displayName: "StyledMenu",
18
- componentId: "core-12_50_0__sc-z984sz-1"
18
+ componentId: "core-12_51_0__sc-z984sz-1"
19
19
  })(["border-radius:inherit;display:flex;flex-direction:column;outline:0;width:100%;"]);
20
20
  export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
21
21
  displayName: "StyledOptions",
22
- componentId: "core-12_50_0__sc-z984sz-2"
22
+ componentId: "core-12_51_0__sc-z984sz-2"
23
23
  })(["flex-basis:auto;flex-grow:1;flex-shrink:1;min-height:", "px;", ";padding:", "px 0;position:relative;&:focus-visible{", " margin:-1px;}ol&{padding:", "px 0;list-style-type:none;margin:0;}"], optionMinHeight, function (_ref) {
24
24
  var _ref$$scrollable = _ref.$scrollable,
25
25
  $scrollable = _ref$$scrollable === void 0 ? true : _ref$$scrollable;
@@ -27,59 +27,62 @@ export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
27
27
  }, spacing.sm, getFocus(), spacing.sm);
28
28
  export var StyledGrip = /*#__PURE__*/styled.div.withConfig({
29
29
  displayName: "StyledGrip",
30
- componentId: "core-12_50_0__sc-z984sz-3"
30
+ componentId: "core-12_51_0__sc-z984sz-3"
31
31
  })(["padding:0 2px;height:24px;"]);
32
32
  export var StyledHeader = /*#__PURE__*/styled.div.withConfig({
33
33
  displayName: "StyledHeader",
34
- componentId: "core-12_50_0__sc-z984sz-4"
34
+ componentId: "core-12_51_0__sc-z984sz-4"
35
35
  })([""]);
36
36
  export var StyledSearch = /*#__PURE__*/styled.div.withConfig({
37
37
  displayName: "StyledSearch",
38
- componentId: "core-12_50_0__sc-z984sz-5"
38
+ componentId: "core-12_51_0__sc-z984sz-5"
39
39
  })(["padding:", "px ", "px ", "px;", " > *{pointer-events:none;}"], spacing.lg, spacing.lg, spacing.sm, StyledButton);
40
40
  export var StyledGroup = /*#__PURE__*/styled.div.withConfig({
41
41
  displayName: "StyledGroup",
42
- componentId: "core-12_50_0__sc-z984sz-6"
42
+ componentId: "core-12_51_0__sc-z984sz-6"
43
43
  })(["&:not(:first-child){margin-top:", "px;}"], spacing.md);
44
44
  export var StyledGroupLabel = /*#__PURE__*/styled.span.withConfig({
45
45
  displayName: "StyledGroupLabel",
46
- componentId: "core-12_50_0__sc-z984sz-7"
46
+ componentId: "core-12_51_0__sc-z984sz-7"
47
47
  })(["", " display:block;color:", ";font-weight:", ";padding:", "px ", "px;cursor:default;"], getTypographyIntent('body'), colors.gray15, typographyWeights.semibold, spacing.xs, spacing.lg);
48
48
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
49
49
  displayName: "StyledItem",
50
- componentId: "core-12_50_0__sc-z984sz-8"
51
- })(["", ";", " cursor:pointer;list-style-type:none;padding:", "px ", "px;a{color:", ";display:block;margin:-", "px -", "px;padding:", "px ", "px;text-decoration:none;&:hover{color:", ";text-decoration:none;}}&[data-highlighted='true']{background-color:", ";}", " ", "{color:inherit;cursor:pointer;}", " ", " ", ""], getTypographyIntent('body'), function (_ref2) {
50
+ componentId: "core-12_51_0__sc-z984sz-8"
51
+ })(["", ";", " cursor:pointer;list-style-type:none;padding:", "px ", "px;a{color:", ";display:block;margin:-", "px -", "px;padding:", "px ", "px;text-decoration:none;&:hover{color:", ";text-decoration:none;}}&[data-highlighted='true']{background-color:", ";}&[data-focus-visible='true']{box-shadow:inset 0 0 0 2px ", ";}", " ", " ", "{color:inherit;cursor:pointer;}", " ", " ", ""], getTypographyIntent('body'), function (_ref2) {
52
52
  var as = _ref2.as;
53
53
  return as === 'a' && css(["display:block;text-decoration:none;"]);
54
- }, spacing.xs, spacing.lg, colors.gray15, spacing.xs, spacing.lg, spacing.xs, spacing.lg, colors.gray15, colors.gray96, function (_ref3) {
55
- var $highlighted = _ref3.$highlighted;
54
+ }, spacing.xs, spacing.lg, colors.gray15, spacing.xs, spacing.lg, spacing.xs, spacing.lg, colors.gray15, colors.gray96, colors.blue40, function (_ref3) {
55
+ var $focusVisible = _ref3.$focusVisible;
56
+ return $focusVisible && css(["box-shadow:inset 0 0 0 2px ", ";"], colors.blue40);
57
+ }, function (_ref4) {
58
+ var $highlighted = _ref4.$highlighted;
56
59
  return $highlighted && "background-color: ".concat(colors.gray96, ";");
57
- }, StyledCheckboxLabel, function (_ref4) {
58
- var $disabled = _ref4.$disabled,
59
- $selected = _ref4.$selected;
60
+ }, StyledCheckboxLabel, function (_ref5) {
61
+ var $disabled = _ref5.$disabled,
62
+ $selected = _ref5.$selected;
60
63
  if ($disabled) {
61
64
  return css(["&,", "{color:", ";cursor:default;}"], StyledCheckboxLabel, colors.gray85);
62
65
  } else if ($selected) {
63
66
  return css(["color:", ";font-weight:700;a,a:hover{color:", ";text-decoration:none;}&[data-highlighted='true']{background-color:", ";}"], colors.blue50, colors.blue50, colors.gray96);
64
67
  }
65
68
  return css(["color:", ";&[data-highlighted='true']{background-color:", ";}"], colors.gray15, colors.gray96);
66
- }, function (_ref5) {
67
- var $isDraggable = _ref5.$isDraggable;
69
+ }, function (_ref6) {
70
+ var $isDraggable = _ref6.$isDraggable;
68
71
  if ($isDraggable) {
69
72
  return css(["display:flex;align-items:center;", "{cursor:grab;&:before,&:after{cursor:pointer;}}&&&{padding-left:0;}"], StyledCheckboxLabel);
70
73
  }
71
- }, function (_ref6) {
72
- var $isDragging = _ref6.$isDragging;
74
+ }, function (_ref7) {
75
+ var $isDragging = _ref7.$isDragging;
73
76
  if ($isDragging) {
74
- return css(["background-color:", ";"], colors.gray96);
77
+ return css(["background-color:", ";box-shadow:none;"], colors.gray96);
75
78
  }
76
79
  });
77
80
  export var StyledDroppable = /*#__PURE__*/styled.div.withConfig({
78
81
  displayName: "StyledDroppable",
79
- componentId: "core-12_50_0__sc-z984sz-9"
82
+ componentId: "core-12_51_0__sc-z984sz-9"
80
83
  })(["", ",", "{padding-left:28px;}"], StyledGroup, StyledItem);
81
84
  export var StyledFooter = /*#__PURE__*/styled(Box).withConfig({
82
85
  displayName: "StyledFooter",
83
- componentId: "core-12_50_0__sc-z984sz-10"
86
+ componentId: "core-12_51_0__sc-z984sz-10"
84
87
  })(["border-top:1px solid ", ";border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;"], colors.gray85);
85
88
  //# sourceMappingURL=MenuImperative.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuImperative.styles.js","names":["styled","css","Box","StyledButton","StyledCheckboxLabel","getTypographyIntent","typographyWeights","colors","getFocus","spacing","optionMinHeight","StyledWrapper","div","withConfig","displayName","componentId","StyledMenu","StyledOptions","_ref","_ref$$scrollable","$scrollable","sm","StyledGrip","StyledHeader","StyledSearch","lg","StyledGroup","md","StyledGroupLabel","span","gray15","semibold","xs","StyledItem","_ref2","as","gray96","_ref3","$highlighted","concat","_ref4","$disabled","$selected","gray85","blue50","_ref5","$isDraggable","_ref6","$isDragging","StyledDroppable","StyledFooter"],"sources":["../../src/MenuImperative/MenuImperative.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Box } from '../Box'\nimport { StyledButton } from '../Button'\nimport { StyledCheckboxLabel } from '../Checkbox/Checkbox.styles'\nimport { getTypographyIntent, typographyWeights } from '../Typography'\nimport { colors } from '../_styles/colors'\nimport { getFocus } from '../_styles/mixins'\nimport { spacing } from '../_styles/spacing'\n\nconst optionMinHeight = 32\n\n// Do not merge with StyledMenu, needed for max-height working in IE\nexport const StyledWrapper = styled.div`\n border-radius: inherit;\n display: flex;\n max-height: inherit;\n min-width: inherit;\n outline: none;\n width: inherit;\n`\n\nexport const StyledMenu = styled.div`\n border-radius: inherit;\n display: flex;\n flex-direction: column;\n outline: 0;\n width: 100%;\n`\n\nexport const StyledOptions = styled.div<{ $scrollable?: boolean }>`\n flex-basis: auto;\n flex-grow: 1;\n flex-shrink: 1;\n min-height: ${optionMinHeight}px;\n ${({ $scrollable = true }) => $scrollable && `overflow-y: auto`};\n padding: ${spacing.sm}px 0;\n position: relative;\n\n &:focus-visible {\n ${getFocus()}\n margin: -1px;\n }\n ol& {\n padding: ${spacing.sm}px 0;\n list-style-type: none;\n margin: 0;\n }\n`\n\nexport const StyledGrip = styled.div`\n padding: 0 2px;\n height: 24px;\n`\n\nexport const StyledHeader = styled.div``\n\nexport const StyledSearch = styled.div`\n padding: ${spacing.lg}px ${spacing.lg}px ${spacing.sm}px;\n\n ${StyledButton} > * {\n pointer-events: none;\n }\n`\n\nexport const StyledGroup = styled.div`\n &:not(:first-child) {\n margin-top: ${spacing.md}px;\n }\n`\n\nexport const StyledGroupLabel = styled.span`\n ${getTypographyIntent('body')}\n\n display: block;\n color: ${colors.gray15};\n font-weight: ${typographyWeights.semibold};\n padding: ${spacing.xs}px ${spacing.lg}px;\n cursor: default;\n`\n\nexport const StyledItem = styled.div<{\n $disabled?: boolean\n $selected?: boolean\n $highlighted?: boolean\n $isDraggable?: boolean\n $isDragging?: boolean\n}>`\n ${getTypographyIntent('body')};\n\n ${({ as }) =>\n as === 'a' &&\n css`\n display: block;\n text-decoration: none;\n `}\n\n cursor: pointer;\n list-style-type: none;\n padding: ${spacing.xs}px ${spacing.lg}px;\n\n a {\n // We decided to use a negative margin trick here to allow us to continue\n // to use listNavigation without having to rewrite a bunch of code in js\n color: ${colors.gray15};\n display: block;\n margin: -${spacing.xs}px -${spacing.lg}px;\n padding: ${spacing.xs}px ${spacing.lg}px;\n text-decoration: none;\n\n &:hover {\n color: ${colors.gray15};\n text-decoration: none;\n }\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n\n ${({ $highlighted }) => $highlighted && `background-color: ${colors.gray96};`}\n\n ${StyledCheckboxLabel} {\n color: inherit;\n cursor: pointer;\n }\n\n ${({ $disabled, $selected }) => {\n if ($disabled) {\n return css`\n &,\n ${StyledCheckboxLabel} {\n color: ${colors.gray85};\n cursor: default;\n }\n `\n } else if ($selected) {\n return css`\n color: ${colors.blue50};\n font-weight: 700;\n\n a,\n a:hover {\n color: ${colors.blue50};\n text-decoration: none;\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }\n\n return css`\n color: ${colors.gray15};\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }}\n\n ${({ $isDraggable }) => {\n if ($isDraggable) {\n return css`\n display: flex;\n align-items: center;\n\n ${StyledCheckboxLabel} {\n cursor: grab;\n\n // The unchecked and checked icons\n &:before,\n &:after {\n cursor: pointer;\n }\n }\n\n &&& {\n padding-left: 0;\n }\n `\n }\n }}\n\n ${({ $isDragging }) => {\n if ($isDragging) {\n return css`\n background-color: ${colors.gray96};\n `\n }\n }}\n`\n\nexport const StyledDroppable = styled.div`\n ${StyledGroup}, ${StyledItem} {\n padding-left: 28px;\n }\n`\n\nexport const StyledFooter = styled(Box)`\n border-top: 1px solid ${colors.gray85};\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n`\n"],"mappings":"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"}
1
+ {"version":3,"file":"MenuImperative.styles.js","names":["styled","css","Box","StyledButton","StyledCheckboxLabel","getTypographyIntent","typographyWeights","colors","getFocus","spacing","optionMinHeight","StyledWrapper","div","withConfig","displayName","componentId","StyledMenu","StyledOptions","_ref","_ref$$scrollable","$scrollable","sm","StyledGrip","StyledHeader","StyledSearch","lg","StyledGroup","md","StyledGroupLabel","span","gray15","semibold","xs","StyledItem","_ref2","as","gray96","blue40","_ref3","$focusVisible","_ref4","$highlighted","concat","_ref5","$disabled","$selected","gray85","blue50","_ref6","$isDraggable","_ref7","$isDragging","StyledDroppable","StyledFooter"],"sources":["../../src/MenuImperative/MenuImperative.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport { Box } from '../Box'\nimport { StyledButton } from '../Button'\nimport { StyledCheckboxLabel } from '../Checkbox/Checkbox.styles'\nimport { getTypographyIntent, typographyWeights } from '../Typography'\nimport { colors } from '../_styles/colors'\nimport { getFocus } from '../_styles/mixins'\nimport { spacing } from '../_styles/spacing'\n\nconst optionMinHeight = 32\n\n// Do not merge with StyledMenu, needed for max-height working in IE\nexport const StyledWrapper = styled.div`\n border-radius: inherit;\n display: flex;\n max-height: inherit;\n min-width: inherit;\n outline: none;\n width: inherit;\n`\n\nexport const StyledMenu = styled.div`\n border-radius: inherit;\n display: flex;\n flex-direction: column;\n outline: 0;\n width: 100%;\n`\n\nexport const StyledOptions = styled.div<{ $scrollable?: boolean }>`\n flex-basis: auto;\n flex-grow: 1;\n flex-shrink: 1;\n min-height: ${optionMinHeight}px;\n ${({ $scrollable = true }) => $scrollable && `overflow-y: auto`};\n padding: ${spacing.sm}px 0;\n position: relative;\n\n &:focus-visible {\n ${getFocus()}\n margin: -1px;\n }\n ol& {\n padding: ${spacing.sm}px 0;\n list-style-type: none;\n margin: 0;\n }\n`\n\nexport const StyledGrip = styled.div`\n padding: 0 2px;\n height: 24px;\n`\n\nexport const StyledHeader = styled.div``\n\nexport const StyledSearch = styled.div`\n padding: ${spacing.lg}px ${spacing.lg}px ${spacing.sm}px;\n\n ${StyledButton} > * {\n pointer-events: none;\n }\n`\n\nexport const StyledGroup = styled.div`\n &:not(:first-child) {\n margin-top: ${spacing.md}px;\n }\n`\n\nexport const StyledGroupLabel = styled.span`\n ${getTypographyIntent('body')}\n\n display: block;\n color: ${colors.gray15};\n font-weight: ${typographyWeights.semibold};\n padding: ${spacing.xs}px ${spacing.lg}px;\n cursor: default;\n`\n\nexport const StyledItem = styled.div<{\n $disabled?: boolean\n $selected?: boolean\n $highlighted?: boolean\n $focusVisible?: boolean\n $isDraggable?: boolean\n $isDragging?: boolean\n}>`\n ${getTypographyIntent('body')};\n\n ${({ as }) =>\n as === 'a' &&\n css`\n display: block;\n text-decoration: none;\n `}\n\n cursor: pointer;\n list-style-type: none;\n padding: ${spacing.xs}px ${spacing.lg}px;\n\n a {\n // We decided to use a negative margin trick here to allow us to continue\n // to use listNavigation without having to rewrite a bunch of code in js\n color: ${colors.gray15};\n display: block;\n margin: -${spacing.xs}px -${spacing.lg}px;\n padding: ${spacing.xs}px ${spacing.lg}px;\n text-decoration: none;\n\n &:hover {\n color: ${colors.gray15};\n text-decoration: none;\n }\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n\n &[data-focus-visible='true'] {\n box-shadow: inset 0 0 0 2px ${colors.blue40};\n }\n\n ${({ $focusVisible }) =>\n $focusVisible &&\n css`\n box-shadow: inset 0 0 0 2px ${colors.blue40};\n `}\n\n ${({ $highlighted }) => $highlighted && `background-color: ${colors.gray96};`}\n\n ${StyledCheckboxLabel} {\n color: inherit;\n cursor: pointer;\n }\n\n ${({ $disabled, $selected }) => {\n if ($disabled) {\n return css`\n &,\n ${StyledCheckboxLabel} {\n color: ${colors.gray85};\n cursor: default;\n }\n `\n } else if ($selected) {\n return css`\n color: ${colors.blue50};\n font-weight: 700;\n\n a,\n a:hover {\n color: ${colors.blue50};\n text-decoration: none;\n }\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }\n\n return css`\n color: ${colors.gray15};\n\n &[data-highlighted='true'] {\n background-color: ${colors.gray96};\n }\n `\n }}\n\n ${({ $isDraggable }) => {\n if ($isDraggable) {\n return css`\n display: flex;\n align-items: center;\n\n ${StyledCheckboxLabel} {\n cursor: grab;\n\n // The unchecked and checked icons\n &:before,\n &:after {\n cursor: pointer;\n }\n }\n\n &&& {\n padding-left: 0;\n }\n `\n }\n }}\n\n ${({ $isDragging }) => {\n if ($isDragging) {\n return css`\n background-color: ${colors.gray96};\n box-shadow: none;\n `\n }\n }}\n`\n\nexport const StyledDroppable = styled.div`\n ${StyledGroup}, ${StyledItem} {\n padding-left: 28px;\n }\n`\n\nexport const StyledFooter = styled(Box)`\n border-top: 1px solid ${colors.gray85};\n border-bottom-left-radius: inherit;\n border-bottom-right-radius: inherit;\n`\n"],"mappings":"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"}
@@ -8,6 +8,15 @@ import { scrollIntoView } from '../_utils/scrollIntoView';
8
8
  function noop() {}
9
9
  var MOUSE_ENTER = 'mouseenter';
10
10
  var MOUSE_LEAVE = 'mouseleave';
11
+ var lastDocumentInputType = 'mouse';
12
+ if (typeof document !== 'undefined') {
13
+ document.addEventListener('keydown', function () {
14
+ lastDocumentInputType = 'keyboard';
15
+ }, true);
16
+ document.addEventListener('pointerdown', function () {
17
+ lastDocumentInputType = 'mouse';
18
+ }, true);
19
+ }
11
20
  var menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper';
12
21
  export var menuItemsWrapperAttribute = _defineProperty({}, menuItemsWrapperAttributeName, 'true');
13
22
  var isItem = function isItem(element) {
@@ -38,17 +47,19 @@ function getLastItem(menu) {
38
47
  var items = getAllItems(menu);
39
48
  return items === null || items === void 0 ? void 0 : items[items.length - 1];
40
49
  }
41
- function updateHighlightedAttribute(item, highlight) {
42
- item === null || item === void 0 ? void 0 : item.setAttribute('data-highlighted', highlight ? 'true' : 'false');
43
- item === null || item === void 0 ? void 0 : item.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE));
44
- }
45
50
  export function createSensors(ref, circular, onChangeActiveDescendant) {
46
51
  var highlightedItem = null;
47
52
  var dragAndDropApi = null;
48
53
  var onSelect = noop;
54
+ var inputModality = 'mouse';
49
55
  var isDraggingStateRef = {
50
56
  current: false
51
57
  };
58
+ function updateHighlightedAttribute(item, highlight) {
59
+ item === null || item === void 0 ? void 0 : item.setAttribute('data-highlighted', highlight ? 'true' : 'false');
60
+ item === null || item === void 0 ? void 0 : item.setAttribute('data-focus-visible', highlight && inputModality === 'keyboard' ? 'true' : 'false');
61
+ item === null || item === void 0 ? void 0 : item.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE));
62
+ }
52
63
  function select(event) {
53
64
  if (ref.current && highlightedItem) {
54
65
  var _highlightedItem, _highlightedItem2, _highlightedItem3, _highlightedItem4, _highlightedItem5, _onSelect;
@@ -124,15 +135,18 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
124
135
  function highlightFirstItem() {
125
136
  var shouldScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
126
137
  var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
138
+ inputModality = lastDocumentInputType;
127
139
  highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus);
128
140
  }
129
141
  function highlightLastItem() {
130
142
  var shouldScroll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
131
143
  var shouldFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
144
+ inputModality = lastDocumentInputType;
132
145
  highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus);
133
146
  }
134
147
  function highlightPrevItem() {
135
148
  var _ref$current;
149
+ inputModality = 'keyboard';
136
150
  if (highlightedItem && (_ref$current = ref.current) !== null && _ref$current !== void 0 && _ref$current.contains(highlightedItem)) {
137
151
  var prev = getPrevHighlightableItem(highlightedItem);
138
152
  if (prev) {
@@ -144,6 +158,7 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
144
158
  }
145
159
  function highlightNextItem() {
146
160
  var _ref$current2;
161
+ inputModality = 'keyboard';
147
162
  if (highlightedItem && (_ref$current2 = ref.current) !== null && _ref$current2 !== void 0 && _ref$current2.contains(highlightedItem)) {
148
163
  var next = getNextHighlightableItem(highlightedItem);
149
164
  if (next) {
@@ -176,6 +191,7 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
176
191
  }
177
192
  },
178
193
  handleItemHover: function handleItemHover(el) {
194
+ inputModality = 'mouse';
179
195
  highlightItem(el, false);
180
196
  },
181
197
  handleItemFocus: function handleItemFocus(el) {
@@ -1 +1 @@
1
- {"version":3,"file":"sensors.js","names":["scrollIntoView","noop","MOUSE_ENTER","MOUSE_LEAVE","menuItemsWrapperAttributeName","menuItemsWrapperAttribute","_defineProperty","isItem","element","hasAttribute","isGroup","el","JSON","parse","dataset","group","isWrapper","getAttribute","getAllItems","menu","querySelectorAll","getFirstItem","_getAllItems","getPrevItem","item","items","Array","prototype","indexOf","call","getNextItem","getLastItem","length","updateHighlightedAttribute","highlight","setAttribute","dispatchEvent","MouseEvent","createSensors","ref","circular","onChangeActiveDescendant","highlightedItem","dragAndDropApi","onSelect","isDraggingStateRef","current","select","event","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","shouldFocus","_item$getAttribute","id","focus","handleItemBlur","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","isDragActive","key","preventDefault","handleItemHover","handleItemFocus","useKeyboardSensor","api","setIsDragging","isDragging","updateSelectCallback","callback","highlighted","_highlightedItem6","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem7","draggableId","_ref$current3","newItem","querySelector","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type { SensorAPI } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport type React from 'react'\nimport { scrollIntoView } from '../_utils/scrollIntoView'\nimport type { Selection } from './MenuImperative.types'\n\nfunction noop() {}\n\nconst MOUSE_ENTER = 'mouseenter'\nconst MOUSE_LEAVE = 'mouseleave'\n\nconst menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper'\nexport const menuItemsWrapperAttribute = {\n [menuItemsWrapperAttributeName]: 'true',\n}\n\nconst isItem = (element: Element | null) => element?.hasAttribute('data-value')\n\nfunction isGroup(el: HTMLElement) {\n return JSON.parse(el.dataset.group || 'false')\n}\n\nconst isWrapper = (element: Element | null) =>\n element?.getAttribute(menuItemsWrapperAttributeName) === 'true'\n\nfunction getAllItems(menu: Element | null) {\n return menu?.querySelectorAll<HTMLElement>(\n '[data-value]:not([data-group=\"true\"])'\n )\n}\n\nfunction getFirstItem(menu: Element | null) {\n return getAllItems(menu)?.[0]\n}\n\nfunction getPrevItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) - 1] : null\n}\n\nfunction getNextItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) + 1] : null\n}\n\nfunction getLastItem(menu: Element | null) {\n const items = getAllItems(menu)\n return items?.[items.length - 1]\n}\n\nfunction updateHighlightedAttribute(\n item: Element | null | undefined,\n highlight: boolean\n) {\n item?.setAttribute('data-highlighted', highlight ? 'true' : 'false')\n item?.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE))\n}\n\nexport function createSensors(\n ref: React.RefObject<HTMLDivElement>,\n circular: boolean,\n onChangeActiveDescendant: (\n id: string | undefined,\n menuRef: Element | null\n ) => void\n) {\n let highlightedItem: HTMLElement | null = null\n let dragAndDropApi: SensorAPI | null = null\n let onSelect: (selection: Selection) => any = noop\n const isDraggingStateRef = { current: false }\n\n function select(\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) {\n if (ref.current && highlightedItem) {\n const disabled = JSON.parse(highlightedItem?.dataset.disabled || 'false')\n if (disabled) return\n\n const item = JSON.parse(highlightedItem?.dataset.value || 'null')\n const selected = JSON.parse(highlightedItem?.dataset.selected || 'false')\n const restoreFocus = highlightedItem?.dataset.restorefocus\n ? JSON.parse(highlightedItem?.dataset.restorefocus)\n : undefined\n\n if (highlightedItem.tagName === 'A') {\n highlightedItem.click()\n }\n\n onSelect?.({\n event,\n item,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n }\n }\n\n function highlightItem(\n item: HTMLElement | null | undefined,\n shouldScroll: boolean = true,\n shouldFocus: boolean = false\n ) {\n // performance improvement, highlightItem is called onMouseMove for Item\n if (item === highlightedItem) {\n return\n }\n\n if (item) {\n updateHighlightedAttribute(highlightedItem, false)\n\n // TODO add localized screenreader instructions for the item\n updateHighlightedAttribute(item, true)\n\n const id = item.getAttribute('id') ?? undefined\n onChangeActiveDescendant(id, ref.current)\n\n highlightedItem = item\n\n if (shouldFocus) {\n item.focus()\n }\n\n if (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\n }\n\n function handleItemBlur(el?: HTMLDivElement) {\n updateHighlightedAttribute(el, false)\n highlightedItem = null\n }\n\n function getPrevHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const prev = getPrevItem(currentItem, ref.current)\n if (prev) {\n if (isItem(prev)) {\n return prev\n }\n } else if (circular) {\n return getLastItem(ref.current)\n }\n\n return prev\n }\n\n function getNextHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const next = getNextItem(currentItem, ref.current)\n\n if (next) {\n if (isItem(next)) {\n return next\n }\n } else if (circular) {\n return getFirstItem(ref.current)\n }\n }\n\n function highlightFirstItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightLastItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightPrevItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev, true, true)\n }\n } else {\n highlightLastItem(true, true)\n }\n }\n\n function highlightNextItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next, true, true)\n }\n } else {\n highlightFirstItem(true, true)\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n const isDragActive = isDraggingStateRef.current\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n if (!isDragActive) {\n event.preventDefault()\n highlightPrevItem()\n }\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n if (!isDragActive) {\n event.preventDefault()\n highlightNextItem()\n }\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (!isDragActive) {\n select(event)\n }\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n highlightItem(el, false)\n },\n handleItemFocus(el?: HTMLDivElement) {\n highlightItem(el, true, true)\n },\n handleItemBlur(el?: HTMLDivElement) {\n handleItemBlur(el)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\n },\n setIsDragging(isDragging: boolean) {\n isDraggingStateRef.current = isDragging\n },\n\n updateSelectCallback(callback: (selection: Selection) => any) {\n onSelect = callback\n },\n\n highlight: highlightItem,\n\n highlighted() {\n return JSON.parse(highlightedItem?.dataset.value || 'null')\n },\n\n highlightFirst: highlightFirstItem,\n highlightLast: highlightLastItem,\n rehighlightCurrent() {\n // Rehighlights an item that may have lost its styling due to the re-render of the list items\n const draggableId = highlightedItem?.getAttribute('data-rbd-draggable-id')\n if (draggableId) {\n const newItem = ref.current?.querySelector<HTMLElement>(\n `[data-rbd-draggable-id=\"${draggableId.replace(/[\"\\\\]/g, '\\\\$&')}\"]`\n )\n highlightItem(newItem)\n }\n },\n\n highlightSelected(shouldScroll: boolean = true) {\n const selectedItem = ref.current?.querySelector<HTMLElement>(\n '[data-selected=\"true\"]'\n )\n\n highlightItem(selectedItem, shouldScroll)\n },\n\n highlightSuggested(shouldScroll: boolean = true) {\n const suggestedItem = ref.current?.querySelector<HTMLElement>(\n '[data-suggested=\"true\"]'\n )\n\n highlightItem(suggestedItem, shouldScroll)\n },\n\n prev: highlightPrevItem,\n next: highlightNextItem,\n select,\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sensors.js","names":["scrollIntoView","noop","MOUSE_ENTER","MOUSE_LEAVE","lastDocumentInputType","document","addEventListener","menuItemsWrapperAttributeName","menuItemsWrapperAttribute","_defineProperty","isItem","element","hasAttribute","isGroup","el","JSON","parse","dataset","group","isWrapper","getAttribute","getAllItems","menu","querySelectorAll","getFirstItem","_getAllItems","getPrevItem","item","items","Array","prototype","indexOf","call","getNextItem","getLastItem","length","createSensors","ref","circular","onChangeActiveDescendant","highlightedItem","dragAndDropApi","onSelect","inputModality","isDraggingStateRef","current","updateHighlightedAttribute","highlight","setAttribute","dispatchEvent","MouseEvent","select","event","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","shouldFocus","_item$getAttribute","id","focus","handleItemBlur","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","isDragActive","key","preventDefault","handleItemHover","handleItemFocus","useKeyboardSensor","api","setIsDragging","isDragging","updateSelectCallback","callback","highlighted","_highlightedItem6","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem7","draggableId","_ref$current3","newItem","querySelector","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type { SensorAPI } from '@atlaskit/pragmatic-drag-and-drop-react-beautiful-dnd-migration'\nimport type React from 'react'\nimport { scrollIntoView } from '../_utils/scrollIntoView'\nimport type { Selection } from './MenuImperative.types'\n\nfunction noop() {}\n\nconst MOUSE_ENTER = 'mouseenter'\nconst MOUSE_LEAVE = 'mouseleave'\n\nlet lastDocumentInputType: InputModality = 'mouse'\n\nif (typeof document !== 'undefined') {\n document.addEventListener(\n 'keydown',\n () => {\n lastDocumentInputType = 'keyboard'\n },\n true\n )\n document.addEventListener(\n 'pointerdown',\n () => {\n lastDocumentInputType = 'mouse'\n },\n true\n )\n}\n\nconst menuItemsWrapperAttributeName = 'data-core-menuimperative-items-wrapper'\nexport const menuItemsWrapperAttribute = {\n [menuItemsWrapperAttributeName]: 'true',\n}\n\nconst isItem = (element: Element | null) => element?.hasAttribute('data-value')\n\nfunction isGroup(el: HTMLElement) {\n return JSON.parse(el.dataset.group || 'false')\n}\n\nconst isWrapper = (element: Element | null) =>\n element?.getAttribute(menuItemsWrapperAttributeName) === 'true'\n\nfunction getAllItems(menu: Element | null) {\n return menu?.querySelectorAll<HTMLElement>(\n '[data-value]:not([data-group=\"true\"])'\n )\n}\n\nfunction getFirstItem(menu: Element | null) {\n return getAllItems(menu)?.[0]\n}\n\nfunction getPrevItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) - 1] : null\n}\n\nfunction getNextItem(item: Element, menu: Element | null): HTMLElement | null {\n const items = getAllItems(menu)\n\n return items ? items[Array.prototype.indexOf.call(items, item) + 1] : null\n}\n\nfunction getLastItem(menu: Element | null) {\n const items = getAllItems(menu)\n return items?.[items.length - 1]\n}\n\ntype InputModality = 'mouse' | 'keyboard'\n\nexport function createSensors(\n ref: React.RefObject<HTMLDivElement>,\n circular: boolean,\n onChangeActiveDescendant: (\n id: string | undefined,\n menuRef: Element | null\n ) => void\n) {\n let highlightedItem: HTMLElement | null = null\n let dragAndDropApi: SensorAPI | null = null\n let onSelect: (selection: Selection) => any = noop\n let inputModality: InputModality = 'mouse'\n const isDraggingStateRef = { current: false }\n\n function updateHighlightedAttribute(\n item: Element | null | undefined,\n highlight: boolean\n ) {\n item?.setAttribute('data-highlighted', highlight ? 'true' : 'false')\n item?.setAttribute(\n 'data-focus-visible',\n highlight && inputModality === 'keyboard' ? 'true' : 'false'\n )\n item?.dispatchEvent(new MouseEvent(highlight ? MOUSE_ENTER : MOUSE_LEAVE))\n }\n\n function select(\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) {\n if (ref.current && highlightedItem) {\n const disabled = JSON.parse(highlightedItem?.dataset.disabled || 'false')\n if (disabled) return\n\n const item = JSON.parse(highlightedItem?.dataset.value || 'null')\n const selected = JSON.parse(highlightedItem?.dataset.selected || 'false')\n const restoreFocus = highlightedItem?.dataset.restorefocus\n ? JSON.parse(highlightedItem?.dataset.restorefocus)\n : undefined\n\n if (highlightedItem.tagName === 'A') {\n highlightedItem.click()\n }\n\n onSelect?.({\n event,\n item,\n group: false,\n action: selected ? 'unselected' : 'selected',\n ...(restoreFocus === undefined ? {} : { restoreFocus }),\n })\n }\n }\n\n function highlightItem(\n item: HTMLElement | null | undefined,\n shouldScroll: boolean = true,\n shouldFocus: boolean = false\n ) {\n // performance improvement, highlightItem is called onMouseMove for Item\n if (item === highlightedItem) {\n return\n }\n\n if (item) {\n updateHighlightedAttribute(highlightedItem, false)\n\n // TODO add localized screenreader instructions for the item\n updateHighlightedAttribute(item, true)\n\n const id = item.getAttribute('id') ?? undefined\n onChangeActiveDescendant(id, ref.current)\n\n highlightedItem = item\n\n if (shouldFocus) {\n item.focus()\n }\n\n if (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\n }\n\n function handleItemBlur(el?: HTMLDivElement) {\n updateHighlightedAttribute(el, false)\n highlightedItem = null\n }\n\n function getPrevHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const prev = getPrevItem(currentItem, ref.current)\n if (prev) {\n if (isItem(prev)) {\n return prev\n }\n } else if (circular) {\n return getLastItem(ref.current)\n }\n\n return prev\n }\n\n function getNextHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const next = getNextItem(currentItem, ref.current)\n\n if (next) {\n if (isItem(next)) {\n return next\n }\n } else if (circular) {\n return getFirstItem(ref.current)\n }\n }\n\n function highlightFirstItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n inputModality = lastDocumentInputType\n highlightItem(getFirstItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightLastItem(\n shouldScroll: boolean = true,\n shouldFocus: boolean = true\n ) {\n inputModality = lastDocumentInputType\n highlightItem(getLastItem(ref.current), shouldScroll, shouldFocus)\n }\n\n function highlightPrevItem() {\n inputModality = 'keyboard'\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev, true, true)\n }\n } else {\n highlightLastItem(true, true)\n }\n }\n\n function highlightNextItem() {\n inputModality = 'keyboard'\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next, true, true)\n }\n } else {\n highlightFirstItem(true, true)\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n const isDragActive = isDraggingStateRef.current\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n if (!isDragActive) {\n event.preventDefault()\n highlightPrevItem()\n }\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n if (!isDragActive) {\n event.preventDefault()\n highlightNextItem()\n }\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (!isDragActive) {\n select(event)\n }\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n inputModality = 'mouse'\n highlightItem(el, false)\n },\n handleItemFocus(el?: HTMLDivElement) {\n highlightItem(el, true, true)\n },\n handleItemBlur(el?: HTMLDivElement) {\n handleItemBlur(el)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\n },\n setIsDragging(isDragging: boolean) {\n isDraggingStateRef.current = isDragging\n },\n\n updateSelectCallback(callback: (selection: Selection) => any) {\n onSelect = callback\n },\n\n highlight: highlightItem,\n\n highlighted() {\n return JSON.parse(highlightedItem?.dataset.value || 'null')\n },\n\n highlightFirst: highlightFirstItem,\n highlightLast: highlightLastItem,\n rehighlightCurrent() {\n // Rehighlights an item that may have lost its styling due to the re-render of the list items\n const draggableId = highlightedItem?.getAttribute('data-rbd-draggable-id')\n if (draggableId) {\n const newItem = ref.current?.querySelector<HTMLElement>(\n `[data-rbd-draggable-id=\"${draggableId.replace(/[\"\\\\]/g, '\\\\$&')}\"]`\n )\n highlightItem(newItem)\n }\n },\n\n highlightSelected(shouldScroll: boolean = true) {\n const selectedItem = ref.current?.querySelector<HTMLElement>(\n '[data-selected=\"true\"]'\n )\n\n highlightItem(selectedItem, shouldScroll)\n },\n\n highlightSuggested(shouldScroll: boolean = true) {\n const suggestedItem = ref.current?.querySelector<HTMLElement>(\n '[data-suggested=\"true\"]'\n )\n\n highlightItem(suggestedItem, shouldScroll)\n },\n\n prev: highlightPrevItem,\n next: highlightNextItem,\n select,\n }\n}\n"],"mappings":"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"}