@react-md/core 6.5.0 → 6.5.1

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 (402) hide show
  1. package/dist/_utils.scss +2 -1
  2. package/dist/autocomplete/AutocompleteChip.js +2 -2
  3. package/dist/autocomplete/AutocompleteChip.js.map +1 -1
  4. package/dist/autocomplete/AutocompleteListboxChildren.js +1 -1
  5. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
  6. package/dist/autocomplete/useAutocomplete.js +4 -4
  7. package/dist/autocomplete/useAutocomplete.js.map +1 -1
  8. package/dist/autocomplete/utils.js +3 -3
  9. package/dist/autocomplete/utils.js.map +1 -1
  10. package/dist/box/styles.js +2 -2
  11. package/dist/box/styles.js.map +1 -1
  12. package/dist/button/AsyncButton.js +1 -1
  13. package/dist/button/AsyncButton.js.map +1 -1
  14. package/dist/chip/Chip.js +1 -1
  15. package/dist/chip/Chip.js.map +1 -1
  16. package/dist/cssUtils.d.ts +11 -6
  17. package/dist/cssUtils.js.map +1 -1
  18. package/dist/datetime/useTimeField.js +1 -1
  19. package/dist/datetime/useTimeField.js.map +1 -1
  20. package/dist/delegateEvent.js +9 -9
  21. package/dist/delegateEvent.js.map +1 -1
  22. package/dist/draggable/useDraggable.js +4 -4
  23. package/dist/draggable/useDraggable.js.map +1 -1
  24. package/dist/draggable/utils.js +1 -1
  25. package/dist/draggable/utils.js.map +1 -1
  26. package/dist/expansion-panel/ExpansionPanel.js +1 -1
  27. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  28. package/dist/expansion-panel/useExpansionPanels.js +1 -1
  29. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  30. package/dist/files/FileInput.js +1 -1
  31. package/dist/files/FileInput.js.map +1 -1
  32. package/dist/files/createAcceptFromExtensions.d.ts +5 -0
  33. package/dist/files/createAcceptFromExtensions.js +15 -0
  34. package/dist/files/createAcceptFromExtensions.js.map +1 -0
  35. package/dist/files/useFileUpload.js +45 -41
  36. package/dist/files/useFileUpload.js.map +1 -1
  37. package/dist/files/utils.js +14 -10
  38. package/dist/files/utils.js.map +1 -1
  39. package/dist/files/validation.js +7 -8
  40. package/dist/files/validation.js.map +1 -1
  41. package/dist/focus/useFocusContainer.js +1 -1
  42. package/dist/focus/useFocusContainer.js.map +1 -1
  43. package/dist/focus/utils.js +12 -7
  44. package/dist/focus/utils.js.map +1 -1
  45. package/dist/form/InputToggleIcon.js +5 -1
  46. package/dist/form/InputToggleIcon.js.map +1 -1
  47. package/dist/form/NativeSelect.js +1 -1
  48. package/dist/form/NativeSelect.js.map +1 -1
  49. package/dist/form/Select.js +5 -5
  50. package/dist/form/Select.js.map +1 -1
  51. package/dist/form/formConfig.js +1 -1
  52. package/dist/form/formConfig.js.map +1 -1
  53. package/dist/form/inputToggleStyles.js +7 -1
  54. package/dist/form/inputToggleStyles.js.map +1 -1
  55. package/dist/form/selectUtils.js +2 -2
  56. package/dist/form/selectUtils.js.map +1 -1
  57. package/dist/form/useCombobox.js +1 -0
  58. package/dist/form/useCombobox.js.map +1 -1
  59. package/dist/form/useFormReset.js +2 -2
  60. package/dist/form/useFormReset.js.map +1 -1
  61. package/dist/form/useNumberField.js +1 -1
  62. package/dist/form/useNumberField.js.map +1 -1
  63. package/dist/form/useResizingTextArea.js +4 -4
  64. package/dist/form/useResizingTextArea.js.map +1 -1
  65. package/dist/form/useSelectCombobox.js +1 -1
  66. package/dist/form/useSelectCombobox.js.map +1 -1
  67. package/dist/form/validation.js +1 -1
  68. package/dist/form/validation.js.map +1 -1
  69. package/dist/hoverMode/useHoverMode.js +8 -8
  70. package/dist/hoverMode/useHoverMode.js.map +1 -1
  71. package/dist/hoverMode/useHoverModeProvider.js +3 -3
  72. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  73. package/dist/icon/config.js +3 -3
  74. package/dist/icon/config.js.map +1 -1
  75. package/dist/icon/materialConfig.js +1 -1
  76. package/dist/icon/materialConfig.js.map +1 -1
  77. package/dist/interaction/UserInteractionModeProvider.js +11 -10
  78. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  79. package/dist/interaction/utils.js +7 -3
  80. package/dist/interaction/utils.js.map +1 -1
  81. package/dist/layout/useExpandableLayout.js +3 -4
  82. package/dist/layout/useExpandableLayout.js.map +1 -1
  83. package/dist/layout/useMainTabIndex.js +1 -1
  84. package/dist/layout/useMainTabIndex.js.map +1 -1
  85. package/dist/list/ListItem.js +1 -1
  86. package/dist/list/ListItem.js.map +1 -1
  87. package/dist/media-queries/AppSizeProvider.js +1 -1
  88. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  89. package/dist/media-queries/config.js +2 -2
  90. package/dist/media-queries/config.js.map +1 -1
  91. package/dist/media-queries/useMediaQuery.js +3 -3
  92. package/dist/media-queries/useMediaQuery.js.map +1 -1
  93. package/dist/menu/Menu.js +4 -4
  94. package/dist/menu/Menu.js.map +1 -1
  95. package/dist/menu/MenuItemButton.js +1 -1
  96. package/dist/menu/MenuItemButton.js.map +1 -1
  97. package/dist/menu/MenuItemFileInput.js +1 -1
  98. package/dist/menu/MenuItemFileInput.js.map +1 -1
  99. package/dist/menu/MenuWidget.js +2 -2
  100. package/dist/menu/MenuWidget.js.map +1 -1
  101. package/dist/movement/findMatchIndex.js +2 -2
  102. package/dist/movement/findMatchIndex.js.map +1 -1
  103. package/dist/movement/useKeyboardMovementProvider.js +2 -2
  104. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  105. package/dist/movement/utils.js +12 -10
  106. package/dist/movement/utils.js.map +1 -1
  107. package/dist/navigation/getTableOfContentsHeadings.js +4 -3
  108. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
  109. package/dist/navigation/useActiveHeadingId.js +9 -9
  110. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  111. package/dist/navigation/useTableOfContentsHeadings.js +1 -1
  112. package/dist/navigation/useTableOfContentsHeadings.js.map +1 -1
  113. package/dist/navigation/utils.js +6 -5
  114. package/dist/navigation/utils.js.map +1 -1
  115. package/dist/portal/PortalContainerProvider.js +5 -3
  116. package/dist/portal/PortalContainerProvider.js.map +1 -1
  117. package/dist/positioning/getFixedPosition.js +2 -4
  118. package/dist/positioning/getFixedPosition.js.map +1 -1
  119. package/dist/positioning/useFixedPositioning.js +2 -2
  120. package/dist/positioning/useFixedPositioning.js.map +1 -1
  121. package/dist/positioning/utils.js +3 -3
  122. package/dist/positioning/utils.js.map +1 -1
  123. package/dist/scroll/getScrollbarWidth.js +4 -4
  124. package/dist/scroll/getScrollbarWidth.js.map +1 -1
  125. package/dist/searching/fuzzy.js +3 -2
  126. package/dist/searching/fuzzy.js.map +1 -1
  127. package/dist/searching/toSearchQuery.js +1 -1
  128. package/dist/searching/toSearchQuery.js.map +1 -1
  129. package/dist/searching/utils.js +1 -1
  130. package/dist/searching/utils.js.map +1 -1
  131. package/dist/snackbar/Toast.js +1 -1
  132. package/dist/snackbar/Toast.js.map +1 -1
  133. package/dist/snackbar/ToastContent.js +2 -2
  134. package/dist/snackbar/ToastContent.js.map +1 -1
  135. package/dist/snackbar/ToastManager.d.ts +1 -1
  136. package/dist/snackbar/ToastManager.js +11 -11
  137. package/dist/snackbar/ToastManager.js.map +1 -1
  138. package/dist/spinbutton/useSpinButton.js +1 -1
  139. package/dist/spinbutton/useSpinButton.js.map +1 -1
  140. package/dist/spinbutton/utils/deselectNode.js +1 -1
  141. package/dist/spinbutton/utils/deselectNode.js.map +1 -1
  142. package/dist/spinbutton/utils/resolveInputEvent.js +1 -1
  143. package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -1
  144. package/dist/spinbutton/utils/selectNode.js +1 -1
  145. package/dist/spinbutton/utils/selectNode.js.map +1 -1
  146. package/dist/storage/useStorage.js +8 -3
  147. package/dist/storage/useStorage.js.map +1 -1
  148. package/dist/table/useStickyTableSection.js +1 -1
  149. package/dist/table/useStickyTableSection.js.map +1 -1
  150. package/dist/tabs/TabList.js +2 -2
  151. package/dist/tabs/TabList.js.map +1 -1
  152. package/dist/tabs/useMaxTabPanelHeight.js +4 -3
  153. package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
  154. package/dist/tabs/useTabList.js +1 -1
  155. package/dist/tabs/useTabList.js.map +1 -1
  156. package/dist/test-utils/jest-globals/match-media.d.ts +1 -1
  157. package/dist/test-utils/jest-globals/match-media.js +1 -1
  158. package/dist/test-utils/jest-globals/match-media.js.map +1 -1
  159. package/dist/test-utils/jest-globals/timers.js +1 -1
  160. package/dist/test-utils/jest-globals/timers.js.map +1 -1
  161. package/dist/test-utils/jest-globals/uploadMenuItemFileInput.js +1 -1
  162. package/dist/test-utils/jest-globals/uploadMenuItemFileInput.js.map +1 -1
  163. package/dist/test-utils/mocks/ResizeObserver.js +2 -2
  164. package/dist/test-utils/mocks/ResizeObserver.js.map +1 -1
  165. package/dist/test-utils/polyfills/IntersectionObserver.js +2 -2
  166. package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -1
  167. package/dist/test-utils/polyfills/ResizeObserver.js +2 -2
  168. package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -1
  169. package/dist/test-utils/polyfills/TextDecoder.js +2 -2
  170. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  171. package/dist/test-utils/polyfills/TextEncoder.js +2 -2
  172. package/dist/test-utils/polyfills/TextEncoder.js.map +1 -1
  173. package/dist/test-utils/polyfills/matchMedia.js +2 -2
  174. package/dist/test-utils/polyfills/matchMedia.js.map +1 -1
  175. package/dist/test-utils/polyfills/offsetParent.js +2 -2
  176. package/dist/test-utils/polyfills/offsetParent.js.map +1 -1
  177. package/dist/test-utils/polyfills/scrollIntoView.js +1 -1
  178. package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -1
  179. package/dist/test-utils/queries/select.js +2 -2
  180. package/dist/test-utils/queries/select.js.map +1 -1
  181. package/dist/test-utils/queries/slider.js +1 -1
  182. package/dist/test-utils/queries/slider.js.map +1 -1
  183. package/dist/test-utils/utils/createFileList.js +2 -0
  184. package/dist/test-utils/utils/createFileList.js.map +1 -1
  185. package/dist/test-utils/utils/createMatchMediaSpy.d.ts +1 -1
  186. package/dist/test-utils/utils/createMatchMediaSpy.js +3 -3
  187. package/dist/test-utils/utils/createMatchMediaSpy.js.map +1 -1
  188. package/dist/test-utils/vitest/match-media.d.ts +1 -1
  189. package/dist/test-utils/vitest/match-media.js +1 -1
  190. package/dist/test-utils/vitest/match-media.js.map +1 -1
  191. package/dist/test-utils/vitest/timers.js +1 -1
  192. package/dist/test-utils/vitest/timers.js.map +1 -1
  193. package/dist/test-utils/vitest/uploadMenuItemFileInput.js +1 -1
  194. package/dist/test-utils/vitest/uploadMenuItemFileInput.js.map +1 -1
  195. package/dist/theme/ThemeProvider.js +2 -2
  196. package/dist/theme/ThemeProvider.js.map +1 -1
  197. package/dist/theme/getDerivedTheme.js +1 -1
  198. package/dist/theme/getDerivedTheme.js.map +1 -1
  199. package/dist/theme/useCSSVariables.js +5 -5
  200. package/dist/theme/useCSSVariables.js.map +1 -1
  201. package/dist/theme/useColorSchemeMetaTag.js +2 -2
  202. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  203. package/dist/theme/useInlineCSSVariables.js +4 -3
  204. package/dist/theme/useInlineCSSVariables.js.map +1 -1
  205. package/dist/theme/utils.js +8 -8
  206. package/dist/theme/utils.js.map +1 -1
  207. package/dist/tooltip/useTooltip.js +7 -7
  208. package/dist/tooltip/useTooltip.js.map +1 -1
  209. package/dist/tooltip/useTooltipPosition.js +1 -1
  210. package/dist/tooltip/useTooltipPosition.js.map +1 -1
  211. package/dist/transition/useCarousel.js +2 -2
  212. package/dist/transition/useCarousel.js.map +1 -1
  213. package/dist/transition/useCollapseTransition.js +1 -1
  214. package/dist/transition/useCollapseTransition.js.map +1 -1
  215. package/dist/transition/useSkeletonPlaceholder.js +4 -4
  216. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  217. package/dist/transition/useTransition.js +2 -2
  218. package/dist/transition/useTransition.js.map +1 -1
  219. package/dist/transition/utils.js +5 -5
  220. package/dist/transition/utils.js.map +1 -1
  221. package/dist/tree/TreeItem.js +1 -1
  222. package/dist/tree/TreeItem.js.map +1 -1
  223. package/dist/tree/useTreeItems.js +7 -5
  224. package/dist/tree/useTreeItems.js.map +1 -1
  225. package/dist/tree/useTreeMovement.js +1 -1
  226. package/dist/tree/useTreeMovement.js.map +1 -1
  227. package/dist/tree/utils.js +6 -9
  228. package/dist/tree/utils.js.map +1 -1
  229. package/dist/typography/HighlightText.js +2 -1
  230. package/dist/typography/HighlightText.js.map +1 -1
  231. package/dist/typography/SrOnly.js +7 -1
  232. package/dist/typography/SrOnly.js.map +1 -1
  233. package/dist/useDebouncedFunction.js +4 -4
  234. package/dist/useDebouncedFunction.js.map +1 -1
  235. package/dist/useDropzone.js +9 -9
  236. package/dist/useDropzone.js.map +1 -1
  237. package/dist/useEnsuredState.js +5 -5
  238. package/dist/useEnsuredState.js.map +1 -1
  239. package/dist/useIntersectionObserver.js +3 -3
  240. package/dist/useIntersectionObserver.js.map +1 -1
  241. package/dist/useIsomorphicLayoutEffect.js +1 -1
  242. package/dist/useIsomorphicLayoutEffect.js.map +1 -1
  243. package/dist/useOrientation.js +1 -1
  244. package/dist/useOrientation.js.map +1 -1
  245. package/dist/useReadonlySet.js +1 -1
  246. package/dist/useReadonlySet.js.map +1 -1
  247. package/dist/useResizeListener.js +2 -2
  248. package/dist/useResizeListener.js.map +1 -1
  249. package/dist/useResizeObserver.js +3 -4
  250. package/dist/useResizeObserver.js.map +1 -1
  251. package/dist/useThrottledFunction.js +3 -3
  252. package/dist/useThrottledFunction.js.map +1 -1
  253. package/dist/useWindowSize.js +1 -1
  254. package/dist/useWindowSize.js.map +1 -1
  255. package/dist/utils/alphaNumericSort.js +3 -1
  256. package/dist/utils/alphaNumericSort.js.map +1 -1
  257. package/dist/utils/bem.js +9 -12
  258. package/dist/utils/bem.js.map +1 -1
  259. package/dist/utils/getNumberOfDigits.js +1 -0
  260. package/dist/utils/getNumberOfDigits.js.map +1 -1
  261. package/dist/utils/getRangeDefaultValue.js +1 -1
  262. package/dist/utils/getRangeDefaultValue.js.map +1 -1
  263. package/dist/utils/nearest.js +2 -2
  264. package/dist/utils/nearest.js.map +1 -1
  265. package/dist/utils/parseCssLengthUnit.js +3 -3
  266. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  267. package/dist/utils/trigonometry.js +1 -1
  268. package/dist/utils/trigonometry.js.map +1 -1
  269. package/package.json +3 -1
  270. package/src/autocomplete/AutocompleteChip.tsx +2 -2
  271. package/src/autocomplete/AutocompleteListboxChildren.tsx +1 -1
  272. package/src/autocomplete/useAutocomplete.ts +4 -4
  273. package/src/autocomplete/utils.ts +3 -3
  274. package/src/box/styles.ts +2 -2
  275. package/src/button/AsyncButton.tsx +1 -3
  276. package/src/chip/Chip.tsx +1 -2
  277. package/src/cssUtils.ts +12 -6
  278. package/src/datetime/useTimeField.ts +1 -1
  279. package/src/delegateEvent.ts +9 -9
  280. package/src/draggable/useDraggable.ts +4 -4
  281. package/src/draggable/utils.ts +1 -1
  282. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  283. package/src/expansion-panel/useExpansionPanels.ts +1 -1
  284. package/src/files/FileInput.tsx +1 -1
  285. package/src/files/createAcceptFromExtensions.ts +18 -0
  286. package/src/files/useFileUpload.ts +36 -37
  287. package/src/files/utils.ts +15 -11
  288. package/src/files/validation.ts +7 -9
  289. package/src/focus/useFocusContainer.ts +1 -1
  290. package/src/focus/utils.ts +11 -6
  291. package/src/form/InputToggleIcon.tsx +5 -5
  292. package/src/form/NativeSelect.tsx +1 -1
  293. package/src/form/Select.tsx +5 -5
  294. package/src/form/formConfig.ts +1 -1
  295. package/src/form/inputToggleStyles.ts +9 -4
  296. package/src/form/selectUtils.ts +2 -2
  297. package/src/form/useCombobox.ts +1 -0
  298. package/src/form/useFormReset.ts +2 -2
  299. package/src/form/useNumberField.ts +1 -1
  300. package/src/form/useResizingTextArea.ts +5 -5
  301. package/src/form/useSelectCombobox.ts +1 -4
  302. package/src/form/validation.ts +1 -1
  303. package/src/hoverMode/useHoverMode.ts +9 -9
  304. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  305. package/src/icon/config.tsx +3 -3
  306. package/src/icon/materialConfig.ts +1 -1
  307. package/src/interaction/UserInteractionModeProvider.tsx +11 -10
  308. package/src/interaction/utils.ts +3 -3
  309. package/src/layout/useExpandableLayout.ts +3 -4
  310. package/src/layout/useMainTabIndex.ts +1 -1
  311. package/src/list/ListItem.tsx +1 -1
  312. package/src/media-queries/AppSizeProvider.tsx +1 -1
  313. package/src/media-queries/config.ts +2 -2
  314. package/src/media-queries/useMediaQuery.ts +3 -3
  315. package/src/menu/Menu.tsx +4 -4
  316. package/src/menu/MenuItemButton.tsx +1 -1
  317. package/src/menu/MenuItemFileInput.tsx +1 -1
  318. package/src/menu/MenuWidget.tsx +6 -4
  319. package/src/movement/findMatchIndex.ts +2 -2
  320. package/src/movement/useKeyboardMovementProvider.ts +2 -2
  321. package/src/movement/utils.ts +15 -14
  322. package/src/navigation/getTableOfContentsHeadings.ts +4 -3
  323. package/src/navigation/useActiveHeadingId.ts +8 -8
  324. package/src/navigation/useTableOfContentsHeadings.ts +1 -1
  325. package/src/navigation/utils.ts +6 -5
  326. package/src/portal/PortalContainerProvider.tsx +5 -3
  327. package/src/positioning/getFixedPosition.ts +9 -6
  328. package/src/positioning/useFixedPositioning.ts +2 -2
  329. package/src/positioning/utils.ts +3 -3
  330. package/src/scroll/getScrollbarWidth.ts +4 -4
  331. package/src/searching/fuzzy.ts +7 -3
  332. package/src/searching/toSearchQuery.ts +1 -1
  333. package/src/searching/utils.ts +1 -1
  334. package/src/snackbar/Toast.tsx +1 -1
  335. package/src/snackbar/ToastContent.tsx +2 -2
  336. package/src/snackbar/ToastManager.ts +11 -12
  337. package/src/spinbutton/useSpinButton.ts +1 -1
  338. package/src/spinbutton/utils/deselectNode.ts +1 -1
  339. package/src/spinbutton/utils/resolveInputEvent.ts +1 -1
  340. package/src/spinbutton/utils/selectNode.ts +1 -1
  341. package/src/storage/useStorage.ts +7 -2
  342. package/src/table/useStickyTableSection.tsx +1 -1
  343. package/src/tabs/TabList.tsx +2 -2
  344. package/src/tabs/useMaxTabPanelHeight.ts +6 -3
  345. package/src/tabs/useTabList.ts +2 -2
  346. package/src/test-utils/jest-globals/match-media.ts +5 -2
  347. package/src/test-utils/jest-globals/timers.ts +1 -1
  348. package/src/test-utils/jest-globals/uploadMenuItemFileInput.ts +1 -1
  349. package/src/test-utils/mocks/ResizeObserver.ts +2 -2
  350. package/src/test-utils/polyfills/IntersectionObserver.ts +2 -2
  351. package/src/test-utils/polyfills/ResizeObserver.ts +2 -2
  352. package/src/test-utils/polyfills/TextDecoder.ts +2 -2
  353. package/src/test-utils/polyfills/TextEncoder.ts +2 -2
  354. package/src/test-utils/polyfills/matchMedia.ts +5 -2
  355. package/src/test-utils/polyfills/offsetParent.ts +2 -2
  356. package/src/test-utils/polyfills/scrollIntoView.ts +1 -1
  357. package/src/test-utils/queries/select.ts +2 -2
  358. package/src/test-utils/queries/slider.ts +1 -1
  359. package/src/test-utils/utils/createFileList.ts +2 -0
  360. package/src/test-utils/utils/createMatchMediaSpy.ts +4 -4
  361. package/src/test-utils/vitest/match-media.ts +2 -2
  362. package/src/test-utils/vitest/timers.ts +1 -1
  363. package/src/test-utils/vitest/uploadMenuItemFileInput.ts +1 -1
  364. package/src/theme/ThemeProvider.tsx +2 -2
  365. package/src/theme/getDerivedTheme.ts +1 -1
  366. package/src/theme/useCSSVariables.ts +5 -5
  367. package/src/theme/useColorSchemeMetaTag.ts +2 -2
  368. package/src/theme/useInlineCSSVariables.ts +6 -7
  369. package/src/theme/utils.ts +8 -8
  370. package/src/tooltip/useTooltip.ts +7 -7
  371. package/src/tooltip/useTooltipPosition.ts +1 -1
  372. package/src/transition/useCarousel.ts +2 -2
  373. package/src/transition/useCollapseTransition.ts +1 -1
  374. package/src/transition/useSkeletonPlaceholder.ts +4 -4
  375. package/src/transition/useTransition.ts +2 -2
  376. package/src/transition/utils.ts +5 -5
  377. package/src/tree/TreeItem.tsx +1 -1
  378. package/src/tree/useTreeItems.ts +5 -5
  379. package/src/tree/useTreeMovement.ts +1 -1
  380. package/src/tree/utils.ts +9 -9
  381. package/src/typography/HighlightText.tsx +4 -3
  382. package/src/typography/SrOnly.tsx +9 -2
  383. package/src/useDebouncedFunction.ts +5 -5
  384. package/src/useDropzone.ts +10 -10
  385. package/src/useEnsuredState.ts +5 -5
  386. package/src/useIntersectionObserver.ts +3 -3
  387. package/src/useIsomorphicLayoutEffect.ts +3 -3
  388. package/src/useOrientation.ts +1 -1
  389. package/src/useReadonlySet.ts +3 -1
  390. package/src/useResizeListener.ts +2 -2
  391. package/src/useResizeObserver.ts +3 -4
  392. package/src/useThrottledFunction.ts +4 -4
  393. package/src/useWindowSize.ts +1 -1
  394. package/src/utils/alphaNumericSort.ts +1 -1
  395. package/src/utils/bem.ts +15 -16
  396. package/src/utils/getNumberOfDigits.ts +1 -0
  397. package/src/utils/getRangeDefaultValue.ts +1 -1
  398. package/src/utils/nearest.ts +5 -2
  399. package/src/utils/parseCssLengthUnit.ts +5 -4
  400. package/src/utils/trigonometry.ts +1 -1
  401. package/dist/form/defaultGetSelectedOptionChildren.d.ts +0 -1
  402. package/dist/form/getSelectedOptionChildren.d.ts +0 -1
@@ -86,6 +86,7 @@ export interface UserInteractionModeProviderProps {
86
86
  export function UserInteractionModeProvider(
87
87
  props: UserInteractionModeProviderProps
88
88
  ): ReactElement {
89
+ // eslint-disable-next-line react/prop-types
89
90
  const { children, now = DATE_NOW } =
90
91
  props as UserInteractionModeProviderProps & {
91
92
  now?: () => number;
@@ -172,26 +173,26 @@ export function UserInteractionModeProvider(
172
173
 
173
174
  const className = `rmd-${mode}-mode`;
174
175
  document.body.classList.add(className);
175
- window.addEventListener("touchstart", handleTouchStart, true);
176
+ globalThis.addEventListener("touchstart", handleTouchStart, true);
176
177
  if (mode === "mouse") {
177
- window.addEventListener("keydown", enableKeyboardMode, true);
178
+ globalThis.addEventListener("keydown", enableKeyboardMode, true);
178
179
  } else if (mode === "keyboard") {
179
- window.addEventListener("mousedown", enableMouseMode, true);
180
+ globalThis.addEventListener("mousedown", enableMouseMode, true);
180
181
  } else {
181
- window.addEventListener("mousemove", handleMouseMove, true);
182
- window.addEventListener("contextmenu", handleContextMenu, true);
182
+ globalThis.addEventListener("mousemove", handleMouseMove, true);
183
+ globalThis.addEventListener("contextmenu", handleContextMenu, true);
183
184
  }
184
185
 
185
186
  return () => {
186
187
  document.body.classList.remove(className);
187
- window.removeEventListener("touchstart", handleTouchStart, true);
188
+ globalThis.removeEventListener("touchstart", handleTouchStart, true);
188
189
  if (mode === "mouse") {
189
- window.removeEventListener("keydown", enableKeyboardMode, true);
190
+ globalThis.removeEventListener("keydown", enableKeyboardMode, true);
190
191
  } else if (mode === "keyboard") {
191
- window.removeEventListener("mousedown", enableMouseMode, true);
192
+ globalThis.removeEventListener("mousedown", enableMouseMode, true);
192
193
  } else {
193
- window.removeEventListener("mousemove", handleMouseMove, true);
194
- window.removeEventListener("contextmenu", handleContextMenu, true);
194
+ globalThis.removeEventListener("mousemove", handleMouseMove, true);
195
+ globalThis.removeEventListener("contextmenu", handleContextMenu, true);
195
196
  }
196
197
  };
197
198
  }, [mode, now]);
@@ -92,7 +92,7 @@ export function releaseRipple(
92
92
  return state;
93
93
  }
94
94
 
95
- const ripples = state.ripples.slice();
95
+ const ripples = [...state.ripples];
96
96
  const ripple = ripples[i];
97
97
  ripples[i] = {
98
98
  ...ripple,
@@ -115,12 +115,12 @@ export function updateRipplesState(
115
115
  ): ElementInteractionState {
116
116
  const { type, ripple, state, holding } = options;
117
117
 
118
- const rippleIndex = state.ripples.findIndex((r) => r === ripple);
118
+ const rippleIndex = state.ripples.indexOf(ripple);
119
119
  if (rippleIndex === -1) {
120
120
  return state;
121
121
  }
122
122
 
123
- const ripples = state.ripples.slice();
123
+ const ripples = [...state.ripples];
124
124
  if (type === "exited") {
125
125
  ripples.splice(rippleIndex, 1);
126
126
  } else {
@@ -283,15 +283,14 @@ export function useExpandableLayout(
283
283
  query = temporaryUntil;
284
284
  }
285
285
 
286
- const timeout = window.setTimeout(() => {
286
+ const timeout = globalThis.setTimeout(() => {
287
287
  let found = false;
288
288
  for (let i = 0; i < document.styleSheets.length; i++) {
289
289
  const sheet = document.styleSheets[i];
290
290
 
291
291
  try {
292
292
  const rules = sheet.cssRules;
293
- for (let j = 0; j < rules.length; j++) {
294
- const rule = rules[j];
293
+ for (const rule of rules) {
295
294
  if (
296
295
  rule.cssText.includes(".rmd-layout") &&
297
296
  rule.cssText.includes(`@media ${query}`)
@@ -318,7 +317,7 @@ export function useExpandableLayout(
318
317
  }, 3000);
319
318
 
320
319
  return () => {
321
- window.clearTimeout(timeout);
320
+ globalThis.clearTimeout(timeout);
322
321
  };
323
322
  }, [temporaryUntil]);
324
323
 
@@ -10,7 +10,7 @@ import { useUserInteractionMode } from "../interaction/UserInteractionModeProvid
10
10
  */
11
11
  export function useMainTabIndex(tabIndex?: number): number | undefined {
12
12
  const keyboard = useUserInteractionMode() === "keyboard";
13
- if (keyboard && typeof tabIndex === "undefined") {
13
+ if (keyboard && tabIndex === undefined) {
14
14
  // eslint-disable-next-line no-param-reassign
15
15
  tabIndex = -1;
16
16
  }
@@ -159,7 +159,7 @@ export const ListItem = forwardRef<HTMLLIElement, ListItemProps>(
159
159
  } = props;
160
160
 
161
161
  let tabIndex = propTabIndex;
162
- if (!presentational && typeof tabIndex === "undefined") {
162
+ if (!presentational && tabIndex === undefined) {
163
163
  tabIndex = disabled ? -1 : 0;
164
164
  }
165
165
 
@@ -137,7 +137,7 @@ export function AppSizeProvider(props: AppSizeProviderProps): ReactElement {
137
137
  );
138
138
 
139
139
  let value = appSize;
140
- if (ssr || typeof window === "undefined") {
140
+ if (ssr || globalThis.window === undefined) {
141
141
  value = {
142
142
  __root: true,
143
143
  ...ssrSize,
@@ -28,13 +28,13 @@ export function configureMediaQueries(
28
28
  queries: Readonly<Partial<MediaQueryConfig>>
29
29
  ): void {
30
30
  if (process.env.NODE_ENV !== "production") {
31
- Object.entries(queries).forEach(([name, value]) => {
31
+ for (const [name, value] of Object.entries(queries)) {
32
32
  if (!(name in MEDIA_QUERY_CONFIG)) {
33
33
  throw new Error(`${name} is an invalid react-md media query.`);
34
34
  }
35
35
 
36
36
  MEDIA_QUERY_CONFIG[name as keyof MediaQueryConfig] = value;
37
- });
37
+ }
38
38
  } else {
39
39
  Object.assign(MEDIA_QUERY_CONFIG, queries);
40
40
  }
@@ -28,11 +28,11 @@ import { useSsr } from "../SsrProvider.js";
28
28
  export function useMediaQuery(query: string, disabled = false): boolean {
29
29
  const ssr = useSsr();
30
30
  const [matches, setMatches] = useState(() => {
31
- if (typeof window === "undefined" || disabled || ssr) {
31
+ if (globalThis.window === undefined || disabled || ssr) {
32
32
  return false;
33
33
  }
34
34
 
35
- return window.matchMedia(query).matches;
35
+ return globalThis.matchMedia(query).matches;
36
36
  });
37
37
 
38
38
  useEffect(() => {
@@ -40,7 +40,7 @@ export function useMediaQuery(query: string, disabled = false): boolean {
40
40
  return;
41
41
  }
42
42
 
43
- const result = window.matchMedia(query);
43
+ const result = globalThis.matchMedia(query);
44
44
  setMatches(result.matches);
45
45
 
46
46
  const updater = ({ matches }: MediaQueryListEvent): void => {
package/src/menu/Menu.tsx CHANGED
@@ -543,13 +543,13 @@ export const Menu = forwardRef<HTMLDivElement, LabelRequiredForA11y<MenuProps>>(
543
543
 
544
544
  // wait an animation frame so the initial click event that caused the menu
545
545
  // to become visible does not immediately close the menu
546
- const frame = window.requestAnimationFrame(() => {
547
- window.addEventListener("click", callback);
546
+ const frame = globalThis.requestAnimationFrame(() => {
547
+ globalThis.addEventListener("click", callback);
548
548
  });
549
549
 
550
550
  return () => {
551
- window.cancelAnimationFrame(frame);
552
- window.removeEventListener("click", callback);
551
+ globalThis.cancelAnimationFrame(frame);
552
+ globalThis.removeEventListener("click", callback);
553
553
  };
554
554
  }, [disableHoverMode, role, visible]);
555
555
  useIsomorphicLayoutEffect(() => {
@@ -46,7 +46,7 @@ export const MenuItemButton = forwardRef<HTMLLIElement, MenuItemButtonProps>(
46
46
  onMouseLeave = noop,
47
47
  rightAddon: propRightAddon,
48
48
  iconRotatorProps,
49
- disableDropdownIcon = typeof propRightAddon !== "undefined",
49
+ disableDropdownIcon = propRightAddon !== undefined,
50
50
  ...remaining
51
51
  } = props;
52
52
  const { disabled } = props;
@@ -114,7 +114,7 @@ export const MenuItemFileInput = forwardRef<
114
114
 
115
115
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
116
116
  // @ts-expect-error
117
- input.onchange = onChange;
117
+ input.addEventListener("change", onChange);
118
118
  input.click();
119
119
  input = null;
120
120
  }}
@@ -92,7 +92,7 @@ export const MenuWidget = forwardRef<HTMLDivElement, MenuWidgetProps>(
92
92
  return;
93
93
  }
94
94
 
95
- window.cancelAnimationFrame(sheetBlurredFame.current);
95
+ globalThis.cancelAnimationFrame(sheetBlurredFame.current);
96
96
  setSheetMenuFocused(true);
97
97
  },
98
98
  onKeyDown,
@@ -127,9 +127,11 @@ export const MenuWidget = forwardRef<HTMLDivElement, MenuWidgetProps>(
127
127
  return;
128
128
  }
129
129
 
130
- sheetBlurredFame.current = window.requestAnimationFrame(() => {
131
- setSheetMenuFocused(false);
132
- });
130
+ sheetBlurredFame.current = globalThis.requestAnimationFrame(
131
+ () => {
132
+ setSheetMenuFocused(false);
133
+ }
134
+ );
133
135
  }}
134
136
  >
135
137
  <List
@@ -36,7 +36,7 @@ export interface MatchInRangeOptions extends BaseOptions {
36
36
  */
37
37
  export function findMatchInRange(options: MatchInRangeOptions): number {
38
38
  const { values, startIndex, endIndex } = options;
39
- if (!values.length) {
39
+ if (values.length === 0) {
40
40
  return -1;
41
41
  }
42
42
 
@@ -76,7 +76,7 @@ export interface MatchIndexOptions extends BaseOptions {
76
76
  export function findMatchIndex(options: MatchIndexOptions): number {
77
77
  const { value, values, startIndex, isSelfMatchable = true } = options;
78
78
  // this was added to support comboboxes when there are no options available
79
- if (!values.length) {
79
+ if (values.length === 0) {
80
80
  return -1;
81
81
  }
82
82
 
@@ -490,7 +490,7 @@ export function useKeyboardMovementProvider<E extends HTMLElement>(
490
490
  const focusedIndex = focusables.findIndex(
491
491
  (element) => element === target || element.contains(target)
492
492
  );
493
- if (focusedIndex === -1 || !focusables.length) {
493
+ if (focusedIndex === -1 || focusables.length === 0) {
494
494
  return;
495
495
  }
496
496
 
@@ -530,7 +530,7 @@ export function useKeyboardMovementProvider<E extends HTMLElement>(
530
530
  event.currentTarget,
531
531
  programmatic
532
532
  );
533
- if (!focusables.length) {
533
+ if (focusables.length === 0) {
534
534
  return;
535
535
  }
536
536
 
@@ -48,7 +48,7 @@ export const getVirtualFocusDefaultIndex = (
48
48
  options: VirtualFocusableIndexOptions
49
49
  ): number => {
50
50
  const { focusables, includeDisabled, activeDescendantId } = options;
51
- if (!focusables.length || (!activeDescendantId && includeDisabled)) {
51
+ if (focusables.length === 0 || (!activeDescendantId && includeDisabled)) {
52
52
  return 0;
53
53
  }
54
54
 
@@ -71,7 +71,7 @@ export const getFirstFocusableIndex = (
71
71
  ): number => {
72
72
  const { focusables, includeDisabled } = options;
73
73
 
74
- if (!focusables.length) {
74
+ if (focusables.length === 0) {
75
75
  return -1;
76
76
  }
77
77
 
@@ -99,7 +99,7 @@ export const getLastFocusableIndex = (
99
99
  ): number => {
100
100
  const { focusables, includeDisabled } = options;
101
101
 
102
- if (!focusables.length) {
102
+ if (focusables.length === 0) {
103
103
  return -1;
104
104
  }
105
105
 
@@ -142,7 +142,7 @@ export const getNextFocusableIndex = (
142
142
  includeDisabled,
143
143
  currentFocusIndex,
144
144
  } = options;
145
- if (!focusables.length) {
145
+ if (focusables.length === 0) {
146
146
  return currentFocusIndex;
147
147
  }
148
148
 
@@ -186,14 +186,14 @@ export function getSearchText(
186
186
  }
187
187
 
188
188
  const cloned = element.cloneNode(true) as HTMLElement;
189
- cloned
190
- .querySelectorAll(
191
- // Note: do not include DISPLAY_NONE_CLASS since it is presentational only
192
- ".rmd-icon--font,[aria-hidden=true],[hidden],[role=presentation]"
193
- )
194
- .forEach((element) => {
195
- element.parentNode?.removeChild(element);
196
- });
189
+
190
+ const invisibleElements = cloned.querySelectorAll(
191
+ // Note: do not include DISPLAY_NONE_CLASS since it is presentational only
192
+ ".rmd-icon--font,[aria-hidden=true],[hidden],[role=presentation]"
193
+ );
194
+ for (const element of invisibleElements) {
195
+ element.remove();
196
+ }
197
197
 
198
198
  // Note: It would be good to use `cloned.innerText` (maybe?) at some point,
199
199
  // but it returns `undefined` in jsdom. It also does cause a reflow, so maybe
@@ -232,8 +232,9 @@ export function recalculateFocusIndex(options: RecalculateOptions): number {
232
232
  });
233
233
  }
234
234
 
235
- const { activeElement } = document;
236
- return focusables.findIndex((element) => element === activeElement);
235
+ // do type-casting since the types don't matter much here
236
+ const activeElement = document.activeElement as HTMLElement;
237
+ return focusables.indexOf(activeElement);
237
238
  }
238
239
 
239
240
  /**
@@ -28,7 +28,7 @@ export function getTableOfContentsHeadings(
28
28
  ): TableOfContentsHeadings {
29
29
  const { ssr, selector, getDepth, getHeadingText } = options;
30
30
 
31
- if (ssr || typeof window === "undefined") {
31
+ if (ssr || globalThis.window === undefined) {
32
32
  return [];
33
33
  }
34
34
 
@@ -41,7 +41,7 @@ export function getTableOfContentsHeadings(
41
41
  let previous: TableOfContentsHeadingItem = root;
42
42
  const parents: TableOfContentsHeadingItem[] = [];
43
43
  const headings = document.querySelectorAll(selector);
44
- headings.forEach((heading) => {
44
+ for (const heading of headings) {
45
45
  const depth = getDepth(heading);
46
46
  const item: TableOfContentsHeadingItem = {
47
47
  id: heading.id,
@@ -56,6 +56,7 @@ export function getTableOfContentsHeadings(
56
56
 
57
57
  parents.push(previous);
58
58
  } else if (depth < previous.depth) {
59
+ // eslint-disable-next-line unicorn/prefer-at
59
60
  while (parents[parents.length - 1].depth >= depth) {
60
61
  parents.pop();
61
62
  }
@@ -63,7 +64,7 @@ export function getTableOfContentsHeadings(
63
64
  const i = parents.length - 1;
64
65
  parents[i].items = [...(parents[i].items ?? []), item];
65
66
  previous = item;
66
- });
67
+ }
67
68
 
68
69
  return root.items;
69
70
  }
@@ -16,7 +16,7 @@ import { type HeadingReferenceWithChildren } from "./types.js";
16
16
  * @since 6.0.0
17
17
  */
18
18
  export const DEFAULT_ACTIVE_HEADING_THRESHOLD: IntersectionObserverThreshold = [
19
- 0.0, 1.0,
19
+ 0, 1,
20
20
  ];
21
21
 
22
22
  /**
@@ -33,7 +33,7 @@ export const DEFAULT_ACTIVE_HEADING_THRESHOLD: IntersectionObserverThreshold = [
33
33
  * @since 6.0.0
34
34
  */
35
35
  export const DEFAULT_ACTIVE_HEADING_GET_ROOT_MARGIN = (): string => {
36
- const headerHeightVar = window
36
+ const headerHeightVar = globalThis
37
37
  .getComputedStyle(document.documentElement)
38
38
  .getPropertyValue("--rmd-layout-header-height");
39
39
  const headerHeight = parseCssLengthUnit({
@@ -51,7 +51,7 @@ function getHeadingElements(
51
51
  items: readonly HeadingReferenceWithChildren[]
52
52
  ): readonly HTMLElement[] {
53
53
  const headings: HTMLElement[] = [];
54
- items.forEach((item) => {
54
+ for (const item of items) {
55
55
  const heading = document.getElementById(item.id);
56
56
  if (heading) {
57
57
  headings.push(heading);
@@ -60,7 +60,7 @@ function getHeadingElements(
60
60
  if (item.items) {
61
61
  headings.push(...getHeadingElements(item.items));
62
62
  }
63
- });
63
+ }
64
64
 
65
65
  return headings;
66
66
  }
@@ -134,9 +134,9 @@ export function useActiveHeadingId(options: ActiveHeadingIdOptions): string {
134
134
  getTargets: useCallback(() => {
135
135
  const headingElements = getHeadingElements(headings);
136
136
  const lookup = new Map<string, boolean>();
137
- headingElements.forEach((heading) => {
137
+ for (const heading of headingElements) {
138
138
  lookup.set(heading.id, false);
139
- });
139
+ }
140
140
  elements.current = lookup;
141
141
 
142
142
  return headingElements;
@@ -148,9 +148,9 @@ export function useActiveHeadingId(options: ActiveHeadingIdOptions): string {
148
148
  return;
149
149
  }
150
150
 
151
- entries.forEach((entry) => {
151
+ for (const entry of entries) {
152
152
  lookup.set(entry.target.id, entry.isIntersecting);
153
- });
153
+ }
154
154
 
155
155
  // get the first visible/intersecting item and set it
156
156
  let foundId = [...lookup.entries()].find(
@@ -25,7 +25,7 @@ export const DEFAULT_HEADING_SELECTOR =
25
25
  * @since 6.0.0
26
26
  */
27
27
  export const DEFAULT_GET_HEADING_DEPTH = (element: Element): number => {
28
- const depth = parseInt(element.tagName.substring(1));
28
+ const depth = Number.parseInt(element.tagName.slice(1));
29
29
  return Number.isNaN(depth) ? 0 : depth;
30
30
  };
31
31
 
@@ -4,14 +4,15 @@ import { type NavigationItem } from "./types.js";
4
4
  * @since 6.0.0
5
5
  */
6
6
  export function getHrefFromParents(parents: readonly NavigationItem[]): string {
7
- return parents.reduce<string>((result, parent) => {
7
+ let result = "";
8
+ for (const parent of parents) {
8
9
  if ("href" in parent && parent.href) {
9
10
  const { href } = parent;
10
- return result + href;
11
+ result += href;
11
12
  }
13
+ }
12
14
 
13
- return result;
14
- }, "");
15
+ return result;
15
16
  }
16
17
 
17
18
  /**
@@ -33,7 +34,7 @@ export function getNavigationGroupId(
33
34
  */
34
35
  export function getPartsFromPathname(pathname: string): ReadonlySet<string> {
35
36
  // remove trailing slashes just in case there aren't rewrites in place
36
- const href = pathname.replace(/\/{2,}/g, "/").replace(/\/+$/, "");
37
+ const href = pathname.replaceAll(/\/{2,}/g, "/").replace(/\/+$/, "");
37
38
  const parts = href.split("/");
38
39
  const set = new Set<string>();
39
40
  let prefix = "";
@@ -29,7 +29,7 @@ export const PORTAL_CONTAINER_ID = "rmd-portal-container";
29
29
  let portalContainer: PortalContainerNode = null;
30
30
 
31
31
  const getPortalContainer = (): PortalContainerNode =>
32
- typeof window === "undefined" ? null : document.body;
32
+ globalThis.window === undefined ? null : document.body;
33
33
 
34
34
  const context = createContext<PortalContainerNode>(getPortalContainer());
35
35
  context.displayName = "PortalContainer";
@@ -77,7 +77,7 @@ export function PortalContainerProvider(
77
77
  return;
78
78
  }
79
79
 
80
- if (typeof container !== "undefined") {
80
+ if (container !== undefined) {
81
81
  setValue(container);
82
82
  return;
83
83
  }
@@ -87,13 +87,15 @@ export function PortalContainerProvider(
87
87
  portalContainer.id = PORTAL_CONTAINER_ID;
88
88
  }
89
89
  if (!document.body.contains(portalContainer)) {
90
- document.body.appendChild(portalContainer);
90
+ document.body.append(portalContainer);
91
91
  }
92
92
 
93
93
  setValue(portalContainer);
94
94
 
95
95
  return () => {
96
96
  if (portalContainer && document.body.contains(portalContainer)) {
97
+ // can't use `portalContainer.remove()` since `DocumentFragment` does not have `.remove()`
98
+ // eslint-disable-next-line unicorn/prefer-dom-node-remove
97
99
  document.body.removeChild(portalContainer);
98
100
  }
99
101
  };
@@ -80,12 +80,15 @@ export function getFixedPosition(options: FixedPositionOptions): FixedPosition {
80
80
  let { initialY } = options;
81
81
  const container = findSizingContainer(options.container);
82
82
 
83
- if (process.env.NODE_ENV !== "production") {
84
- if (preventOverlap && anchor.y !== "above" && anchor.y !== "below") {
85
- throw new Error(
86
- 'Unable to prevent overlap when the vertical anchor is not `"above"` or `"below"`'
87
- );
88
- }
83
+ if (
84
+ process.env.NODE_ENV !== "production" &&
85
+ preventOverlap &&
86
+ anchor.y !== "above" &&
87
+ anchor.y !== "below"
88
+ ) {
89
+ throw new Error(
90
+ 'Unable to prevent overlap when the vertical anchor is not `"above"` or `"below"`'
91
+ );
89
92
  }
90
93
 
91
94
  if (!element) {
@@ -407,8 +407,8 @@ export function useFixedPositioning<
407
407
  updateStyle();
408
408
  };
409
409
 
410
- const resizeHandler = delegateEvent("resize", window, true);
411
- const scrollHandler = delegateEvent("scroll", window, true, {
410
+ const resizeHandler = delegateEvent("resize", globalThis.window, true);
411
+ const scrollHandler = delegateEvent("scroll", globalThis.window, true, {
412
412
  passive: true,
413
413
  });
414
414
  resizeHandler.add(resizeCallback);
@@ -294,7 +294,7 @@ export function findSizingContainer(
294
294
  }
295
295
  }
296
296
 
297
- const data = el.getAttribute("data-sizing-selector");
297
+ const data = el.dataset.sizingSelector;
298
298
  if (data) {
299
299
  const content = el.querySelector(data) as HTMLElement;
300
300
  if (content) {
@@ -344,10 +344,10 @@ export function getElementRect(element: HTMLElement): DOMRect {
344
344
  cloned.style.transform = "none";
345
345
 
346
346
  const parent = element.parentElement || document.body;
347
- parent.appendChild(cloned);
347
+ parent.append(cloned);
348
348
 
349
349
  const rect = cloned.getBoundingClientRect();
350
- parent.removeChild(cloned);
350
+ cloned.remove();
351
351
 
352
352
  return rect;
353
353
  }
@@ -5,7 +5,7 @@ let cache: number | undefined;
5
5
  */
6
6
  export function getScrollbarWidth(force = false): number {
7
7
  /* istanbul ignore if */
8
- if (typeof window === "undefined") {
8
+ if (globalThis.window === undefined) {
9
9
  return 0;
10
10
  }
11
11
 
@@ -17,16 +17,16 @@ export function getScrollbarWidth(force = false): number {
17
17
  const outer = document.createElement("div");
18
18
  outer.style.visibility = "hidden";
19
19
  outer.style.overflow = "scroll";
20
- document.body.appendChild(outer);
20
+ document.body.append(outer);
21
21
 
22
22
  const inner = document.createElement("div");
23
- outer.appendChild(inner);
23
+ outer.append(inner);
24
24
 
25
25
  // the scrollbar width can be determined by comparing the width of the parent
26
26
  // element that has scrollbars to the child element that does not.
27
27
  value = outer.offsetWidth - inner.offsetWidth;
28
28
  cache = value;
29
- document.body.removeChild(outer);
29
+ outer.remove();
30
30
 
31
31
  return value;
32
32
  }
@@ -42,11 +42,15 @@ const DEFAULT_EXTRACTOR = defaultExtractor("fuzzySearch");
42
42
  export function createFuzzyRegExp(query: string): RegExp {
43
43
  return new RegExp(
44
44
  query
45
+ // eslint-disable-next-line unicorn/prefer-spread
45
46
  .split("")
46
- .join("\\w*")
47
- .replace(/(\(|\||\)|\\(?!w\*)|\[|\|-|\.|\^|\+|\$|\?|^(?!w)\*)/g, "\\$1")
47
+ .join(String.raw`\w*`)
48
+ .replaceAll(
49
+ /(\(|\||\)|\\(?!w\*)|\[|\|-|\.|\^|\+|\$|\?|^(?!w)\*)/g,
50
+ String.raw`\$1`
51
+ )
48
52
  // Couldn't get the matching of two '*' working, so replace them here..
49
- .replace(/\*\*/g, "*\\*"),
53
+ .replaceAll("**", String.raw`*\*`),
50
54
  "i"
51
55
  );
52
56
  }
@@ -11,7 +11,7 @@ export function toSearchQuery(
11
11
  ): string {
12
12
  let q = s.toLowerCase();
13
13
  if (whitespace === "ignore") {
14
- q = q.replace(/\s/g, "");
14
+ q = q.replaceAll(/\s/g, "");
15
15
  } else if (whitespace === "trim") {
16
16
  q = q.trim();
17
17
  }
@@ -48,7 +48,7 @@ export function search<T>(
48
48
  ): readonly T[] | T | undefined {
49
49
  const { list, type, query, filter, extractor, whitespace = "keep" } = options;
50
50
  const fallback = type === "search" ? undefined : list;
51
- if (!list.length) {
51
+ if (list.length === 0) {
52
52
  return fallback;
53
53
  }
54
54
 
@@ -190,7 +190,7 @@ export const Toast = forwardRef<HTMLDivElement, ToastProps>(
190
190
  }
191
191
 
192
192
  let closeIcon = propCloseIcon;
193
- if (typeof closeButtonProps?.children !== "undefined") {
193
+ if (closeButtonProps?.children !== undefined) {
194
194
  closeIcon = closeButtonProps.children;
195
195
  }
196
196