@procore/core-react 12.53.3 → 12.54.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 (313) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.js +2 -0
  5. package/dist/AvatarStack/AvatarStack.js.map +1 -1
  6. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  7. package/dist/Badge/Badge.styles.js +2 -2
  8. package/dist/BadgePill/BadgePill.styles.js +4 -4
  9. package/dist/Banner/Banner.d.ts +1 -0
  10. package/dist/Banner/Banner.js +31 -14
  11. package/dist/Banner/Banner.js.map +1 -1
  12. package/dist/Banner/Banner.styles.d.ts +10 -0
  13. package/dist/Banner/Banner.styles.js +29 -12
  14. package/dist/Banner/Banner.styles.js.map +1 -1
  15. package/dist/Banner/Banner.types.d.ts +1 -1
  16. package/dist/Banner/Banner.types.js.map +1 -1
  17. package/dist/Banner/index.d.ts +1 -1
  18. package/dist/Banner/index.js +1 -1
  19. package/dist/Banner/index.js.map +1 -1
  20. package/dist/Box/Box.styles.js +1 -1
  21. package/dist/Breadcrumbs/Breadcrumbs.styles.js +7 -6
  22. package/dist/Breadcrumbs/Breadcrumbs.styles.js.map +1 -1
  23. package/dist/Button/Button.styles.js +5 -5
  24. package/dist/Calendar/Calendar.js +97 -10
  25. package/dist/Calendar/Calendar.js.map +1 -1
  26. package/dist/Calendar/Calendar.styles.d.ts +3 -0
  27. package/dist/Calendar/Calendar.styles.js +13 -9
  28. package/dist/Calendar/Calendar.styles.js.map +1 -1
  29. package/dist/Calendar/Calendar.types.js.map +1 -1
  30. package/dist/Card/Card.styles.js +1 -1
  31. package/dist/Checkbox/Checkbox.styles.js +6 -6
  32. package/dist/ContactItem/ContactItem.styles.js +5 -5
  33. package/dist/Content/Content.styles.js +2 -2
  34. package/dist/DateInput/DateInput.js +1 -1
  35. package/dist/DateInput/DateInput.js.map +1 -1
  36. package/dist/DateInput/DateInput.styles.js +8 -8
  37. package/dist/DateInput/DateInput.styles.js.map +1 -1
  38. package/dist/DateSelect/DateSelect.js +60 -29
  39. package/dist/DateSelect/DateSelect.js.map +1 -1
  40. package/dist/DateSelect/DateSelect.types.d.ts +2 -2
  41. package/dist/DateSelect/DateSelect.types.js.map +1 -1
  42. package/dist/DetailPage/DetailPage.styles.js +11 -9
  43. package/dist/DetailPage/DetailPage.styles.js.map +1 -1
  44. package/dist/Dropdown/Dropdown.styles.js +3 -3
  45. package/dist/DropdownFlyout/DropdownFlyout.js +8 -0
  46. package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
  47. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  48. package/dist/Dropzone/Dropzone.js +1 -1
  49. package/dist/Dropzone/Dropzone.styles.js +9 -9
  50. package/dist/EmptyState/EmptyState.styles.js +6 -6
  51. package/dist/Field/Field.styles.js +3 -3
  52. package/dist/FileList/FileList.styles.js +3 -3
  53. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +17 -14
  54. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js.map +1 -1
  55. package/dist/FileSelect/FileExplorer/FileExplorerModal.js +4 -2
  56. package/dist/FileSelect/FileExplorer/FileExplorerModal.js.map +1 -1
  57. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +5 -4
  58. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js.map +1 -1
  59. package/dist/FileSelect/FileSelect.styles.js +2 -2
  60. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  61. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  62. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  63. package/dist/FileSelect/LocalSource/LocalSource.styles.js +6 -5
  64. package/dist/FileSelect/LocalSource/LocalSource.styles.js.map +1 -1
  65. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  66. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +13 -11
  67. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js.map +1 -1
  68. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  69. package/dist/FileToken/FileToken.styles.js +6 -6
  70. package/dist/FilterToken/FilterToken.styles.js +5 -5
  71. package/dist/FlexList/FlexList.styles.js +1 -1
  72. package/dist/Form/Form.js +5 -0
  73. package/dist/Form/Form.js.map +1 -1
  74. package/dist/Form/Form.styles.js +13 -13
  75. package/dist/Form/StyledFormikForm.styles.js +2 -2
  76. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  77. package/dist/Grid/Grid.styles.js +2 -2
  78. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  79. package/dist/Input/Input.styles.js +1 -1
  80. package/dist/Link/Link.styles.js +1 -1
  81. package/dist/ListPage/ListPage.styles.js +12 -11
  82. package/dist/ListPage/ListPage.styles.js.map +1 -1
  83. package/dist/Loader/Loader.styles.js +2 -2
  84. package/dist/MenuImperative/MenuImperative.styles.js +11 -11
  85. package/dist/Modal/Modal.js +0 -2
  86. package/dist/Modal/Modal.js.map +1 -1
  87. package/dist/Modal/Modal.styles.js +44 -32
  88. package/dist/Modal/Modal.styles.js.map +1 -1
  89. package/dist/MultiSelect/MultiSelect.js +3 -1
  90. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  91. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  92. package/dist/MultiSelect/MultiSelect.types.d.ts +5 -0
  93. package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
  94. package/dist/NextMenu/NextMenu.styles.js +3 -3
  95. package/dist/NextTile/NextTile.styles.js +5 -5
  96. package/dist/Notation/Notation.js +1 -1
  97. package/dist/NumberInput/NumberInput.styles.js +7 -7
  98. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  99. package/dist/OverlayTrigger/OverlayTrigger.js +12 -3
  100. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  101. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +14 -0
  102. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  103. package/dist/OverlayTrigger/a11yPresets.d.ts +19 -3
  104. package/dist/OverlayTrigger/a11yPresets.js +16 -6
  105. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  106. package/dist/PageLayout/PageLayout.js +15 -4
  107. package/dist/PageLayout/PageLayout.js.map +1 -1
  108. package/dist/PageLayout/PageLayout.styles.js +35 -34
  109. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  110. package/dist/PageLayout/PageLayout.types.d.ts +1 -0
  111. package/dist/PageLayout/PageLayout.types.js.map +1 -1
  112. package/dist/PageLayout/PageLayout.utils.d.ts +11 -0
  113. package/dist/PageLayout/PageLayout.utils.js +45 -0
  114. package/dist/PageLayout/PageLayout.utils.js.map +1 -1
  115. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js +2 -2
  116. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js.map +1 -1
  117. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.d.ts +5 -0
  118. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +9 -2
  119. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js.map +1 -1
  120. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  121. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  122. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  123. package/dist/Pagination/Pagination.styles.js +5 -5
  124. package/dist/Panel/Panel.styles.js +17 -16
  125. package/dist/Panel/Panel.styles.js.map +1 -1
  126. package/dist/Pill/Pill.styles.js +3 -3
  127. package/dist/PillSelect/PillSelect.styles.js +5 -5
  128. package/dist/Popover/Popover.js +6 -1
  129. package/dist/Popover/Popover.js.map +1 -1
  130. package/dist/Popover/Popover.styles.js +2 -2
  131. package/dist/Portal/Portal.styles.js +1 -1
  132. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  133. package/dist/RadioButton/RadioButton.styles.js +3 -3
  134. package/dist/Required/Required.styles.js +3 -3
  135. package/dist/Search/Search.styles.js +5 -5
  136. package/dist/Section/Section.js +0 -1
  137. package/dist/Section/Section.js.map +1 -1
  138. package/dist/Section/Section.styles.js +7 -7
  139. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  140. package/dist/Select/Select.js +5 -2
  141. package/dist/Select/Select.js.map +1 -1
  142. package/dist/Select/Select.styles.js +8 -8
  143. package/dist/Semantic/Semantic.styles.js +9 -9
  144. package/dist/Slider/Slider.styles.js +5 -5
  145. package/dist/Spinner/Spinner.styles.js +7 -7
  146. package/dist/SplitViewCard/SplitViewCard.styles.js +15 -13
  147. package/dist/SplitViewCard/SplitViewCard.styles.js.map +1 -1
  148. package/dist/SuperSelect/SuperSelect.js +8 -0
  149. package/dist/SuperSelect/SuperSelect.js.map +1 -1
  150. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  151. package/dist/SuperSelect/SuperSelect.styles.js +40 -40
  152. package/dist/SuperSelect/SuperSelect.types.d.ts +7 -0
  153. package/dist/SuperSelect/SuperSelect.types.js.map +1 -1
  154. package/dist/SuperSelect/useSuperSelect.d.ts +1 -1
  155. package/dist/SuperSelect/useSuperSelect.js +27 -6
  156. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  157. package/dist/Switch/Switch.styles.js +4 -4
  158. package/dist/Table/Table.js +63 -2
  159. package/dist/Table/Table.js.map +1 -1
  160. package/dist/Table/Table.styles.js +31 -30
  161. package/dist/Table/Table.styles.js.map +1 -1
  162. package/dist/TableShelf/TableShelf.styles.js +5 -5
  163. package/dist/Tabs/Tabs.js +11 -3
  164. package/dist/Tabs/Tabs.js.map +1 -1
  165. package/dist/Tabs/Tabs.styles.js +16 -16
  166. package/dist/Tearsheet/Tearsheet.js +59 -34
  167. package/dist/Tearsheet/Tearsheet.js.map +1 -1
  168. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  169. package/dist/TextArea/TextArea.styles.js +1 -1
  170. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  171. package/dist/Thumbnail/Thumbnail.styles.d.ts +1 -0
  172. package/dist/Thumbnail/Thumbnail.styles.js +22 -22
  173. package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
  174. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  175. package/dist/TieredSelect/LeafSelectionTieredSelect.js +3 -1
  176. package/dist/TieredSelect/LeafSelectionTieredSelect.js.map +1 -1
  177. package/dist/TieredSelect/TierSelectionTieredSelect.js +3 -1
  178. package/dist/TieredSelect/TierSelectionTieredSelect.js.map +1 -1
  179. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  180. package/dist/Tile/Tile.styles.js +8 -8
  181. package/dist/Title/Title.styles.js +11 -9
  182. package/dist/Title/Title.styles.js.map +1 -1
  183. package/dist/Toast/Toast.styles.js +3 -3
  184. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  185. package/dist/Token/Token.styles.js +5 -5
  186. package/dist/ToolHeader/ToolHeader.styles.js +15 -10
  187. package/dist/ToolHeader/ToolHeader.styles.js.map +1 -1
  188. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  189. package/dist/Tooltip/Tooltip.js +7 -1
  190. package/dist/Tooltip/Tooltip.js.map +1 -1
  191. package/dist/Tooltip/Tooltip.styles.js +3 -3
  192. package/dist/Tree/Tree.js +1 -1
  193. package/dist/Tree/Tree.styles.js +10 -10
  194. package/dist/Typeahead/Typeahead.styles.js +4 -4
  195. package/dist/Typography/Typography.styles.js +1 -1
  196. package/dist/Typography/Typography.table.story.js +2 -2
  197. package/dist/_hooks/I18n.d.ts +33 -13
  198. package/dist/_hooks/I18n.js +2 -0
  199. package/dist/_hooks/I18n.js.map +1 -1
  200. package/dist/_locales/de-DE.json +1 -0
  201. package/dist/_locales/en-AU.json +1 -0
  202. package/dist/_locales/en-CA.json +1 -0
  203. package/dist/_locales/en-GB.json +1 -0
  204. package/dist/_locales/en.json +3 -1
  205. package/dist/_locales/es-ES.json +1 -0
  206. package/dist/_locales/es.json +1 -0
  207. package/dist/_locales/fr-CA.json +1 -0
  208. package/dist/_locales/fr-FR.json +1 -0
  209. package/dist/_locales/is-IS.json +1 -0
  210. package/dist/_locales/it-IT.json +1 -0
  211. package/dist/_locales/ja-JP.json +1 -0
  212. package/dist/_locales/nb-NO.json +2 -1
  213. package/dist/_locales/pl-PL.json +1 -0
  214. package/dist/_locales/pseudo.json +3 -1
  215. package/dist/_locales/pt-BR.json +1 -0
  216. package/dist/_locales/pt-PT.json +3 -2
  217. package/dist/_locales/th-TH.json +1 -0
  218. package/dist/_locales/zh-SG.json +1 -0
  219. package/dist/_locales/zh-TW.json +2 -1
  220. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  221. package/dist/_storyHelpers_/components/StoryGrid.js +5 -4
  222. package/dist/_storyHelpers_/components/StoryGrid.js.map +1 -1
  223. package/dist/_storyHelpers_/highZoom.d.ts +68 -0
  224. package/dist/_storyHelpers_/highZoom.js +72 -0
  225. package/dist/_storyHelpers_/highZoom.js.map +1 -0
  226. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +7 -7
  227. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  228. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  229. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  230. package/dist/_typedoc/Banner/Banner.types.json +18 -18
  231. package/dist/_typedoc/Box/Box.types.json +68 -68
  232. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
  233. package/dist/_typedoc/Button/Button.types.json +14 -14
  234. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  235. package/dist/_typedoc/Card/Card.types.json +6 -6
  236. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  237. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  238. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  239. package/dist/_typedoc/DateSelect/DateSelect.types.json +45 -14
  240. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  241. package/dist/_typedoc/DetailPageTemplate/DetailPageTemplate.types.json +3 -3
  242. package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
  243. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +37 -37
  244. package/dist/_typedoc/Dropzone/Dropzone.types.json +50 -50
  245. package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
  246. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  247. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  248. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  249. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  250. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +17 -17
  251. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  252. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  253. package/dist/_typedoc/Form/Form.types.json +875 -773
  254. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  255. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  256. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +99 -79
  257. package/dist/_typedoc/Input/Input.types.json +2 -2
  258. package/dist/_typedoc/Link/Link.types.json +1 -1
  259. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  260. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  261. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +90 -90
  262. package/dist/_typedoc/Modal/Modal.types.json +48 -48
  263. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +43 -33
  264. package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
  265. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  266. package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
  267. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +44 -33
  268. package/dist/_typedoc/PageLayout/PageLayout.types.json +42 -42
  269. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  270. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  271. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  272. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  273. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  274. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  275. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  276. package/dist/_typedoc/Required/Required.types.json +5 -5
  277. package/dist/_typedoc/Search/Search.types.json +18 -18
  278. package/dist/_typedoc/Section/Section.types.json +15 -15
  279. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  280. package/dist/_typedoc/Select/Select.types.json +67 -67
  281. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  282. package/dist/_typedoc/SettingsPageTemplate/SettingsPageTemplate.types.json +3 -3
  283. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  284. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  285. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  286. package/dist/_typedoc/Table/Table.types.json +136 -105
  287. package/dist/_typedoc/Tabs/Tablist.types.json +10 -10
  288. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  289. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  290. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  291. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  292. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  293. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  294. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  295. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  296. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  297. package/dist/_typedoc/Title/Title.types.json +1 -1
  298. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  299. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  300. package/dist/_typedoc/Token/Token.types.json +7 -7
  301. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  302. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  303. package/dist/_typedoc/ToolLandingPageTemplate/ToolLandingPageTemplate.types.json +2 -2
  304. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  305. package/dist/_typedoc/Tree/Tree.types.json +132 -132
  306. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  307. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  308. package/dist/_typedoc/_utils/types.json +3 -3
  309. package/dist/_typedoc/a11y-tips.json +1 -1
  310. package/package.json +2 -2
  311. package/dist/_hooks/ScrollLock.d.ts +0 -1
  312. package/dist/_hooks/ScrollLock.js +0 -31
  313. package/dist/_hooks/ScrollLock.js.map +0 -1
@@ -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 * 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":"","ignoreList":[]}
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 /**\n * Marks the field as mandatory for assistive technology. Applied to the\n * element carrying `role=\"combobox\"`.\n */\n ['aria-required']?: boolean\n}\n"],"mappings":"","ignoreList":[]}
@@ -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_53_3__sc-3o6zya-0"
9
+ componentId: "core-12_54_0__sc-3o6zya-0"
10
10
  })([""]);
11
11
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
12
12
  displayName: "StyledItem",
13
- componentId: "core-12_53_3__sc-3o6zya-1"
13
+ componentId: "core-12_54_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_53_3__sc-3o6zya-2"
17
+ componentId: "core-12_54_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
@@ -75,26 +75,26 @@ function selectableTileFocusWithinOutlineCss() {
75
75
  }
76
76
  export var StyledNextTileInertContent = /*#__PURE__*/styled.div.withConfig({
77
77
  displayName: "StyledNextTileInertContent",
78
- componentId: "core-12_53_3__sc-17bbrfw-0"
78
+ componentId: "core-12_54_0__sc-17bbrfw-0"
79
79
  })(["display:contents;color:", ";& *{color:inherit;}"], disabledText);
80
80
  export var StyledNextTileFocusTarget = /*#__PURE__*/styled.div.withConfig({
81
81
  displayName: "StyledNextTileFocusTarget",
82
- componentId: "core-12_53_3__sc-17bbrfw-1"
82
+ componentId: "core-12_54_0__sc-17bbrfw-1"
83
83
  })(["border-radius:inherit;min-height:0;outline:none;"]);
84
84
  export var StyledNextInteractableTile = /*#__PURE__*/styled(StyledInteractableTile).withConfig({
85
85
  displayName: "StyledNextInteractableTile",
86
- componentId: "core-12_53_3__sc-17bbrfw-2"
86
+ componentId: "core-12_54_0__sc-17bbrfw-2"
87
87
  })(["border:", ";position:relative;", ""], nextTileNeutralBorder, function (_ref5) {
88
88
  var $disabled = _ref5.$disabled;
89
89
  return $disabled && css(["&&{border-color:", ";cursor:not-allowed;pointer-events:none;}&&:focus{border:1px solid ", ";box-shadow:none;outline:none;}", ""], colors.gray85, colors.gray85, disabledInteractableStyles);
90
90
  });
91
91
  export var StyledNextLinkTile = /*#__PURE__*/styled(StyledLinkTile).withConfig({
92
92
  displayName: "StyledNextLinkTile",
93
- componentId: "core-12_53_3__sc-17bbrfw-3"
93
+ componentId: "core-12_54_0__sc-17bbrfw-3"
94
94
  })(["border:", ";position:relative;", ""], nextTileNeutralBorder, nextTileLinkLikeFocusStyles);
95
95
  export var StyledNextSelectableTile = /*#__PURE__*/styled(StyledSelectableTile).withConfig({
96
96
  displayName: "StyledNextSelectableTile",
97
- componentId: "core-12_53_3__sc-17bbrfw-4"
97
+ componentId: "core-12_54_0__sc-17bbrfw-4"
98
98
  })(["position:relative;", " ", " ", " ", " ", " &:focus{", " outline:none;}", " ", ""], function (p) {
99
99
  return nextTileSelectableBorderStyles(p);
100
100
  }, function (_ref6) {
@@ -14,7 +14,7 @@ var variantColorMap = {
14
14
  };
15
15
  var StyledNotation = /*#__PURE__*/styled.i.withConfig({
16
16
  displayName: "StyledNotation",
17
- componentId: "core-12_53_3__sc-160q1m6-0"
17
+ componentId: "core-12_54_0__sc-160q1m6-0"
18
18
  })(["", " color:", ";font-style:italic;"], getTypographyIntent('small'), function (_ref) {
19
19
  var $variant = _ref.$variant;
20
20
  return $variant ? colors[variantColorMap[$variant]] : colors.gray15;
@@ -12,37 +12,37 @@ var inputBgColor = colors.white;
12
12
  var inputBorder = "".concat(colors.gray50, " solid 1px");
13
13
  var StyledRootAddon = /*#__PURE__*/styled.span.withConfig({
14
14
  displayName: "StyledRootAddon",
15
- componentId: "core-12_53_3__sc-1782nvg-0"
15
+ componentId: "core-12_54_0__sc-1782nvg-0"
16
16
  })(["display:inline-flex;align-items:center;height:100%;position:absolute;top:0;color:", ";", ";"], function (_ref) {
17
17
  var disabled = _ref.disabled;
18
18
  return disabled ? colors.gray70 : colors.gray45;
19
19
  }, getTypographyIntent('body'));
20
20
  export var StyledPrefix = /*#__PURE__*/styled(StyledRootAddon).withConfig({
21
21
  displayName: "StyledPrefix",
22
- componentId: "core-12_53_3__sc-1782nvg-1"
22
+ componentId: "core-12_54_0__sc-1782nvg-1"
23
23
  })(["left:", "px;"], spacing.md);
24
24
  export var StyledSuffix = /*#__PURE__*/styled(StyledRootAddon).withConfig({
25
25
  displayName: "StyledSuffix",
26
- componentId: "core-12_53_3__sc-1782nvg-2"
26
+ componentId: "core-12_54_0__sc-1782nvg-2"
27
27
  })(["right:", "px;"], function (_ref2) {
28
28
  var $withIncrementer = _ref2.$withIncrementer;
29
29
  return $withIncrementer ? spacing.md + incrementerWidth : spacing.md;
30
30
  });
31
31
  export var StyledIncrementerWrapper = /*#__PURE__*/styled.div.withConfig({
32
32
  displayName: "StyledIncrementerWrapper",
33
- componentId: "core-12_53_3__sc-1782nvg-3"
33
+ componentId: "core-12_54_0__sc-1782nvg-3"
34
34
  })(["display:flex;flex-direction:column;position:absolute;top:1px;right:1px;height:100%;"]);
35
35
  export var StyledIncrementerButton = /*#__PURE__*/styled.button.withConfig({
36
36
  displayName: "StyledIncrementerButton",
37
- componentId: "core-12_53_3__sc-1782nvg-4"
37
+ componentId: "core-12_54_0__sc-1782nvg-4"
38
38
  })(["display:inline-flex;justify-content:center;align-items:center;width:", "px;height:calc(50% - 1px);border:none;border-radius:0px;outline:none;background-color:", ";padding:0;cursor:pointer;&:first-child,&:last-child{border-left:", ";&:disabled{border-color:", ";background-color:", ";}}&:first-child{border-top-right-radius:2px;}&:last-child{border-top:", ";border-bottom-right-radius:2px;}svg{fill:", ";}&:hover{svg{fill:", ";}}&:disabled{cursor:default;svg{fill:", ";}}"], incrementerWidth, inputBgColor, inputBorder, colors.gray50, colors.gray94, inputBorder, colors.gray45, colors.gray10, colors.gray70);
39
39
  export var StyledInput = /*#__PURE__*/styled(Input).withConfig({
40
40
  displayName: "StyledInput",
41
- componentId: "core-12_53_3__sc-1782nvg-5"
41
+ componentId: "core-12_54_0__sc-1782nvg-5"
42
42
  })([""]);
43
43
  export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
44
44
  displayName: "StyledWrapper",
45
- componentId: "core-12_53_3__sc-1782nvg-6"
45
+ componentId: "core-12_54_0__sc-1782nvg-6"
46
46
  })(["position:relative;", ""], function (_ref3) {
47
47
  var $hasIncrementer = _ref3.$hasIncrementer;
48
48
  return $hasIncrementer && css(["", "{padding-right:", "px;}"], StyledInput, spacing.md + incrementerWidth);
@@ -2,6 +2,6 @@ import styled from 'styled-components';
2
2
  export var arrowSize = 8;
3
3
  export var StyledArrow = /*#__PURE__*/styled.div.withConfig({
4
4
  displayName: "StyledArrow",
5
- componentId: "core-12_53_3__sc-1epxw7u-0"
5
+ componentId: "core-12_54_0__sc-1epxw7u-0"
6
6
  })(["position:absolute;background:inherit;width:", "px;height:", "px;transform:rotate(45deg);"], arrowSize, arrowSize);
7
7
  //# sourceMappingURL=OverlayArrow.styles.js.map
@@ -102,7 +102,9 @@ export var OverlayTrigger = /*#__PURE__*/React.forwardRef(function OverlayTrigge
102
102
  role = _ref2.role,
103
103
  _ref2$passA11yPropsTo = _ref2.passA11yPropsToOverlay,
104
104
  passA11yPropsToOverlay = _ref2$passA11yPropsTo === void 0 ? false : _ref2$passA11yPropsTo,
105
- overlayIdProp = _ref2.overlayId;
105
+ overlayIdProp = _ref2.overlayId,
106
+ _ref2$scrollLock = _ref2.scrollLock,
107
+ scrollLock = _ref2$scrollLock === void 0 ? true : _ref2$scrollLock;
106
108
  var isDialogRole = role === 'dialog';
107
109
  if (isDialogRole && (trigger === 'hover' || trigger !== null && trigger !== void 0 && trigger.includes('hover'))) {
108
110
  console.warn("@procore/core-react: OverlayTigger has role ".concat(role, " and a hover trigger, this may cause weird focus management and is unrecommended. Review autoFocus prop."));
@@ -156,7 +158,13 @@ export var OverlayTrigger = /*#__PURE__*/React.forwardRef(function OverlayTrigge
156
158
  clickedOutsideRef.current = false;
157
159
  }, [restoreFocusOnHide, triggerElRef, visibility.isVisible]);
158
160
  var delayedToggle = useDelayedToggle({
159
- beforeDisable: beforeHide,
161
+ // Consume Escape so a parent (Tearsheet, Modal) doesn't also close. Runs only while open.
162
+ beforeDisable: function beforeDisable(event) {
163
+ if (event instanceof KeyboardEvent && (event.key === 'Escape' || event.key === 'Esc')) {
164
+ event.stopPropagation();
165
+ }
166
+ return beforeHide(event);
167
+ },
160
168
  beforeEnable: beforeShow,
161
169
  disableDelay: hideDelay,
162
170
  enableDelay: showDelay,
@@ -200,7 +208,8 @@ export var OverlayTrigger = /*#__PURE__*/React.forwardRef(function OverlayTrigge
200
208
  'aria-label': ariaLabel,
201
209
  id: overlayId,
202
210
  isOpen: visibility.isVisible,
203
- role: role
211
+ role: role,
212
+ scrollLock: scrollLock
204
213
  }),
205
214
  wrapperProps = _useOverlayTriggerA.wrapperProps,
206
215
  overlayProps = _useOverlayTriggerA.overlayProps,
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayTrigger.js","names":["arrow","floatingArrow","flip","floatingFlip","offset","floatingOffset","shift","floatingShift","size","floatingSize","limitShift","FocusScope","useId","React","useClickOutside","DelayedToggleContext","useDelayedToggle","useDelayedToggleContext","Trigger","useTrigger","useVisibility","mergeRefs","Arrow","arrowSize","useOverlay","Portal","useOverlayTriggerA11y","OVERLAY_AVAILABLE_HEIGHT_VAR","ClickOutside","_ref","container","onClickOutside","refs","createElement","Fragment","OverlayTrigger","forwardRef","_ref2","ref","_ref2$afterHide","afterHide","_ref2$afterShow","afterShow","ariaDescribedby","ariaDetails","ariaLabel","ariaLabelledby","autoFocus","_ref2$beforeHide","beforeHide","_ref2$beforeShow","beforeShow","_ref2$canFlip","canFlip","children","_ref2$clickOutsideIgn","clickOutsideIgnoreRefs","containFocus","_ref2$hideDelay","hideDelay","hideKeys_","hideKeys","_ref2$initialIsVisibl","initialIsVisible","overlay","_ref2$padding","padding","_ref2$placement","placement","_ref2$restoreFocusOnH","restoreFocusOnHide","_ref2$showDelay","showDelay","_ref2$showKeys","showKeys","_ref2$shrinkOverlay","shrinkOverlay","trackAriaExpanded","_ref2$trigger","trigger","_ref2$arrow","overlayApiRef","overlayRef","role","_ref2$passA11yPropsTo","passA11yPropsToOverlay","overlayIdProp","overlayId","isDialogRole","includes","console","warn","concat","target","triggerElRef","useRef","overlayElRef","_React$useState","useState","_React$useState2","_slicedToArray","referenceElement","setReferenceElement","clickedOutsideRef","visibility","useImperativeHandle","show","hide","triggers","useMemo","Array","isArray","prevTriggersRef","useEffect","prevTriggers","current","indexOf","isVisible","focus","delayedToggle","beforeDisable","beforeEnable","disableDelay","enableDelay","isEnabled","onDisable","onEnable","triggerApi","enable","disable","enableKeys","disableKeys","triggerRef","hasHoverTrigger","onKeyDown","e","key","preventDefault","stopPropagation","document","addEventListener","removeEventListener","triggerElement","defaultOverlayId","_useOverlayTriggerA","canPropOverlayUp","isValidElement","id","isOpen","wrapperProps","overlayProps","portalProps","triggerProps","focusScopeProps","labelProps","hasAriaExpanded","wrappedTriggerElement","cloneElement","_objectSpread","open","Provider","value","event","_toConsumableArray","_extends","TriggerOverlay","contain","restoreFocus","overlayCloneProps","CloseOnFocus","_ref3","style","height","position","top","width","onFocus","opacity","useOverlayTriggerContext","_useDelayedToggleCont","toggle","_ref4","arrowRef","arrowPadding","middleware","mainAxis","limiter","apply","_ref5","availableHeight","elements","floating","setProperty","minWidth","reference","getBoundingClientRect","element","filter","_useOverlay","isPositioned","overlayStyle","referenceRefCallback","referenceRef","middlewareData","currentPlacement","mergedRefs","shownStyles","left"],"sources":["../../src/OverlayTrigger/OverlayTrigger.tsx"],"sourcesContent":["import {\n arrow as floatingArrow,\n flip as floatingFlip,\n offset as floatingOffset,\n shift as floatingShift,\n size as floatingSize,\n limitShift,\n} from '@floating-ui/react-dom'\nimport { FocusScope } from '@react-aria/focus'\nimport { useId } from '@react-aria/utils'\nimport React from 'react'\nimport type { ClickOutsideConfig } from '../_hooks/ClickOutside'\nimport { useClickOutside } from '../_hooks/ClickOutside'\nimport {\n DelayedToggleContext,\n useDelayedToggle,\n useDelayedToggleContext,\n} from '../_hooks/DelayedToggle'\nimport type { TriggerApi } from '../_hooks/Trigger'\nimport { Trigger, useTrigger } from '../_hooks/Trigger'\nimport { useVisibility } from '../_hooks/Visibility'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { Placement } from '../_utils/placement'\nimport type { ReactElementWithRef } from '../_utils/types'\nimport { Arrow } from '../Overlay/OverlayArrow'\nimport { arrowSize } from '../Overlay/OverlayArrow.styles'\nimport type { OverlayMiddleware } from '../Overlay/useOverlay'\nimport { useOverlay } from '../Overlay/useOverlay'\nimport { Portal } from '../Portal'\nimport { useOverlayTriggerA11y } from './a11yPresets'\nimport type {\n DeprecatedOverlayTriggerRef,\n OverlayTriggerProps,\n} from './OverlayTrigger.types'\n\n// CSS custom property exposing the floating-ui `availableHeight` value on the overlay wrapper.\nexport const OVERLAY_AVAILABLE_HEIGHT_VAR = '--core-overlay-available-height'\n\nconst ClickOutside = ({\n container,\n onClickOutside,\n refs,\n}: ClickOutsideConfig) => {\n useClickOutside({\n onClickOutside,\n refs,\n container,\n })\n\n return <></>\n}\n\n/**\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-overlaytrigger--demo)\n\n */\nexport const OverlayTrigger = React.forwardRef<\n DeprecatedOverlayTriggerRef,\n OverlayTriggerProps\n>(function OverlayTrigger(\n {\n afterHide = () => {},\n afterShow = () => {},\n ['aria-describedby']: ariaDescribedby,\n ['aria-details']: ariaDetails,\n ['aria-label']: ariaLabel,\n ['aria-labelledby']: ariaLabelledby,\n autoFocus,\n beforeHide = () => true,\n beforeShow = () => true,\n canFlip = true,\n children,\n clickOutsideIgnoreRefs = [],\n containFocus,\n container,\n hideDelay = 100,\n hideKeys: hideKeys_,\n initialIsVisible = false,\n overlay,\n padding = 2,\n placement = 'top',\n restoreFocusOnHide = true, // TODO: change default to be false, but that is a breaking change\n showDelay = 0,\n showKeys = ['ArrowDown', 'Down'],\n shrinkOverlay = false,\n trackAriaExpanded,\n trigger = 'click',\n arrow = false,\n overlayRef: overlayApiRef,\n role,\n passA11yPropsToOverlay = false,\n overlayId: overlayIdProp,\n },\n ref\n) {\n const isDialogRole = role === 'dialog'\n\n if (isDialogRole && (trigger === 'hover' || trigger?.includes('hover'))) {\n console.warn(\n `@procore/core-react: OverlayTigger has role ${role} and a hover trigger, this may cause weird focus management and is unrecommended. Review autoFocus prop.`\n )\n }\n\n const hideKeys = hideKeys_ ?? {\n // Note by default OverlayTrigger closes on tab. Dialog role changes the default.\n overlay:\n containFocus ?? isDialogRole\n ? ['Escape', 'Esc']\n : ['Escape', 'Esc', 'Tab'],\n target: ['Escape', 'Esc'],\n }\n\n const triggerElRef = React.useRef<HTMLElement>(null)\n const overlayElRef = React.useRef<HTMLElement>(null)\n const [referenceElement, setReferenceElement] =\n React.useState<HTMLElement | null>(null)\n const clickedOutsideRef = React.useRef(true)\n\n const visibility = useVisibility({\n afterHide,\n afterShow,\n initialIsVisible,\n })\n\n React.useImperativeHandle(overlayApiRef, () => ({\n show: visibility.show,\n hide: visibility.hide,\n }))\n\n const triggers = React.useMemo(\n () => (Array.isArray(trigger) ? trigger : [trigger]),\n [trigger]\n )\n\n const prevTriggersRef = React.useRef(triggers)\n\n React.useEffect(() => {\n const prevTriggers = prevTriggersRef.current\n prevTriggersRef.current = triggers\n\n if (triggers.indexOf('none') >= 0 && visibility.isVisible) {\n visibility.hide()\n }\n if (triggers.indexOf('always') >= 0 && !visibility.isVisible) {\n visibility.show()\n }\n if (\n prevTriggers.indexOf('always') >= 0 &&\n triggers.indexOf('always') < 0 &&\n visibility.isVisible\n ) {\n visibility.hide()\n }\n }, [triggers, visibility.isVisible])\n\n // TODO delete in a separate branch for testing and rely only on FocusScope\n React.useEffect(() => {\n if (\n [true, 'core-react'].includes(restoreFocusOnHide) &&\n !visibility.isVisible &&\n !clickedOutsideRef.current\n ) {\n triggerElRef.current && triggerElRef.current.focus()\n }\n\n clickedOutsideRef.current = false\n }, [restoreFocusOnHide, triggerElRef, visibility.isVisible])\n\n const delayedToggle = useDelayedToggle({\n beforeDisable: beforeHide,\n beforeEnable: beforeShow,\n disableDelay: hideDelay,\n enableDelay: showDelay,\n isEnabled: visibility.isVisible,\n onDisable: visibility.hide,\n onEnable: visibility.show,\n })\n\n const triggerApi = useTrigger({\n isEnabled: visibility.isVisible,\n enable: delayedToggle.enable,\n disable: delayedToggle.disable,\n enableKeys: showKeys,\n disableKeys: hideKeys.target,\n trigger,\n triggerRef: triggerElRef,\n })\n\n // Enable Escape key dismissal for hover-triggered overlays.\n React.useEffect(() => {\n const hasHoverTrigger = triggers.includes('hover')\n if (!visibility.isVisible || !hasHoverTrigger) return\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Escape' && e.key !== 'Esc') return\n\n delayedToggle.disable(e)\n e.preventDefault()\n e.stopPropagation()\n }\n\n document.addEventListener('keydown', onKeyDown, true)\n return () => {\n document.removeEventListener('keydown', onKeyDown, true)\n }\n }, [triggers, visibility.isVisible, delayedToggle])\n\n const triggerElement =\n typeof children === 'function'\n ? (children as (props: TriggerApi) => ReactElementWithRef)(triggerApi)\n : (children as ReactElementWithRef)\n\n const defaultOverlayId = useId()\n const overlayId = overlayIdProp ?? defaultOverlayId\n\n const {\n wrapperProps,\n overlayProps,\n portalProps,\n triggerProps,\n focusScopeProps,\n // Does not use. User needs to wire up when using dialog role!\n labelProps,\n } = useOverlayTriggerA11y({\n canPropOverlayUp: React.isValidElement(overlay) && passA11yPropsToOverlay,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id: overlayId,\n isOpen: visibility.isVisible,\n role,\n })\n\n const hasAriaExpanded = trackAriaExpanded\n ? { 'aria-expanded': triggerApi.isVisible }\n : {}\n\n const wrappedTriggerElement = React.cloneElement(triggerElement, {\n ...hasAriaExpanded,\n open: triggerApi.isVisible,\n ref: triggerElement.ref\n ? mergeRefs(triggerElement.ref, ref, triggerElRef, setReferenceElement)\n : mergeRefs(ref, triggerElRef, setReferenceElement),\n ...triggerProps,\n })\n\n return (\n <DelayedToggleContext.Provider value={delayedToggle}>\n {wrappedTriggerElement}\n {visibility.isVisible && (\n <>\n <ClickOutside\n {...{\n container: container,\n onClickOutside: (event) => {\n clickedOutsideRef.current = true\n delayedToggle.disable(event)\n },\n refs: [overlayElRef, triggerElRef, ...clickOutsideIgnoreRefs],\n }}\n />\n <Portal container={container} {...portalProps}>\n <Trigger\n {...{\n isEnabled: visibility.isVisible,\n enable: delayedToggle.enable,\n disable: delayedToggle.disable,\n disableKeys: hideKeys.overlay,\n trigger: trigger === 'click' ? 'none' : trigger,\n triggerRef: overlayElRef,\n }}\n >\n <TriggerOverlay\n autoFocus={autoFocus ?? focusScopeProps.autoFocus}\n containFocus={containFocus ?? focusScopeProps.contain}\n restoreFocus={[true, 'react-aria-focus-scope'].includes(\n restoreFocusOnHide\n )}\n ref={overlayElRef}\n referenceElement={referenceElement}\n overlay={overlay}\n shrinkOverlay={shrinkOverlay}\n placement={placement}\n padding={padding}\n canFlip={canFlip}\n arrow={arrow}\n wrapperProps={wrapperProps}\n overlayCloneProps={overlayProps}\n />\n </Trigger>\n </Portal>\n </>\n )}\n </DelayedToggleContext.Provider>\n )\n})\n\nexport function CloseOnFocus({ hide }: { hide: (event: any) => any }) {\n return (\n // in IE, the hidden input's cursor appears right under the menu\n // this positions it arbitrarily away where it won't be noticed\n <div\n style={{\n height: 0,\n position: 'absolute',\n top: 1000,\n width: 0,\n }}\n >\n <input onFocus={hide} style={{ opacity: 0 }} />\n </div>\n )\n}\n\nexport function useOverlayTriggerContext() {\n const { enable: show, disable: hide, toggle } = useDelayedToggleContext()\n\n return {\n hide,\n show,\n toggle,\n }\n}\n\ninterface TriggerOverlayProps {\n containFocus?: boolean\n autoFocus?: boolean\n restoreFocus?: boolean\n placement: Placement\n canFlip?: boolean\n arrow?: boolean\n padding: number\n shrinkOverlay: boolean\n overlay: React.ReactNode\n overlayCloneProps: any\n wrapperProps: Record<string, unknown>\n referenceElement: HTMLElement | null\n}\n\nexport const TriggerOverlay = React.forwardRef<\n HTMLElement,\n TriggerOverlayProps\n>(function (\n {\n autoFocus,\n containFocus,\n restoreFocus,\n placement,\n canFlip,\n arrow,\n padding,\n shrinkOverlay,\n overlay,\n referenceElement,\n wrapperProps,\n overlayCloneProps,\n },\n ref\n) {\n const arrowRef = React.useRef<HTMLDivElement>(null)\n\n const arrowPadding = arrowSize / 2 + 1\n const middleware = [\n floatingOffset({ mainAxis: arrow ? padding + arrowPadding : padding }),\n canFlip ? floatingFlip() : null,\n floatingShift({ limiter: limitShift() }),\n floatingSize({\n apply({ availableHeight, elements }) {\n elements.floating.style.setProperty(\n OVERLAY_AVAILABLE_HEIGHT_VAR,\n `${availableHeight}px`\n )\n if (!shrinkOverlay) {\n elements.floating.style.minWidth = `${\n elements.reference.getBoundingClientRect().width\n }px`\n }\n },\n }),\n floatingArrow({\n element: arrowRef,\n padding: 6,\n }),\n ].filter((middleware) => middleware !== null) as OverlayMiddleware[]\n\n const {\n isPositioned,\n overlayStyle,\n referenceRef: referenceRefCallback,\n overlayRef,\n middlewareData,\n placement: currentPlacement,\n } = useOverlay({\n middleware,\n placement,\n })\n\n React.useEffect(() => {\n referenceRefCallback(referenceElement)\n }, [referenceElement, referenceRefCallback])\n\n const mergedRefs = mergeRefs(ref, overlayRef)\n\n // TODO could just move clone and clone props to parent\n if (!React.isValidElement(overlay) && overlayCloneProps) {\n console.warn(\n 'PLEASE REPORT ISSUE @procore/core-react: OverlayTrigger TriggerOverlay is not a valid React element but wants to clone \"overlay\" with props. Cannot pass props to the element.'\n )\n }\n\n const shownStyles: React.CSSProperties = {\n ...overlayStyle,\n left: isPositioned ? overlayStyle.left : '-99999px',\n top: isPositioned ? overlayStyle.top : '-99999px',\n }\n\n return (\n <FocusScope\n autoFocus={autoFocus}\n contain={containFocus}\n restoreFocus={restoreFocus}\n >\n <div\n data-qa=\"core-overlay-trigger-overlay-wrapper\"\n ref={mergedRefs}\n style={shownStyles}\n {...wrapperProps}\n >\n {React.isValidElement(overlay)\n ? React.cloneElement(overlay, overlayCloneProps)\n : overlay}\n {arrow && (\n <Arrow\n ref={arrowRef}\n arrow={middlewareData.arrow}\n placement={currentPlacement}\n />\n )}\n </div>\n </FocusScope>\n )\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OverlayTrigger.js","names":["arrow","floatingArrow","flip","floatingFlip","offset","floatingOffset","shift","floatingShift","size","floatingSize","limitShift","FocusScope","useId","React","useClickOutside","DelayedToggleContext","useDelayedToggle","useDelayedToggleContext","Trigger","useTrigger","useVisibility","mergeRefs","Arrow","arrowSize","useOverlay","Portal","useOverlayTriggerA11y","OVERLAY_AVAILABLE_HEIGHT_VAR","ClickOutside","_ref","container","onClickOutside","refs","createElement","Fragment","OverlayTrigger","forwardRef","_ref2","ref","_ref2$afterHide","afterHide","_ref2$afterShow","afterShow","ariaDescribedby","ariaDetails","ariaLabel","ariaLabelledby","autoFocus","_ref2$beforeHide","beforeHide","_ref2$beforeShow","beforeShow","_ref2$canFlip","canFlip","children","_ref2$clickOutsideIgn","clickOutsideIgnoreRefs","containFocus","_ref2$hideDelay","hideDelay","hideKeys_","hideKeys","_ref2$initialIsVisibl","initialIsVisible","overlay","_ref2$padding","padding","_ref2$placement","placement","_ref2$restoreFocusOnH","restoreFocusOnHide","_ref2$showDelay","showDelay","_ref2$showKeys","showKeys","_ref2$shrinkOverlay","shrinkOverlay","trackAriaExpanded","_ref2$trigger","trigger","_ref2$arrow","overlayApiRef","overlayRef","role","_ref2$passA11yPropsTo","passA11yPropsToOverlay","overlayIdProp","overlayId","_ref2$scrollLock","scrollLock","isDialogRole","includes","console","warn","concat","target","triggerElRef","useRef","overlayElRef","_React$useState","useState","_React$useState2","_slicedToArray","referenceElement","setReferenceElement","clickedOutsideRef","visibility","useImperativeHandle","show","hide","triggers","useMemo","Array","isArray","prevTriggersRef","useEffect","prevTriggers","current","indexOf","isVisible","focus","delayedToggle","beforeDisable","event","KeyboardEvent","key","stopPropagation","beforeEnable","disableDelay","enableDelay","isEnabled","onDisable","onEnable","triggerApi","enable","disable","enableKeys","disableKeys","triggerRef","hasHoverTrigger","onKeyDown","e","preventDefault","document","addEventListener","removeEventListener","triggerElement","defaultOverlayId","_useOverlayTriggerA","canPropOverlayUp","isValidElement","id","isOpen","wrapperProps","overlayProps","portalProps","triggerProps","focusScopeProps","labelProps","hasAriaExpanded","wrappedTriggerElement","cloneElement","_objectSpread","open","Provider","value","_toConsumableArray","_extends","TriggerOverlay","contain","restoreFocus","overlayCloneProps","CloseOnFocus","_ref3","style","height","position","top","width","onFocus","opacity","useOverlayTriggerContext","_useDelayedToggleCont","toggle","_ref4","arrowRef","arrowPadding","middleware","mainAxis","limiter","apply","_ref5","availableHeight","elements","floating","setProperty","minWidth","reference","getBoundingClientRect","element","filter","_useOverlay","isPositioned","overlayStyle","referenceRefCallback","referenceRef","middlewareData","currentPlacement","mergedRefs","shownStyles","left"],"sources":["../../src/OverlayTrigger/OverlayTrigger.tsx"],"sourcesContent":["import {\n arrow as floatingArrow,\n flip as floatingFlip,\n offset as floatingOffset,\n shift as floatingShift,\n size as floatingSize,\n limitShift,\n} from '@floating-ui/react-dom'\nimport { FocusScope } from '@react-aria/focus'\nimport { useId } from '@react-aria/utils'\nimport React from 'react'\nimport type { ClickOutsideConfig } from '../_hooks/ClickOutside'\nimport { useClickOutside } from '../_hooks/ClickOutside'\nimport {\n DelayedToggleContext,\n useDelayedToggle,\n useDelayedToggleContext,\n} from '../_hooks/DelayedToggle'\nimport type { TriggerApi } from '../_hooks/Trigger'\nimport { Trigger, useTrigger } from '../_hooks/Trigger'\nimport { useVisibility } from '../_hooks/Visibility'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { Placement } from '../_utils/placement'\nimport type { ReactElementWithRef } from '../_utils/types'\nimport { Arrow } from '../Overlay/OverlayArrow'\nimport { arrowSize } from '../Overlay/OverlayArrow.styles'\nimport type { OverlayMiddleware } from '../Overlay/useOverlay'\nimport { useOverlay } from '../Overlay/useOverlay'\nimport { Portal } from '../Portal'\nimport { useOverlayTriggerA11y } from './a11yPresets'\nimport type {\n DeprecatedOverlayTriggerRef,\n OverlayTriggerProps,\n} from './OverlayTrigger.types'\n\n// CSS custom property exposing the floating-ui `availableHeight` value on the overlay wrapper.\nexport const OVERLAY_AVAILABLE_HEIGHT_VAR = '--core-overlay-available-height'\n\nconst ClickOutside = ({\n container,\n onClickOutside,\n refs,\n}: ClickOutsideConfig) => {\n useClickOutside({\n onClickOutside,\n refs,\n container,\n })\n\n return <></>\n}\n\n/**\n\n @since 10.19.0\n\n @see [Storybook](https://stories.core.procore.com/?path=/story/core-react_demos-overlaytrigger--demo)\n\n */\nexport const OverlayTrigger = React.forwardRef<\n DeprecatedOverlayTriggerRef,\n OverlayTriggerProps\n>(function OverlayTrigger(\n {\n afterHide = () => {},\n afterShow = () => {},\n ['aria-describedby']: ariaDescribedby,\n ['aria-details']: ariaDetails,\n ['aria-label']: ariaLabel,\n ['aria-labelledby']: ariaLabelledby,\n autoFocus,\n beforeHide = () => true,\n beforeShow = () => true,\n canFlip = true,\n children,\n clickOutsideIgnoreRefs = [],\n containFocus,\n container,\n hideDelay = 100,\n hideKeys: hideKeys_,\n initialIsVisible = false,\n overlay,\n padding = 2,\n placement = 'top',\n restoreFocusOnHide = true, // TODO: change default to be false, but that is a breaking change\n showDelay = 0,\n showKeys = ['ArrowDown', 'Down'],\n shrinkOverlay = false,\n trackAriaExpanded,\n trigger = 'click',\n arrow = false,\n overlayRef: overlayApiRef,\n role,\n passA11yPropsToOverlay = false,\n overlayId: overlayIdProp,\n scrollLock = true,\n },\n ref\n) {\n const isDialogRole = role === 'dialog'\n\n if (isDialogRole && (trigger === 'hover' || trigger?.includes('hover'))) {\n console.warn(\n `@procore/core-react: OverlayTigger has role ${role} and a hover trigger, this may cause weird focus management and is unrecommended. Review autoFocus prop.`\n )\n }\n\n const hideKeys = hideKeys_ ?? {\n // Note by default OverlayTrigger closes on tab. Dialog role changes the default.\n overlay:\n containFocus ?? isDialogRole\n ? ['Escape', 'Esc']\n : ['Escape', 'Esc', 'Tab'],\n target: ['Escape', 'Esc'],\n }\n\n const triggerElRef = React.useRef<HTMLElement>(null)\n const overlayElRef = React.useRef<HTMLElement>(null)\n const [referenceElement, setReferenceElement] =\n React.useState<HTMLElement | null>(null)\n const clickedOutsideRef = React.useRef(true)\n\n const visibility = useVisibility({\n afterHide,\n afterShow,\n initialIsVisible,\n })\n\n React.useImperativeHandle(overlayApiRef, () => ({\n show: visibility.show,\n hide: visibility.hide,\n }))\n\n const triggers = React.useMemo(\n () => (Array.isArray(trigger) ? trigger : [trigger]),\n [trigger]\n )\n\n const prevTriggersRef = React.useRef(triggers)\n\n React.useEffect(() => {\n const prevTriggers = prevTriggersRef.current\n prevTriggersRef.current = triggers\n\n if (triggers.indexOf('none') >= 0 && visibility.isVisible) {\n visibility.hide()\n }\n if (triggers.indexOf('always') >= 0 && !visibility.isVisible) {\n visibility.show()\n }\n if (\n prevTriggers.indexOf('always') >= 0 &&\n triggers.indexOf('always') < 0 &&\n visibility.isVisible\n ) {\n visibility.hide()\n }\n }, [triggers, visibility.isVisible])\n\n // TODO delete in a separate branch for testing and rely only on FocusScope\n React.useEffect(() => {\n if (\n [true, 'core-react'].includes(restoreFocusOnHide) &&\n !visibility.isVisible &&\n !clickedOutsideRef.current\n ) {\n triggerElRef.current && triggerElRef.current.focus()\n }\n\n clickedOutsideRef.current = false\n }, [restoreFocusOnHide, triggerElRef, visibility.isVisible])\n\n const delayedToggle = useDelayedToggle({\n // Consume Escape so a parent (Tearsheet, Modal) doesn't also close. Runs only while open.\n beforeDisable: (event) => {\n if (\n event instanceof KeyboardEvent &&\n (event.key === 'Escape' || event.key === 'Esc')\n ) {\n event.stopPropagation()\n }\n return beforeHide(event)\n },\n beforeEnable: beforeShow,\n disableDelay: hideDelay,\n enableDelay: showDelay,\n isEnabled: visibility.isVisible,\n onDisable: visibility.hide,\n onEnable: visibility.show,\n })\n\n const triggerApi = useTrigger({\n isEnabled: visibility.isVisible,\n enable: delayedToggle.enable,\n disable: delayedToggle.disable,\n enableKeys: showKeys,\n disableKeys: hideKeys.target,\n trigger,\n triggerRef: triggerElRef,\n })\n\n // Enable Escape key dismissal for hover-triggered overlays.\n React.useEffect(() => {\n const hasHoverTrigger = triggers.includes('hover')\n if (!visibility.isVisible || !hasHoverTrigger) return\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key !== 'Escape' && e.key !== 'Esc') return\n\n delayedToggle.disable(e)\n e.preventDefault()\n e.stopPropagation()\n }\n\n document.addEventListener('keydown', onKeyDown, true)\n return () => {\n document.removeEventListener('keydown', onKeyDown, true)\n }\n }, [triggers, visibility.isVisible, delayedToggle])\n\n const triggerElement =\n typeof children === 'function'\n ? (children as (props: TriggerApi) => ReactElementWithRef)(triggerApi)\n : (children as ReactElementWithRef)\n\n const defaultOverlayId = useId()\n const overlayId = overlayIdProp ?? defaultOverlayId\n\n const {\n wrapperProps,\n overlayProps,\n portalProps,\n triggerProps,\n focusScopeProps,\n // Does not use. User needs to wire up when using dialog role!\n labelProps,\n } = useOverlayTriggerA11y({\n canPropOverlayUp: React.isValidElement(overlay) && passA11yPropsToOverlay,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id: overlayId,\n isOpen: visibility.isVisible,\n role,\n scrollLock,\n })\n\n const hasAriaExpanded = trackAriaExpanded\n ? { 'aria-expanded': triggerApi.isVisible }\n : {}\n\n const wrappedTriggerElement = React.cloneElement(triggerElement, {\n ...hasAriaExpanded,\n open: triggerApi.isVisible,\n ref: triggerElement.ref\n ? mergeRefs(triggerElement.ref, ref, triggerElRef, setReferenceElement)\n : mergeRefs(ref, triggerElRef, setReferenceElement),\n ...triggerProps,\n })\n\n return (\n <DelayedToggleContext.Provider value={delayedToggle}>\n {wrappedTriggerElement}\n {visibility.isVisible && (\n <>\n <ClickOutside\n {...{\n container: container,\n onClickOutside: (event) => {\n clickedOutsideRef.current = true\n delayedToggle.disable(event)\n },\n refs: [overlayElRef, triggerElRef, ...clickOutsideIgnoreRefs],\n }}\n />\n <Portal container={container} {...portalProps}>\n <Trigger\n {...{\n isEnabled: visibility.isVisible,\n enable: delayedToggle.enable,\n disable: delayedToggle.disable,\n disableKeys: hideKeys.overlay,\n trigger: trigger === 'click' ? 'none' : trigger,\n triggerRef: overlayElRef,\n }}\n >\n <TriggerOverlay\n autoFocus={autoFocus ?? focusScopeProps.autoFocus}\n containFocus={containFocus ?? focusScopeProps.contain}\n restoreFocus={[true, 'react-aria-focus-scope'].includes(\n restoreFocusOnHide\n )}\n ref={overlayElRef}\n referenceElement={referenceElement}\n overlay={overlay}\n shrinkOverlay={shrinkOverlay}\n placement={placement}\n padding={padding}\n canFlip={canFlip}\n arrow={arrow}\n wrapperProps={wrapperProps}\n overlayCloneProps={overlayProps}\n />\n </Trigger>\n </Portal>\n </>\n )}\n </DelayedToggleContext.Provider>\n )\n})\n\nexport function CloseOnFocus({ hide }: { hide: (event: any) => any }) {\n return (\n // in IE, the hidden input's cursor appears right under the menu\n // this positions it arbitrarily away where it won't be noticed\n <div\n style={{\n height: 0,\n position: 'absolute',\n top: 1000,\n width: 0,\n }}\n >\n <input onFocus={hide} style={{ opacity: 0 }} />\n </div>\n )\n}\n\nexport function useOverlayTriggerContext() {\n const { enable: show, disable: hide, toggle } = useDelayedToggleContext()\n\n return {\n hide,\n show,\n toggle,\n }\n}\n\ninterface TriggerOverlayProps {\n containFocus?: boolean\n autoFocus?: boolean\n restoreFocus?: boolean\n placement: Placement\n canFlip?: boolean\n arrow?: boolean\n padding: number\n shrinkOverlay: boolean\n overlay: React.ReactNode\n overlayCloneProps: any\n wrapperProps: Record<string, unknown>\n referenceElement: HTMLElement | null\n}\n\nexport const TriggerOverlay = React.forwardRef<\n HTMLElement,\n TriggerOverlayProps\n>(function (\n {\n autoFocus,\n containFocus,\n restoreFocus,\n placement,\n canFlip,\n arrow,\n padding,\n shrinkOverlay,\n overlay,\n referenceElement,\n wrapperProps,\n overlayCloneProps,\n },\n ref\n) {\n const arrowRef = React.useRef<HTMLDivElement>(null)\n\n const arrowPadding = arrowSize / 2 + 1\n const middleware = [\n floatingOffset({ mainAxis: arrow ? padding + arrowPadding : padding }),\n canFlip ? floatingFlip() : null,\n floatingShift({ limiter: limitShift() }),\n floatingSize({\n apply({ availableHeight, elements }) {\n elements.floating.style.setProperty(\n OVERLAY_AVAILABLE_HEIGHT_VAR,\n `${availableHeight}px`\n )\n if (!shrinkOverlay) {\n elements.floating.style.minWidth = `${\n elements.reference.getBoundingClientRect().width\n }px`\n }\n },\n }),\n floatingArrow({\n element: arrowRef,\n padding: 6,\n }),\n ].filter((middleware) => middleware !== null) as OverlayMiddleware[]\n\n const {\n isPositioned,\n overlayStyle,\n referenceRef: referenceRefCallback,\n overlayRef,\n middlewareData,\n placement: currentPlacement,\n } = useOverlay({\n middleware,\n placement,\n })\n\n React.useEffect(() => {\n referenceRefCallback(referenceElement)\n }, [referenceElement, referenceRefCallback])\n\n const mergedRefs = mergeRefs(ref, overlayRef)\n\n // TODO could just move clone and clone props to parent\n if (!React.isValidElement(overlay) && overlayCloneProps) {\n console.warn(\n 'PLEASE REPORT ISSUE @procore/core-react: OverlayTrigger TriggerOverlay is not a valid React element but wants to clone \"overlay\" with props. Cannot pass props to the element.'\n )\n }\n\n const shownStyles: React.CSSProperties = {\n ...overlayStyle,\n left: isPositioned ? overlayStyle.left : '-99999px',\n top: isPositioned ? overlayStyle.top : '-99999px',\n }\n\n return (\n <FocusScope\n autoFocus={autoFocus}\n contain={containFocus}\n restoreFocus={restoreFocus}\n >\n <div\n data-qa=\"core-overlay-trigger-overlay-wrapper\"\n ref={mergedRefs}\n style={shownStyles}\n {...wrapperProps}\n >\n {React.isValidElement(overlay)\n ? React.cloneElement(overlay, overlayCloneProps)\n : overlay}\n {arrow && (\n <Arrow\n ref={arrowRef}\n arrow={middlewareData.arrow}\n placement={currentPlacement}\n />\n )}\n </div>\n </FocusScope>\n )\n})\n"],"mappings":"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","ignoreList":[]}
@@ -115,6 +115,20 @@ export interface OverlayTriggerProps extends PickedOverlayProps, PickedTriggerPr
115
115
  * @since 12.36.1
116
116
  */
117
117
  overlayId?: string;
118
+ /**
119
+ * When true, locks background scroll (on the document body) while the
120
+ * overlay is visible, following the React Aria overlay pattern. This
121
+ * keeps the overlay from overflowing constrained containers or lagging
122
+ * behind on scroll, since the page itself cannot scroll while it is open.
123
+ *
124
+ * Defaults to true, since most overlays (dropdowns, menus, pickers,
125
+ * flyouts) benefit from this. Set to false for overlays that are not
126
+ * dropdown-like, for example hover/focus-triggered tooltips and popovers,
127
+ * where locking background scroll would be unexpected.
128
+ * @default true
129
+ * @since 12.54.0
130
+ */
131
+ scrollLock?: boolean;
118
132
  }
119
133
  export interface OverlayTriggerRef {
120
134
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayTrigger.types.js","names":[],"sources":["../../src/OverlayTrigger/OverlayTrigger.types.ts"],"sourcesContent":["import type { OverlayProps } from '../Overlay/Overlay'\nimport type { PortalProps } from '../Portal/Portal.types'\nimport type { BeforeCallback } from '../_hooks/DelayedCallback'\nimport type { TriggerRenderProps } from '../_hooks/Trigger'\nimport type { VisibilityConfig } from '../_hooks/Visibility'\n\nexport type OverlayTriggerRole =\n | 'dialog'\n | 'menu'\n | 'listbox'\n | 'tooltip'\n | 'none'\n\nexport type PickedOverlayProps = Pick<\n OverlayProps,\n 'canFlip' | 'padding' | 'placement' | 'shrinkOverlay' | 'arrow'\n>\n\nexport type PickedTriggerProps = Pick<\n TriggerRenderProps,\n 'children' | 'trigger'\n>\n\nexport type PickedTriggerRenderProps = Pick<TriggerRenderProps, 'children'>\n\nexport type PickedVisibilityProps = Pick<\n VisibilityConfig,\n 'afterHide' | 'afterShow' | 'initialIsVisible'\n>\n\nexport interface OverlayTriggerProps\n extends PickedOverlayProps,\n PickedTriggerProps,\n PickedTriggerRenderProps,\n PickedVisibilityProps,\n Pick<PortalProps, 'container'> {\n ['aria-describedby']?: string\n ['aria-details']?: string\n ['aria-label']?: string\n ['aria-labelledby']?: string\n /**\n * Boolean to enable code to apply aria-expanded to the source element\n * @since 12.24.0\n */\n trackAriaExpanded?: boolean\n /**\n * The callback to run before the overlay is hidden. Returning\n * `false` will prevent hiding.\n * ```\n * (e: event) => boolean | Promise | undefined\n * ```\n * @since 10.19.0\n */\n beforeHide?: BeforeCallback\n /**\n * The callback to run before the overlay is shown. Returning\n * `false` will prevent showing.\n * ```\n * (e: event) => boolean | Promise | undefined\n * ```\n * @since 10.19.0\n */\n beforeShow?: BeforeCallback\n\n /**\n * Additional refs to check for clickOutside behavior\n * @since 10.19.0\n */\n clickOutsideIgnoreRefs?: React.RefObject<HTMLElement>[]\n\n /**\n * The delay when hiding the overlay\n * @since 10.19.0\n */\n hideDelay?: number\n\n /**\n * Keys to hide the overlay when the overlay is focused\n * @a11y OverlayTrigger by default closes on tab. To remove tab from closing\n * and have only Esc keys, set \"containFocus\" to true, or opt-in to a full dialog role.\n * @since 10.19.0\n */\n hideKeys?: {\n overlay: string[]\n target: string[]\n }\n overlay: React.ReactNode\n\n /**\n * Restore focus to the target after the overlay is hidden.\n * 'core-react' will use internal logic to restore focus,\n * 'react-aria-focus-scope' will use 'FocusScope' component from '@react-aria',\n * true will use both.\n * @default true\n * @since 10.19.0\n */\n restoreFocusOnHide?: boolean | 'core-react' | 'react-aria-focus-scope'\n\n /**\n * The delay when showing the overlay\n * @since 10.19.0\n */\n showDelay?: number\n\n /**\n * Keys to show the overlay when the target is focused\n * @since 10.19.0\n */\n showKeys?: string[]\n\n /**\n * Toggles overlay visibility\n * @since 11.2.0\n */\n overlayRef?: React.Ref<OverlayTriggerRef>\n\n /**\n * Accessibility props.\n * @a11y May opionate \"autoFocus\" and \"containFocus\"\n * @since 11.2.0\n */\n role?: OverlayTriggerRole\n\n /**\n * Whether to auto focus the first focusable element in the overlay on mount.\n * True by default for role \"dialog\"\n * @since 11.5.0\n */\n autoFocus?: boolean\n\n /**\n * Whether to contain focus inside the overlay, so users cannot move focus outside, for example in a modal dialog.\n * True by default for role \"dialog\"\n * @since 11.5.0\n * */\n containFocus?: boolean\n\n /**\n * By default, role and id are applied to wrapper. But has knowledge of\n * Set to true, if you want OverlayTrigger to place them on your overlay component.\n *\n * @default false\n * @since 11.5.0\n */\n passA11yPropsToOverlay?: boolean\n /**\n * Optional id for the overlay element.\n * Useful when the parent component needs a stable id\n * to link the trigger (aria-controls) with the overlay (e.g. listbox).\n *\n * @since 12.36.1\n */\n overlayId?: string\n}\n\nexport interface OverlayTriggerRef {\n /**\n * Show visibility\n * @since 11.2.0\n */\n show: () => void\n /**\n * Hide overlay\n * @since 11.2.0\n */\n hide: () => void\n}\n\n/**\n * @deprecatedSince 11.2.0\n * @deprecated To be replaced by OverlayTriggerProps#overlayRef in future release\n */\nexport type DeprecatedOverlayTriggerRef = HTMLElement\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"OverlayTrigger.types.js","names":[],"sources":["../../src/OverlayTrigger/OverlayTrigger.types.ts"],"sourcesContent":["import type { OverlayProps } from '../Overlay/Overlay'\nimport type { PortalProps } from '../Portal/Portal.types'\nimport type { BeforeCallback } from '../_hooks/DelayedCallback'\nimport type { TriggerRenderProps } from '../_hooks/Trigger'\nimport type { VisibilityConfig } from '../_hooks/Visibility'\n\nexport type OverlayTriggerRole =\n | 'dialog'\n | 'menu'\n | 'listbox'\n | 'tooltip'\n | 'none'\n\nexport type PickedOverlayProps = Pick<\n OverlayProps,\n 'canFlip' | 'padding' | 'placement' | 'shrinkOverlay' | 'arrow'\n>\n\nexport type PickedTriggerProps = Pick<\n TriggerRenderProps,\n 'children' | 'trigger'\n>\n\nexport type PickedTriggerRenderProps = Pick<TriggerRenderProps, 'children'>\n\nexport type PickedVisibilityProps = Pick<\n VisibilityConfig,\n 'afterHide' | 'afterShow' | 'initialIsVisible'\n>\n\nexport interface OverlayTriggerProps\n extends PickedOverlayProps,\n PickedTriggerProps,\n PickedTriggerRenderProps,\n PickedVisibilityProps,\n Pick<PortalProps, 'container'> {\n ['aria-describedby']?: string\n ['aria-details']?: string\n ['aria-label']?: string\n ['aria-labelledby']?: string\n /**\n * Boolean to enable code to apply aria-expanded to the source element\n * @since 12.24.0\n */\n trackAriaExpanded?: boolean\n /**\n * The callback to run before the overlay is hidden. Returning\n * `false` will prevent hiding.\n * ```\n * (e: event) => boolean | Promise | undefined\n * ```\n * @since 10.19.0\n */\n beforeHide?: BeforeCallback\n /**\n * The callback to run before the overlay is shown. Returning\n * `false` will prevent showing.\n * ```\n * (e: event) => boolean | Promise | undefined\n * ```\n * @since 10.19.0\n */\n beforeShow?: BeforeCallback\n\n /**\n * Additional refs to check for clickOutside behavior\n * @since 10.19.0\n */\n clickOutsideIgnoreRefs?: React.RefObject<HTMLElement>[]\n\n /**\n * The delay when hiding the overlay\n * @since 10.19.0\n */\n hideDelay?: number\n\n /**\n * Keys to hide the overlay when the overlay is focused\n * @a11y OverlayTrigger by default closes on tab. To remove tab from closing\n * and have only Esc keys, set \"containFocus\" to true, or opt-in to a full dialog role.\n * @since 10.19.0\n */\n hideKeys?: {\n overlay: string[]\n target: string[]\n }\n overlay: React.ReactNode\n\n /**\n * Restore focus to the target after the overlay is hidden.\n * 'core-react' will use internal logic to restore focus,\n * 'react-aria-focus-scope' will use 'FocusScope' component from '@react-aria',\n * true will use both.\n * @default true\n * @since 10.19.0\n */\n restoreFocusOnHide?: boolean | 'core-react' | 'react-aria-focus-scope'\n\n /**\n * The delay when showing the overlay\n * @since 10.19.0\n */\n showDelay?: number\n\n /**\n * Keys to show the overlay when the target is focused\n * @since 10.19.0\n */\n showKeys?: string[]\n\n /**\n * Toggles overlay visibility\n * @since 11.2.0\n */\n overlayRef?: React.Ref<OverlayTriggerRef>\n\n /**\n * Accessibility props.\n * @a11y May opionate \"autoFocus\" and \"containFocus\"\n * @since 11.2.0\n */\n role?: OverlayTriggerRole\n\n /**\n * Whether to auto focus the first focusable element in the overlay on mount.\n * True by default for role \"dialog\"\n * @since 11.5.0\n */\n autoFocus?: boolean\n\n /**\n * Whether to contain focus inside the overlay, so users cannot move focus outside, for example in a modal dialog.\n * True by default for role \"dialog\"\n * @since 11.5.0\n * */\n containFocus?: boolean\n\n /**\n * By default, role and id are applied to wrapper. But has knowledge of\n * Set to true, if you want OverlayTrigger to place them on your overlay component.\n *\n * @default false\n * @since 11.5.0\n */\n passA11yPropsToOverlay?: boolean\n /**\n * Optional id for the overlay element.\n * Useful when the parent component needs a stable id\n * to link the trigger (aria-controls) with the overlay (e.g. listbox).\n *\n * @since 12.36.1\n */\n overlayId?: string\n\n /**\n * When true, locks background scroll (on the document body) while the\n * overlay is visible, following the React Aria overlay pattern. This\n * keeps the overlay from overflowing constrained containers or lagging\n * behind on scroll, since the page itself cannot scroll while it is open.\n *\n * Defaults to true, since most overlays (dropdowns, menus, pickers,\n * flyouts) benefit from this. Set to false for overlays that are not\n * dropdown-like, for example hover/focus-triggered tooltips and popovers,\n * where locking background scroll would be unexpected.\n * @default true\n * @since 12.54.0\n */\n scrollLock?: boolean\n}\n\nexport interface OverlayTriggerRef {\n /**\n * Show visibility\n * @since 11.2.0\n */\n show: () => void\n /**\n * Hide overlay\n * @since 11.2.0\n */\n hide: () => void\n}\n\n/**\n * @deprecatedSince 11.2.0\n * @deprecated To be replaced by OverlayTriggerProps#overlayRef in future release\n */\nexport type DeprecatedOverlayTriggerRef = HTMLElement\n"],"mappings":"","ignoreList":[]}
@@ -36,7 +36,15 @@ type ModalDialogConfig = DialogBase & {
36
36
  */
37
37
  'aria-modal': true;
38
38
  };
39
- type ModalDialogLikeConfig = NonModalDialogConfig | ModalDialogConfig;
39
+ type ModalDialogLikeConfig = (NonModalDialogConfig | ModalDialogConfig) & {
40
+ /**
41
+ * Whether background scroll should be locked while this dialog-like
42
+ * overlay is open, using React Aria's `usePreventScroll`.
43
+ * @default the `isOpen` value
44
+ * @since 12.54.0
45
+ */
46
+ scrollLock?: boolean;
47
+ };
40
48
  type OverlayTriggerA11yConfig = LabelConfig & {
41
49
  /**
42
50
  * Assure `aria-hidden` is not applied. A code side-effect
@@ -50,6 +58,14 @@ type OverlayTriggerA11yConfig = LabelConfig & {
50
58
  canPropOverlayUp: boolean;
51
59
  isOpen: boolean;
52
60
  role?: OverlayTriggerRole;
61
+ /**
62
+ * Whether background scroll should be locked while the overlay is open.
63
+ * Combined with `isOpen` internally, so the lock only ever engages while
64
+ * both this is true and the overlay is actually visible.
65
+ * @default true
66
+ * @since 12.54.0
67
+ */
68
+ scrollLock?: boolean;
53
69
  };
54
70
  /**
55
71
  * Manages labelling for an element and the other DOM. Defaults an ID for `aria-labelledby` usage.
@@ -169,7 +185,7 @@ export declare function useLabelledPopup({ 'aria-describedby': ariaDescribedby,
169
185
  * Modal dialogs are when content is displayed and the user's interaction is limited to only that section until it is dismissed.
170
186
  * [MDN aria modal](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-modal).
171
187
  */
172
- export declare function useModalDialogLike({ 'aria-describedby': ariaDescribedby, 'aria-details': ariaDetails, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, 'aria-modal': ariaModal, id, isOpen, role, }: ModalDialogLikeConfig): {
188
+ export declare function useModalDialogLike({ 'aria-describedby': ariaDescribedby, 'aria-details': ariaDetails, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, 'aria-modal': ariaModal, id, isOpen, role, scrollLock, }: ModalDialogLikeConfig): {
173
189
  dialogProps: {
174
190
  id: string | undefined;
175
191
  role: "dialog" | "alertdialog";
@@ -195,7 +211,7 @@ export declare function useModalDialogLike({ 'aria-describedby': ariaDescribedby
195
211
  * outside of the element (like by portals) will get `aria-hidden=true`
196
212
  * to replace the `aria-modal=true` `inert` nature.
197
213
  * @see useModalDialogLike */
198
- export declare function useOverlayTriggerA11y({ alwaysAriaVisible, 'aria-describedby': ariaDescribedby, 'aria-details': ariaDetails, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, canPropOverlayUp, id: id_, isOpen, role, }: OverlayTriggerA11yConfig): {
214
+ export declare function useOverlayTriggerA11y({ alwaysAriaVisible, 'aria-describedby': ariaDescribedby, 'aria-details': ariaDetails, 'aria-labelledby': ariaLabelledby, 'aria-label': ariaLabel, canPropOverlayUp, id: id_, isOpen, role, scrollLock, }: OverlayTriggerA11yConfig): {
199
215
  focusScopeProps: {
200
216
  autoFocus?: boolean;
201
217
  contain?: boolean;
@@ -4,6 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
6
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import { usePreventScroll } from '@react-aria/overlays';
7
8
  import { useId, useLabels } from '@react-aria/utils';
8
9
  var emptyObj = {};
9
10
  var returnEmpty = function returnEmpty() {
@@ -189,7 +190,9 @@ export function useModalDialogLike(_ref7) {
189
190
  id = _ref7.id,
190
191
  isOpen = _ref7.isOpen,
191
192
  _ref7$role = _ref7.role,
192
- role = _ref7$role === void 0 ? 'dialog' : _ref7$role;
193
+ role = _ref7$role === void 0 ? 'dialog' : _ref7$role,
194
+ _ref7$scrollLock = _ref7.scrollLock,
195
+ scrollLock = _ref7$scrollLock === void 0 ? isOpen : _ref7$scrollLock;
193
196
  var _useLabelled2 = useLabelled({
194
197
  'aria-describedby': ariaDescribedby,
195
198
  'aria-details': ariaDetails,
@@ -206,9 +209,13 @@ export function useModalDialogLike(_ref7) {
206
209
  tabIndex: -1
207
210
  });
208
211
 
209
- // usePreventScroll({
210
- // isDisabled: ariaModal ? !isOpen : true,
211
- // })
212
+ // Locks background scroll (UXI-2599) while this dialog-like overlay is
213
+ // open. `usePreventScroll` reference-counts across simultaneous calls, so
214
+ // nested/parallel overlays (e.g. a Select open inside a Modal) coordinate
215
+ // correctly through a single shared lock.
216
+ usePreventScroll({
217
+ isDisabled: !scrollLock
218
+ });
212
219
 
213
220
  // Fills aria-modal=true
214
221
  // import { ariaHideOutside } from '@react-aria/overlays'
@@ -245,7 +252,9 @@ export function useOverlayTriggerA11y(_ref8) {
245
252
  canPropOverlayUp = _ref8.canPropOverlayUp,
246
253
  id_ = _ref8.id,
247
254
  isOpen = _ref8.isOpen,
248
- role = _ref8.role;
255
+ role = _ref8.role,
256
+ _ref8$scrollLock = _ref8.scrollLock,
257
+ scrollLock = _ref8$scrollLock === void 0 ? true : _ref8$scrollLock;
249
258
  if (
250
259
  // @ts-expect-error Checking for invalid usage
251
260
  role === 'alertdialog') {
@@ -276,7 +285,8 @@ export function useOverlayTriggerA11y(_ref8) {
276
285
  'aria-modal': undefined,
277
286
  // OverlayTrigger only supports non-modal dialogs
278
287
  id: id,
279
- isOpen: isOpen
288
+ isOpen: isOpen,
289
+ scrollLock: scrollLock && isOpen
280
290
  }),
281
291
  dialogProps = _useModalDialogLike.dialogProps,
282
292
  labelProps = _useModalDialogLike.labelProps,