@primer/components 31.2.0-rc.58429c9f → 31.2.0-rc.76ed571d

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 (501) hide show
  1. package/.github/workflows/ci.yml +5 -2
  2. package/.github/workflows/release.yml +1 -0
  3. package/.github/workflows/release_canary.yml +1 -0
  4. package/CHANGELOG.md +18 -0
  5. package/dist/browser.esm.js +649 -647
  6. package/dist/browser.esm.js.map +1 -1
  7. package/dist/browser.umd.js +205 -203
  8. package/dist/browser.umd.js.map +1 -1
  9. package/docs/content/ActionList2.mdx +360 -0
  10. package/docs/content/StateLabel.md +5 -4
  11. package/docs/content/getting-started.md +1 -1
  12. package/docs/content/theming.md +23 -0
  13. package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +1 -3
  14. package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +1 -1
  15. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +17 -0
  16. package/lib/ActionList/Divider.jsx +29 -0
  17. package/lib/ActionList/Group.jsx +23 -0
  18. package/lib/ActionList/Header.js +1 -1
  19. package/lib/ActionList/Header.jsx +66 -0
  20. package/lib/ActionList/Item.jsx +301 -0
  21. package/lib/ActionList/List.jsx +138 -0
  22. package/lib/ActionList/index.js +12 -23
  23. package/lib/ActionList2/Description.d.ts +12 -0
  24. package/lib/ActionList2/Description.js +53 -0
  25. package/lib/ActionList2/Description.jsx +30 -0
  26. package/lib/ActionList2/Divider.d.ts +5 -0
  27. package/lib/ActionList2/Divider.js +35 -0
  28. package/lib/ActionList2/Divider.jsx +22 -0
  29. package/lib/ActionList2/Group.d.ts +11 -0
  30. package/lib/ActionList2/Group.js +57 -0
  31. package/lib/ActionList2/Group.jsx +25 -0
  32. package/lib/ActionList2/Header.d.ts +26 -0
  33. package/lib/ActionList2/Header.js +55 -0
  34. package/lib/ActionList2/Header.jsx +36 -0
  35. package/lib/ActionList2/Item.d.ts +63 -0
  36. package/lib/ActionList2/Item.js +244 -0
  37. package/lib/ActionList2/Item.jsx +174 -0
  38. package/lib/ActionList2/LinkItem.d.ts +17 -0
  39. package/lib/ActionList2/LinkItem.js +57 -0
  40. package/lib/ActionList2/LinkItem.jsx +28 -0
  41. package/lib/ActionList2/List.d.ts +26 -0
  42. package/lib/ActionList2/List.js +59 -0
  43. package/lib/ActionList2/List.jsx +41 -0
  44. package/lib/ActionList2/Selection.d.ts +5 -0
  45. package/lib/ActionList2/Selection.js +70 -0
  46. package/lib/ActionList2/Selection.jsx +36 -0
  47. package/lib/ActionList2/Visuals.d.ts +9 -0
  48. package/lib/ActionList2/Visuals.js +90 -0
  49. package/lib/ActionList2/Visuals.jsx +48 -0
  50. package/lib/ActionList2/index.d.ts +36 -0
  51. package/lib/ActionList2/index.js +29 -0
  52. package/lib/ActionMenu.jsx +73 -0
  53. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +100 -0
  54. package/lib/AnchoredOverlay/index.js +4 -12
  55. package/lib/Autocomplete/Autocomplete.d.ts +28 -28
  56. package/lib/Autocomplete/Autocomplete.jsx +100 -0
  57. package/lib/Autocomplete/AutocompleteContext.jsx +5 -0
  58. package/lib/Autocomplete/AutocompleteInput.d.ts +28 -28
  59. package/lib/Autocomplete/AutocompleteInput.jsx +113 -0
  60. package/lib/Autocomplete/AutocompleteMenu.jsx +190 -0
  61. package/lib/Autocomplete/AutocompleteOverlay.jsx +55 -0
  62. package/lib/Autocomplete/index.js +7 -14
  63. package/lib/Avatar.jsx +34 -0
  64. package/lib/AvatarPair.jsx +29 -0
  65. package/lib/AvatarStack.jsx +151 -0
  66. package/lib/BaseStyles.jsx +65 -0
  67. package/lib/BorderBox.jsx +18 -0
  68. package/lib/Box.jsx +10 -0
  69. package/lib/BranchName.jsx +20 -0
  70. package/lib/Breadcrumbs.jsx +74 -0
  71. package/lib/Button/Button.d.ts +25 -25
  72. package/lib/Button/Button.jsx +60 -0
  73. package/lib/Button/ButtonBase.jsx +36 -0
  74. package/lib/Button/ButtonClose.d.ts +45 -45
  75. package/lib/Button/ButtonClose.jsx +55 -0
  76. package/lib/Button/ButtonDanger.d.ts +25 -25
  77. package/lib/Button/ButtonDanger.jsx +63 -0
  78. package/lib/Button/ButtonGroup.jsx +55 -0
  79. package/lib/Button/ButtonInvisible.d.ts +25 -25
  80. package/lib/Button/ButtonInvisible.jsx +52 -0
  81. package/lib/Button/ButtonOutline.d.ts +25 -25
  82. package/lib/Button/ButtonOutline.jsx +63 -0
  83. package/lib/Button/ButtonPrimary.d.ts +25 -25
  84. package/lib/Button/ButtonPrimary.jsx +62 -0
  85. package/lib/Button/ButtonStyles.jsx +37 -0
  86. package/lib/Button/ButtonTableList.jsx +49 -0
  87. package/lib/Button/index.js +21 -70
  88. package/lib/Caret.jsx +93 -0
  89. package/lib/CircleBadge.jsx +43 -0
  90. package/lib/CircleOcticon.d.ts +42 -42
  91. package/lib/CircleOcticon.jsx +21 -0
  92. package/lib/CounterLabel.jsx +44 -0
  93. package/lib/Details.jsx +21 -0
  94. package/lib/Dialog/ConfirmationDialog.jsx +146 -0
  95. package/lib/Dialog/Dialog.js +1 -0
  96. package/lib/Dialog/Dialog.jsx +273 -0
  97. package/lib/Dialog.d.ts +45 -45
  98. package/lib/Dialog.jsx +131 -0
  99. package/lib/Dropdown.d.ts +176 -176
  100. package/lib/Dropdown.jsx +134 -0
  101. package/lib/DropdownMenu/DropdownButton.d.ts +46 -46
  102. package/lib/DropdownMenu/DropdownButton.jsx +14 -0
  103. package/lib/DropdownMenu/DropdownMenu.jsx +70 -0
  104. package/lib/DropdownMenu/index.js +6 -20
  105. package/lib/DropdownStyles.js +18 -26
  106. package/lib/FilterList.d.ts +42 -42
  107. package/lib/FilterList.jsx +63 -0
  108. package/lib/FilteredActionList/FilteredActionList.jsx +100 -0
  109. package/lib/FilteredActionList/index.js +4 -12
  110. package/lib/FilteredSearch.jsx +29 -0
  111. package/lib/Flash.jsx +70 -0
  112. package/lib/Flex.jsx +15 -0
  113. package/lib/FormGroup.jsx +25 -0
  114. package/lib/Grid.jsx +15 -0
  115. package/lib/Header.jsx +90 -0
  116. package/lib/Heading.jsx +21 -0
  117. package/lib/Label.jsx +84 -0
  118. package/lib/LabelGroup.jsx +19 -0
  119. package/lib/Link.jsx +38 -0
  120. package/lib/NewButton/button-counter.d.ts +6 -0
  121. package/lib/NewButton/button-counter.js +31 -0
  122. package/lib/NewButton/button-counter.jsx +14 -0
  123. package/lib/NewButton/button.d.ts +13 -0
  124. package/lib/NewButton/button.js +316 -0
  125. package/lib/NewButton/button.jsx +278 -0
  126. package/lib/NewButton/index.d.ts +14 -0
  127. package/lib/NewButton/index.js +8 -0
  128. package/lib/NewButton/types.d.ts +32 -0
  129. package/lib/NewButton/types.js +2 -0
  130. package/lib/Overlay.js +3 -1
  131. package/lib/Overlay.jsx +156 -0
  132. package/lib/Pagehead.jsx +18 -0
  133. package/lib/Pagination/Pagination.jsx +163 -0
  134. package/lib/Pagination/index.js +6 -12
  135. package/lib/Pagination/model.jsx +174 -0
  136. package/lib/PointerBox.jsx +25 -0
  137. package/lib/Popover.jsx +210 -0
  138. package/lib/Portal/Portal.js +3 -2
  139. package/lib/Portal/Portal.jsx +79 -0
  140. package/lib/Portal/index.js +5 -16
  141. package/lib/Position.d.ts +4 -4
  142. package/lib/Position.jsx +46 -0
  143. package/lib/ProgressBar.jsx +39 -0
  144. package/lib/SelectMenu/SelectMenu.d.ts +246 -246
  145. package/lib/SelectMenu/SelectMenu.jsx +114 -0
  146. package/lib/SelectMenu/SelectMenuContext.jsx +5 -0
  147. package/lib/SelectMenu/SelectMenuDivider.jsx +43 -0
  148. package/lib/SelectMenu/SelectMenuFilter.jsx +59 -0
  149. package/lib/SelectMenu/SelectMenuFooter.jsx +46 -0
  150. package/lib/SelectMenu/SelectMenuHeader.jsx +44 -0
  151. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  152. package/lib/SelectMenu/SelectMenuItem.jsx +143 -0
  153. package/lib/SelectMenu/SelectMenuList.jsx +60 -0
  154. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +21 -0
  155. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  156. package/lib/SelectMenu/SelectMenuModal.jsx +119 -0
  157. package/lib/SelectMenu/SelectMenuTab.jsx +93 -0
  158. package/lib/SelectMenu/SelectMenuTabPanel.jsx +43 -0
  159. package/lib/SelectMenu/SelectMenuTabs.jsx +58 -0
  160. package/lib/SelectMenu/hooks/useKeyboardNav.js +80 -96
  161. package/lib/SelectMenu/index.js +7 -14
  162. package/lib/SelectPanel/SelectPanel.jsx +105 -0
  163. package/lib/SelectPanel/index.js +4 -12
  164. package/lib/SideNav.jsx +177 -0
  165. package/lib/Spinner.jsx +35 -0
  166. package/lib/StateLabel.d.ts +1 -1
  167. package/lib/StateLabel.js +6 -1
  168. package/lib/StateLabel.jsx +94 -0
  169. package/lib/StyledOcticon.jsx +20 -0
  170. package/lib/SubNav.jsx +104 -0
  171. package/lib/TabNav.jsx +60 -0
  172. package/lib/Text.jsx +14 -0
  173. package/lib/TextInput.jsx +23 -0
  174. package/lib/TextInputWithTokens.d.ts +28 -28
  175. package/lib/TextInputWithTokens.jsx +218 -0
  176. package/lib/ThemeProvider.jsx +130 -0
  177. package/lib/Timeline.d.ts +43 -43
  178. package/lib/Timeline.jsx +124 -0
  179. package/lib/Token/AvatarToken.d.ts +1 -1
  180. package/lib/Token/AvatarToken.jsx +54 -0
  181. package/lib/Token/IssueLabelToken.d.ts +1 -1
  182. package/lib/Token/IssueLabelToken.jsx +125 -0
  183. package/lib/Token/Token.d.ts +1 -1
  184. package/lib/Token/Token.jsx +103 -0
  185. package/lib/Token/TokenBase.jsx +88 -0
  186. package/lib/Token/_RemoveTokenButton.jsx +108 -0
  187. package/lib/Token/_TokenTextContainer.jsx +49 -0
  188. package/lib/Token/index.js +11 -30
  189. package/lib/Tooltip.jsx +246 -0
  190. package/lib/Truncate.jsx +27 -0
  191. package/lib/UnderlineNav.jsx +90 -0
  192. package/lib/_TextInputWrapper.js +2 -2
  193. package/lib/_TextInputWrapper.jsx +120 -0
  194. package/lib/_UnstyledTextInput.jsx +22 -0
  195. package/lib/__tests__/ActionList.test.jsx +49 -0
  196. package/lib/__tests__/ActionList.types.test.jsx +45 -0
  197. package/lib/__tests__/ActionList2.test.d.ts +1 -0
  198. package/lib/__tests__/ActionList2.test.js +53 -0
  199. package/lib/__tests__/ActionList2.test.jsx +46 -0
  200. package/lib/__tests__/ActionMenu.test.jsx +124 -0
  201. package/lib/__tests__/AnchoredOverlay.test.js +4 -2
  202. package/lib/__tests__/AnchoredOverlay.test.jsx +121 -0
  203. package/lib/__tests__/Autocomplete.test.jsx +299 -0
  204. package/lib/__tests__/Avatar.test.jsx +42 -0
  205. package/lib/__tests__/AvatarStack.test.jsx +43 -0
  206. package/lib/__tests__/BorderBox.test.jsx +36 -0
  207. package/lib/__tests__/Box.test.jsx +41 -0
  208. package/lib/__tests__/BranchName.test.jsx +27 -0
  209. package/lib/__tests__/Breadcrumbs.test.jsx +28 -0
  210. package/lib/__tests__/BreadcrumbsItem.test.jsx +31 -0
  211. package/lib/__tests__/Button.test.jsx +100 -0
  212. package/lib/__tests__/Caret.test.jsx +37 -0
  213. package/lib/__tests__/CircleBadge.test.jsx +55 -0
  214. package/lib/__tests__/CircleOcticon.test.jsx +45 -0
  215. package/lib/__tests__/ConfirmationDialog.test.jsx +119 -0
  216. package/lib/__tests__/CounterLabel.test.jsx +36 -0
  217. package/lib/__tests__/Details.test.jsx +85 -0
  218. package/lib/__tests__/Dialog.test.jsx +139 -0
  219. package/lib/__tests__/Dropdown.test.jsx +49 -0
  220. package/lib/__tests__/DropdownMenu.test.jsx +119 -0
  221. package/lib/__tests__/FilterList.test.jsx +27 -0
  222. package/lib/__tests__/FilterListItem.test.jsx +31 -0
  223. package/lib/__tests__/FilteredSearch.test.jsx +27 -0
  224. package/lib/__tests__/Flash.test.jsx +36 -0
  225. package/lib/__tests__/Flex.test.jsx +51 -0
  226. package/lib/__tests__/FormGroup.test.jsx +36 -0
  227. package/lib/__tests__/Grid.test.jsx +69 -0
  228. package/lib/__tests__/Header.test.jsx +45 -0
  229. package/lib/__tests__/Heading.test.jsx +71 -0
  230. package/lib/__tests__/KeyPaths.types.test.d.ts +2 -1
  231. package/lib/__tests__/KeyPaths.types.test.js +5 -8
  232. package/lib/__tests__/Label.test.jsx +33 -0
  233. package/lib/__tests__/LabelGroup.test.jsx +29 -0
  234. package/lib/__tests__/Link.test.jsx +43 -0
  235. package/lib/__tests__/Merge.types.test.js +13 -19
  236. package/lib/__tests__/NewButton.test.d.ts +1 -0
  237. package/lib/__tests__/NewButton.test.js +86 -0
  238. package/lib/__tests__/NewButton.test.jsx +55 -0
  239. package/lib/__tests__/Overlay.test.jsx +105 -0
  240. package/lib/__tests__/Pagehead.test.jsx +25 -0
  241. package/lib/__tests__/Pagination/Pagination.test.jsx +32 -0
  242. package/lib/__tests__/Pagination/PaginationModel.test.jsx +118 -0
  243. package/lib/__tests__/PointerBox.test.jsx +33 -0
  244. package/lib/__tests__/Popover.test.jsx +58 -0
  245. package/lib/__tests__/Portal.test.jsx +102 -0
  246. package/lib/__tests__/Position.test.jsx +96 -0
  247. package/lib/__tests__/ProgressBar.test.jsx +38 -0
  248. package/lib/__tests__/SelectMenu.test.jsx +120 -0
  249. package/lib/__tests__/SelectPanel.test.jsx +48 -0
  250. package/lib/__tests__/SideNav.test.jsx +55 -0
  251. package/lib/__tests__/Spinner.test.jsx +41 -0
  252. package/lib/__tests__/StateLabel.test.jsx +46 -0
  253. package/lib/__tests__/StyledOcticon.test.jsx +28 -0
  254. package/lib/__tests__/SubNav.test.jsx +47 -0
  255. package/lib/__tests__/SubNavLink.test.jsx +31 -0
  256. package/lib/__tests__/TabNav.test.jsx +32 -0
  257. package/lib/__tests__/Text.test.jsx +71 -0
  258. package/lib/__tests__/TextInput.test.jsx +45 -0
  259. package/lib/__tests__/TextInputWithTokens.test.js +1 -10
  260. package/lib/__tests__/TextInputWithTokens.test.jsx +302 -0
  261. package/lib/__tests__/ThemeProvider.test.jsx +314 -0
  262. package/lib/__tests__/Timeline.test.jsx +51 -0
  263. package/lib/__tests__/Token.test.jsx +93 -0
  264. package/lib/__tests__/Tooltip.test.jsx +46 -0
  265. package/lib/__tests__/Truncate.test.jsx +41 -0
  266. package/lib/__tests__/UnderlineNav.test.jsx +53 -0
  267. package/lib/__tests__/UnderlineNavLink.test.jsx +31 -0
  268. package/lib/__tests__/behaviors/anchoredPosition.test.js +229 -376
  269. package/lib/__tests__/behaviors/focusTrap.test.jsx +184 -0
  270. package/lib/__tests__/behaviors/focusZone.test.jsx +406 -0
  271. package/lib/__tests__/behaviors/iterateFocusableElements.test.jsx +58 -0
  272. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +145 -216
  273. package/lib/__tests__/filterObject.test.js +48 -27
  274. package/lib/__tests__/hooks/useAnchoredPosition.test.jsx +29 -0
  275. package/lib/__tests__/hooks/useOnEscapePress.test.jsx +19 -0
  276. package/lib/__tests__/hooks/useOnOutsideClick.test.jsx +63 -0
  277. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.jsx +61 -0
  278. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.jsx +56 -0
  279. package/lib/__tests__/theme.test.js +33 -34
  280. package/lib/__tests__/themeGet.test.js +12 -23
  281. package/lib/__tests__/useSafeTimeout.test.jsx +36 -0
  282. package/lib/__tests__/utils/createSlots.test.d.ts +1 -0
  283. package/lib/__tests__/utils/createSlots.test.js +75 -0
  284. package/lib/__tests__/utils/createSlots.test.jsx +57 -0
  285. package/lib/behaviors/anchoredPosition.js +205 -234
  286. package/lib/behaviors/focusTrap.js +121 -157
  287. package/lib/behaviors/focusZone.js +434 -509
  288. package/lib/behaviors/scrollIntoViewingArea.js +18 -35
  289. package/lib/constants.js +39 -43
  290. package/lib/drafts.d.ts +8 -0
  291. package/lib/drafts.js +21 -0
  292. package/lib/hooks/index.js +16 -60
  293. package/lib/hooks/useAnchoredPosition.js +32 -39
  294. package/lib/hooks/useCombinedRefs.d.ts +2 -2
  295. package/lib/hooks/useCombinedRefs.js +32 -38
  296. package/lib/hooks/useDetails.jsx +39 -0
  297. package/lib/hooks/useDialog.js +72 -96
  298. package/lib/hooks/useFocusTrap.js +43 -60
  299. package/lib/hooks/useFocusZone.js +54 -50
  300. package/lib/hooks/useOnEscapePress.js +25 -36
  301. package/lib/hooks/useOnOutsideClick.jsx +61 -0
  302. package/lib/hooks/useOpenAndCloseFocus.js +22 -34
  303. package/lib/hooks/useOverlay.jsx +15 -0
  304. package/lib/hooks/useProvidedRefOrCreate.js +10 -14
  305. package/lib/hooks/useProvidedStateOrCreate.js +13 -16
  306. package/lib/hooks/useRenderForcingRef.js +13 -17
  307. package/lib/hooks/useResizeObserver.js +15 -18
  308. package/lib/hooks/useSafeTimeout.js +22 -30
  309. package/lib/hooks/useScrollFlash.js +16 -23
  310. package/lib/index.d.ts +2 -0
  311. package/lib/index.js +163 -636
  312. package/lib/polyfills/eventListenerSignal.js +37 -45
  313. package/lib/stories/ActionList2.stories.js +908 -0
  314. package/lib/stories/NewButton.stories.js +230 -0
  315. package/lib/stories/TextInput.stories.js +144 -0
  316. package/lib/stories/Token.stories.js +19 -2
  317. package/lib/sx.d.ts +2 -0
  318. package/lib/sx.js +10 -14
  319. package/lib/theme-preval.js +65 -2945
  320. package/lib/theme.js +3 -12
  321. package/lib/utils/create-slots.d.ts +17 -0
  322. package/lib/utils/create-slots.js +105 -0
  323. package/lib/utils/create-slots.jsx +65 -0
  324. package/lib/utils/deprecate.jsx +59 -0
  325. package/lib/utils/isNumeric.jsx +7 -0
  326. package/lib/utils/iterateFocusableElements.js +63 -85
  327. package/lib/utils/ssr.jsx +6 -0
  328. package/lib/utils/test-deprecations.jsx +20 -0
  329. package/lib/utils/test-helpers.jsx +8 -0
  330. package/lib/utils/test-matchers.jsx +100 -0
  331. package/lib/utils/testing.d.ts +14 -1
  332. package/lib/utils/testing.jsx +206 -0
  333. package/lib/utils/theme.js +33 -47
  334. package/lib/utils/types/AriaRole.js +2 -1
  335. package/lib/utils/types/ComponentProps.js +2 -1
  336. package/lib/utils/types/Flatten.js +2 -1
  337. package/lib/utils/types/KeyPaths.d.ts +1 -1
  338. package/lib/utils/types/KeyPaths.js +2 -1
  339. package/lib/utils/types/MandateProps.js +16 -1
  340. package/lib/utils/types/Merge.js +2 -1
  341. package/lib/utils/types/index.js +16 -69
  342. package/lib/utils/uniqueId.js +5 -8
  343. package/lib/utils/use-force-update.d.ts +1 -0
  344. package/lib/utils/use-force-update.js +13 -0
  345. package/lib/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  346. package/lib/utils/useIsomorphicLayoutEffect.js +9 -0
  347. package/lib/utils/userAgent.js +8 -12
  348. package/lib-esm/ActionList/Header.js +1 -1
  349. package/lib-esm/ActionList2/Description.d.ts +12 -0
  350. package/lib-esm/ActionList2/Description.js +37 -0
  351. package/lib-esm/ActionList2/Divider.d.ts +5 -0
  352. package/lib-esm/ActionList2/Divider.js +23 -0
  353. package/lib-esm/ActionList2/Group.d.ts +11 -0
  354. package/lib-esm/ActionList2/Group.js +40 -0
  355. package/lib-esm/ActionList2/Header.d.ts +26 -0
  356. package/lib-esm/ActionList2/Header.js +44 -0
  357. package/lib-esm/ActionList2/Item.d.ts +63 -0
  358. package/lib-esm/ActionList2/Item.js +210 -0
  359. package/lib-esm/ActionList2/LinkItem.d.ts +17 -0
  360. package/lib-esm/ActionList2/LinkItem.js +43 -0
  361. package/lib-esm/ActionList2/List.d.ts +26 -0
  362. package/lib-esm/ActionList2/List.js +37 -0
  363. package/lib-esm/ActionList2/Selection.d.ts +5 -0
  364. package/lib-esm/ActionList2/Selection.js +52 -0
  365. package/lib-esm/ActionList2/Visuals.d.ts +9 -0
  366. package/lib-esm/ActionList2/Visuals.js +68 -0
  367. package/lib-esm/ActionList2/index.d.ts +36 -0
  368. package/lib-esm/ActionList2/index.js +33 -0
  369. package/lib-esm/Autocomplete/Autocomplete.d.ts +28 -28
  370. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +28 -28
  371. package/lib-esm/Button/Button.d.ts +25 -25
  372. package/lib-esm/Button/ButtonClose.d.ts +45 -45
  373. package/lib-esm/Button/ButtonDanger.d.ts +25 -25
  374. package/lib-esm/Button/ButtonInvisible.d.ts +25 -25
  375. package/lib-esm/Button/ButtonOutline.d.ts +25 -25
  376. package/lib-esm/Button/ButtonPrimary.d.ts +25 -25
  377. package/lib-esm/CircleOcticon.d.ts +42 -42
  378. package/lib-esm/Dialog/Dialog.js +1 -0
  379. package/lib-esm/Dialog.d.ts +45 -45
  380. package/lib-esm/Dropdown.d.ts +176 -176
  381. package/lib-esm/DropdownMenu/DropdownButton.d.ts +46 -46
  382. package/lib-esm/FilterList.d.ts +42 -42
  383. package/lib-esm/NewButton/button-counter.d.ts +6 -0
  384. package/lib-esm/NewButton/button-counter.js +18 -0
  385. package/lib-esm/NewButton/button.d.ts +13 -0
  386. package/lib-esm/NewButton/button.js +298 -0
  387. package/lib-esm/NewButton/index.d.ts +14 -0
  388. package/lib-esm/NewButton/index.js +5 -0
  389. package/lib-esm/NewButton/types.d.ts +32 -0
  390. package/lib-esm/NewButton/types.js +1 -0
  391. package/lib-esm/Overlay.js +2 -1
  392. package/lib-esm/Portal/Portal.js +2 -1
  393. package/lib-esm/Position.d.ts +4 -4
  394. package/lib-esm/SelectMenu/SelectMenu.d.ts +246 -246
  395. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  396. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  397. package/lib-esm/StateLabel.d.ts +1 -1
  398. package/lib-esm/StateLabel.js +7 -2
  399. package/lib-esm/TextInputWithTokens.d.ts +28 -28
  400. package/lib-esm/Timeline.d.ts +43 -43
  401. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  402. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  403. package/lib-esm/Token/Token.d.ts +1 -1
  404. package/lib-esm/_TextInputWrapper.js +2 -2
  405. package/lib-esm/__tests__/ActionList2.test.d.ts +1 -0
  406. package/lib-esm/__tests__/ActionList2.test.js +41 -0
  407. package/lib-esm/__tests__/AnchoredOverlay.test.js +4 -2
  408. package/lib-esm/__tests__/KeyPaths.types.test.d.ts +2 -1
  409. package/lib-esm/__tests__/NewButton.test.d.ts +1 -0
  410. package/lib-esm/__tests__/NewButton.test.js +76 -0
  411. package/lib-esm/__tests__/TextInputWithTokens.test.js +1 -10
  412. package/lib-esm/__tests__/utils/createSlots.test.d.ts +1 -0
  413. package/lib-esm/__tests__/utils/createSlots.test.js +67 -0
  414. package/lib-esm/drafts.d.ts +8 -0
  415. package/lib-esm/drafts.js +9 -0
  416. package/lib-esm/hooks/useAnchoredPosition.js +2 -1
  417. package/lib-esm/hooks/useCombinedRefs.d.ts +2 -2
  418. package/lib-esm/hooks/useCombinedRefs.js +3 -2
  419. package/lib-esm/hooks/useResizeObserver.js +2 -2
  420. package/lib-esm/index.d.ts +2 -0
  421. package/lib-esm/index.js +1 -0
  422. package/lib-esm/stories/ActionList2.stories.js +796 -0
  423. package/lib-esm/stories/NewButton.stories.js +178 -0
  424. package/lib-esm/stories/TextInput.stories.js +117 -0
  425. package/lib-esm/stories/Token.stories.js +14 -1
  426. package/lib-esm/sx.d.ts +2 -0
  427. package/lib-esm/sx.js +3 -1
  428. package/lib-esm/theme-preval.js +81 -2
  429. package/lib-esm/utils/create-slots.d.ts +17 -0
  430. package/lib-esm/utils/create-slots.js +84 -0
  431. package/lib-esm/utils/testing.d.ts +14 -1
  432. package/lib-esm/utils/types/KeyPaths.d.ts +1 -1
  433. package/lib-esm/utils/use-force-update.d.ts +1 -0
  434. package/lib-esm/utils/use-force-update.js +6 -0
  435. package/lib-esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  436. package/lib-esm/utils/useIsomorphicLayoutEffect.js +3 -0
  437. package/migrating.md +1 -1
  438. package/package-lock.json +168 -16
  439. package/package.json +9 -5
  440. package/script/build +3 -1
  441. package/src/ActionList/Header.tsx +1 -1
  442. package/src/ActionList2/Description.tsx +49 -0
  443. package/src/ActionList2/Divider.tsx +24 -0
  444. package/src/ActionList2/Group.tsx +34 -0
  445. package/src/ActionList2/Header.tsx +58 -0
  446. package/src/ActionList2/Item.tsx +245 -0
  447. package/src/ActionList2/LinkItem.tsx +49 -0
  448. package/src/ActionList2/List.tsx +55 -0
  449. package/src/ActionList2/Selection.tsx +40 -0
  450. package/src/ActionList2/Visuals.tsx +76 -0
  451. package/src/ActionList2/index.ts +39 -0
  452. package/src/Dialog/Dialog.tsx +1 -0
  453. package/src/NewButton/button-counter.tsx +15 -0
  454. package/src/NewButton/button.tsx +279 -0
  455. package/src/NewButton/index.ts +10 -0
  456. package/src/NewButton/types.ts +36 -0
  457. package/src/Overlay.tsx +2 -1
  458. package/src/Portal/Portal.tsx +2 -1
  459. package/src/StateLabel.tsx +14 -2
  460. package/src/_TextInputWrapper.tsx +7 -0
  461. package/src/__tests__/ActionList2.test.tsx +47 -0
  462. package/src/__tests__/AnchoredOverlay.test.tsx +2 -2
  463. package/src/__tests__/KeyPaths.types.test.ts +2 -1
  464. package/src/__tests__/NewButton.test.tsx +64 -0
  465. package/src/__tests__/TextInputWithTokens.test.tsx +0 -10
  466. package/src/__tests__/__snapshots__/ActionList2.test.tsx.snap +14 -0
  467. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +35 -135
  468. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +1 -0
  469. package/src/__tests__/__snapshots__/CircleBadge.test.tsx.snap +1 -0
  470. package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +1 -0
  471. package/src/__tests__/__snapshots__/Dialog.test.tsx.snap +1 -0
  472. package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +1 -0
  473. package/src/__tests__/__snapshots__/NewButton.test.tsx.snap +182 -0
  474. package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +4 -0
  475. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -0
  476. package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +13 -6
  477. package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +1 -0
  478. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +66 -0
  479. package/src/__tests__/__snapshots__/Token.test.tsx.snap +17 -0
  480. package/src/__tests__/utils/__snapshots__/createSlots.test.tsx.snap +55 -0
  481. package/src/__tests__/utils/createSlots.test.tsx +74 -0
  482. package/src/drafts.ts +10 -0
  483. package/src/hooks/useAnchoredPosition.ts +2 -1
  484. package/src/hooks/useCombinedRefs.ts +3 -3
  485. package/src/hooks/useResizeObserver.ts +2 -2
  486. package/src/index.ts +2 -0
  487. package/src/stories/ActionList2.stories.tsx +1291 -0
  488. package/src/stories/Button.stories.tsx +1 -1
  489. package/src/stories/NewButton.stories.tsx +201 -0
  490. package/src/stories/TextInput.stories.tsx +113 -0
  491. package/src/stories/Token.stories.tsx +12 -1
  492. package/src/sx.ts +3 -0
  493. package/src/theme-preval.js +1 -0
  494. package/src/utils/create-slots.tsx +96 -0
  495. package/src/utils/types/KeyPaths.ts +7 -1
  496. package/src/utils/use-force-update.ts +7 -0
  497. package/src/utils/useIsomorphicLayoutEffect.ts +10 -0
  498. package/stats.html +1 -1
  499. package/tsconfig.base.json +20 -0
  500. package/tsconfig.build.json +2 -2
  501. package/tsconfig.json +4 -17
@@ -1,39 +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.scrollIntoViewingArea = void 0;
7
-
8
4
  const scrollIntoViewingArea = (child, viewingArea, direction = 'vertical', startMargin = 8, endMargin = 0, behavior = 'smooth') => {
9
- const startSide = direction === 'vertical' ? 'top' : 'left';
10
- const endSide = direction === 'vertical' ? 'bottom' : 'right';
11
- const scrollSide = direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
12
- const {
13
- [startSide]: childStart,
14
- [endSide]: childEnd
15
- } = child.getBoundingClientRect();
16
- const {
17
- [startSide]: viewingAreaStart,
18
- [endSide]: viewingAreaEnd
19
- } = viewingArea.getBoundingClientRect();
20
- const isChildStartAboveViewingArea = childStart < viewingAreaStart + endMargin;
21
- const isChildBottomBelowViewingArea = childEnd > viewingAreaEnd - startMargin;
22
-
23
- if (isChildStartAboveViewingArea) {
24
- const scrollHeightToChildStart = childStart - viewingAreaStart + viewingArea[scrollSide];
25
- viewingArea.scrollTo({
26
- behavior,
27
- [startSide]: scrollHeightToChildStart - endMargin
28
- });
29
- } else if (isChildBottomBelowViewingArea) {
30
- const scrollHeightToChildBottom = childEnd - viewingAreaEnd + viewingArea[scrollSide];
31
- viewingArea.scrollTo({
32
- behavior,
33
- [startSide]: scrollHeightToChildBottom + startMargin
34
- });
35
- } // either completely in view or outside viewing area on both ends, don't scroll
36
-
5
+ const startSide = direction === 'vertical' ? 'top' : 'left';
6
+ const endSide = direction === 'vertical' ? 'bottom' : 'right';
7
+ const scrollSide = direction === 'vertical' ? 'scrollTop' : 'scrollLeft';
8
+ const { [startSide]: childStart, [endSide]: childEnd } = child.getBoundingClientRect();
9
+ const { [startSide]: viewingAreaStart, [endSide]: viewingAreaEnd } = viewingArea.getBoundingClientRect();
10
+ const isChildStartAboveViewingArea = childStart < viewingAreaStart + endMargin;
11
+ const isChildBottomBelowViewingArea = childEnd > viewingAreaEnd - startMargin;
12
+ if (isChildStartAboveViewingArea) {
13
+ const scrollHeightToChildStart = childStart - viewingAreaStart + viewingArea[scrollSide];
14
+ viewingArea.scrollTo({ behavior, [startSide]: scrollHeightToChildStart - endMargin });
15
+ }
16
+ else if (isChildBottomBelowViewingArea) {
17
+ const scrollHeightToChildBottom = childEnd - viewingAreaEnd + viewingArea[scrollSide];
18
+ viewingArea.scrollTo({ behavior, [startSide]: scrollHeightToChildBottom + startMargin });
19
+ }
20
+ // either completely in view or outside viewing area on both ends, don't scroll
37
21
  };
38
-
39
- exports.scrollIntoViewingArea = scrollIntoViewingArea;
22
+ exports.scrollIntoViewingArea = scrollIntoViewingArea;
package/lib/constants.js CHANGED
@@ -1,56 +1,52 @@
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
  });
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
6
25
  exports.GRID = exports.FLEX = exports.POSITION = exports.LAYOUT = exports.BORDER = exports.TYPOGRAPHY = exports.COMMON = exports.get = void 0;
7
-
8
- var _themeGet = require("@styled-system/theme-get");
9
-
10
- var styledSystem = _interopRequireWildcard(require("styled-system"));
11
-
12
- var _theme = _interopRequireDefault(require("./theme"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- 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); }
17
-
18
- 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; }
19
-
26
+ const theme_get_1 = require("@styled-system/theme-get");
20
27
  // eslint-disable-next-line import/no-namespace
21
- const {
22
- get: getKey,
23
- compose,
24
- system
25
- } = styledSystem;
26
-
27
- const get = key => (0, _themeGet.themeGet)(key, getKey(_theme.default, key)); // Common props
28
-
29
-
28
+ const styledSystem = __importStar(require("styled-system"));
29
+ const theme_1 = __importDefault(require("./theme"));
30
+ const { get: getKey, compose, system } = styledSystem;
31
+ const get = (key) => theme_get_1.themeGet(key, getKey(theme_1.default, key));
30
32
  exports.get = get;
31
- const COMMON = compose(styledSystem.space, styledSystem.color, styledSystem.display);
32
- exports.COMMON = COMMON;
33
+ // Common props
34
+ exports.COMMON = compose(styledSystem.space, styledSystem.color, styledSystem.display);
33
35
  // Typography props
34
36
  const whiteSpace = system({
35
- whiteSpace: {
36
- property: 'whiteSpace' // cssProperty: 'whiteSpace',
37
-
38
- }
37
+ whiteSpace: {
38
+ property: 'whiteSpace'
39
+ // cssProperty: 'whiteSpace',
40
+ }
39
41
  });
40
- const TYPOGRAPHY = compose(styledSystem.typography, whiteSpace);
41
- exports.TYPOGRAPHY = TYPOGRAPHY;
42
+ exports.TYPOGRAPHY = compose(styledSystem.typography, whiteSpace);
42
43
  // Border props
43
- const BORDER = compose(styledSystem.border, styledSystem.shadow);
44
- exports.BORDER = BORDER;
44
+ exports.BORDER = compose(styledSystem.border, styledSystem.shadow);
45
45
  // Layout props
46
- const LAYOUT = styledSystem.layout;
47
- exports.LAYOUT = LAYOUT;
46
+ exports.LAYOUT = styledSystem.layout;
48
47
  // Position props
49
- const POSITION = styledSystem.position;
50
- exports.POSITION = POSITION;
48
+ exports.POSITION = styledSystem.position;
51
49
  // Flex props
52
- const FLEX = styledSystem.flexbox;
53
- exports.FLEX = FLEX;
50
+ exports.FLEX = styledSystem.flexbox;
54
51
  // Grid props
55
- const GRID = styledSystem.grid;
56
- exports.GRID = GRID;
52
+ exports.GRID = styledSystem.grid;
@@ -0,0 +1,8 @@
1
+ /** This is the place where we keep components that are not part of the public
2
+ * api yet (not in main bundle). We don't recommend using it in production.
3
+ *
4
+ * But, they are published on npm and you can import them for experimentation/feedback.
5
+ * example: import {ActionList} from '@primer/components/drafts
6
+ */
7
+ export * from './ActionList2';
8
+ export * from './NewButton';
package/lib/drafts.js ADDED
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /** This is the place where we keep components that are not part of the public
3
+ * api yet (not in main bundle). We don't recommend using it in production.
4
+ *
5
+ * But, they are published on npm and you can import them for experimentation/feedback.
6
+ * example: import {ActionList} from '@primer/components/drafts
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ // Components
20
+ __exportStar(require("./ActionList2"), exports);
21
+ __exportStar(require("./NewButton"), exports);
@@ -1,61 +1,17 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "useOnOutsideClick", {
7
- enumerable: true,
8
- get: function () {
9
- return _useOnOutsideClick.useOnOutsideClick;
10
- }
11
- });
12
- Object.defineProperty(exports, "useProvidedRefOrCreate", {
13
- enumerable: true,
14
- get: function () {
15
- return _useProvidedRefOrCreate.useProvidedRefOrCreate;
16
- }
17
- });
18
- Object.defineProperty(exports, "useOnEscapePress", {
19
- enumerable: true,
20
- get: function () {
21
- return _useOnEscapePress.useOnEscapePress;
22
- }
23
- });
24
- Object.defineProperty(exports, "useOpenAndCloseFocus", {
25
- enumerable: true,
26
- get: function () {
27
- return _useOpenAndCloseFocus.useOpenAndCloseFocus;
28
- }
29
- });
30
- Object.defineProperty(exports, "useAnchoredPosition", {
31
- enumerable: true,
32
- get: function () {
33
- return _useAnchoredPosition.useAnchoredPosition;
34
- }
35
- });
36
- Object.defineProperty(exports, "useOverlay", {
37
- enumerable: true,
38
- get: function () {
39
- return _useOverlay.useOverlay;
40
- }
41
- });
42
- Object.defineProperty(exports, "useRenderForcingRef", {
43
- enumerable: true,
44
- get: function () {
45
- return _useRenderForcingRef.useRenderForcingRef;
46
- }
47
- });
48
-
49
- var _useOnOutsideClick = require("./useOnOutsideClick");
50
-
51
- var _useProvidedRefOrCreate = require("./useProvidedRefOrCreate");
52
-
53
- var _useOnEscapePress = require("./useOnEscapePress");
54
-
55
- var _useOpenAndCloseFocus = require("./useOpenAndCloseFocus");
56
-
57
- var _useAnchoredPosition = require("./useAnchoredPosition");
58
-
59
- var _useOverlay = require("./useOverlay");
60
-
61
- var _useRenderForcingRef = require("./useRenderForcingRef");
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useRenderForcingRef = exports.useOverlay = exports.useAnchoredPosition = exports.useOpenAndCloseFocus = exports.useOnEscapePress = exports.useProvidedRefOrCreate = exports.useOnOutsideClick = void 0;
4
+ var useOnOutsideClick_1 = require("./useOnOutsideClick");
5
+ Object.defineProperty(exports, "useOnOutsideClick", { enumerable: true, get: function () { return useOnOutsideClick_1.useOnOutsideClick; } });
6
+ var useProvidedRefOrCreate_1 = require("./useProvidedRefOrCreate");
7
+ Object.defineProperty(exports, "useProvidedRefOrCreate", { enumerable: true, get: function () { return useProvidedRefOrCreate_1.useProvidedRefOrCreate; } });
8
+ var useOnEscapePress_1 = require("./useOnEscapePress");
9
+ Object.defineProperty(exports, "useOnEscapePress", { enumerable: true, get: function () { return useOnEscapePress_1.useOnEscapePress; } });
10
+ var useOpenAndCloseFocus_1 = require("./useOpenAndCloseFocus");
11
+ Object.defineProperty(exports, "useOpenAndCloseFocus", { enumerable: true, get: function () { return useOpenAndCloseFocus_1.useOpenAndCloseFocus; } });
12
+ var useAnchoredPosition_1 = require("./useAnchoredPosition");
13
+ Object.defineProperty(exports, "useAnchoredPosition", { enumerable: true, get: function () { return useAnchoredPosition_1.useAnchoredPosition; } });
14
+ var useOverlay_1 = require("./useOverlay");
15
+ Object.defineProperty(exports, "useOverlay", { enumerable: true, get: function () { return useOverlay_1.useOverlay; } });
16
+ var useRenderForcingRef_1 = require("./useRenderForcingRef");
17
+ Object.defineProperty(exports, "useRenderForcingRef", { enumerable: true, get: function () { return useRenderForcingRef_1.useRenderForcingRef; } });
@@ -1,20 +1,14 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useAnchoredPosition = useAnchoredPosition;
7
-
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _anchoredPosition = require("../behaviors/anchoredPosition");
11
-
12
- var _useProvidedRefOrCreate = require("./useProvidedRefOrCreate");
13
-
14
- var _useResizeObserver = require("./useResizeObserver");
15
-
16
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
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.useAnchoredPosition = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const anchoredPosition_1 = require("../behaviors/anchoredPosition");
9
+ const useProvidedRefOrCreate_1 = require("./useProvidedRefOrCreate");
10
+ const useResizeObserver_1 = require("./useResizeObserver");
11
+ const useIsomorphicLayoutEffect_1 = __importDefault(require("../utils/useIsomorphicLayoutEffect"));
18
12
  /**
19
13
  * Calculates the top and left values for an absolutely-positioned floating element
20
14
  * to be anchored to some anchor element. Returns refs for the floating element
@@ -25,26 +19,25 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
19
  * floating element.
26
20
  */
27
21
  function useAnchoredPosition(settings, dependencies = []) {
28
- const floatingElementRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.floatingElementRef);
29
- const anchorElementRef = (0, _useProvidedRefOrCreate.useProvidedRefOrCreate)(settings === null || settings === void 0 ? void 0 : settings.anchorElementRef);
30
-
31
- const [position, setPosition] = _react.default.useState(undefined);
32
-
33
- const updatePosition = _react.default.useCallback(() => {
34
- if (floatingElementRef.current instanceof Element && anchorElementRef.current instanceof Element) {
35
- setPosition((0, _anchoredPosition.getAnchoredPosition)(floatingElementRef.current, anchorElementRef.current, settings));
36
- } else {
37
- setPosition(undefined);
38
- }
39
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
40
- [floatingElementRef, anchorElementRef, ...dependencies]);
41
-
42
- _react.default.useLayoutEffect(updatePosition, [updatePosition]);
43
-
44
- (0, _useResizeObserver.useResizeObserver)(updatePosition);
45
- return {
46
- floatingElementRef,
47
- anchorElementRef,
48
- position
49
- };
50
- }
22
+ const floatingElementRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(settings?.floatingElementRef);
23
+ const anchorElementRef = useProvidedRefOrCreate_1.useProvidedRefOrCreate(settings?.anchorElementRef);
24
+ const [position, setPosition] = react_1.default.useState(undefined);
25
+ const updatePosition = react_1.default.useCallback(() => {
26
+ if (floatingElementRef.current instanceof Element && anchorElementRef.current instanceof Element) {
27
+ setPosition(anchoredPosition_1.getAnchoredPosition(floatingElementRef.current, anchorElementRef.current, settings));
28
+ }
29
+ else {
30
+ setPosition(undefined);
31
+ }
32
+ },
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ [floatingElementRef, anchorElementRef, ...dependencies]);
35
+ useIsomorphicLayoutEffect_1.default(updatePosition, [updatePosition]);
36
+ useResizeObserver_1.useResizeObserver(updatePosition);
37
+ return {
38
+ floatingElementRef,
39
+ anchorElementRef,
40
+ position
41
+ };
42
+ }
43
+ exports.useAnchoredPosition = useAnchoredPosition;
@@ -1,4 +1,4 @@
1
- import React, { ForwardedRef } from 'react';
1
+ import { ForwardedRef } from 'react';
2
2
  /**
3
3
  * Creates a ref by combining multiple constituent refs. The ref returned by this hook
4
4
  * should be passed as the ref for the element that needs to be shared. This is
@@ -7,4 +7,4 @@ import React, { ForwardedRef } from 'react';
7
7
  * though, as it breaks encapsulation.
8
8
  * @param refs
9
9
  */
10
- export declare function useCombinedRefs<T>(...refs: (ForwardedRef<T> | null | undefined)[]): React.MutableRefObject<T | null>;
10
+ export declare function useCombinedRefs<T>(...refs: (ForwardedRef<T> | null | undefined)[]): import("react").MutableRefObject<T | null>;
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useCombinedRefs = useCombinedRefs;
7
-
8
- var _react = _interopRequireWildcard(require("react"));
9
-
10
- 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); }
11
-
12
- 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; }
13
-
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.useCombinedRefs = void 0;
7
+ const react_1 = require("react");
8
+ const useIsomorphicLayoutEffect_1 = __importDefault(require("../utils/useIsomorphicLayoutEffect"));
14
9
  /**
15
10
  * Creates a ref by combining multiple constituent refs. The ref returned by this hook
16
11
  * should be passed as the ref for the element that needs to be shared. This is
@@ -20,30 +15,29 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
20
15
  * @param refs
21
16
  */
22
17
  function useCombinedRefs(...refs) {
23
- const combinedRef = (0, _react.useRef)(null);
24
-
25
- _react.default.useLayoutEffect(() => {
26
- function setRefs(current = null) {
27
- for (const ref of refs) {
28
- if (!ref) {
29
- return;
30
- }
31
-
32
- if (typeof ref === 'function') {
33
- ref(current);
34
- } else {
35
- ref.current = current;
18
+ const combinedRef = react_1.useRef(null);
19
+ useIsomorphicLayoutEffect_1.default(() => {
20
+ function setRefs(current = null) {
21
+ for (const ref of refs) {
22
+ if (!ref) {
23
+ return;
24
+ }
25
+ if (typeof ref === 'function') {
26
+ ref(current);
27
+ }
28
+ else {
29
+ ref.current = current;
30
+ }
31
+ }
36
32
  }
37
- }
38
- }
39
-
40
- setRefs(combinedRef.current);
41
- return () => {
42
- // ensure the refs get updated on unmount
43
- // eslint-disable-next-line react-hooks/exhaustive-deps
44
- setRefs(combinedRef.current);
45
- }; // eslint-disable-next-line react-hooks/exhaustive-deps
46
- }, [...refs, combinedRef.current]);
47
-
48
- return combinedRef;
49
- }
33
+ setRefs(combinedRef.current);
34
+ return () => {
35
+ // ensure the refs get updated on unmount
36
+ // eslint-disable-next-line react-hooks/exhaustive-deps
37
+ setRefs(combinedRef.current);
38
+ };
39
+ // eslint-disable-next-line react-hooks/exhaustive-deps
40
+ }, [...refs, combinedRef.current]);
41
+ return combinedRef;
42
+ }
43
+ exports.useCombinedRefs = useCombinedRefs;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ function useDetails({ ref, closeOnOutsideClick, defaultOpen, onClickOutside }) {
5
+ const [open, setOpen] = react_1.useState(defaultOpen);
6
+ const backupRef = react_1.useRef(null);
7
+ const customRef = ref ?? backupRef;
8
+ const onClickOutsideInternal = react_1.useCallback((event) => {
9
+ const { current } = customRef;
10
+ const eventTarget = event.target;
11
+ const closest = eventTarget.closest('details');
12
+ if (closest !== current) {
13
+ onClickOutside && onClickOutside(event);
14
+ if (!event.defaultPrevented) {
15
+ setOpen(false);
16
+ }
17
+ }
18
+ }, [customRef, setOpen, onClickOutside]);
19
+ // handles the overlay behavior - closing the menu when clicking outside of it
20
+ react_1.useEffect(() => {
21
+ if (open && closeOnOutsideClick) {
22
+ document.addEventListener('click', onClickOutsideInternal);
23
+ return () => {
24
+ document.removeEventListener('click', onClickOutsideInternal);
25
+ };
26
+ }
27
+ }, [open, closeOnOutsideClick, onClickOutsideInternal]);
28
+ const handleToggle = (e) => {
29
+ if (!e.defaultPrevented) {
30
+ const eventTarget = e.target;
31
+ setOpen(eventTarget.open);
32
+ }
33
+ };
34
+ const getDetailsProps = () => {
35
+ return { onToggle: handleToggle, open, ref: customRef };
36
+ };
37
+ return { open, setOpen, getDetailsProps };
38
+ }
39
+ exports.default = useDetails;