@primer/components 31.2.1-rc.f73a0f8c → 32.0.1-rc.44e3df9b

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 (734) hide show
  1. package/.github/workflows/ci.yml +2 -5
  2. package/.github/workflows/release.yml +0 -1
  3. package/.github/workflows/release_canary.yml +0 -1
  4. package/CHANGELOG.md +74 -4
  5. package/dist/browser.esm.js +299 -361
  6. package/dist/browser.esm.js.map +1 -1
  7. package/dist/browser.umd.js +294 -356
  8. package/dist/browser.umd.js.map +1 -1
  9. package/docs/content/ActionList2.mdx +8 -7
  10. package/docs/content/Breadcrumbs.md +11 -16
  11. package/docs/content/Buttons.md +7 -17
  12. package/docs/content/CircleBadge.md +0 -10
  13. package/docs/content/CounterLabel.md +0 -10
  14. package/docs/content/Dialog.md +15 -18
  15. package/docs/content/Dialog2.mdx +1 -0
  16. package/docs/content/Dropdown.md +11 -18
  17. package/docs/content/FilterList.md +10 -17
  18. package/docs/content/FilteredSearch.md +4 -11
  19. package/docs/content/Flash.md +5 -14
  20. package/docs/content/FormGroup.md +9 -17
  21. package/docs/content/Header.md +14 -16
  22. package/docs/content/Label.md +32 -25
  23. package/docs/content/LabelGroup.md +4 -14
  24. package/docs/content/Link.md +8 -17
  25. package/docs/content/Overlay.mdx +1 -10
  26. package/docs/content/Pagehead.md +4 -13
  27. package/docs/content/Pagination.md +10 -19
  28. package/docs/content/Popover.md +11 -19
  29. package/docs/content/SelectMenu.md +50 -114
  30. package/docs/content/SideNav.md +15 -23
  31. package/docs/content/StateLabel.md +5 -14
  32. package/docs/content/StyledOcticon.md +7 -16
  33. package/docs/content/SubNav.md +19 -21
  34. package/docs/content/TabNav.md +10 -18
  35. package/docs/content/Timeline.md +34 -24
  36. package/docs/content/Tooltip.md +8 -17
  37. package/docs/content/Truncate.md +7 -16
  38. package/docs/content/UnderlineNav.md +13 -21
  39. package/docs/package-lock.json +269 -158
  40. package/docs/package.json +1 -1
  41. package/lib/ActionList/index.js +23 -12
  42. package/lib/ActionList2/Group.d.ts +28 -2
  43. package/lib/ActionList2/Group.js +55 -6
  44. package/lib/ActionList2/List.d.ts +1 -1
  45. package/lib/ActionList2/index.js +41 -23
  46. package/lib/AnchoredOverlay/index.js +12 -4
  47. package/lib/Autocomplete/Autocomplete.d.ts +3 -3
  48. package/lib/Autocomplete/AutocompleteInput.d.ts +3 -3
  49. package/lib/Autocomplete/index.js +14 -7
  50. package/lib/Breadcrumbs.d.ts +8 -7
  51. package/lib/Breadcrumbs.js +7 -12
  52. package/lib/Button/Button.d.ts +2 -3
  53. package/lib/Button/Button.js +2 -6
  54. package/lib/Button/ButtonBase.d.ts +5 -8
  55. package/lib/Button/ButtonBase.js +1 -5
  56. package/lib/Button/ButtonClose.d.ts +3 -46
  57. package/lib/Button/ButtonClose.js +1 -1
  58. package/lib/Button/ButtonDanger.d.ts +2 -3
  59. package/lib/Button/ButtonDanger.js +2 -6
  60. package/lib/Button/ButtonInvisible.d.ts +2 -3
  61. package/lib/Button/ButtonInvisible.js +2 -6
  62. package/lib/Button/ButtonOutline.d.ts +2 -3
  63. package/lib/Button/ButtonOutline.js +2 -6
  64. package/lib/Button/ButtonPrimary.d.ts +2 -3
  65. package/lib/Button/ButtonPrimary.js +2 -6
  66. package/lib/Button/ButtonTableList.d.ts +1 -2
  67. package/lib/Button/ButtonTableList.js +1 -1
  68. package/lib/Button/index.js +70 -21
  69. package/lib/CircleBadge.d.ts +4 -5
  70. package/lib/CircleBadge.js +1 -1
  71. package/lib/CircleOcticon.d.ts +1 -1
  72. package/lib/CounterLabel.d.ts +1 -2
  73. package/lib/CounterLabel.js +1 -1
  74. package/lib/Dialog/Dialog.d.ts +5 -9
  75. package/lib/Dialog/Dialog.js +17 -11
  76. package/lib/Dialog.d.ts +4 -5
  77. package/lib/Dialog.js +1 -1
  78. package/lib/Dropdown.d.ts +10 -99
  79. package/lib/Dropdown.js +3 -3
  80. package/lib/DropdownMenu/DropdownButton.d.ts +3 -47
  81. package/lib/DropdownMenu/DropdownButton.js +3 -1
  82. package/lib/DropdownMenu/index.js +20 -6
  83. package/lib/DropdownStyles.js +26 -18
  84. package/lib/FilterList.d.ts +264 -303
  85. package/lib/FilterList.js +2 -6
  86. package/lib/FilteredActionList/index.js +12 -4
  87. package/lib/FilteredSearch.d.ts +1 -2
  88. package/lib/FilteredSearch.js +1 -1
  89. package/lib/Flash.d.ts +1 -2
  90. package/lib/Flash.js +1 -1
  91. package/lib/FormGroup.d.ts +4 -5
  92. package/lib/FormGroup.js +2 -2
  93. package/lib/Header.d.ts +6 -7
  94. package/lib/Header.js +4 -4
  95. package/lib/Label.d.ts +1 -2
  96. package/lib/Label.js +2 -3
  97. package/lib/LabelGroup.d.ts +1 -2
  98. package/lib/LabelGroup.js +1 -1
  99. package/lib/Link.d.ts +1 -2
  100. package/lib/Link.js +1 -1
  101. package/lib/NewButton/button.js +34 -42
  102. package/lib/NewButton/index.js +12 -5
  103. package/lib/NewButton/types.js +1 -2
  104. package/lib/Overlay.d.ts +11 -10
  105. package/lib/Overlay.js +3 -4
  106. package/lib/Pagehead.d.ts +1 -2
  107. package/lib/Pagehead.js +1 -1
  108. package/lib/Pagination/Pagination.js +1 -1
  109. package/lib/Pagination/index.js +12 -6
  110. package/lib/Popover.d.ts +4 -5
  111. package/lib/Popover.js +4 -5
  112. package/lib/Portal/index.js +16 -5
  113. package/lib/Position.d.ts +4 -4
  114. package/lib/SelectMenu/SelectMenu.d.ts +21 -189
  115. package/lib/SelectMenu/SelectMenu.js +1 -3
  116. package/lib/SelectMenu/SelectMenuDivider.d.ts +1 -2
  117. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  118. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  119. package/lib/SelectMenu/SelectMenuFooter.d.ts +1 -2
  120. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  121. package/lib/SelectMenu/SelectMenuHeader.d.ts +1 -2
  122. package/lib/SelectMenu/SelectMenuHeader.js +1 -1
  123. package/lib/SelectMenu/SelectMenuItem.d.ts +2 -3
  124. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  125. package/lib/SelectMenu/SelectMenuList.d.ts +1 -2
  126. package/lib/SelectMenu/SelectMenuList.js +1 -1
  127. package/lib/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  128. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +3 -1
  129. package/lib/SelectMenu/SelectMenuModal.d.ts +2 -3
  130. package/lib/SelectMenu/SelectMenuModal.js +1 -1
  131. package/lib/SelectMenu/SelectMenuTab.d.ts +1 -2
  132. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  133. package/lib/SelectMenu/SelectMenuTabPanel.d.ts +1 -2
  134. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  135. package/lib/SelectMenu/SelectMenuTabs.d.ts +1 -2
  136. package/lib/SelectMenu/SelectMenuTabs.js +1 -1
  137. package/lib/SelectMenu/hooks/useKeyboardNav.js +96 -80
  138. package/lib/SelectMenu/index.js +14 -7
  139. package/lib/SelectPanel/index.js +12 -4
  140. package/lib/SideNav.d.ts +11 -8
  141. package/lib/SideNav.js +8 -15
  142. package/lib/StateLabel.d.ts +1 -2
  143. package/lib/StateLabel.js +6 -5
  144. package/lib/StyledOcticon.d.ts +1 -2
  145. package/lib/StyledOcticon.js +1 -3
  146. package/lib/SubNav.d.ts +5 -11
  147. package/lib/SubNav.js +7 -12
  148. package/lib/TabNav.d.ts +3 -4
  149. package/lib/TabNav.js +2 -2
  150. package/lib/TextInputWithTokens.d.ts +3 -3
  151. package/lib/Timeline.d.ts +19 -393
  152. package/lib/Timeline.js +16 -13
  153. package/lib/Token/Token.d.ts +1 -1
  154. package/lib/Token/index.js +30 -11
  155. package/lib/Tooltip.d.ts +1 -2
  156. package/lib/Tooltip.js +1 -1
  157. package/lib/Truncate.d.ts +1 -2
  158. package/lib/Truncate.js +1 -3
  159. package/lib/UnderlineNav.d.ts +2 -3
  160. package/lib/UnderlineNav.js +2 -2
  161. package/lib/__tests__/Breadcrumbs.test.js +4 -1
  162. package/lib/__tests__/Breadcrumbs.types.test.d.ts +3 -0
  163. package/lib/__tests__/Breadcrumbs.types.test.js +25 -0
  164. package/lib/__tests__/Button.test.js +6 -2
  165. package/lib/__tests__/CircleBadge.types.test.d.ts +3 -0
  166. package/lib/__tests__/CircleBadge.types.test.js +28 -0
  167. package/lib/__tests__/CounterLabel.types.test.d.ts +3 -0
  168. package/lib/__tests__/CounterLabel.types.test.js +28 -0
  169. package/lib/__tests__/Dialog.types.test.d.ts +3 -0
  170. package/lib/__tests__/Dialog.types.test.js +28 -0
  171. package/lib/__tests__/Dialog2.types.test.d.ts +3 -0
  172. package/lib/__tests__/Dialog2.types.test.js +31 -0
  173. package/lib/__tests__/Dropdown.types.test.d.ts +3 -0
  174. package/lib/__tests__/Dropdown.types.test.js +31 -0
  175. package/lib/__tests__/FilterList.types.test.d.ts +3 -0
  176. package/lib/__tests__/FilterList.types.test.js +27 -0
  177. package/lib/__tests__/FilteredSearch.types.test.d.ts +3 -0
  178. package/lib/__tests__/FilteredSearch.types.test.js +28 -0
  179. package/lib/__tests__/Flash.types.test.d.ts +3 -0
  180. package/lib/__tests__/Flash.types.test.js +28 -0
  181. package/lib/__tests__/FormGroup.types.test.d.ts +3 -0
  182. package/lib/__tests__/FormGroup.types.test.js +28 -0
  183. package/lib/__tests__/Header.types.test.d.ts +3 -0
  184. package/lib/__tests__/Header.types.test.js +29 -0
  185. package/lib/__tests__/KeyPaths.types.test.js +8 -5
  186. package/lib/__tests__/Label.types.test.d.ts +3 -0
  187. package/lib/__tests__/Label.types.test.js +28 -0
  188. package/lib/__tests__/LabelGroup.types.test.d.ts +3 -0
  189. package/lib/__tests__/LabelGroup.types.test.js +28 -0
  190. package/lib/__tests__/Link.test.js +11 -5
  191. package/lib/__tests__/Link.types.test.d.ts +3 -0
  192. package/lib/__tests__/Link.types.test.js +28 -0
  193. package/lib/__tests__/Merge.types.test.js +19 -13
  194. package/lib/__tests__/Overlay.types.test.d.ts +3 -0
  195. package/lib/__tests__/Overlay.types.test.js +35 -0
  196. package/lib/__tests__/Pagehead.types.test.d.ts +3 -0
  197. package/lib/__tests__/Pagehead.types.test.js +28 -0
  198. package/lib/__tests__/Pagination.types.test.d.ts +3 -0
  199. package/lib/__tests__/Pagination.types.test.js +33 -0
  200. package/lib/__tests__/Popover.types.test.d.ts +3 -0
  201. package/lib/__tests__/Popover.types.test.js +27 -0
  202. package/lib/__tests__/SelectMenu.types.test.d.ts +3 -0
  203. package/lib/__tests__/SelectMenu.types.test.js +47 -0
  204. package/lib/__tests__/SideNav.types.test.d.ts +3 -0
  205. package/lib/__tests__/SideNav.types.test.js +28 -0
  206. package/lib/__tests__/StateLabel.types.test.d.ts +3 -0
  207. package/lib/__tests__/StateLabel.types.test.js +28 -0
  208. package/lib/__tests__/StyledOcticon.types.test.d.ts +3 -0
  209. package/lib/__tests__/StyledOcticon.types.test.js +32 -0
  210. package/lib/__tests__/SubNav.types.test.d.ts +3 -0
  211. package/lib/__tests__/SubNav.types.test.js +27 -0
  212. package/lib/__tests__/TabNav.types.test.d.ts +3 -0
  213. package/lib/__tests__/TabNav.types.test.js +25 -0
  214. package/lib/__tests__/Timeline.types.test.d.ts +3 -0
  215. package/lib/__tests__/Timeline.types.test.js +31 -0
  216. package/lib/__tests__/Tooltip.types.test.d.ts +3 -0
  217. package/lib/__tests__/Tooltip.types.test.js +28 -0
  218. package/lib/__tests__/Truncate.types.test.d.ts +3 -0
  219. package/lib/__tests__/Truncate.types.test.js +31 -0
  220. package/lib/__tests__/UnderlineNav.types.test.d.ts +3 -0
  221. package/lib/__tests__/UnderlineNav.types.test.js +25 -0
  222. package/lib/__tests__/behaviors/anchoredPosition.test.js +376 -229
  223. package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +216 -145
  224. package/lib/__tests__/filterObject.test.js +27 -48
  225. package/lib/__tests__/theme.test.js +34 -33
  226. package/lib/__tests__/themeGet.test.js +23 -12
  227. package/lib/behaviors/anchoredPosition.js +234 -205
  228. package/lib/behaviors/focusTrap.js +157 -121
  229. package/lib/behaviors/focusZone.js +509 -434
  230. package/lib/behaviors/scrollIntoViewingArea.js +35 -18
  231. package/lib/constants.js +43 -39
  232. package/lib/drafts.js +30 -20
  233. package/lib/hooks/index.js +60 -16
  234. package/lib/hooks/useAnchoredPosition.js +40 -32
  235. package/lib/hooks/useCombinedRefs.js +36 -32
  236. package/lib/hooks/useDialog.js +96 -72
  237. package/lib/hooks/useFocusTrap.js +60 -43
  238. package/lib/hooks/useFocusZone.js +50 -54
  239. package/lib/hooks/useOnEscapePress.js +36 -25
  240. package/lib/hooks/useOpenAndCloseFocus.js +34 -22
  241. package/lib/hooks/useProvidedRefOrCreate.js +14 -10
  242. package/lib/hooks/useProvidedStateOrCreate.js +16 -13
  243. package/lib/hooks/useRenderForcingRef.js +17 -13
  244. package/lib/hooks/useResizeObserver.js +18 -15
  245. package/lib/hooks/useSafeTimeout.js +30 -22
  246. package/lib/hooks/useScrollFlash.js +23 -16
  247. package/lib/index.js +644 -163
  248. package/lib/polyfills/eventListenerSignal.js +45 -37
  249. package/lib/stories/ActionList2.stories.js +4 -3
  250. package/lib/stories/ActionMenu.stories.js +1 -3
  251. package/lib/stories/ConfirmationDialog.stories.js +16 -8
  252. package/lib/stories/Dialog.stories.js +6 -2
  253. package/lib/stories/useFocusTrap.stories.js +6 -2
  254. package/lib/stories/useFocusZone.stories.js +13 -5
  255. package/lib/sx.js +22 -10
  256. package/lib/theme-preval.js +3169 -64
  257. package/lib/theme.js +12 -3
  258. package/lib/utils/iterateFocusableElements.js +85 -63
  259. package/lib/utils/testing.d.ts +1 -1
  260. package/lib/utils/theme.js +47 -33
  261. package/lib/utils/types/AriaRole.js +1 -2
  262. package/lib/utils/types/ComponentProps.js +1 -2
  263. package/lib/utils/types/Flatten.js +1 -2
  264. package/lib/utils/types/KeyPaths.js +1 -2
  265. package/lib/utils/types/MandateProps.js +1 -16
  266. package/lib/utils/types/Merge.js +1 -2
  267. package/lib/utils/types/index.js +69 -16
  268. package/lib/utils/uniqueId.js +8 -5
  269. package/lib/utils/use-force-update.js +14 -8
  270. package/lib/utils/useIsomorphicLayoutEffect.js +11 -8
  271. package/lib/utils/userAgent.js +12 -8
  272. package/lib-esm/ActionList2/Group.d.ts +28 -2
  273. package/lib-esm/ActionList2/Group.js +52 -5
  274. package/lib-esm/ActionList2/List.d.ts +1 -1
  275. package/lib-esm/Autocomplete/Autocomplete.d.ts +3 -3
  276. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +3 -3
  277. package/lib-esm/Breadcrumbs.d.ts +8 -7
  278. package/lib-esm/Breadcrumbs.js +8 -13
  279. package/lib-esm/Button/Button.d.ts +2 -3
  280. package/lib-esm/Button/Button.js +2 -2
  281. package/lib-esm/Button/ButtonBase.d.ts +5 -8
  282. package/lib-esm/Button/ButtonBase.js +1 -3
  283. package/lib-esm/Button/ButtonClose.d.ts +3 -46
  284. package/lib-esm/Button/ButtonClose.js +2 -2
  285. package/lib-esm/Button/ButtonDanger.d.ts +2 -3
  286. package/lib-esm/Button/ButtonDanger.js +2 -2
  287. package/lib-esm/Button/ButtonInvisible.d.ts +2 -3
  288. package/lib-esm/Button/ButtonInvisible.js +2 -2
  289. package/lib-esm/Button/ButtonOutline.d.ts +2 -3
  290. package/lib-esm/Button/ButtonOutline.js +2 -2
  291. package/lib-esm/Button/ButtonPrimary.d.ts +2 -3
  292. package/lib-esm/Button/ButtonPrimary.js +2 -2
  293. package/lib-esm/Button/ButtonTableList.d.ts +1 -2
  294. package/lib-esm/Button/ButtonTableList.js +2 -2
  295. package/lib-esm/CircleBadge.d.ts +4 -5
  296. package/lib-esm/CircleBadge.js +2 -2
  297. package/lib-esm/CircleOcticon.d.ts +1 -1
  298. package/lib-esm/CounterLabel.d.ts +1 -2
  299. package/lib-esm/CounterLabel.js +2 -2
  300. package/lib-esm/Dialog/Dialog.d.ts +5 -9
  301. package/lib-esm/Dialog/Dialog.js +12 -12
  302. package/lib-esm/Dialog.d.ts +4 -5
  303. package/lib-esm/Dialog.js +2 -2
  304. package/lib-esm/Dropdown.d.ts +10 -99
  305. package/lib-esm/Dropdown.js +4 -4
  306. package/lib-esm/DropdownMenu/DropdownButton.d.ts +3 -47
  307. package/lib-esm/DropdownMenu/DropdownButton.js +3 -1
  308. package/lib-esm/FilterList.d.ts +264 -303
  309. package/lib-esm/FilterList.js +3 -7
  310. package/lib-esm/FilteredSearch.d.ts +1 -2
  311. package/lib-esm/FilteredSearch.js +2 -2
  312. package/lib-esm/Flash.d.ts +1 -2
  313. package/lib-esm/Flash.js +2 -2
  314. package/lib-esm/FormGroup.d.ts +4 -5
  315. package/lib-esm/FormGroup.js +3 -3
  316. package/lib-esm/Header.d.ts +6 -7
  317. package/lib-esm/Header.js +5 -5
  318. package/lib-esm/Label.d.ts +1 -2
  319. package/lib-esm/Label.js +3 -4
  320. package/lib-esm/LabelGroup.d.ts +1 -2
  321. package/lib-esm/LabelGroup.js +2 -2
  322. package/lib-esm/Link.d.ts +1 -2
  323. package/lib-esm/Link.js +2 -2
  324. package/lib-esm/NewButton/button.js +31 -42
  325. package/lib-esm/Overlay.d.ts +11 -10
  326. package/lib-esm/Overlay.js +2 -3
  327. package/lib-esm/Pagehead.d.ts +1 -2
  328. package/lib-esm/Pagehead.js +2 -2
  329. package/lib-esm/Pagination/Pagination.js +2 -2
  330. package/lib-esm/Popover.d.ts +4 -5
  331. package/lib-esm/Popover.js +4 -5
  332. package/lib-esm/Position.d.ts +4 -4
  333. package/lib-esm/SelectMenu/SelectMenu.d.ts +21 -189
  334. package/lib-esm/SelectMenu/SelectMenu.js +1 -2
  335. package/lib-esm/SelectMenu/SelectMenuDivider.d.ts +1 -2
  336. package/lib-esm/SelectMenu/SelectMenuDivider.js +2 -2
  337. package/lib-esm/SelectMenu/SelectMenuFilter.js +2 -2
  338. package/lib-esm/SelectMenu/SelectMenuFooter.d.ts +1 -2
  339. package/lib-esm/SelectMenu/SelectMenuFooter.js +2 -2
  340. package/lib-esm/SelectMenu/SelectMenuHeader.d.ts +1 -2
  341. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  342. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +2 -3
  343. package/lib-esm/SelectMenu/SelectMenuItem.js +2 -2
  344. package/lib-esm/SelectMenu/SelectMenuList.d.ts +1 -2
  345. package/lib-esm/SelectMenu/SelectMenuList.js +2 -2
  346. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.d.ts +2 -2
  347. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +3 -2
  348. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +2 -3
  349. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  350. package/lib-esm/SelectMenu/SelectMenuTab.d.ts +1 -2
  351. package/lib-esm/SelectMenu/SelectMenuTab.js +2 -2
  352. package/lib-esm/SelectMenu/SelectMenuTabPanel.d.ts +1 -2
  353. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +2 -2
  354. package/lib-esm/SelectMenu/SelectMenuTabs.d.ts +1 -2
  355. package/lib-esm/SelectMenu/SelectMenuTabs.js +2 -2
  356. package/lib-esm/SideNav.d.ts +11 -8
  357. package/lib-esm/SideNav.js +8 -16
  358. package/lib-esm/StateLabel.d.ts +1 -2
  359. package/lib-esm/StateLabel.js +7 -6
  360. package/lib-esm/StyledOcticon.d.ts +1 -2
  361. package/lib-esm/StyledOcticon.js +1 -2
  362. package/lib-esm/SubNav.d.ts +5 -11
  363. package/lib-esm/SubNav.js +8 -13
  364. package/lib-esm/TabNav.d.ts +3 -4
  365. package/lib-esm/TabNav.js +3 -3
  366. package/lib-esm/TextInputWithTokens.d.ts +3 -3
  367. package/lib-esm/Timeline.d.ts +19 -393
  368. package/lib-esm/Timeline.js +12 -13
  369. package/lib-esm/Token/Token.d.ts +1 -1
  370. package/lib-esm/Tooltip.d.ts +1 -2
  371. package/lib-esm/Tooltip.js +2 -2
  372. package/lib-esm/Truncate.d.ts +1 -2
  373. package/lib-esm/Truncate.js +1 -2
  374. package/lib-esm/UnderlineNav.d.ts +2 -3
  375. package/lib-esm/UnderlineNav.js +3 -3
  376. package/lib-esm/__tests__/Breadcrumbs.test.js +4 -1
  377. package/lib-esm/__tests__/Breadcrumbs.types.test.d.ts +3 -0
  378. package/lib-esm/__tests__/Breadcrumbs.types.test.js +12 -0
  379. package/lib-esm/__tests__/Button.test.js +6 -2
  380. package/lib-esm/__tests__/CircleBadge.types.test.d.ts +3 -0
  381. package/lib-esm/__tests__/CircleBadge.types.test.js +13 -0
  382. package/lib-esm/__tests__/CounterLabel.types.test.d.ts +3 -0
  383. package/lib-esm/__tests__/CounterLabel.types.test.js +13 -0
  384. package/lib-esm/__tests__/Dialog.types.test.d.ts +3 -0
  385. package/lib-esm/__tests__/Dialog.types.test.js +13 -0
  386. package/lib-esm/__tests__/Dialog2.types.test.d.ts +3 -0
  387. package/lib-esm/__tests__/Dialog2.types.test.js +16 -0
  388. package/lib-esm/__tests__/Dropdown.types.test.d.ts +3 -0
  389. package/lib-esm/__tests__/Dropdown.types.test.js +17 -0
  390. package/lib-esm/__tests__/FilterList.types.test.d.ts +3 -0
  391. package/lib-esm/__tests__/FilterList.types.test.js +13 -0
  392. package/lib-esm/__tests__/FilteredSearch.types.test.d.ts +3 -0
  393. package/lib-esm/__tests__/FilteredSearch.types.test.js +13 -0
  394. package/lib-esm/__tests__/Flash.types.test.d.ts +3 -0
  395. package/lib-esm/__tests__/Flash.types.test.js +13 -0
  396. package/lib-esm/__tests__/FormGroup.types.test.d.ts +3 -0
  397. package/lib-esm/__tests__/FormGroup.types.test.js +13 -0
  398. package/lib-esm/__tests__/Header.types.test.d.ts +3 -0
  399. package/lib-esm/__tests__/Header.types.test.js +15 -0
  400. package/lib-esm/__tests__/Label.types.test.d.ts +3 -0
  401. package/lib-esm/__tests__/Label.types.test.js +13 -0
  402. package/lib-esm/__tests__/LabelGroup.types.test.d.ts +3 -0
  403. package/lib-esm/__tests__/LabelGroup.types.test.js +13 -0
  404. package/lib-esm/__tests__/Link.test.js +11 -5
  405. package/lib-esm/__tests__/Link.types.test.d.ts +3 -0
  406. package/lib-esm/__tests__/Link.types.test.js +13 -0
  407. package/lib-esm/__tests__/Overlay.types.test.d.ts +3 -0
  408. package/lib-esm/__tests__/Overlay.types.test.js +20 -0
  409. package/lib-esm/__tests__/Pagehead.types.test.d.ts +3 -0
  410. package/lib-esm/__tests__/Pagehead.types.test.js +13 -0
  411. package/lib-esm/__tests__/Pagination.types.test.d.ts +3 -0
  412. package/lib-esm/__tests__/Pagination.types.test.js +18 -0
  413. package/lib-esm/__tests__/Popover.types.test.d.ts +3 -0
  414. package/lib-esm/__tests__/Popover.types.test.js +13 -0
  415. package/lib-esm/__tests__/SelectMenu.types.test.d.ts +3 -0
  416. package/lib-esm/__tests__/SelectMenu.types.test.js +33 -0
  417. package/lib-esm/__tests__/SideNav.types.test.d.ts +3 -0
  418. package/lib-esm/__tests__/SideNav.types.test.js +13 -0
  419. package/lib-esm/__tests__/StateLabel.types.test.d.ts +3 -0
  420. package/lib-esm/__tests__/StateLabel.types.test.js +13 -0
  421. package/lib-esm/__tests__/StyledOcticon.types.test.d.ts +3 -0
  422. package/lib-esm/__tests__/StyledOcticon.types.test.js +16 -0
  423. package/lib-esm/__tests__/SubNav.types.test.d.ts +3 -0
  424. package/lib-esm/__tests__/SubNav.types.test.js +14 -0
  425. package/lib-esm/__tests__/TabNav.types.test.d.ts +3 -0
  426. package/lib-esm/__tests__/TabNav.types.test.js +12 -0
  427. package/lib-esm/__tests__/Timeline.types.test.d.ts +3 -0
  428. package/lib-esm/__tests__/Timeline.types.test.js +18 -0
  429. package/lib-esm/__tests__/Tooltip.types.test.d.ts +3 -0
  430. package/lib-esm/__tests__/Tooltip.types.test.js +13 -0
  431. package/lib-esm/__tests__/Truncate.types.test.d.ts +3 -0
  432. package/lib-esm/__tests__/Truncate.types.test.js +16 -0
  433. package/lib-esm/__tests__/UnderlineNav.types.test.d.ts +3 -0
  434. package/lib-esm/__tests__/UnderlineNav.types.test.js +12 -0
  435. package/lib-esm/stories/ActionList2.stories.js +4 -3
  436. package/lib-esm/stories/ActionMenu.stories.js +1 -3
  437. package/lib-esm/stories/ConfirmationDialog.stories.js +16 -8
  438. package/lib-esm/stories/Dialog.stories.js +6 -2
  439. package/lib-esm/stories/useFocusTrap.stories.js +6 -2
  440. package/lib-esm/stories/useFocusZone.stories.js +13 -5
  441. package/lib-esm/theme-preval.js +446 -0
  442. package/lib-esm/utils/testing.d.ts +1 -1
  443. package/package-lock.json +16 -16
  444. package/package.json +4 -5
  445. package/script/build +1 -1
  446. package/src/ActionList2/Group.tsx +76 -7
  447. package/src/ActionList2/List.tsx +1 -1
  448. package/src/Breadcrumbs.tsx +11 -11
  449. package/src/Button/Button.tsx +2 -3
  450. package/src/Button/ButtonBase.tsx +2 -6
  451. package/src/Button/ButtonClose.tsx +2 -6
  452. package/src/Button/ButtonDanger.tsx +2 -3
  453. package/src/Button/ButtonInvisible.tsx +2 -3
  454. package/src/Button/ButtonOutline.tsx +2 -3
  455. package/src/Button/ButtonPrimary.tsx +2 -3
  456. package/src/Button/ButtonTableList.tsx +2 -15
  457. package/src/CircleBadge.tsx +2 -4
  458. package/src/CounterLabel.tsx +2 -4
  459. package/src/Dialog/Dialog.tsx +22 -11
  460. package/src/Dialog.tsx +2 -6
  461. package/src/Dropdown.tsx +3 -7
  462. package/src/DropdownMenu/DropdownButton.tsx +1 -1
  463. package/src/FilterList.tsx +5 -11
  464. package/src/FilteredSearch.tsx +2 -3
  465. package/src/Flash.tsx +2 -4
  466. package/src/FormGroup.tsx +3 -6
  467. package/src/Header.tsx +4 -14
  468. package/src/Label.tsx +2 -5
  469. package/src/LabelGroup.tsx +2 -3
  470. package/src/Link.tsx +2 -6
  471. package/src/NewButton/button.tsx +82 -78
  472. package/src/Overlay.tsx +13 -11
  473. package/src/Pagehead.tsx +2 -3
  474. package/src/Pagination/Pagination.tsx +3 -5
  475. package/src/Popover.tsx +3 -14
  476. package/src/SelectMenu/SelectMenu.tsx +1 -3
  477. package/src/SelectMenu/SelectMenuDivider.tsx +2 -3
  478. package/src/SelectMenu/SelectMenuFilter.tsx +2 -3
  479. package/src/SelectMenu/SelectMenuFooter.tsx +2 -3
  480. package/src/SelectMenu/SelectMenuHeader.tsx +2 -4
  481. package/src/SelectMenu/SelectMenuItem.tsx +2 -3
  482. package/src/SelectMenu/SelectMenuList.tsx +2 -3
  483. package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +4 -3
  484. package/src/SelectMenu/SelectMenuModal.tsx +2 -4
  485. package/src/SelectMenu/SelectMenuTab.tsx +2 -3
  486. package/src/SelectMenu/SelectMenuTabPanel.tsx +2 -3
  487. package/src/SelectMenu/SelectMenuTabs.tsx +2 -3
  488. package/src/SideNav.tsx +11 -13
  489. package/src/StateLabel.tsx +3 -5
  490. package/src/StyledOcticon.tsx +1 -3
  491. package/src/SubNav.tsx +8 -13
  492. package/src/TabNav.tsx +3 -7
  493. package/src/Timeline.tsx +11 -12
  494. package/src/Tooltip.tsx +3 -3
  495. package/src/Truncate.tsx +0 -5
  496. package/src/UnderlineNav.tsx +3 -6
  497. package/src/__tests__/Breadcrumbs.test.tsx +1 -1
  498. package/src/__tests__/Breadcrumbs.types.test.tsx +22 -0
  499. package/src/__tests__/Button.test.tsx +2 -2
  500. package/src/__tests__/CircleBadge.types.test.tsx +11 -0
  501. package/src/__tests__/CounterLabel.types.test.tsx +11 -0
  502. package/src/__tests__/Dialog.types.test.tsx +11 -0
  503. package/src/__tests__/Dialog2.types.test.tsx +11 -0
  504. package/src/__tests__/Dropdown.types.test.tsx +21 -0
  505. package/src/__tests__/FilterList.types.test.tsx +17 -0
  506. package/src/__tests__/FilteredSearch.types.test.tsx +11 -0
  507. package/src/__tests__/Flash.types.test.tsx +11 -0
  508. package/src/__tests__/FormGroup.types.test.tsx +11 -0
  509. package/src/__tests__/Header.types.test.tsx +19 -0
  510. package/src/__tests__/Label.types.test.tsx +11 -0
  511. package/src/__tests__/LabelGroup.types.test.tsx +11 -0
  512. package/src/__tests__/Link.test.tsx +5 -5
  513. package/src/__tests__/Link.types.test.tsx +11 -0
  514. package/src/__tests__/Overlay.types.test.tsx +18 -0
  515. package/src/__tests__/Pagehead.types.test.tsx +11 -0
  516. package/src/__tests__/Pagination.types.test.tsx +11 -0
  517. package/src/__tests__/Popover.types.test.tsx +17 -0
  518. package/src/__tests__/SelectMenu.types.test.tsx +37 -0
  519. package/src/__tests__/SideNav.types.test.tsx +11 -0
  520. package/src/__tests__/StateLabel.types.test.tsx +11 -0
  521. package/src/__tests__/StyledOcticon.types.test.tsx +12 -0
  522. package/src/__tests__/SubNav.types.test.tsx +25 -0
  523. package/src/__tests__/TabNav.types.test.tsx +22 -0
  524. package/src/__tests__/Timeline.types.test.tsx +31 -0
  525. package/src/__tests__/Tooltip.types.test.tsx +11 -0
  526. package/src/__tests__/Truncate.types.test.tsx +11 -0
  527. package/src/__tests__/UnderlineNav.types.test.tsx +22 -0
  528. package/src/__tests__/__snapshots__/Label.test.tsx.snap +3 -4
  529. package/src/__tests__/__snapshots__/Link.test.tsx.snap +1 -2
  530. package/src/__tests__/__snapshots__/NewButton.test.tsx.snap +5 -0
  531. package/src/stories/ActionList2.stories.tsx +3 -3
  532. package/src/stories/ActionMenu.stories.tsx +1 -4
  533. package/src/stories/ConfirmationDialog.stories.tsx +4 -4
  534. package/src/stories/Dialog.stories.tsx +2 -2
  535. package/src/stories/useFocusTrap.stories.tsx +2 -2
  536. package/src/stories/useFocusZone.stories.tsx +4 -4
  537. package/stats.html +1 -1
  538. package/tsconfig.build.json +2 -2
  539. package/tsconfig.json +17 -4
  540. package/lib/ActionList/Divider.jsx +0 -29
  541. package/lib/ActionList/Group.jsx +0 -23
  542. package/lib/ActionList/Header.jsx +0 -66
  543. package/lib/ActionList/Item.jsx +0 -288
  544. package/lib/ActionList/List.jsx +0 -138
  545. package/lib/ActionList2/Description.jsx +0 -29
  546. package/lib/ActionList2/Divider.jsx +0 -22
  547. package/lib/ActionList2/Group.jsx +0 -25
  548. package/lib/ActionList2/Header.jsx +0 -36
  549. package/lib/ActionList2/Item.jsx +0 -174
  550. package/lib/ActionList2/LinkItem.jsx +0 -28
  551. package/lib/ActionList2/List.jsx +0 -41
  552. package/lib/ActionList2/Selection.jsx +0 -50
  553. package/lib/ActionList2/Visuals.jsx +0 -48
  554. package/lib/ActionMenu.jsx +0 -73
  555. package/lib/AnchoredOverlay/AnchoredOverlay.jsx +0 -100
  556. package/lib/Autocomplete/Autocomplete.jsx +0 -100
  557. package/lib/Autocomplete/AutocompleteContext.jsx +0 -5
  558. package/lib/Autocomplete/AutocompleteInput.jsx +0 -113
  559. package/lib/Autocomplete/AutocompleteMenu.jsx +0 -190
  560. package/lib/Autocomplete/AutocompleteOverlay.jsx +0 -55
  561. package/lib/Avatar.jsx +0 -34
  562. package/lib/AvatarPair.jsx +0 -29
  563. package/lib/AvatarStack.jsx +0 -151
  564. package/lib/BaseStyles.jsx +0 -65
  565. package/lib/BorderBox.jsx +0 -18
  566. package/lib/Box.jsx +0 -10
  567. package/lib/BranchName.jsx +0 -20
  568. package/lib/Breadcrumbs.jsx +0 -74
  569. package/lib/Button/Button.jsx +0 -60
  570. package/lib/Button/ButtonBase.jsx +0 -36
  571. package/lib/Button/ButtonClose.jsx +0 -55
  572. package/lib/Button/ButtonDanger.jsx +0 -63
  573. package/lib/Button/ButtonGroup.jsx +0 -55
  574. package/lib/Button/ButtonInvisible.jsx +0 -52
  575. package/lib/Button/ButtonOutline.jsx +0 -63
  576. package/lib/Button/ButtonPrimary.jsx +0 -62
  577. package/lib/Button/ButtonStyles.jsx +0 -37
  578. package/lib/Button/ButtonTableList.jsx +0 -49
  579. package/lib/Caret.jsx +0 -93
  580. package/lib/CircleBadge.jsx +0 -43
  581. package/lib/CircleOcticon.jsx +0 -21
  582. package/lib/CounterLabel.jsx +0 -44
  583. package/lib/Details.jsx +0 -21
  584. package/lib/Dialog/ConfirmationDialog.jsx +0 -146
  585. package/lib/Dialog/Dialog.jsx +0 -273
  586. package/lib/Dialog.jsx +0 -131
  587. package/lib/Dropdown.jsx +0 -134
  588. package/lib/DropdownMenu/DropdownButton.jsx +0 -14
  589. package/lib/DropdownMenu/DropdownMenu.jsx +0 -70
  590. package/lib/FilterList.jsx +0 -63
  591. package/lib/FilteredActionList/FilteredActionList.jsx +0 -100
  592. package/lib/FilteredSearch.jsx +0 -29
  593. package/lib/Flash.jsx +0 -70
  594. package/lib/Flex.jsx +0 -15
  595. package/lib/FormGroup.jsx +0 -25
  596. package/lib/Grid.jsx +0 -15
  597. package/lib/Header.jsx +0 -90
  598. package/lib/Heading.jsx +0 -21
  599. package/lib/Label.jsx +0 -84
  600. package/lib/LabelGroup.jsx +0 -19
  601. package/lib/Link.jsx +0 -38
  602. package/lib/NewButton/button-counter.jsx +0 -14
  603. package/lib/NewButton/button.jsx +0 -278
  604. package/lib/Overlay.jsx +0 -156
  605. package/lib/Pagehead.jsx +0 -18
  606. package/lib/Pagination/Pagination.jsx +0 -163
  607. package/lib/Pagination/model.jsx +0 -174
  608. package/lib/PointerBox.jsx +0 -25
  609. package/lib/Popover.jsx +0 -210
  610. package/lib/Portal/Portal.jsx +0 -79
  611. package/lib/Position.jsx +0 -46
  612. package/lib/ProgressBar.jsx +0 -39
  613. package/lib/SelectMenu/SelectMenu.jsx +0 -114
  614. package/lib/SelectMenu/SelectMenuContext.jsx +0 -5
  615. package/lib/SelectMenu/SelectMenuDivider.jsx +0 -43
  616. package/lib/SelectMenu/SelectMenuFilter.jsx +0 -59
  617. package/lib/SelectMenu/SelectMenuFooter.jsx +0 -46
  618. package/lib/SelectMenu/SelectMenuHeader.jsx +0 -44
  619. package/lib/SelectMenu/SelectMenuItem.jsx +0 -143
  620. package/lib/SelectMenu/SelectMenuList.jsx +0 -60
  621. package/lib/SelectMenu/SelectMenuLoadingAnimation.jsx +0 -21
  622. package/lib/SelectMenu/SelectMenuModal.jsx +0 -119
  623. package/lib/SelectMenu/SelectMenuTab.jsx +0 -93
  624. package/lib/SelectMenu/SelectMenuTabPanel.jsx +0 -43
  625. package/lib/SelectMenu/SelectMenuTabs.jsx +0 -58
  626. package/lib/SelectPanel/SelectPanel.jsx +0 -105
  627. package/lib/SideNav.jsx +0 -177
  628. package/lib/Spinner.jsx +0 -35
  629. package/lib/StateLabel.jsx +0 -94
  630. package/lib/StyledOcticon.jsx +0 -20
  631. package/lib/SubNav.jsx +0 -104
  632. package/lib/TabNav.jsx +0 -60
  633. package/lib/Text.jsx +0 -14
  634. package/lib/TextInput.jsx +0 -23
  635. package/lib/TextInputWithTokens.jsx +0 -218
  636. package/lib/ThemeProvider.jsx +0 -130
  637. package/lib/Timeline.jsx +0 -124
  638. package/lib/Token/AvatarToken.jsx +0 -54
  639. package/lib/Token/IssueLabelToken.jsx +0 -125
  640. package/lib/Token/Token.jsx +0 -103
  641. package/lib/Token/TokenBase.jsx +0 -88
  642. package/lib/Token/_RemoveTokenButton.jsx +0 -108
  643. package/lib/Token/_TokenTextContainer.jsx +0 -49
  644. package/lib/Tooltip.jsx +0 -246
  645. package/lib/Truncate.jsx +0 -27
  646. package/lib/UnderlineNav.jsx +0 -90
  647. package/lib/_TextInputWrapper.jsx +0 -120
  648. package/lib/_UnstyledTextInput.jsx +0 -22
  649. package/lib/__tests__/ActionList.test.jsx +0 -49
  650. package/lib/__tests__/ActionList.types.test.jsx +0 -45
  651. package/lib/__tests__/ActionList2.test.jsx +0 -46
  652. package/lib/__tests__/ActionMenu.test.jsx +0 -124
  653. package/lib/__tests__/AnchoredOverlay.test.jsx +0 -121
  654. package/lib/__tests__/Autocomplete.test.jsx +0 -299
  655. package/lib/__tests__/Avatar.test.jsx +0 -42
  656. package/lib/__tests__/AvatarStack.test.jsx +0 -43
  657. package/lib/__tests__/BorderBox.test.jsx +0 -36
  658. package/lib/__tests__/Box.test.jsx +0 -41
  659. package/lib/__tests__/BranchName.test.jsx +0 -27
  660. package/lib/__tests__/Breadcrumbs.test.jsx +0 -28
  661. package/lib/__tests__/BreadcrumbsItem.test.jsx +0 -31
  662. package/lib/__tests__/Button.test.jsx +0 -100
  663. package/lib/__tests__/Caret.test.jsx +0 -37
  664. package/lib/__tests__/CircleBadge.test.jsx +0 -55
  665. package/lib/__tests__/CircleOcticon.test.jsx +0 -45
  666. package/lib/__tests__/ConfirmationDialog.test.jsx +0 -119
  667. package/lib/__tests__/CounterLabel.test.jsx +0 -36
  668. package/lib/__tests__/Details.test.jsx +0 -85
  669. package/lib/__tests__/Dialog.test.jsx +0 -139
  670. package/lib/__tests__/Dropdown.test.jsx +0 -49
  671. package/lib/__tests__/DropdownMenu.test.jsx +0 -119
  672. package/lib/__tests__/FilterList.test.jsx +0 -27
  673. package/lib/__tests__/FilterListItem.test.jsx +0 -31
  674. package/lib/__tests__/FilteredSearch.test.jsx +0 -27
  675. package/lib/__tests__/Flash.test.jsx +0 -36
  676. package/lib/__tests__/Flex.test.jsx +0 -51
  677. package/lib/__tests__/FormGroup.test.jsx +0 -36
  678. package/lib/__tests__/Grid.test.jsx +0 -69
  679. package/lib/__tests__/Header.test.jsx +0 -45
  680. package/lib/__tests__/Heading.test.jsx +0 -71
  681. package/lib/__tests__/Label.test.jsx +0 -33
  682. package/lib/__tests__/LabelGroup.test.jsx +0 -29
  683. package/lib/__tests__/Link.test.jsx +0 -43
  684. package/lib/__tests__/NewButton.test.jsx +0 -61
  685. package/lib/__tests__/Overlay.test.jsx +0 -105
  686. package/lib/__tests__/Pagehead.test.jsx +0 -25
  687. package/lib/__tests__/Pagination/Pagination.test.jsx +0 -32
  688. package/lib/__tests__/Pagination/PaginationModel.test.jsx +0 -118
  689. package/lib/__tests__/PointerBox.test.jsx +0 -33
  690. package/lib/__tests__/Popover.test.jsx +0 -58
  691. package/lib/__tests__/Portal.test.jsx +0 -102
  692. package/lib/__tests__/Position.test.jsx +0 -96
  693. package/lib/__tests__/ProgressBar.test.jsx +0 -38
  694. package/lib/__tests__/SelectMenu.test.jsx +0 -120
  695. package/lib/__tests__/SelectPanel.test.jsx +0 -48
  696. package/lib/__tests__/SideNav.test.jsx +0 -55
  697. package/lib/__tests__/Spinner.test.jsx +0 -41
  698. package/lib/__tests__/StateLabel.test.jsx +0 -46
  699. package/lib/__tests__/StyledOcticon.test.jsx +0 -28
  700. package/lib/__tests__/SubNav.test.jsx +0 -47
  701. package/lib/__tests__/SubNavLink.test.jsx +0 -31
  702. package/lib/__tests__/TabNav.test.jsx +0 -32
  703. package/lib/__tests__/Text.test.jsx +0 -71
  704. package/lib/__tests__/TextInput.test.jsx +0 -45
  705. package/lib/__tests__/TextInputWithTokens.test.jsx +0 -302
  706. package/lib/__tests__/ThemeProvider.test.jsx +0 -314
  707. package/lib/__tests__/Timeline.test.jsx +0 -51
  708. package/lib/__tests__/Token.test.jsx +0 -93
  709. package/lib/__tests__/Tooltip.test.jsx +0 -46
  710. package/lib/__tests__/Truncate.test.jsx +0 -41
  711. package/lib/__tests__/UnderlineNav.test.jsx +0 -53
  712. package/lib/__tests__/UnderlineNavLink.test.jsx +0 -31
  713. package/lib/__tests__/behaviors/focusTrap.test.jsx +0 -184
  714. package/lib/__tests__/behaviors/focusZone.test.jsx +0 -406
  715. package/lib/__tests__/behaviors/iterateFocusableElements.test.jsx +0 -58
  716. package/lib/__tests__/hooks/useAnchoredPosition.test.jsx +0 -29
  717. package/lib/__tests__/hooks/useOnEscapePress.test.jsx +0 -19
  718. package/lib/__tests__/hooks/useOnOutsideClick.test.jsx +0 -63
  719. package/lib/__tests__/hooks/useOpenAndCloseFocus.test.jsx +0 -61
  720. package/lib/__tests__/hooks/useProvidedStateOrCreate.test.jsx +0 -56
  721. package/lib/__tests__/useSafeTimeout.test.jsx +0 -36
  722. package/lib/__tests__/utils/createSlots.test.jsx +0 -57
  723. package/lib/hooks/useDetails.jsx +0 -39
  724. package/lib/hooks/useOnOutsideClick.jsx +0 -61
  725. package/lib/hooks/useOverlay.jsx +0 -15
  726. package/lib/utils/create-slots.jsx +0 -65
  727. package/lib/utils/deprecate.jsx +0 -59
  728. package/lib/utils/isNumeric.jsx +0 -7
  729. package/lib/utils/ssr.jsx +0 -6
  730. package/lib/utils/test-deprecations.jsx +0 -20
  731. package/lib/utils/test-helpers.jsx +0 -8
  732. package/lib/utils/test-matchers.jsx +0 -100
  733. package/lib/utils/testing.jsx +0 -206
  734. package/tsconfig.base.json +0 -20
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const anchoredPosition_1 = require("../../behaviors/anchoredPosition");
2
+
3
+ var _anchoredPosition = require("../../behaviors/anchoredPosition");
4
+
4
5
  /*
5
6
 
6
7
  Note: In each test below, we check the calculation from getAnchoredPosition against exact
@@ -10,234 +11,380 @@ calculation from the inputs, which may help debugging in the event of a test fai
10
11
  */
11
12
  // The DOMRect constructor isn't available in JSDOM, so we improvise here.
12
13
  function makeDOMRect(x, y, width, height) {
13
- return {
14
- x,
15
- y,
16
- width,
17
- height,
18
- top: y,
19
- left: x,
20
- right: x + width,
21
- bottom: y + height,
22
- toJSON() {
23
- return this;
24
- }
25
- };
26
- }
27
- // Since Jest/JSDOM doesn't support layout, we can stub out getBoundingClientRect if we know the
14
+ return {
15
+ x,
16
+ y,
17
+ width,
18
+ height,
19
+ top: y,
20
+ left: x,
21
+ right: x + width,
22
+ bottom: y + height,
23
+
24
+ toJSON() {
25
+ return this;
26
+ }
27
+
28
+ };
29
+ } // Since Jest/JSDOM doesn't support layout, we can stub out getBoundingClientRect if we know the
28
30
  // correct dimensions. JSDOM will handle the rest of the DOM API used by getAnchoredPosition.
29
- function createVirtualDOM(parentRect, anchorRect, floatingRect, parentBorders = { top: 0, right: 0, bottom: 0, left: 0 }) {
30
- const parent = document.createElement('div');
31
- parent.style.overflow = 'hidden';
32
- parent.style.position = 'relative';
33
- parent.style.borderTopWidth = `${parentBorders.top}px`;
34
- parent.style.borderRightWidth = `${parentBorders.right}px`;
35
- parent.style.borderBottomWidth = `${parentBorders.bottom}px`;
36
- parent.style.borderLeftWidth = `${parentBorders.left}px`;
37
- parent.id = 'parent';
38
- // eslint-disable-next-line github/unescaped-html-literal
39
- parent.innerHTML = '<div id="float"></div><div id="anchor"></div>';
40
- const float = parent.querySelector('#float');
41
- const anchor = parent.querySelector('#anchor');
42
- anchor.getBoundingClientRect = () => anchorRect;
43
- parent.getBoundingClientRect = () => parentRect;
44
- float.getBoundingClientRect = () => floatingRect;
45
- return { float, parent, anchor };
31
+
32
+
33
+ function createVirtualDOM(parentRect, anchorRect, floatingRect, parentBorders = {
34
+ top: 0,
35
+ right: 0,
36
+ bottom: 0,
37
+ left: 0
38
+ }) {
39
+ const parent = document.createElement('div');
40
+ parent.style.overflow = 'hidden';
41
+ parent.style.position = 'relative';
42
+ parent.style.borderTopWidth = `${parentBorders.top}px`;
43
+ parent.style.borderRightWidth = `${parentBorders.right}px`;
44
+ parent.style.borderBottomWidth = `${parentBorders.bottom}px`;
45
+ parent.style.borderLeftWidth = `${parentBorders.left}px`;
46
+ parent.id = 'parent'; // eslint-disable-next-line github/unescaped-html-literal
47
+
48
+ parent.innerHTML = '<div id="float"></div><div id="anchor"></div>';
49
+ const float = parent.querySelector('#float');
50
+ const anchor = parent.querySelector('#anchor');
51
+
52
+ anchor.getBoundingClientRect = () => anchorRect;
53
+
54
+ parent.getBoundingClientRect = () => parentRect;
55
+
56
+ float.getBoundingClientRect = () => floatingRect;
57
+
58
+ return {
59
+ float,
60
+ parent,
61
+ anchor
62
+ };
46
63
  }
64
+
47
65
  describe('getAnchoredPosition', () => {
48
- it('returns the correct position in the default case with no overflow', () => {
49
- const anchorRect = makeDOMRect(300, 200, 50, 50);
50
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
51
- // eslint-disable-next-line github/unescaped-html-literal
52
- document.body.innerHTML = '<div id="float"></div><div id="anchor"></div>';
53
- const float = document.querySelector('#float');
54
- const anchor = document.querySelector('#anchor');
55
- float.getBoundingClientRect = () => floatingRect;
56
- anchor.getBoundingClientRect = () => anchorRect;
57
- document.body.getBoundingClientRect = () => makeDOMRect(0, 0, 1920, 0);
58
- Object.defineProperty(window, 'innerHeight', { get: () => 1080 });
59
- const settings = { anchorOffset: 4 };
60
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
61
- expect(top).toEqual(254);
62
- expect(left).toEqual(300);
63
- });
64
- it('returns the correct position in the default case with no overflow, inside a clipping parent', () => {
65
- const parentRect = makeDOMRect(20, 20, 500, 500);
66
- const anchorRect = makeDOMRect(300, 200, 50, 50);
67
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
68
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
69
- const settings = { anchorOffset: 4 };
70
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
71
- expect(top).toEqual(234);
72
- expect(left).toEqual(280);
73
- });
74
- it('returns the correct position for different outside side settings with no overflow', () => {
75
- const parentRect = makeDOMRect(20, 20, 500, 500);
76
- const anchorRect = makeDOMRect(300, 200, 50, 50);
77
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
78
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
79
- const settings = {};
80
- let top = 0;
81
- let left = 0;
82
- // should be the same calculation as the default settings test above
83
- settings.side = 'outside-bottom';
84
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
85
- expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
86
- expect(left).toEqual(280); // anchorRect.left - parentRect.left
87
- settings.side = 'outside-left';
88
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
89
- expect(top).toEqual(180); // anchorRect.top - parentRect.top
90
- expect(left).toEqual(176); // anchorRect.left - floatingRect.width - (settings.anchorOffset ?? 4) - parentRect.left
91
- settings.side = 'outside-right';
92
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
93
- expect(top).toEqual(180); // anchorRect.top - parentRect.top
94
- expect(left).toEqual(334); // anchorRect.left + anchorRect.width + (settings.anchorOffset ?? 4) - parentRect.left
95
- settings.side = 'outside-top';
96
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
97
- expect(top).toEqual(76); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
98
- expect(left).toEqual(280); // anchorRect.left - parentRect.left
99
- });
100
- it('returns the correct position for different inside side settings', () => {
101
- const parentRect = makeDOMRect(20, 20, 500, 500);
102
- const anchorRect = makeDOMRect(300, 200, 50, 50);
103
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
104
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
105
- const settings = {};
106
- let top = 0;
107
- let left = 0;
108
- settings.side = 'inside-bottom';
109
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
110
- // anchorRect.top + anchorRect.height - (settings.anchorOffset ?? 4) - floatingRect.height - parentRect.top
111
- expect(top).toEqual(126);
112
- // anchorRect.left + (settings.alignmentOffset ?? 4) - parentRect.left
113
- expect(left).toEqual(284);
114
- settings.side = 'inside-left';
115
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
116
- expect(top).toEqual(184); // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
117
- expect(left).toEqual(284); // anchorRect.left + (settings.anchorOffset ?? 4) - parentRect.left
118
- settings.side = 'inside-right';
119
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
120
- // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
121
- expect(top).toEqual(184);
122
- // anchorRect.left + anchorRect.width - (settings.anchorOffset ?? 4) - floatingRect.width - parentRect.left
123
- expect(left).toEqual(226);
124
- // almost the same as inside-left, with the exception of offsets
125
- settings.side = 'inside-top';
126
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
127
- expect(top).toEqual(184); // anchorRect.top + (settings.anchorOffset ?? 4) - parentRect.top
128
- expect(left).toEqual(284); // anchorRect.left + (settings.alignmentOffset ?? 4) - parentRect.left
129
- settings.side = 'inside-center';
130
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
131
- expect(top).toEqual(184); // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
132
- expect(left).toEqual(255); // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 - parentRect.left
133
- });
134
- it('returns the correct position inside centering along both axes', () => {
135
- const parentRect = makeDOMRect(20, 20, 500, 500);
136
- const anchorRect = makeDOMRect(300, 200, 50, 50);
137
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
138
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
139
- const settings = { side: 'inside-center', align: 'center' };
140
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
141
- expect(top).toEqual(155); // anchorRect.top + anchorRect.height / 2 - floatingRect.height / 2 - parentRect.top
142
- expect(left).toEqual(255); // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 - parentRect.left
143
- });
144
- it('returns the correct position for different alignment settings with no overflow', () => {
145
- const parentRect = makeDOMRect(20, 20, 500, 500);
146
- const anchorRect = makeDOMRect(300, 200, 50, 50);
147
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
148
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
149
- const settings = {};
150
- let top = 0;
151
- let left = 0;
152
- settings.align = 'start';
153
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
154
- expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
155
- expect(left).toEqual(280); // anchorRect.left + (settings.alignmentOffset ?? 0) - parentRect.left
156
- settings.align = 'center';
157
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
158
- // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
159
- expect(top).toEqual(234);
160
- // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 + (settings.anchorOffset ?? 0) - parentRect.left
161
- expect(left).toEqual(255);
162
- settings.align = 'end';
163
- ({ top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings));
164
- // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
165
- expect(top).toEqual(234);
166
- // anchorRect.left + anchorRect.width - floatingRect.width - (settings.alignmentOffset ?? 0) - parentRect.left
167
- expect(left).toEqual(230);
168
- });
169
- it('properly flips to the opposite side if the calculated position overflows along the same axis', () => {
170
- const parentRect = makeDOMRect(20, 20, 500, 500);
171
- const anchorRect = makeDOMRect(300, 400, 50, 50);
172
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
173
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
174
- const settings = {};
175
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
176
- expect(top).toEqual(276); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
177
- expect(left).toEqual(280); // anchorRect.left - parentRect.left
178
- });
179
- it('properly moves to an adjacent side if overflow happens along side edge and flipped edge', () => {
180
- const parentRect = makeDOMRect(20, 20, 500, 200);
181
- const anchorRect = makeDOMRect(300, 100, 50, 50);
182
- const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
183
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
184
- const settings = {};
185
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
186
- expect(top).toEqual(80); // anchorRect.top - parentRect.top
187
- expect(left).toEqual(334); // anchorRect.left + anchorRect.width + (settings.anchorOffset ?? 4) - parentRect.left
188
- });
189
- it('properly adjusts the position using an alignment offset if overflow happens along the alignment edge', () => {
190
- const parentRect = makeDOMRect(20, 20, 500, 500);
191
- const anchorRect = makeDOMRect(300, 200, 50, 50);
192
- const floatingRect = makeDOMRect(NaN, NaN, 400, 100);
193
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
194
- const settings = {};
195
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
196
- expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
197
- expect(left).toEqual(100); // parentRect.width - floatingRect.width
198
- });
199
- it('properly calculates the position that needs to be flipped and offset-adjusted', () => {
200
- const parentRect = makeDOMRect(20, 20, 500, 500);
201
- const anchorRect = makeDOMRect(300, 400, 50, 50);
202
- const floatingRect = makeDOMRect(NaN, NaN, 400, 100);
203
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
204
- const settings = {};
205
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
206
- expect(top).toEqual(276); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
207
- expect(left).toEqual(100); // parentRect.width - floatingRect.width
208
- });
209
- it('properly calculates the outside position with many simultaneous settings interactions (stress test)', () => {
210
- const parentRect = makeDOMRect(20, 20, 200, 500);
211
- const anchorRect = makeDOMRect(95, 295, 100, 200);
212
- const floatingRect = makeDOMRect(NaN, NaN, 175, 200);
213
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
214
- const settings = {
215
- side: 'outside-right',
216
- align: 'center',
217
- alignmentOffset: 10,
218
- anchorOffset: -10
219
- };
220
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
221
- // expect to try right, left, and bottom before ending on top
222
- expect(top).toEqual(85); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
223
- // expect center alignment to run against edge, so ignored. Also causes alignment offset to be ignored.
224
- expect(left).toEqual(25); // parentRect.width - floatingRect.width
225
- });
226
- it('properly calculates the inside position with many simultaneous settings interactions (stress test)', () => {
227
- const parentRect = makeDOMRect(20, 20, 500, 500);
228
- const anchorRect = makeDOMRect(100, 100, 300, 300);
229
- const floatingRect = makeDOMRect(NaN, NaN, 100, 200);
230
- const { float, anchor } = createVirtualDOM(parentRect, anchorRect, floatingRect);
231
- const settings = {
232
- side: 'inside-right',
233
- align: 'center',
234
- alignmentOffset: 10,
235
- anchorOffset: -10
236
- };
237
- const { top, left } = anchoredPosition_1.getAnchoredPosition(float, anchor, settings);
238
- // anchorRect.top + anchorRect.height / 2 - floatingRect.height / 2 + (settings.alignmentOffset ?? 4) - parentRect.top
239
- expect(top).toEqual(140);
240
- // anchorRect.left + anchorRect.width - floatingRect.width - (settings.anchorOffset ?? 4) - parentRect.left
241
- expect(left).toEqual(290);
66
+ it('returns the correct position in the default case with no overflow', () => {
67
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
68
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100); // eslint-disable-next-line github/unescaped-html-literal
69
+
70
+ document.body.innerHTML = '<div id="float"></div><div id="anchor"></div>';
71
+ const float = document.querySelector('#float');
72
+ const anchor = document.querySelector('#anchor');
73
+
74
+ float.getBoundingClientRect = () => floatingRect;
75
+
76
+ anchor.getBoundingClientRect = () => anchorRect;
77
+
78
+ document.body.getBoundingClientRect = () => makeDOMRect(0, 0, 1920, 0);
79
+
80
+ Object.defineProperty(window, 'innerHeight', {
81
+ get: () => 1080
242
82
  });
243
- });
83
+ const settings = {
84
+ anchorOffset: 4
85
+ };
86
+ const {
87
+ top,
88
+ left
89
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
90
+ expect(top).toEqual(254);
91
+ expect(left).toEqual(300);
92
+ });
93
+ it('returns the correct position in the default case with no overflow, inside a clipping parent', () => {
94
+ const parentRect = makeDOMRect(20, 20, 500, 500);
95
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
96
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
97
+ const {
98
+ float,
99
+ anchor
100
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
101
+ const settings = {
102
+ anchorOffset: 4
103
+ };
104
+ const {
105
+ top,
106
+ left
107
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
108
+ expect(top).toEqual(234);
109
+ expect(left).toEqual(280);
110
+ });
111
+ it('returns the correct position for different outside side settings with no overflow', () => {
112
+ const parentRect = makeDOMRect(20, 20, 500, 500);
113
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
114
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
115
+ const {
116
+ float,
117
+ anchor
118
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
119
+ const settings = {};
120
+ let top = 0;
121
+ let left = 0; // should be the same calculation as the default settings test above
122
+
123
+ settings.side = 'outside-bottom';
124
+ ({
125
+ top,
126
+ left
127
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
128
+ expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
129
+
130
+ expect(left).toEqual(280); // anchorRect.left - parentRect.left
131
+
132
+ settings.side = 'outside-left';
133
+ ({
134
+ top,
135
+ left
136
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
137
+ expect(top).toEqual(180); // anchorRect.top - parentRect.top
138
+
139
+ expect(left).toEqual(176); // anchorRect.left - floatingRect.width - (settings.anchorOffset ?? 4) - parentRect.left
140
+
141
+ settings.side = 'outside-right';
142
+ ({
143
+ top,
144
+ left
145
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
146
+ expect(top).toEqual(180); // anchorRect.top - parentRect.top
147
+
148
+ expect(left).toEqual(334); // anchorRect.left + anchorRect.width + (settings.anchorOffset ?? 4) - parentRect.left
149
+
150
+ settings.side = 'outside-top';
151
+ ({
152
+ top,
153
+ left
154
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
155
+ expect(top).toEqual(76); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
156
+
157
+ expect(left).toEqual(280); // anchorRect.left - parentRect.left
158
+ });
159
+ it('returns the correct position for different inside side settings', () => {
160
+ const parentRect = makeDOMRect(20, 20, 500, 500);
161
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
162
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
163
+ const {
164
+ float,
165
+ anchor
166
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
167
+ const settings = {};
168
+ let top = 0;
169
+ let left = 0;
170
+ settings.side = 'inside-bottom';
171
+ ({
172
+ top,
173
+ left
174
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings)); // anchorRect.top + anchorRect.height - (settings.anchorOffset ?? 4) - floatingRect.height - parentRect.top
175
+
176
+ expect(top).toEqual(126); // anchorRect.left + (settings.alignmentOffset ?? 4) - parentRect.left
177
+
178
+ expect(left).toEqual(284);
179
+ settings.side = 'inside-left';
180
+ ({
181
+ top,
182
+ left
183
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
184
+ expect(top).toEqual(184); // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
185
+
186
+ expect(left).toEqual(284); // anchorRect.left + (settings.anchorOffset ?? 4) - parentRect.left
187
+
188
+ settings.side = 'inside-right';
189
+ ({
190
+ top,
191
+ left
192
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings)); // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
193
+
194
+ expect(top).toEqual(184); // anchorRect.left + anchorRect.width - (settings.anchorOffset ?? 4) - floatingRect.width - parentRect.left
195
+
196
+ expect(left).toEqual(226); // almost the same as inside-left, with the exception of offsets
197
+
198
+ settings.side = 'inside-top';
199
+ ({
200
+ top,
201
+ left
202
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
203
+ expect(top).toEqual(184); // anchorRect.top + (settings.anchorOffset ?? 4) - parentRect.top
204
+
205
+ expect(left).toEqual(284); // anchorRect.left + (settings.alignmentOffset ?? 4) - parentRect.left
206
+
207
+ settings.side = 'inside-center';
208
+ ({
209
+ top,
210
+ left
211
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
212
+ expect(top).toEqual(184); // anchorRect.top + (settings.alignmentOffset ?? 4) - parentRect.top
213
+
214
+ expect(left).toEqual(255); // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 - parentRect.left
215
+ });
216
+ it('returns the correct position inside centering along both axes', () => {
217
+ const parentRect = makeDOMRect(20, 20, 500, 500);
218
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
219
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
220
+ const {
221
+ float,
222
+ anchor
223
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
224
+ const settings = {
225
+ side: 'inside-center',
226
+ align: 'center'
227
+ };
228
+ const {
229
+ top,
230
+ left
231
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
232
+ expect(top).toEqual(155); // anchorRect.top + anchorRect.height / 2 - floatingRect.height / 2 - parentRect.top
233
+
234
+ expect(left).toEqual(255); // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 - parentRect.left
235
+ });
236
+ it('returns the correct position for different alignment settings with no overflow', () => {
237
+ const parentRect = makeDOMRect(20, 20, 500, 500);
238
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
239
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
240
+ const {
241
+ float,
242
+ anchor
243
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
244
+ const settings = {};
245
+ let top = 0;
246
+ let left = 0;
247
+ settings.align = 'start';
248
+ ({
249
+ top,
250
+ left
251
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings));
252
+ expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
253
+
254
+ expect(left).toEqual(280); // anchorRect.left + (settings.alignmentOffset ?? 0) - parentRect.left
255
+
256
+ settings.align = 'center';
257
+ ({
258
+ top,
259
+ left
260
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings)); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
261
+
262
+ expect(top).toEqual(234); // anchorRect.left + anchorRect.width / 2 - floatingRect.width / 2 + (settings.anchorOffset ?? 0) - parentRect.left
263
+
264
+ expect(left).toEqual(255);
265
+ settings.align = 'end';
266
+ ({
267
+ top,
268
+ left
269
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings)); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
270
+
271
+ expect(top).toEqual(234); // anchorRect.left + anchorRect.width - floatingRect.width - (settings.alignmentOffset ?? 0) - parentRect.left
272
+
273
+ expect(left).toEqual(230);
274
+ });
275
+ it('properly flips to the opposite side if the calculated position overflows along the same axis', () => {
276
+ const parentRect = makeDOMRect(20, 20, 500, 500);
277
+ const anchorRect = makeDOMRect(300, 400, 50, 50);
278
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
279
+ const {
280
+ float,
281
+ anchor
282
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
283
+ const settings = {};
284
+ const {
285
+ top,
286
+ left
287
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
288
+ expect(top).toEqual(276); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
289
+
290
+ expect(left).toEqual(280); // anchorRect.left - parentRect.left
291
+ });
292
+ it('properly moves to an adjacent side if overflow happens along side edge and flipped edge', () => {
293
+ const parentRect = makeDOMRect(20, 20, 500, 200);
294
+ const anchorRect = makeDOMRect(300, 100, 50, 50);
295
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 100);
296
+ const {
297
+ float,
298
+ anchor
299
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
300
+ const settings = {};
301
+ const {
302
+ top,
303
+ left
304
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
305
+ expect(top).toEqual(80); // anchorRect.top - parentRect.top
306
+
307
+ expect(left).toEqual(334); // anchorRect.left + anchorRect.width + (settings.anchorOffset ?? 4) - parentRect.left
308
+ });
309
+ it('properly adjusts the position using an alignment offset if overflow happens along the alignment edge', () => {
310
+ const parentRect = makeDOMRect(20, 20, 500, 500);
311
+ const anchorRect = makeDOMRect(300, 200, 50, 50);
312
+ const floatingRect = makeDOMRect(NaN, NaN, 400, 100);
313
+ const {
314
+ float,
315
+ anchor
316
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
317
+ const settings = {};
318
+ const {
319
+ top,
320
+ left
321
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
322
+ expect(top).toEqual(234); // anchorRect.top + anchorRect.height + (settings.anchorOffset ?? 4) - parentRect.top
323
+
324
+ expect(left).toEqual(100); // parentRect.width - floatingRect.width
325
+ });
326
+ it('properly calculates the position that needs to be flipped and offset-adjusted', () => {
327
+ const parentRect = makeDOMRect(20, 20, 500, 500);
328
+ const anchorRect = makeDOMRect(300, 400, 50, 50);
329
+ const floatingRect = makeDOMRect(NaN, NaN, 400, 100);
330
+ const {
331
+ float,
332
+ anchor
333
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
334
+ const settings = {};
335
+ const {
336
+ top,
337
+ left
338
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings);
339
+ expect(top).toEqual(276); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
340
+
341
+ expect(left).toEqual(100); // parentRect.width - floatingRect.width
342
+ });
343
+ it('properly calculates the outside position with many simultaneous settings interactions (stress test)', () => {
344
+ const parentRect = makeDOMRect(20, 20, 200, 500);
345
+ const anchorRect = makeDOMRect(95, 295, 100, 200);
346
+ const floatingRect = makeDOMRect(NaN, NaN, 175, 200);
347
+ const {
348
+ float,
349
+ anchor
350
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
351
+ const settings = {
352
+ side: 'outside-right',
353
+ align: 'center',
354
+ alignmentOffset: 10,
355
+ anchorOffset: -10
356
+ };
357
+ const {
358
+ top,
359
+ left
360
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings); // expect to try right, left, and bottom before ending on top
361
+
362
+ expect(top).toEqual(85); // anchorRect.top - floatingRect.height - (settings.anchorOffset ?? 4) - parentRect.top
363
+ // expect center alignment to run against edge, so ignored. Also causes alignment offset to be ignored.
364
+
365
+ expect(left).toEqual(25); // parentRect.width - floatingRect.width
366
+ });
367
+ it('properly calculates the inside position with many simultaneous settings interactions (stress test)', () => {
368
+ const parentRect = makeDOMRect(20, 20, 500, 500);
369
+ const anchorRect = makeDOMRect(100, 100, 300, 300);
370
+ const floatingRect = makeDOMRect(NaN, NaN, 100, 200);
371
+ const {
372
+ float,
373
+ anchor
374
+ } = createVirtualDOM(parentRect, anchorRect, floatingRect);
375
+ const settings = {
376
+ side: 'inside-right',
377
+ align: 'center',
378
+ alignmentOffset: 10,
379
+ anchorOffset: -10
380
+ };
381
+ const {
382
+ top,
383
+ left
384
+ } = (0, _anchoredPosition.getAnchoredPosition)(float, anchor, settings); // anchorRect.top + anchorRect.height / 2 - floatingRect.height / 2 + (settings.alignmentOffset ?? 4) - parentRect.top
385
+
386
+ expect(top).toEqual(140); // anchorRect.left + anchorRect.width - floatingRect.width - (settings.anchorOffset ?? 4) - parentRect.left
387
+
388
+ expect(left).toEqual(290);
389
+ });
390
+ });