@primer/components 0.0.0-2021102995710 → 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 (427) 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.jsx +36 -0
  19. package/lib/ActionList2/Item.jsx +174 -0
  20. package/lib/ActionList2/LinkItem.jsx +28 -0
  21. package/lib/ActionList2/List.d.ts +1 -1
  22. package/lib/ActionList2/List.js +2 -1
  23. package/lib/ActionList2/List.jsx +41 -0
  24. package/lib/ActionList2/Selection.jsx +50 -0
  25. package/lib/ActionList2/Visuals.jsx +48 -0
  26. package/lib/ActionList2/index.js +23 -41
  27. package/lib/ActionMenu.jsx +73 -0
  28. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  29. package/lib/AnchoredOverlay/index.js +4 -12
  30. package/lib/Autocomplete/Autocomplete.d.ts +3 -3
  31. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  32. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  33. package/lib/Autocomplete/AutocompleteInput.d.ts +3 -3
  34. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  35. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  36. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  37. package/lib/Autocomplete/index.js +7 -14
  38. package/lib/Avatar.jsx +34 -0
  39. package/lib/AvatarPair.jsx +29 -0
  40. package/lib/AvatarStack.jsx +151 -0
  41. package/lib/BaseStyles.jsx +65 -0
  42. package/lib/BorderBox.jsx +18 -0
  43. package/lib/Box.jsx +10 -0
  44. package/lib/BranchName.jsx +20 -0
  45. package/lib/Breadcrumbs.d.ts +7 -8
  46. package/lib/Breadcrumbs.js +12 -7
  47. package/lib/Breadcrumbs.jsx +74 -0
  48. package/lib/Button/Button.d.ts +3 -2
  49. package/lib/Button/Button.js +6 -2
  50. package/lib/Button/Button.jsx +60 -0
  51. package/lib/Button/ButtonBase.d.ts +8 -5
  52. package/lib/Button/ButtonBase.js +5 -1
  53. package/lib/Button/ButtonBase.jsx +36 -0
  54. package/lib/Button/ButtonClose.d.ts +46 -3
  55. package/lib/Button/ButtonClose.js +1 -1
  56. package/lib/Button/ButtonClose.jsx +55 -0
  57. package/lib/Button/ButtonDanger.d.ts +3 -2
  58. package/lib/Button/ButtonDanger.js +6 -2
  59. package/lib/Button/ButtonDanger.jsx +63 -0
  60. package/lib/Button/ButtonGroup.jsx +55 -0
  61. package/lib/Button/ButtonInvisible.d.ts +3 -2
  62. package/lib/Button/ButtonInvisible.js +6 -2
  63. package/lib/Button/ButtonInvisible.jsx +52 -0
  64. package/lib/Button/ButtonOutline.d.ts +3 -2
  65. package/lib/Button/ButtonOutline.js +6 -2
  66. package/lib/Button/ButtonOutline.jsx +63 -0
  67. package/lib/Button/ButtonPrimary.d.ts +3 -2
  68. package/lib/Button/ButtonPrimary.js +6 -2
  69. package/lib/Button/ButtonPrimary.jsx +62 -0
  70. package/lib/Button/ButtonStyles.jsx +37 -0
  71. package/lib/Button/ButtonTableList.d.ts +2 -1
  72. package/lib/Button/ButtonTableList.js +1 -1
  73. package/lib/Button/ButtonTableList.jsx +49 -0
  74. package/lib/Button/index.js +21 -70
  75. package/lib/Caret.jsx +93 -0
  76. package/lib/CircleBadge.d.ts +5 -4
  77. package/lib/CircleBadge.js +1 -1
  78. package/lib/CircleBadge.jsx +43 -0
  79. package/lib/CircleOcticon.d.ts +1 -1
  80. package/lib/CircleOcticon.jsx +21 -0
  81. package/lib/CounterLabel.d.ts +2 -1
  82. package/lib/CounterLabel.js +1 -1
  83. package/lib/CounterLabel.jsx +44 -0
  84. package/lib/Details.jsx +21 -0
  85. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  86. package/lib/Dialog/Dialog.d.ts +9 -5
  87. package/lib/Dialog/Dialog.js +11 -17
  88. package/lib/Dialog/Dialog.jsx +273 -0
  89. package/lib/Dialog.d.ts +5 -4
  90. package/lib/Dialog.js +1 -1
  91. package/lib/Dialog.jsx +131 -0
  92. package/lib/Dropdown.d.ts +99 -10
  93. package/lib/Dropdown.js +3 -3
  94. package/lib/Dropdown.jsx +134 -0
  95. package/lib/DropdownMenu/DropdownButton.d.ts +47 -3
  96. package/lib/DropdownMenu/DropdownButton.js +1 -3
  97. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  98. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  99. package/lib/DropdownMenu/index.js +6 -20
  100. package/lib/DropdownStyles.js +18 -26
  101. package/lib/EmojiPicker/EmojiPicker.d.ts +15 -0
  102. package/lib/EmojiPicker/EmojiPicker.js +205 -0
  103. package/lib/EmojiPicker/EmojiPicker.jsx +125 -0
  104. package/lib/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  105. package/lib/EmojiPicker/EmojiPickerAnchor.js +1 -0
  106. package/lib/EmojiPicker/EmojiPickerAnchor.jsx +1 -0
  107. package/lib/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  108. package/lib/EmojiPicker/EmojiPickerPanel.js +18 -0
  109. package/lib/EmojiPicker/EmojiPickerPanel.jsx +10 -0
  110. package/lib/EmojiPicker/data.d.ts +9 -0
  111. package/lib/EmojiPicker/data.js +7254 -0
  112. package/lib/EmojiPicker/index.d.ts +2 -0
  113. package/lib/EmojiPicker/index.js +8 -0
  114. package/lib/FilterList.d.ts +303 -264
  115. package/lib/FilterList.js +6 -2
  116. package/lib/FilterList.jsx +63 -0
  117. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  118. package/lib/FilteredActionList/index.js +4 -12
  119. package/lib/FilteredSearch.d.ts +2 -1
  120. package/lib/FilteredSearch.js +1 -1
  121. package/lib/FilteredSearch.jsx +29 -0
  122. package/lib/Flash.d.ts +2 -1
  123. package/lib/Flash.js +1 -1
  124. package/lib/Flash.jsx +70 -0
  125. package/lib/Flex.jsx +15 -0
  126. package/lib/FormGroup.d.ts +5 -4
  127. package/lib/FormGroup.js +2 -2
  128. package/lib/FormGroup.jsx +25 -0
  129. package/lib/Grid.jsx +15 -0
  130. package/lib/Header.d.ts +7 -6
  131. package/lib/Header.js +4 -4
  132. package/lib/Header.jsx +90 -0
  133. package/lib/Heading.jsx +21 -0
  134. package/lib/Label.d.ts +2 -1
  135. package/lib/Label.js +3 -2
  136. package/lib/Label.jsx +84 -0
  137. package/lib/LabelGroup.d.ts +2 -1
  138. package/lib/LabelGroup.js +1 -1
  139. package/lib/LabelGroup.jsx +19 -0
  140. package/lib/Link.d.ts +2 -1
  141. package/lib/Link.js +1 -1
  142. package/lib/Link.jsx +38 -0
  143. package/lib/NewButton/button-counter.jsx +14 -0
  144. package/lib/NewButton/button.js +42 -34
  145. package/lib/NewButton/button.jsx +278 -0
  146. package/lib/NewButton/index.js +5 -12
  147. package/lib/NewButton/types.js +2 -1
  148. package/lib/Overlay.d.ts +11 -14
  149. package/lib/Overlay.js +4 -3
  150. package/lib/Overlay.jsx +156 -0
  151. package/lib/Pagehead.d.ts +2 -1
  152. package/lib/Pagehead.js +1 -1
  153. package/lib/Pagehead.jsx +18 -0
  154. package/lib/Pagination/Pagination.js +1 -1
  155. package/lib/Pagination/Pagination.jsx +163 -0
  156. package/lib/Pagination/index.js +6 -12
  157. package/lib/Pagination/model.jsx +174 -0
  158. package/lib/PointerBox.jsx +25 -0
  159. package/lib/Popover.d.ts +5 -4
  160. package/lib/Popover.js +5 -4
  161. package/lib/Popover.jsx +210 -0
  162. package/lib/Portal/Portal.jsx +79 -0
  163. package/lib/Portal/index.js +5 -16
  164. package/lib/Position.d.ts +4 -4
  165. package/lib/Position.jsx +46 -0
  166. package/lib/ProgressBar.jsx +39 -0
  167. package/lib/SelectMenu/SelectMenu.d.ts +189 -21
  168. package/lib/SelectMenu/SelectMenu.js +3 -1
  169. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  170. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  171. package/lib/SelectMenu/SelectMenuDivider.d.ts +2 -1
  172. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  173. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  174. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  175. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  176. package/lib/SelectMenu/SelectMenuFooter.d.ts +2 -1
  177. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  178. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  179. package/lib/SelectMenu/SelectMenuHeader.d.ts +2 -1
  180. package/lib/SelectMenu/SelectMenuHeader.js +1 -1
  181. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  182. package/lib/SelectMenu/SelectMenuItem.d.ts +3 -2
  183. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  184. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  185. package/lib/SelectMenu/SelectMenuList.d.ts +2 -1
  186. package/lib/SelectMenu/SelectMenuList.js +1 -1
  187. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  188. package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  189. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -3
  190. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  191. package/lib/SelectMenu/SelectMenuModal.d.ts +3 -2
  192. package/lib/SelectMenu/SelectMenuModal.js +1 -1
  193. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  194. package/lib/SelectMenu/SelectMenuTab.d.ts +2 -1
  195. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  196. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  197. package/lib/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  198. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  199. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  200. package/lib/SelectMenu/SelectMenuTabs.d.ts +2 -1
  201. package/lib/SelectMenu/SelectMenuTabs.js +1 -1
  202. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  203. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  204. package/lib/SelectMenu/index.js +7 -14
  205. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  206. package/lib/SelectPanel/index.js +4 -12
  207. package/lib/SideNav.d.ts +8 -11
  208. package/lib/SideNav.js +15 -8
  209. package/lib/SideNav.jsx +177 -0
  210. package/lib/Spinner.jsx +35 -0
  211. package/lib/StateLabel.d.ts +2 -1
  212. package/lib/StateLabel.js +5 -6
  213. package/lib/StateLabel.jsx +94 -0
  214. package/lib/StyledOcticon.d.ts +2 -1
  215. package/lib/StyledOcticon.js +3 -1
  216. package/lib/StyledOcticon.jsx +20 -0
  217. package/lib/SubNav.d.ts +11 -5
  218. package/lib/SubNav.js +12 -7
  219. package/lib/SubNav.jsx +104 -0
  220. package/lib/TabNav.d.ts +4 -3
  221. package/lib/TabNav.js +2 -2
  222. package/lib/TabNav.jsx +60 -0
  223. package/lib/Text.jsx +14 -0
  224. package/lib/TextInput.jsx +23 -0
  225. package/lib/TextInputWithTokens.d.ts +3 -3
  226. package/lib/TextInputWithTokens.jsx +218 -0
  227. package/lib/ThemeProvider.jsx +130 -0
  228. package/lib/Timeline.d.ts +393 -19
  229. package/lib/Timeline.js +13 -16
  230. package/lib/Timeline.jsx +124 -0
  231. package/lib/Token/AvatarToken.jsx +54 -0
  232. package/lib/Token/IssueLabelToken.jsx +125 -0
  233. package/lib/Token/Token.d.ts +1 -1
  234. package/lib/Token/Token.jsx +103 -0
  235. package/lib/Token/TokenBase.jsx +88 -0
  236. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  237. package/lib/Token/_TokenTextContainer.jsx +49 -0
  238. package/lib/Token/index.js +11 -30
  239. package/lib/Tooltip.d.ts +2 -1
  240. package/lib/Tooltip.js +1 -1
  241. package/lib/Tooltip.jsx +246 -0
  242. package/lib/Truncate.d.ts +2 -1
  243. package/lib/Truncate.js +3 -1
  244. package/lib/Truncate.jsx +27 -0
  245. package/lib/UnderlineNav.d.ts +3 -2
  246. package/lib/UnderlineNav.js +2 -2
  247. package/lib/UnderlineNav.jsx +90 -0
  248. package/lib/_TextInputWrapper.jsx +120 -0
  249. package/lib/_UnstyledTextInput.jsx +22 -0
  250. package/lib/behaviors/anchoredPosition.js +205 -234
  251. package/lib/behaviors/focusTrap.js +121 -157
  252. package/lib/behaviors/focusZone.js +434 -509
  253. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  254. package/lib/constants.js +39 -43
  255. package/lib/drafts.js +20 -30
  256. package/lib/hooks/index.js +16 -60
  257. package/lib/hooks/useAnchoredPosition.js +32 -40
  258. package/lib/hooks/useCombinedRefs.js +32 -36
  259. package/lib/hooks/useDetails.jsx +39 -0
  260. package/lib/hooks/useDialog.js +72 -96
  261. package/lib/hooks/useFocusTrap.js +43 -60
  262. package/lib/hooks/useFocusZone.js +54 -50
  263. package/lib/hooks/useOnEscapePress.js +25 -36
  264. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  265. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  266. package/lib/hooks/useOverlay.jsx +15 -0
  267. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  268. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  269. package/lib/hooks/useRenderForcingRef.js +13 -17
  270. package/lib/hooks/useResizeObserver.js +15 -18
  271. package/lib/hooks/useSafeTimeout.js +22 -30
  272. package/lib/hooks/useScrollFlash.js +16 -23
  273. package/lib/index.d.ts +2 -2
  274. package/lib/index.js +165 -652
  275. package/lib/polyfills/eventListenerSignal.js +37 -45
  276. package/lib/sx.js +10 -22
  277. package/lib/theme-preval.js +64 -3169
  278. package/lib/theme.js +3 -12
  279. package/lib/utils/create-slots.jsx +65 -0
  280. package/lib/utils/deprecate.jsx +59 -0
  281. package/lib/utils/isNumeric.jsx +7 -0
  282. package/lib/utils/iterateFocusableElements.js +63 -85
  283. package/lib/utils/ssr.jsx +6 -0
  284. package/lib/utils/test-deprecations.jsx +20 -0
  285. package/lib/utils/test-helpers.jsx +8 -0
  286. package/lib/utils/test-matchers.jsx +100 -0
  287. package/lib/utils/testing.d.ts +61 -28
  288. package/lib/utils/testing.js +0 -29
  289. package/lib/utils/testing.jsx +206 -0
  290. package/lib/utils/theme.js +33 -47
  291. package/lib/utils/types/AriaRole.js +2 -1
  292. package/lib/utils/types/ComponentProps.js +2 -1
  293. package/lib/utils/types/Flatten.js +2 -1
  294. package/lib/utils/types/KeyPaths.js +2 -1
  295. package/lib/utils/types/MandateProps.js +16 -1
  296. package/lib/utils/types/Merge.js +2 -1
  297. package/lib/utils/types/index.js +16 -69
  298. package/lib/utils/uniqueId.js +5 -8
  299. package/lib/utils/use-force-update.js +8 -14
  300. package/lib/utils/useIsomorphicLayoutEffect.js +8 -11
  301. package/lib/utils/userAgent.js +8 -12
  302. package/lib-esm/ActionList/Item.js +53 -28
  303. package/lib-esm/ActionList2/Group.d.ts +2 -28
  304. package/lib-esm/ActionList2/Group.js +5 -52
  305. package/lib-esm/ActionList2/List.d.ts +1 -1
  306. package/lib-esm/ActionList2/List.js +2 -1
  307. package/lib-esm/Autocomplete/Autocomplete.d.ts +3 -3
  308. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +3 -3
  309. package/lib-esm/Breadcrumbs.d.ts +7 -8
  310. package/lib-esm/Breadcrumbs.js +13 -8
  311. package/lib-esm/Button/Button.d.ts +3 -2
  312. package/lib-esm/Button/Button.js +2 -2
  313. package/lib-esm/Button/ButtonBase.d.ts +8 -5
  314. package/lib-esm/Button/ButtonBase.js +3 -1
  315. package/lib-esm/Button/ButtonClose.d.ts +46 -3
  316. package/lib-esm/Button/ButtonClose.js +2 -2
  317. package/lib-esm/Button/ButtonDanger.d.ts +3 -2
  318. package/lib-esm/Button/ButtonDanger.js +2 -2
  319. package/lib-esm/Button/ButtonInvisible.d.ts +3 -2
  320. package/lib-esm/Button/ButtonInvisible.js +2 -2
  321. package/lib-esm/Button/ButtonOutline.d.ts +3 -2
  322. package/lib-esm/Button/ButtonOutline.js +2 -2
  323. package/lib-esm/Button/ButtonPrimary.d.ts +3 -2
  324. package/lib-esm/Button/ButtonPrimary.js +2 -2
  325. package/lib-esm/Button/ButtonTableList.d.ts +2 -1
  326. package/lib-esm/Button/ButtonTableList.js +2 -2
  327. package/lib-esm/CircleBadge.d.ts +5 -4
  328. package/lib-esm/CircleBadge.js +2 -2
  329. package/lib-esm/CircleOcticon.d.ts +1 -1
  330. package/lib-esm/CounterLabel.d.ts +2 -1
  331. package/lib-esm/CounterLabel.js +2 -2
  332. package/lib-esm/Dialog/Dialog.d.ts +9 -5
  333. package/lib-esm/Dialog/Dialog.js +12 -12
  334. package/lib-esm/Dialog.d.ts +5 -4
  335. package/lib-esm/Dialog.js +2 -2
  336. package/lib-esm/Dropdown.d.ts +99 -10
  337. package/lib-esm/Dropdown.js +4 -4
  338. package/lib-esm/DropdownMenu/DropdownButton.d.ts +47 -3
  339. package/lib-esm/DropdownMenu/DropdownButton.js +1 -3
  340. package/lib-esm/EmojiPicker/EmojiPicker.d.ts +15 -0
  341. package/lib-esm/EmojiPicker/EmojiPicker.js +184 -0
  342. package/lib-esm/EmojiPicker/EmojiPickerAnchor.d.ts +0 -0
  343. package/lib-esm/EmojiPicker/EmojiPickerAnchor.js +0 -0
  344. package/lib-esm/EmojiPicker/EmojiPickerPanel.d.ts +3 -0
  345. package/lib-esm/EmojiPicker/EmojiPickerPanel.js +8 -0
  346. package/lib-esm/EmojiPicker/data.d.ts +9 -0
  347. package/lib-esm/EmojiPicker/data.js +5434 -0
  348. package/lib-esm/EmojiPicker/index.d.ts +2 -0
  349. package/lib-esm/EmojiPicker/index.js +1 -0
  350. package/lib-esm/FilterList.d.ts +303 -264
  351. package/lib-esm/FilterList.js +7 -3
  352. package/lib-esm/FilteredSearch.d.ts +2 -1
  353. package/lib-esm/FilteredSearch.js +2 -2
  354. package/lib-esm/Flash.d.ts +2 -1
  355. package/lib-esm/Flash.js +2 -2
  356. package/lib-esm/FormGroup.d.ts +5 -4
  357. package/lib-esm/FormGroup.js +3 -3
  358. package/lib-esm/Header.d.ts +7 -6
  359. package/lib-esm/Header.js +5 -5
  360. package/lib-esm/Label.d.ts +2 -1
  361. package/lib-esm/Label.js +4 -3
  362. package/lib-esm/LabelGroup.d.ts +2 -1
  363. package/lib-esm/LabelGroup.js +2 -2
  364. package/lib-esm/Link.d.ts +2 -1
  365. package/lib-esm/Link.js +2 -2
  366. package/lib-esm/NewButton/button.js +42 -31
  367. package/lib-esm/Overlay.d.ts +11 -14
  368. package/lib-esm/Overlay.js +3 -2
  369. package/lib-esm/Pagehead.d.ts +2 -1
  370. package/lib-esm/Pagehead.js +2 -2
  371. package/lib-esm/Pagination/Pagination.js +2 -2
  372. package/lib-esm/Popover.d.ts +5 -4
  373. package/lib-esm/Popover.js +5 -4
  374. package/lib-esm/Position.d.ts +4 -4
  375. package/lib-esm/SelectMenu/SelectMenu.d.ts +189 -21
  376. package/lib-esm/SelectMenu/SelectMenu.js +2 -1
  377. package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +2 -1
  378. package/lib-esm/SelectMenu/SelectMenuDivider.js +2 -2
  379. package/lib-esm/SelectMenu/SelectMenuFilter.js +2 -2
  380. package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +2 -1
  381. package/lib-esm/SelectMenu/SelectMenuFooter.js +2 -2
  382. package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +2 -1
  383. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  384. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +3 -2
  385. package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
  386. package/lib-esm/SelectMenu/SelectMenuList.d.ts +2 -1
  387. package/lib-esm/SelectMenu/SelectMenuList.js +2 -2
  388. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  389. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +2 -3
  390. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +3 -2
  391. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  392. package/lib-esm/SelectMenu/SelectMenuTab.d.ts +2 -1
  393. package/lib-esm/SelectMenu/SelectMenuTab.js +2 -2
  394. package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +2 -1
  395. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +2 -2
  396. package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +2 -1
  397. package/lib-esm/SelectMenu/SelectMenuTabs.js +2 -2
  398. package/lib-esm/SideNav.d.ts +8 -11
  399. package/lib-esm/SideNav.js +16 -8
  400. package/lib-esm/StateLabel.d.ts +2 -1
  401. package/lib-esm/StateLabel.js +6 -7
  402. package/lib-esm/StyledOcticon.d.ts +2 -1
  403. package/lib-esm/StyledOcticon.js +2 -1
  404. package/lib-esm/SubNav.d.ts +11 -5
  405. package/lib-esm/SubNav.js +13 -8
  406. package/lib-esm/TabNav.d.ts +4 -3
  407. package/lib-esm/TabNav.js +3 -3
  408. package/lib-esm/TextInputWithTokens.d.ts +3 -3
  409. package/lib-esm/Timeline.d.ts +393 -19
  410. package/lib-esm/Timeline.js +13 -12
  411. package/lib-esm/Token/Token.d.ts +1 -1
  412. package/lib-esm/Tooltip.d.ts +2 -1
  413. package/lib-esm/Tooltip.js +2 -2
  414. package/lib-esm/Truncate.d.ts +2 -1
  415. package/lib-esm/Truncate.js +2 -1
  416. package/lib-esm/UnderlineNav.d.ts +3 -2
  417. package/lib-esm/UnderlineNav.js +3 -3
  418. package/lib-esm/index.d.ts +2 -2
  419. package/lib-esm/index.js +1 -1
  420. package/lib-esm/theme-preval.js +366 -512
  421. package/lib-esm/utils/testing.d.ts +61 -28
  422. package/lib-esm/utils/testing.js +0 -24
  423. package/package.json +5 -4
  424. package/lib/Checkbox.d.ts +0 -29
  425. package/lib/Checkbox.js +0 -64
  426. package/lib-esm/Checkbox.d.ts +0 -29
  427. package/lib-esm/Checkbox.js +0 -44
@@ -1,34 +1,25 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.focusTrap = focusTrap;
7
-
8
- var _iterateFocusableElements = require("../utils/iterateFocusableElements");
9
-
10
- var _eventListenerSignal = require("../polyfills/eventListenerSignal");
11
-
12
- (0, _eventListenerSignal.polyfill)();
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.focusTrap = void 0;
4
+ const iterateFocusableElements_1 = require("../utils/iterateFocusableElements");
5
+ const eventListenerSignal_1 = require("../polyfills/eventListenerSignal");
6
+ eventListenerSignal_1.polyfill();
13
7
  const suspendedTrapStack = [];
14
8
  let activeTrap = undefined;
15
-
16
9
  function tryReactivate() {
17
- const trapToReactivate = suspendedTrapStack.pop();
18
-
19
- if (trapToReactivate) {
20
- focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);
21
- }
22
- } // @todo If AbortController.prototype.follow is ever implemented, that
10
+ const trapToReactivate = suspendedTrapStack.pop();
11
+ if (trapToReactivate) {
12
+ focusTrap(trapToReactivate.container, trapToReactivate.initialFocus, trapToReactivate.originalSignal);
13
+ }
14
+ }
15
+ // @todo If AbortController.prototype.follow is ever implemented, that
23
16
  // could replace this function. @see https://github.com/whatwg/dom/issues/920
24
-
25
-
26
17
  function followSignal(signal) {
27
- const controller = new AbortController();
28
- signal.addEventListener('abort', () => {
29
- controller.abort();
30
- });
31
- return controller;
18
+ const controller = new AbortController();
19
+ signal.addEventListener('abort', () => {
20
+ controller.abort();
21
+ });
22
+ return controller;
32
23
  }
33
24
  /**
34
25
  * Returns the first focusable child of `container`. If `lastChild` is true,
@@ -36,144 +27,117 @@ function followSignal(signal) {
36
27
  * @param container
37
28
  * @param lastChild
38
29
  */
39
-
40
-
41
30
  function getFocusableChild(container, lastChild = false) {
42
- return (0, _iterateFocusableElements.iterateFocusableElements)(container, {
43
- reverse: lastChild,
44
- strict: true,
45
- onlyTabbable: true
46
- }).next().value;
31
+ return iterateFocusableElements_1.iterateFocusableElements(container, { reverse: lastChild, strict: true, onlyTabbable: true }).next().value;
47
32
  }
48
- /**
49
- * Traps focus within the given container.
50
- * @param container The container in which to trap focus
51
- * @returns AbortController - call `.abort()` to disable the focus trap
52
- */
53
-
54
-
55
33
  function focusTrap(container, initialFocus, abortSignal) {
56
- // Set up an abort controller if a signal was not passed in
57
- const controller = new AbortController();
58
- const signal = abortSignal !== null && abortSignal !== void 0 ? abortSignal : controller.signal;
59
- container.setAttribute('data-focus-trap', 'active');
60
- let lastFocusedChild = undefined; // Ensure focus remains in the trap zone by checking that a given recently-focused
61
- // element is inside the trap zone. If it isn't, redirect focus to a suitable
62
- // element within the trap zone. If need to redirect focus and a suitable element
63
- // is not found, focus the container.
64
-
65
- function ensureTrapZoneHasFocus(focusedElement) {
66
- if (focusedElement instanceof HTMLElement && document.contains(container)) {
67
- if (container.contains(focusedElement)) {
68
- // If a child of the trap zone was focused, remember it
69
- lastFocusedChild = focusedElement;
70
- return;
71
- } else {
72
- if (lastFocusedChild && (0, _iterateFocusableElements.isTabbable)(lastFocusedChild) && container.contains(lastFocusedChild)) {
73
- lastFocusedChild.focus();
74
- return;
75
- } else if (initialFocus && container.contains(initialFocus)) {
76
- initialFocus.focus();
77
- return;
78
- } else {
79
- // Ensure the container is focusable:
80
- // - Either the container already has a `tabIndex`
81
- // - Or provide a temporary `tabIndex`
82
- const containerNeedsTemporaryTabIndex = container.getAttribute('tabindex') === null;
83
-
84
- if (containerNeedsTemporaryTabIndex) {
85
- container.setAttribute('tabindex', '-1');
86
- } // Focus the container.
87
-
88
-
89
- container.focus(); // If a temporary `tabIndex` was provided, remove it.
90
-
91
- if (containerNeedsTemporaryTabIndex) {
92
- // Once focus has moved from the container to a child within the FocusTrap,
93
- // the container can be made un-refocusable by removing `tabIndex`.
94
- container.addEventListener('blur', () => container.removeAttribute('tabindex'), {
95
- once: true
96
- }); // NB: If `tabIndex` was removed *before* `blur`, then certain browsers (e.g. Chrome)
97
- // would consider `body` the `activeElement`, and as a result, keyboard navigation
98
- // between children would break, since `body` is outside the `FocusTrap`.
99
- }
100
-
101
- return;
34
+ // Set up an abort controller if a signal was not passed in
35
+ const controller = new AbortController();
36
+ const signal = abortSignal ?? controller.signal;
37
+ container.setAttribute('data-focus-trap', 'active');
38
+ let lastFocusedChild = undefined;
39
+ // Ensure focus remains in the trap zone by checking that a given recently-focused
40
+ // element is inside the trap zone. If it isn't, redirect focus to a suitable
41
+ // element within the trap zone. If need to redirect focus and a suitable element
42
+ // is not found, focus the container.
43
+ function ensureTrapZoneHasFocus(focusedElement) {
44
+ if (focusedElement instanceof HTMLElement && document.contains(container)) {
45
+ if (container.contains(focusedElement)) {
46
+ // If a child of the trap zone was focused, remember it
47
+ lastFocusedChild = focusedElement;
48
+ return;
49
+ }
50
+ else {
51
+ if (lastFocusedChild && iterateFocusableElements_1.isTabbable(lastFocusedChild) && container.contains(lastFocusedChild)) {
52
+ lastFocusedChild.focus();
53
+ return;
54
+ }
55
+ else if (initialFocus && container.contains(initialFocus)) {
56
+ initialFocus.focus();
57
+ return;
58
+ }
59
+ else {
60
+ // Ensure the container is focusable:
61
+ // - Either the container already has a `tabIndex`
62
+ // - Or provide a temporary `tabIndex`
63
+ const containerNeedsTemporaryTabIndex = container.getAttribute('tabindex') === null;
64
+ if (containerNeedsTemporaryTabIndex) {
65
+ container.setAttribute('tabindex', '-1');
66
+ }
67
+ // Focus the container.
68
+ container.focus();
69
+ // If a temporary `tabIndex` was provided, remove it.
70
+ if (containerNeedsTemporaryTabIndex) {
71
+ // Once focus has moved from the container to a child within the FocusTrap,
72
+ // the container can be made un-refocusable by removing `tabIndex`.
73
+ container.addEventListener('blur', () => container.removeAttribute('tabindex'), { once: true });
74
+ // NB: If `tabIndex` was removed *before* `blur`, then certain browsers (e.g. Chrome)
75
+ // would consider `body` the `activeElement`, and as a result, keyboard navigation
76
+ // between children would break, since `body` is outside the `FocusTrap`.
77
+ }
78
+ return;
79
+ }
80
+ }
102
81
  }
103
- }
104
82
  }
105
- }
106
-
107
- const wrappingController = followSignal(signal);
108
- container.addEventListener('keydown', event => {
109
- if (event.key !== 'Tab' || event.defaultPrevented) {
110
- return;
111
- }
112
-
113
- const {
114
- target
115
- } = event;
116
- const firstFocusableChild = getFocusableChild(container);
117
- const lastFocusableChild = getFocusableChild(container, true);
118
-
119
- if (target === firstFocusableChild && event.shiftKey) {
120
- event.preventDefault();
121
- lastFocusableChild === null || lastFocusableChild === void 0 ? void 0 : lastFocusableChild.focus();
122
- } else if (target === lastFocusableChild && !event.shiftKey) {
123
- event.preventDefault();
124
- firstFocusableChild === null || firstFocusableChild === void 0 ? void 0 : firstFocusableChild.focus();
83
+ const wrappingController = followSignal(signal);
84
+ container.addEventListener('keydown', event => {
85
+ if (event.key !== 'Tab' || event.defaultPrevented) {
86
+ return;
87
+ }
88
+ const { target } = event;
89
+ const firstFocusableChild = getFocusableChild(container);
90
+ const lastFocusableChild = getFocusableChild(container, true);
91
+ if (target === firstFocusableChild && event.shiftKey) {
92
+ event.preventDefault();
93
+ lastFocusableChild?.focus();
94
+ }
95
+ else if (target === lastFocusableChild && !event.shiftKey) {
96
+ event.preventDefault();
97
+ firstFocusableChild?.focus();
98
+ }
99
+ }, { signal: wrappingController.signal });
100
+ if (activeTrap) {
101
+ const suspendedTrap = activeTrap;
102
+ activeTrap.container.setAttribute('data-focus-trap', 'suspended');
103
+ activeTrap.controller.abort();
104
+ suspendedTrapStack.push(suspendedTrap);
125
105
  }
126
- }, {
127
- signal: wrappingController.signal
128
- });
129
-
130
- if (activeTrap) {
131
- const suspendedTrap = activeTrap;
132
- activeTrap.container.setAttribute('data-focus-trap', 'suspended');
133
- activeTrap.controller.abort();
134
- suspendedTrapStack.push(suspendedTrap);
135
- } // When this trap is canceled, either by the user or by us for suspension
136
-
137
-
138
- wrappingController.signal.addEventListener('abort', () => {
139
- activeTrap = undefined;
140
- }); // Only when user-canceled
141
-
142
- signal.addEventListener('abort', () => {
143
- container.removeAttribute('data-focus-trap');
106
+ // When this trap is canceled, either by the user or by us for suspension
107
+ wrappingController.signal.addEventListener('abort', () => {
108
+ activeTrap = undefined;
109
+ });
110
+ // Only when user-canceled
111
+ signal.addEventListener('abort', () => {
112
+ container.removeAttribute('data-focus-trap');
113
+ const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);
114
+ if (suspendedTrapIndex >= 0) {
115
+ suspendedTrapStack.splice(suspendedTrapIndex, 1);
116
+ }
117
+ tryReactivate();
118
+ });
119
+ // Prevent focus leaving the trap container
120
+ document.addEventListener('focus', event => {
121
+ ensureTrapZoneHasFocus(event.target);
122
+ },
123
+ // use capture to ensure we get all events. focus events do not bubble
124
+ { signal: wrappingController.signal, capture: true });
125
+ // focus the first element
126
+ ensureTrapZoneHasFocus(document.activeElement);
127
+ activeTrap = {
128
+ container,
129
+ controller: wrappingController,
130
+ initialFocus,
131
+ originalSignal: signal
132
+ };
133
+ // If we are activating a focus trap for a container that was previously
134
+ // suspended, just remove it from the suspended list.
144
135
  const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);
145
-
146
136
  if (suspendedTrapIndex >= 0) {
147
- suspendedTrapStack.splice(suspendedTrapIndex, 1);
137
+ suspendedTrapStack.splice(suspendedTrapIndex, 1);
148
138
  }
149
-
150
- tryReactivate();
151
- }); // Prevent focus leaving the trap container
152
-
153
- document.addEventListener('focus', event => {
154
- ensureTrapZoneHasFocus(event.target);
155
- }, // use capture to ensure we get all events. focus events do not bubble
156
- {
157
- signal: wrappingController.signal,
158
- capture: true
159
- }); // focus the first element
160
-
161
- ensureTrapZoneHasFocus(document.activeElement);
162
- activeTrap = {
163
- container,
164
- controller: wrappingController,
165
- initialFocus,
166
- originalSignal: signal
167
- }; // If we are activating a focus trap for a container that was previously
168
- // suspended, just remove it from the suspended list.
169
-
170
- const suspendedTrapIndex = suspendedTrapStack.findIndex(t => t.container === container);
171
-
172
- if (suspendedTrapIndex >= 0) {
173
- suspendedTrapStack.splice(suspendedTrapIndex, 1);
174
- }
175
-
176
- if (!abortSignal) {
177
- return controller;
178
- }
179
- }
139
+ if (!abortSignal) {
140
+ return controller;
141
+ }
142
+ }
143
+ exports.focusTrap = focusTrap;