@primer/components 0.0.0-2021102918546 → 0.0.0-202110303104

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 (437) hide show
  1. package/CHANGELOG.md +4 -90
  2. package/dist/browser.esm.js +774 -718
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +772 -716
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Divider.jsx +29 -0
  7. package/lib/ActionList/Group.jsx +23 -0
  8. package/lib/ActionList/Header.jsx +66 -0
  9. package/lib/ActionList/Item.js +52 -27
  10. package/lib/ActionList/Item.jsx +311 -0
  11. package/lib/ActionList/List.jsx +138 -0
  12. package/lib/ActionList/index.js +12 -23
  13. package/lib/ActionList2/Description.jsx +29 -0
  14. package/lib/ActionList2/Divider.jsx +22 -0
  15. package/lib/ActionList2/Group.d.ts +2 -28
  16. package/lib/ActionList2/Group.js +6 -55
  17. package/lib/ActionList2/Group.jsx +25 -0
  18. package/lib/ActionList2/Header.d.ts +26 -0
  19. package/lib/ActionList2/Header.js +55 -0
  20. package/lib/ActionList2/Header.jsx +36 -0
  21. package/lib/ActionList2/Item.js +1 -2
  22. package/lib/ActionList2/Item.jsx +174 -0
  23. package/lib/ActionList2/LinkItem.jsx +28 -0
  24. package/lib/ActionList2/List.d.ts +1 -1
  25. package/lib/ActionList2/List.js +2 -1
  26. package/lib/ActionList2/List.jsx +41 -0
  27. package/lib/ActionList2/Selection.jsx +50 -0
  28. package/lib/ActionList2/Visuals.jsx +48 -0
  29. package/lib/ActionList2/index.js +23 -41
  30. package/lib/ActionMenu.jsx +73 -0
  31. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  32. package/lib/AnchoredOverlay/index.js +4 -12
  33. package/lib/Autocomplete/Autocomplete.d.ts +3 -4
  34. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  35. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  36. package/lib/Autocomplete/AutocompleteInput.d.ts +3 -4
  37. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  38. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  39. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  40. package/lib/Autocomplete/index.js +7 -14
  41. package/lib/Avatar.jsx +34 -0
  42. package/lib/AvatarPair.jsx +29 -0
  43. package/lib/AvatarStack.jsx +151 -0
  44. package/lib/BaseStyles.jsx +65 -0
  45. package/lib/BorderBox.jsx +18 -0
  46. package/lib/Box.jsx +10 -0
  47. package/lib/BranchName.jsx +20 -0
  48. package/lib/Breadcrumbs.d.ts +7 -8
  49. package/lib/Breadcrumbs.js +12 -7
  50. package/lib/Breadcrumbs.jsx +74 -0
  51. package/lib/Button/Button.d.ts +3 -3
  52. package/lib/Button/Button.js +6 -2
  53. package/lib/Button/Button.jsx +60 -0
  54. package/lib/Button/ButtonBase.d.ts +8 -5
  55. package/lib/Button/ButtonBase.js +5 -1
  56. package/lib/Button/ButtonBase.jsx +36 -0
  57. package/lib/Button/ButtonClose.d.ts +46 -4
  58. package/lib/Button/ButtonClose.js +1 -1
  59. package/lib/Button/ButtonClose.jsx +55 -0
  60. package/lib/Button/ButtonDanger.d.ts +3 -3
  61. package/lib/Button/ButtonDanger.js +6 -2
  62. package/lib/Button/ButtonDanger.jsx +63 -0
  63. package/lib/Button/ButtonGroup.jsx +55 -0
  64. package/lib/Button/ButtonInvisible.d.ts +3 -3
  65. package/lib/Button/ButtonInvisible.js +6 -2
  66. package/lib/Button/ButtonInvisible.jsx +52 -0
  67. package/lib/Button/ButtonOutline.d.ts +3 -3
  68. package/lib/Button/ButtonOutline.js +6 -2
  69. package/lib/Button/ButtonOutline.jsx +63 -0
  70. package/lib/Button/ButtonPrimary.d.ts +3 -3
  71. package/lib/Button/ButtonPrimary.js +6 -2
  72. package/lib/Button/ButtonPrimary.jsx +62 -0
  73. package/lib/Button/ButtonStyles.jsx +37 -0
  74. package/lib/Button/ButtonTableList.d.ts +2 -1
  75. package/lib/Button/ButtonTableList.js +1 -1
  76. package/lib/Button/ButtonTableList.jsx +49 -0
  77. package/lib/Button/index.js +21 -70
  78. package/lib/Caret.jsx +93 -0
  79. package/lib/CircleBadge.d.ts +5 -4
  80. package/lib/CircleBadge.js +1 -1
  81. package/lib/CircleBadge.jsx +43 -0
  82. package/lib/CircleOcticon.d.ts +1 -2
  83. package/lib/CircleOcticon.jsx +21 -0
  84. package/lib/CounterLabel.d.ts +2 -1
  85. package/lib/CounterLabel.js +1 -1
  86. package/lib/CounterLabel.jsx +44 -0
  87. package/lib/Details.jsx +21 -0
  88. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  89. package/lib/Dialog/Dialog.d.ts +9 -5
  90. package/lib/Dialog/Dialog.js +11 -17
  91. package/lib/Dialog/Dialog.jsx +273 -0
  92. package/lib/Dialog.d.ts +5 -5
  93. package/lib/Dialog.js +1 -1
  94. package/lib/Dialog.jsx +131 -0
  95. package/lib/Dropdown.d.ts +99 -14
  96. package/lib/Dropdown.js +3 -3
  97. package/lib/Dropdown.jsx +134 -0
  98. package/lib/DropdownMenu/DropdownButton.d.ts +47 -4
  99. package/lib/DropdownMenu/DropdownButton.js +1 -3
  100. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  101. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  102. package/lib/DropdownMenu/index.js +6 -20
  103. package/lib/DropdownStyles.js +18 -26
  104. package/lib/EmojiPicker/EmojiPicker.d.ts +15 -0
  105. package/lib/EmojiPicker/EmojiPicker.js +205 -0
  106. package/lib/EmojiPicker/EmojiPicker.jsx +125 -0
  107. package/lib/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  108. package/lib/EmojiPicker/EmojiPickerAnchor.js +1 -0
  109. package/lib/EmojiPicker/EmojiPickerAnchor.jsx +1 -0
  110. package/lib/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  111. package/lib/EmojiPicker/EmojiPickerPanel.js +18 -0
  112. package/lib/EmojiPicker/EmojiPickerPanel.jsx +10 -0
  113. package/lib/EmojiPicker/data.d.ts +9 -0
  114. package/lib/EmojiPicker/data.js +7254 -0
  115. package/lib/EmojiPicker/index.d.ts +2 -0
  116. package/lib/EmojiPicker/index.js +8 -0
  117. package/lib/FilterList.d.ts +303 -265
  118. package/lib/FilterList.js +6 -2
  119. package/lib/FilterList.jsx +63 -0
  120. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  121. package/lib/FilteredActionList/index.js +4 -12
  122. package/lib/FilteredSearch.d.ts +2 -1
  123. package/lib/FilteredSearch.js +1 -1
  124. package/lib/FilteredSearch.jsx +29 -0
  125. package/lib/Flash.d.ts +2 -1
  126. package/lib/Flash.js +1 -1
  127. package/lib/Flash.jsx +70 -0
  128. package/lib/Flex.jsx +15 -0
  129. package/lib/FormGroup.d.ts +5 -4
  130. package/lib/FormGroup.js +2 -2
  131. package/lib/FormGroup.jsx +25 -0
  132. package/lib/Grid.jsx +15 -0
  133. package/lib/Header.d.ts +7 -6
  134. package/lib/Header.js +4 -4
  135. package/lib/Header.jsx +90 -0
  136. package/lib/Heading.jsx +21 -0
  137. package/lib/Label.d.ts +2 -1
  138. package/lib/Label.js +3 -2
  139. package/lib/Label.jsx +84 -0
  140. package/lib/LabelGroup.d.ts +2 -1
  141. package/lib/LabelGroup.js +1 -1
  142. package/lib/LabelGroup.jsx +19 -0
  143. package/lib/Link.d.ts +2 -1
  144. package/lib/Link.js +1 -1
  145. package/lib/Link.jsx +38 -0
  146. package/lib/NewButton/button-counter.jsx +14 -0
  147. package/lib/NewButton/button.js +42 -34
  148. package/lib/NewButton/button.jsx +278 -0
  149. package/lib/NewButton/index.js +5 -12
  150. package/lib/NewButton/types.js +2 -1
  151. package/lib/Overlay.d.ts +11 -14
  152. package/lib/Overlay.js +4 -3
  153. package/lib/Overlay.jsx +156 -0
  154. package/lib/Pagehead.d.ts +2 -1
  155. package/lib/Pagehead.js +1 -1
  156. package/lib/Pagehead.jsx +18 -0
  157. package/lib/Pagination/Pagination.js +1 -1
  158. package/lib/Pagination/Pagination.jsx +163 -0
  159. package/lib/Pagination/index.js +6 -12
  160. package/lib/Pagination/model.jsx +174 -0
  161. package/lib/PointerBox.jsx +25 -0
  162. package/lib/Popover.d.ts +5 -4
  163. package/lib/Popover.js +5 -4
  164. package/lib/Popover.jsx +210 -0
  165. package/lib/Portal/Portal.jsx +79 -0
  166. package/lib/Portal/index.js +5 -16
  167. package/lib/Position.d.ts +4 -4
  168. package/lib/Position.jsx +46 -0
  169. package/lib/ProgressBar.jsx +39 -0
  170. package/lib/SelectMenu/SelectMenu.d.ts +189 -27
  171. package/lib/SelectMenu/SelectMenu.js +3 -1
  172. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  173. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  174. package/lib/SelectMenu/SelectMenuDivider.d.ts +2 -1
  175. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  176. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  177. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  178. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  179. package/lib/SelectMenu/SelectMenuFooter.d.ts +2 -1
  180. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  181. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  182. package/lib/SelectMenu/SelectMenuHeader.d.ts +2 -1
  183. package/lib/SelectMenu/SelectMenuHeader.js +1 -1
  184. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  185. package/lib/SelectMenu/SelectMenuItem.d.ts +3 -2
  186. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  187. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  188. package/lib/SelectMenu/SelectMenuList.d.ts +2 -1
  189. package/lib/SelectMenu/SelectMenuList.js +1 -1
  190. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  191. package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  192. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -3
  193. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  194. package/lib/SelectMenu/SelectMenuModal.d.ts +3 -2
  195. package/lib/SelectMenu/SelectMenuModal.js +1 -1
  196. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  197. package/lib/SelectMenu/SelectMenuTab.d.ts +2 -1
  198. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  199. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  200. package/lib/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  201. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  202. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  203. package/lib/SelectMenu/SelectMenuTabs.d.ts +2 -1
  204. package/lib/SelectMenu/SelectMenuTabs.js +1 -1
  205. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  206. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  207. package/lib/SelectMenu/index.js +7 -14
  208. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  209. package/lib/SelectPanel/index.js +4 -12
  210. package/lib/SideNav.d.ts +8 -11
  211. package/lib/SideNav.js +15 -8
  212. package/lib/SideNav.jsx +177 -0
  213. package/lib/Spinner.jsx +35 -0
  214. package/lib/StateLabel.d.ts +2 -1
  215. package/lib/StateLabel.js +5 -6
  216. package/lib/StateLabel.jsx +94 -0
  217. package/lib/StyledOcticon.d.ts +2 -1
  218. package/lib/StyledOcticon.js +3 -1
  219. package/lib/StyledOcticon.jsx +20 -0
  220. package/lib/SubNav.d.ts +11 -5
  221. package/lib/SubNav.js +12 -7
  222. package/lib/SubNav.jsx +104 -0
  223. package/lib/TabNav.d.ts +4 -3
  224. package/lib/TabNav.js +2 -2
  225. package/lib/TabNav.jsx +60 -0
  226. package/lib/Text.jsx +14 -0
  227. package/lib/TextInput.jsx +23 -0
  228. package/lib/TextInputWithTokens.d.ts +3 -4
  229. package/lib/TextInputWithTokens.jsx +218 -0
  230. package/lib/ThemeProvider.jsx +130 -0
  231. package/lib/Timeline.d.ts +393 -19
  232. package/lib/Timeline.js +13 -16
  233. package/lib/Timeline.jsx +124 -0
  234. package/lib/Token/AvatarToken.d.ts +1 -1
  235. package/lib/Token/AvatarToken.jsx +54 -0
  236. package/lib/Token/IssueLabelToken.d.ts +1 -1
  237. package/lib/Token/IssueLabelToken.jsx +125 -0
  238. package/lib/Token/Token.d.ts +1 -1
  239. package/lib/Token/Token.jsx +103 -0
  240. package/lib/Token/TokenBase.jsx +88 -0
  241. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  242. package/lib/Token/_TokenTextContainer.jsx +49 -0
  243. package/lib/Token/index.js +11 -30
  244. package/lib/Tooltip.d.ts +2 -1
  245. package/lib/Tooltip.js +1 -1
  246. package/lib/Tooltip.jsx +246 -0
  247. package/lib/Truncate.d.ts +2 -1
  248. package/lib/Truncate.js +3 -1
  249. package/lib/Truncate.jsx +27 -0
  250. package/lib/UnderlineNav.d.ts +3 -2
  251. package/lib/UnderlineNav.js +2 -2
  252. package/lib/UnderlineNav.jsx +90 -0
  253. package/lib/_TextInputWrapper.jsx +120 -0
  254. package/lib/_UnstyledTextInput.jsx +22 -0
  255. package/lib/behaviors/anchoredPosition.js +205 -234
  256. package/lib/behaviors/focusTrap.js +121 -157
  257. package/lib/behaviors/focusZone.js +434 -509
  258. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  259. package/lib/constants.js +39 -43
  260. package/lib/drafts.js +20 -30
  261. package/lib/hooks/index.js +16 -60
  262. package/lib/hooks/useAnchoredPosition.js +32 -40
  263. package/lib/hooks/useCombinedRefs.js +32 -36
  264. package/lib/hooks/useDetails.jsx +39 -0
  265. package/lib/hooks/useDialog.js +72 -96
  266. package/lib/hooks/useFocusTrap.js +43 -60
  267. package/lib/hooks/useFocusZone.js +54 -50
  268. package/lib/hooks/useOnEscapePress.js +25 -36
  269. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  270. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  271. package/lib/hooks/useOverlay.jsx +15 -0
  272. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  273. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  274. package/lib/hooks/useRenderForcingRef.js +13 -17
  275. package/lib/hooks/useResizeObserver.js +15 -18
  276. package/lib/hooks/useSafeTimeout.js +22 -30
  277. package/lib/hooks/useScrollFlash.js +16 -23
  278. package/lib/index.d.ts +2 -2
  279. package/lib/index.js +165 -652
  280. package/lib/polyfills/eventListenerSignal.js +37 -45
  281. package/lib/sx.js +10 -22
  282. package/lib/theme-preval.js +64 -3169
  283. package/lib/theme.js +3 -12
  284. package/lib/utils/create-slots.jsx +65 -0
  285. package/lib/utils/deprecate.jsx +59 -0
  286. package/lib/utils/isNumeric.jsx +7 -0
  287. package/lib/utils/iterateFocusableElements.js +63 -85
  288. package/lib/utils/ssr.jsx +6 -0
  289. package/lib/utils/test-deprecations.jsx +20 -0
  290. package/lib/utils/test-helpers.jsx +8 -0
  291. package/lib/utils/test-matchers.jsx +100 -0
  292. package/lib/utils/testing.d.ts +61 -8
  293. package/lib/utils/testing.js +0 -29
  294. package/lib/utils/testing.jsx +206 -0
  295. package/lib/utils/theme.js +33 -47
  296. package/lib/utils/types/AriaRole.js +2 -1
  297. package/lib/utils/types/ComponentProps.js +2 -1
  298. package/lib/utils/types/Flatten.js +2 -1
  299. package/lib/utils/types/KeyPaths.js +2 -1
  300. package/lib/utils/types/MandateProps.js +16 -1
  301. package/lib/utils/types/Merge.js +2 -1
  302. package/lib/utils/types/index.js +16 -69
  303. package/lib/utils/uniqueId.js +5 -8
  304. package/lib/utils/use-force-update.js +8 -14
  305. package/lib/utils/useIsomorphicLayoutEffect.js +8 -11
  306. package/lib/utils/userAgent.js +8 -12
  307. package/lib-esm/ActionList/Item.js +53 -28
  308. package/lib-esm/ActionList2/Group.d.ts +2 -28
  309. package/lib-esm/ActionList2/Group.js +5 -52
  310. package/lib-esm/ActionList2/Header.d.ts +26 -0
  311. package/lib-esm/ActionList2/Header.js +44 -0
  312. package/lib-esm/ActionList2/Item.js +1 -2
  313. package/lib-esm/ActionList2/List.d.ts +1 -1
  314. package/lib-esm/ActionList2/List.js +2 -1
  315. package/lib-esm/Autocomplete/Autocomplete.d.ts +3 -4
  316. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +3 -4
  317. package/lib-esm/Breadcrumbs.d.ts +7 -8
  318. package/lib-esm/Breadcrumbs.js +13 -8
  319. package/lib-esm/Button/Button.d.ts +3 -3
  320. package/lib-esm/Button/Button.js +2 -2
  321. package/lib-esm/Button/ButtonBase.d.ts +8 -5
  322. package/lib-esm/Button/ButtonBase.js +3 -1
  323. package/lib-esm/Button/ButtonClose.d.ts +46 -4
  324. package/lib-esm/Button/ButtonClose.js +2 -2
  325. package/lib-esm/Button/ButtonDanger.d.ts +3 -3
  326. package/lib-esm/Button/ButtonDanger.js +2 -2
  327. package/lib-esm/Button/ButtonInvisible.d.ts +3 -3
  328. package/lib-esm/Button/ButtonInvisible.js +2 -2
  329. package/lib-esm/Button/ButtonOutline.d.ts +3 -3
  330. package/lib-esm/Button/ButtonOutline.js +2 -2
  331. package/lib-esm/Button/ButtonPrimary.d.ts +3 -3
  332. package/lib-esm/Button/ButtonPrimary.js +2 -2
  333. package/lib-esm/Button/ButtonTableList.d.ts +2 -1
  334. package/lib-esm/Button/ButtonTableList.js +2 -2
  335. package/lib-esm/CircleBadge.d.ts +5 -4
  336. package/lib-esm/CircleBadge.js +2 -2
  337. package/lib-esm/CircleOcticon.d.ts +1 -2
  338. package/lib-esm/CounterLabel.d.ts +2 -1
  339. package/lib-esm/CounterLabel.js +2 -2
  340. package/lib-esm/Dialog/Dialog.d.ts +9 -5
  341. package/lib-esm/Dialog/Dialog.js +12 -12
  342. package/lib-esm/Dialog.d.ts +5 -5
  343. package/lib-esm/Dialog.js +2 -2
  344. package/lib-esm/Dropdown.d.ts +99 -14
  345. package/lib-esm/Dropdown.js +4 -4
  346. package/lib-esm/DropdownMenu/DropdownButton.d.ts +47 -4
  347. package/lib-esm/DropdownMenu/DropdownButton.js +1 -3
  348. package/lib-esm/EmojiPicker/EmojiPicker.d.ts +15 -0
  349. package/lib-esm/EmojiPicker/EmojiPicker.js +184 -0
  350. package/lib-esm/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  351. package/lib-esm/EmojiPicker/EmojiPickerAnchor.js +0 -0
  352. package/lib-esm/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  353. package/lib-esm/EmojiPicker/EmojiPickerPanel.js +8 -0
  354. package/lib-esm/EmojiPicker/data.d.ts +9 -0
  355. package/lib-esm/EmojiPicker/data.js +5434 -0
  356. package/lib-esm/EmojiPicker/index.d.ts +2 -0
  357. package/lib-esm/EmojiPicker/index.js +1 -0
  358. package/lib-esm/FilterList.d.ts +303 -265
  359. package/lib-esm/FilterList.js +7 -3
  360. package/lib-esm/FilteredSearch.d.ts +2 -1
  361. package/lib-esm/FilteredSearch.js +2 -2
  362. package/lib-esm/Flash.d.ts +2 -1
  363. package/lib-esm/Flash.js +2 -2
  364. package/lib-esm/FormGroup.d.ts +5 -4
  365. package/lib-esm/FormGroup.js +3 -3
  366. package/lib-esm/Header.d.ts +7 -6
  367. package/lib-esm/Header.js +5 -5
  368. package/lib-esm/Label.d.ts +2 -1
  369. package/lib-esm/Label.js +4 -3
  370. package/lib-esm/LabelGroup.d.ts +2 -1
  371. package/lib-esm/LabelGroup.js +2 -2
  372. package/lib-esm/Link.d.ts +2 -1
  373. package/lib-esm/Link.js +2 -2
  374. package/lib-esm/NewButton/button.js +42 -31
  375. package/lib-esm/Overlay.d.ts +11 -14
  376. package/lib-esm/Overlay.js +3 -2
  377. package/lib-esm/Pagehead.d.ts +2 -1
  378. package/lib-esm/Pagehead.js +2 -2
  379. package/lib-esm/Pagination/Pagination.js +2 -2
  380. package/lib-esm/Popover.d.ts +5 -4
  381. package/lib-esm/Popover.js +5 -4
  382. package/lib-esm/Position.d.ts +4 -4
  383. package/lib-esm/SelectMenu/SelectMenu.d.ts +189 -27
  384. package/lib-esm/SelectMenu/SelectMenu.js +2 -1
  385. package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +2 -1
  386. package/lib-esm/SelectMenu/SelectMenuDivider.js +2 -2
  387. package/lib-esm/SelectMenu/SelectMenuFilter.js +2 -2
  388. package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +2 -1
  389. package/lib-esm/SelectMenu/SelectMenuFooter.js +2 -2
  390. package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +2 -1
  391. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  392. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +3 -2
  393. package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
  394. package/lib-esm/SelectMenu/SelectMenuList.d.ts +2 -1
  395. package/lib-esm/SelectMenu/SelectMenuList.js +2 -2
  396. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  397. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +2 -3
  398. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +3 -2
  399. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  400. package/lib-esm/SelectMenu/SelectMenuTab.d.ts +2 -1
  401. package/lib-esm/SelectMenu/SelectMenuTab.js +2 -2
  402. package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  403. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +2 -2
  404. package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +2 -1
  405. package/lib-esm/SelectMenu/SelectMenuTabs.js +2 -2
  406. package/lib-esm/SideNav.d.ts +8 -11
  407. package/lib-esm/SideNav.js +16 -8
  408. package/lib-esm/StateLabel.d.ts +2 -1
  409. package/lib-esm/StateLabel.js +6 -7
  410. package/lib-esm/StyledOcticon.d.ts +2 -1
  411. package/lib-esm/StyledOcticon.js +2 -1
  412. package/lib-esm/SubNav.d.ts +11 -5
  413. package/lib-esm/SubNav.js +13 -8
  414. package/lib-esm/TabNav.d.ts +4 -3
  415. package/lib-esm/TabNav.js +3 -3
  416. package/lib-esm/TextInputWithTokens.d.ts +3 -4
  417. package/lib-esm/Timeline.d.ts +393 -19
  418. package/lib-esm/Timeline.js +13 -12
  419. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  420. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  421. package/lib-esm/Token/Token.d.ts +1 -1
  422. package/lib-esm/Tooltip.d.ts +2 -1
  423. package/lib-esm/Tooltip.js +2 -2
  424. package/lib-esm/Truncate.d.ts +2 -1
  425. package/lib-esm/Truncate.js +2 -1
  426. package/lib-esm/UnderlineNav.d.ts +3 -2
  427. package/lib-esm/UnderlineNav.js +3 -3
  428. package/lib-esm/index.d.ts +2 -2
  429. package/lib-esm/index.js +1 -1
  430. package/lib-esm/theme-preval.js +366 -512
  431. package/lib-esm/utils/testing.d.ts +61 -8
  432. package/lib-esm/utils/testing.js +0 -24
  433. package/package.json +5 -4
  434. package/lib/Checkbox.d.ts +0 -29
  435. package/lib/Checkbox.js +0 -64
  436. package/lib-esm/Checkbox.d.ts +0 -29
  437. package/lib-esm/Checkbox.js +0 -44
@@ -1,104 +1,80 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _react = require("react");
9
-
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
10
4
  const noop = () => null;
11
-
12
5
  function visible(el) {
13
- return !el.hidden && (!el.type || el.type !== 'hidden') && (el.offsetWidth > 0 || el.offsetHeight > 0);
6
+ return !el.hidden && (!el.type || el.type !== 'hidden') && (el.offsetWidth > 0 || el.offsetHeight > 0);
14
7
  }
15
-
16
8
  function focusable(el) {
17
- const inputEl = el;
18
- return inputEl.tabIndex >= 0 && !inputEl.disabled && visible(inputEl);
9
+ const inputEl = el;
10
+ return inputEl.tabIndex >= 0 && !inputEl.disabled && visible(inputEl);
19
11
  }
20
-
21
- function useDialog({
22
- modalRef,
23
- overlayRef,
24
- isOpen,
25
- onDismiss = noop,
26
- initialFocusRef,
27
- closeButtonRef
28
- }) {
29
- const onClickOutside = (0, _react.useCallback)(e => {
30
- if (modalRef.current && overlayRef.current && !modalRef.current.contains(e.target) && overlayRef.current.contains(e.target)) {
31
- onDismiss();
32
- }
33
- }, [onDismiss, modalRef, overlayRef]);
34
- (0, _react.useEffect)(() => {
35
- if (isOpen) {
36
- document.addEventListener('click', onClickOutside);
37
- return () => {
38
- document.removeEventListener('click', onClickOutside);
39
- };
40
- }
41
- }, [isOpen, onClickOutside]);
42
- (0, _react.useEffect)(() => {
43
- if (isOpen) {
44
- if (initialFocusRef && initialFocusRef.current) {
45
- initialFocusRef.current.focus();
46
- } else if (closeButtonRef && closeButtonRef.current) {
47
- closeButtonRef.current.focus();
48
- }
49
- }
50
- }, [isOpen, initialFocusRef, closeButtonRef]);
51
- const getFocusableItem = (0, _react.useCallback)((e, movement) => {
52
- if (modalRef.current) {
53
- const items = Array.from(modalRef.current.querySelectorAll('*')).filter(focusable);
54
- if (items.length === 0) return;
55
- e.preventDefault();
56
- const focusedElement = document.activeElement;
57
-
58
- if (!focusedElement) {
59
- return;
60
- }
61
-
62
- const index = items.indexOf(focusedElement);
63
- const offsetIndex = index + movement;
64
- const fallbackIndex = movement === 1 ? 0 : items.length - 1;
65
- const focusableItem = items[offsetIndex] || items[fallbackIndex];
66
- return focusableItem;
67
- }
68
- }, [modalRef]);
69
- const handleTab = (0, _react.useCallback)(e => {
70
- const movement = e.shiftKey ? -1 : 1;
71
- const focusableItem = getFocusableItem(e, movement);
72
-
73
- if (!focusableItem) {
74
- return;
75
- }
76
-
77
- focusableItem.focus();
78
- }, [getFocusableItem]);
79
- const onKeyDown = (0, _react.useCallback)(event => {
80
- switch (event.key) {
81
- case 'Tab':
82
- handleTab(event);
83
- break;
84
-
85
- case 'Escape':
86
- onDismiss();
87
- event.stopPropagation();
88
- break;
89
- }
90
- }, [handleTab, onDismiss]);
91
-
92
- const getDialogProps = () => {
93
- return {
94
- onKeyDown
12
+ function useDialog({ modalRef, overlayRef, isOpen, onDismiss = noop, initialFocusRef, closeButtonRef }) {
13
+ const onClickOutside = react_1.useCallback(e => {
14
+ if (modalRef.current &&
15
+ overlayRef.current &&
16
+ !modalRef.current.contains(e.target) &&
17
+ overlayRef.current.contains(e.target)) {
18
+ onDismiss();
19
+ }
20
+ }, [onDismiss, modalRef, overlayRef]);
21
+ react_1.useEffect(() => {
22
+ if (isOpen) {
23
+ document.addEventListener('click', onClickOutside);
24
+ return () => {
25
+ document.removeEventListener('click', onClickOutside);
26
+ };
27
+ }
28
+ }, [isOpen, onClickOutside]);
29
+ react_1.useEffect(() => {
30
+ if (isOpen) {
31
+ if (initialFocusRef && initialFocusRef.current) {
32
+ initialFocusRef.current.focus();
33
+ }
34
+ else if (closeButtonRef && closeButtonRef.current) {
35
+ closeButtonRef.current.focus();
36
+ }
37
+ }
38
+ }, [isOpen, initialFocusRef, closeButtonRef]);
39
+ const getFocusableItem = react_1.useCallback((e, movement) => {
40
+ if (modalRef.current) {
41
+ const items = Array.from(modalRef.current.querySelectorAll('*')).filter(focusable);
42
+ if (items.length === 0)
43
+ return;
44
+ e.preventDefault();
45
+ const focusedElement = document.activeElement;
46
+ if (!focusedElement) {
47
+ return;
48
+ }
49
+ const index = items.indexOf(focusedElement);
50
+ const offsetIndex = index + movement;
51
+ const fallbackIndex = movement === 1 ? 0 : items.length - 1;
52
+ const focusableItem = items[offsetIndex] || items[fallbackIndex];
53
+ return focusableItem;
54
+ }
55
+ }, [modalRef]);
56
+ const handleTab = react_1.useCallback(e => {
57
+ const movement = e.shiftKey ? -1 : 1;
58
+ const focusableItem = getFocusableItem(e, movement);
59
+ if (!focusableItem) {
60
+ return;
61
+ }
62
+ focusableItem.focus();
63
+ }, [getFocusableItem]);
64
+ const onKeyDown = react_1.useCallback(event => {
65
+ switch (event.key) {
66
+ case 'Tab':
67
+ handleTab(event);
68
+ break;
69
+ case 'Escape':
70
+ onDismiss();
71
+ event.stopPropagation();
72
+ break;
73
+ }
74
+ }, [handleTab, onDismiss]);
75
+ const getDialogProps = () => {
76
+ return { onKeyDown };
95
77
  };
96
- };
97
-
98
- return {
99
- getDialogProps
100
- };
78
+ return { getDialogProps };
101
79
  }
102
-
103
- var _default = useDialog;
104
- exports.default = _default;
80
+ exports.default = useDialog;
@@ -1,69 +1,52 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useFocusTrap = useFocusTrap;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _focusTrap = require("../behaviors/focusTrap");
11
-
12
- var _useProvidedRefOrCreate = require("./useProvidedRefOrCreate");
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useFocusTrap = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const focusTrap_1 = require("../behaviors/focusTrap");
9
+ const useProvidedRefOrCreate_1 = require("./useProvidedRefOrCreate");
16
10
  /**
17
11
  * Hook used to trap focus inside a container. Returns a ref that can be added to the container
18
12
  * that should trap focus.
19
13
  * @param settings {FocusTrapHookSettings}
20
14
  */
21
15
  function useFocusTrap(settings, dependencies = []) {
22
- const containerRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.containerRef);
23
- const initialFocusRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.initialFocusRef);
24
- const disabled = settings === null || settings === void 0 ? void 0 : settings.disabled;
25
-
26
- const abortController = _react.default.useRef();
27
-
28
- const previousFocusedElement = _react.default.useRef(null); // If we are enabling a focus trap and haven't already stored the previously focused element
29
- // go ahead an do that so we can restore later when the trap is disabled.
30
-
31
-
32
- if (!previousFocusedElement.current && !(settings !== null && settings !== void 0 && settings.disabled)) {
33
- previousFocusedElement.current = document.activeElement;
34
- } // This function removes the event listeners that enable the focus trap and restores focus
35
- // to the previously-focused element (if necessary).
36
-
37
-
38
- function disableTrap() {
39
- var _abortController$curr;
40
-
41
- (_abortController$curr = abortController.current) === null || _abortController$curr === void 0 ? void 0 : _abortController$curr.abort();
42
-
43
- if (settings !== null && settings !== void 0 && settings.restoreFocusOnCleanUp && previousFocusedElement.current instanceof HTMLElement) {
44
- previousFocusedElement.current.focus();
45
- previousFocusedElement.current = null;
16
+ const containerRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(settings?.containerRef);
17
+ const initialFocusRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(settings?.initialFocusRef);
18
+ const disabled = settings?.disabled;
19
+ const abortController = react_1.default.useRef();
20
+ const previousFocusedElement = react_1.default.useRef(null);
21
+ // If we are enabling a focus trap and haven't already stored the previously focused element
22
+ // go ahead an do that so we can restore later when the trap is disabled.
23
+ if (!previousFocusedElement.current && !settings?.disabled) {
24
+ previousFocusedElement.current = document.activeElement;
46
25
  }
47
- }
48
-
49
- _react.default.useEffect(() => {
50
- if (containerRef.current instanceof HTMLElement) {
51
- if (!disabled) {
52
- var _initialFocusRef$curr;
53
-
54
- abortController.current = (0, _focusTrap.focusTrap)(containerRef.current, (_initialFocusRef$curr = initialFocusRef.current) !== null && _initialFocusRef$curr !== void 0 ? _initialFocusRef$curr : undefined);
55
- return () => {
56
- disableTrap();
57
- };
58
- } else {
59
- disableTrap();
60
- }
26
+ // This function removes the event listeners that enable the focus trap and restores focus
27
+ // to the previously-focused element (if necessary).
28
+ function disableTrap() {
29
+ abortController.current?.abort();
30
+ if (settings?.restoreFocusOnCleanUp && previousFocusedElement.current instanceof HTMLElement) {
31
+ previousFocusedElement.current.focus();
32
+ previousFocusedElement.current = null;
33
+ }
61
34
  }
62
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
63
- [containerRef, initialFocusRef, disabled, ...dependencies]);
64
-
65
- return {
66
- containerRef,
67
- initialFocusRef
68
- };
69
- }
35
+ react_1.default.useEffect(() => {
36
+ if (containerRef.current instanceof HTMLElement) {
37
+ if (!disabled) {
38
+ abortController.current = focusTrap_1.focusTrap(containerRef.current, initialFocusRef.current ?? undefined);
39
+ return () => {
40
+ disableTrap();
41
+ };
42
+ }
43
+ else {
44
+ disableTrap();
45
+ }
46
+ }
47
+ },
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
49
+ [containerRef, initialFocusRef, disabled, ...dependencies]);
50
+ return { containerRef, initialFocusRef };
51
+ }
52
+ exports.useFocusTrap = useFocusTrap;
@@ -1,53 +1,57 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
5
13
  });
6
- exports.useFocusZone = useFocusZone;
7
-
8
- var _react = _interopRequireWildcard(require("react"));
9
-
10
- var _focusZone = require("../behaviors/focusZone");
11
-
12
- var _useProvidedRefOrCreate = require("./useProvidedRefOrCreate");
13
-
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
-
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
-
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.useFocusZone = void 0;
23
+ const react_1 = __importStar(require("react"));
24
+ const focusZone_1 = require("../behaviors/focusZone");
25
+ const useProvidedRefOrCreate_1 = require("./useProvidedRefOrCreate");
18
26
  function useFocusZone(settings = {}, dependencies = []) {
19
- const containerRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings.containerRef);
20
- const useActiveDescendant = !!settings.activeDescendantFocus;
21
- const passedActiveDescendantRef = typeof settings.activeDescendantFocus === 'boolean' || !settings.activeDescendantFocus ? undefined : settings.activeDescendantFocus;
22
- const activeDescendantControlRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(passedActiveDescendantRef);
23
- const disabled = settings.disabled;
24
-
25
- const abortController = _react.default.useRef();
26
-
27
- (0, _react.useEffect)(() => {
28
- if (containerRef.current instanceof HTMLElement && (!useActiveDescendant || activeDescendantControlRef.current instanceof HTMLElement)) {
29
- if (!disabled) {
30
- var _activeDescendantCont;
31
-
32
- const vanillaSettings = { ...settings,
33
- activeDescendantControl: (_activeDescendantCont = activeDescendantControlRef.current) !== null && _activeDescendantCont !== void 0 ? _activeDescendantCont : undefined
34
- };
35
- abortController.current = (0, _focusZone.focusZone)(containerRef.current, vanillaSettings);
36
- return () => {
37
- var _abortController$curr;
38
-
39
- (_abortController$curr = abortController.current) === null || _abortController$curr === void 0 ? void 0 : _abortController$curr.abort();
40
- };
41
- } else {
42
- var _abortController$curr2;
43
-
44
- (_abortController$curr2 = abortController.current) === null || _abortController$curr2 === void 0 ? void 0 : _abortController$curr2.abort();
45
- }
46
- }
47
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
48
- [disabled, ...dependencies]);
49
- return {
50
- containerRef,
51
- activeDescendantControlRef
52
- };
53
- }
27
+ const containerRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(settings.containerRef);
28
+ const useActiveDescendant = !!settings.activeDescendantFocus;
29
+ const passedActiveDescendantRef = typeof settings.activeDescendantFocus === 'boolean' || !settings.activeDescendantFocus
30
+ ? undefined
31
+ : settings.activeDescendantFocus;
32
+ const activeDescendantControlRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(passedActiveDescendantRef);
33
+ const disabled = settings.disabled;
34
+ const abortController = react_1.default.useRef();
35
+ react_1.useEffect(() => {
36
+ if (containerRef.current instanceof HTMLElement &&
37
+ (!useActiveDescendant || activeDescendantControlRef.current instanceof HTMLElement)) {
38
+ if (!disabled) {
39
+ const vanillaSettings = {
40
+ ...settings,
41
+ activeDescendantControl: activeDescendantControlRef.current ?? undefined
42
+ };
43
+ abortController.current = focusZone_1.focusZone(containerRef.current, vanillaSettings);
44
+ return () => {
45
+ abortController.current?.abort();
46
+ };
47
+ }
48
+ else {
49
+ abortController.current?.abort();
50
+ }
51
+ }
52
+ },
53
+ // eslint-disable-next-line react-hooks/exhaustive-deps
54
+ [disabled, ...dependencies]);
55
+ return { containerRef, activeDescendantControlRef };
56
+ }
57
+ exports.useFocusZone = useFocusZone;
@@ -1,28 +1,22 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.useOnEscapePress = void 0;
7
-
8
- var _react = require("react");
9
-
4
+ const react_1 = require("react");
10
5
  const handlers = [];
11
6
  /**
12
7
  * Calls all handlers in reverse order
13
8
  * @param event The KeyboardEvent generated by the Escape keydown.
14
9
  */
15
-
16
10
  function handleEscape(event) {
17
- if (event.key === 'Escape' && !event.defaultPrevented) {
18
- for (let i = handlers.length - 1; i >= 0; --i) {
19
- handlers[i](event); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
20
-
21
- if (event.defaultPrevented) {
22
- break;
23
- }
11
+ if (event.key === 'Escape' && !event.defaultPrevented) {
12
+ for (let i = handlers.length - 1; i >= 0; --i) {
13
+ handlers[i](event);
14
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
15
+ if (event.defaultPrevented) {
16
+ break;
17
+ }
18
+ }
24
19
  }
25
- }
26
20
  }
27
21
  /**
28
22
  * Sets up a `keydown` listener on `window.document`. If
@@ -45,25 +39,20 @@ function handleEscape(event) {
45
39
  * `onEscape` callback for memoization. Omit this param if the callback is already
46
40
  * memoized. See `React.useCallback` for more info on memoization.
47
41
  */
48
-
49
-
50
42
  const useOnEscapePress = (onEscape, callbackDependencies = [onEscape]) => {
51
- // eslint-disable-next-line react-hooks/exhaustive-deps
52
- const escapeCallback = (0, _react.useCallback)(onEscape, callbackDependencies);
53
- (0, _react.useEffect)(() => {
54
- if (handlers.length === 0) {
55
- document.addEventListener('keydown', handleEscape);
56
- }
57
-
58
- handlers.push(escapeCallback);
59
- return () => {
60
- handlers.splice(handlers.findIndex(h => h === escapeCallback), 1);
61
-
62
- if (handlers.length === 0) {
63
- document.removeEventListener('keydown', handleEscape);
64
- }
65
- };
66
- }, [escapeCallback]);
43
+ // eslint-disable-next-line react-hooks/exhaustive-deps
44
+ const escapeCallback = react_1.useCallback(onEscape, callbackDependencies);
45
+ react_1.useEffect(() => {
46
+ if (handlers.length === 0) {
47
+ document.addEventListener('keydown', handleEscape);
48
+ }
49
+ handlers.push(escapeCallback);
50
+ return () => {
51
+ handlers.splice(handlers.findIndex(h => h === escapeCallback), 1);
52
+ if (handlers.length === 0) {
53
+ document.removeEventListener('keydown', handleEscape);
54
+ }
55
+ };
56
+ }, [escapeCallback]);
67
57
  };
68
-
69
- exports.useOnEscapePress = useOnEscapePress;
58
+ exports.useOnEscapePress = useOnEscapePress;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOnOutsideClick = void 0;
4
+ const react_1 = require("react");
5
+ // Because events are handled at the document level, we provide a mechanism for early return.
6
+ const stopPropagation = true;
7
+ /**
8
+ * Calls all handlers in reverse order
9
+ * @param event The MouseEvent generated by the click event.
10
+ */
11
+ function handleClick(event) {
12
+ if (!event.defaultPrevented) {
13
+ for (const handler of Object.values(registry).reverse()) {
14
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
15
+ if (handler(event) === stopPropagation || event.defaultPrevented) {
16
+ break;
17
+ }
18
+ }
19
+ }
20
+ }
21
+ const registry = {};
22
+ function register(id, handler) {
23
+ registry[id] = handler;
24
+ }
25
+ function deregister(id) {
26
+ delete registry[id];
27
+ }
28
+ // For auto-incrementing unique identifiers for registered handlers.
29
+ let handlerId = 0;
30
+ const useOnOutsideClick = ({ containerRef, ignoreClickRefs, onClickOutside }) => {
31
+ const id = react_1.useMemo(() => handlerId++, []);
32
+ const handler = react_1.useCallback(event => {
33
+ // don't call click handler if the mouse event was triggered by an auxiliary button (right click/wheel button/etc)
34
+ if (event instanceof MouseEvent && event.button > 0) {
35
+ return stopPropagation;
36
+ }
37
+ // don't call handler if the click happened inside of the container
38
+ if (containerRef.current?.contains(event.target)) {
39
+ return stopPropagation;
40
+ }
41
+ // don't call handler if click happened on an ignored ref
42
+ if (ignoreClickRefs && ignoreClickRefs.some(({ current }) => current?.contains(event.target))) {
43
+ return stopPropagation;
44
+ }
45
+ onClickOutside(event);
46
+ }, [containerRef, ignoreClickRefs, onClickOutside]);
47
+ react_1.useEffect(() => {
48
+ if (Object.keys(registry).length === 0) {
49
+ // use capture to ensure we get all events
50
+ document.addEventListener('mousedown', handleClick, { capture: true });
51
+ }
52
+ register(id, handler);
53
+ return () => {
54
+ deregister(id);
55
+ if (Object.keys(registry).length === 0) {
56
+ document.removeEventListener('mousedown', handleClick, { capture: true });
57
+ }
58
+ };
59
+ }, [id, handler]);
60
+ };
61
+ exports.useOnOutsideClick = useOnOutsideClick;
@@ -1,36 +1,24 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOpenAndCloseFocus = void 0;
4
+ const react_1 = require("react");
5
+ const iterateFocusableElements_1 = require("../utils/iterateFocusableElements");
6
+ function useOpenAndCloseFocus({ initialFocusRef, returnFocusRef, containerRef, preventFocusOnOpen }) {
7
+ react_1.useEffect(() => {
8
+ if (preventFocusOnOpen) {
9
+ return;
10
+ }
11
+ const returnRef = returnFocusRef.current;
12
+ if (initialFocusRef && initialFocusRef.current) {
13
+ initialFocusRef.current.focus();
14
+ }
15
+ else if (containerRef.current) {
16
+ const firstItem = iterateFocusableElements_1.iterateFocusableElements(containerRef.current).next().value;
17
+ firstItem?.focus();
18
+ }
19
+ return function () {
20
+ returnRef?.focus();
21
+ };
22
+ }, [initialFocusRef, returnFocusRef, containerRef, preventFocusOnOpen]);
23
+ }
6
24
  exports.useOpenAndCloseFocus = useOpenAndCloseFocus;
7
-
8
- var _react = require("react");
9
-
10
- var _iterateFocusableElements = require("../utils/iterateFocusableElements");
11
-
12
- function useOpenAndCloseFocus({
13
- initialFocusRef,
14
- returnFocusRef,
15
- containerRef,
16
- preventFocusOnOpen
17
- }) {
18
- (0, _react.useEffect)(() => {
19
- if (preventFocusOnOpen) {
20
- return;
21
- }
22
-
23
- const returnRef = returnFocusRef.current;
24
-
25
- if (initialFocusRef && initialFocusRef.current) {
26
- initialFocusRef.current.focus();
27
- } else if (containerRef.current) {
28
- const firstItem = (0, _iterateFocusableElements.iterateFocusableElements)(containerRef.current).next().value;
29
- firstItem === null || firstItem === void 0 ? void 0 : firstItem.focus();
30
- }
31
-
32
- return function () {
33
- returnRef === null || returnRef === void 0 ? void 0 : returnRef.focus();
34
- };
35
- }, [initialFocusRef, returnFocusRef, containerRef, preventFocusOnOpen]);
36
- }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useOverlay = void 0;
4
+ const useOnOutsideClick_1 = require("./useOnOutsideClick");
5
+ const useOpenAndCloseFocus_1 = require("./useOpenAndCloseFocus");
6
+ const useOnEscapePress_1 = require("./useOnEscapePress");
7
+ const useProvidedRefOrCreate_1 = require("./useProvidedRefOrCreate");
8
+ const useOverlay = ({ overlayRef: _overlayRef, returnFocusRef, initialFocusRef, onEscape, ignoreClickRefs, onClickOutside, preventFocusOnOpen }) => {
9
+ const overlayRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(_overlayRef);
10
+ useOpenAndCloseFocus_1.useOpenAndCloseFocus({ containerRef: overlayRef, returnFocusRef, initialFocusRef, preventFocusOnOpen });
11
+ useOnOutsideClick_1.useOnOutsideClick({ containerRef: overlayRef, ignoreClickRefs, onClickOutside });
12
+ useOnEscapePress_1.useOnEscapePress(onEscape);
13
+ return { ref: overlayRef };
14
+ };
15
+ exports.useOverlay = useOverlay;
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useProvidedRefOrCreate = useProvidedRefOrCreate;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useProvidedRefOrCreate = void 0;
7
+ const react_1 = __importDefault(require("react"));
12
8
  /**
13
9
  * There are some situations where we only want to create a new ref if one is not provided to a component
14
10
  * or hook as a prop. However, due to the `rules-of-hooks`, we cannot conditionally make a call to `React.useRef`
@@ -18,7 +14,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
18
14
  * @type TRef The type of the RefObject which should be created.
19
15
  */
20
16
  function useProvidedRefOrCreate(providedRef) {
21
- const createdRef = _react.default.useRef(null);
22
-
23
- return providedRef !== null && providedRef !== void 0 ? providedRef : createdRef;
24
- }
17
+ const createdRef = react_1.default.useRef(null);
18
+ return providedRef ?? createdRef;
19
+ }
20
+ exports.useProvidedRefOrCreate = useProvidedRefOrCreate;