@procore/core-react 12.51.0 → 12.53.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 (270) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  5. package/dist/Badge/Badge.styles.js +2 -2
  6. package/dist/BadgePill/BadgePill.styles.js +4 -4
  7. package/dist/Banner/Banner.d.ts +7 -5
  8. package/dist/Banner/Banner.js +146 -71
  9. package/dist/Banner/Banner.js.map +1 -1
  10. package/dist/Banner/Banner.styles.js +10 -10
  11. package/dist/Banner/Banner.types.d.ts +16 -0
  12. package/dist/Banner/Banner.types.js.map +1 -1
  13. package/dist/Box/Box.styles.js +1 -1
  14. package/dist/Breadcrumbs/Breadcrumbs.styles.js +6 -6
  15. package/dist/Breadcrumbs/Breadcrumbs.styles.js.map +1 -1
  16. package/dist/Button/Button.styles.js +5 -5
  17. package/dist/Calendar/Calendar.styles.js +9 -9
  18. package/dist/Card/Card.styles.js +1 -1
  19. package/dist/Checkbox/Checkbox.styles.js +6 -6
  20. package/dist/ContactItem/ContactItem.styles.js +5 -5
  21. package/dist/Content/Content.styles.js +2 -2
  22. package/dist/DateInput/DateInput.styles.js +6 -6
  23. package/dist/DateSelect/DateSelect.js +8 -2
  24. package/dist/DateSelect/DateSelect.js.map +1 -1
  25. package/dist/DetailPage/DetailPage.styles.js +7 -7
  26. package/dist/Dropdown/Dropdown.styles.js +3 -3
  27. package/dist/DropdownFlyout/DropdownFlyout.styles.js +6 -7
  28. package/dist/DropdownFlyout/DropdownFlyout.styles.js.map +1 -1
  29. package/dist/DropdownFlyout/useDropdownFlyoutOverlay.js +13 -1
  30. package/dist/DropdownFlyout/useDropdownFlyoutOverlay.js.map +1 -1
  31. package/dist/Dropzone/Dropzone.js +1 -1
  32. package/dist/Dropzone/Dropzone.styles.d.ts +2 -2
  33. package/dist/Dropzone/Dropzone.styles.js +9 -9
  34. package/dist/EmptyState/EmptyState.styles.js +6 -6
  35. package/dist/Field/Field.styles.js +3 -3
  36. package/dist/FileList/FileList.styles.js +3 -3
  37. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  38. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  39. package/dist/FileSelect/FileSelect.styles.js +2 -2
  40. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  41. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  42. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  43. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  44. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  45. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  46. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  47. package/dist/FileToken/FileToken.styles.js +6 -6
  48. package/dist/FilterToken/FilterToken.styles.js +5 -5
  49. package/dist/FlexList/FlexList.styles.js +1 -1
  50. package/dist/Form/Form.styles.js +21 -19
  51. package/dist/Form/Form.styles.js.map +1 -1
  52. package/dist/Form/StyledFormikForm.styles.js +2 -2
  53. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  54. package/dist/Grid/Grid.styles.js +2 -2
  55. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  56. package/dist/Input/Input.styles.js +1 -1
  57. package/dist/Link/Link.styles.js +1 -1
  58. package/dist/ListPage/ListPage.styles.js +8 -8
  59. package/dist/Loader/Loader.styles.js +2 -2
  60. package/dist/MenuImperative/MenuImperative.js +9 -1
  61. package/dist/MenuImperative/MenuImperative.js.map +1 -1
  62. package/dist/MenuImperative/MenuImperative.styles.js +11 -11
  63. package/dist/MenuImperative/MenuImperative.types.d.ts +8 -0
  64. package/dist/MenuImperative/MenuImperative.types.js.map +1 -1
  65. package/dist/MenuImperative/sensors.d.ts +1 -0
  66. package/dist/MenuImperative/sensors.js +8 -0
  67. package/dist/MenuImperative/sensors.js.map +1 -1
  68. package/dist/Modal/Modal.styles.js +13 -13
  69. package/dist/MultiSelect/MultiSelect.js +64 -5
  70. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  71. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  72. package/dist/MultiSelect/MultiSelect.types.d.ts +9 -0
  73. package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
  74. package/dist/NextMenu/NextMenu.styles.js +3 -3
  75. package/dist/NextTile/NextTile.styles.js +5 -5
  76. package/dist/Notation/Notation.js +1 -1
  77. package/dist/NumberInput/NumberInput.styles.js +7 -7
  78. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  79. package/dist/Overlay/useOverlay.d.ts +2 -1
  80. package/dist/Overlay/useOverlay.js +4 -2
  81. package/dist/Overlay/useOverlay.js.map +1 -1
  82. package/dist/PageLayout/PageLayout.js +4 -2
  83. package/dist/PageLayout/PageLayout.js.map +1 -1
  84. package/dist/PageLayout/PageLayout.styles.d.ts +0 -1
  85. package/dist/PageLayout/PageLayout.styles.js +18 -19
  86. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  87. package/dist/PageLayout/PageLayout.types.d.ts +11 -3
  88. package/dist/PageLayout/PageLayout.types.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.d.ts +1 -0
  105. package/dist/SegmentedController/SegmentedController.styles.js +11 -9
  106. package/dist/SegmentedController/SegmentedController.styles.js.map +1 -1
  107. package/dist/Select/Select.styles.js +8 -8
  108. package/dist/Semantic/Semantic.styles.js +9 -9
  109. package/dist/Slider/Slider.styles.js +5 -5
  110. package/dist/Spinner/Spinner.styles.js +7 -7
  111. package/dist/SplitViewCard/SplitViewCard.context.js +45 -7
  112. package/dist/SplitViewCard/SplitViewCard.context.js.map +1 -1
  113. package/dist/SplitViewCard/SplitViewCard.js +9 -14
  114. package/dist/SplitViewCard/SplitViewCard.js.map +1 -1
  115. package/dist/SplitViewCard/SplitViewCard.styles.js +16 -12
  116. package/dist/SplitViewCard/SplitViewCard.styles.js.map +1 -1
  117. package/dist/SplitViewCard/SplitViewCard.types.js.map +1 -1
  118. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  119. package/dist/SuperSelect/SuperSelect.styles.js +40 -40
  120. package/dist/SuperSelect/useSuperSelect.js +1 -3
  121. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  122. package/dist/Switch/Switch.styles.js +4 -4
  123. package/dist/Table/Table.styles.js +29 -29
  124. package/dist/TableShelf/TableShelf.styles.js +5 -5
  125. package/dist/Tabs/Tabs.js +2 -1
  126. package/dist/Tabs/Tabs.js.map +1 -1
  127. package/dist/Tabs/Tabs.styles.d.ts +1 -0
  128. package/dist/Tabs/Tabs.styles.js +29 -26
  129. package/dist/Tabs/Tabs.styles.js.map +1 -1
  130. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  131. package/dist/TextArea/TextArea.styles.js +1 -1
  132. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  133. package/dist/Thumbnail/Thumbnail.js +99 -37
  134. package/dist/Thumbnail/Thumbnail.js.map +1 -1
  135. package/dist/Thumbnail/Thumbnail.styles.js +23 -23
  136. package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
  137. package/dist/Thumbnail/Thumbnail.types.d.ts +1 -0
  138. package/dist/Thumbnail/Thumbnail.types.js.map +1 -1
  139. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  140. package/dist/TieredSelect/LeafSelectionTieredSelect.js +3 -1
  141. package/dist/TieredSelect/LeafSelectionTieredSelect.js.map +1 -1
  142. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  143. package/dist/Tile/Tile.styles.js +8 -8
  144. package/dist/Title/Title.styles.js +7 -7
  145. package/dist/Toast/Toast.styles.js +10 -7
  146. package/dist/Toast/Toast.styles.js.map +1 -1
  147. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  148. package/dist/Token/Token.styles.js +5 -5
  149. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  150. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  151. package/dist/Tooltip/Tooltip.styles.js +3 -3
  152. package/dist/Tree/Tree.js +46 -21
  153. package/dist/Tree/Tree.js.map +1 -1
  154. package/dist/Tree/Tree.styles.d.ts +1 -0
  155. package/dist/Tree/Tree.styles.js +17 -14
  156. package/dist/Tree/Tree.styles.js.map +1 -1
  157. package/dist/Tree/Tree.types.d.ts +10 -0
  158. package/dist/Tree/Tree.types.js.map +1 -1
  159. package/dist/Typeahead/Typeahead.js +2 -1
  160. package/dist/Typeahead/Typeahead.js.map +1 -1
  161. package/dist/Typeahead/Typeahead.styles.d.ts +3 -1
  162. package/dist/Typeahead/Typeahead.styles.js +7 -5
  163. package/dist/Typeahead/Typeahead.styles.js.map +1 -1
  164. package/dist/Typography/Typography.styles.js +1 -1
  165. package/dist/Typography/Typography.table.story.js +2 -2
  166. package/dist/_hooks/I18n.d.ts +155 -76
  167. package/dist/_locales/de-DE.json +7 -1
  168. package/dist/_locales/en-AU.json +7 -1
  169. package/dist/_locales/en-CA.json +7 -1
  170. package/dist/_locales/en-GB.json +7 -1
  171. package/dist/_locales/en.json +7 -1
  172. package/dist/_locales/es-ES.json +7 -1
  173. package/dist/_locales/es.json +9 -3
  174. package/dist/_locales/fr-CA.json +7 -1
  175. package/dist/_locales/fr-FR.json +7 -1
  176. package/dist/_locales/is-IS.json +7 -1
  177. package/dist/_locales/it-IT.json +7 -1
  178. package/dist/_locales/ja-JP.json +7 -1
  179. package/dist/_locales/nb-NO.json +7 -1
  180. package/dist/_locales/pl-PL.json +7 -1
  181. package/dist/_locales/pseudo.json +8 -2
  182. package/dist/_locales/pt-BR.json +7 -1
  183. package/dist/_locales/pt-PT.json +9 -3
  184. package/dist/_locales/th-TH.json +7 -1
  185. package/dist/_locales/zh-SG.json +7 -1
  186. package/dist/_locales/zh-TW.json +7 -1
  187. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  188. package/dist/_storyHelpers_/components/StoryGrid.js +4 -4
  189. package/dist/_storyHelpers_/components/StoryGrid.js.map +1 -1
  190. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +4 -4
  191. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  192. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  193. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  194. package/dist/_typedoc/Banner/Banner.types.json +37 -15
  195. package/dist/_typedoc/Box/Box.types.json +68 -68
  196. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
  197. package/dist/_typedoc/Button/Button.types.json +14 -14
  198. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  199. package/dist/_typedoc/Card/Card.types.json +6 -6
  200. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  201. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  202. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  203. package/dist/_typedoc/DateSelect/DateSelect.types.json +14 -14
  204. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  205. package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
  206. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +32 -32
  207. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  208. package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
  209. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  210. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  211. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  212. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  213. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  214. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  215. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  216. package/dist/_typedoc/Form/Form.types.json +770 -770
  217. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  218. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  219. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +54 -54
  220. package/dist/_typedoc/Input/Input.types.json +2 -2
  221. package/dist/_typedoc/Link/Link.types.json +1 -1
  222. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  223. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  224. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +104 -84
  225. package/dist/_typedoc/Modal/Modal.types.json +48 -48
  226. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +33 -33
  227. package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
  228. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  229. package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
  230. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
  231. package/dist/_typedoc/PageLayout/PageLayout.types.json +58 -45
  232. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  233. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  234. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  235. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  236. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  237. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  238. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  239. package/dist/_typedoc/Required/Required.types.json +5 -5
  240. package/dist/_typedoc/Search/Search.types.json +18 -18
  241. package/dist/_typedoc/Section/Section.types.json +15 -15
  242. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  243. package/dist/_typedoc/Select/Select.types.json +67 -67
  244. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  245. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  246. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  247. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  248. package/dist/_typedoc/Table/Table.types.json +105 -105
  249. package/dist/_typedoc/Tabs/Tabs.types.json +23 -23
  250. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  251. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  252. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  253. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  254. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  255. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  256. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  257. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  258. package/dist/_typedoc/Title/Title.types.json +1 -1
  259. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  260. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  261. package/dist/_typedoc/Token/Token.types.json +7 -7
  262. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  263. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  264. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  265. package/dist/_typedoc/Tree/Tree.types.json +118 -88
  266. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  267. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  268. package/dist/_typedoc/_utils/types.json +3 -3
  269. package/dist/_typedoc/a11y-tips.json +1 -1
  270. package/package.json +1 -1
@@ -33,15 +33,15 @@ var screenWidthPixelBreakpoints = {
33
33
  };
34
34
  export var StyledModal = /*#__PURE__*/styled.div.withConfig({
35
35
  displayName: "StyledModal",
36
- componentId: "core-12_51_0__sc-1ijdug2-0"
36
+ componentId: "core-12_53_0__sc-1ijdug2-0"
37
37
  })(["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);
38
38
  export var StyledModalButtons = /*#__PURE__*/styled.div.withConfig({
39
39
  displayName: "StyledModalButtons",
40
- componentId: "core-12_51_0__sc-1ijdug2-1"
40
+ componentId: "core-12_53_0__sc-1ijdug2-1"
41
41
  })(["display:flex;flex:0 0 auto;margin-left:", "px;> * + *{margin-left:", "px;}"], spacing.lg, spacing.sm);
42
42
  export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
43
43
  displayName: "StyledModalContainer",
44
- componentId: "core-12_51_0__sc-1ijdug2-2"
44
+ componentId: "core-12_53_0__sc-1ijdug2-2"
45
45
  })(["display:flex;flex-direction:row;position:absolute;z-index:2;", " ", " ", ""], function (_ref) {
46
46
  var $compact = _ref.$compact;
47
47
  if (!$compact) {
@@ -65,11 +65,11 @@ export var StyledModalContainer = /*#__PURE__*/styled(Card).withConfig({
65
65
  });
66
66
  export var StyledModalFooter = /*#__PURE__*/styled.div.withConfig({
67
67
  displayName: "StyledModalFooter",
68
- componentId: "core-12_51_0__sc-1ijdug2-3"
68
+ componentId: "core-12_53_0__sc-1ijdug2-3"
69
69
  })(["align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;padding:", "px;"], spacing.lg);
70
70
  export var StyledModalBody = /*#__PURE__*/styled.div.withConfig({
71
71
  displayName: "StyledModalBody",
72
- componentId: "core-12_51_0__sc-1ijdug2-4"
72
+ componentId: "core-12_53_0__sc-1ijdug2-4"
73
73
  })(["", " &: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;}}> ", "{margin-bottom:", "px;}", ""], getTypographyIntent('body'), getFocusInset(), colors.gray15, function (_ref4) {
74
74
  var $noSideSpacing = _ref4.$noSideSpacing;
75
75
  return css(["padding:", "px ", "px;"], spacing.lg, $noSideSpacing ? 0 : spacing.lg);
@@ -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_51_0__sc-1ijdug2-5"
88
+ componentId: "core-12_53_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_51_0__sc-1ijdug2-6"
99
+ componentId: "core-12_53_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_51_0__sc-1ijdug2-7"
103
+ componentId: "core-12_53_0__sc-1ijdug2-7"
104
104
  })(["align-items:flex-start;color:", ";display:flex;flex:0 0 auto;position:relative;", " padding:", "px"], colors.gray10, function (_ref8) {
105
105
  var $compact = _ref8.$compact,
106
106
  $isBodyScrolled = _ref8.$isBodyScrolled;
@@ -111,7 +111,7 @@ export var StyledModalHeader = /*#__PURE__*/styled.div.withConfig({
111
111
  }, spacing.lg);
112
112
  export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
113
113
  displayName: "StyledModalHeading",
114
- componentId: "core-12_51_0__sc-1ijdug2-8"
114
+ componentId: "core-12_53_0__sc-1ijdug2-8"
115
115
  })(["", " align-items:center;display:flex;flex:1 1 auto;min-height:36px;padding-right:", "px;", ""], function (_ref9) {
116
116
  var $compact = _ref9.$compact;
117
117
  return getTypographyIntent($compact ? 'h3' : 'h2');
@@ -127,18 +127,18 @@ export var StyledModalHeading = /*#__PURE__*/styled.div.withConfig({
127
127
  });
128
128
  export var StyledModalCancel = /*#__PURE__*/styled.div.withConfig({
129
129
  displayName: "StyledModalCancel",
130
- componentId: "core-12_51_0__sc-1ijdug2-9"
130
+ componentId: "core-12_53_0__sc-1ijdug2-9"
131
131
  })(["flex:0 0 auto;"]);
132
132
  export var StyledModalScrim = /*#__PURE__*/styled.div.withConfig({
133
133
  displayName: "StyledModalScrim",
134
- componentId: "core-12_51_0__sc-1ijdug2-10"
134
+ componentId: "core-12_53_0__sc-1ijdug2-10"
135
135
  })(["background:hsla(200,8%,10%,0.6);height:100vh;left:0;position:absolute;top:0;width:100vw;z-index:1;"]);
136
136
  export var StyledModalWarningIcon = /*#__PURE__*/styled(Warning).withConfig({
137
137
  displayName: "StyledModalWarningIcon",
138
- componentId: "core-12_51_0__sc-1ijdug2-11"
138
+ componentId: "core-12_53_0__sc-1ijdug2-11"
139
139
  })(["color:", ";margin-right:", "px;"], colors.yellow40, spacing.sm);
140
140
  export var StyledModalFooterSummary = /*#__PURE__*/styled.div.withConfig({
141
141
  displayName: "StyledModalFooterSummary",
142
- componentId: "core-12_51_0__sc-1ijdug2-12"
142
+ componentId: "core-12_53_0__sc-1ijdug2-12"
143
143
  })(["", " background-color:", ";border-bottom:1px solid ", ";border-top:1px solid ", ";color:", ";flex:1 1 100%;font-style:italic;margin:-", "px -", "px ", "px;padding:", "px;"], getTypographyIntent('small'), colors.gray98, colors.gray85, colors.gray85, colors.gray15, spacing.lg, spacing.lg, spacing.lg, spacing.lg);
144
144
  //# sourceMappingURL=Modal.styles.js.map
@@ -95,16 +95,17 @@ function defaultTokenRenderer(_ref2) {
95
95
  option = _ref2.option,
96
96
  removeToken = _ref2.removeToken,
97
97
  getLabel = _ref2.getLabel,
98
- qa = _ref2.qa;
98
+ qa = _ref2.qa,
99
+ tokenRemoveProps = _ref2.tokenRemoveProps;
99
100
  return /*#__PURE__*/React.createElement(Token, {
100
101
  disabled: disabled,
101
102
  focused: focused,
102
103
  "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)
103
- }, /*#__PURE__*/React.createElement(Token.Label, null, getLabel(option)), /*#__PURE__*/React.createElement(Token.Remove, {
104
+ }, /*#__PURE__*/React.createElement(Token.Label, null, getLabel(option)), /*#__PURE__*/React.createElement(Token.Remove, _extends({}, tokenRemoveProps, {
104
105
  "data-close": true,
105
106
  onClick: removeToken,
106
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)
107
- }));
108
+ })));
108
109
  }
109
110
  function useMultiSelect(_ref3) {
110
111
  var getId = _ref3.getId,
@@ -391,6 +392,8 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
391
392
  var ownRef = React.useRef();
392
393
  var targetRef = ref || ownRef;
393
394
  var searchRef = React.useRef(null);
395
+ var tokenRemoveRefs = React.useRef([]);
396
+ var shouldTabToTokensRef = React.useRef(false);
394
397
  var menuRef = React.useRef(null);
395
398
  var tokenListId = useId();
396
399
  var tokenBaseId = useId();
@@ -399,6 +402,10 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
399
402
  _React$useState6 = _slicedToArray(_React$useState5, 2),
400
403
  isMenuOpen = _React$useState6[0],
401
404
  setIsMenuOpen = _React$useState6[1];
405
+ var _React$useState7 = React.useState(false),
406
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
407
+ isTokenTabbingActive = _React$useState8[0],
408
+ setIsTokenTabbingActive = _React$useState8[1];
402
409
  var _useMenuImperativeCon = useMenuImperativeControlNavigation(menuRef, isMenuOpen),
403
410
  menuNavigationTriggerProps = _useMenuImperativeCon.menuNavigationTriggerProps,
404
411
  menuProps = _useMenuImperativeCon.menuProps;
@@ -422,6 +429,27 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
422
429
  var showClearIcon = value.length > 0 && !loading;
423
430
  var isNavigatingTokens = multiselect.index !== null;
424
431
  var activeTokenId = isNavigatingTokens ? "".concat(tokenBaseId, "-").concat(multiselect.index) : undefined;
432
+ var focusTokenRemove = React.useCallback(function (index) {
433
+ var tokenRemove = tokenRemoveRefs.current[index];
434
+ if (tokenRemove) {
435
+ tokenRemove.focus();
436
+ }
437
+ }, []);
438
+ var onTokenRemoveKeyDown = React.useCallback(function (tokenIndex, e) {
439
+ if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {
440
+ e.preventDefault();
441
+ multiselect.removeToken(tokenIndex);
442
+ return;
443
+ }
444
+ if (e.key !== 'Tab') {
445
+ return;
446
+ }
447
+ var nextTokenIndex = tokenIndex + 1;
448
+ if (nextTokenIndex < value.length) {
449
+ e.preventDefault();
450
+ focusTokenRemove(nextTokenIndex);
451
+ }
452
+ }, [focusTokenRemove, multiselect, value.length]);
425
453
  var overlay = /*#__PURE__*/React.createElement(StyledMultiSelectMenu, {
426
454
  shadowStrength: 2
427
455
  }, /*#__PURE__*/React.createElement(MenuImperative, _extends({}, menuProps, {
@@ -491,7 +519,13 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
491
519
  $emptyValue: value.length === 0,
492
520
  $disabled: disabled,
493
521
  $loading: loading,
494
- $open: isVisible
522
+ $open: isVisible,
523
+ onBlurCapture: function onBlurCapture(e) {
524
+ var _targetRef$current;
525
+ if (!((_targetRef$current = targetRef.current) !== null && _targetRef$current !== void 0 && _targetRef$current.contains(e.relatedTarget))) {
526
+ setIsTokenTabbingActive(false);
527
+ }
528
+ }
495
529
  }, props), value.length === 0 && /*#__PURE__*/React.createElement(VisuallyHidden, null, /*#__PURE__*/React.createElement("span", {
496
530
  id: noneSelectedId
497
531
  }, I18n.t('core.multiSelect.noneSelected'))), /*#__PURE__*/React.createElement(StyledMultiSelectInner, null, /*#__PURE__*/React.createElement(StyledMultiSelectValues, {
@@ -516,6 +550,15 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
516
550
  removeToken: function removeToken() {
517
551
  multiselect.removeToken(i);
518
552
  },
553
+ tokenRemoveProps: {
554
+ tabIndex: -1,
555
+ onKeyDown: function onKeyDown(e) {
556
+ return onTokenRemoveKeyDown(i, e);
557
+ },
558
+ ref: function ref(el) {
559
+ tokenRemoveRefs.current[i] = el;
560
+ }
561
+ },
519
562
  qa: qa
520
563
  }));
521
564
  })), /*#__PURE__*/React.createElement(StyledMultiSelectSearch, null, /*#__PURE__*/React.createElement(StyledMultiSelectSearchInput, _extends({
@@ -530,6 +573,14 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
530
573
  $isNavigatingTokens: isNavigatingTokens,
531
574
  disabled: disabled,
532
575
  onBlur: multiselect.clearToken,
576
+ onFocus: function onFocus(e) {
577
+ var _targetRef$current2;
578
+ setIsTokenTabbingActive(false);
579
+ var focusCameFromInsideTarget = Boolean(e.relatedTarget && ((_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.contains(e.relatedTarget)));
580
+ if (!focusCameFromInsideTarget) {
581
+ shouldTabToTokensRef.current = true;
582
+ }
583
+ },
533
584
  onChange: function onChange(e) {
534
585
  multiselect.onSearch(e);
535
586
  }
@@ -555,6 +606,14 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
555
606
  disable(e);
556
607
  }
557
608
  } else {
609
+ if (e.key === 'Tab' && value.length > 0 && shouldTabToTokensRef.current) {
610
+ e.preventDefault();
611
+ shouldTabToTokensRef.current = false;
612
+ setIsTokenTabbingActive(true);
613
+ focusTokenRemove(0);
614
+ return;
615
+ }
616
+
558
617
  // if we type in an alphanumeric character, show the overlay
559
618
  if (isAlphaNumeric(e.key)) {
560
619
  enable(e);
@@ -564,7 +623,7 @@ var MultiSelect_ = /*#__PURE__*/React.forwardRef(function MultiSelect(_ref7, ref
564
623
  },
565
624
  placeholder: (value === null || value === void 0 ? void 0 : value.length) > 0 ? '' : placeholder !== null && placeholder !== void 0 ? placeholder : I18n.t('core.multiSelect.selectValues'),
566
625
  ref: searchRef,
567
- tabIndex: tabIndex,
626
+ tabIndex: isTokenTabbingActive ? -1 : tabIndex,
568
627
  value: multiselect.search
569
628
  })))), /*#__PURE__*/React.createElement(StyledMultiSelectSearchIcon, null, /*#__PURE__*/React.createElement(StyledMultiSelectClearIcon, {
570
629
  "aria-label": i18n.t('core.multiSelect.clearAll'),
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.js","names":["Clear","useId","VisuallyHidden","React","Box","MenuImperative","useMenuImperativeControlNavigation","OverlayTrigger","Spinner","Token","Typography","isEventSource","useI18nContext","addSubcomponents","StyledMultiSelectArrow","StyledMultiSelectArrowContainer","StyledMultiSelectButton","StyledMultiSelectClearIcon","StyledMultiSelectInner","StyledMultiSelectMenu","StyledMultiSelectSearch","StyledMultiSelectSearchIcon","StyledMultiSelectSearchInput","StyledMultiSelectToken","StyledMultiSelectValues","targetShowKeys","targetHideKeys","overlayHideKeys","emptyArray","noop","returnTrue","isAlphaNumeric","str","length","match","setFocusTo","ref","current","focus","isOption","obj","_typeof","type","Option","defaultIsOptionDisabled","defaultGetId","item","id","defaultGetLabel","label","defaultGetGroup","groupId","defaultIsSelectable","defaultOptionRenderer","_ref","_qa$option","getId","getLabel","qa","value","props","_objectWithoutProperties","_excluded","createElement","_extends","key","option","call","defaultGroupRenderer","group","Group","concat","children","defaultTokenRenderer","_ref2","_qa$token","_qa$tokenClear","focused","disabled","removeToken","token","Label","Remove","onClick","tokenClear","useMultiSelect","_ref3","getGroup","menuRef","_ref3$onChange","onChange","onSearch_","onSearch","options_","options","optgroups","_React$useState","useState","_React$useState2","_slicedToArray","index","setIndex","_React$useState3","_React$useState4","search","setSearch","valueIds","reduce","acc","cur","add","Set","count","useMemo","filter","opt","toLowerCase","includes","useCallback","e","target","setTimeout","_menuRef$current","highlightFirst","clearToken","removeSelection","selection","selected","s","onSelect","newSelected","has","_toConsumableArray","i","decrementToken","Math","max","incrementToken","onKeyDown","event","_menuRef$current2","select","_menuRef$current3","prev","_menuRef$current4","next","repeat","useEffect","groupedOptions","optionsByGroup","_ref4","_objectSpread","_defineProperty","orphanOptions","forEach","groupOptions","push","console","warn","map","isGroupHeader","Boolean","ids","domHandlers","forwardRef","_ref5","_excluded2","Item","GroupedOptions","_ref6","multiselect","groupHeaderRenderer","groupRenderer","optionRenderer","isOptionDisabled","renderOption","groupHeader","Fragment","Options","MultiSelect_","MultiSelect","_ref7","_ref7$afterHide","afterHide","_ref7$afterShow","afterShow","_ref7$beforeHide","beforeHide","_ref7$beforeShow","beforeShow","_ref7$block","block","_ref7$disabled","emptyMessage","_ref7$error","error","footer","_ref7$getId","_ref7$getLabel","_ref7$getGroup","_ref7$loading","loading","_ref7$onChange","onScrollBottom","_ref7$options","_ref7$isOptionDisable","_ref7$optionRenderer","_ref7$groupRenderer","_ref7$tokenRenderer","tokenRenderer","placeholder","_ref7$placement","placement","_ref7$value","_ref7$tabIndex","tabIndex","ariaLabelledBy","ariaDescribedBy","_ref7$qa","_excluded3","i18n","ownRef","useRef","targetRef","searchRef","tokenListId","tokenBaseId","noneSelectedId","_React$useState5","_React$useState6","isMenuOpen","setIsMenuOpen","_useMenuImperativeCon","menuNavigationTriggerProps","menuProps","menuAriaControls","restMenuNavigationTriggerProps","_excluded4","I18n","showClearIcon","isNavigatingTokens","activeTokenId","undefined","overlay","shadowStrength","role","padding","color","intent","italic","t","Footer","canFlip","_menuRef$current5","MouseEvent","hideKeys","showKeys","trigger","_ref8","disable","enable","isVisible","ariaControls","$block","$error","$emptyValue","$disabled","$loading","$open","tokenId","tokenLabel","join","$isNavigatingTokens","onBlur","preventDefault","stopPropagation","size","variant","icon","$show","displayName"],"sources":["../../src/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { Clear } from '@procore/core-icons/dist'\nimport { useId } from '@react-aria/utils'\nimport { VisuallyHidden } from '@react-aria/visually-hidden'\nimport React from 'react'\nimport { Box } from '../Box'\nimport {\n MenuImperative,\n useMenuImperativeControlNavigation,\n} from '../MenuImperative/MenuImperative'\nimport type { MenuRef, Selection } from '../MenuImperative/MenuImperative.types'\nimport { OverlayTrigger } from '../OverlayTrigger'\nimport { Spinner } from '../Spinner'\nimport { Token } from '../Token'\nimport { Typography } from '../Typography'\nimport { isEventSource } from '../_hooks/ClickOutside'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport {\n StyledMultiSelectArrow,\n StyledMultiSelectArrowContainer,\n StyledMultiSelectButton,\n StyledMultiSelectClearIcon,\n StyledMultiSelectInner,\n StyledMultiSelectMenu,\n StyledMultiSelectSearch,\n StyledMultiSelectSearchIcon,\n StyledMultiSelectSearchInput,\n StyledMultiSelectToken,\n StyledMultiSelectValues,\n} from './MultiSelect.styles'\nimport type {\n ChangeEvent,\n GroupedOptionsProps,\n GroupHeader,\n GroupHeaderProps,\n GroupItem,\n MultiSelectConfig,\n MultiSelectHook,\n MultiSelectOptionProps,\n MultiSelectOptionRendererProps,\n MultiSelectProps,\n MultiSelectTokenRendererProps,\n OptionItem,\n} from './MultiSelect.types'\n\nconst targetShowKeys = ['ArrowDown', 'Down']\n\nconst targetHideKeys = ['Esc', 'Escape']\n\nconst overlayHideKeys = targetHideKeys\n\nconst emptyArray: OptionItem[] = []\n\nfunction noop() {}\n\nfunction returnTrue() {\n return true\n}\n\nfunction isAlphaNumeric(str: string) {\n return str.length === 1 && str.match(/[A-Za-z0-9 _.,!\"'/$]*/i)\n}\n\nfunction setFocusTo(ref: React.RefObject<HTMLElement>) {\n if (ref.current) {\n ref.current.focus()\n }\n}\n\nfunction isOption(obj: React.ReactChild) {\n return typeof obj === 'object' && obj.type === Option\n}\n\nfunction defaultIsOptionDisabled() {\n return false\n}\n\nfunction defaultGetId(item: OptionItem) {\n return item.id\n}\n\nfunction defaultGetLabel(item: OptionItem) {\n return item.label\n}\n\nfunction defaultGetGroup(item: OptionItem) {\n return item.groupId\n}\n\nfunction defaultIsSelectable(obj: React.ReactChild) {\n typeof obj === 'object' && obj.type === Option\n}\n\nfunction defaultOptionRenderer(\n item: OptionItem,\n { getId, getLabel, qa, value, ...props }: MultiSelectOptionRendererProps\n) {\n return (\n <Option\n key={getId(item)}\n value={value || item}\n data-qa={qa?.option?.(item)}\n {...props}\n >\n {getLabel(item)}\n </Option>\n )\n}\n\nfunction defaultGroupRenderer(group: GroupHeaderProps) {\n return (\n <MenuImperative.Group key={`group_${group.id}`} label={group.label}>\n {group.children}\n </MenuImperative.Group>\n )\n}\n\nfunction defaultTokenRenderer({\n focused,\n disabled,\n option,\n removeToken,\n getLabel,\n qa,\n}: MultiSelectTokenRendererProps) {\n return (\n <Token disabled={disabled} focused={focused} data-qa={qa?.token?.(option)}>\n <Token.Label>{getLabel(option)}</Token.Label>\n <Token.Remove\n data-close\n onClick={removeToken}\n data-qa={qa?.tokenClear?.(option)}\n />\n </Token>\n )\n}\n\nfunction useMultiSelect({\n getId,\n getLabel,\n getGroup,\n menuRef,\n onChange = noop,\n onSearch: onSearch_,\n options: options_,\n value,\n optgroups,\n}: MultiSelectConfig): MultiSelectHook {\n const [index, setIndex] = React.useState<number | null>(null)\n\n const [search, setSearch] = React.useState<string>('')\n\n const valueIds = value.reduce<Set<number | string>>((acc, cur) => {\n acc.add(getId(cur))\n\n return acc\n }, new Set())\n\n const count = value.length\n\n const options = React.useMemo(\n function () {\n if (onSearch_) {\n return options_\n }\n\n return options_.filter((opt) =>\n getLabel(opt).toLowerCase().includes(search.toLowerCase())\n )\n },\n [options_, onSearch_, getLabel, search]\n )\n\n const onSearch = React.useCallback(\n function (e: ChangeEvent) {\n if (onSearch_) {\n onSearch_(e)\n }\n\n setSearch(e.target.value)\n\n // TODO: because menu highlighting is now imperative, we have to wait\n // for a render to highlight the first item. Is there a better way\n // to schedule this?\n setTimeout(() => menuRef.current?.highlightFirst(), 0)\n },\n [menuRef, onSearch_]\n )\n\n const clearToken = () => setIndex(null)\n\n const removeSelection = React.useCallback(\n function (selection: OptionItem, selected: OptionItem[]) {\n return selected.filter((s) => getId(s) !== getId(selection))\n },\n [getId]\n )\n\n const onSelect = React.useCallback(\n (selection: Selection) => {\n const newSelected = valueIds.has(getId(selection.item))\n ? removeSelection(selection.item, value)\n : [...value, selection.item]\n\n setSearch('')\n onChange(newSelected)\n },\n [setSearch, onChange, getId, removeSelection, value, valueIds]\n )\n\n const removeToken = React.useCallback(\n function (i: number) {\n onChange(removeSelection(value[i], value))\n },\n [value, onChange, removeSelection]\n )\n\n const decrementToken = React.useCallback(\n function () {\n if (index === null) {\n // index is null, set it to the last token index\n setIndex(count - 1)\n } else {\n // decrementToken by one, don't go below 0\n setIndex(Math.max(0, index - 1))\n }\n },\n [count, index, setIndex]\n )\n\n const incrementToken = React.useCallback(\n function () {\n if (index === count - 1) {\n setIndex(null)\n } else if (index !== null) {\n setIndex(index + 1)\n }\n },\n [count, index, setIndex]\n )\n\n const onKeyDown = React.useCallback(\n function (event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === 'Enter') {\n menuRef.current?.select(event)\n }\n\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n menuRef.current?.prev()\n }\n\n if (event.key === 'ArrowDown' || event.key === 'Down') {\n menuRef.current?.next()\n }\n\n if (search === '') {\n if (event.key === 'Backspace' || event.key === 'Delete') {\n // to prevent accidentally deleting too many tokens, don't do anything\n // on repeating key events\n if (event.repeat) {\n return\n }\n\n // if we are focused on a token, remove it, otherwise remove the last token\n removeToken(index !== null ? index : count - 1)\n\n if (count >= 1) {\n decrementToken()\n } else {\n clearToken()\n }\n }\n\n if (event.key === 'ArrowLeft' || event.key === 'Left') {\n decrementToken()\n }\n\n if (event.key === 'ArrowRight' || event.key === 'Right') {\n incrementToken()\n }\n }\n },\n [count, decrementToken, incrementToken, index, menuRef, removeToken, search]\n )\n\n React.useEffect(\n function () {\n // if we've deleted a token and our new count is less than\n // our current index, clear the index\n if (count <= (index || 0)) {\n clearToken()\n }\n },\n [count, index]\n )\n\n const groupedOptions = React.useMemo(() => {\n if (!optgroups || !optgroups.length) {\n return options\n }\n\n const optionsByGroup: Record<string, (OptionItem | GroupHeader)[]> =\n optgroups.reduce((acc, { id }) => {\n return {\n ...acc,\n [id]: [],\n }\n }, {})\n\n const orphanOptions = [] as OptionItem[]\n\n options.forEach((option) => {\n const groupId = getGroup(option)\n const groupOptions = optionsByGroup[groupId]\n\n if (!groupId || !groupOptions) {\n orphanOptions.push(option)\n return\n }\n\n optionsByGroup[groupId].push(option)\n })\n\n if (orphanOptions.length) {\n console.warn(\n `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.`,\n orphanOptions\n )\n }\n\n return optgroups\n .map((group: GroupItem) => {\n const groupOptions = optionsByGroup[group.id]\n\n if (!groupOptions.length) {\n return null\n }\n\n return { ...group, isGroupHeader: true, options: groupOptions }\n }, [])\n .filter(Boolean)\n }, [options, getGroup, optgroups])\n\n return {\n ids: valueIds,\n index,\n menuRef,\n options: groupedOptions,\n search,\n\n clearToken,\n decrementToken,\n incrementToken,\n onSearch,\n onSelect,\n removeToken,\n\n domHandlers: {\n onKeyDown,\n },\n }\n}\n\nexport const Option = React.forwardRef<HTMLDivElement, MultiSelectOptionProps>(\n function Option({ value, ...props }, ref) {\n return <MenuImperative.Item ref={ref} {...props} item={value} />\n }\n)\n\nfunction GroupedOptions({\n multiselect,\n groupHeaderRenderer,\n groupRenderer,\n optionRenderer,\n getId,\n getLabel,\n isOptionDisabled,\n qa,\n}: GroupedOptionsProps) {\n const renderOption = (option: OptionItem | GroupHeader): React.ReactNode => {\n if (option.isGroupHeader) {\n const groupHeader: GroupHeader = option\n if (groupHeaderRenderer) {\n return (\n <>\n {groupHeaderRenderer(groupHeader)}\n {groupHeader.options.map(renderOption)}\n </>\n )\n }\n return groupRenderer({\n ...groupHeader,\n children: groupHeader.options.map(renderOption),\n })\n }\n\n return optionRenderer(option, {\n getId,\n getLabel,\n // @ts-ignore\n // Object literal may only specify known properties, and 'key' does not exist in type 'OptionRendererProps'.\n key: getId(option),\n selected: multiselect.ids.has(getId(option)),\n disabled: isOptionDisabled(option),\n value: option,\n qa,\n })\n }\n return (\n <MenuImperative.Options>\n {multiselect.options.map(renderOption)}\n </MenuImperative.Options>\n )\n}\n\n/**\n\n Multi selects allow our users to choose one to many options from a list,\n presented in a dropdown. We typically see these selects on forms.\n\n Other select components are group select, select, and tiered select.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_multiselect--basic)\n\n @see [Design Guidelines](https://design.procore.com/multi-select)\n\n */\nconst MultiSelect_ = React.forwardRef<HTMLDivElement, MultiSelectProps>(\n function MultiSelect(\n {\n afterHide = noop,\n afterShow = noop,\n beforeHide = returnTrue,\n beforeShow = returnTrue,\n block = false,\n disabled = false,\n emptyMessage,\n error = false,\n footer,\n getId = defaultGetId,\n getLabel = defaultGetLabel,\n getGroup = defaultGetGroup,\n loading = false,\n onChange = noop,\n onScrollBottom,\n onSearch,\n options = emptyArray,\n isOptionDisabled = defaultIsOptionDisabled,\n optionRenderer = defaultOptionRenderer,\n optgroups,\n groupHeaderRenderer,\n groupRenderer = defaultGroupRenderer,\n tokenRenderer = defaultTokenRenderer,\n placeholder,\n placement = 'bottom-left',\n value = emptyArray,\n tabIndex = 0,\n ['aria-labelledby']: ariaLabelledBy,\n ['aria-describedby']: ariaDescribedBy,\n qa = {},\n ...props\n },\n ref\n ) {\n const i18n = useI18nContext()\n const ownRef = React.useRef<HTMLDivElement>()\n const targetRef = (ref as React.RefObject<HTMLDivElement>) || ownRef\n\n const searchRef = React.useRef<HTMLInputElement>(null)\n\n const menuRef = React.useRef<MenuRef | null>(null)\n const tokenListId = useId()\n const tokenBaseId = useId()\n const noneSelectedId = useId()\n const [isMenuOpen, setIsMenuOpen] = React.useState(false)\n const { menuNavigationTriggerProps, menuProps } =\n useMenuImperativeControlNavigation(menuRef, isMenuOpen)\n const {\n 'aria-controls': menuAriaControls,\n ...restMenuNavigationTriggerProps\n } = menuNavigationTriggerProps\n\n const I18n = useI18nContext()\n\n const multiselect = useMultiSelect({\n getId,\n getLabel,\n getGroup,\n menuRef,\n onSearch,\n options,\n onChange: function (value) {\n onChange(value)\n\n setFocusTo(searchRef)\n },\n value,\n optgroups,\n })\n\n const showClearIcon = value.length > 0 && !loading\n\n const isNavigatingTokens = multiselect.index !== null\n const activeTokenId = isNavigatingTokens\n ? `${tokenBaseId}-${multiselect.index}`\n : undefined\n\n const overlay = (\n <StyledMultiSelectMenu shadowStrength={2}>\n <MenuImperative\n {...menuProps}\n ref={menuRef}\n onScrollBottom={onScrollBottom}\n onSelect={multiselect.onSelect}\n data-qa=\"multi-select-menu\"\n role=\"listbox\"\n >\n {multiselect.options.length ? (\n <GroupedOptions\n multiselect={multiselect}\n getId={getId}\n getLabel={getLabel}\n isOptionDisabled={isOptionDisabled}\n groupHeaderRenderer={groupHeaderRenderer}\n groupRenderer={groupRenderer}\n optionRenderer={optionRenderer}\n qa={qa}\n />\n ) : (\n <Box padding=\"md lg\">\n <Typography color=\"gray45\" intent=\"small\" italic>\n {emptyMessage || I18n.t('core.multiSelect.noResults')}\n </Typography>\n </Box>\n )}\n {footer && <MenuImperative.Footer>{footer}</MenuImperative.Footer>}\n </MenuImperative>\n </StyledMultiSelectMenu>\n )\n\n return (\n <OverlayTrigger\n canFlip={true}\n afterHide={() => {\n multiselect.clearToken()\n setIsMenuOpen(false)\n\n afterHide()\n }}\n afterShow={() => {\n multiselect.clearToken()\n\n menuRef.current?.highlightFirst()\n setIsMenuOpen(true)\n\n afterShow()\n }}\n beforeHide={(e) => {\n // if we are clicking somewhere in the target, set focus on the search\n if (e instanceof MouseEvent && isEventSource(targetRef, e)) {\n setFocusTo(searchRef)\n }\n\n return beforeHide(e)\n }}\n beforeShow={(e) => {\n setFocusTo(searchRef)\n\n return beforeShow(e)\n }}\n hideKeys={{\n overlay: overlayHideKeys,\n target: targetHideKeys,\n }}\n overlay={overlay}\n placement={placement}\n ref={targetRef}\n showKeys={targetShowKeys}\n trigger=\"click\"\n >\n {({ disable, enable, isVisible }) => {\n const ariaControls = isNavigatingTokens\n ? tokenListId\n : menuAriaControls\n\n return (\n <StyledMultiSelectButton\n $block={block}\n $error={error}\n $emptyValue={value.length === 0}\n $disabled={disabled}\n $loading={loading}\n $open={isVisible}\n {...props}\n >\n {value.length === 0 && (\n <VisuallyHidden>\n <span id={noneSelectedId}>\n {I18n.t('core.multiSelect.noneSelected')}\n </span>\n </VisuallyHidden>\n )}\n <StyledMultiSelectInner>\n <StyledMultiSelectValues\n id={tokenListId}\n role=\"list\"\n aria-label={\n value.length > 0\n ? I18n.t('core.multiSelect.selectedItems')\n : I18n.t('core.multiSelect.noneSelected')\n }\n >\n {value.map((selection, i) => {\n const tokenId = `${tokenBaseId}-${i}`\n const tokenLabel = getLabel(selection)\n return (\n <StyledMultiSelectToken\n key={getId(selection)}\n id={tokenId}\n role=\"listitem\"\n aria-label={\n typeof tokenLabel === 'string'\n ? I18n.t('core.multiSelect.selectedToken', {\n tokenLabel,\n })\n : undefined\n }\n >\n {tokenRenderer({\n option: selection,\n focused: i === multiselect.index,\n disabled: disabled,\n getLabel,\n removeToken: function () {\n multiselect.removeToken(i)\n },\n qa,\n })}\n </StyledMultiSelectToken>\n )\n })}\n </StyledMultiSelectValues>\n\n <StyledMultiSelectSearch>\n <StyledMultiSelectSearchInput\n aria-activedescendant={activeTokenId}\n aria-controls={ariaControls}\n aria-describedby={\n [\n ariaDescribedBy,\n value.length === 0 ? noneSelectedId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n }\n aria-expanded={isVisible}\n aria-invalid={error || undefined}\n aria-labelledby={ariaLabelledBy}\n data-qa=\"core-multiselect-input\"\n role=\"combobox\"\n $isNavigatingTokens={isNavigatingTokens}\n disabled={disabled}\n onBlur={multiselect.clearToken}\n onChange={function (\n e: React.ChangeEvent<HTMLInputElement>\n ) {\n multiselect.onSearch(e)\n }}\n {...restMenuNavigationTriggerProps}\n onKeyDown={function (\n e: React.KeyboardEvent<HTMLInputElement>\n ) {\n if (isNavigatingTokens && e.key !== 'Tab') {\n // if we are navigating tokens don't do any input but allow Tab\n e.preventDefault()\n }\n\n if (isVisible) {\n // if the overlay is visible, close it and keep focus\n if (e.key === 'Tab') {\n e.preventDefault()\n\n disable(e)\n }\n // if open, don't notify parents (like Modal) but still let OverlayTrigger close it and keep it focus\n if (e.key === 'Esc' || e.key === 'Escape') {\n e.stopPropagation()\n disable(e)\n }\n // close dropdown when navigating tokens with arrow keys\n if (\n multiselect.search === '' &&\n (e.key === 'ArrowLeft' ||\n e.key === 'Left' ||\n e.key === 'ArrowRight' ||\n e.key === 'Right')\n ) {\n disable(e)\n }\n } else {\n // if we type in an alphanumeric character, show the overlay\n if (isAlphaNumeric(e.key)) {\n enable(e)\n }\n }\n\n multiselect.domHandlers.onKeyDown(e)\n }}\n placeholder={\n value?.length > 0\n ? ''\n : placeholder ?? I18n.t('core.multiSelect.selectValues')\n }\n ref={searchRef}\n tabIndex={tabIndex}\n value={multiselect.search}\n />\n </StyledMultiSelectSearch>\n </StyledMultiSelectInner>\n <StyledMultiSelectSearchIcon>\n <StyledMultiSelectClearIcon\n aria-label={i18n.t('core.multiSelect.clearAll')}\n data-close\n data-qa=\"core-multiselect-clear\"\n size=\"sm\"\n variant=\"tertiary\"\n disabled={disabled}\n icon={<Clear />}\n onClick={() => onChange([])}\n tabIndex={showClearIcon ? 0 : -1}\n $show={showClearIcon}\n />\n {loading ? (\n <Spinner color=\"blue50\" size=\"xs\" />\n ) : (\n <StyledMultiSelectArrowContainer\n data-qa=\"multiselect-select-arrow\"\n onClick={(e: React.MouseEvent) => isVisible && disable(e)}\n >\n <StyledMultiSelectArrow />\n </StyledMultiSelectArrowContainer>\n )}\n </StyledMultiSelectSearchIcon>\n </StyledMultiSelectButton>\n )\n }}\n </OverlayTrigger>\n )\n }\n)\n\nMultiSelect_.displayName = 'MultiSelect'\n\n/**\n * @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-multiselect--demo)\n * @see [Design Guidelines](https://design.procore.com/multi-select)\n */\nexport const MultiSelect = addSubcomponents(\n {\n Option,\n },\n MultiSelect_\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelect.js","names":["Clear","useId","VisuallyHidden","React","Box","MenuImperative","useMenuImperativeControlNavigation","OverlayTrigger","Spinner","Token","Typography","isEventSource","useI18nContext","addSubcomponents","StyledMultiSelectArrow","StyledMultiSelectArrowContainer","StyledMultiSelectButton","StyledMultiSelectClearIcon","StyledMultiSelectInner","StyledMultiSelectMenu","StyledMultiSelectSearch","StyledMultiSelectSearchIcon","StyledMultiSelectSearchInput","StyledMultiSelectToken","StyledMultiSelectValues","targetShowKeys","targetHideKeys","overlayHideKeys","emptyArray","noop","returnTrue","isAlphaNumeric","str","length","match","setFocusTo","ref","current","focus","isOption","obj","_typeof","type","Option","defaultIsOptionDisabled","defaultGetId","item","id","defaultGetLabel","label","defaultGetGroup","groupId","defaultIsSelectable","defaultOptionRenderer","_ref","_qa$option","getId","getLabel","qa","value","props","_objectWithoutProperties","_excluded","createElement","_extends","key","option","call","defaultGroupRenderer","group","Group","concat","children","defaultTokenRenderer","_ref2","_qa$token","_qa$tokenClear","focused","disabled","removeToken","tokenRemoveProps","token","Label","Remove","onClick","tokenClear","useMultiSelect","_ref3","getGroup","menuRef","_ref3$onChange","onChange","onSearch_","onSearch","options_","options","optgroups","_React$useState","useState","_React$useState2","_slicedToArray","index","setIndex","_React$useState3","_React$useState4","search","setSearch","valueIds","reduce","acc","cur","add","Set","count","useMemo","filter","opt","toLowerCase","includes","useCallback","e","target","setTimeout","_menuRef$current","highlightFirst","clearToken","removeSelection","selection","selected","s","onSelect","newSelected","has","_toConsumableArray","i","decrementToken","Math","max","incrementToken","onKeyDown","event","_menuRef$current2","select","_menuRef$current3","prev","_menuRef$current4","next","repeat","useEffect","groupedOptions","optionsByGroup","_ref4","_objectSpread","_defineProperty","orphanOptions","forEach","groupOptions","push","console","warn","map","isGroupHeader","Boolean","ids","domHandlers","forwardRef","_ref5","_excluded2","Item","GroupedOptions","_ref6","multiselect","groupHeaderRenderer","groupRenderer","optionRenderer","isOptionDisabled","renderOption","groupHeader","Fragment","Options","MultiSelect_","MultiSelect","_ref7","_ref7$afterHide","afterHide","_ref7$afterShow","afterShow","_ref7$beforeHide","beforeHide","_ref7$beforeShow","beforeShow","_ref7$block","block","_ref7$disabled","emptyMessage","_ref7$error","error","footer","_ref7$getId","_ref7$getLabel","_ref7$getGroup","_ref7$loading","loading","_ref7$onChange","onScrollBottom","_ref7$options","_ref7$isOptionDisable","_ref7$optionRenderer","_ref7$groupRenderer","_ref7$tokenRenderer","tokenRenderer","placeholder","_ref7$placement","placement","_ref7$value","_ref7$tabIndex","tabIndex","ariaLabelledBy","ariaDescribedBy","_ref7$qa","_excluded3","i18n","ownRef","useRef","targetRef","searchRef","tokenRemoveRefs","shouldTabToTokensRef","tokenListId","tokenBaseId","noneSelectedId","_React$useState5","_React$useState6","isMenuOpen","setIsMenuOpen","_React$useState7","_React$useState8","isTokenTabbingActive","setIsTokenTabbingActive","_useMenuImperativeCon","menuNavigationTriggerProps","menuProps","menuAriaControls","restMenuNavigationTriggerProps","_excluded4","I18n","showClearIcon","isNavigatingTokens","activeTokenId","undefined","focusTokenRemove","tokenRemove","onTokenRemoveKeyDown","tokenIndex","preventDefault","nextTokenIndex","overlay","shadowStrength","role","padding","color","intent","italic","t","Footer","canFlip","_menuRef$current5","MouseEvent","hideKeys","showKeys","trigger","_ref8","disable","enable","isVisible","ariaControls","$block","$error","$emptyValue","$disabled","$loading","$open","onBlurCapture","_targetRef$current","contains","relatedTarget","tokenId","tokenLabel","el","join","$isNavigatingTokens","onBlur","onFocus","_targetRef$current2","focusCameFromInsideTarget","stopPropagation","size","variant","icon","$show","displayName"],"sources":["../../src/MultiSelect/MultiSelect.tsx"],"sourcesContent":["import { Clear } from '@procore/core-icons/dist'\nimport { useId } from '@react-aria/utils'\nimport { VisuallyHidden } from '@react-aria/visually-hidden'\nimport React from 'react'\nimport { Box } from '../Box'\nimport {\n MenuImperative,\n useMenuImperativeControlNavigation,\n} from '../MenuImperative/MenuImperative'\nimport type { MenuRef, Selection } from '../MenuImperative/MenuImperative.types'\nimport { OverlayTrigger } from '../OverlayTrigger'\nimport { Spinner } from '../Spinner'\nimport { Token } from '../Token'\nimport { Typography } from '../Typography'\nimport { isEventSource } from '../_hooks/ClickOutside'\nimport { useI18nContext } from '../_hooks/I18n'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport {\n StyledMultiSelectArrow,\n StyledMultiSelectArrowContainer,\n StyledMultiSelectButton,\n StyledMultiSelectClearIcon,\n StyledMultiSelectInner,\n StyledMultiSelectMenu,\n StyledMultiSelectSearch,\n StyledMultiSelectSearchIcon,\n StyledMultiSelectSearchInput,\n StyledMultiSelectToken,\n StyledMultiSelectValues,\n} from './MultiSelect.styles'\nimport type {\n ChangeEvent,\n GroupedOptionsProps,\n GroupHeader,\n GroupHeaderProps,\n GroupItem,\n MultiSelectConfig,\n MultiSelectHook,\n MultiSelectOptionProps,\n MultiSelectOptionRendererProps,\n MultiSelectProps,\n MultiSelectTokenRendererProps,\n OptionItem,\n} from './MultiSelect.types'\n\nconst targetShowKeys = ['ArrowDown', 'Down']\n\nconst targetHideKeys = ['Esc', 'Escape']\n\nconst overlayHideKeys = targetHideKeys\n\nconst emptyArray: OptionItem[] = []\n\nfunction noop() {}\n\nfunction returnTrue() {\n return true\n}\n\nfunction isAlphaNumeric(str: string) {\n return str.length === 1 && str.match(/[A-Za-z0-9 _.,!\"'/$]*/i)\n}\n\nfunction setFocusTo(ref: React.RefObject<HTMLElement>) {\n if (ref.current) {\n ref.current.focus()\n }\n}\n\nfunction isOption(obj: React.ReactChild) {\n return typeof obj === 'object' && obj.type === Option\n}\n\nfunction defaultIsOptionDisabled() {\n return false\n}\n\nfunction defaultGetId(item: OptionItem) {\n return item.id\n}\n\nfunction defaultGetLabel(item: OptionItem) {\n return item.label\n}\n\nfunction defaultGetGroup(item: OptionItem) {\n return item.groupId\n}\n\nfunction defaultIsSelectable(obj: React.ReactChild) {\n typeof obj === 'object' && obj.type === Option\n}\n\nfunction defaultOptionRenderer(\n item: OptionItem,\n { getId, getLabel, qa, value, ...props }: MultiSelectOptionRendererProps\n) {\n return (\n <Option\n key={getId(item)}\n value={value || item}\n data-qa={qa?.option?.(item)}\n {...props}\n >\n {getLabel(item)}\n </Option>\n )\n}\n\nfunction defaultGroupRenderer(group: GroupHeaderProps) {\n return (\n <MenuImperative.Group key={`group_${group.id}`} label={group.label}>\n {group.children}\n </MenuImperative.Group>\n )\n}\n\nfunction defaultTokenRenderer({\n focused,\n disabled,\n option,\n removeToken,\n getLabel,\n qa,\n tokenRemoveProps,\n}: MultiSelectTokenRendererProps) {\n return (\n <Token disabled={disabled} focused={focused} data-qa={qa?.token?.(option)}>\n <Token.Label>{getLabel(option)}</Token.Label>\n <Token.Remove\n {...tokenRemoveProps}\n data-close\n onClick={removeToken}\n data-qa={qa?.tokenClear?.(option)}\n />\n </Token>\n )\n}\n\nfunction useMultiSelect({\n getId,\n getLabel,\n getGroup,\n menuRef,\n onChange = noop,\n onSearch: onSearch_,\n options: options_,\n value,\n optgroups,\n}: MultiSelectConfig): MultiSelectHook {\n const [index, setIndex] = React.useState<number | null>(null)\n\n const [search, setSearch] = React.useState<string>('')\n\n const valueIds = value.reduce<Set<number | string>>((acc, cur) => {\n acc.add(getId(cur))\n\n return acc\n }, new Set())\n\n const count = value.length\n\n const options = React.useMemo(\n function () {\n if (onSearch_) {\n return options_\n }\n\n return options_.filter((opt) =>\n getLabel(opt).toLowerCase().includes(search.toLowerCase())\n )\n },\n [options_, onSearch_, getLabel, search]\n )\n\n const onSearch = React.useCallback(\n function (e: ChangeEvent) {\n if (onSearch_) {\n onSearch_(e)\n }\n\n setSearch(e.target.value)\n\n // TODO: because menu highlighting is now imperative, we have to wait\n // for a render to highlight the first item. Is there a better way\n // to schedule this?\n setTimeout(() => menuRef.current?.highlightFirst(), 0)\n },\n [menuRef, onSearch_]\n )\n\n const clearToken = () => setIndex(null)\n\n const removeSelection = React.useCallback(\n function (selection: OptionItem, selected: OptionItem[]) {\n return selected.filter((s) => getId(s) !== getId(selection))\n },\n [getId]\n )\n\n const onSelect = React.useCallback(\n (selection: Selection) => {\n const newSelected = valueIds.has(getId(selection.item))\n ? removeSelection(selection.item, value)\n : [...value, selection.item]\n\n setSearch('')\n onChange(newSelected)\n },\n [setSearch, onChange, getId, removeSelection, value, valueIds]\n )\n\n const removeToken = React.useCallback(\n function (i: number) {\n onChange(removeSelection(value[i], value))\n },\n [value, onChange, removeSelection]\n )\n\n const decrementToken = React.useCallback(\n function () {\n if (index === null) {\n // index is null, set it to the last token index\n setIndex(count - 1)\n } else {\n // decrementToken by one, don't go below 0\n setIndex(Math.max(0, index - 1))\n }\n },\n [count, index, setIndex]\n )\n\n const incrementToken = React.useCallback(\n function () {\n if (index === count - 1) {\n setIndex(null)\n } else if (index !== null) {\n setIndex(index + 1)\n }\n },\n [count, index, setIndex]\n )\n\n const onKeyDown = React.useCallback(\n function (event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === 'Enter') {\n menuRef.current?.select(event)\n }\n\n if (event.key === 'ArrowUp' || event.key === 'Up') {\n menuRef.current?.prev()\n }\n\n if (event.key === 'ArrowDown' || event.key === 'Down') {\n menuRef.current?.next()\n }\n\n if (search === '') {\n if (event.key === 'Backspace' || event.key === 'Delete') {\n // to prevent accidentally deleting too many tokens, don't do anything\n // on repeating key events\n if (event.repeat) {\n return\n }\n\n // if we are focused on a token, remove it, otherwise remove the last token\n removeToken(index !== null ? index : count - 1)\n\n if (count >= 1) {\n decrementToken()\n } else {\n clearToken()\n }\n }\n\n if (event.key === 'ArrowLeft' || event.key === 'Left') {\n decrementToken()\n }\n\n if (event.key === 'ArrowRight' || event.key === 'Right') {\n incrementToken()\n }\n }\n },\n [count, decrementToken, incrementToken, index, menuRef, removeToken, search]\n )\n\n React.useEffect(\n function () {\n // if we've deleted a token and our new count is less than\n // our current index, clear the index\n if (count <= (index || 0)) {\n clearToken()\n }\n },\n [count, index]\n )\n\n const groupedOptions = React.useMemo(() => {\n if (!optgroups || !optgroups.length) {\n return options\n }\n\n const optionsByGroup: Record<string, (OptionItem | GroupHeader)[]> =\n optgroups.reduce((acc, { id }) => {\n return {\n ...acc,\n [id]: [],\n }\n }, {})\n\n const orphanOptions = [] as OptionItem[]\n\n options.forEach((option) => {\n const groupId = getGroup(option)\n const groupOptions = optionsByGroup[groupId]\n\n if (!groupId || !groupOptions) {\n orphanOptions.push(option)\n return\n }\n\n optionsByGroup[groupId].push(option)\n })\n\n if (orphanOptions.length) {\n console.warn(\n `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.`,\n orphanOptions\n )\n }\n\n return optgroups\n .map((group: GroupItem) => {\n const groupOptions = optionsByGroup[group.id]\n\n if (!groupOptions.length) {\n return null\n }\n\n return { ...group, isGroupHeader: true, options: groupOptions }\n }, [])\n .filter(Boolean)\n }, [options, getGroup, optgroups])\n\n return {\n ids: valueIds,\n index,\n menuRef,\n options: groupedOptions,\n search,\n\n clearToken,\n decrementToken,\n incrementToken,\n onSearch,\n onSelect,\n removeToken,\n\n domHandlers: {\n onKeyDown,\n },\n }\n}\n\nexport const Option = React.forwardRef<HTMLDivElement, MultiSelectOptionProps>(\n function Option({ value, ...props }, ref) {\n return <MenuImperative.Item ref={ref} {...props} item={value} />\n }\n)\n\nfunction GroupedOptions({\n multiselect,\n groupHeaderRenderer,\n groupRenderer,\n optionRenderer,\n getId,\n getLabel,\n isOptionDisabled,\n qa,\n}: GroupedOptionsProps) {\n const renderOption = (option: OptionItem | GroupHeader): React.ReactNode => {\n if (option.isGroupHeader) {\n const groupHeader: GroupHeader = option\n if (groupHeaderRenderer) {\n return (\n <>\n {groupHeaderRenderer(groupHeader)}\n {groupHeader.options.map(renderOption)}\n </>\n )\n }\n return groupRenderer({\n ...groupHeader,\n children: groupHeader.options.map(renderOption),\n })\n }\n\n return optionRenderer(option, {\n getId,\n getLabel,\n // @ts-ignore\n // Object literal may only specify known properties, and 'key' does not exist in type 'OptionRendererProps'.\n key: getId(option),\n selected: multiselect.ids.has(getId(option)),\n disabled: isOptionDisabled(option),\n value: option,\n qa,\n })\n }\n return (\n <MenuImperative.Options>\n {multiselect.options.map(renderOption)}\n </MenuImperative.Options>\n )\n}\n\n/**\n\n Multi selects allow our users to choose one to many options from a list,\n presented in a dropdown. We typically see these selects on forms.\n\n Other select components are group select, select, and tiered select.\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_multiselect--basic)\n\n @see [Design Guidelines](https://design.procore.com/multi-select)\n\n */\nconst MultiSelect_ = React.forwardRef<HTMLDivElement, MultiSelectProps>(\n function MultiSelect(\n {\n afterHide = noop,\n afterShow = noop,\n beforeHide = returnTrue,\n beforeShow = returnTrue,\n block = false,\n disabled = false,\n emptyMessage,\n error = false,\n footer,\n getId = defaultGetId,\n getLabel = defaultGetLabel,\n getGroup = defaultGetGroup,\n loading = false,\n onChange = noop,\n onScrollBottom,\n onSearch,\n options = emptyArray,\n isOptionDisabled = defaultIsOptionDisabled,\n optionRenderer = defaultOptionRenderer,\n optgroups,\n groupHeaderRenderer,\n groupRenderer = defaultGroupRenderer,\n tokenRenderer = defaultTokenRenderer,\n placeholder,\n placement = 'bottom-left',\n value = emptyArray,\n tabIndex = 0,\n ['aria-labelledby']: ariaLabelledBy,\n ['aria-describedby']: ariaDescribedBy,\n qa = {},\n ...props\n },\n ref\n ) {\n const i18n = useI18nContext()\n const ownRef = React.useRef<HTMLDivElement>()\n const targetRef = (ref as React.RefObject<HTMLDivElement>) || ownRef\n\n const searchRef = React.useRef<HTMLInputElement>(null)\n const tokenRemoveRefs = React.useRef<Array<HTMLButtonElement | null>>([])\n const shouldTabToTokensRef = React.useRef(false)\n\n const menuRef = React.useRef<MenuRef | null>(null)\n const tokenListId = useId()\n const tokenBaseId = useId()\n const noneSelectedId = useId()\n const [isMenuOpen, setIsMenuOpen] = React.useState(false)\n const [isTokenTabbingActive, setIsTokenTabbingActive] =\n React.useState(false)\n const { menuNavigationTriggerProps, menuProps } =\n useMenuImperativeControlNavigation(menuRef, isMenuOpen)\n const {\n 'aria-controls': menuAriaControls,\n ...restMenuNavigationTriggerProps\n } = menuNavigationTriggerProps\n\n const I18n = useI18nContext()\n\n const multiselect = useMultiSelect({\n getId,\n getLabel,\n getGroup,\n menuRef,\n onSearch,\n options,\n onChange: function (value) {\n onChange(value)\n\n setFocusTo(searchRef)\n },\n value,\n optgroups,\n })\n\n const showClearIcon = value.length > 0 && !loading\n\n const isNavigatingTokens = multiselect.index !== null\n const activeTokenId = isNavigatingTokens\n ? `${tokenBaseId}-${multiselect.index}`\n : undefined\n\n const focusTokenRemove = React.useCallback((index: number) => {\n const tokenRemove = tokenRemoveRefs.current[index]\n if (tokenRemove) {\n tokenRemove.focus()\n }\n }, [])\n\n const onTokenRemoveKeyDown = React.useCallback(\n (tokenIndex: number, e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'Spacebar') {\n e.preventDefault()\n multiselect.removeToken(tokenIndex)\n return\n }\n\n if (e.key !== 'Tab') {\n return\n }\n\n const nextTokenIndex = tokenIndex + 1\n if (nextTokenIndex < value.length) {\n e.preventDefault()\n focusTokenRemove(nextTokenIndex)\n }\n },\n [focusTokenRemove, multiselect, value.length]\n )\n\n const overlay = (\n <StyledMultiSelectMenu shadowStrength={2}>\n <MenuImperative\n {...menuProps}\n ref={menuRef}\n onScrollBottom={onScrollBottom}\n onSelect={multiselect.onSelect}\n data-qa=\"multi-select-menu\"\n role=\"listbox\"\n >\n {multiselect.options.length ? (\n <GroupedOptions\n multiselect={multiselect}\n getId={getId}\n getLabel={getLabel}\n isOptionDisabled={isOptionDisabled}\n groupHeaderRenderer={groupHeaderRenderer}\n groupRenderer={groupRenderer}\n optionRenderer={optionRenderer}\n qa={qa}\n />\n ) : (\n <Box padding=\"md lg\">\n <Typography color=\"gray45\" intent=\"small\" italic>\n {emptyMessage || I18n.t('core.multiSelect.noResults')}\n </Typography>\n </Box>\n )}\n {footer && <MenuImperative.Footer>{footer}</MenuImperative.Footer>}\n </MenuImperative>\n </StyledMultiSelectMenu>\n )\n\n return (\n <OverlayTrigger\n canFlip={true}\n afterHide={() => {\n multiselect.clearToken()\n setIsMenuOpen(false)\n\n afterHide()\n }}\n afterShow={() => {\n multiselect.clearToken()\n\n menuRef.current?.highlightFirst()\n setIsMenuOpen(true)\n\n afterShow()\n }}\n beforeHide={(e) => {\n // if we are clicking somewhere in the target, set focus on the search\n if (e instanceof MouseEvent && isEventSource(targetRef, e)) {\n setFocusTo(searchRef)\n }\n\n return beforeHide(e)\n }}\n beforeShow={(e) => {\n setFocusTo(searchRef)\n\n return beforeShow(e)\n }}\n hideKeys={{\n overlay: overlayHideKeys,\n target: targetHideKeys,\n }}\n overlay={overlay}\n placement={placement}\n ref={targetRef}\n showKeys={targetShowKeys}\n trigger=\"click\"\n >\n {({ disable, enable, isVisible }) => {\n const ariaControls = isNavigatingTokens\n ? tokenListId\n : menuAriaControls\n\n return (\n <StyledMultiSelectButton\n $block={block}\n $error={error}\n $emptyValue={value.length === 0}\n $disabled={disabled}\n $loading={loading}\n $open={isVisible}\n onBlurCapture={(e: React.FocusEvent<HTMLDivElement>) => {\n if (\n !targetRef.current?.contains(e.relatedTarget as Node | null)\n ) {\n setIsTokenTabbingActive(false)\n }\n }}\n {...props}\n >\n {value.length === 0 && (\n <VisuallyHidden>\n <span id={noneSelectedId}>\n {I18n.t('core.multiSelect.noneSelected')}\n </span>\n </VisuallyHidden>\n )}\n <StyledMultiSelectInner>\n <StyledMultiSelectValues\n id={tokenListId}\n role=\"list\"\n aria-label={\n value.length > 0\n ? I18n.t('core.multiSelect.selectedItems')\n : I18n.t('core.multiSelect.noneSelected')\n }\n >\n {value.map((selection, i) => {\n const tokenId = `${tokenBaseId}-${i}`\n const tokenLabel = getLabel(selection)\n return (\n <StyledMultiSelectToken\n key={getId(selection)}\n id={tokenId}\n role=\"listitem\"\n aria-label={\n typeof tokenLabel === 'string'\n ? I18n.t('core.multiSelect.selectedToken', {\n tokenLabel,\n })\n : undefined\n }\n >\n {tokenRenderer({\n option: selection,\n focused: i === multiselect.index,\n disabled: disabled,\n getLabel,\n removeToken: function () {\n multiselect.removeToken(i)\n },\n tokenRemoveProps: {\n tabIndex: -1,\n onKeyDown: (e) => onTokenRemoveKeyDown(i, e),\n ref: (el) => {\n tokenRemoveRefs.current[i] = el\n },\n },\n qa,\n })}\n </StyledMultiSelectToken>\n )\n })}\n </StyledMultiSelectValues>\n\n <StyledMultiSelectSearch>\n <StyledMultiSelectSearchInput\n aria-activedescendant={activeTokenId}\n aria-controls={ariaControls}\n aria-describedby={\n [\n ariaDescribedBy,\n value.length === 0 ? noneSelectedId : undefined,\n ]\n .filter(Boolean)\n .join(' ') || undefined\n }\n aria-expanded={isVisible}\n aria-invalid={error || undefined}\n aria-labelledby={ariaLabelledBy}\n data-qa=\"core-multiselect-input\"\n role=\"combobox\"\n $isNavigatingTokens={isNavigatingTokens}\n disabled={disabled}\n onBlur={multiselect.clearToken}\n onFocus={(e: React.FocusEvent<HTMLInputElement>) => {\n setIsTokenTabbingActive(false)\n\n const focusCameFromInsideTarget = Boolean(\n e.relatedTarget &&\n targetRef.current?.contains(e.relatedTarget as Node)\n )\n\n if (!focusCameFromInsideTarget) {\n shouldTabToTokensRef.current = true\n }\n }}\n onChange={function (\n e: React.ChangeEvent<HTMLInputElement>\n ) {\n multiselect.onSearch(e)\n }}\n {...restMenuNavigationTriggerProps}\n onKeyDown={function (\n e: React.KeyboardEvent<HTMLInputElement>\n ) {\n if (isNavigatingTokens && e.key !== 'Tab') {\n // if we are navigating tokens don't do any input but allow Tab\n e.preventDefault()\n }\n\n if (isVisible) {\n // if the overlay is visible, close it and keep focus\n if (e.key === 'Tab') {\n e.preventDefault()\n\n disable(e)\n }\n // if open, don't notify parents (like Modal) but still let OverlayTrigger close it and keep it focus\n if (e.key === 'Esc' || e.key === 'Escape') {\n e.stopPropagation()\n disable(e)\n }\n // close dropdown when navigating tokens with arrow keys\n if (\n multiselect.search === '' &&\n (e.key === 'ArrowLeft' ||\n e.key === 'Left' ||\n e.key === 'ArrowRight' ||\n e.key === 'Right')\n ) {\n disable(e)\n }\n } else {\n if (\n e.key === 'Tab' &&\n value.length > 0 &&\n shouldTabToTokensRef.current\n ) {\n e.preventDefault()\n shouldTabToTokensRef.current = false\n setIsTokenTabbingActive(true)\n focusTokenRemove(0)\n return\n }\n\n // if we type in an alphanumeric character, show the overlay\n if (isAlphaNumeric(e.key)) {\n enable(e)\n }\n }\n\n multiselect.domHandlers.onKeyDown(e)\n }}\n placeholder={\n value?.length > 0\n ? ''\n : placeholder ?? I18n.t('core.multiSelect.selectValues')\n }\n ref={searchRef}\n tabIndex={isTokenTabbingActive ? -1 : tabIndex}\n value={multiselect.search}\n />\n </StyledMultiSelectSearch>\n </StyledMultiSelectInner>\n <StyledMultiSelectSearchIcon>\n <StyledMultiSelectClearIcon\n aria-label={i18n.t('core.multiSelect.clearAll')}\n data-close\n data-qa=\"core-multiselect-clear\"\n size=\"sm\"\n variant=\"tertiary\"\n disabled={disabled}\n icon={<Clear />}\n onClick={() => onChange([])}\n tabIndex={showClearIcon ? 0 : -1}\n $show={showClearIcon}\n />\n {loading ? (\n <Spinner color=\"blue50\" size=\"xs\" />\n ) : (\n <StyledMultiSelectArrowContainer\n data-qa=\"multiselect-select-arrow\"\n onClick={(e: React.MouseEvent) => isVisible && disable(e)}\n >\n <StyledMultiSelectArrow />\n </StyledMultiSelectArrowContainer>\n )}\n </StyledMultiSelectSearchIcon>\n </StyledMultiSelectButton>\n )\n }}\n </OverlayTrigger>\n )\n }\n)\n\nMultiSelect_.displayName = 'MultiSelect'\n\n/**\n * @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-multiselect--demo)\n * @see [Design Guidelines](https://design.procore.com/multi-select)\n */\nexport const MultiSelect = addSubcomponents(\n {\n Option,\n },\n MultiSelect_\n)\n"],"mappings":"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"}
@@ -8,34 +8,34 @@ import { getFocus } from '../_styles/mixins';
8
8
  import { spacing } from '../_styles/spacing';
9
9
  export var StyledMultiSelectInner = /*#__PURE__*/styled.div.withConfig({
10
10
  displayName: "StyledMultiSelectInner",
11
- componentId: "core-12_51_0__sc-s9ym9q-0"
11
+ componentId: "core-12_53_0__sc-s9ym9q-0"
12
12
  })(["display:flex;flex-wrap:wrap;margin-bottom:2px;margin-left:", "px;margin-right:", "px;margin-top:2px;min-width:0;width:100%;"], spacing.md, spacing.xs);
13
13
  export var StyledMultiSelectValues = /*#__PURE__*/styled.div.withConfig({
14
14
  displayName: "StyledMultiSelectValues",
15
- componentId: "core-12_51_0__sc-s9ym9q-1"
15
+ componentId: "core-12_53_0__sc-s9ym9q-1"
16
16
  })(["display:contents;"]);
17
17
  export var StyledMultiSelectToken = /*#__PURE__*/styled.div.withConfig({
18
18
  displayName: "StyledMultiSelectToken",
19
- componentId: "core-12_51_0__sc-s9ym9q-2"
19
+ componentId: "core-12_53_0__sc-s9ym9q-2"
20
20
  })(["margin-bottom:2px;margin-right:", "px;margin-top:2px;flex:0 1 auto;> div{max-width:178px;width:100%;}"], spacing.xs);
21
21
  export var StyledMultiSelectSearchInput = /*#__PURE__*/styled.input.withConfig({
22
22
  displayName: "StyledMultiSelectSearchInput",
23
- componentId: "core-12_51_0__sc-s9ym9q-3"
23
+ componentId: "core-12_53_0__sc-s9ym9q-3"
24
24
  })(["background-color:transparent;border-width:0;font-family:inherit;padding:0;height:24px;width:100%;", " ", " &::-ms-clear{display:none;}&:focus{box-shadow:none;outline:none;}&::placeholder{color:", ";}"], getTypographyIntent('body'), function (_ref) {
25
25
  var $isNavigatingTokens = _ref.$isNavigatingTokens;
26
26
  return $isNavigatingTokens && css(["color:transparent;"]);
27
27
  }, colors.gray45);
28
28
  export var StyledMultiSelectSearch = /*#__PURE__*/styled.div.withConfig({
29
29
  displayName: "StyledMultiSelectSearch",
30
- componentId: "core-12_51_0__sc-s9ym9q-4"
30
+ componentId: "core-12_53_0__sc-s9ym9q-4"
31
31
  })(["margin-bottom:2px;margin-right:", "px;margin-top:2px;flex:1;max-width:100%;min-width:24px;"], spacing.xs);
32
32
  export var StyledMultiSelectSearchIcon = /*#__PURE__*/styled.div.withConfig({
33
33
  displayName: "StyledMultiSelectSearchIcon",
34
- componentId: "core-12_51_0__sc-s9ym9q-5"
34
+ componentId: "core-12_53_0__sc-s9ym9q-5"
35
35
  })(["align-items:center;align-self:flex-start;display:flex;height:34px;justify-content:flex-end;margin-left:", "px;margin-right:", "px;min-width:40px;width:40px;"], spacing.xs, spacing.md);
36
36
  export var StyledMultiSelectClearIcon = /*#__PURE__*/styled(Button).withConfig({
37
37
  displayName: "StyledMultiSelectClearIcon",
38
- componentId: "core-12_51_0__sc-s9ym9q-6"
38
+ componentId: "core-12_53_0__sc-s9ym9q-6"
39
39
  })(["", " ", "{pointer-events:none;}"], function (_ref2) {
40
40
  var $show = _ref2.$show;
41
41
  return css(["opacity:", ";"], $show ? 1 : 0);
@@ -45,7 +45,7 @@ export var StyledMultiSelectArrow = StyledSelectArrow;
45
45
  export var StyledMultiSelectMenu = StyledSelectMenu;
46
46
  export var StyledMultiSelectButton = /*#__PURE__*/styled(StyledSelectButton).withConfig({
47
47
  displayName: "StyledMultiSelectButton",
48
- componentId: "core-12_51_0__sc-s9ym9q-7"
48
+ componentId: "core-12_53_0__sc-s9ym9q-7"
49
49
  })(["height:auto;padding:0;white-space:normal;&:focus-within{", "}", ""], getFocus(), function (_ref3) {
50
50
  var $emptyValue = _ref3.$emptyValue;
51
51
  return $emptyValue && css(["", "{cursor:pointer;}"], StyledMultiSelectSearchInput);
@@ -239,6 +239,15 @@ export interface MultiSelectTokenRendererProps {
239
239
  * @since 10.19.0
240
240
  */
241
241
  qa: QaTags;
242
+ /**
243
+ * Props applied to the token remove control.
244
+ * @since 12.80.0
245
+ */
246
+ tokenRemoveProps?: {
247
+ tabIndex?: number;
248
+ onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;
249
+ ref?: React.Ref<HTMLButtonElement>;
250
+ };
242
251
  }
243
252
  export interface MultiSelectProps {
244
253
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.types.js","names":[],"sources":["../../src/MultiSelect/MultiSelect.types.ts"],"sourcesContent":["import type { DropdownPlacement } from '../Dropdown/Dropdown.types'\nimport type {\n MenuProps,\n MenuRef,\n Selection,\n} from '../MenuImperative/MenuImperative.types'\nimport type { OverlayTriggerProps } from '../OverlayTrigger'\n\nexport type ChangeEvent = React.ChangeEvent<HTMLInputElement>\n\nexport type OptionItem = any\n\nexport interface MultiSelectOptionProps {\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 selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * @since 10.19.0\n */\n value: OptionItem\n}\n\nexport interface MultiSelectOptionRendererProps extends MultiSelectOptionProps {\n /**\n * @since 10.19.0\n */\n getId: MultiSelectConfig['getId']\n\n /**\n * @since 10.19.0\n */\n getLabel: MultiSelectConfig['getLabel']\n /**\n * @since 10.19.0\n */\n qa: QaTags\n}\n\nexport interface GroupItem {\n /**\n * @since 10.19.0\n */\n id: string\n /**\n * @since 10.19.0\n */\n label: string\n}\n\nexport interface GroupHeader extends GroupItem {\n /**\n * @since 10.19.0\n */\n isGroupHeader: boolean\n\n /**\n * @since 12.39.0\n */\n options: OptionItem[]\n}\n\nexport interface GroupHeaderProps extends GroupItem {\n /**\n * @since 12.39.0\n */\n children?: React.ReactNode\n}\n\nexport interface MultiSelectConfig {\n /**\n * @since 10.19.0\n */\n getGroup: (option: OptionItem) => number | string\n /**\n * @since 10.19.0\n */\n getId: (option: OptionItem) => number | string\n /**\n * @since 10.19.0\n */\n getLabel: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n menuRef: React.RefObject<MenuRef>\n /**\n * @since 10.19.0\n */\n onChange?: (value: OptionItem[], event?: Event) => void\n /**\n * @since 10.19.0\n */\n onSearch?: (e: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: (selection: Selection) => void\n /**\n * @since 10.19.0\n */\n optgroups?: GroupItem[]\n /**\n * @since 10.19.0\n */\n options: OptionItem[]\n /**\n * @since 10.19.0\n */\n value: OptionItem[]\n}\n\nexport interface MultiSelectHook {\n /**\n * @since 10.19.0\n */\n ids: Set<number | string>\n /**\n * @since 10.19.0\n */\n index: number | null\n /**\n * @since 10.19.0\n */\n menuRef: React.RefObject<MenuRef>\n /**\n * @since 10.19.0\n */\n options: (OptionItem | GroupHeader)[]\n /**\n * @since 10.19.0\n */\n search: string\n /**\n * @since 10.19.0\n */\n clearToken: () => void\n /**\n * @since 10.19.0\n */\n decrementToken: () => void\n /**\n * @since 10.19.0\n */\n incrementToken: () => void\n /**\n * @since 10.19.0\n */\n onSearch: (e: React.ChangeEvent<HTMLInputElement>) => void\n /**\n * @since 10.19.0\n */\n onSelect: (selection: Selection) => void\n /**\n * @since 10.19.0\n */\n removeToken: (index: number) => void\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void\n }\n}\n\nexport interface GroupedOptionsProps {\n /**\n * @since 10.19.0\n */\n multiselect: MultiSelectHook\n /**\n * @since 10.19.0\n * @deprecated The `groupHeaderRenderer` prop is deprecated and will be removed in a future version. Use `groupRenderer` instead to customize the entire group rendering, including the header.\n * @deprecatedSince 12.39.0\n */\n groupHeaderRenderer?: (group: GroupItem) => React.ReactNode\n /**\n * @since 12.39.0\n */\n groupRenderer: (group: GroupHeaderProps) => React.ReactNode\n /**\n * @since 10.19.0\n */\n optionRenderer: (\n option: OptionItem,\n props: MultiSelectOptionRendererProps\n ) => React.ReactNode\n /**\n * @since 10.19.0\n */\n getId: MultiSelectConfig['getId']\n /**\n * @since 10.19.0\n */\n getLabel: MultiSelectConfig['getLabel']\n /**\n * @since 10.19.0\n */\n isOptionDisabled: (option: OptionItem) => boolean\n /**\n * @since 10.19.0\n */\n qa: QaTags\n}\n\nexport interface QaTags {\n /**\n * @since 10.19.0\n */\n option?: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n token?: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n tokenClear?: (option: OptionItem) => string\n}\n\nexport interface MultiSelectTokenRendererProps {\n /**\n * @since 10.19.0\n */\n focused: boolean\n /**\n * @since 10.19.0\n */\n disabled: boolean\n /**\n * @since 10.19.0\n */\n option: OptionItem\n /**\n * @since 10.19.0\n */\n removeToken: () => void\n /**\n * @since 10.19.0\n */\n getLabel: (opt: OptionItem) => React.ReactNode\n /**\n * @since 10.19.0\n */\n qa: QaTags\n}\n\nexport interface MultiSelectProps {\n /**\n * @since 10.19.0\n */\n afterHide?: OverlayTriggerProps['afterHide']\n /**\n * @since 10.19.0\n */\n afterShow?: OverlayTriggerProps['afterShow']\n /**\n * @since 10.19.0\n */\n beforeHide?: OverlayTriggerProps['beforeHide']\n /**\n * @since 10.19.0\n */\n beforeShow?: OverlayTriggerProps['beforeShow']\n\n /**\n * Callback for each entry in `options` to define relation to group in `groups`\n * ```\n * (option: OptionItem) => React.ReactNode\n * ```\n * @since 10.19.0\n */\n getGroup?: MultiSelectConfig['getGroup']\n\n /**\n * Callback for each entry in `options` for keying and optimizations\n * ```\n * (option: OptionItem) => number | string\n * ```\n * @since 10.19.0\n */\n getId?: MultiSelectConfig['getId']\n\n /**\n * Callback for each entry in `options` to generate the token label.\n * ```\n * (option: OptionItem) => string\n * ```\n * @since 10.19.0\n */\n getLabel?: MultiSelectConfig['getLabel']\n\n /**\n * Callback for when a user types into the multiselect input\n * ```\n * (event: KeyboardEvent) => void\n * ```\n * @since 10.19.0\n */\n onSearch?: MultiSelectConfig['onSearch']\n\n /**\n * Array of available option groups\n */\n optgroups?: MultiSelectConfig['optgroups']\n\n /**\n * Array of available options\n * @since 10.19.0\n */\n options?: MultiSelectConfig['options']\n\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuProps['onScrollBottom']\n\n /**\n * @since 10.19.0\n */\n block?: boolean\n\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * @since 10.19.0\n */\n isOptionDisabled?: (option: OptionItem) => boolean\n /**\n * @since 10.19.0\n */\n emptyMessage?: string\n /**\n * @since 10.19.0\n */\n error?: boolean\n /**\n * Callback for rendering header for each entry in `groups`\n * ```\n * (group: GroupItem) => React.ReactNode\n * ```\n * @since 10.19.0\n * @deprecated The `groupHeaderRenderer` prop is deprecated and will be removed in a future version. Use `groupRenderer` instead to customize the entire group rendering, including the header.\n * @deprecatedSince 12.39.0\n */\n groupHeaderRenderer?: (group: GroupItem) => React.ReactNode\n /**\n * Callback for rendering header for each entry in `groups`\n * ```\n * (group: GroupHeader) => React.ReactNode\n * ```\n * @since 12.39.0\n */\n groupRenderer?: (group: GroupHeaderProps) => React.ReactNode\n /**\n * @since 10.19.0\n */\n loading?: boolean\n /**\n * @since 10.19.0\n */\n onBlur?: React.SelectHTMLAttributes<HTMLDivElement>['onBlur']\n /**\n * @since 10.19.0\n */\n onChange?: (value: OptionItem[], event?: Event) => void\n /**\n * @since 10.19.0\n */\n onFocus?: React.SelectHTMLAttributes<HTMLDivElement>['onFocus']\n /**\n * @since 10.19.0\n */\n optionRenderer?: (\n option: OptionItem,\n props?: MultiSelectOptionRendererProps\n ) => React.ReactNode\n /**\n * @since 10.19.0\n */\n placeholder?: string\n /**\n * @since 10.19.0\n */\n placement?: DropdownPlacement\n /**\n * @since 10.19.0\n */\n qa?: QaTags\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n /**\n * Callback for rendering each selected value\n * ```\n * (props: TokenRendererProps) => React.ReactNode\n * ```\n * @since 10.19.0\n */\n tokenRenderer?: (props: MultiSelectTokenRendererProps) => React.ReactNode\n\n /**\n * Array of the currently selected values\n * @since 10.19.0\n */\n value?: OptionItem[]\n\n /**\n * @since 10.29.0\n */\n footer?: React.ReactNode\n\n /**\n * @since 11.4.0\n */\n ['aria-labelledby']?: string\n\n /**\n * @since 12.35.1\n */\n ['aria-describedby']?: string\n}\n"],"mappings":""}
1
+ {"version":3,"file":"MultiSelect.types.js","names":[],"sources":["../../src/MultiSelect/MultiSelect.types.ts"],"sourcesContent":["import type { DropdownPlacement } from '../Dropdown/Dropdown.types'\nimport type {\n MenuProps,\n MenuRef,\n Selection,\n} from '../MenuImperative/MenuImperative.types'\nimport type { OverlayTriggerProps } from '../OverlayTrigger'\n\nexport type ChangeEvent = React.ChangeEvent<HTMLInputElement>\n\nexport type OptionItem = any\n\nexport interface MultiSelectOptionProps {\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 selected?: boolean\n /**\n * @since 10.19.0\n */\n suggested?: boolean\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * @since 10.19.0\n */\n value: OptionItem\n}\n\nexport interface MultiSelectOptionRendererProps extends MultiSelectOptionProps {\n /**\n * @since 10.19.0\n */\n getId: MultiSelectConfig['getId']\n\n /**\n * @since 10.19.0\n */\n getLabel: MultiSelectConfig['getLabel']\n /**\n * @since 10.19.0\n */\n qa: QaTags\n}\n\nexport interface GroupItem {\n /**\n * @since 10.19.0\n */\n id: string\n /**\n * @since 10.19.0\n */\n label: string\n}\n\nexport interface GroupHeader extends GroupItem {\n /**\n * @since 10.19.0\n */\n isGroupHeader: boolean\n\n /**\n * @since 12.39.0\n */\n options: OptionItem[]\n}\n\nexport interface GroupHeaderProps extends GroupItem {\n /**\n * @since 12.39.0\n */\n children?: React.ReactNode\n}\n\nexport interface MultiSelectConfig {\n /**\n * @since 10.19.0\n */\n getGroup: (option: OptionItem) => number | string\n /**\n * @since 10.19.0\n */\n getId: (option: OptionItem) => number | string\n /**\n * @since 10.19.0\n */\n getLabel: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n menuRef: React.RefObject<MenuRef>\n /**\n * @since 10.19.0\n */\n onChange?: (value: OptionItem[], event?: Event) => void\n /**\n * @since 10.19.0\n */\n onSearch?: (e: ChangeEvent) => void\n /**\n * @since 10.19.0\n */\n onSelect?: (selection: Selection) => void\n /**\n * @since 10.19.0\n */\n optgroups?: GroupItem[]\n /**\n * @since 10.19.0\n */\n options: OptionItem[]\n /**\n * @since 10.19.0\n */\n value: OptionItem[]\n}\n\nexport interface MultiSelectHook {\n /**\n * @since 10.19.0\n */\n ids: Set<number | string>\n /**\n * @since 10.19.0\n */\n index: number | null\n /**\n * @since 10.19.0\n */\n menuRef: React.RefObject<MenuRef>\n /**\n * @since 10.19.0\n */\n options: (OptionItem | GroupHeader)[]\n /**\n * @since 10.19.0\n */\n search: string\n /**\n * @since 10.19.0\n */\n clearToken: () => void\n /**\n * @since 10.19.0\n */\n decrementToken: () => void\n /**\n * @since 10.19.0\n */\n incrementToken: () => void\n /**\n * @since 10.19.0\n */\n onSearch: (e: React.ChangeEvent<HTMLInputElement>) => void\n /**\n * @since 10.19.0\n */\n onSelect: (selection: Selection) => void\n /**\n * @since 10.19.0\n */\n removeToken: (index: number) => void\n /**\n * @since 10.19.0\n */\n domHandlers: {\n onKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void\n }\n}\n\nexport interface GroupedOptionsProps {\n /**\n * @since 10.19.0\n */\n multiselect: MultiSelectHook\n /**\n * @since 10.19.0\n * @deprecated The `groupHeaderRenderer` prop is deprecated and will be removed in a future version. Use `groupRenderer` instead to customize the entire group rendering, including the header.\n * @deprecatedSince 12.39.0\n */\n groupHeaderRenderer?: (group: GroupItem) => React.ReactNode\n /**\n * @since 12.39.0\n */\n groupRenderer: (group: GroupHeaderProps) => React.ReactNode\n /**\n * @since 10.19.0\n */\n optionRenderer: (\n option: OptionItem,\n props: MultiSelectOptionRendererProps\n ) => React.ReactNode\n /**\n * @since 10.19.0\n */\n getId: MultiSelectConfig['getId']\n /**\n * @since 10.19.0\n */\n getLabel: MultiSelectConfig['getLabel']\n /**\n * @since 10.19.0\n */\n isOptionDisabled: (option: OptionItem) => boolean\n /**\n * @since 10.19.0\n */\n qa: QaTags\n}\n\nexport interface QaTags {\n /**\n * @since 10.19.0\n */\n option?: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n token?: (option: OptionItem) => string\n /**\n * @since 10.19.0\n */\n tokenClear?: (option: OptionItem) => string\n}\n\nexport interface MultiSelectTokenRendererProps {\n /**\n * @since 10.19.0\n */\n focused: boolean\n /**\n * @since 10.19.0\n */\n disabled: boolean\n /**\n * @since 10.19.0\n */\n option: OptionItem\n /**\n * @since 10.19.0\n */\n removeToken: () => void\n /**\n * @since 10.19.0\n */\n getLabel: (opt: OptionItem) => React.ReactNode\n /**\n * @since 10.19.0\n */\n qa: QaTags\n /**\n * Props applied to the token remove control.\n * @since 12.80.0\n */\n tokenRemoveProps?: {\n tabIndex?: number\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>\n ref?: React.Ref<HTMLButtonElement>\n }\n}\n\nexport interface MultiSelectProps {\n /**\n * @since 10.19.0\n */\n afterHide?: OverlayTriggerProps['afterHide']\n /**\n * @since 10.19.0\n */\n afterShow?: OverlayTriggerProps['afterShow']\n /**\n * @since 10.19.0\n */\n beforeHide?: OverlayTriggerProps['beforeHide']\n /**\n * @since 10.19.0\n */\n beforeShow?: OverlayTriggerProps['beforeShow']\n\n /**\n * Callback for each entry in `options` to define relation to group in `groups`\n * ```\n * (option: OptionItem) => React.ReactNode\n * ```\n * @since 10.19.0\n */\n getGroup?: MultiSelectConfig['getGroup']\n\n /**\n * Callback for each entry in `options` for keying and optimizations\n * ```\n * (option: OptionItem) => number | string\n * ```\n * @since 10.19.0\n */\n getId?: MultiSelectConfig['getId']\n\n /**\n * Callback for each entry in `options` to generate the token label.\n * ```\n * (option: OptionItem) => string\n * ```\n * @since 10.19.0\n */\n getLabel?: MultiSelectConfig['getLabel']\n\n /**\n * Callback for when a user types into the multiselect input\n * ```\n * (event: KeyboardEvent) => void\n * ```\n * @since 10.19.0\n */\n onSearch?: MultiSelectConfig['onSearch']\n\n /**\n * Array of available option groups\n */\n optgroups?: MultiSelectConfig['optgroups']\n\n /**\n * Array of available options\n * @since 10.19.0\n */\n options?: MultiSelectConfig['options']\n\n /**\n * @since 10.19.0\n */\n onScrollBottom?: MenuProps['onScrollBottom']\n\n /**\n * @since 10.19.0\n */\n block?: boolean\n\n /**\n * @since 10.19.0\n */\n className?: string\n /**\n * @since 10.19.0\n */\n disabled?: boolean\n /**\n * @since 10.19.0\n */\n isOptionDisabled?: (option: OptionItem) => boolean\n /**\n * @since 10.19.0\n */\n emptyMessage?: string\n /**\n * @since 10.19.0\n */\n error?: boolean\n /**\n * Callback for rendering header for each entry in `groups`\n * ```\n * (group: GroupItem) => React.ReactNode\n * ```\n * @since 10.19.0\n * @deprecated The `groupHeaderRenderer` prop is deprecated and will be removed in a future version. Use `groupRenderer` instead to customize the entire group rendering, including the header.\n * @deprecatedSince 12.39.0\n */\n groupHeaderRenderer?: (group: GroupItem) => React.ReactNode\n /**\n * Callback for rendering header for each entry in `groups`\n * ```\n * (group: GroupHeader) => React.ReactNode\n * ```\n * @since 12.39.0\n */\n groupRenderer?: (group: GroupHeaderProps) => React.ReactNode\n /**\n * @since 10.19.0\n */\n loading?: boolean\n /**\n * @since 10.19.0\n */\n onBlur?: React.SelectHTMLAttributes<HTMLDivElement>['onBlur']\n /**\n * @since 10.19.0\n */\n onChange?: (value: OptionItem[], event?: Event) => void\n /**\n * @since 10.19.0\n */\n onFocus?: React.SelectHTMLAttributes<HTMLDivElement>['onFocus']\n /**\n * @since 10.19.0\n */\n optionRenderer?: (\n option: OptionItem,\n props?: MultiSelectOptionRendererProps\n ) => React.ReactNode\n /**\n * @since 10.19.0\n */\n placeholder?: string\n /**\n * @since 10.19.0\n */\n placement?: DropdownPlacement\n /**\n * @since 10.19.0\n */\n qa?: QaTags\n /**\n * @since 10.19.0\n */\n tabIndex?: number\n /**\n * Callback for rendering each selected value\n * ```\n * (props: TokenRendererProps) => React.ReactNode\n * ```\n * @since 10.19.0\n */\n tokenRenderer?: (props: MultiSelectTokenRendererProps) => React.ReactNode\n\n /**\n * Array of the currently selected values\n * @since 10.19.0\n */\n value?: OptionItem[]\n\n /**\n * @since 10.29.0\n */\n footer?: React.ReactNode\n\n /**\n * @since 11.4.0\n */\n ['aria-labelledby']?: string\n\n /**\n * @since 12.35.1\n */\n ['aria-describedby']?: string\n}\n"],"mappings":""}
@@ -6,14 +6,14 @@ export var optionMinHeight = 32;
6
6
  export var defaultMenuHeight = 64;
7
7
  export var StyledOptions = /*#__PURE__*/styled.div.withConfig({
8
8
  displayName: "StyledOptions",
9
- componentId: "core-12_51_0__sc-3o6zya-0"
9
+ componentId: "core-12_53_0__sc-3o6zya-0"
10
10
  })([""]);
11
11
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
12
12
  displayName: "StyledItem",
13
- componentId: "core-12_51_0__sc-3o6zya-1"
13
+ componentId: "core-12_53_0__sc-3o6zya-1"
14
14
  })(["", ";padding:", "px ", "px;cursor:pointer;list-style-type:none;"], getTypographyIntent('body'), spacing.xs, spacing.md);
15
15
  export var StyledGroup = /*#__PURE__*/styled.div.withConfig({
16
16
  displayName: "StyledGroup",
17
- componentId: "core-12_51_0__sc-3o6zya-2"
17
+ componentId: "core-12_53_0__sc-3o6zya-2"
18
18
  })(["", ";padding:", "px ", "px ", "px;font-weight:", ";background:white;list-style-type:none;"], getTypographyIntent('body'), spacing.md, spacing.md, spacing.xs, typographyWeights.semibold);
19
19
  //# sourceMappingURL=NextMenu.styles.js.map