@procore/core-react 12.38.0 → 12.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/.jest/testShims.js +6 -0
  2. package/CHANGELOG.md +43 -0
  3. package/dist/AnchorNavigation/AnchorNavigation.styles.js +3 -3
  4. package/dist/Avatar/Avatar.styles.js +6 -6
  5. package/dist/Avatar/Avatar.styles.js.map +1 -1
  6. package/dist/AvatarStack/AvatarStack.js +65 -25
  7. package/dist/AvatarStack/AvatarStack.js.map +1 -1
  8. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  9. package/dist/AvatarStack/AvatarStack.styles.js.map +1 -1
  10. package/dist/AvatarStack/useAvatarPopover.d.ts +14 -0
  11. package/dist/AvatarStack/useAvatarPopover.js +57 -0
  12. package/dist/AvatarStack/useAvatarPopover.js.map +1 -0
  13. package/dist/AvatarStack/useAvatarPopover.types.d.ts +4 -0
  14. package/dist/AvatarStack/useAvatarPopover.types.js +2 -0
  15. package/dist/AvatarStack/useAvatarPopover.types.js.map +1 -0
  16. package/dist/Badge/Badge.styles.js +2 -2
  17. package/dist/BadgePill/BadgePill.styles.js +4 -4
  18. package/dist/Banner/Banner.styles.js +10 -10
  19. package/dist/Box/Box.styles.js +1 -1
  20. package/dist/Breadcrumbs/Breadcrumbs.styles.js +4 -4
  21. package/dist/Button/Button.styles.js +5 -5
  22. package/dist/Calendar/Calendar.styles.js +9 -9
  23. package/dist/Card/Card.styles.js +1 -1
  24. package/dist/Checkbox/Checkbox.d.ts +0 -1
  25. package/dist/Checkbox/Checkbox.js +5 -6
  26. package/dist/Checkbox/Checkbox.js.map +1 -1
  27. package/dist/Checkbox/Checkbox.styles.js +6 -6
  28. package/dist/ContactItem/ContactItem.styles.js +5 -5
  29. package/dist/Content/Content.styles.js +2 -2
  30. package/dist/DateInput/DateInput.js +12 -2
  31. package/dist/DateInput/DateInput.js.map +1 -1
  32. package/dist/DateInput/DateInput.styles.js +6 -6
  33. package/dist/DateSelect/DateSelect.types.d.ts +1 -1
  34. package/dist/DateSelect/DateSelect.types.js.map +1 -1
  35. package/dist/DetailPage/DetailPage.styles.js +7 -7
  36. package/dist/Dropdown/Dropdown.styles.js +3 -3
  37. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  38. package/dist/Dropzone/Dropzone.js +1 -1
  39. package/dist/Dropzone/Dropzone.styles.js +9 -9
  40. package/dist/EmptyState/EmptyState.styles.js +6 -6
  41. package/dist/Field/Field.styles.js +3 -3
  42. package/dist/FileList/FileList.js +3 -7
  43. package/dist/FileList/FileList.js.map +1 -1
  44. package/dist/FileList/FileList.styles.d.ts +0 -1
  45. package/dist/FileList/FileList.styles.js +3 -7
  46. package/dist/FileList/FileList.styles.js.map +1 -1
  47. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +9 -9
  48. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +3 -3
  49. package/dist/FileSelect/FileSelect.styles.js +2 -2
  50. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  51. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  52. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  53. package/dist/FileSelect/LocalSource/LocalSource.styles.js +4 -4
  54. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  55. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +6 -6
  56. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  57. package/dist/FileToken/FileToken.styles.js +4 -4
  58. package/dist/FilterToken/FilterToken.styles.js +5 -5
  59. package/dist/FlexList/FlexList.styles.js +1 -1
  60. package/dist/Form/Form.js +74 -58
  61. package/dist/Form/Form.js.map +1 -1
  62. package/dist/Form/Form.styles.d.ts +0 -14
  63. package/dist/Form/Form.styles.js +14 -24
  64. package/dist/Form/Form.styles.js.map +1 -1
  65. package/dist/Form/Form.types.d.ts +22 -2
  66. package/dist/Form/Form.types.js.map +1 -1
  67. package/dist/Form/FormFieldTooltip.js +4 -11
  68. package/dist/Form/FormFieldTooltip.js.map +1 -1
  69. package/dist/Form/StyledFormikForm.styles.js +2 -2
  70. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  71. package/dist/Grid/Grid.styles.js +2 -2
  72. package/dist/GroupSelect/GroupSelect.js +5 -4
  73. package/dist/GroupSelect/GroupSelect.js.map +1 -1
  74. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  75. package/dist/GroupSelect/GroupSelect.types.d.ts +5 -5
  76. package/dist/GroupSelect/GroupSelect.types.js.map +1 -1
  77. package/dist/Input/Input.styles.js +1 -1
  78. package/dist/Link/Link.styles.js +1 -1
  79. package/dist/ListPage/ListPage.styles.js +8 -8
  80. package/dist/Loader/Loader.styles.js +2 -2
  81. package/dist/Menu/Menu.js +1 -5
  82. package/dist/Menu/Menu.js.map +1 -1
  83. package/dist/MenuImperative/MenuImperative.js +7 -10
  84. package/dist/MenuImperative/MenuImperative.js.map +1 -1
  85. package/dist/MenuImperative/MenuImperative.styles.d.ts +2 -3
  86. package/dist/MenuImperative/MenuImperative.styles.js +26 -25
  87. package/dist/MenuImperative/MenuImperative.styles.js.map +1 -1
  88. package/dist/MenuImperative/MenuImperative.types.d.ts +4 -0
  89. package/dist/MenuImperative/MenuImperative.types.js.map +1 -1
  90. package/dist/MenuImperative/sensors.js +16 -58
  91. package/dist/MenuImperative/sensors.js.map +1 -1
  92. package/dist/Modal/Modal.styles.js +13 -13
  93. package/dist/MultiSelect/MultiSelect.js +50 -28
  94. package/dist/MultiSelect/MultiSelect.js.map +1 -1
  95. package/dist/MultiSelect/MultiSelect.styles.d.ts +1 -0
  96. package/dist/MultiSelect/MultiSelect.styles.js +12 -8
  97. package/dist/MultiSelect/MultiSelect.styles.js.map +1 -1
  98. package/dist/MultiSelect/MultiSelect.types.d.ts +31 -1
  99. package/dist/MultiSelect/MultiSelect.types.js.map +1 -1
  100. package/dist/NextMenu/NextMenu.styles.js +3 -3
  101. package/dist/Notation/Notation.js +1 -1
  102. package/dist/NumberInput/NumberInput.styles.js +7 -7
  103. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  104. package/dist/OverlayTrigger/a11yPresets.js +5 -3
  105. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  106. package/dist/PageLayout/PageLayout.js +31 -12
  107. package/dist/PageLayout/PageLayout.js.map +1 -1
  108. package/dist/PageLayout/PageLayout.styles.js +16 -16
  109. package/dist/PageLayout/PageLayout.types.d.ts +10 -0
  110. package/dist/PageLayout/PageLayout.types.js.map +1 -1
  111. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +1 -1
  112. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  113. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  114. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  115. package/dist/Pagination/Pagination.styles.js +5 -5
  116. package/dist/Panel/Panel.styles.js +11 -11
  117. package/dist/Pill/Pill.styles.js +3 -3
  118. package/dist/PillSelect/PillSelect.js +4 -3
  119. package/dist/PillSelect/PillSelect.js.map +1 -1
  120. package/dist/PillSelect/PillSelect.styles.js +4 -4
  121. package/dist/Popover/Popover.styles.js +2 -2
  122. package/dist/Portal/Portal.styles.js +1 -1
  123. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  124. package/dist/RadioButton/RadioButton.styles.js +3 -3
  125. package/dist/Required/Required.styles.js +3 -3
  126. package/dist/Search/Search.styles.js +5 -5
  127. package/dist/Section/Section.styles.js +9 -9
  128. package/dist/Section/Section.styles.js.map +1 -1
  129. package/dist/SegmentedController/SegmentedController.js +1 -2
  130. package/dist/SegmentedController/SegmentedController.js.map +1 -1
  131. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  132. package/dist/Select/Select.d.ts +3 -4
  133. package/dist/Select/Select.js +2 -2
  134. package/dist/Select/Select.js.map +1 -1
  135. package/dist/Select/Select.styles.js +9 -9
  136. package/dist/Select/Select.styles.js.map +1 -1
  137. package/dist/Select/Select.types.d.ts +7 -0
  138. package/dist/Select/Select.types.js.map +1 -1
  139. package/dist/Select/index.d.ts +1 -1
  140. package/dist/Select/index.js.map +1 -1
  141. package/dist/Semantic/Semantic.styles.js +9 -9
  142. package/dist/Slider/Slider.styles.js +5 -5
  143. package/dist/Spinner/Spinner.styles.js +7 -7
  144. package/dist/SplitViewCard/SplitViewCard.js +13 -0
  145. package/dist/SplitViewCard/SplitViewCard.js.map +1 -1
  146. package/dist/SplitViewCard/SplitViewCard.styles.js +8 -8
  147. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  148. package/dist/SuperSelect/SuperSelect.styles.js +38 -38
  149. package/dist/Switch/Switch.styles.js +4 -4
  150. package/dist/Table/Table.styles.d.ts +1 -1
  151. package/dist/Table/Table.styles.js +28 -28
  152. package/dist/TableShelf/TableShelf.styles.js +5 -5
  153. package/dist/Tabs/Tabs.styles.js +15 -15
  154. package/dist/Tearsheet/Tearsheet.styles.js +17 -28
  155. package/dist/Tearsheet/Tearsheet.styles.js.map +1 -1
  156. package/dist/Tearsheet/storybook/PageLayoutDemo.js +7 -1
  157. package/dist/Tearsheet/storybook/PageLayoutDemo.js.map +1 -1
  158. package/dist/TextArea/TextArea.styles.js +1 -1
  159. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  160. package/dist/Thumbnail/Thumbnail.styles.js +17 -17
  161. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  162. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  163. package/dist/Tile/Tile.styles.js +8 -8
  164. package/dist/Title/Title.styles.js +7 -7
  165. package/dist/Toast/Toast.styles.js +3 -3
  166. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  167. package/dist/Token/Token.styles.js +3 -3
  168. package/dist/ToolHeader/ToolHeader.styles.js +6 -6
  169. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  170. package/dist/Tooltip/Tooltip.d.ts +4 -2
  171. package/dist/Tooltip/Tooltip.js +30 -5
  172. package/dist/Tooltip/Tooltip.js.map +1 -1
  173. package/dist/Tooltip/Tooltip.styles.d.ts +1 -0
  174. package/dist/Tooltip/Tooltip.styles.js +12 -4
  175. package/dist/Tooltip/Tooltip.styles.js.map +1 -1
  176. package/dist/Tooltip/Tooltip.types.d.ts +8 -0
  177. package/dist/Tooltip/Tooltip.types.js.map +1 -1
  178. package/dist/Tree/Tree.js +1 -1
  179. package/dist/Tree/Tree.styles.js +10 -10
  180. package/dist/Typeahead/Typeahead.styles.js +3 -3
  181. package/dist/Typography/Typography.styles.js +1 -1
  182. package/dist/Typography/Typography.table.story.js +2 -2
  183. package/dist/_hooks/I18n.d.ts +61 -48
  184. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.d.ts +0 -1
  185. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js +0 -1
  186. package/dist/_hooks/IntersectionObserver/createIntersectionObserver.js.map +1 -1
  187. package/dist/_locales/de-DE.json +3 -1
  188. package/dist/_locales/en-AU.json +3 -1
  189. package/dist/_locales/en-CA.json +3 -1
  190. package/dist/_locales/en-GB.json +3 -1
  191. package/dist/_locales/en.json +2 -1
  192. package/dist/_locales/es-ES.json +3 -1
  193. package/dist/_locales/es.json +3 -1
  194. package/dist/_locales/fr-CA.json +3 -1
  195. package/dist/_locales/fr-FR.json +3 -1
  196. package/dist/_locales/is-IS.json +3 -1
  197. package/dist/_locales/it-IT.json +3 -1
  198. package/dist/_locales/ja-JP.json +3 -1
  199. package/dist/_locales/pl-PL.json +3 -1
  200. package/dist/_locales/pseudo.json +2 -1
  201. package/dist/_locales/pt-BR.json +3 -1
  202. package/dist/_locales/pt-PT.json +5 -3
  203. package/dist/_locales/th-TH.json +3 -1
  204. package/dist/_locales/zh-SG.json +3 -1
  205. package/dist/_locales/zh-TW.json +3 -1
  206. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  207. package/dist/_storyHelpers_/components/StoryGrid.js +3 -3
  208. package/dist/_styles/mixins.d.ts +13 -1
  209. package/dist/_styles/mixins.js +15 -1
  210. package/dist/_styles/mixins.js.map +1 -1
  211. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +3 -3
  212. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  213. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +24 -24
  214. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  215. package/dist/_typedoc/Banner/Banner.types.json +15 -15
  216. package/dist/_typedoc/Box/Box.types.json +68 -68
  217. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +10 -10
  218. package/dist/_typedoc/Button/Button.types.json +13 -13
  219. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  220. package/dist/_typedoc/Card/Card.types.json +6 -6
  221. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  222. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  223. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  224. package/dist/_typedoc/DateSelect/DateSelect.types.json +13 -13
  225. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  226. package/dist/_typedoc/Dropdown/Dropdown.types.json +37 -37
  227. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +31 -31
  228. package/dist/_typedoc/Dropzone/Dropzone.types.json +44 -44
  229. package/dist/_typedoc/EmptyState/EmptyState.types.json +16 -16
  230. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  231. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  232. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  233. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  234. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +9 -9
  235. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  236. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  237. package/dist/_typedoc/Form/Form.types.json +862 -762
  238. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  239. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  240. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +75 -55
  241. package/dist/_typedoc/Input/Input.types.json +2 -2
  242. package/dist/_typedoc/Link/Link.types.json +1 -1
  243. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  244. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  245. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +77 -77
  246. package/dist/_typedoc/Modal/Modal.types.json +46 -46
  247. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +52 -32
  248. package/dist/_typedoc/NextTile/NextTile.types.json +32 -32
  249. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  250. package/dist/_typedoc/NumberInput/NumberInput.types.json +48 -48
  251. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +33 -33
  252. package/dist/_typedoc/PageLayout/PageLayout.types.json +46 -26
  253. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  254. package/dist/_typedoc/Panel/Panel.types.json +30 -30
  255. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  256. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  257. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  258. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  259. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  260. package/dist/_typedoc/Required/Required.types.json +5 -5
  261. package/dist/_typedoc/Search/Search.types.json +18 -18
  262. package/dist/_typedoc/Section/Section.types.json +15 -15
  263. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  264. package/dist/_typedoc/Select/Select.types.json +109 -63
  265. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  266. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  267. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  268. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  269. package/dist/_typedoc/Table/Table.types.json +102 -102
  270. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  271. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  272. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  273. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  274. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  275. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  276. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  277. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  278. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  279. package/dist/_typedoc/Title/Title.types.json +1 -1
  280. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  281. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  282. package/dist/_typedoc/Token/Token.types.json +7 -7
  283. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  284. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  285. package/dist/_typedoc/Tooltip/Tooltip.types.json +25 -14
  286. package/dist/_typedoc/Tree/Tree.types.json +88 -88
  287. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  288. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  289. package/dist/_typedoc/_utils/types.json +3 -3
  290. package/dist/_utils/scrollIntoView.js +21 -7
  291. package/dist/_utils/scrollIntoView.js.map +1 -1
  292. package/package.json +8 -7
  293. package/dist/Checkbox/CheckboxTooltip.d.ts +0 -4
  294. package/dist/Checkbox/CheckboxTooltip.js +0 -26
  295. package/dist/Checkbox/CheckboxTooltip.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\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 */\n groupHeaderRenderer: (group: GroupItem) => 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 /**\n * Callback for rendering header for each entry in `groups`\n * ```\n * (group: GroupItem) => React.ReactNode\n * ```\n * @since 10.19.0\n */\n groupHeaderRenderer?: (group: GroupItem) => 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"],"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\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_38_0__sc-3o6zya-0"
9
+ componentId: "core-12_39_0__sc-3o6zya-0"
10
10
  })([""]);
11
11
  export var StyledItem = /*#__PURE__*/styled.div.withConfig({
12
12
  displayName: "StyledItem",
13
- componentId: "core-12_38_0__sc-3o6zya-1"
13
+ componentId: "core-12_39_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_38_0__sc-3o6zya-2"
17
+ componentId: "core-12_39_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
@@ -14,7 +14,7 @@ var variantColorMap = {
14
14
  };
15
15
  var StyledNotation = /*#__PURE__*/styled.i.withConfig({
16
16
  displayName: "StyledNotation",
17
- componentId: "core-12_38_0__sc-160q1m6-0"
17
+ componentId: "core-12_39_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_38_0__sc-1782nvg-0"
15
+ componentId: "core-12_39_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_38_0__sc-1782nvg-1"
22
+ componentId: "core-12_39_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_38_0__sc-1782nvg-2"
26
+ componentId: "core-12_39_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_38_0__sc-1782nvg-3"
33
+ componentId: "core-12_39_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_38_0__sc-1782nvg-4"
37
+ componentId: "core-12_39_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_38_0__sc-1782nvg-5"
41
+ componentId: "core-12_39_0__sc-1782nvg-5"
42
42
  })([""]);
43
43
  export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
44
44
  displayName: "StyledWrapper",
45
- componentId: "core-12_38_0__sc-1782nvg-6"
45
+ componentId: "core-12_39_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_38_0__sc-1epxw7u-0"
5
+ componentId: "core-12_39_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
@@ -43,12 +43,14 @@ var a11yPresets = {
43
43
  getTriggerProps: function getTriggerProps(_ref4) {
44
44
  var isVisible = _ref4.isVisible,
45
45
  overlayId = _ref4.overlayId;
46
- return isVisible ? {
47
- 'aria-describedby': overlayId
48
- } : {};
46
+ return {
47
+ 'aria-describedby': isVisible ? overlayId : undefined
48
+ // 'aria-expanded': isVisible,
49
+ };
49
50
  }
50
51
  }
51
52
  };
53
+
52
54
  export function getA11yPreset(role) {
53
55
  switch (role) {
54
56
  case 'dialog':
@@ -1 +1 @@
1
- {"version":3,"file":"a11yPresets.js","names":["ariaHideOutside","useId","useLabels","React","emptyObj","returnEmpty","a11yPresets","haspopup","getOverlayProps","_ref","role","overlayId","id","getTriggerProps","_ref2","isVisible","undefined","tooltip","_ref3","_ref4","getA11yPreset","useLabelled","props","_ref5","ariaDescribedby","ariaDetails","ariaLabelledby","ariaLabel","ariaLabelOnly","labelledId","widgetId","fieldProps","descriptionProps","labelProps","widgetProps","_objectSpread","useLabelledPopup","_ref6","_getA11yPreset$getTri","_getA11yPreset","_getA11yPreset$getOve","_getA11yPreset2","id_","isOpen","_ref6$type","type","popupRole","popupId_","popupId","presetArgs","triggerProps","call","overlayProps","_useLabelled","popupProps","useModalDialogLike","_ref7","isModal","ref","_ref7$role","_useLabelled2","dialogProps","tabIndex","useLayoutEffect","current","focusScopeProps","autoFocus","contain","restoreFocus","useOverlayTriggerA11y","_ref8","alwaysAriaVisible","canPropOverlayUp","isDialog","_getA11yPreset3","overlayA11yProps","wrapperA11yProps","_useModalDialogLike","portalProps","wrapperFinalProps","focusScopeFinalProps","wrapperProps"],"sources":["../../src/OverlayTrigger/a11yPresets.ts"],"sourcesContent":["import { ariaHideOutside } from '@react-aria/overlays'\nimport { useId, useLabels } from '@react-aria/utils'\nimport type { AriaAttributes } from 'react'\nimport React from 'react'\nimport type { OverlayTriggerRole } from './OverlayTrigger.types'\n\nconst emptyObj = {}\nconst returnEmpty: GetA11yProps = () => ({})\n\ntype GetA11yProps = (props: {\n role: OverlayTriggerRole\n isVisible: boolean\n overlayId: string\n}) => AriaAttributes & { id?: string }\n\nconst a11yPresets: Record<\n 'tooltip' | 'haspopup',\n {\n getOverlayProps: GetA11yProps\n getTriggerProps: GetA11yProps\n }\n> = {\n haspopup: {\n getOverlayProps: ({ role, overlayId }) => ({\n id: overlayId,\n role,\n }),\n getTriggerProps: ({ role, isVisible, overlayId }) => ({\n 'aria-expanded': isVisible,\n 'aria-controls': isVisible ? overlayId : undefined,\n 'aria-haspopup': role as 'dialog' | 'listbox' | 'menu',\n }),\n },\n tooltip: {\n getOverlayProps: ({ overlayId }) => ({\n role: 'tooltip',\n id: overlayId,\n }),\n getTriggerProps: ({ isVisible, overlayId }) =>\n isVisible\n ? {\n 'aria-describedby': overlayId,\n }\n : {},\n },\n}\n\nexport function getA11yPreset(role?: OverlayTriggerRole) {\n switch (role) {\n case 'dialog':\n case 'listbox':\n case 'menu':\n return a11yPresets.haspopup\n case 'tooltip':\n return a11yPresets.tooltip\n case 'none':\n return {\n getOverlayProps: (() => ({ role: 'none' })) as GetA11yProps,\n getTriggerProps: returnEmpty,\n }\n default:\n return {\n getOverlayProps: returnEmpty,\n getTriggerProps: returnEmpty,\n }\n }\n}\n\ntype LabelConfig = {\n 'aria-describedby'?: string\n 'aria-details'?: string\n 'aria-labelledby'?: string\n 'aria-label'?: string\n /**\n * ID for the widget itself\n */\n id?: string\n}\n\ntype DialogBase = LabelConfig & {\n isOpen: boolean\n role?: 'dialog'\n}\n\ntype NonModalDialogConfig = DialogBase & {\n isModal?: never | false\n}\n\ntype ModalDialogConfig = DialogBase & {\n /**\n *\n * To enable `ariaHideOutside`. Set `isModal` to false to disable.\n * @a11y Replicates `aria-modal` inert outside content\n * @default false\n */\n isModal: true\n ref: React.RefObject<HTMLElement>\n}\n\ntype ModalDialogLikeConfig = NonModalDialogConfig | ModalDialogConfig\n\ntype OverlayTriggerA11yConfig = LabelConfig & {\n /**\n * Assure `aria-hidden` is not applied. A code side-effect\n * from `ariaHideOutside` hiding everthing outside the scope.\n */\n alwaysAriaVisible?: boolean\n /**\n * When properties should be passed to the overlay UI itself,\n * and not the wrapper element.\n */\n canPropOverlayUp: boolean\n isOpen: boolean\n role?: OverlayTriggerRole\n // ref: React.RefObject<HTMLElement> // Only necessary for modal\n}\n\n/**\n * Manages labelling for an element and the other DOM. Defaults an ID for `aria-labelledby` usage.\n *\n * When `aria-label` and `aria-labelledby` both exist, it combines them into `aria-labelledby` for a screen reader chain.\n * @link [W3 naming with aria-labelledby](https://www.w3.org/WAI/ARIA/apg/practices/names-and-descriptions/#naming_with_aria-labelledby)\n */\nexport function useLabelled(props?: LabelConfig) {\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n } = props || (emptyObj as LabelConfig)\n const ariaLabelOnly = ariaLabel && !ariaLabelledby\n\n // Generate an ID. We want to use this unless they are using only aria-label\n const labelledId = useId(ariaLabelledby)\n\n // Merges aria-label and aria-labelledby into aria-labelledby when both exist\n const widgetId = useId(id)\n let fieldProps = useLabels({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelOnly ? undefined : labelledId,\n id: widgetId,\n })\n\n return {\n descriptionProps: { id: ariaDescribedby },\n labelProps: { id: ariaLabelOnly ? undefined : labelledId },\n widgetProps: {\n ...fieldProps,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n },\n }\n}\n\n/**\n * Cover the label links for the trigger (button), the popup element (dialog), and the popup element title (heading).\n * Similar to [React Aria useOverlayTrigger](https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/useOverlayTrigger.ts)\n * but with element title support.\n * @link [MDN aria-haspopup](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup)\n */\nexport function useLabelledPopup({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id: id_,\n isOpen,\n type = 'button',\n popupRole,\n popupId: popupId_,\n}: LabelConfig & {\n isOpen: boolean\n popupId?: string\n type?: 'button' | 'combobox' // Role? Not used. Show concept that popups manage 2 roles\n popupRole: 'dialog' | 'menu' | 'listbox'\n}) {\n /** Web spec default for aria-haspopup=true is menu, unless element has role combobox, which have an implicit aria-haspopup value of listbox. */\n // const popupRole = popupRole_ || type === 'combobox' ? 'listbox' : 'menu'\n const id = useId(id_)\n const popupId = useId(popupId_)\n\n const presetArgs = {\n isVisible: isOpen,\n role: popupRole,\n overlayId: popupId,\n }\n\n const triggerProps = getA11yPreset(popupRole).getTriggerProps?.(presetArgs)\n const overlayProps = getA11yPreset(popupRole).getOverlayProps?.(presetArgs)\n\n const { labelProps, widgetProps } = useLabelled({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n })\n\n return {\n labelProps,\n popupProps: { role: popupRole, ...widgetProps, ...overlayProps },\n triggerProps,\n }\n}\n\n/**\n * For dialog experiences:\n * - Has role dialog and aria linked title props\n * - Focus management props to work with FocusScope\n *\n * For modal dialog experiences (full screen locked experiences):\n * - Hides old and new content outside with aria-hidden with ariaHideOutside (like aria-modal)\n * - (it will in breaking) Prevent scroll\n *\n * For either experiences, you still MUST support:\n * - have Escape key to close (It should!)\n * - have click outside, like scrim click\n *\n * _More about 'modal dialog' and `isModal` not using `aria-modal`:_\n * Setting aria-modal=\"true\" tells assistive technologies to let the user know the ability to interact with,\n * or access other content on the page requires the modal dialog to be closed or otherwise lose focus.\n * Modal dialogs are when content is displayed and the user's interaction is limited to only that section until it is dismissed.\n * [MDN aria modal](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-modal).\n * To support the most, like Narrator in Edge, Core React uses `ariaHideOutside` to set `aria-hidden` on\n * all elements outside the dialog, and **all elements outside added while opened**, so the dialog will act as a\n * _modal_ even without `aria-modal` on the dialog itself. See Future Considerations below.\n * [Screen Reader aria modal support table](https://a11ysupport.io/tech/aria/aria-modal_attribute) - [MS Narrator Edge aria modal support](https://a11ysupport.io/tests/apg__modal-dialog-example/aria__aria-modal_attribute/convey_presence/narrator/edge)\n * _Future Considerations:_ Replace ariaHideOutside with aria-modal=\"true\".\n * Using aria-modal, then we would need to involve Portal and so tooltips\n * or Toasts could mount within the visible aria-modal container.\n */\n\nexport function useModalDialogLike({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n isModal,\n isOpen,\n // @ts-expect-error\n ref,\n role = 'dialog',\n}: ModalDialogLikeConfig) {\n const { labelProps, widgetProps } = useLabelled({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n })\n\n const dialogProps = {\n // 'aria-modal': true,\n ...widgetProps,\n id,\n role,\n tabIndex: -1,\n }\n\n // usePreventScroll({\n // isDisabled: isModal ? !isOpen : true,\n // })\n\n // Fills aria-modal=true\n React.useLayoutEffect(() => {\n if (isModal && isOpen && ref.current) {\n // Could add additional visible element refs here\n return ariaHideOutside([ref.current])\n }\n }, [isModal, isOpen, ref])\n\n return {\n dialogProps,\n labelProps,\n focusScopeProps: {\n autoFocus: true,\n contain: true,\n restoreFocus: true,\n },\n }\n}\n\n/**\n * Takes many roles and determines props necessary for DOM/components.\n * **Side effect of role=\"dialog\"**, current and any content added later\n * outside of the element (like by portals) will get `aria-hidden=true`\n * to replace the `aria-modal=true` `inert` nature.\n * @see useModalDialogLike */\nexport function useOverlayTriggerA11y({\n alwaysAriaVisible,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n // can we remove this? have it role based? be optional?\n canPropOverlayUp,\n id: id_,\n isOpen,\n role,\n}: OverlayTriggerA11yConfig) {\n const isDialog = role === 'dialog'\n\n const id = useId(id_)\n\n const { getTriggerProps, getOverlayProps } = getA11yPreset(role)\n\n const triggerProps = getTriggerProps?.({\n isVisible: isOpen,\n role: role!,\n overlayId: id,\n })\n\n const overlayA11yProps = getOverlayProps?.({\n isVisible: isOpen,\n role: role!,\n overlayId: id,\n })\n\n const wrapperA11yProps = !canPropOverlayUp ? overlayA11yProps : emptyObj\n const overlayProps = canPropOverlayUp ? overlayA11yProps : emptyObj\n\n const { dialogProps, labelProps, focusScopeProps } = useModalDialogLike({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n isModal: false,\n isOpen,\n })\n\n /** This is a code side-effect from ariaHideOutside hiding everthing */\n const portalProps =\n role === 'tooltip' || alwaysAriaVisible // || !role\n ? { 'data-react-aria-top-layer': true, 'data-live-announcer': true }\n : emptyObj\n\n /**\n * If it is a dialog, we can merge the dialog props with any haspopup props\n */\n const wrapperFinalProps = isDialog\n ? {\n ...wrapperA11yProps,\n ...dialogProps,\n }\n : wrapperA11yProps\n\n /**\n * If it is a dialog, we have opinions on `FocusScope` props.\n */\n const focusScopeFinalProps = isDialog\n ? focusScopeProps\n : (emptyObj as {\n autoFocus?: boolean\n contain?: boolean\n restoreFocus?: boolean\n })\n\n return {\n focusScopeProps: focusScopeFinalProps,\n labelProps,\n overlayProps,\n portalProps,\n triggerProps,\n wrapperProps: wrapperFinalProps,\n }\n}\n\n// WIP Example combobox\n// function useCombox({\n// controls,\n// isOpen = false,\n// }: {\n// controls: 'dialog' | 'menu' | 'listbox'\n// isOpen: boolean\n// }) {\n// const { labelProps, popupProps, triggerProps } = useLabelledPopup({\n// role: controls,\n// type: 'combobox',\n// isOpen,\n// })\n// dispatch between elements.\n// NOTE combobox has two labels, that could be different\n// one for the trigger input (typically the form label)\n// second for the thing it controls (listbox, dialog)\n// - label id=1\n// - input role='combobox' aria-labelledby=1\n// - div role={controls} aria-label\n// Also, any icon only buttons like clear or open should have a\n// label and -1 tabindex. No nested interactive roles.\n// }\n"],"mappings":"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"}
1
+ {"version":3,"file":"a11yPresets.js","names":["ariaHideOutside","useId","useLabels","React","emptyObj","returnEmpty","a11yPresets","haspopup","getOverlayProps","_ref","role","overlayId","id","getTriggerProps","_ref2","isVisible","undefined","tooltip","_ref3","_ref4","getA11yPreset","useLabelled","props","_ref5","ariaDescribedby","ariaDetails","ariaLabelledby","ariaLabel","ariaLabelOnly","labelledId","widgetId","fieldProps","descriptionProps","labelProps","widgetProps","_objectSpread","useLabelledPopup","_ref6","_getA11yPreset$getTri","_getA11yPreset","_getA11yPreset$getOve","_getA11yPreset2","id_","isOpen","_ref6$type","type","popupRole","popupId_","popupId","presetArgs","triggerProps","call","overlayProps","_useLabelled","popupProps","useModalDialogLike","_ref7","isModal","ref","_ref7$role","_useLabelled2","dialogProps","tabIndex","useLayoutEffect","current","focusScopeProps","autoFocus","contain","restoreFocus","useOverlayTriggerA11y","_ref8","alwaysAriaVisible","canPropOverlayUp","isDialog","_getA11yPreset3","overlayA11yProps","wrapperA11yProps","_useModalDialogLike","portalProps","wrapperFinalProps","focusScopeFinalProps","wrapperProps"],"sources":["../../src/OverlayTrigger/a11yPresets.ts"],"sourcesContent":["import { ariaHideOutside } from '@react-aria/overlays'\nimport { useId, useLabels } from '@react-aria/utils'\nimport type { AriaAttributes } from 'react'\nimport React from 'react'\nimport type { OverlayTriggerRole } from './OverlayTrigger.types'\n\nconst emptyObj = {}\nconst returnEmpty: GetA11yProps = () => ({})\n\ntype GetA11yProps = (props: {\n role: OverlayTriggerRole\n isVisible: boolean\n overlayId: string\n}) => AriaAttributes & { id?: string }\n\nconst a11yPresets: Record<\n 'tooltip' | 'haspopup',\n {\n getOverlayProps: GetA11yProps\n getTriggerProps: GetA11yProps\n }\n> = {\n haspopup: {\n getOverlayProps: ({ role, overlayId }) => ({\n id: overlayId,\n role,\n }),\n getTriggerProps: ({ role, isVisible, overlayId }) => ({\n 'aria-expanded': isVisible,\n 'aria-controls': isVisible ? overlayId : undefined,\n 'aria-haspopup': role as 'dialog' | 'listbox' | 'menu',\n }),\n },\n tooltip: {\n getOverlayProps: ({ overlayId }) => ({\n role: 'tooltip',\n id: overlayId,\n }),\n getTriggerProps: ({ isVisible, overlayId }) => ({\n 'aria-describedby': isVisible ? overlayId : undefined,\n // 'aria-expanded': isVisible,\n }),\n },\n}\n\nexport function getA11yPreset(role?: OverlayTriggerRole) {\n switch (role) {\n case 'dialog':\n case 'listbox':\n case 'menu':\n return a11yPresets.haspopup\n case 'tooltip':\n return a11yPresets.tooltip\n case 'none':\n return {\n getOverlayProps: (() => ({ role: 'none' })) as GetA11yProps,\n getTriggerProps: returnEmpty,\n }\n default:\n return {\n getOverlayProps: returnEmpty,\n getTriggerProps: returnEmpty,\n }\n }\n}\n\ntype LabelConfig = {\n 'aria-describedby'?: string\n 'aria-details'?: string\n 'aria-labelledby'?: string\n 'aria-label'?: string\n /**\n * ID for the widget itself\n */\n id?: string\n}\n\ntype DialogBase = LabelConfig & {\n isOpen: boolean\n role?: 'dialog'\n}\n\ntype NonModalDialogConfig = DialogBase & {\n isModal?: never | false\n}\n\ntype ModalDialogConfig = DialogBase & {\n /**\n *\n * To enable `ariaHideOutside`. Set `isModal` to false to disable.\n * @a11y Replicates `aria-modal` inert outside content\n * @default false\n */\n isModal: true\n ref: React.RefObject<HTMLElement>\n}\n\ntype ModalDialogLikeConfig = NonModalDialogConfig | ModalDialogConfig\n\ntype OverlayTriggerA11yConfig = LabelConfig & {\n /**\n * Assure `aria-hidden` is not applied. A code side-effect\n * from `ariaHideOutside` hiding everthing outside the scope.\n */\n alwaysAriaVisible?: boolean\n /**\n * When properties should be passed to the overlay UI itself,\n * and not the wrapper element.\n */\n canPropOverlayUp: boolean\n isOpen: boolean\n role?: OverlayTriggerRole\n // ref: React.RefObject<HTMLElement> // Only necessary for modal\n}\n\n/**\n * Manages labelling for an element and the other DOM. Defaults an ID for `aria-labelledby` usage.\n *\n * When `aria-label` and `aria-labelledby` both exist, it combines them into `aria-labelledby` for a screen reader chain.\n * @link [W3 naming with aria-labelledby](https://www.w3.org/WAI/ARIA/apg/practices/names-and-descriptions/#naming_with_aria-labelledby)\n */\nexport function useLabelled(props?: LabelConfig) {\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n } = props || (emptyObj as LabelConfig)\n const ariaLabelOnly = ariaLabel && !ariaLabelledby\n\n // Generate an ID. We want to use this unless they are using only aria-label\n const labelledId = useId(ariaLabelledby)\n\n // Merges aria-label and aria-labelledby into aria-labelledby when both exist\n const widgetId = useId(id)\n let fieldProps = useLabels({\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelOnly ? undefined : labelledId,\n id: widgetId,\n })\n\n return {\n descriptionProps: { id: ariaDescribedby },\n labelProps: { id: ariaLabelOnly ? undefined : labelledId },\n widgetProps: {\n ...fieldProps,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n },\n }\n}\n\n/**\n * Cover the label links for the trigger (button), the popup element (dialog), and the popup element title (heading).\n * Similar to [React Aria useOverlayTrigger](https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/overlays/src/useOverlayTrigger.ts)\n * but with element title support.\n * @link [MDN aria-haspopup](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-haspopup)\n */\nexport function useLabelledPopup({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id: id_,\n isOpen,\n type = 'button',\n popupRole,\n popupId: popupId_,\n}: LabelConfig & {\n isOpen: boolean\n popupId?: string\n type?: 'button' | 'combobox' // Role? Not used. Show concept that popups manage 2 roles\n popupRole: 'dialog' | 'menu' | 'listbox'\n}) {\n /** Web spec default for aria-haspopup=true is menu, unless element has role combobox, which have an implicit aria-haspopup value of listbox. */\n // const popupRole = popupRole_ || type === 'combobox' ? 'listbox' : 'menu'\n const id = useId(id_)\n const popupId = useId(popupId_)\n\n const presetArgs = {\n isVisible: isOpen,\n role: popupRole,\n overlayId: popupId,\n }\n\n const triggerProps = getA11yPreset(popupRole).getTriggerProps?.(presetArgs)\n const overlayProps = getA11yPreset(popupRole).getOverlayProps?.(presetArgs)\n\n const { labelProps, widgetProps } = useLabelled({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n })\n\n return {\n labelProps,\n popupProps: { role: popupRole, ...widgetProps, ...overlayProps },\n triggerProps,\n }\n}\n\n/**\n * For dialog experiences:\n * - Has role dialog and aria linked title props\n * - Focus management props to work with FocusScope\n *\n * For modal dialog experiences (full screen locked experiences):\n * - Hides old and new content outside with aria-hidden with ariaHideOutside (like aria-modal)\n * - (it will in breaking) Prevent scroll\n *\n * For either experiences, you still MUST support:\n * - have Escape key to close (It should!)\n * - have click outside, like scrim click\n *\n * _More about 'modal dialog' and `isModal` not using `aria-modal`:_\n * Setting aria-modal=\"true\" tells assistive technologies to let the user know the ability to interact with,\n * or access other content on the page requires the modal dialog to be closed or otherwise lose focus.\n * Modal dialogs are when content is displayed and the user's interaction is limited to only that section until it is dismissed.\n * [MDN aria modal](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-modal).\n * To support the most, like Narrator in Edge, Core React uses `ariaHideOutside` to set `aria-hidden` on\n * all elements outside the dialog, and **all elements outside added while opened**, so the dialog will act as a\n * _modal_ even without `aria-modal` on the dialog itself. See Future Considerations below.\n * [Screen Reader aria modal support table](https://a11ysupport.io/tech/aria/aria-modal_attribute) - [MS Narrator Edge aria modal support](https://a11ysupport.io/tests/apg__modal-dialog-example/aria__aria-modal_attribute/convey_presence/narrator/edge)\n * _Future Considerations:_ Replace ariaHideOutside with aria-modal=\"true\".\n * Using aria-modal, then we would need to involve Portal and so tooltips\n * or Toasts could mount within the visible aria-modal container.\n */\n\nexport function useModalDialogLike({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n isModal,\n isOpen,\n // @ts-expect-error\n ref,\n role = 'dialog',\n}: ModalDialogLikeConfig) {\n const { labelProps, widgetProps } = useLabelled({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n })\n\n const dialogProps = {\n // 'aria-modal': true,\n ...widgetProps,\n id,\n role,\n tabIndex: -1,\n }\n\n // usePreventScroll({\n // isDisabled: isModal ? !isOpen : true,\n // })\n\n // Fills aria-modal=true\n React.useLayoutEffect(() => {\n if (isModal && isOpen && ref.current) {\n // Could add additional visible element refs here\n return ariaHideOutside([ref.current])\n }\n }, [isModal, isOpen, ref])\n\n return {\n dialogProps,\n labelProps,\n focusScopeProps: {\n autoFocus: true,\n contain: true,\n restoreFocus: true,\n },\n }\n}\n\n/**\n * Takes many roles and determines props necessary for DOM/components.\n * **Side effect of role=\"dialog\"**, current and any content added later\n * outside of the element (like by portals) will get `aria-hidden=true`\n * to replace the `aria-modal=true` `inert` nature.\n * @see useModalDialogLike */\nexport function useOverlayTriggerA11y({\n alwaysAriaVisible,\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n // can we remove this? have it role based? be optional?\n canPropOverlayUp,\n id: id_,\n isOpen,\n role,\n}: OverlayTriggerA11yConfig) {\n const isDialog = role === 'dialog'\n\n const id = useId(id_)\n\n const { getTriggerProps, getOverlayProps } = getA11yPreset(role)\n\n const triggerProps = getTriggerProps?.({\n isVisible: isOpen,\n role: role!,\n overlayId: id,\n })\n\n const overlayA11yProps = getOverlayProps?.({\n isVisible: isOpen,\n role: role!,\n overlayId: id,\n })\n\n const wrapperA11yProps = !canPropOverlayUp ? overlayA11yProps : emptyObj\n const overlayProps = canPropOverlayUp ? overlayA11yProps : emptyObj\n\n const { dialogProps, labelProps, focusScopeProps } = useModalDialogLike({\n 'aria-describedby': ariaDescribedby,\n 'aria-details': ariaDetails,\n 'aria-labelledby': ariaLabelledby,\n 'aria-label': ariaLabel,\n id,\n isModal: false,\n isOpen,\n })\n\n /** This is a code side-effect from ariaHideOutside hiding everthing */\n const portalProps =\n role === 'tooltip' || alwaysAriaVisible // || !role\n ? { 'data-react-aria-top-layer': true, 'data-live-announcer': true }\n : emptyObj\n\n /**\n * If it is a dialog, we can merge the dialog props with any haspopup props\n */\n const wrapperFinalProps = isDialog\n ? {\n ...wrapperA11yProps,\n ...dialogProps,\n }\n : wrapperA11yProps\n\n /**\n * If it is a dialog, we have opinions on `FocusScope` props.\n */\n const focusScopeFinalProps = isDialog\n ? focusScopeProps\n : (emptyObj as {\n autoFocus?: boolean\n contain?: boolean\n restoreFocus?: boolean\n })\n\n return {\n focusScopeProps: focusScopeFinalProps,\n labelProps,\n overlayProps,\n portalProps,\n triggerProps,\n wrapperProps: wrapperFinalProps,\n }\n}\n\n// WIP Example combobox\n// function useCombox({\n// controls,\n// isOpen = false,\n// }: {\n// controls: 'dialog' | 'menu' | 'listbox'\n// isOpen: boolean\n// }) {\n// const { labelProps, popupProps, triggerProps } = useLabelledPopup({\n// role: controls,\n// type: 'combobox',\n// isOpen,\n// })\n// dispatch between elements.\n// NOTE combobox has two labels, that could be different\n// one for the trigger input (typically the form label)\n// second for the thing it controls (listbox, dialog)\n// - label id=1\n// - input role='combobox' aria-labelledby=1\n// - div role={controls} aria-label\n// Also, any icon only buttons like clear or open should have a\n// label and -1 tabindex. No nested interactive roles.\n// }\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ var _excluded = ["gutterX"],
3
3
  _excluded2 = ["transparent"],
4
4
  _excluded3 = ["children"],
5
5
  _excluded4 = ["minSections"],
6
- _excluded5 = ["children", "open"];
6
+ _excluded5 = ["children", "open", "focusOnOpen", "restoreFocusOnClose"];
7
7
  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; }
8
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
9
9
  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); }
@@ -27,6 +27,7 @@ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
27
27
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
28
28
  function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
29
29
  function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
30
+ import { FocusScope } from '@react-aria/focus';
30
31
  import throttle from 'lodash.throttle';
31
32
  import React from 'react';
32
33
  import { AnchorNavigation } from '../AnchorNavigation/AnchorNavigation';
@@ -214,8 +215,13 @@ var PageFooter = /*#__PURE__*/React.forwardRef(function PageFooter(props, ref) {
214
215
  }));
215
216
  });
216
217
  var PageAside = /*#__PURE__*/React.forwardRef(function PageAside(_ref5, ref) {
218
+ var _ref6;
217
219
  var children = _ref5.children,
218
220
  controlledIsOpen = _ref5.open,
221
+ _ref5$focusOnOpen = _ref5.focusOnOpen,
222
+ focusOnOpen = _ref5$focusOnOpen === void 0 ? false : _ref5$focusOnOpen,
223
+ _ref5$restoreFocusOnC = _ref5.restoreFocusOnClose,
224
+ restoreFocusOnClose = _ref5$restoreFocusOnC === void 0 ? false : _ref5$restoreFocusOnC,
219
225
  props = _objectWithoutProperties(_ref5, _excluded5);
220
226
  var _React$useContext5 = React.useContext(PageContext),
221
227
  _React$useContext5$as = _React$useContext5.aside,
@@ -229,6 +235,8 @@ var PageAside = /*#__PURE__*/React.forwardRef(function PageAside(_ref5, ref) {
229
235
  footerRef = _React$useContext7.footerRef,
230
236
  containerRef = _React$useContext7.containerRef;
231
237
  var innerRef = React.useRef(null);
238
+ var panelRef = React.useRef(null);
239
+ var prevIsOpenRef = React.useRef((_ref6 = controlledIsOpen !== null && controlledIsOpen !== void 0 ? controlledIsOpen : contextIsOpen) !== null && _ref6 !== void 0 ? _ref6 : false);
232
240
  var _React$useState3 = React.useState(null),
233
241
  _React$useState4 = _slicedToArray(_React$useState3, 2),
234
242
  topOffset = _React$useState4[0],
@@ -270,39 +278,46 @@ var PageAside = /*#__PURE__*/React.forwardRef(function PageAside(_ref5, ref) {
270
278
  useUpdateEffect(function () {
271
279
  ;
272
280
  _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
281
+ var wasOpen, isRealOpenTransition, _panelRef$current;
273
282
  return _regeneratorRuntime().wrap(function _callee$(_context) {
274
283
  while (1) switch (_context.prev = _context.next) {
275
284
  case 0:
285
+ wasOpen = prevIsOpenRef.current;
286
+ prevIsOpenRef.current = contextIsOpen;
276
287
  if (!contextIsOpen) {
277
- _context.next = 9;
288
+ _context.next = 13;
278
289
  break;
279
290
  }
291
+ isRealOpenTransition = !wasOpen;
280
292
  setIsOpen(true);
281
293
 
282
294
  // allow browsers to recalculate the layout
283
- _context.next = 4;
295
+ _context.next = 7;
284
296
  return wait(0);
285
- case 4:
297
+ case 7:
286
298
  setAnimationStatus('opening');
287
- _context.next = 7;
299
+ _context.next = 10;
288
300
  return wait(animationDuration.panel);
289
- case 7:
301
+ case 10:
290
302
  setAnimationStatus('open');
303
+ if (focusOnOpen && isRealOpenTransition) {
304
+ (_panelRef$current = panelRef.current) === null || _panelRef$current === void 0 ? void 0 : _panelRef$current.focus();
305
+ }
291
306
  return _context.abrupt("return");
292
- case 9:
307
+ case 13:
293
308
  setAnimationStatus('closing');
294
- _context.next = 12;
309
+ _context.next = 16;
295
310
  return wait(animationDuration.panel);
296
- case 12:
311
+ case 16:
297
312
  setAnimationStatus('closed');
298
313
  setIsOpen(false);
299
- case 14:
314
+ case 18:
300
315
  case "end":
301
316
  return _context.stop();
302
317
  }
303
318
  }, _callee);
304
319
  }))();
305
- }, [contextIsOpen]);
320
+ }, [contextIsOpen, focusOnOpen]);
306
321
  function calculateOffsets() {
307
322
  calculateHorizontalOffsets();
308
323
  calculateVerticalOffsets();
@@ -351,7 +366,11 @@ var PageAside = /*#__PURE__*/React.forwardRef(function PageAside(_ref5, ref) {
351
366
  }), /*#__PURE__*/React.createElement(StyledAsideFluidContainer, {
352
367
  $open: asideOpen,
353
368
  $closed: asideClosed
369
+ }, /*#__PURE__*/React.createElement(FocusScope, {
370
+ restoreFocus: restoreFocusOnClose
354
371
  }, /*#__PURE__*/React.createElement(StyledAsidePanel, {
372
+ ref: panelRef,
373
+ tabIndex: -1,
355
374
  $offsetTop: topOffset,
356
375
  $rightOffset: rightOffset,
357
376
  $minusHeight: (topOffset !== null && topOffset !== void 0 ? topOffset : 0) + bottomOffset,
@@ -359,7 +378,7 @@ var PageAside = /*#__PURE__*/React.forwardRef(function PageAside(_ref5, ref) {
359
378
  $opening: animationStatus === 'opening',
360
379
  $closed: animationStatus === 'closed',
361
380
  $altAnimation: tearsheetPlacement === 'left'
362
- }, children))) : null;
381
+ }, children)))) : null;
363
382
  });
364
383
  var PageContainer = /*#__PURE__*/React.forwardRef(function PageContainer(props, ref) {
365
384
  var _React$useState11 = React.useState(defaultAsideIsOpen),
@@ -1 +1 @@
1
- {"version":3,"file":"PageLayout.js","names":["e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","enumerable","configurable","writable","_invoke","_OverloadYield","k","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","_extends","assign","hasOwnProperty","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","indexOf","propertyIsEnumerable","throttle","React","AnchorNavigation","useAnchorNavigationContext","Grid","BaseGrid","TearsheetContext","useResize","useScroll","useUpdateEffect","addSubcomponents","mergeRefs","pageLayoutRootDataAttr","animationDuration","StyledAside","StyledAsideFluidContainer","StyledAsidePanel","StyledBody","StyledContent","StyledFooter","StyledNavigation","StyledPageBanner","StyledPageBreadcrumbs","StyledPageContainer","StyledPageHeader","StyledPageMain","StyledPageTabs","StyledPageTitle","getBottomOffsetForFooterUseCase","getGlobalBottomOffset","getGlobalTopOffset","getIsIntersectingVertically","getRightOffset","wait","defaultAsideIsOpen","PageContext","createContext","bodyRef","createRef","footerRef","containerRef","navigationRef","aside","open","close","isOpen","_ref","gutterX","props","_excluded","createElement","Row","Column","Col","PageHeader","forwardRef","_ref2","ref","transparent","_excluded2","$transparent","PageBody","_ref3","children","_excluded3","_React$useContext","useContext","navigation","content","Children","forEach","child","isValidElement","type","PageBodyNavigation","_ref4","_props$sections$lengt","_props$sections","_props$sections2","_props$selected","_props$onSelect","_ref4$minSections","minSections","_excluded4","_React$useContext2","_useAnchorNavigationC","sections","selected","onSelect","sectionsLength","PageFooter","_React$useContext3","_React$useContext4","addListener","_React$useState","useState","_React$useState2","isIntersectingWithBody","setIsIntersectingWithBody","calculateIntersections","current","useEffect","_bodyRef$current","tabWasPressed","onActiveElementChange","document","activeElement","scrollIntoView","onKeyDown","code","setTimeout","addEventListener","_bodyRef$current2","removeEventListener","onScroll","onResize","$isAsideOpen","$hasShadow","PageAside","_ref5","controlledIsOpen","_excluded5","_React$useContext5","_React$useContext5$as","contextIsOpen","_React$useContext6","tearsheetPlacement","placement","addTearsheetListener","_React$useContext7","innerRef","useRef","_React$useState3","_React$useState4","topOffset","setTopOffset","_React$useState5","_React$useState6","bottomOffset","setBottomOffset","_React$useState7","_React$useState8","rightOffset","setRightOffset","initialIsOpen","_React$useState9","_React$useState0","animationStatus","setAnimationStatus","_React$useState1","_React$useState10","setIsOpen","throttledToggle","useCallback","panel","trailing","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","abrupt","stop","calculateOffsets","calculateHorizontalOffsets","calculateVerticalOffsets","globalTopOffset","globalBottomOffset","asideOpen","includes","asideClosed","$open","$closed","$offsetTop","$rightOffset","$minusHeight","$closing","$opening","$altAnimation","PageContainer","_React$useState11","_React$useState12","isAsideOpen","setIsAsideOpen","openAside","closeAside","Provider","PageMain","_React$useContext8","attrs","_defineProperty","$tearsheetPlacement","PageBreadcrumbs","PageBanner","PageTitle","PageTabs","Page","Header","Banner","Breadcrumbs","Title","Tabs","Footer","Body","Main","Aside"],"sources":["../../src/PageLayout/PageLayout.tsx"],"sourcesContent":["import throttle from 'lodash.throttle'\nimport React from 'react'\nimport { AnchorNavigation } from '../AnchorNavigation/AnchorNavigation'\nimport { useAnchorNavigationContext } from '../AnchorNavigation/AnchorNavigationProvider'\nimport { Grid as BaseGrid } from '../Grid/Grid'\nimport type { GridProps } from '../Grid/Grid.types'\nimport { TearsheetContext } from '../Tearsheet/Tearsheet'\nimport { useResize } from '../_hooks/Resize'\nimport { useScroll } from '../_hooks/Scroll'\nimport { useUpdateEffect } from '../_hooks/useUpdateEffect'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { Props } from '../_utils/types'\nimport { pageLayoutRootDataAttr } from './PageLayout.constants'\nimport {\n animationDuration,\n StyledAside,\n StyledAsideFluidContainer,\n StyledAsidePanel,\n StyledBody,\n StyledContent,\n StyledFooter,\n StyledNavigation,\n StyledPageBanner,\n StyledPageBreadcrumbs,\n StyledPageContainer,\n StyledPageHeader,\n StyledPageMain,\n StyledPageTabs,\n StyledPageTitle,\n} from './PageLayout.styles'\nimport type {\n PageAsideAnimationStatus,\n PageAsideProps,\n PageBodyNavigationProps,\n PageComponentProps,\n PageFooterProps,\n PageHeaderProps,\n PageMainProps,\n} from './PageLayout.types'\nimport {\n getBottomOffsetForFooterUseCase,\n getGlobalBottomOffset,\n getGlobalTopOffset,\n getIsIntersectingVertically,\n getRightOffset,\n wait,\n} from './PageLayout.utils'\n\nconst defaultAsideIsOpen = false\n\nexport const PageContext = React.createContext<{\n bodyRef: React.RefObject<HTMLDivElement>\n footerRef: React.RefObject<HTMLDivElement>\n containerRef: React.RefObject<HTMLDivElement>\n navigationRef: React.RefObject<HTMLUListElement>\n aside: {\n open: () => Promise<void>\n close: () => Promise<void>\n isOpen: boolean\n }\n}>({\n bodyRef: React.createRef(),\n footerRef: React.createRef(),\n containerRef: React.createRef(),\n navigationRef: React.createRef(),\n aside: {\n open: () => Promise.resolve(),\n close: () => Promise.resolve(),\n isOpen: defaultAsideIsOpen,\n },\n})\n\n// for some reason this does not appear in the deprecated in typedoc generated json, but Page.Row does\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Grid`, `Page.Row`, `Page.Column`\n *\n * AFTER `Grid` `Grid.Row` `Grid.Col`\n * @deprecatedSince 12\n */\nexport const Grid = ({ gutterX, ...props }: GridProps) => {\n return <BaseGrid gutterX={gutterX ?? 'lg'} {...props} />\n}\n\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Row` AFTER `Grid.Row`\n * @deprecatedSince 12\n */\nexport const Row = BaseGrid.Row\n\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Column` AFTER `Grid.Col`\n * @deprecatedSince 12\n */\nexport const Column = BaseGrid.Col\n\nconst PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(\n function PageHeader({ transparent, ...props }, ref) {\n return <StyledPageHeader $transparent={transparent} {...props} ref={ref} />\n }\n)\n\nconst PageBody = React.forwardRef<HTMLDivElement, PageComponentProps>(\n function PageBody({ children, ...props }, ref) {\n const { bodyRef } = React.useContext(PageContext)\n\n let navigation\n let content: React.ReactElement[] = []\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return\n if (child.type === PageBodyNavigation) {\n navigation = child\n } else {\n content.push(child)\n }\n })\n if (!navigation) {\n return (\n <StyledBody\n children={children}\n {...props}\n ref={mergeRefs(ref, bodyRef)}\n />\n )\n }\n\n return (\n <StyledBody {...props} ref={mergeRefs(ref, bodyRef)}>\n <StyledNavigation>{navigation}</StyledNavigation>\n <StyledContent>{content}</StyledContent>\n </StyledBody>\n )\n }\n)\n\nexport const PageBodyNavigation = React.forwardRef<\n HTMLUListElement,\n PageBodyNavigationProps\n>(({ minSections = 2, ...props }, ref) => {\n const { navigationRef } = React.useContext(PageContext)\n const { sections, selected, onSelect } = useAnchorNavigationContext()\n const sectionsLength = props.sections?.length ?? sections.length\n\n if (sectionsLength < minSections) return null\n\n return (\n <AnchorNavigation\n ref={mergeRefs(ref, navigationRef)}\n sections={props.sections ?? sections}\n selected={props.selected ?? selected}\n onSelect={props.onSelect ?? onSelect}\n {...props}\n />\n )\n})\n\nconst PageFooter = React.forwardRef<HTMLDivElement, PageFooterProps>(\n function PageFooter(props, ref) {\n const { bodyRef, footerRef, aside } = React.useContext(PageContext)\n const { addListener } = React.useContext(TearsheetContext)\n\n const [isIntersectingWithBody, setIsIntersectingWithBody] =\n React.useState(false)\n\n function calculateIntersections() {\n if (!footerRef.current || !bodyRef.current) {\n return\n }\n setIsIntersectingWithBody(\n getIsIntersectingVertically(bodyRef.current, footerRef.current)\n )\n }\n\n React.useEffect(() => {\n let tabWasPressed = false\n const onActiveElementChange = () => {\n if (\n tabWasPressed &&\n footerRef.current &&\n document.activeElement &&\n getIsIntersectingVertically(\n document.activeElement as HTMLElement,\n footerRef.current\n )\n ) {\n document.activeElement.scrollIntoView()\n }\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.code === 'Tab') {\n tabWasPressed = true\n // setTimeout is added to the end of async queue\n // after all already attached eventListeners\n // `tabWasPressed` marked as `false` after all events\n // which can be triggered by pressing Tab\n setTimeout(() => {\n tabWasPressed = false\n }, 0)\n }\n }\n\n bodyRef.current?.addEventListener('focusin', onActiveElementChange)\n document.addEventListener('keydown', onKeyDown, true)\n\n return () => {\n bodyRef.current?.removeEventListener('focusin', onActiveElementChange)\n document.removeEventListener('keydown', onKeyDown, true)\n }\n }, [])\n\n React.useEffect(() => addListener('scroll', calculateIntersections), [])\n\n React.useEffect(calculateIntersections, [])\n\n useScroll({ onScroll: calculateIntersections })\n\n useResize({ onResize: calculateIntersections })\n\n return (\n <StyledFooter\n {...props}\n $isAsideOpen={aside.isOpen}\n $hasShadow={isIntersectingWithBody}\n data-sticky={isIntersectingWithBody ? 'sticky' : ''}\n ref={mergeRefs(ref, footerRef)}\n />\n )\n }\n)\n\nconst PageAside = React.forwardRef<HTMLDivElement, PageAsideProps>(\n function PageAside({ children, open: controlledIsOpen, ...props }, ref) {\n const {\n aside: { isOpen: contextIsOpen, open, close },\n } = React.useContext(PageContext)\n const { placement: tearsheetPlacement, addListener: addTearsheetListener } =\n React.useContext(TearsheetContext)\n const { footerRef, containerRef } = React.useContext(PageContext)\n\n const innerRef = React.useRef<HTMLDivElement>(null)\n\n const [topOffset, setTopOffset] = React.useState<null | number>(null)\n const [bottomOffset, setBottomOffset] = React.useState(0)\n const [rightOffset, setRightOffset] = React.useState(0)\n\n const initialIsOpen = controlledIsOpen ?? contextIsOpen\n const [animationStatus, setAnimationStatus] =\n React.useState<PageAsideAnimationStatus>(\n initialIsOpen ? 'open' : 'closed'\n )\n const [isOpen, setIsOpen] = React.useState(initialIsOpen)\n\n const throttledToggle = React.useCallback(\n throttle(\n (isOpen) => {\n if (isOpen) {\n open()\n } else {\n close()\n }\n },\n // wait just a little longer than the animation duration to avoid odd blinking\n animationDuration.panel + 100,\n { trailing: true }\n ),\n []\n )\n\n React.useEffect(() => {\n throttledToggle(controlledIsOpen)\n }, [controlledIsOpen, throttledToggle])\n\n React.useEffect(() => {\n setIsOpen(contextIsOpen)\n }, [])\n\n useUpdateEffect(() => {\n ;(async () => {\n if (contextIsOpen) {\n setIsOpen(true)\n\n // allow browsers to recalculate the layout\n await wait(0)\n\n setAnimationStatus('opening')\n await wait(animationDuration.panel)\n setAnimationStatus('open')\n return\n }\n\n setAnimationStatus('closing')\n await wait(animationDuration.panel)\n setAnimationStatus('closed')\n setIsOpen(false)\n })()\n }, [contextIsOpen])\n\n function calculateOffsets() {\n calculateHorizontalOffsets()\n calculateVerticalOffsets()\n }\n\n function calculateHorizontalOffsets() {\n if (!containerRef.current) {\n return\n }\n\n setRightOffset(getRightOffset(containerRef.current))\n }\n\n function calculateVerticalOffsets() {\n if (!innerRef.current || !containerRef.current) {\n return\n }\n\n const globalTopOffset = getGlobalTopOffset(containerRef.current)\n setTopOffset(globalTopOffset)\n\n const globalBottomOffset = getGlobalBottomOffset(containerRef.current)\n setBottomOffset(globalBottomOffset)\n\n if (!footerRef.current) {\n return\n }\n\n const bottomOffset = getBottomOffsetForFooterUseCase(\n footerRef.current,\n globalBottomOffset\n )\n if (bottomOffset !== null) {\n setBottomOffset(bottomOffset)\n }\n }\n\n useScroll({ onScroll: calculateOffsets })\n\n useResize({ onResize: calculateOffsets })\n\n React.useEffect(() => {\n if (tearsheetPlacement) {\n return addTearsheetListener('afterShow', calculateOffsets)\n }\n\n calculateOffsets()\n }, [])\n\n useUpdateEffect(calculateOffsets, [contextIsOpen, animationStatus])\n\n const asideOpen = ['open', 'opening'].includes(animationStatus)\n const asideClosed = ['closed', 'closing'].includes(animationStatus)\n\n return isOpen ? (\n <StyledAside\n {...props}\n $open={asideOpen}\n $closed={asideClosed}\n ref={mergeRefs(ref, innerRef, calculateOffsets)}\n >\n <StyledAsideFluidContainer $open={asideOpen} $closed={asideClosed}>\n <StyledAsidePanel\n $offsetTop={topOffset}\n $rightOffset={rightOffset}\n $minusHeight={(topOffset ?? 0) + bottomOffset}\n $closing={animationStatus === 'closing'}\n $opening={animationStatus === 'opening'}\n $closed={animationStatus === 'closed'}\n $altAnimation={tearsheetPlacement === 'left'}\n >\n {children}\n </StyledAsidePanel>\n </StyledAsideFluidContainer>\n </StyledAside>\n ) : null\n }\n)\n\nconst PageContainer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function PageContainer(props, ref) {\n const [isAsideOpen, setIsAsideOpen] = React.useState(defaultAsideIsOpen)\n\n const openAside = () => {\n setIsAsideOpen(true)\n return wait(animationDuration.panel)\n }\n const closeAside = () => {\n setIsAsideOpen(false)\n return wait(animationDuration.panel)\n }\n\n const containerRef = React.useRef<HTMLDivElement>(null)\n const bodyRef = React.useRef<HTMLDivElement>(null)\n const navigationRef = React.useRef<HTMLUListElement>(null)\n const footerRef = React.useRef<HTMLDivElement>(null)\n\n return (\n <PageContext.Provider\n value={{\n bodyRef,\n footerRef,\n containerRef,\n navigationRef,\n aside: {\n open: openAside,\n close: closeAside,\n isOpen: isAsideOpen,\n },\n }}\n >\n <StyledPageContainer\n data-core-react=\"page\"\n {...props}\n ref={mergeRefs(ref, containerRef)}\n />\n </PageContext.Provider>\n )\n})\n\nconst PageMain = React.forwardRef<HTMLDivElement, PageMainProps>(\n function PageMain(props, ref) {\n const { placement: tearsheetPlacement } = React.useContext(TearsheetContext)\n const attrs = { [pageLayoutRootDataAttr]: true }\n return (\n <Grid gutterX=\"lg\">\n <StyledPageMain\n {...props}\n {...attrs}\n ref={ref}\n $tearsheetPlacement={tearsheetPlacement}\n />\n </Grid>\n )\n }\n)\n\nconst PageBreadcrumbs = React.forwardRef<HTMLDivElement, Props>(\n function PageBreadcrumbs(props, ref) {\n return <StyledPageBreadcrumbs ref={ref} {...props} />\n }\n)\n\nconst PageBanner = React.forwardRef<HTMLDivElement, Props>(function PageBanner(\n props,\n ref\n) {\n return <StyledPageBanner ref={ref} {...props} />\n})\n\nconst PageTitle = React.forwardRef<HTMLDivElement, Props>(function PageTitle(\n props,\n ref\n) {\n return <StyledPageTitle ref={ref} {...props} />\n})\n\nconst PageTabs = React.forwardRef<HTMLDivElement, Props>(function PageTabs(\n props,\n ref\n) {\n return <StyledPageTabs ref={ref} {...props} />\n})\n\nGrid.displayName = 'Page.Grid'\nPageHeader.displayName = 'Page.Header'\nPageBanner.displayName = 'Page.Banner'\nPageBreadcrumbs.displayName = 'Page.Breadcrumbs'\nPageTitle.displayName = 'Page.Title'\nPageTabs.displayName = 'Page.Tabs'\nPageBody.displayName = 'Page.Body'\nPageFooter.displayName = 'Page.Footer'\nPageAside.displayName = 'Page.Aside'\nPageContainer.displayName = 'Page'\nPageMain.displayName = 'Page.Main'\n\n/**\n Building block elements for layout that should be used to build a common skeleton of a page.\n - Page\n - Page.Main\n - Page.Header\n - Page.Breadcrumbs\n - Breadcrumbs\n - Page.Banner\n - Banner\n - Page.Title\n - Title or H1\n - Page.Tabs\n - Tabs\n - Page.Body\n - Page.Footer\n - Page.Aside\nOther helpers, such as Page.Grid, Page.Row and Page.Column are thin wrappers over Grid components and share the same API.\n */\nexport const Page = addSubcomponents(\n {\n Header: PageHeader,\n Banner: PageBanner,\n Breadcrumbs: PageBreadcrumbs,\n Title: PageTitle,\n Tabs: PageTabs,\n Footer: PageFooter,\n Body: PageBody,\n Main: PageMain,\n Aside: PageAside,\n\n // Grid utilities\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Grid` AFTER `Grid` (or `Grid gutterX=\"lg\"`)\n * @deprecatedSince 12\n */\n Grid,\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Column` AFTER `Grid.Col`\n * @deprecatedSince 12\n */\n Column,\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Row` AFTER `Grid.Row`\n * @deprecatedSince 12\n */\n Row,\n },\n PageContainer\n)\n"],"mappings":"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"}
1
+ {"version":3,"file":"PageLayout.js","names":["e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","enumerable","configurable","writable","_invoke","_OverloadYield","k","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","_extends","assign","hasOwnProperty","_objectWithoutProperties","_objectWithoutPropertiesLoose","getOwnPropertySymbols","indexOf","propertyIsEnumerable","FocusScope","throttle","React","AnchorNavigation","useAnchorNavigationContext","Grid","BaseGrid","TearsheetContext","useResize","useScroll","useUpdateEffect","addSubcomponents","mergeRefs","pageLayoutRootDataAttr","animationDuration","StyledAside","StyledAsideFluidContainer","StyledAsidePanel","StyledBody","StyledContent","StyledFooter","StyledNavigation","StyledPageBanner","StyledPageBreadcrumbs","StyledPageContainer","StyledPageHeader","StyledPageMain","StyledPageTabs","StyledPageTitle","getBottomOffsetForFooterUseCase","getGlobalBottomOffset","getGlobalTopOffset","getIsIntersectingVertically","getRightOffset","wait","defaultAsideIsOpen","PageContext","createContext","bodyRef","createRef","footerRef","containerRef","navigationRef","aside","open","close","isOpen","_ref","gutterX","props","_excluded","createElement","Row","Column","Col","PageHeader","forwardRef","_ref2","ref","transparent","_excluded2","$transparent","PageBody","_ref3","children","_excluded3","_React$useContext","useContext","navigation","content","Children","forEach","child","isValidElement","type","PageBodyNavigation","_ref4","_props$sections$lengt","_props$sections","_props$sections2","_props$selected","_props$onSelect","_ref4$minSections","minSections","_excluded4","_React$useContext2","_useAnchorNavigationC","sections","selected","onSelect","sectionsLength","PageFooter","_React$useContext3","_React$useContext4","addListener","_React$useState","useState","_React$useState2","isIntersectingWithBody","setIsIntersectingWithBody","calculateIntersections","current","useEffect","_bodyRef$current","tabWasPressed","onActiveElementChange","document","activeElement","scrollIntoView","onKeyDown","code","setTimeout","addEventListener","_bodyRef$current2","removeEventListener","onScroll","onResize","$isAsideOpen","$hasShadow","PageAside","_ref5","_ref6","controlledIsOpen","_ref5$focusOnOpen","focusOnOpen","_ref5$restoreFocusOnC","restoreFocusOnClose","_excluded5","_React$useContext5","_React$useContext5$as","contextIsOpen","_React$useContext6","tearsheetPlacement","placement","addTearsheetListener","_React$useContext7","innerRef","useRef","panelRef","prevIsOpenRef","_React$useState3","_React$useState4","topOffset","setTopOffset","_React$useState5","_React$useState6","bottomOffset","setBottomOffset","_React$useState7","_React$useState8","rightOffset","setRightOffset","initialIsOpen","_React$useState9","_React$useState0","animationStatus","setAnimationStatus","_React$useState1","_React$useState10","setIsOpen","throttledToggle","useCallback","panel","trailing","_regeneratorRuntime","mark","_callee","wasOpen","isRealOpenTransition","_panelRef$current","wrap","_callee$","_context","prev","focus","abrupt","stop","calculateOffsets","calculateHorizontalOffsets","calculateVerticalOffsets","globalTopOffset","globalBottomOffset","asideOpen","includes","asideClosed","$open","$closed","restoreFocus","tabIndex","$offsetTop","$rightOffset","$minusHeight","$closing","$opening","$altAnimation","PageContainer","_React$useState11","_React$useState12","isAsideOpen","setIsAsideOpen","openAside","closeAside","Provider","PageMain","_React$useContext8","attrs","_defineProperty","$tearsheetPlacement","PageBreadcrumbs","PageBanner","PageTitle","PageTabs","Page","Header","Banner","Breadcrumbs","Title","Tabs","Footer","Body","Main","Aside"],"sources":["../../src/PageLayout/PageLayout.tsx"],"sourcesContent":["import { FocusScope } from '@react-aria/focus'\nimport throttle from 'lodash.throttle'\nimport React from 'react'\nimport { AnchorNavigation } from '../AnchorNavigation/AnchorNavigation'\nimport { useAnchorNavigationContext } from '../AnchorNavigation/AnchorNavigationProvider'\nimport { Grid as BaseGrid } from '../Grid/Grid'\nimport type { GridProps } from '../Grid/Grid.types'\nimport { TearsheetContext } from '../Tearsheet/Tearsheet'\nimport { useResize } from '../_hooks/Resize'\nimport { useScroll } from '../_hooks/Scroll'\nimport { useUpdateEffect } from '../_hooks/useUpdateEffect'\nimport { addSubcomponents } from '../_utils/addSubcomponents'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport type { Props } from '../_utils/types'\nimport { pageLayoutRootDataAttr } from './PageLayout.constants'\nimport {\n animationDuration,\n StyledAside,\n StyledAsideFluidContainer,\n StyledAsidePanel,\n StyledBody,\n StyledContent,\n StyledFooter,\n StyledNavigation,\n StyledPageBanner,\n StyledPageBreadcrumbs,\n StyledPageContainer,\n StyledPageHeader,\n StyledPageMain,\n StyledPageTabs,\n StyledPageTitle,\n} from './PageLayout.styles'\nimport type {\n PageAsideAnimationStatus,\n PageAsideProps,\n PageBodyNavigationProps,\n PageComponentProps,\n PageFooterProps,\n PageHeaderProps,\n PageMainProps,\n} from './PageLayout.types'\nimport {\n getBottomOffsetForFooterUseCase,\n getGlobalBottomOffset,\n getGlobalTopOffset,\n getIsIntersectingVertically,\n getRightOffset,\n wait,\n} from './PageLayout.utils'\n\nconst defaultAsideIsOpen = false\n\nexport const PageContext = React.createContext<{\n bodyRef: React.RefObject<HTMLDivElement>\n footerRef: React.RefObject<HTMLDivElement>\n containerRef: React.RefObject<HTMLDivElement>\n navigationRef: React.RefObject<HTMLUListElement>\n aside: {\n open: () => Promise<void>\n close: () => Promise<void>\n isOpen: boolean\n }\n}>({\n bodyRef: React.createRef(),\n footerRef: React.createRef(),\n containerRef: React.createRef(),\n navigationRef: React.createRef(),\n aside: {\n open: () => Promise.resolve(),\n close: () => Promise.resolve(),\n isOpen: defaultAsideIsOpen,\n },\n})\n\n// for some reason this does not appear in the deprecated in typedoc generated json, but Page.Row does\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Grid`, `Page.Row`, `Page.Column`\n *\n * AFTER `Grid` `Grid.Row` `Grid.Col`\n * @deprecatedSince 12\n */\nexport const Grid = ({ gutterX, ...props }: GridProps) => {\n return <BaseGrid gutterX={gutterX ?? 'lg'} {...props} />\n}\n\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Row` AFTER `Grid.Row`\n * @deprecatedSince 12\n */\nexport const Row = BaseGrid.Row\n\n/**\n * @parent Page\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Column` AFTER `Grid.Col`\n * @deprecatedSince 12\n */\nexport const Column = BaseGrid.Col\n\nconst PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(\n function PageHeader({ transparent, ...props }, ref) {\n return <StyledPageHeader $transparent={transparent} {...props} ref={ref} />\n }\n)\n\nconst PageBody = React.forwardRef<HTMLDivElement, PageComponentProps>(\n function PageBody({ children, ...props }, ref) {\n const { bodyRef } = React.useContext(PageContext)\n\n let navigation\n let content: React.ReactElement[] = []\n\n React.Children.forEach(children, (child) => {\n if (!React.isValidElement(child)) return\n if (child.type === PageBodyNavigation) {\n navigation = child\n } else {\n content.push(child)\n }\n })\n if (!navigation) {\n return (\n <StyledBody\n children={children}\n {...props}\n ref={mergeRefs(ref, bodyRef)}\n />\n )\n }\n\n return (\n <StyledBody {...props} ref={mergeRefs(ref, bodyRef)}>\n <StyledNavigation>{navigation}</StyledNavigation>\n <StyledContent>{content}</StyledContent>\n </StyledBody>\n )\n }\n)\n\nexport const PageBodyNavigation = React.forwardRef<\n HTMLUListElement,\n PageBodyNavigationProps\n>(({ minSections = 2, ...props }, ref) => {\n const { navigationRef } = React.useContext(PageContext)\n const { sections, selected, onSelect } = useAnchorNavigationContext()\n const sectionsLength = props.sections?.length ?? sections.length\n\n if (sectionsLength < minSections) return null\n\n return (\n <AnchorNavigation\n ref={mergeRefs(ref, navigationRef)}\n sections={props.sections ?? sections}\n selected={props.selected ?? selected}\n onSelect={props.onSelect ?? onSelect}\n {...props}\n />\n )\n})\n\nconst PageFooter = React.forwardRef<HTMLDivElement, PageFooterProps>(\n function PageFooter(props, ref) {\n const { bodyRef, footerRef, aside } = React.useContext(PageContext)\n const { addListener } = React.useContext(TearsheetContext)\n\n const [isIntersectingWithBody, setIsIntersectingWithBody] =\n React.useState(false)\n\n function calculateIntersections() {\n if (!footerRef.current || !bodyRef.current) {\n return\n }\n setIsIntersectingWithBody(\n getIsIntersectingVertically(bodyRef.current, footerRef.current)\n )\n }\n\n React.useEffect(() => {\n let tabWasPressed = false\n const onActiveElementChange = () => {\n if (\n tabWasPressed &&\n footerRef.current &&\n document.activeElement &&\n getIsIntersectingVertically(\n document.activeElement as HTMLElement,\n footerRef.current\n )\n ) {\n document.activeElement.scrollIntoView()\n }\n }\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.code === 'Tab') {\n tabWasPressed = true\n // setTimeout is added to the end of async queue\n // after all already attached eventListeners\n // `tabWasPressed` marked as `false` after all events\n // which can be triggered by pressing Tab\n setTimeout(() => {\n tabWasPressed = false\n }, 0)\n }\n }\n\n bodyRef.current?.addEventListener('focusin', onActiveElementChange)\n document.addEventListener('keydown', onKeyDown, true)\n\n return () => {\n bodyRef.current?.removeEventListener('focusin', onActiveElementChange)\n document.removeEventListener('keydown', onKeyDown, true)\n }\n }, [])\n\n React.useEffect(() => addListener('scroll', calculateIntersections), [])\n\n React.useEffect(calculateIntersections, [])\n\n useScroll({ onScroll: calculateIntersections })\n\n useResize({ onResize: calculateIntersections })\n\n return (\n <StyledFooter\n {...props}\n $isAsideOpen={aside.isOpen}\n $hasShadow={isIntersectingWithBody}\n data-sticky={isIntersectingWithBody ? 'sticky' : ''}\n ref={mergeRefs(ref, footerRef)}\n />\n )\n }\n)\n\nconst PageAside = React.forwardRef<HTMLDivElement, PageAsideProps>(\n function PageAside(\n {\n children,\n open: controlledIsOpen,\n focusOnOpen = false,\n restoreFocusOnClose = false,\n ...props\n },\n ref\n ) {\n const {\n aside: { isOpen: contextIsOpen, open, close },\n } = React.useContext(PageContext)\n const { placement: tearsheetPlacement, addListener: addTearsheetListener } =\n React.useContext(TearsheetContext)\n const { footerRef, containerRef } = React.useContext(PageContext)\n\n const innerRef = React.useRef<HTMLDivElement>(null)\n const panelRef = React.useRef<HTMLDivElement>(null)\n\n const prevIsOpenRef = React.useRef<boolean>(\n controlledIsOpen ?? contextIsOpen ?? false\n )\n\n const [topOffset, setTopOffset] = React.useState<null | number>(null)\n const [bottomOffset, setBottomOffset] = React.useState(0)\n const [rightOffset, setRightOffset] = React.useState(0)\n\n const initialIsOpen = controlledIsOpen ?? contextIsOpen\n const [animationStatus, setAnimationStatus] =\n React.useState<PageAsideAnimationStatus>(\n initialIsOpen ? 'open' : 'closed'\n )\n const [isOpen, setIsOpen] = React.useState(initialIsOpen)\n\n const throttledToggle = React.useCallback(\n throttle(\n (isOpen) => {\n if (isOpen) {\n open()\n } else {\n close()\n }\n },\n // wait just a little longer than the animation duration to avoid odd blinking\n animationDuration.panel + 100,\n { trailing: true }\n ),\n []\n )\n\n React.useEffect(() => {\n throttledToggle(controlledIsOpen)\n }, [controlledIsOpen, throttledToggle])\n\n React.useEffect(() => {\n setIsOpen(contextIsOpen)\n }, [])\n\n useUpdateEffect(() => {\n ;(async () => {\n const wasOpen = prevIsOpenRef.current\n prevIsOpenRef.current = contextIsOpen\n\n if (contextIsOpen) {\n const isRealOpenTransition = !wasOpen\n\n setIsOpen(true)\n\n // allow browsers to recalculate the layout\n await wait(0)\n\n setAnimationStatus('opening')\n await wait(animationDuration.panel)\n\n setAnimationStatus('open')\n\n if (focusOnOpen && isRealOpenTransition) {\n panelRef.current?.focus()\n }\n return\n }\n\n setAnimationStatus('closing')\n await wait(animationDuration.panel)\n\n setAnimationStatus('closed')\n setIsOpen(false)\n })()\n }, [contextIsOpen, focusOnOpen])\n\n function calculateOffsets() {\n calculateHorizontalOffsets()\n calculateVerticalOffsets()\n }\n\n function calculateHorizontalOffsets() {\n if (!containerRef.current) {\n return\n }\n\n setRightOffset(getRightOffset(containerRef.current))\n }\n\n function calculateVerticalOffsets() {\n if (!innerRef.current || !containerRef.current) {\n return\n }\n\n const globalTopOffset = getGlobalTopOffset(containerRef.current)\n setTopOffset(globalTopOffset)\n\n const globalBottomOffset = getGlobalBottomOffset(containerRef.current)\n setBottomOffset(globalBottomOffset)\n\n if (!footerRef.current) {\n return\n }\n\n const bottomOffset = getBottomOffsetForFooterUseCase(\n footerRef.current,\n globalBottomOffset\n )\n if (bottomOffset !== null) {\n setBottomOffset(bottomOffset)\n }\n }\n\n useScroll({ onScroll: calculateOffsets })\n\n useResize({ onResize: calculateOffsets })\n\n React.useEffect(() => {\n if (tearsheetPlacement) {\n return addTearsheetListener('afterShow', calculateOffsets)\n }\n\n calculateOffsets()\n }, [])\n\n useUpdateEffect(calculateOffsets, [contextIsOpen, animationStatus])\n\n const asideOpen = ['open', 'opening'].includes(animationStatus)\n const asideClosed = ['closed', 'closing'].includes(animationStatus)\n\n return isOpen ? (\n <StyledAside\n {...props}\n $open={asideOpen}\n $closed={asideClosed}\n ref={mergeRefs(ref, innerRef, calculateOffsets)}\n >\n <StyledAsideFluidContainer $open={asideOpen} $closed={asideClosed}>\n <FocusScope restoreFocus={restoreFocusOnClose}>\n <StyledAsidePanel\n ref={panelRef}\n tabIndex={-1}\n $offsetTop={topOffset}\n $rightOffset={rightOffset}\n $minusHeight={(topOffset ?? 0) + bottomOffset}\n $closing={animationStatus === 'closing'}\n $opening={animationStatus === 'opening'}\n $closed={animationStatus === 'closed'}\n $altAnimation={tearsheetPlacement === 'left'}\n >\n {children}\n </StyledAsidePanel>\n </FocusScope>\n </StyledAsideFluidContainer>\n </StyledAside>\n ) : null\n }\n)\n\nconst PageContainer = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(function PageContainer(props, ref) {\n const [isAsideOpen, setIsAsideOpen] = React.useState(defaultAsideIsOpen)\n\n const openAside = () => {\n setIsAsideOpen(true)\n return wait(animationDuration.panel)\n }\n const closeAside = () => {\n setIsAsideOpen(false)\n return wait(animationDuration.panel)\n }\n\n const containerRef = React.useRef<HTMLDivElement>(null)\n const bodyRef = React.useRef<HTMLDivElement>(null)\n const navigationRef = React.useRef<HTMLUListElement>(null)\n const footerRef = React.useRef<HTMLDivElement>(null)\n\n return (\n <PageContext.Provider\n value={{\n bodyRef,\n footerRef,\n containerRef,\n navigationRef,\n aside: {\n open: openAside,\n close: closeAside,\n isOpen: isAsideOpen,\n },\n }}\n >\n <StyledPageContainer\n data-core-react=\"page\"\n {...props}\n ref={mergeRefs(ref, containerRef)}\n />\n </PageContext.Provider>\n )\n})\n\nconst PageMain = React.forwardRef<HTMLDivElement, PageMainProps>(\n function PageMain(props, ref) {\n const { placement: tearsheetPlacement } = React.useContext(TearsheetContext)\n const attrs = { [pageLayoutRootDataAttr]: true }\n return (\n <Grid gutterX=\"lg\">\n <StyledPageMain\n {...props}\n {...attrs}\n ref={ref}\n $tearsheetPlacement={tearsheetPlacement}\n />\n </Grid>\n )\n }\n)\n\nconst PageBreadcrumbs = React.forwardRef<HTMLDivElement, Props>(\n function PageBreadcrumbs(props, ref) {\n return <StyledPageBreadcrumbs ref={ref} {...props} />\n }\n)\n\nconst PageBanner = React.forwardRef<HTMLDivElement, Props>(function PageBanner(\n props,\n ref\n) {\n return <StyledPageBanner ref={ref} {...props} />\n})\n\nconst PageTitle = React.forwardRef<HTMLDivElement, Props>(function PageTitle(\n props,\n ref\n) {\n return <StyledPageTitle ref={ref} {...props} />\n})\n\nconst PageTabs = React.forwardRef<HTMLDivElement, Props>(function PageTabs(\n props,\n ref\n) {\n return <StyledPageTabs ref={ref} {...props} />\n})\n\nGrid.displayName = 'Page.Grid'\nPageHeader.displayName = 'Page.Header'\nPageBanner.displayName = 'Page.Banner'\nPageBreadcrumbs.displayName = 'Page.Breadcrumbs'\nPageTitle.displayName = 'Page.Title'\nPageTabs.displayName = 'Page.Tabs'\nPageBody.displayName = 'Page.Body'\nPageFooter.displayName = 'Page.Footer'\nPageAside.displayName = 'Page.Aside'\nPageContainer.displayName = 'Page'\nPageMain.displayName = 'Page.Main'\n\n/**\n Building block elements for layout that should be used to build a common skeleton of a page.\n - Page\n - Page.Main\n - Page.Header\n - Page.Breadcrumbs\n - Breadcrumbs\n - Page.Banner\n - Banner\n - Page.Title\n - Title or H1\n - Page.Tabs\n - Tabs\n - Page.Body\n - Page.Footer\n - Page.Aside\nOther helpers, such as Page.Grid, Page.Row and Page.Column are thin wrappers over Grid components and share the same API.\n */\nexport const Page = addSubcomponents(\n {\n Header: PageHeader,\n Banner: PageBanner,\n Breadcrumbs: PageBreadcrumbs,\n Title: PageTitle,\n Tabs: PageTabs,\n Footer: PageFooter,\n Body: PageBody,\n Main: PageMain,\n Aside: PageAside,\n\n // Grid utilities\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Grid` AFTER `Grid` (or `Grid gutterX=\"lg\"`)\n * @deprecatedSince 12\n */\n Grid,\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Column` AFTER `Grid.Col`\n * @deprecatedSince 12\n */\n Column,\n /**\n * @deprecated A wrapper around Grid, please use Grid instead. Page already sets\n * a default gutterX in context for children grid components.\n *\n * BEFORE `Page.Row` AFTER `Grid.Row`\n * @deprecatedSince 12\n */\n Row,\n },\n PageContainer\n)\n"],"mappings":"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"}