@procore/core-react 12.37.0 → 12.39.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 (327) hide show
  1. package/.jest/testShims.js +6 -0
  2. package/CHANGELOG.md +64 -0
  3. package/dist/AnchorNavigation/AnchorNavigation.styles.js +3 -3
  4. package/dist/Avatar/Avatar.styles.js +6 -6
  5. package/dist/Avatar/Avatar.styles.js.map +1 -1
  6. package/dist/AvatarStack/AvatarStack.js +65 -25
  7. package/dist/AvatarStack/AvatarStack.js.map +1 -1
  8. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  9. package/dist/AvatarStack/AvatarStack.styles.js.map +1 -1
  10. package/dist/AvatarStack/useAvatarPopover.d.ts +14 -0
  11. package/dist/AvatarStack/useAvatarPopover.js +57 -0
  12. package/dist/AvatarStack/useAvatarPopover.js.map +1 -0
  13. package/dist/AvatarStack/useAvatarPopover.types.d.ts +4 -0
  14. package/dist/AvatarStack/useAvatarPopover.types.js +2 -0
  15. package/dist/AvatarStack/useAvatarPopover.types.js.map +1 -0
  16. package/dist/Badge/Badge.styles.js +2 -2
  17. package/dist/BadgePill/BadgePill.styles.js +4 -4
  18. package/dist/Banner/Banner.d.ts +2 -1
  19. package/dist/Banner/Banner.js +53 -34
  20. package/dist/Banner/Banner.js.map +1 -1
  21. package/dist/Banner/Banner.styles.js +10 -10
  22. package/dist/Banner/Banner.types.d.ts +6 -0
  23. package/dist/Banner/Banner.types.js.map +1 -1
  24. package/dist/Banner/index.d.ts +1 -1
  25. package/dist/Banner/index.js.map +1 -1
  26. package/dist/Box/Box.styles.js +1 -1
  27. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  28. package/dist/Button/Button.styles.js +5 -5
  29. package/dist/Calendar/Calendar.styles.js +9 -9
  30. package/dist/Card/Card.styles.js +1 -1
  31. package/dist/Checkbox/Checkbox.d.ts +0 -1
  32. package/dist/Checkbox/Checkbox.js +5 -6
  33. package/dist/Checkbox/Checkbox.js.map +1 -1
  34. package/dist/Checkbox/Checkbox.styles.js +6 -6
  35. package/dist/ContactItem/ContactItem.styles.js +5 -5
  36. package/dist/Content/Content.styles.js +2 -2
  37. package/dist/DateInput/DateInput.js +12 -2
  38. package/dist/DateInput/DateInput.js.map +1 -1
  39. package/dist/DateInput/DateInput.styles.js +6 -6
  40. package/dist/DateSelect/DateSelect.types.d.ts +1 -1
  41. package/dist/DateSelect/DateSelect.types.js.map +1 -1
  42. package/dist/DetailPage/DetailPage.styles.js +7 -7
  43. package/dist/Dropdown/Dropdown.styles.js +3 -3
  44. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  45. package/dist/Dropzone/Dropzone.js +1 -1
  46. package/dist/Dropzone/Dropzone.styles.js +9 -9
  47. package/dist/EmptyState/EmptyState.styles.js +6 -6
  48. package/dist/Field/Field.styles.js +3 -3
  49. package/dist/FileList/FileList.js +3 -7
  50. package/dist/FileList/FileList.js.map +1 -1
  51. package/dist/FileList/FileList.styles.d.ts +0 -1
  52. package/dist/FileList/FileList.styles.js +3 -7
  53. package/dist/FileList/FileList.styles.js.map +1 -1
  54. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  55. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.js +3 -1
  56. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.js.map +1 -1
  57. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  58. package/dist/FileSelect/FileSelect.styles.js +2 -2
  59. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  60. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  61. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  62. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  63. package/dist/FileSelect/SourceItem/SourceItem.js +10 -5
  64. package/dist/FileSelect/SourceItem/SourceItem.js.map +1 -1
  65. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  66. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  67. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  68. package/dist/FileToken/FileToken.styles.js +4 -4
  69. package/dist/FilterToken/FilterToken.styles.js +5 -5
  70. package/dist/FlexList/FlexList.styles.js +1 -1
  71. package/dist/Form/Form.js +74 -58
  72. package/dist/Form/Form.js.map +1 -1
  73. package/dist/Form/Form.styles.d.ts +0 -14
  74. package/dist/Form/Form.styles.js +14 -24
  75. package/dist/Form/Form.styles.js.map +1 -1
  76. package/dist/Form/Form.types.d.ts +22 -2
  77. package/dist/Form/Form.types.js.map +1 -1
  78. package/dist/Form/FormFieldTooltip.js +4 -11
  79. package/dist/Form/FormFieldTooltip.js.map +1 -1
  80. package/dist/Form/StyledFormikForm.styles.js +2 -2
  81. package/dist/Form/stories/util.js +1 -12
  82. package/dist/Form/stories/util.js.map +1 -1
  83. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  84. package/dist/Grid/Grid.styles.js +2 -2
  85. package/dist/GroupSelect/GroupSelect.js +5 -4
  86. package/dist/GroupSelect/GroupSelect.js.map +1 -1
  87. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  88. package/dist/GroupSelect/GroupSelect.types.d.ts +5 -5
  89. package/dist/GroupSelect/GroupSelect.types.js.map +1 -1
  90. package/dist/Input/Input.styles.js +1 -1
  91. package/dist/Link/Link.styles.js +1 -1
  92. package/dist/ListPage/ListPage.styles.js +8 -8
  93. package/dist/Loader/Loader.styles.js +2 -2
  94. package/dist/Menu/Menu.js +1 -5
  95. package/dist/Menu/Menu.js.map +1 -1
  96. package/dist/MenuImperative/MenuImperative.js +7 -10
  97. package/dist/MenuImperative/MenuImperative.js.map +1 -1
  98. package/dist/MenuImperative/MenuImperative.styles.d.ts +2 -3
  99. package/dist/MenuImperative/MenuImperative.styles.js +26 -25
  100. package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
  101. package/dist/MenuImperative/MenuImperative.types.d.ts +4 -0
  102. package/dist/MenuImperative/MenuImperative.types.js.map +1 -1
  103. package/dist/MenuImperative/sensors.js +16 -58
  104. package/dist/MenuImperative/sensors.js.map +1 -1
  105. package/dist/Modal/Modal.styles.js +13 -13
  106. package/dist/MultiSelect/MultiSelect.js +50 -28
  107. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  108. package/dist/MultiSelect/MultiSelect.styles.d.ts +1 -0
  109. package/dist/MultiSelect/MultiSelect.styles.js +12 -8
  110. package/dist/MultiSelect/MultiSelect.styles.js.map +1 -1
  111. package/dist/MultiSelect/MultiSelect.types.d.ts +31 -1
  112. package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
  113. package/dist/NextMenu/NextMenu.styles.js +3 -3
  114. package/dist/Notation/Notation.js +1 -1
  115. package/dist/NumberInput/NumberInput.styles.js +7 -7
  116. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  117. package/dist/OverlayTrigger/OverlayTrigger.js +4 -2
  118. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  119. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +8 -0
  120. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  121. package/dist/OverlayTrigger/a11yPresets.js +5 -3
  122. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  123. package/dist/PageLayout/PageLayout.js +31 -12
  124. package/dist/PageLayout/PageLayout.js.map +1 -1
  125. package/dist/PageLayout/PageLayout.styles.d.ts +1 -0
  126. package/dist/PageLayout/PageLayout.styles.js +17 -17
  127. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  128. package/dist/PageLayout/PageLayout.types.d.ts +10 -0
  129. package/dist/PageLayout/PageLayout.types.js.map +1 -1
  130. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
  131. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  132. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  133. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  134. package/dist/Pagination/Pagination.styles.js +5 -5
  135. package/dist/Panel/Panel.styles.js +11 -11
  136. package/dist/Pill/Pill.styles.js +3 -3
  137. package/dist/PillSelect/PillSelect.js +4 -3
  138. package/dist/PillSelect/PillSelect.js.map +1 -1
  139. package/dist/PillSelect/PillSelect.styles.js +4 -4
  140. package/dist/Popover/Popover.js +2 -1
  141. package/dist/Popover/Popover.js.map +1 -1
  142. package/dist/Popover/Popover.styles.js +2 -2
  143. package/dist/Portal/Portal.styles.js +1 -1
  144. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  145. package/dist/RadioButton/RadioButton.styles.js +3 -3
  146. package/dist/Required/Required.styles.js +3 -3
  147. package/dist/Search/Search.styles.js +5 -5
  148. package/dist/Section/Section.styles.js +9 -9
  149. package/dist/Section/Section.styles.js.map +1 -1
  150. package/dist/SegmentedController/SegmentedController.js +1 -2
  151. package/dist/SegmentedController/SegmentedController.js.map +1 -1
  152. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  153. package/dist/Select/Select.d.ts +3 -4
  154. package/dist/Select/Select.js +37 -15
  155. package/dist/Select/Select.js.map +1 -1
  156. package/dist/Select/Select.styles.js +9 -9
  157. package/dist/Select/Select.styles.js.map +1 -1
  158. package/dist/Select/Select.types.d.ts +20 -0
  159. package/dist/Select/Select.types.js.map +1 -1
  160. package/dist/Select/index.d.ts +1 -1
  161. package/dist/Select/index.js.map +1 -1
  162. package/dist/Semantic/Semantic.styles.js +9 -9
  163. package/dist/Slider/Slider.styles.js +5 -5
  164. package/dist/Spinner/Spinner.js +21 -6
  165. package/dist/Spinner/Spinner.js.map +1 -1
  166. package/dist/Spinner/Spinner.styles.js +7 -7
  167. package/dist/SplitViewCard/SplitViewCard.js +13 -0
  168. package/dist/SplitViewCard/SplitViewCard.js.map +1 -1
  169. package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
  170. package/dist/SuperSelect/SuperSelect.components.js +6 -15
  171. package/dist/SuperSelect/SuperSelect.components.js.map +1 -1
  172. package/dist/SuperSelect/SuperSelect.js +1 -1
  173. package/dist/SuperSelect/SuperSelect.js.map +1 -1
  174. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  175. package/dist/SuperSelect/SuperSelect.styles.js +38 -38
  176. package/dist/SuperSelect/SuperSelect.types.d.ts +0 -3
  177. package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
  178. package/dist/SuperSelect/useSuperSelect.d.ts +1 -1
  179. package/dist/SuperSelect/useSuperSelect.js +19 -52
  180. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  181. package/dist/Switch/Switch.styles.js +4 -4
  182. package/dist/Table/Table.styles.d.ts +1 -1
  183. package/dist/Table/Table.styles.js +28 -28
  184. package/dist/TableShelf/TableShelf.styles.js +5 -5
  185. package/dist/Tabs/Tabs.styles.js +15 -15
  186. package/dist/Tearsheet/Tearsheet.styles.js +17 -28
  187. package/dist/Tearsheet/Tearsheet.styles.js.map +1 -1
  188. package/dist/Tearsheet/storybook/PageLayoutDemo.js +11 -2
  189. package/dist/Tearsheet/storybook/PageLayoutDemo.js.map +1 -1
  190. package/dist/TextArea/TextArea.styles.js +1 -1
  191. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  192. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  193. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  194. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  195. package/dist/Tile/Tile.styles.js +8 -8
  196. package/dist/Title/Title.styles.js +7 -7
  197. package/dist/Toast/Toast.styles.js +3 -3
  198. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  199. package/dist/Token/Token.styles.js +3 -3
  200. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  201. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  202. package/dist/Tooltip/Tooltip.d.ts +4 -2
  203. package/dist/Tooltip/Tooltip.js +30 -5
  204. package/dist/Tooltip/Tooltip.js.map +1 -1
  205. package/dist/Tooltip/Tooltip.styles.d.ts +1 -0
  206. package/dist/Tooltip/Tooltip.styles.js +12 -4
  207. package/dist/Tooltip/Tooltip.styles.js.map +1 -1
  208. package/dist/Tooltip/Tooltip.types.d.ts +8 -0
  209. package/dist/Tooltip/Tooltip.types.js.map +1 -1
  210. package/dist/Tree/Tree.js +1 -1
  211. package/dist/Tree/Tree.styles.js +10 -10
  212. package/dist/Typeahead/Typeahead.styles.js +3 -3
  213. package/dist/Typography/Typography.styles.js +1 -1
  214. package/dist/Typography/Typography.table.story.js +2 -2
  215. package/dist/_hooks/I18n.d.ts +65 -67
  216. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.d.ts +0 -1
  217. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js +0 -1
  218. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js.map +1 -1
  219. package/dist/_locales/de-DE.json +3 -1
  220. package/dist/_locales/en-AU.json +3 -1
  221. package/dist/_locales/en-CA.json +3 -1
  222. package/dist/_locales/en-GB.json +3 -1
  223. package/dist/_locales/en.json +5 -2
  224. package/dist/_locales/es-ES.json +3 -1
  225. package/dist/_locales/es.json +3 -1
  226. package/dist/_locales/fr-CA.json +3 -1
  227. package/dist/_locales/fr-FR.json +3 -1
  228. package/dist/_locales/is-IS.json +3 -1
  229. package/dist/_locales/it-IT.json +3 -1
  230. package/dist/_locales/ja-JP.json +3 -1
  231. package/dist/_locales/pl-PL.json +3 -1
  232. package/dist/_locales/pseudo.json +5 -2
  233. package/dist/_locales/pt-BR.json +3 -1
  234. package/dist/_locales/pt-PT.json +5 -3
  235. package/dist/_locales/th-TH.json +3 -1
  236. package/dist/_locales/zh-SG.json +3 -1
  237. package/dist/_locales/zh-TW.json +3 -1
  238. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  239. package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
  240. package/dist/_styles/mixins.d.ts +13 -1
  241. package/dist/_styles/mixins.js +15 -1
  242. package/dist/_styles/mixins.js.map +1 -1
  243. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +3 -3
  244. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  245. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +24 -24
  246. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  247. package/dist/_typedoc/Banner/Banner.types.json +39 -13
  248. package/dist/_typedoc/Box/Box.types.json +68 -68
  249. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  250. package/dist/_typedoc/Button/Button.types.json +13 -13
  251. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  252. package/dist/_typedoc/Card/Card.types.json +6 -6
  253. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  254. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  255. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  256. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  257. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  258. package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
  259. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +31 -31
  260. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  261. package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
  262. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  263. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  264. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  265. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  266. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  267. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  268. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  269. package/dist/_typedoc/Form/Form.types.json +862 -762
  270. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  271. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  272. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +75 -55
  273. package/dist/_typedoc/Input/Input.types.json +2 -2
  274. package/dist/_typedoc/Link/Link.types.json +1 -1
  275. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  276. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  277. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +77 -77
  278. package/dist/_typedoc/Modal/Modal.types.json +46 -46
  279. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +52 -32
  280. package/dist/_typedoc/NextTile/NextTile.types.json +32 -32
  281. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  282. package/dist/_typedoc/NumberInput/NumberInput.types.json +48 -48
  283. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +42 -32
  284. package/dist/_typedoc/PageLayout/PageLayout.types.json +46 -26
  285. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  286. package/dist/_typedoc/Panel/Panel.types.json +30 -30
  287. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  288. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  289. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  290. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  291. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  292. package/dist/_typedoc/Required/Required.types.json +5 -5
  293. package/dist/_typedoc/Search/Search.types.json +18 -18
  294. package/dist/_typedoc/Section/Section.types.json +15 -15
  295. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  296. package/dist/_typedoc/Select/Select.types.json +141 -60
  297. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  298. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  299. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  300. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  301. package/dist/_typedoc/Table/Table.types.json +102 -102
  302. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  303. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  304. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  305. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  306. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  307. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  308. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  309. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  310. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  311. package/dist/_typedoc/Title/Title.types.json +1 -1
  312. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  313. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  314. package/dist/_typedoc/Token/Token.types.json +7 -7
  315. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  316. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  317. package/dist/_typedoc/Tooltip/Tooltip.types.json +25 -14
  318. package/dist/_typedoc/Tree/Tree.types.json +88 -88
  319. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  320. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  321. package/dist/_typedoc/_utils/types.json +3 -3
  322. package/dist/_utils/scrollIntoView.js +21 -7
  323. package/dist/_utils/scrollIntoView.js.map +1 -1
  324. package/package.json +9 -8
  325. package/dist/Checkbox/CheckboxTooltip.d.ts +0 -4
  326. package/dist/Checkbox/CheckboxTooltip.js +0 -26
  327. package/dist/Checkbox/CheckboxTooltip.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MenuImperative.types.js","names":[],"sources":["../../src/MenuImperative/MenuImperative.types.ts"],"sourcesContent":["import type * as React from 'react'\nimport type { BoxProps } from '../Box'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { Props } from '../_utils/types'\n\nexport type Ref<T> =\n | ((instance: T | null) => void)\n | React.MutableRefObject<T | null>\n | null\n\ntype Div = React.ComponentPropsWithoutRef<'div'>\n\nexport interface Selection {\n /**\n * @since 10.19.0\n */\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n /**\n * @since 10.19.0\n */\n action: 'selected' | 'unselected'\n /**\n * Indicates should focus be restored to the trigger(e.g. Button of Dropdown)\n * after activating this item. If all items return focus to the trigger once activated,\n * try just `restoreFocusOnHide` on `Dropdown` instead.\n * if it is `undefined`, it is omitted in onSelect callback.\n * @since 11.15.0\n */\n restoreFocus?: boolean\n}\n\nexport interface Reorder {\n /**\n * @since 10.19.0\n */\n draggableId: string\n /**\n * @since 10.19.0\n */\n source: {\n index: number\n droppableId: string\n }\n /**\n * @since 10.19.0\n */\n destination: {\n index: number\n droppableId: string\n }\n}\n\ntype MenuRole = 'menu' | 'listbox' | 'none'\n\nexport interface MenuProps extends Omit<Div, 'onSelect' | 'onDragEnd'> {\n /**\n * @since 10.19.0\n */\n circular?: boolean\n /**\n * Set aria-multiselectable=\"true\"\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onDragEnd?: (result: Reorder) => void\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void\n /**\n * @since 10.19.0\n */\n onSelect?: (selection: Selection) => any\n /**\n * A menu is a widget that offers a list of choices to the user, such as a set of actions or functions.\n *\n * A listbox widget presents a list of options and allows a user to select one or more of them.\n *\n * @since 11.3.0\n */\n role?: MenuRole\n /**\n * Used when navigation in the menu is controlled by search or another input,\n * called each time virtual focus (highlighted item) is changed\n * Consider use `useMenuImperativeControlNavigation` hook.\n *\n * @since 11.5.0\n */\n onChangeActiveDescendant?: (id: string | undefined) => void\n /**\n * To override default menu navigation\n * @since 11.5.0\n */\n onKeyboardNavigation?: React.KeyboardEventHandler\n}\n\nexport interface MenuRef {\n /**\n * @since 10.19.0\n */\n el: HTMLDivElement | null\n /**\n * @since 10.19.0\n */\n highlight: (item: HTMLElement, shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightFirst: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightLast: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightSelected: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightSuggested: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlighted: () => any\n /**\n * @since 10.19.0\n */\n next: (circular?: boolean) => void\n /**\n * @since 10.19.0\n */\n prev: (circular?: boolean) => void\n /**\n * @since 10.19.0\n */\n select: (\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) => void\n /**\n * Usefully for extending navigation behavior with `onKeyboardNavigation`.\n * Pay attention that `ref` is `null` on first render.\n *\n * ```\n * onKeyboardNavigation={(e) => {\n * if (e.key === 'Right' || e.key === 'ArrowRight') {\n * return navigateRight()\n * }\n *\n * ref.defaultKeyDownNavigationHandler(e)\n * }}\n * ```\n *\n * @since 11.5.0\n */\n defaultKeyDownNavigationHandler: React.KeyboardEventHandler\n}\n\nexport interface ItemProps {\n /**\n * @since 10.19.0\n */\n item: any\n /**\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * Indicates should focus be restored to the trigger(e.g. Button of Dropdown)\n * after activating this item. If all items return focus to the trigger once activated,\n * try just `restoreFocusOnHide` on `Dropdown` instead.\n * if it is `undefined`, it is omitted in onSelect callback.\n * @since 11.15.0\n */\n restoreFocus?: boolean\n}\n\nexport interface ItemWithDraggingProps extends ItemProps {\n /**\n * @since 10.19.0\n */\n droppableIn: string | string[]\n /**\n * @since 10.19.0\n */\n draggableId: string\n /**\n * @since 10.19.0\n */\n draggableIndex: number\n}\n\ninterface AnchorItemProps\n extends Omit<ItemProps, 'item'>,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'onClick'> {}\n\nexport type MenuItemProps = ItemProps | ItemWithDraggingProps | AnchorItemProps\n\nexport type MenuItemDefaultElement = 'div' | 'a'\n\nexport interface GroupProps {\n /**\n * @since 10.19.0\n */\n clickable?: boolean\n /**\n * @since 10.19.0\n */\n item?: any\n}\n\nexport interface OptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\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 * Controls the search input value. When provided, the search input becomes\n * a controlled component and the parent must manage the value state.\n * @since 12.34.0\n */\n value?: string\n}\n\nexport interface HeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface DroppableProps {\n /**\n * @since 10.19.0\n */\n id: string\n /**\n * @since 10.19.0\n */\n children: React.ReactNode\n}\n\nexport interface FooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuContext {\n /**\n * @since 11.5.0\n */\n a11yOptionsProps: {\n role?: MenuRole\n onKeyboardNavigation?: React.KeyboardEventHandler | null\n tabIndex?: number\n id?: string\n }\n /**\n * @since 10.19.0\n */\n currentlyDroppableIn: string[]\n /**\n * @since 10.19.0\n */\n onHoverItem: (el?: HTMLDivElement) => void\n /**\n * @since 10.19.0\n */\n onScrollBottom: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void\n /**\n * @since 10.19.0\n */\n onSelect: (selection: Selection) => void\n /**\n * @since 11.3.0\n */\n role: MenuRole\n}\n\nexport interface ControlNavigationProps {\n menuId?: MenuProps['id']\n}\n\nexport interface ControlNavigationReturn {\n menuNavigationTriggerProps: {\n 'aria-activedescendant'?: string\n 'aria-controls'?: string\n onKeyDown?: React.KeyboardEventHandler<Element>\n }\n menuProps: {\n onChangeActiveDescendant?: React.Dispatch<\n React.SetStateAction<string | undefined>\n >\n id: string\n }\n}\n"],"mappings":""}
1
+ {"version":3,"file":"MenuImperative.types.js","names":[],"sources":["../../src/MenuImperative/MenuImperative.types.ts"],"sourcesContent":["import type * as React from 'react'\nimport type { BoxProps } from '../Box'\nimport type {\n TypeaheadInputProps,\n TypeaheadProps,\n} from '../Typeahead/Typeahead.types'\nimport type { Props } from '../_utils/types'\n\nexport type Ref<T> =\n | ((instance: T | null) => void)\n | React.MutableRefObject<T | null>\n | null\n\ntype Div = React.ComponentPropsWithoutRef<'div'>\n\nexport interface Selection {\n /**\n * @since 10.19.0\n */\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n /**\n * @since 10.19.0\n */\n group: boolean\n /**\n * @since 10.19.0\n */\n item: any\n /**\n * @since 10.19.0\n */\n action: 'selected' | 'unselected'\n /**\n * Indicates should focus be restored to the trigger(e.g. Button of Dropdown)\n * after activating this item. If all items return focus to the trigger once activated,\n * try just `restoreFocusOnHide` on `Dropdown` instead.\n * if it is `undefined`, it is omitted in onSelect callback.\n * @since 11.15.0\n */\n restoreFocus?: boolean\n}\n\nexport interface Reorder {\n /**\n * @since 10.19.0\n */\n draggableId: string\n /**\n * @since 10.19.0\n */\n source: {\n index: number\n droppableId: string\n }\n /**\n * @since 10.19.0\n */\n destination: {\n index: number\n droppableId: string\n }\n}\n\ntype MenuRole = 'menu' | 'listbox' | 'none'\n\nexport interface MenuProps extends Omit<Div, 'onSelect' | 'onDragEnd'> {\n /**\n * @since 10.19.0\n */\n circular?: boolean\n /**\n * Set aria-multiselectable=\"true\"\n * @since 10.19.0\n */\n multiple?: boolean\n /**\n * @since 10.19.0\n */\n onDragEnd?: (result: Reorder) => void\n /**\n * @since 10.19.0\n */\n onScrollBottom?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void\n /**\n * @since 10.19.0\n */\n onSelect?: (selection: Selection) => any\n /**\n * A menu is a widget that offers a list of choices to the user, such as a set of actions or functions.\n *\n * A listbox widget presents a list of options and allows a user to select one or more of them.\n *\n * @since 11.3.0\n */\n role?: MenuRole\n /**\n * Used when navigation in the menu is controlled by search or another input,\n * called each time virtual focus (highlighted item) is changed\n * Consider use `useMenuImperativeControlNavigation` hook.\n *\n * @since 11.5.0\n */\n onChangeActiveDescendant?: (id: string | undefined) => void\n /**\n * To override default menu navigation\n * @since 11.5.0\n */\n onKeyboardNavigation?: React.KeyboardEventHandler\n}\n\nexport interface MenuRef {\n /**\n * @since 10.19.0\n */\n el: HTMLDivElement | null\n /**\n * @since 10.19.0\n */\n highlight: (item: HTMLElement, shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightFirst: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightLast: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightSelected: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlightSuggested: (shouldScroll?: boolean) => void\n /**\n * @since 10.19.0\n */\n highlighted: () => any\n /**\n * @since 10.19.0\n */\n next: (circular?: boolean) => void\n /**\n * @since 10.19.0\n */\n prev: (circular?: boolean) => void\n /**\n * @since 10.19.0\n */\n select: (\n event:\n | React.MouseEvent<HTMLElement, MouseEvent>\n | React.KeyboardEvent<HTMLElement>\n ) => void\n /**\n * Usefully for extending navigation behavior with `onKeyboardNavigation`.\n * Pay attention that `ref` is `null` on first render.\n *\n * ```\n * onKeyboardNavigation={(e) => {\n * if (e.key === 'Right' || e.key === 'ArrowRight') {\n * return navigateRight()\n * }\n *\n * ref.defaultKeyDownNavigationHandler(e)\n * }}\n * ```\n *\n * @since 11.5.0\n */\n defaultKeyDownNavigationHandler: React.KeyboardEventHandler\n}\n\nexport interface ItemProps {\n /**\n * @since 10.19.0\n */\n item: any\n /**\n * @since 10.19.0\n */\n selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * Indicates should focus be restored to the trigger(e.g. Button of Dropdown)\n * after activating this item. If all items return focus to the trigger once activated,\n * try just `restoreFocusOnHide` on `Dropdown` instead.\n * if it is `undefined`, it is omitted in onSelect callback.\n * @since 11.15.0\n */\n restoreFocus?: boolean\n}\n\nexport interface ItemWithDraggingProps extends ItemProps {\n /**\n * @since 10.19.0\n */\n droppableIn: string | string[]\n /**\n * @since 10.19.0\n */\n draggableId: string\n /**\n * @since 10.19.0\n */\n draggableIndex: number\n}\n\ninterface AnchorItemProps\n extends Omit<ItemProps, 'item'>,\n Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'onClick'> {}\n\nexport type MenuItemProps = ItemProps | ItemWithDraggingProps | AnchorItemProps\n\nexport type MenuItemDefaultElement = 'div' | 'a'\n\nexport interface GroupProps {\n /**\n * @since 10.19.0\n */\n clickable?: boolean\n\n /**\n * @since 10.19.0\n */\n item?: any\n\n /**\n * @since 12.39.0\n */\n label?: string\n}\n\nexport interface OptionsProps {\n /**\n * @since 10.19.0\n */\n children?: React.ReactNode\n /**\n * @since 10.19.0\n */\n className?: string\n}\n\nexport interface MenuSearchProps\n extends Omit<TypeaheadProps, 'onChange'>,\n TypeaheadInputProps,\n Props {\n /**\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 * Controls the search input value. When provided, the search input becomes\n * a controlled component and the parent must manage the value state.\n * @since 12.34.0\n */\n value?: string\n}\n\nexport interface HeaderProps extends Props {\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n}\n\nexport interface DroppableProps {\n /**\n * @since 10.19.0\n */\n id: string\n /**\n * @since 10.19.0\n */\n children: React.ReactNode\n}\n\nexport interface FooterProps extends Omit<BoxProps, 'as'> {}\n\nexport interface MenuContext {\n /**\n * @since 11.5.0\n */\n a11yOptionsProps: {\n role?: MenuRole\n onKeyboardNavigation?: React.KeyboardEventHandler | null\n tabIndex?: number\n id?: string\n }\n /**\n * @since 10.19.0\n */\n currentlyDroppableIn: string[]\n /**\n * @since 10.19.0\n */\n onHoverItem: (el?: HTMLDivElement) => void\n /**\n * @since 10.19.0\n */\n onScrollBottom: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void\n /**\n * @since 10.19.0\n */\n onSelect: (selection: Selection) => void\n /**\n * @since 11.3.0\n */\n role: MenuRole\n}\n\nexport interface ControlNavigationProps {\n menuId?: MenuProps['id']\n}\n\nexport interface ControlNavigationReturn {\n menuNavigationTriggerProps: {\n 'aria-activedescendant'?: string\n 'aria-controls'?: string\n onKeyDown?: React.KeyboardEventHandler<Element>\n }\n menuProps: {\n onChangeActiveDescendant?: React.Dispatch<\n React.SetStateAction<string | undefined>\n >\n id: string\n }\n}\n"],"mappings":""}
@@ -19,59 +19,24 @@ function isGroup(el) {
19
19
  var isWrapper = function isWrapper(element) {
20
20
  return (element === null || element === void 0 ? void 0 : element.getAttribute(menuItemsWrapperAttributeName)) === 'true';
21
21
  };
22
+ function getAllItems(menu) {
23
+ return menu === null || menu === void 0 ? void 0 : menu.querySelectorAll('[data-value]:not([data-group="true"])');
24
+ }
22
25
  function getFirstItem(menu) {
23
- var firstItem = menu === null || menu === void 0 ? void 0 : menu.querySelector('[data-value]:first-child');
24
- if (firstItem && isGroup(firstItem)) {
25
- return getNextItem(firstItem);
26
- }
27
- return firstItem;
26
+ var _getAllItems;
27
+ return (_getAllItems = getAllItems(menu)) === null || _getAllItems === void 0 ? void 0 : _getAllItems[0];
28
28
  }
29
- function getPrevItem(item) {
30
- var _item$parentElement2;
31
- if (item.previousElementSibling) {
32
- // LocationFilter in data-table has div-wrapper around some items
33
- if (isWrapper(item.previousElementSibling)) {
34
- return getLastItem(item.previousElementSibling);
35
- }
36
- return item.previousElementSibling;
37
- }
38
- if (isWrapper(item === null || item === void 0 ? void 0 : item.parentElement)) {
39
- var _item$parentElement;
40
- return item === null || item === void 0 ? void 0 : (_item$parentElement = item.parentElement) === null || _item$parentElement === void 0 ? void 0 : _item$parentElement.previousElementSibling;
41
- }
42
- if ((item === null || item === void 0 ? void 0 : (_item$parentElement2 = item.parentElement) === null || _item$parentElement2 === void 0 ? void 0 : _item$parentElement2.getAttribute('data-droppable')) === 'true') {
43
- var _item$parentElement3, _item$parentElement3$;
44
- var prevDroppableItems = item === null || item === void 0 ? void 0 : (_item$parentElement3 = item.parentElement) === null || _item$parentElement3 === void 0 ? void 0 : (_item$parentElement3$ = _item$parentElement3.previousElementSibling) === null || _item$parentElement3$ === void 0 ? void 0 : _item$parentElement3$.querySelectorAll('[data-group="false"]');
45
- return prevDroppableItems !== null && prevDroppableItems !== void 0 && prevDroppableItems.length ? prevDroppableItems[prevDroppableItems.length - 1] : null;
46
- }
47
- return null;
29
+ function getPrevItem(item, menu) {
30
+ var items = getAllItems(menu);
31
+ return items ? items[Array.prototype.indexOf.call(items, item) - 1] : null;
48
32
  }
49
- function getNextItem(item) {
50
- var _item$parentElement5;
51
- if (item.nextElementSibling) {
52
- // LocationFilter in data-table has div-wrapper around some items
53
- if (isWrapper(item.nextElementSibling)) {
54
- return getFirstItem(item.previousElementSibling);
55
- }
56
- return item.nextElementSibling;
57
- }
58
- if (isWrapper(item === null || item === void 0 ? void 0 : item.parentElement)) {
59
- var _item$parentElement4;
60
- return item === null || item === void 0 ? void 0 : (_item$parentElement4 = item.parentElement) === null || _item$parentElement4 === void 0 ? void 0 : _item$parentElement4.nextElementSibling;
61
- }
62
- if ((item === null || item === void 0 ? void 0 : (_item$parentElement5 = item.parentElement) === null || _item$parentElement5 === void 0 ? void 0 : _item$parentElement5.getAttribute('data-droppable')) === 'true') {
63
- var _item$parentElement6, _item$parentElement6$;
64
- return item === null || item === void 0 ? void 0 : (_item$parentElement6 = item.parentElement) === null || _item$parentElement6 === void 0 ? void 0 : (_item$parentElement6$ = _item$parentElement6.nextElementSibling) === null || _item$parentElement6$ === void 0 ? void 0 : _item$parentElement6$.querySelector('[data-group="false"]');
65
- }
66
- return null;
33
+ function getNextItem(item, menu) {
34
+ var items = getAllItems(menu);
35
+ return items ? items[Array.prototype.indexOf.call(items, item) + 1] : null;
67
36
  }
68
37
  function getLastItem(menu) {
69
- var items = menu === null || menu === void 0 ? void 0 : menu.querySelectorAll('[data-value]');
70
- var lastItem = items === null || items === void 0 ? void 0 : items[items.length - 1];
71
- if (lastItem && isGroup(lastItem)) {
72
- return getPrevItem(lastItem);
73
- }
74
- return lastItem;
38
+ var items = getAllItems(menu);
39
+ return items === null || items === void 0 ? void 0 : items[items.length - 1];
75
40
  }
76
41
  function updateHighlightedAttribute(item, highlight) {
77
42
  item === null || item === void 0 ? void 0 : item.setAttribute('data-highlighted', highlight ? 'true' : 'false');
@@ -126,14 +91,10 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
126
91
  }
127
92
  }
128
93
  function getPrevHighlightableItem(currentItem) {
129
- var prev = getPrevItem(currentItem);
94
+ var prev = getPrevItem(currentItem, ref.current);
130
95
  if (prev) {
131
96
  if (isItem(prev)) {
132
- if (isGroup(prev)) {
133
- return getPrevHighlightableItem(prev);
134
- } else {
135
- return prev;
136
- }
97
+ return prev;
137
98
  }
138
99
  } else if (circular) {
139
100
  return getLastItem(ref.current);
@@ -141,12 +102,9 @@ export function createSensors(ref, circular, onChangeActiveDescendant) {
141
102
  return prev;
142
103
  }
143
104
  function getNextHighlightableItem(currentItem) {
144
- var next = getNextItem(currentItem);
105
+ var next = getNextItem(currentItem, ref.current);
145
106
  if (next) {
146
107
  if (isItem(next)) {
147
- if (isGroup(next)) {
148
- return getNextHighlightableItem(next);
149
- }
150
108
  return next;
151
109
  }
152
110
  } else if (circular) {
@@ -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","getFirstItem","menu","firstItem","querySelector","getNextItem","getPrevItem","item","_item$parentElement2","previousElementSibling","getLastItem","parentElement","_item$parentElement","_item$parentElement3","_item$parentElement3$","prevDroppableItems","querySelectorAll","length","_item$parentElement5","nextElementSibling","_item$parentElement4","_item$parentElement6","_item$parentElement6$","items","lastItem","updateHighlightedAttribute","highlight","setAttribute","dispatchEvent","MouseEvent","createSensors","ref","circular","onChangeActiveDescendant","highlightedItem","dragAndDropApi","currentDrag","onSelect","select","event","current","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","_item$getAttribute","id","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","_currentDrag4","key","_currentDrag","preventDefault","isActive","moveUp","_currentDrag2","moveDown","_currentDrag3","ctrlKey","metaKey","_highlightedItem6","draggableId","_dragAndDropApi","preDrag","tryGetLock","snapLift","drop","cancel","handleItemHover","useKeyboardSensor","api","updateSelectCallback","callback","highlighted","_highlightedItem7","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem8","_ref$current3","newItem","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type {\n SensorAPI,\n SnapDragActions,\n} 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 getFirstItem(menu: Element | null) {\n const firstItem = menu?.querySelector<HTMLElement>('[data-value]:first-child')\n\n if (firstItem && isGroup(firstItem)) {\n return getNextItem(firstItem)\n }\n\n return firstItem\n}\n\nfunction getPrevItem(item: Element): HTMLElement | null {\n if (item.previousElementSibling) {\n // LocationFilter in data-table has div-wrapper around some items\n if (isWrapper(item.previousElementSibling)) {\n return getLastItem(item.previousElementSibling) as HTMLElement\n }\n\n return item.previousElementSibling as HTMLElement\n }\n\n if (isWrapper(item?.parentElement)) {\n return item?.parentElement?.previousElementSibling as HTMLElement\n }\n\n if (item?.parentElement?.getAttribute('data-droppable') === 'true') {\n const prevDroppableItems =\n item?.parentElement?.previousElementSibling?.querySelectorAll<HTMLElement>(\n '[data-group=\"false\"]'\n )\n return prevDroppableItems?.length\n ? prevDroppableItems[prevDroppableItems.length - 1]\n : null\n }\n\n return null\n}\n\nfunction getNextItem(item: Element): HTMLElement | null {\n if (item.nextElementSibling) {\n // LocationFilter in data-table has div-wrapper around some items\n if (isWrapper(item.nextElementSibling)) {\n return getFirstItem(item.previousElementSibling) as HTMLElement\n }\n return item.nextElementSibling as HTMLElement\n }\n\n if (isWrapper(item?.parentElement)) {\n return item?.parentElement?.nextElementSibling as HTMLElement\n }\n\n if (item?.parentElement?.getAttribute('data-droppable') === 'true') {\n return item?.parentElement?.nextElementSibling?.querySelector(\n '[data-group=\"false\"]'\n ) as HTMLElement\n }\n\n return null\n}\n\nfunction getLastItem(menu: Element | null) {\n const items = menu?.querySelectorAll<HTMLElement>('[data-value]')\n const lastItem = items?.[items.length - 1]\n\n if (lastItem && isGroup(lastItem)) {\n return getPrevItem(lastItem)\n }\n\n return lastItem\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 currentDrag: SnapDragActions | null = null\n let onSelect: (selection: Selection) => any = noop\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 ) {\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 (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\n }\n\n function getPrevHighlightableItem(\n currentItem: HTMLElement\n ): HTMLElement | null | undefined {\n const prev = getPrevItem(currentItem)\n if (prev) {\n if (isItem(prev)) {\n if (isGroup(prev)) {\n return getPrevHighlightableItem(prev)\n } else {\n return prev\n }\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)\n\n if (next) {\n if (isItem(next)) {\n if (isGroup(next)) {\n return getNextHighlightableItem(next)\n }\n return next\n }\n } else if (circular) {\n return getFirstItem(ref.current)\n }\n }\n\n function highlightFirstItem(shouldScroll: boolean = true) {\n highlightItem(getFirstItem(ref.current), shouldScroll)\n }\n\n function highlightLastItem(shouldScroll: boolean = true) {\n highlightItem(getLastItem(ref.current), shouldScroll)\n }\n\n function highlightPrevItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev)\n }\n } else {\n highlightLastItem()\n }\n }\n\n function highlightNextItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next)\n }\n } else {\n highlightFirstItem()\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n event.preventDefault()\n currentDrag?.isActive() ? currentDrag.moveUp() : highlightPrevItem()\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n event.preventDefault()\n currentDrag?.isActive() ? currentDrag.moveDown() : highlightNextItem()\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (event.ctrlKey || event.metaKey) {\n const draggableId = highlightedItem?.getAttribute(\n 'data-rbd-draggable-id'\n )\n if (draggableId) {\n const preDrag = dragAndDropApi?.tryGetLock(draggableId)\n if (preDrag) {\n currentDrag = preDrag.snapLift()\n }\n }\n } else if (currentDrag?.isActive()) {\n currentDrag.drop()\n } else {\n select(event)\n }\n } else if (event.key === 'Escape' && currentDrag?.isActive()) {\n currentDrag.cancel()\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n highlightItem(el, false)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\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","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","currentDrag","onSelect","select","event","current","_highlightedItem","_highlightedItem2","_highlightedItem3","_highlightedItem4","_highlightedItem5","_onSelect","disabled","value","selected","restoreFocus","restorefocus","undefined","tagName","click","_objectSpread","action","highlightItem","shouldScroll","arguments","_item$getAttribute","id","getPrevHighlightableItem","currentItem","prev","getNextHighlightableItem","next","highlightFirstItem","highlightLastItem","highlightPrevItem","_ref$current","contains","highlightNextItem","_ref$current2","handleKeyDown","_currentDrag4","key","_currentDrag","preventDefault","isActive","moveUp","_currentDrag2","moveDown","_currentDrag3","ctrlKey","metaKey","_highlightedItem6","draggableId","_dragAndDropApi","preDrag","tryGetLock","snapLift","drop","cancel","handleItemHover","useKeyboardSensor","api","updateSelectCallback","callback","highlighted","_highlightedItem7","highlightFirst","highlightLast","rehighlightCurrent","_highlightedItem8","_ref$current3","newItem","querySelector","concat","replace","highlightSelected","_ref$current4","selectedItem","highlightSuggested","_ref$current5","suggestedItem"],"sources":["../../src/MenuImperative/sensors.ts"],"sourcesContent":["import type {\n SensorAPI,\n SnapDragActions,\n} 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 currentDrag: SnapDragActions | null = null\n let onSelect: (selection: Selection) => any = noop\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 ) {\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 (shouldScroll) {\n scrollIntoView(-1, item)\n }\n } else {\n onChangeActiveDescendant('', ref.current)\n }\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(shouldScroll: boolean = true) {\n highlightItem(getFirstItem(ref.current), shouldScroll)\n }\n\n function highlightLastItem(shouldScroll: boolean = true) {\n highlightItem(getLastItem(ref.current), shouldScroll)\n }\n\n function highlightPrevItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const prev = getPrevHighlightableItem(highlightedItem)\n if (prev) {\n highlightItem(prev)\n }\n } else {\n highlightLastItem()\n }\n }\n\n function highlightNextItem() {\n if (highlightedItem && ref.current?.contains(highlightedItem)) {\n const next = getNextHighlightableItem(highlightedItem)\n if (next) {\n highlightItem(next)\n }\n } else {\n highlightFirstItem()\n }\n }\n\n return {\n handleKeyDown(event: React.KeyboardEvent<HTMLDivElement>) {\n if (ref.current) {\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n event.preventDefault()\n currentDrag?.isActive() ? currentDrag.moveUp() : highlightPrevItem()\n } else if (event.key === 'ArrowDown' || event.key === 'Down') {\n event.preventDefault()\n currentDrag?.isActive() ? currentDrag.moveDown() : highlightNextItem()\n } else if (event.key === 'Enter') {\n event.preventDefault()\n if (event.ctrlKey || event.metaKey) {\n const draggableId = highlightedItem?.getAttribute(\n 'data-rbd-draggable-id'\n )\n if (draggableId) {\n const preDrag = dragAndDropApi?.tryGetLock(draggableId)\n if (preDrag) {\n currentDrag = preDrag.snapLift()\n }\n }\n } else if (currentDrag?.isActive()) {\n currentDrag.drop()\n } else {\n select(event)\n }\n } else if (event.key === 'Escape' && currentDrag?.isActive()) {\n currentDrag.cancel()\n }\n }\n },\n handleItemHover(el?: HTMLDivElement) {\n highlightItem(el, false)\n },\n useKeyboardSensor(api: SensorAPI) {\n dragAndDropApi = api\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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"}
@@ -32,15 +32,15 @@ var screenWidthPixelBreakpoints = {
32
32
  };
33
33
  export var StyledModal = /*#__PURE__*/styled.div.withConfig({
34
34
  displayName: "StyledModal",
35
- componentId: "core-12_37_0__sc-1ijdug2-0"
35
+ componentId: "core-12_39_0__sc-1ijdug2-0"
36
36
  })(["display:flex;height:100vh;position:absolute;opacity:0;transition:0.3s opacity ease;width:100vw;z-index:0;pointer-events:none;&.", "{opacity:1;pointer-events:auto;}&.", "{opacity:0;pointer-events:none;}"], fadeInClassName, fadeOutClassName);
37
37
  export var StyledModalButtons = /*#__PURE__*/styled.div.withConfig({
38
38
  displayName: "StyledModalButtons",
39
- componentId: "core-12_37_0__sc-1ijdug2-1"
39
+ componentId: "core-12_39_0__sc-1ijdug2-1"
40
40
  })(["display:flex;flex:0 0 auto;margin-left:", "px;> * + *{margin-left:", "px;}"], spacing.lg, spacing.sm);
41
41
  export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
42
42
  displayName: "StyledModalContainer",
43
- componentId: "core-12_37_0__sc-1ijdug2-2"
43
+ componentId: "core-12_39_0__sc-1ijdug2-2"
44
44
  })(["display:flex;flex-direction:row;position:absolute;z-index:2;", " ", " ", ""], function (_ref) {
45
45
  var $compact = _ref.$compact;
46
46
  if (!$compact) {
@@ -64,11 +64,11 @@ export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
64
64
  });
65
65
  export var StyledModalFooter = /*#__PURE__*/styled.div.withConfig({
66
66
  displayName: "StyledModalFooter",
67
- componentId: "core-12_37_0__sc-1ijdug2-3"
67
+ componentId: "core-12_39_0__sc-1ijdug2-3"
68
68
  })(["align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;padding:", "px ", "px ", "px;"], spacing.xl, spacing.xxl, spacing.xxl);
69
69
  export var StyledModalBody = /*#__PURE__*/styled.div.withConfig({
70
70
  displayName: "StyledModalBody",
71
- componentId: "core-12_37_0__sc-1ijdug2-4"
71
+ componentId: "core-12_39_0__sc-1ijdug2-4"
72
72
  })(["", " &:focus-visible{", "}box-sizing:border-box;color:", ";display:flex;flex-direction:column;overflow:auto;", " ", " > ", "{padding-left:0;padding-right:0;&:first-child > ", "{padding-top:0;}}", ""], getTypographyIntent('body'), getFocusInset(), colors.gray15, function (_ref4) {
73
73
  var $noSideSpacing = _ref4.$noSideSpacing;
74
74
  return css(["padding:", "px ", "px;"], spacing.xl, $noSideSpacing ? 0 : spacing.xxl);
@@ -85,7 +85,7 @@ export var StyledModalBody = /*#__PURE__*/styled.div.withConfig({
85
85
  });
86
86
  export var StyledModalContent = /*#__PURE__*/styled.div.withConfig({
87
87
  displayName: "StyledModalContent",
88
- componentId: "core-12_37_0__sc-1ijdug2-5"
88
+ componentId: "core-12_39_0__sc-1ijdug2-5"
89
89
  })(["display:flex;flex-direction:column;max-height:90vh;overflow:hidden;width:100%;", ""], function (_ref7) {
90
90
  var _ref7$$compact = _ref7.$compact,
91
91
  $compact = _ref7$$compact === void 0 ? false : _ref7$$compact;
@@ -96,11 +96,11 @@ export var StyledModalContent = /*#__PURE__*/styled.div.withConfig({
96
96
  });
97
97
  export var StyledModalFooterNotation = /*#__PURE__*/styled(Typography).withConfig({
98
98
  displayName: "StyledModalFooterNotation",
99
- componentId: "core-12_37_0__sc-1ijdug2-6"
99
+ componentId: "core-12_39_0__sc-1ijdug2-6"
100
100
  })(["flex-grow:1;"]);
101
101
  export var StyledModalHeader = /*#__PURE__*/styled.div.withConfig({
102
102
  displayName: "StyledModalHeader",
103
- componentId: "core-12_37_0__sc-1ijdug2-7"
103
+ componentId: "core-12_39_0__sc-1ijdug2-7"
104
104
  })(["align-items:flex-start;color:", ";display:flex;flex:0 0 auto;position:relative;", " ", ""], colors.gray10, function (_ref8) {
105
105
  var $compact = _ref8.$compact,
106
106
  $isBodyScrolled = _ref8.$isBodyScrolled;
@@ -118,7 +118,7 @@ export var StyledModalHeader = /*#__PURE__*/styled.div.withConfig({
118
118
  });
119
119
  export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
120
120
  displayName: "StyledModalHeading",
121
- componentId: "core-12_37_0__sc-1ijdug2-8"
121
+ componentId: "core-12_39_0__sc-1ijdug2-8"
122
122
  })(["", " align-items:center;display:flex;flex:1 1 auto;min-height:36px;padding-right:", "px;", ""], function (_ref0) {
123
123
  var $compact = _ref0.$compact;
124
124
  return getTypographyIntent($compact ? 'h3' : 'h2');
@@ -134,18 +134,18 @@ export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
134
134
  });
135
135
  export var StyledModalCancel = /*#__PURE__*/styled.div.withConfig({
136
136
  displayName: "StyledModalCancel",
137
- componentId: "core-12_37_0__sc-1ijdug2-9"
137
+ componentId: "core-12_39_0__sc-1ijdug2-9"
138
138
  })(["flex:0 0 auto;"]);
139
139
  export var StyledModalScrim = /*#__PURE__*/styled.div.withConfig({
140
140
  displayName: "StyledModalScrim",
141
- componentId: "core-12_37_0__sc-1ijdug2-10"
141
+ componentId: "core-12_39_0__sc-1ijdug2-10"
142
142
  })(["background:hsla(200,8%,10%,0.6);height:100vh;left:0;position:absolute;top:0;width:100vw;z-index:1;"]);
143
143
  export var StyledModalWarningIcon = /*#__PURE__*/styled(Warning).withConfig({
144
144
  displayName: "StyledModalWarningIcon",
145
- componentId: "core-12_37_0__sc-1ijdug2-11"
145
+ componentId: "core-12_39_0__sc-1ijdug2-11"
146
146
  })(["color:", ";margin-right:", "px;"], colors.yellow40, spacing.sm);
147
147
  export var StyledModalFooterSummary = /*#__PURE__*/styled.div.withConfig({
148
148
  displayName: "StyledModalFooterSummary",
149
- componentId: "core-12_37_0__sc-1ijdug2-12"
149
+ componentId: "core-12_39_0__sc-1ijdug2-12"
150
150
  })(["", " border-top:1px solid ", ";border-bottom:1px solid ", ";padding:", "px ", "px;color:", ";font-style:italic;background-color:", ";margin:-", "px -", "px ", "px -", "px;flex:1 1 100%;"], getTypographyIntent('small'), colors.gray85, colors.gray85, spacing.md, spacing.xxl, colors.gray15, colors.gray98, spacing.xl, spacing.xxl, spacing.xl, spacing.xxl);
151
151
  //# sourceMappingURL=Modal.styles.js.map
@@ -1,6 +1,6 @@
1
1
  var _excluded = ["getId", "getLabel", "qa", "value"],
2
2
  _excluded2 = ["value"],
3
- _excluded3 = ["afterHide", "afterShow", "beforeHide", "beforeShow", "block", "disabled", "emptyMessage", "error", "footer", "getId", "getLabel", "getGroup", "loading", "onChange", "onScrollBottom", "onSearch", "options", "isOptionDisabled", "optionRenderer", "optgroups", "groupHeaderRenderer", "tokenRenderer", "placeholder", "placement", "value", "tabIndex", "aria-labelledby", "qa"];
3
+ _excluded3 = ["afterHide", "afterShow", "beforeHide", "beforeShow", "block", "disabled", "emptyMessage", "error", "footer", "getId", "getLabel", "getGroup", "loading", "onChange", "onScrollBottom", "onSearch", "options", "isOptionDisabled", "optionRenderer", "optgroups", "groupHeaderRenderer", "groupRenderer", "tokenRenderer", "placeholder", "placement", "value", "tabIndex", "aria-labelledby", "aria-describedby", "qa"];
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
6
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -22,6 +22,7 @@ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t =
22
22
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
23
23
  import { Clear } from '@procore/core-icons/dist';
24
24
  import { useId } from '@react-aria/utils';
25
+ import { VisuallyHidden } from '@react-aria/visually-hidden';
25
26
  import React from 'react';
26
27
  import { Box } from '../Box';
27
28
  import { MenuImperative, useMenuImperativeControlNavigation } from '../MenuImperative/MenuImperative';
@@ -32,7 +33,7 @@ import { Typography } from '../Typography';
32
33
  import { isEventSource } from '../_hooks/ClickOutside';
33
34
  import { useI18nContext } from '../_hooks/I18n';
34
35
  import { addSubcomponents } from '../_utils/addSubcomponents';
35
- import { StyledMultiSelectArrow, StyledMultiSelectArrowContainer, StyledMultiSelectButton, StyledMultiSelectClearIcon, StyledMultiSelectMenu, StyledMultiSelectSearch, StyledMultiSelectSearchIcon, StyledMultiSelectSearchInput, StyledMultiSelectToken, StyledMultiSelectValues } from './MultiSelect.styles';
36
+ import { StyledMultiSelectArrow, StyledMultiSelectArrowContainer, StyledMultiSelectButton, StyledMultiSelectClearIcon, StyledMultiSelectInner, StyledMultiSelectMenu, StyledMultiSelectSearch, StyledMultiSelectSearchIcon, StyledMultiSelectSearchInput, StyledMultiSelectToken, StyledMultiSelectValues } from './MultiSelect.styles';
36
37
  var targetShowKeys = ['ArrowDown', 'Down'];
37
38
  var targetHideKeys = ['Esc', 'Escape'];
38
39
  var overlayHideKeys = targetHideKeys;
@@ -80,11 +81,11 @@ function defaultOptionRenderer(item, _ref) {
80
81
  "data-qa": qa === null || qa === void 0 ? void 0 : (_qa$option = qa.option) === null || _qa$option === void 0 ? void 0 : _qa$option.call(qa, item)
81
82
  }, props), getLabel(item));
82
83
  }
83
- function defaultGroupHeaderRenderer(group) {
84
+ function defaultGroupRenderer(group) {
84
85
  return /*#__PURE__*/React.createElement(MenuImperative.Group, {
85
86
  key: "group_".concat(group.id),
86
- clickable: false
87
- }, group.label);
87
+ label: group.label
88
+ }, group.children);
88
89
  }
89
90
  function defaultTokenRenderer(_ref2) {
90
91
  var _qa$token, _qa$tokenClear;
@@ -97,10 +98,12 @@ function defaultTokenRenderer(_ref2) {
97
98
  return /*#__PURE__*/React.createElement(Token, {
98
99
  disabled: disabled,
99
100
  focused: focused,
101
+ tabIndex: -1,
100
102
  "data-qa": qa === null || qa === void 0 ? void 0 : (_qa$token = qa.token) === null || _qa$token === void 0 ? void 0 : _qa$token.call(qa, option)
101
103
  }, /*#__PURE__*/React.createElement(Token.Label, null, getLabel(option)), /*#__PURE__*/React.createElement(Token.Remove, {
102
104
  "data-close": true,
103
105
  onClick: removeToken,
106
+ tabIndex: -1,
104
107
  "data-qa": qa === null || qa === void 0 ? void 0 : (_qa$tokenClear = qa.tokenClear) === null || _qa$tokenClear === void 0 ? void 0 : _qa$tokenClear.call(qa, option)
105
108
  }));
106
109
  }
@@ -196,7 +199,7 @@ function useMultiSelect(_ref3) {
196
199
  (_menuRef$current4 = menuRef.current) === null || _menuRef$current4 === void 0 ? void 0 : _menuRef$current4.next();
197
200
  }
198
201
  if (search === '') {
199
- if (event.key === 'Backspace') {
202
+ if (event.key === 'Backspace' || event.key === 'Delete') {
200
203
  // to prevent accidentally deleting too many tokens, don't do anything
201
204
  // on repeating key events
202
205
  if (event.repeat) {
@@ -247,16 +250,16 @@ function useMultiSelect(_ref3) {
247
250
  if (orphanOptions.length) {
248
251
  console.warn("Could not find option groups for the options below. Make sure that every option has a proper \"groupId\" field or if \"getGroup\" is implemented correctly.", orphanOptions);
249
252
  }
250
- return optgroups.flatMap(function (group) {
251
- var groupHeader = _objectSpread(_objectSpread({}, group), {}, {
252
- isGroupHeader: true
253
- });
253
+ return optgroups.map(function (group) {
254
254
  var groupOptions = optionsByGroup[group.id];
255
255
  if (!groupOptions.length) {
256
- return [];
256
+ return null;
257
257
  }
258
- return [groupHeader].concat(_toConsumableArray(groupOptions));
259
- }, []);
258
+ return _objectSpread(_objectSpread({}, group), {}, {
259
+ isGroupHeader: true,
260
+ options: groupOptions
261
+ });
262
+ }, []).filter(Boolean);
260
263
  }, [options, getGroup, optgroups]);
261
264
  return {
262
265
  ids: valueIds,
@@ -287,28 +290,35 @@ export var Option = /*#__PURE__*/React.forwardRef(function Option(_ref5, ref) {
287
290
  function GroupedOptions(_ref6) {
288
291
  var multiselect = _ref6.multiselect,
289
292
  groupHeaderRenderer = _ref6.groupHeaderRenderer,
293
+ groupRenderer = _ref6.groupRenderer,
290
294
  optionRenderer = _ref6.optionRenderer,
291
295
  getId = _ref6.getId,
292
296
  getLabel = _ref6.getLabel,
293
297
  isOptionDisabled = _ref6.isOptionDisabled,
294
298
  qa = _ref6.qa;
295
- return /*#__PURE__*/React.createElement(MenuImperative.Options, null, multiselect.options.map(function (opt) {
296
- if (opt.isGroupHeader) {
297
- var groupHeader = opt;
298
- return groupHeaderRenderer(groupHeader);
299
+ var _renderOption = function renderOption(option) {
300
+ if (option.isGroupHeader) {
301
+ var groupHeader = option;
302
+ if (groupHeaderRenderer) {
303
+ return /*#__PURE__*/React.createElement(React.Fragment, null, groupHeaderRenderer(groupHeader), groupHeader.options.map(_renderOption));
304
+ }
305
+ return groupRenderer(_objectSpread(_objectSpread({}, groupHeader), {}, {
306
+ children: groupHeader.options.map(_renderOption)
307
+ }));
299
308
  }
300
- return optionRenderer(opt, {
309
+ return optionRenderer(option, {
301
310
  getId: getId,
302
311
  getLabel: getLabel,
303
312
  // @ts-ignore
304
313
  // Object literal may only specify known properties, and 'key' does not exist in type 'OptionRendererProps'.
305
- key: getId(opt),
306
- selected: multiselect.ids.has(getId(opt)),
307
- disabled: isOptionDisabled(opt),
308
- value: opt,
314
+ key: getId(option),
315
+ selected: multiselect.ids.has(getId(option)),
316
+ disabled: isOptionDisabled(option),
317
+ value: option,
309
318
  qa: qa
310
319
  });
311
- }));
320
+ };
321
+ return /*#__PURE__*/React.createElement(MenuImperative.Options, null, multiselect.options.map(_renderOption));
312
322
  }
313
323
 
314
324
  /**
@@ -361,8 +371,9 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
361
371
  _ref7$optionRenderer = _ref7.optionRenderer,
362
372
  optionRenderer = _ref7$optionRenderer === void 0 ? defaultOptionRenderer : _ref7$optionRenderer,
363
373
  optgroups = _ref7.optgroups,
364
- _ref7$groupHeaderRend = _ref7.groupHeaderRenderer,
365
- groupHeaderRenderer = _ref7$groupHeaderRend === void 0 ? defaultGroupHeaderRenderer : _ref7$groupHeaderRend,
374
+ groupHeaderRenderer = _ref7.groupHeaderRenderer,
375
+ _ref7$groupRenderer = _ref7.groupRenderer,
376
+ groupRenderer = _ref7$groupRenderer === void 0 ? defaultGroupRenderer : _ref7$groupRenderer,
366
377
  _ref7$tokenRenderer = _ref7.tokenRenderer,
367
378
  tokenRenderer = _ref7$tokenRenderer === void 0 ? defaultTokenRenderer : _ref7$tokenRenderer,
368
379
  placeholder = _ref7.placeholder,
@@ -373,6 +384,7 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
373
384
  _ref7$tabIndex = _ref7.tabIndex,
374
385
  tabIndex = _ref7$tabIndex === void 0 ? 0 : _ref7$tabIndex,
375
386
  ariaLabelledBy = _ref7['aria-labelledby'],
387
+ ariaDescribedBy = _ref7['aria-describedby'],
376
388
  _ref7$qa = _ref7.qa,
377
389
  qa = _ref7$qa === void 0 ? {} : _ref7$qa,
378
390
  props = _objectWithoutProperties(_ref7, _excluded3);
@@ -384,6 +396,7 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
384
396
  var menuId = useId();
385
397
  var tokenListId = useId();
386
398
  var tokenBaseId = useId();
399
+ var noneSelectedId = useId();
387
400
  var _React$useState5 = React.useState(false),
388
401
  _React$useState6 = _slicedToArray(_React$useState5, 2),
389
402
  isMenuOpen = _React$useState6[0],
@@ -424,6 +437,7 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
424
437
  getLabel: getLabel,
425
438
  isOptionDisabled: isOptionDisabled,
426
439
  groupHeaderRenderer: groupHeaderRenderer,
440
+ groupRenderer: groupRenderer,
427
441
  optionRenderer: optionRenderer,
428
442
  qa: qa
429
443
  }) : /*#__PURE__*/React.createElement(Box, {
@@ -478,10 +492,12 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
478
492
  $disabled: disabled,
479
493
  $loading: loading,
480
494
  $open: isVisible
481
- }, props), /*#__PURE__*/React.createElement(StyledMultiSelectValues, {
495
+ }, props), value.length === 0 && /*#__PURE__*/React.createElement(VisuallyHidden, null, /*#__PURE__*/React.createElement("span", {
496
+ id: noneSelectedId
497
+ }, I18n.t('core.multiSelect.noneSelected'))), /*#__PURE__*/React.createElement(StyledMultiSelectInner, null, /*#__PURE__*/React.createElement(StyledMultiSelectValues, {
482
498
  id: tokenListId,
483
499
  role: "list",
484
- "aria-label": I18n.t('core.multiSelect.selectedItems')
500
+ "aria-label": value.length > 0 ? I18n.t('core.multiSelect.selectedItems') : I18n.t('core.multiSelect.noneSelected')
485
501
  }, value.map(function (selection, i) {
486
502
  var tokenId = "".concat(tokenBaseId, "-").concat(i);
487
503
  var tokenLabel = getLabel(selection);
@@ -502,10 +518,12 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
502
518
  },
503
519
  qa: qa
504
520
  }));
505
- }), /*#__PURE__*/React.createElement(StyledMultiSelectSearch, null, /*#__PURE__*/React.createElement(StyledMultiSelectSearchInput, _extends({
521
+ })), /*#__PURE__*/React.createElement(StyledMultiSelectSearch, null, /*#__PURE__*/React.createElement(StyledMultiSelectSearchInput, _extends({
506
522
  "aria-activedescendant": activeTokenId,
507
523
  "aria-controls": isNavigatingTokens ? tokenListId : menuId,
524
+ "aria-describedby": [ariaDescribedBy, value.length === 0 ? noneSelectedId : undefined].filter(Boolean).join(' ') || undefined,
508
525
  "aria-expanded": isVisible,
526
+ "aria-invalid": error || undefined,
509
527
  "aria-labelledby": ariaLabelledBy,
510
528
  "data-qa": "core-multiselect-input",
511
529
  role: "combobox",
@@ -532,6 +550,10 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
532
550
  e.stopPropagation();
533
551
  disable(e);
534
552
  }
553
+ // close dropdown when navigating tokens with arrow keys
554
+ if (multiselect.search === '' && (e.key === 'ArrowLeft' || e.key === 'Left' || e.key === 'ArrowRight' || e.key === 'Right')) {
555
+ disable(e);
556
+ }
535
557
  } else {
536
558
  // if we type in an alphanumeric character, show the overlay
537
559
  if (isAlphaNumeric(e.key)) {