@react-md/core 1.0.0-next.16 → 1.0.0-next.18

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 (665) hide show
  1. package/dist/_box-shadows.scss +76 -0
  2. package/dist/_colors.scss +279 -277
  3. package/dist/_core.scss +107 -16
  4. package/dist/_object-fit.scss +86 -0
  5. package/dist/_utils.scss +246 -72
  6. package/dist/app-bar/AppBar.d.ts +1 -90
  7. package/dist/app-bar/AppBar.js +1 -40
  8. package/dist/app-bar/AppBar.js.map +1 -1
  9. package/dist/app-bar/AppBarTitle.d.ts +1 -27
  10. package/dist/app-bar/AppBarTitle.js +1 -15
  11. package/dist/app-bar/AppBarTitle.js.map +1 -1
  12. package/dist/app-bar/_app-bar.scss +156 -25
  13. package/dist/app-bar/styles.d.ts +117 -0
  14. package/dist/app-bar/styles.js +55 -0
  15. package/dist/app-bar/styles.js.map +1 -0
  16. package/dist/autocomplete/Autocomplete.d.ts +8 -79
  17. package/dist/autocomplete/Autocomplete.js +112 -83
  18. package/dist/autocomplete/Autocomplete.js.map +1 -1
  19. package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
  20. package/dist/autocomplete/AutocompleteChip.js +34 -0
  21. package/dist/autocomplete/AutocompleteChip.js.map +1 -0
  22. package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
  23. package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
  24. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  25. package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
  26. package/dist/autocomplete/AutocompleteClearButton.js +29 -0
  27. package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
  28. package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
  29. package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
  30. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  31. package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
  32. package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
  33. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
  34. package/dist/autocomplete/_autocomplete.scss +362 -34
  35. package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
  36. package/dist/autocomplete/autocompleteStyles.js +17 -8
  37. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  38. package/dist/autocomplete/defaults.d.ts +9 -9
  39. package/dist/autocomplete/defaults.js +13 -13
  40. package/dist/autocomplete/defaults.js.map +1 -1
  41. package/dist/autocomplete/types.d.ts +554 -56
  42. package/dist/autocomplete/types.js.map +1 -1
  43. package/dist/autocomplete/useAutocomplete.d.ts +22 -0
  44. package/dist/autocomplete/useAutocomplete.js +281 -0
  45. package/dist/autocomplete/useAutocomplete.js.map +1 -0
  46. package/dist/autocomplete/utils.d.ts +81 -0
  47. package/dist/autocomplete/utils.js +108 -0
  48. package/dist/autocomplete/utils.js.map +1 -0
  49. package/dist/avatar/_avatar.scss +93 -2
  50. package/dist/badge/Badge.d.ts +1 -20
  51. package/dist/badge/Badge.js +1 -14
  52. package/dist/badge/Badge.js.map +1 -1
  53. package/dist/badge/_badge.scss +90 -3
  54. package/dist/badge/styles.d.ts +26 -0
  55. package/dist/badge/styles.js +18 -0
  56. package/dist/badge/styles.js.map +1 -0
  57. package/dist/box/Box.js +2 -1
  58. package/dist/box/Box.js.map +1 -1
  59. package/dist/box/_box.scss +130 -17
  60. package/dist/box/styles.d.ts +6 -0
  61. package/dist/box/styles.js +2 -1
  62. package/dist/box/styles.js.map +1 -1
  63. package/dist/button/AsyncButton.d.ts +1 -1
  64. package/dist/button/AsyncButton.js.map +1 -1
  65. package/dist/button/Button.d.ts +2 -1
  66. package/dist/button/Button.js +2 -1
  67. package/dist/button/Button.js.map +1 -1
  68. package/dist/button/_button.scss +157 -25
  69. package/dist/card/Card.d.ts +16 -0
  70. package/dist/card/Card.js +11 -3
  71. package/dist/card/Card.js.map +1 -1
  72. package/dist/card/ClickableCard.d.ts +2 -1
  73. package/dist/card/ClickableCard.js +5 -2
  74. package/dist/card/ClickableCard.js.map +1 -1
  75. package/dist/card/_card.scss +90 -19
  76. package/dist/card/styles.d.ts +0 -7
  77. package/dist/card/styles.js +2 -3
  78. package/dist/card/styles.js.map +1 -1
  79. package/dist/chip/Chip.d.ts +2 -1
  80. package/dist/chip/Chip.js +2 -1
  81. package/dist/chip/Chip.js.map +1 -1
  82. package/dist/chip/_chip.scss +45 -22
  83. package/dist/chip/styles.d.ts +12 -10
  84. package/dist/chip/styles.js.map +1 -1
  85. package/dist/cssUtils.js.map +1 -1
  86. package/dist/delegateEvent.d.ts +2 -2
  87. package/dist/delegateEvent.js.map +1 -1
  88. package/dist/dialog/Dialog.d.ts +8 -21
  89. package/dist/dialog/Dialog.js +27 -27
  90. package/dist/dialog/Dialog.js.map +1 -1
  91. package/dist/dialog/FixedDialog.d.ts +1 -3
  92. package/dist/dialog/FixedDialog.js +0 -8
  93. package/dist/dialog/FixedDialog.js.map +1 -1
  94. package/dist/dialog/_dialog.scss +67 -13
  95. package/dist/dialog/styles.d.ts +56 -0
  96. package/dist/dialog/styles.js +29 -2
  97. package/dist/dialog/styles.js.map +1 -1
  98. package/dist/divider/Divider.d.ts +0 -11
  99. package/dist/divider/Divider.js.map +1 -1
  100. package/dist/divider/_divider.scss +7 -1
  101. package/dist/divider/styles.d.ts +11 -0
  102. package/dist/divider/styles.js.map +1 -1
  103. package/dist/draggable/useDraggable.d.ts +6 -6
  104. package/dist/draggable/useDraggable.js.map +1 -1
  105. package/dist/draggable/utils.d.ts +3 -3
  106. package/dist/draggable/utils.js.map +1 -1
  107. package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
  108. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  109. package/dist/expansion-panel/_expansion-panel.scss +5 -1
  110. package/dist/expansion-panel/useExpansionPanels.js +12 -24
  111. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  112. package/dist/{form → files}/FileInput.d.ts +3 -6
  113. package/dist/{form → files}/FileInput.js +3 -6
  114. package/dist/files/FileInput.js.map +1 -0
  115. package/dist/files/_files.scss +22 -0
  116. package/dist/files/styles.d.ts +5 -0
  117. package/dist/files/styles.js +7 -0
  118. package/dist/files/styles.js.map +1 -0
  119. package/dist/{form → files}/useFileUpload.d.ts +7 -9
  120. package/dist/{form → files}/useFileUpload.js +5 -7
  121. package/dist/files/useFileUpload.js.map +1 -0
  122. package/dist/files/utils.d.ts +169 -0
  123. package/dist/files/utils.js +114 -0
  124. package/dist/files/utils.js.map +1 -0
  125. package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +11 -176
  126. package/dist/{form/fileUtils.js → files/validation.js} +10 -135
  127. package/dist/files/validation.js.map +1 -0
  128. package/dist/focus/useFocusContainer.d.ts +2 -2
  129. package/dist/focus/useFocusContainer.js.map +1 -1
  130. package/dist/focus/utils.js.map +1 -1
  131. package/dist/form/FormMessage.js.map +1 -1
  132. package/dist/form/FormMessageContainer.js +4 -2
  133. package/dist/form/FormMessageContainer.js.map +1 -1
  134. package/dist/form/InputToggle.d.ts +2 -1
  135. package/dist/form/InputToggle.js +2 -1
  136. package/dist/form/InputToggle.js.map +1 -1
  137. package/dist/form/InputToggleIcon.js.map +1 -1
  138. package/dist/form/Label.js +2 -2
  139. package/dist/form/Label.js.map +1 -1
  140. package/dist/form/Listbox.d.ts +24 -0
  141. package/dist/form/Listbox.js +46 -0
  142. package/dist/form/Listbox.js.map +1 -0
  143. package/dist/form/ListboxProvider.d.ts +21 -0
  144. package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
  145. package/dist/form/ListboxProvider.js.map +1 -0
  146. package/dist/form/MenuItemTextField.js +1 -2
  147. package/dist/form/MenuItemTextField.js.map +1 -1
  148. package/dist/form/NativeSelect.js +7 -4
  149. package/dist/form/NativeSelect.js.map +1 -1
  150. package/dist/form/Option.d.ts +49 -10
  151. package/dist/form/Option.js +11 -9
  152. package/dist/form/Option.js.map +1 -1
  153. package/dist/form/Password.js.map +1 -1
  154. package/dist/form/Select.d.ts +2 -2
  155. package/dist/form/Select.js +81 -85
  156. package/dist/form/Select.js.map +1 -1
  157. package/dist/form/SelectedOption.js +2 -1
  158. package/dist/form/SelectedOption.js.map +1 -1
  159. package/dist/form/Slider.d.ts +4 -4
  160. package/dist/form/Slider.js +6 -2
  161. package/dist/form/Slider.js.map +1 -1
  162. package/dist/form/SliderThumb.d.ts +3 -3
  163. package/dist/form/SliderThumb.js.map +1 -1
  164. package/dist/form/SliderValueMarks.d.ts +2 -2
  165. package/dist/form/SliderValueMarks.js.map +1 -1
  166. package/dist/form/SliderValueTooltip.js.map +1 -1
  167. package/dist/form/TextArea.js +1 -2
  168. package/dist/form/TextArea.js.map +1 -1
  169. package/dist/form/TextField.js +1 -2
  170. package/dist/form/TextField.js.map +1 -1
  171. package/dist/form/TextFieldContainer.js +1 -2
  172. package/dist/form/TextFieldContainer.js.map +1 -1
  173. package/dist/form/_form.scss +193 -124
  174. package/dist/form/formMessageContainerStyles.d.ts +10 -0
  175. package/dist/form/formMessageContainerStyles.js +11 -0
  176. package/dist/form/formMessageContainerStyles.js.map +1 -0
  177. package/dist/form/inputToggleStyles.js.map +1 -1
  178. package/dist/form/optionStyles.d.ts +1 -0
  179. package/dist/form/optionStyles.js +2 -2
  180. package/dist/form/optionStyles.js.map +1 -1
  181. package/dist/form/selectUtils.js.map +1 -1
  182. package/dist/form/sliderUtils.d.ts +1 -1
  183. package/dist/form/sliderUtils.js.map +1 -1
  184. package/dist/form/textFieldContainerStyles.d.ts +0 -2
  185. package/dist/form/textFieldContainerStyles.js +1 -2
  186. package/dist/form/textFieldContainerStyles.js.map +1 -1
  187. package/dist/form/types.d.ts +3 -10
  188. package/dist/form/types.js.map +1 -1
  189. package/dist/form/useCheckboxGroup.d.ts +17 -17
  190. package/dist/form/useCheckboxGroup.js +9 -17
  191. package/dist/form/useCheckboxGroup.js.map +1 -1
  192. package/dist/form/useCombobox.d.ts +56 -21
  193. package/dist/form/useCombobox.js +19 -4
  194. package/dist/form/useCombobox.js.map +1 -1
  195. package/dist/form/useEditableCombobox.d.ts +24 -4
  196. package/dist/form/useEditableCombobox.js +5 -0
  197. package/dist/form/useEditableCombobox.js.map +1 -1
  198. package/dist/form/useNumberField.js.map +1 -1
  199. package/dist/form/useRadioGroup.d.ts +6 -6
  200. package/dist/form/useRadioGroup.js.map +1 -1
  201. package/dist/form/useResizingTextArea.js.map +1 -1
  202. package/dist/form/useSelectCombobox.d.ts +3 -4
  203. package/dist/form/useSelectCombobox.js.map +1 -1
  204. package/dist/form/useTextField.d.ts +1 -1
  205. package/dist/form/useTextField.js.map +1 -1
  206. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  207. package/dist/hoverMode/useHoverMode.d.ts +3 -3
  208. package/dist/hoverMode/useHoverMode.js.map +1 -1
  209. package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
  210. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  211. package/dist/icon/FontIcon.d.ts +4 -2
  212. package/dist/icon/FontIcon.js.map +1 -1
  213. package/dist/icon/TextIconSpacing.d.ts +3 -1
  214. package/dist/icon/TextIconSpacing.js.map +1 -1
  215. package/dist/icon/_icon.scss +151 -2
  216. package/dist/icon/iconConfig.d.ts +10 -0
  217. package/dist/icon/iconConfig.js +7 -0
  218. package/dist/icon/iconConfig.js.map +1 -1
  219. package/dist/icon/materialConfig.js.map +1 -1
  220. package/dist/icon/styles.js.map +1 -1
  221. package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
  222. package/dist/interaction/UserInteractionModeProvider.js +12 -8
  223. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  224. package/dist/interaction/types.d.ts +20 -2
  225. package/dist/interaction/types.js.map +1 -1
  226. package/dist/interaction/useElementInteraction.d.ts +7 -1
  227. package/dist/interaction/useElementInteraction.js +1 -2
  228. package/dist/interaction/useElementInteraction.js.map +1 -1
  229. package/dist/interaction/utils.d.ts +2 -2
  230. package/dist/interaction/utils.js +2 -2
  231. package/dist/interaction/utils.js.map +1 -1
  232. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  233. package/dist/layout/_layout.scss +23 -10
  234. package/dist/layout/useExpandableLayout.d.ts +3 -3
  235. package/dist/layout/useExpandableLayout.js.map +1 -1
  236. package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
  237. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  238. package/dist/layout/useTemporaryLayout.d.ts +2 -2
  239. package/dist/layout/useTemporaryLayout.js.map +1 -1
  240. package/dist/link/SkipToMainContent.js.map +1 -1
  241. package/dist/list/ListItem.d.ts +2 -1
  242. package/dist/list/ListItem.js +2 -1
  243. package/dist/list/ListItem.js.map +1 -1
  244. package/dist/list/ListItemChildren.js.map +1 -1
  245. package/dist/list/ListItemLink.d.ts +2 -1
  246. package/dist/list/ListItemLink.js +2 -1
  247. package/dist/list/ListItemLink.js.map +1 -1
  248. package/dist/list/_list.scss +6 -5
  249. package/dist/media-queries/_media-queries.scss +12 -0
  250. package/dist/media-queries/appSize.js.map +1 -1
  251. package/dist/media-queries/useMediaQuery.js +3 -1
  252. package/dist/media-queries/useMediaQuery.js.map +1 -1
  253. package/dist/menu/DropdownMenu.js.map +1 -1
  254. package/dist/menu/Menu.d.ts +8 -3
  255. package/dist/menu/Menu.js +2 -1
  256. package/dist/menu/Menu.js.map +1 -1
  257. package/dist/menu/MenuItemButton.js +6 -2
  258. package/dist/menu/MenuItemButton.js.map +1 -1
  259. package/dist/menu/useContextMenu.d.ts +3 -3
  260. package/dist/menu/useContextMenu.js.map +1 -1
  261. package/dist/movement/types.d.ts +5 -5
  262. package/dist/movement/types.js.map +1 -1
  263. package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
  264. package/dist/navigation/CollapsibleNavGroup.js +3 -4
  265. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  266. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
  267. package/dist/navigation/DefaultNavigationRenderer.js +6 -2
  268. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  269. package/dist/navigation/NavItemButton.d.ts +1 -1
  270. package/dist/navigation/NavItemButton.js +1 -0
  271. package/dist/navigation/NavItemButton.js.map +1 -1
  272. package/dist/navigation/NavItemLink.d.ts +3 -2
  273. package/dist/navigation/NavItemLink.js +6 -2
  274. package/dist/navigation/NavItemLink.js.map +1 -1
  275. package/dist/navigation/NavSubheader.d.ts +2 -3
  276. package/dist/navigation/NavSubheader.js.map +1 -1
  277. package/dist/navigation/Navigation.d.ts +1 -1
  278. package/dist/navigation/Navigation.js.map +1 -1
  279. package/dist/navigation/_navigation.scss +6 -5
  280. package/dist/navigation/types.d.ts +54 -6
  281. package/dist/navigation/types.js.map +1 -1
  282. package/dist/navigation/useActiveHeadingId.d.ts +1 -1
  283. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  284. package/dist/navigation/useNavigationExpansion.d.ts +104 -0
  285. package/dist/navigation/useNavigationExpansion.js +77 -0
  286. package/dist/navigation/useNavigationExpansion.js.map +1 -0
  287. package/dist/navigation/utils.d.ts +13 -0
  288. package/dist/navigation/utils.js +36 -0
  289. package/dist/navigation/utils.js.map +1 -0
  290. package/dist/objectFit.d.ts +69 -0
  291. package/dist/objectFit.js +52 -0
  292. package/dist/objectFit.js.map +1 -0
  293. package/dist/overlay/_overlay.scss +2 -1
  294. package/dist/positioning/useFixedPositioning.d.ts +17 -4
  295. package/dist/positioning/useFixedPositioning.js +10 -5
  296. package/dist/positioning/useFixedPositioning.js.map +1 -1
  297. package/dist/positioning/utils.js.map +1 -1
  298. package/dist/progress/LinearProgress.js.map +1 -1
  299. package/dist/progress/_progress.scss +20 -14
  300. package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
  301. package/dist/responsive-item/ResponsiveItem.js +68 -0
  302. package/dist/responsive-item/ResponsiveItem.js.map +1 -0
  303. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
  304. package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
  305. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  306. package/dist/responsive-item/_responsive-item.scss +110 -133
  307. package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
  308. package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
  309. package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
  310. package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
  311. package/dist/responsive-item/responsiveItemStyles.js +15 -0
  312. package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
  313. package/dist/scroll/useScrollLock.d.ts +5 -0
  314. package/dist/scroll/useScrollLock.js.map +1 -1
  315. package/dist/searching/utils.d.ts +2 -2
  316. package/dist/searching/utils.js.map +1 -1
  317. package/dist/segmented-button/SegmentedButton.d.ts +2 -1
  318. package/dist/segmented-button/SegmentedButton.js +2 -1
  319. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  320. package/dist/segmented-button/_segmented-button.scss +6 -6
  321. package/dist/sheet/_sheet.scss +18 -6
  322. package/dist/snackbar/ToastManager.js +15 -5
  323. package/dist/snackbar/ToastManager.js.map +1 -1
  324. package/dist/snackbar/_snackbar.scss +30 -17
  325. package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
  326. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  327. package/dist/table/_table.scss +15 -3
  328. package/dist/table/tableCellStyles.d.ts +7 -3
  329. package/dist/table/tableCellStyles.js +2 -2
  330. package/dist/table/tableCellStyles.js.map +1 -1
  331. package/dist/tabs/Tab.d.ts +2 -1
  332. package/dist/tabs/Tab.js +2 -1
  333. package/dist/tabs/Tab.js.map +1 -1
  334. package/dist/tabs/TabList.d.ts +2 -2
  335. package/dist/tabs/TabList.js.map +1 -1
  336. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  337. package/dist/tabs/TabListScrollButton.js +1 -1
  338. package/dist/tabs/TabListScrollButton.js.map +1 -1
  339. package/dist/tabs/_tabs.scss +30 -9
  340. package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
  341. package/dist/tabs/getTabListScrollToOptions.js +19 -0
  342. package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
  343. package/dist/tabs/tabStyles.d.ts +3 -0
  344. package/dist/tabs/tabStyles.js.map +1 -1
  345. package/dist/tabs/useTabList.d.ts +1 -8
  346. package/dist/tabs/useTabList.js +1 -0
  347. package/dist/tabs/useTabList.js.map +1 -1
  348. package/dist/tabs/useTabs.d.ts +6 -6
  349. package/dist/tabs/useTabs.js.map +1 -1
  350. package/dist/tabs/utils.d.ts +0 -18
  351. package/dist/tabs/utils.js +0 -15
  352. package/dist/tabs/utils.js.map +1 -1
  353. package/dist/test-utils/ResizeObserver.d.ts +11 -12
  354. package/dist/test-utils/ResizeObserver.js +11 -12
  355. package/dist/test-utils/ResizeObserver.js.map +1 -1
  356. package/dist/test-utils/matchMedia.d.ts +3 -3
  357. package/dist/test-utils/matchMedia.js +6 -6
  358. package/dist/test-utils/matchMedia.js.map +1 -1
  359. package/dist/test-utils/polyfills/TextDecoder.js +0 -1
  360. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  361. package/dist/test-utils/timers.d.ts +9 -5
  362. package/dist/test-utils/timers.js +5 -5
  363. package/dist/test-utils/timers.js.map +1 -1
  364. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
  365. package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
  366. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  367. package/dist/theme/ThemeProvider.js +3 -1
  368. package/dist/theme/ThemeProvider.js.map +1 -1
  369. package/dist/theme/_a11y.scss +86 -13
  370. package/dist/theme/_colors.scss +279 -277
  371. package/dist/theme/_theme.scss +308 -37
  372. package/dist/theme/isColorScheme.d.ts +16 -0
  373. package/dist/theme/isColorScheme.js +19 -0
  374. package/dist/theme/isColorScheme.js.map +1 -0
  375. package/dist/theme/types.d.ts +53 -1
  376. package/dist/theme/types.js +1 -23
  377. package/dist/theme/types.js.map +1 -1
  378. package/dist/theme/useCSSVariables.d.ts +2 -19
  379. package/dist/theme/useCSSVariables.js.map +1 -1
  380. package/dist/theme/useColorScheme.d.ts +1 -35
  381. package/dist/theme/useColorScheme.js.map +1 -1
  382. package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
  383. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  384. package/dist/theme/useColorSchemeProvider.d.ts +1 -1
  385. package/dist/theme/useColorSchemeProvider.js +1 -1
  386. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  387. package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
  388. package/dist/theme/usePrefersDarkScheme.js.map +1 -0
  389. package/dist/theme/utils.js.map +1 -1
  390. package/dist/tooltip/useTooltip.d.ts +14 -9
  391. package/dist/tooltip/useTooltip.js +2 -1
  392. package/dist/tooltip/useTooltip.js.map +1 -1
  393. package/dist/transition/_transition.scss +16 -9
  394. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  395. package/dist/transition/types.d.ts +1 -1
  396. package/dist/transition/types.js.map +1 -1
  397. package/dist/transition/useCarousel.d.ts +3 -3
  398. package/dist/transition/useCarousel.js.map +1 -1
  399. package/dist/transition/useCollapseTransition.js.map +1 -1
  400. package/dist/transition/useTransition.js +1 -0
  401. package/dist/transition/useTransition.js.map +1 -1
  402. package/dist/transition/utils.js.map +1 -1
  403. package/dist/tree/TreeItem.d.ts +2 -1
  404. package/dist/tree/TreeItem.js +4 -3
  405. package/dist/tree/TreeItem.js.map +1 -1
  406. package/dist/tree/TreeItemExpander.js.map +1 -1
  407. package/dist/tree/_tree.scss +8 -6
  408. package/dist/tree/useTreeExpansion.d.ts +1 -1
  409. package/dist/tree/useTreeExpansion.js +6 -18
  410. package/dist/tree/useTreeExpansion.js.map +1 -1
  411. package/dist/tree/useTreeSelection.d.ts +1 -1
  412. package/dist/tree/useTreeSelection.js +7 -25
  413. package/dist/tree/useTreeSelection.js.map +1 -1
  414. package/dist/tree/utils.d.ts +1 -1
  415. package/dist/tree/utils.js.map +1 -1
  416. package/dist/types.d.ts +12 -4
  417. package/dist/types.js.map +1 -1
  418. package/dist/typography/WritingDirectionProvider.d.ts +1 -1
  419. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  420. package/dist/typography/_typography.scss +94 -37
  421. package/dist/typography/typographyStyles.js.map +1 -1
  422. package/dist/useDebouncedFunction.d.ts +1 -5
  423. package/dist/useDebouncedFunction.js +3 -1
  424. package/dist/useDebouncedFunction.js.map +1 -1
  425. package/dist/useDropzone.d.ts +4 -4
  426. package/dist/useDropzone.js.map +1 -1
  427. package/dist/useEnsuredId.js.map +1 -1
  428. package/dist/useIntersectionObserver.d.ts +5 -5
  429. package/dist/useIntersectionObserver.js.map +1 -1
  430. package/dist/useLocalStorage.d.ts +3 -3
  431. package/dist/useLocalStorage.js +1 -1
  432. package/dist/useLocalStorage.js.map +1 -1
  433. package/dist/useMutationObserver.d.ts +1 -1
  434. package/dist/useMutationObserver.js.map +1 -1
  435. package/dist/useOrientation.js +3 -1
  436. package/dist/useOrientation.js.map +1 -1
  437. package/dist/usePageInactive.d.ts +2 -2
  438. package/dist/usePageInactive.js.map +1 -1
  439. package/dist/useReadonlySet.d.ts +76 -0
  440. package/dist/useReadonlySet.js +72 -0
  441. package/dist/useReadonlySet.js.map +1 -0
  442. package/dist/useResizeListener.d.ts +1 -1
  443. package/dist/useResizeListener.js.map +1 -1
  444. package/dist/useResizeObserver.d.ts +19 -0
  445. package/dist/useResizeObserver.js +19 -0
  446. package/dist/useResizeObserver.js.map +1 -1
  447. package/dist/useThrottledFunction.d.ts +1 -5
  448. package/dist/useThrottledFunction.js +3 -1
  449. package/dist/useThrottledFunction.js.map +1 -1
  450. package/dist/useToggle.d.ts +3 -3
  451. package/dist/useToggle.js.map +1 -1
  452. package/dist/utils/RenderRecursively.d.ts +2 -2
  453. package/dist/utils/RenderRecursively.js.map +1 -1
  454. package/dist/utils/alphaNumericSort.d.ts +5 -5
  455. package/dist/utils/alphaNumericSort.js.map +1 -1
  456. package/dist/utils/bem.d.ts +1 -1
  457. package/dist/utils/bem.js +1 -1
  458. package/dist/utils/bem.js.map +1 -1
  459. package/dist/utils/debounce.d.ts +5 -0
  460. package/dist/utils/debounce.js +17 -0
  461. package/dist/utils/debounce.js.map +1 -0
  462. package/dist/utils/nearest.js.map +1 -1
  463. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  464. package/dist/utils/throttle.d.ts +5 -0
  465. package/dist/utils/throttle.js +30 -0
  466. package/dist/utils/throttle.js.map +1 -0
  467. package/dist/utils/wait.js +3 -1
  468. package/dist/utils/wait.js.map +1 -1
  469. package/dist/window-splitter/WindowSplitter.d.ts +37 -15
  470. package/dist/window-splitter/WindowSplitter.js +38 -17
  471. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  472. package/dist/window-splitter/_window-splitter.scss +32 -14
  473. package/dist/window-splitter/styles.d.ts +14 -0
  474. package/dist/window-splitter/styles.js +18 -0
  475. package/dist/window-splitter/styles.js.map +1 -0
  476. package/package.json +25 -24
  477. package/src/app-bar/AppBar.tsx +1 -170
  478. package/src/app-bar/AppBarTitle.tsx +1 -44
  479. package/src/app-bar/styles.ts +206 -0
  480. package/src/autocomplete/Autocomplete.tsx +194 -211
  481. package/src/autocomplete/AutocompleteChip.tsx +48 -0
  482. package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
  483. package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
  484. package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
  485. package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
  486. package/src/autocomplete/autocompleteStyles.ts +48 -9
  487. package/src/autocomplete/defaults.ts +26 -17
  488. package/src/autocomplete/types.ts +744 -61
  489. package/src/autocomplete/useAutocomplete.ts +428 -0
  490. package/src/autocomplete/utils.ts +211 -0
  491. package/src/badge/Badge.tsx +1 -39
  492. package/src/badge/styles.ts +45 -0
  493. package/src/box/Box.tsx +11 -9
  494. package/src/box/styles.ts +14 -5
  495. package/src/button/AsyncButton.tsx +1 -1
  496. package/src/button/Button.tsx +5 -1
  497. package/src/card/Card.tsx +35 -4
  498. package/src/card/ClickableCard.tsx +9 -2
  499. package/src/card/styles.ts +1 -10
  500. package/src/chip/Chip.tsx +6 -1
  501. package/src/chip/styles.ts +12 -10
  502. package/src/delegateEvent.ts +5 -5
  503. package/src/dialog/Dialog.tsx +48 -61
  504. package/src/dialog/FixedDialog.tsx +1 -11
  505. package/src/dialog/styles.ts +97 -0
  506. package/src/divider/Divider.tsx +0 -12
  507. package/src/divider/styles.ts +12 -0
  508. package/src/draggable/useDraggable.ts +17 -10
  509. package/src/draggable/utils.ts +3 -3
  510. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  511. package/src/expansion-panel/useExpansionPanels.ts +18 -27
  512. package/src/{form → files}/FileInput.tsx +7 -15
  513. package/src/files/styles.ts +10 -0
  514. package/src/{form → files}/useFileUpload.ts +30 -34
  515. package/src/files/utils.ts +234 -0
  516. package/src/{form/fileUtils.ts → files/validation.ts} +15 -244
  517. package/src/focus/useFocusContainer.ts +16 -8
  518. package/src/form/FormMessageContainer.tsx +2 -2
  519. package/src/form/InputToggle.tsx +5 -1
  520. package/src/form/Label.tsx +18 -18
  521. package/src/form/Listbox.tsx +87 -0
  522. package/src/form/ListboxProvider.ts +37 -0
  523. package/src/form/MenuItemTextField.tsx +1 -2
  524. package/src/form/NativeSelect.tsx +14 -10
  525. package/src/form/Option.tsx +74 -22
  526. package/src/form/Select.tsx +89 -85
  527. package/src/form/SelectedOption.tsx +2 -0
  528. package/src/form/Slider.tsx +14 -11
  529. package/src/form/SliderThumb.tsx +4 -4
  530. package/src/form/SliderValueMarks.tsx +4 -4
  531. package/src/form/TextArea.tsx +6 -8
  532. package/src/form/TextField.tsx +0 -2
  533. package/src/form/TextFieldContainer.tsx +9 -11
  534. package/src/form/formMessageContainerStyles.ts +22 -0
  535. package/src/form/optionStyles.ts +7 -2
  536. package/src/form/sliderUtils.ts +1 -1
  537. package/src/form/textFieldContainerStyles.ts +9 -14
  538. package/src/form/types.ts +3 -11
  539. package/src/form/useCheckboxGroup.ts +28 -36
  540. package/src/form/useCombobox.ts +86 -38
  541. package/src/form/useEditableCombobox.ts +43 -8
  542. package/src/form/useRadioGroup.ts +6 -6
  543. package/src/form/useSelectCombobox.ts +4 -4
  544. package/src/form/useTextField.ts +1 -1
  545. package/src/hoverMode/useHoverMode.ts +3 -3
  546. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  547. package/src/icon/FontIcon.tsx +4 -2
  548. package/src/icon/TextIconSpacing.tsx +1 -1
  549. package/src/icon/iconConfig.tsx +12 -0
  550. package/src/interaction/UserInteractionModeProvider.tsx +12 -8
  551. package/src/interaction/types.ts +21 -2
  552. package/src/interaction/useElementInteraction.tsx +9 -2
  553. package/src/interaction/utils.ts +7 -7
  554. package/src/layout/useExpandableLayout.ts +3 -3
  555. package/src/layout/useLayoutAppBarHeight.ts +3 -4
  556. package/src/layout/useTemporaryLayout.ts +2 -2
  557. package/src/list/ListItem.tsx +5 -1
  558. package/src/list/ListItemLink.tsx +5 -1
  559. package/src/media-queries/useMediaQuery.ts +2 -1
  560. package/src/menu/Menu.tsx +11 -3
  561. package/src/menu/MenuItemButton.tsx +7 -1
  562. package/src/menu/useContextMenu.ts +3 -3
  563. package/src/movement/types.ts +5 -5
  564. package/src/navigation/CollapsibleNavGroup.tsx +16 -8
  565. package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
  566. package/src/navigation/NavItemButton.tsx +2 -1
  567. package/src/navigation/NavItemLink.tsx +11 -3
  568. package/src/navigation/NavSubheader.tsx +1 -1
  569. package/src/navigation/Navigation.tsx +1 -1
  570. package/src/navigation/types.ts +60 -10
  571. package/src/navigation/useActiveHeadingId.ts +1 -1
  572. package/src/navigation/useNavigationExpansion.ts +170 -0
  573. package/src/navigation/utils.ts +47 -0
  574. package/src/objectFit.ts +88 -0
  575. package/src/positioning/useFixedPositioning.ts +34 -11
  576. package/src/responsive-item/ResponsiveItem.tsx +96 -0
  577. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
  578. package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
  579. package/src/responsive-item/responsiveItemStyles.ts +81 -0
  580. package/src/scroll/useScrollLock.ts +6 -0
  581. package/src/searching/utils.ts +3 -3
  582. package/src/segmented-button/SegmentedButton.tsx +5 -1
  583. package/src/snackbar/ToastManager.tsx +16 -5
  584. package/src/snackbar/useCurrentToastActions.ts +5 -5
  585. package/src/table/tableCellStyles.ts +10 -6
  586. package/src/tabs/Tab.tsx +4 -1
  587. package/src/tabs/TabList.tsx +2 -2
  588. package/src/tabs/TabListScrollButton.tsx +4 -4
  589. package/src/tabs/getTabListScrollToOptions.ts +37 -0
  590. package/src/tabs/tabStyles.ts +4 -0
  591. package/src/tabs/useTabList.ts +2 -9
  592. package/src/tabs/useTabs.ts +6 -6
  593. package/src/tabs/utils.ts +0 -38
  594. package/src/test-utils/ResizeObserver.ts +11 -12
  595. package/src/test-utils/matchMedia.ts +7 -7
  596. package/src/test-utils/polyfills/TextDecoder.ts +0 -1
  597. package/src/test-utils/timers.ts +10 -7
  598. package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
  599. package/src/theme/ThemeProvider.tsx +3 -3
  600. package/src/theme/isColorScheme.ts +22 -0
  601. package/src/theme/types.ts +67 -1
  602. package/src/theme/useCSSVariables.ts +7 -30
  603. package/src/theme/useColorScheme.ts +1 -40
  604. package/src/theme/useColorSchemeMetaTag.ts +1 -1
  605. package/src/theme/useColorSchemeProvider.ts +2 -2
  606. package/src/tooltip/useTooltip.ts +17 -9
  607. package/src/transition/types.ts +1 -1
  608. package/src/transition/useCarousel.ts +3 -3
  609. package/src/transition/useTransition.ts +1 -0
  610. package/src/tree/TreeItem.tsx +7 -1
  611. package/src/tree/TreeItemExpander.tsx +1 -1
  612. package/src/tree/useTreeExpansion.ts +7 -25
  613. package/src/tree/useTreeSelection.ts +8 -32
  614. package/src/tree/utils.ts +6 -2
  615. package/src/types.ts +20 -4
  616. package/src/typography/WritingDirectionProvider.tsx +1 -1
  617. package/src/useDebouncedFunction.ts +4 -9
  618. package/src/useDropzone.ts +4 -4
  619. package/src/useIntersectionObserver.ts +5 -5
  620. package/src/useLocalStorage.ts +6 -6
  621. package/src/useMutationObserver.ts +1 -1
  622. package/src/useOrientation.ts +3 -1
  623. package/src/usePageInactive.ts +2 -2
  624. package/src/useReadonlySet.ts +122 -0
  625. package/src/useResizeListener.ts +1 -1
  626. package/src/useResizeObserver.ts +19 -0
  627. package/src/useThrottledFunction.ts +6 -9
  628. package/src/useToggle.ts +3 -3
  629. package/src/utils/RenderRecursively.tsx +2 -2
  630. package/src/utils/alphaNumericSort.ts +5 -5
  631. package/src/utils/bem.ts +1 -1
  632. package/src/utils/debounce.ts +22 -0
  633. package/src/utils/throttle.ts +38 -0
  634. package/src/utils/wait.ts +5 -1
  635. package/src/window-splitter/WindowSplitter.tsx +38 -43
  636. package/src/window-splitter/styles.ts +42 -0
  637. package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
  638. package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
  639. package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
  640. package/dist/dialog/DialogContainer.d.ts +0 -14
  641. package/dist/dialog/DialogContainer.js +0 -20
  642. package/dist/dialog/DialogContainer.js.map +0 -1
  643. package/dist/form/FileInput.js.map +0 -1
  644. package/dist/form/fileUtils.js.map +0 -1
  645. package/dist/form/useFileUpload.js.map +0 -1
  646. package/dist/form/useListboxProvider.d.ts +0 -31
  647. package/dist/form/useListboxProvider.js.map +0 -1
  648. package/dist/navigation/getHrefFromParents.d.ts +0 -5
  649. package/dist/navigation/getHrefFromParents.js +0 -13
  650. package/dist/navigation/getHrefFromParents.js.map +0 -1
  651. package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
  652. package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
  653. package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
  654. package/dist/responsive-item/styles.d.ts +0 -34
  655. package/dist/responsive-item/styles.js +0 -17
  656. package/dist/responsive-item/styles.js.map +0 -1
  657. package/dist/theme/usePrefersColorScheme.js.map +0 -1
  658. package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
  659. package/src/dialog/DialogContainer.tsx +0 -28
  660. package/src/form/useListboxProvider.ts +0 -45
  661. package/src/navigation/getHrefFromParents.ts +0 -15
  662. package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
  663. package/src/responsive-item/styles.ts +0 -58
  664. /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
  665. /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
  import {
3
+ useCallback,
3
4
  useRef,
4
5
  type FocusEventHandler,
5
6
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -38,7 +39,7 @@ import {
38
39
  } from "../types.js";
39
40
  import { useEnsuredId } from "../useEnsuredId.js";
40
41
  import { useEnsuredRef } from "../useEnsuredRef.js";
41
- import { useToggle } from "../useToggle.js";
42
+ import { useEnsuredState } from "../useEnsuredState.js";
42
43
  import { tryToSubmitRelatedForm } from "./utils.js";
43
44
 
44
45
  const noop = (): void => {
@@ -67,8 +68,8 @@ export type SupportedComboboxPopup = "listbox" | "grid" | "dialog";
67
68
  export interface ComboboxKeyboardMovementData<
68
69
  E extends HTMLElement = HTMLInputElement,
69
70
  > extends KeyboardMovementExtensionData<E> {
70
- show(): void;
71
- hide(): void;
71
+ show: () => void;
72
+ hide: () => void;
72
73
  visible: boolean;
73
74
  focusLast: NonNullMutableRef<boolean>;
74
75
  }
@@ -100,10 +101,45 @@ export type ComboboxKeyboardMovementOptions<
100
101
  /**
101
102
  * @since 6.0.0
102
103
  */
103
- export interface BaseComboboxOptions<
104
+ export interface ComboboxVisibilityOptions {
105
+ /**
106
+ * This can be used to control the popup's visibility and **must** be used
107
+ * along with {@link setVisible}.
108
+ */
109
+ visible?: boolean;
110
+
111
+ /**
112
+ * Used to control the popup's visibility and should generally be a `useState`
113
+ * setter.
114
+ *
115
+ * @example Controlling the Visibility
116
+ * ```tsx
117
+ * const [visible, setVisible] = useState(false);
118
+ *
119
+ * useCombobox({
120
+ * visible,
121
+ * setVisible,
122
+ * });
123
+ * ```
124
+ */
125
+ setVisible?: UseStateSetter<boolean>;
126
+
127
+ /**
128
+ * Set this to `true` to have the combobox's popup visible by default.
129
+ *
130
+ * @defaultValue `false`
131
+ */
132
+ defaultVisible?: UseStateInitializer<boolean>;
133
+ }
134
+
135
+ /**
136
+ * @since 6.0.0
137
+ */
138
+ export interface ConfigurableComboboxOptions<
104
139
  ComboboxEl extends HTMLElement = HTMLInputElement,
105
140
  PopupEl extends HTMLElement = HTMLElement,
106
- > extends ComboboxKeyboardMovementOptions<ComboboxEl> {
141
+ > extends ComboboxKeyboardMovementOptions<ComboboxEl>,
142
+ ComboboxVisibilityOptions {
107
143
  /**
108
144
  * This is the {@link InputHTMLAttributes.form} attribute and is used to
109
145
  * attempt submitting a form when the enter key is pressed.
@@ -130,7 +166,7 @@ export interface BaseComboboxOptions<
130
166
  /**
131
167
  * @defaultValue `false`
132
168
  */
133
- defaultVisible?: UseStateInitializer<boolean>;
169
+ multiselect?: boolean;
134
170
 
135
171
  extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;
136
172
 
@@ -142,18 +178,25 @@ export interface BaseComboboxOptions<
142
178
  getDefaultFocusedIndex?: GetDefaultFocusedIndex;
143
179
  }
144
180
 
181
+ /**
182
+ * @since 6.0.0
183
+ */
184
+ export interface ComboboxGetEnterDefaultFocusedIndexOptions {
185
+ focusLast: boolean;
186
+ focusables: readonly HTMLElement[];
187
+ currentFocusIndex: number;
188
+ }
189
+
145
190
  /**
146
191
  * @since 6.0.0
147
192
  */
148
193
  export interface ComboboxOptions<
149
194
  ComboboxEl extends HTMLElement = HTMLInputElement,
150
195
  PopupEl extends HTMLElement = HTMLElement,
151
- > extends BaseComboboxOptions<ComboboxEl, PopupEl> {
152
- getEnterDefaultFocusedIndex(options: {
153
- focusLast: boolean;
154
- focusables: readonly HTMLElement[];
155
- currentFocusIndex: number;
156
- }): number;
196
+ > extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {
197
+ getEnterDefaultFocusedIndex: (
198
+ options: ComboboxGetEnterDefaultFocusedIndexOptions
199
+ ) => number;
157
200
  }
158
201
 
159
202
  /**
@@ -180,6 +223,7 @@ export interface ComboboxWidgetProps<
180
223
  export interface ComboboxWidgetPopupProps<
181
224
  PopupEl extends HTMLElement = HTMLElement,
182
225
  > {
226
+ "aria-multiselectable": true | undefined;
183
227
  id: string;
184
228
  ref: RefCallback<PopupEl>;
185
229
  role: "listbox" | "dialog" | "grid";
@@ -215,16 +259,12 @@ export interface ProvidedComboboxMenuProps<
215
259
  > extends Required<ComboboxTransitionCallbacks>,
216
260
  ComboboxWidgetPopupProps<PopupEl> {
217
261
  visible: boolean;
218
- onRequestClose(): void;
219
-
262
+ onRequestClose: () => void;
220
263
  /** @defaultValue `"min"` */
221
264
  width: PositionWidth;
222
-
223
265
  /** @defaultValue `BELOW_CENTER_ANCHOR` */
224
266
  anchor: PositionAnchor;
225
-
226
267
  fixedTo: RefObject<HTMLElement>;
227
-
228
268
  sheetProps: MenuSheetConfigurableProps &
229
269
  Required<ComboboxTransitionCallbacks>;
230
270
  }
@@ -236,14 +276,6 @@ export interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>
236
276
  extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,
237
277
  ProvidedComboboxMenuProps<PopupEl> {}
238
278
 
239
- /**
240
- * Since the combobox usually uses the `Menu` as a popup element, this is a
241
- * helper util to create the required props and merge any additional props
242
- * with reasonable defaults.
243
- */
244
- export type ComboboxGetMenuProps<PopupEl extends HTMLElement = HTMLDivElement> =
245
- (props?: ConfigurableComboboxMenuProps) => ComboboxMenuProps<PopupEl>;
246
-
247
279
  /**
248
280
  * @since 6.0.0
249
281
  */
@@ -251,8 +283,8 @@ export interface ComboboxImplementation<
251
283
  ComboboxEl extends HTMLElement = HTMLInputElement,
252
284
  PopupEl extends HTMLElement = HTMLElement,
253
285
  > extends KeyboardMovementProviderImplementation<ComboboxEl> {
254
- show(): void;
255
- hide(): void;
286
+ show: () => void;
287
+ hide: () => void;
256
288
  visible: boolean;
257
289
  setVisible: UseStateSetter<boolean>;
258
290
  focusLast: NonNullMutableRef<boolean>;
@@ -260,11 +292,17 @@ export interface ComboboxImplementation<
260
292
  popupProps: ComboboxWidgetPopupProps<PopupEl>;
261
293
  comboboxRef: RefObject<ComboboxEl>;
262
294
  comboboxProps: ComboboxWidgetProps<ComboboxEl>;
263
-
264
- getMenuProps: ComboboxGetMenuProps<PopupEl>;
265
- getTransitionCallbacks(
295
+ /**
296
+ * Since the combobox usually uses the `Menu` as a popup element, this is a
297
+ * helper util to create the required props and merge any additional props
298
+ * with reasonable defaults.
299
+ */
300
+ getMenuProps: (
301
+ overrides?: ConfigurableComboboxMenuProps
302
+ ) => ComboboxMenuProps<PopupEl>;
303
+ getTransitionCallbacks: (
266
304
  options: ComboboxTransitionOptions
267
- ): Required<ComboboxTransitionCallbacks>;
305
+ ) => Required<ComboboxTransitionCallbacks>;
268
306
  }
269
307
 
270
308
  /**
@@ -283,14 +321,17 @@ export function useCombobox<
283
321
  onFocus,
284
322
  onKeyDown,
285
323
  searchable,
324
+ multiselect,
286
325
  isNegativeOneAllowed,
287
326
  loopable,
288
327
  disabled,
328
+ visible: propVisible,
329
+ setVisible: propSetVisible,
330
+ defaultVisible = false,
289
331
  comboboxId: propComboboxId,
290
332
  comboboxRef: propComboboxRef,
291
333
  popupId: propPopupId,
292
334
  popupRef: propPopupRef,
293
- defaultVisible = false,
294
335
  onFocusChange = noop,
295
336
  extendKeyDown = noop,
296
337
  getFocusableElements = getNonDisabledOptions,
@@ -298,12 +339,18 @@ export function useCombobox<
298
339
  getDefaultFocusedIndex,
299
340
  } = options;
300
341
 
301
- const {
302
- toggled: visible,
303
- enable: show,
304
- disable: hide,
305
- setToggled: setVisible,
306
- } = useToggle(defaultVisible);
342
+ const [visible, setVisible] = useEnsuredState({
343
+ value: propVisible,
344
+ setValue: propSetVisible,
345
+ defaultValue: defaultVisible,
346
+ });
347
+ const show = useCallback(() => {
348
+ setVisible(true);
349
+ }, [setVisible]);
350
+ const hide = useCallback(() => {
351
+ setVisible(false);
352
+ }, [setVisible]);
353
+
307
354
  const popupId = useEnsuredId(propPopupId, "combobox-popup");
308
355
  const comboboxId = useEnsuredId(propComboboxId, "combobox");
309
356
  const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);
@@ -460,6 +507,7 @@ export function useCombobox<
460
507
  };
461
508
 
462
509
  const popupProps: ComboboxWidgetPopupProps<PopupEl> = {
510
+ "aria-multiselectable": multiselect || undefined,
463
511
  id: popupId,
464
512
  ref: popupRefCallback,
465
513
  role: popup,
@@ -2,33 +2,63 @@
2
2
  import { useRef } from "react";
3
3
  import { isTypeEvent } from "../movement/utils.js";
4
4
  import {
5
- useCombobox,
6
- type BaseComboboxOptions,
7
5
  type ComboboxImplementation,
6
+ type ComboboxWidgetProps,
7
+ type ConfigurableComboboxOptions,
8
+ useCombobox,
8
9
  } from "./useCombobox.js";
9
- import { isChangeableHTMLElement, triggerManualChangeEvent } from "./utils.js";
10
+ import {
11
+ type EditableHTMLElement,
12
+ isChangeableHTMLElement,
13
+ triggerManualChangeEvent,
14
+ } from "./utils.js";
10
15
 
11
16
  /**
12
17
  * @since 6.0.0
13
18
  */
14
- export interface EditableComboboxOptions<
19
+ export type EditableComboboxOptions<
15
20
  ComboboxEl extends HTMLElement = HTMLInputElement,
16
21
  PopupEl extends HTMLElement = HTMLElement,
17
- > extends BaseComboboxOptions<ComboboxEl, PopupEl> {}
22
+ > = ConfigurableComboboxOptions<ComboboxEl, PopupEl>;
23
+
24
+ /**
25
+ * @since 6.0.0
26
+ */
27
+ export interface EditableComboboxWidgetProps<
28
+ ComboboxEl extends EditableHTMLElement = HTMLInputElement,
29
+ > extends ComboboxWidgetProps<ComboboxEl> {
30
+ /**
31
+ * This is set to `off` to prevent browser from providing their own
32
+ * suggestions.
33
+ *
34
+ * @defaultValue `"off"`
35
+ */
36
+ autoComplete: string;
37
+
38
+ /**
39
+ * This is set to `"none"` to prevent browsers from automatically capitalizing
40
+ * the first letter.
41
+ *
42
+ * @defaultValue `"none"`
43
+ */
44
+ autoCapitalize: string;
45
+ }
18
46
 
19
47
  /**
20
48
  * @since 6.0.0
21
49
  */
22
50
  export interface EditableComboboxImplementation<
23
- ComboboxEl extends HTMLElement = HTMLInputElement,
51
+ ComboboxEl extends EditableHTMLElement = HTMLInputElement,
24
52
  PopupEl extends HTMLElement = HTMLElement,
25
- > extends ComboboxImplementation<ComboboxEl, PopupEl> {}
53
+ > extends ComboboxImplementation<ComboboxEl, PopupEl> {
54
+ comboboxProps: EditableComboboxWidgetProps<ComboboxEl>;
55
+ }
26
56
 
27
57
  /**
28
58
  * @since 6.0.0
29
59
  */
30
60
  export function useEditableCombobox<
31
- ComboboxEl extends HTMLElement = HTMLInputElement,
61
+ ComboboxEl extends EditableHTMLElement = HTMLInputElement,
32
62
  PopupEl extends HTMLElement = HTMLElement,
33
63
  >(
34
64
  options: EditableComboboxOptions<ComboboxEl, PopupEl> = {}
@@ -129,6 +159,11 @@ export function useEditableCombobox<
129
159
 
130
160
  return {
131
161
  ...combobox,
162
+ comboboxProps: {
163
+ ...combobox.comboboxProps,
164
+ autoCapitalize: "none",
165
+ autoComplete: "off",
166
+ },
132
167
  getMenuProps(props) {
133
168
  return {
134
169
  // override the inherited renderAsSheet context since the sheet makes it
@@ -91,7 +91,7 @@ export type GetRadioGroupProps<V extends string | number> = (
91
91
 
92
92
  /** @since 6.0.0 */
93
93
  export interface RadioGroupImplementation<V extends string | number> {
94
- reset(): void;
94
+ reset: () => void;
95
95
  value: V;
96
96
  setValue: UseStateSetter<V>;
97
97
  getRadioProps: GetRadioGroupProps<V>;
@@ -99,11 +99,11 @@ export interface RadioGroupImplementation<V extends string | number> {
99
99
 
100
100
  export type GetMenuItemRadioGroupProps<V extends string | number> = (
101
101
  value: V
102
- ) => Readonly<{ checked: boolean; onCheckedChange(): void }>;
102
+ ) => Readonly<{ checked: boolean; onCheckedChange: () => void }>;
103
103
 
104
104
  /** @since 6.0.0 */
105
105
  export interface MenuItemRadioGroupImplementation<V extends string | number> {
106
- reset(): void;
106
+ reset: () => void;
107
107
  value: V;
108
108
  setValue: UseStateSetter<V>;
109
109
  getRadioProps: GetMenuItemRadioGroupProps<V>;
@@ -111,17 +111,17 @@ export interface MenuItemRadioGroupImplementation<V extends string | number> {
111
111
 
112
112
  /** @since 6.0.0 */
113
113
  export interface CombinedRadioGroupReturnValue<V extends string | number> {
114
- reset(): void;
114
+ reset: () => void;
115
115
  value: V;
116
116
  setValue: UseStateSetter<V>;
117
- getRadioProps?(value: V): {
117
+ getRadioProps?: (value: V) => {
118
118
  name?: string;
119
119
  value?: V;
120
120
  checked: boolean;
121
121
  error?: boolean;
122
122
  required?: boolean;
123
123
  onChange?: ChangeEventHandler<HTMLInputElement>;
124
- onCheckedChange?(): void;
124
+ onCheckedChange?: () => void;
125
125
  onInvalid?: FormEventHandler<HTMLInputElement>;
126
126
  };
127
127
  }
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import {
3
3
  useCombobox,
4
- type BaseComboboxOptions,
5
4
  type ComboboxImplementation,
5
+ type ConfigurableComboboxOptions,
6
6
  } from "./useCombobox.js";
7
7
 
8
8
  /**
@@ -11,7 +11,7 @@ import {
11
11
  export interface SelectComboboxOptions<
12
12
  ComboboxEl extends HTMLElement = HTMLInputElement,
13
13
  PopupEl extends HTMLElement = HTMLElement,
14
- > extends BaseComboboxOptions<ComboboxEl, PopupEl> {
14
+ > extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {
15
15
  value: string;
16
16
  values: readonly string[];
17
17
  }
@@ -19,10 +19,10 @@ export interface SelectComboboxOptions<
19
19
  /**
20
20
  * @since 6.0.0
21
21
  */
22
- export interface SelectComboboxImplementation<
22
+ export type SelectComboboxImplementation<
23
23
  ComboboxEl extends HTMLElement = HTMLInputElement,
24
24
  PopupEl extends HTMLElement = HTMLElement,
25
- > extends ComboboxImplementation<ComboboxEl, PopupEl> {}
25
+ > = ComboboxImplementation<ComboboxEl, PopupEl>;
26
26
 
27
27
  /**
28
28
  * @since 6.0.0
@@ -317,7 +317,7 @@ export interface TextFieldImplementation<
317
317
  E extends HTMLInputElement | HTMLTextAreaElement,
318
318
  > extends TextFieldHookState {
319
319
  fieldRef: RefObject<E>;
320
- reset(): void;
320
+ reset: () => void;
321
321
  setState: UseStateSetter<Readonly<TextFieldHookState>>;
322
322
  fieldProps: ProvidedTextFieldProps<E>;
323
323
  }
@@ -34,9 +34,9 @@ export interface ControlledHoverModeOptions
34
34
  * @since 6.0.0
35
35
  */
36
36
  export interface ControlledHoverModeImplementation {
37
- startShowFlow(id?: string | MouseEvent): void;
38
- startHideFlow(): void;
39
- clearVisibilityTimeout(): void;
37
+ startShowFlow: (id?: string | MouseEvent) => void;
38
+ startHideFlow: () => void;
39
+ clearVisibilityTimeout: () => void;
40
40
  }
41
41
 
42
42
  /**
@@ -53,23 +53,23 @@ export interface SimpleHoverModeContext {
53
53
  *
54
54
  * @see {@link hoverTimeoutRef} for an example.
55
55
  */
56
- enableHoverMode(activeId: string): void;
56
+ enableHoverMode: (activeId: string) => void;
57
57
 
58
58
  /**
59
59
  * Disables all hover mode behavior by clearing all timeouts and resetting
60
60
  * internal state.
61
61
  */
62
- disableHoverMode(): void;
62
+ disableHoverMode: () => void;
63
63
 
64
64
  /**
65
65
  * @see {@link leaveTimeoutRef} for an example.
66
66
  */
67
- startDisableTimer(): void;
67
+ startDisableTimer: () => void;
68
68
 
69
69
  /**
70
70
  * @see {@link hoverTimeoutRef} for an example.
71
71
  */
72
- clearDisableTimer(): void;
72
+ clearDisableTimer: () => void;
73
73
  }
74
74
 
75
75
  /**
@@ -18,9 +18,11 @@ export interface FontIconProps
18
18
 
19
19
  /**
20
20
  * Any children to render to create the font icon. This is required for
21
- * material-icons.
21
+ * material-icons. For example:
22
22
  *
23
- * @example `<FontIcon>clear</FontIcon>`
23
+ * ```tsx
24
+ * <FontIcon>clear</FontIcon>
25
+ * ```
24
26
  */
25
27
  children?: ReactNode;
26
28
  }
@@ -26,7 +26,7 @@ export interface TextIconSpacingProps {
26
26
  * If this is not a valid react element, the icon will be wrapped in a
27
27
  * `<span>` instead with the class names applied.
28
28
  */
29
- icon?: ReactElement | ReactNode;
29
+ icon?: ReactElement<{ className?: string }> | ReactNode;
30
30
 
31
31
  /**
32
32
  * Boolean if the icon should appear after the text instead of before.
@@ -122,6 +122,13 @@ export interface ConfigurableIcons {
122
122
  */
123
123
  radioChecked?: ReactNode;
124
124
 
125
+ /**
126
+ * The icon to use when removing elements.
127
+ *
128
+ * @defaultValue `<FontIcon>cancel</FontIcon>`
129
+ */
130
+ remove?: ReactNode;
131
+
125
132
  /**
126
133
  * The icon to use for showing that something has been selected that is not a
127
134
  * radio or checkbox. This is used internally for the `Chip` in the
@@ -168,6 +175,7 @@ export type ConfigurableIconName = keyof ConfigurableIcons;
168
175
  * import { ICON_CONFIG } from "@react-md/core";
169
176
  * import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
170
177
  * import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
178
+ * import CancelIcon from "@react-md/material-icons/CancelIcon";
171
179
  * import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
172
180
  * import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
173
181
  * import CheckIcon from "@react-md/material-icons/CheckIcon";
@@ -198,6 +206,7 @@ export type ConfigurableIconName = keyof ConfigurableIcons;
198
206
  * ICON_CONFIG.password = <RemoveRedEyeIcon />;
199
207
  * ICON_CONFIG.radio = <RadioButtonUncheckedIcon />;
200
208
  * ICON_CONFIG.radioChecked = <RadioButtonCheckedIcon />;
209
+ * ICON_CONFIG.remove = <CancelIcon />;
201
210
  * ICON_CONFIG.selected = <CheckIcon />;
202
211
  * ICON_CONFIG.sort = <ArrowUpwardIcon />;
203
212
  * ICON_CONFIG.upload = <FileUploadIcon />;
@@ -222,6 +231,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
222
231
  password: <FontIcon>remove_red_eye</FontIcon>,
223
232
  radio: <FontIcon>radio_button_unchecked</FontIcon>,
224
233
  radioChecked: <FontIcon>radio_button_checked</FontIcon>,
234
+ remove: <FontIcon>cancel</FontIcon>,
225
235
  selected: <FontIcon>check</FontIcon>,
226
236
  sort: <FontIcon>arrow_upward</FontIcon>,
227
237
  upload: <FontIcon>file_upload</FontIcon>,
@@ -236,6 +246,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
236
246
  * import { configureIcons } from "@react-md/core";
237
247
  * import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
238
248
  * import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
249
+ * import CancelIcon from "@react-md/material-icons/CancelIcon";
239
250
  * import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
240
251
  * import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
241
252
  * import CheckIcon from "@react-md/material-icons/CheckIcon";
@@ -267,6 +278,7 @@ export const ICON_CONFIG: ConfiguredIcons = {
267
278
  * password: <RemoveRedEyeIcon />,
268
279
  * radio: <RadioButtonUncheckedIcon />,
269
280
  * radioChecked: <RadioButtonCheckedIcon />,
281
+ * remove: <CancelIcon />,
270
282
  * selected: <CheckIcon />,
271
283
  * sort: <ArrowUpwardIcon />,
272
284
  * upload: <FileUploadIcon />,
@@ -53,13 +53,13 @@ export interface UserInteractionModeProviderProps {
53
53
  * to update component functionality and applying the following class names to
54
54
  * the `document.body`:
55
55
  *
56
- * - `"mouse-mode"`
57
- * - `"keyboard-mode"`
58
- * - `"touch-mode"`
56
+ * - `"rmd-mouse-mode"`
57
+ * - `"rmd-keyboard-mode"`
58
+ * - `"rmd-touch-mode"`
59
59
  *
60
60
  * Within `react-md`, these classes are used for the following behavior:
61
- * - only display `:focus` outlines while in `"keyboard-mode"`
62
- * - do not display `:hover` effects while in `"touch-mode"`
61
+ * - only display `:focus` outlines while in `"rmd-keyboard-mode"`
62
+ * - do not display `:hover` effects while in `"rmd-touch-mode"`
63
63
  *
64
64
  * @example Mount at the root of your app
65
65
  * ```tsx
@@ -136,8 +136,12 @@ export function UserInteractionModeProvider(
136
136
  * and I have no experience using them.
137
137
  */
138
138
  useEffect(() => {
139
- const enableMouseMode = (): void => setMode("mouse");
140
- const enableKeyboardMode = (): void => setMode("keyboard");
139
+ const enableMouseMode = (): void => {
140
+ setMode("mouse");
141
+ };
142
+ const enableKeyboardMode = (): void => {
143
+ setMode("keyboard");
144
+ };
141
145
 
142
146
  const handleTouchStart = (): void => {
143
147
  lastTouchTime.current = Date.now();
@@ -160,7 +164,7 @@ export function UserInteractionModeProvider(
160
164
  isTouchContextMenu.current = true;
161
165
  };
162
166
 
163
- const className = `${mode}-mode`;
167
+ const className = `rmd-${mode}-mode`;
164
168
  document.body.classList.add(className);
165
169
  window.addEventListener("touchstart", handleTouchStart, true);
166
170
  if (mode === "mouse") {
@@ -19,6 +19,25 @@ declare module "react" {
19
19
  }
20
20
  }
21
21
 
22
+ /**
23
+ * @since 6.0.0
24
+ */
25
+ export interface ComponentWithRippleProps {
26
+ /**
27
+ * Set this to `true` to disable the ripple behavior for this single component
28
+ * only. If all components should have the ripple disabled:
29
+ *
30
+ * ```ts
31
+ * INTERACTION_CONFIG.mode = "none";
32
+ * // or
33
+ * INTERACTION_CONFIG.mode = "press";
34
+ * ```
35
+ *
36
+ * @defaultValue `false`
37
+ */
38
+ disableRipple?: boolean;
39
+ }
40
+
22
41
  /**
23
42
  * This is used to provide feedback to the user that they are interacting with
24
43
  * elements on the page. It is recommended to not set this to `"none"` unless
@@ -156,8 +175,8 @@ export type RippleStateList = readonly RippleState[];
156
175
  * @internal
157
176
  */
158
177
  export interface RippleTransitionCallbacks {
159
- onEntered(ripple: RippleState): void;
160
- onExited(ripple: RippleState): void;
178
+ onEntered: (ripple: RippleState) => void;
179
+ onExited: (ripple: RippleState) => void;
161
180
  }
162
181
 
163
182
  /**
@@ -12,6 +12,7 @@ import { useUserInteractionMode } from "./UserInteractionModeProvider.js";
12
12
  import { INTERACTION_CONFIG } from "./config.js";
13
13
  import type {
14
14
  ElementInteractionHandlers,
15
+ ElementInteractionMode,
15
16
  ElementInteractionState,
16
17
  RippleState,
17
18
  RippleStyle,
@@ -31,6 +32,13 @@ export const PRESSED_CLASS_NAME = "rmd-pressed";
31
32
  /** @since 6.0.0 */
32
33
  export interface ElementInteractionOptions<E extends HTMLElement>
33
34
  extends Partial<ElementInteractionHandlers<E>> {
35
+ /**
36
+ * This can be used to override the {@link INTERACTION_CONFIG.mode}
37
+ *
38
+ * @defaultValue `INTERACTION_CONFIG.mode`
39
+ */
40
+ mode?: ElementInteractionMode;
41
+
34
42
  /**
35
43
  * Boolean if the element is currently disabled which will prevent any of the
36
44
  * element interaction states from happening.
@@ -165,11 +173,10 @@ export function useElementInteraction<E extends HTMLElement>(
165
173
  onTouchEnd = noop,
166
174
  onTouchMove = noop,
167
175
  onDragStart = noop,
176
+ mode = INTERACTION_CONFIG.mode,
168
177
  disabled = false,
169
178
  } = options;
170
179
 
171
- const { mode } = INTERACTION_CONFIG;
172
-
173
180
  const holding = useRef(false);
174
181
  const disableClick = useRef(false);
175
182
  const userMode = useUserInteractionMode();
@@ -1,9 +1,9 @@
1
- import type { KeyboardEvent, MouseEvent, TouchEvent } from "react";
1
+ import { type KeyboardEvent, type MouseEvent, type TouchEvent } from "react";
2
2
  import { findSizingContainer } from "../positioning/utils.js";
3
- import type {
4
- ElementInteractionState,
5
- RippleState,
6
- RippleStyle,
3
+ import {
4
+ type ElementInteractionState,
5
+ type RippleState,
6
+ type RippleStyle,
7
7
  } from "./types.js";
8
8
 
9
9
  /** @internal */
@@ -61,8 +61,8 @@ export function getRippleStyle(
61
61
  ({ pageX, pageY } = event);
62
62
  }
63
63
 
64
- x = pageX - (left + window.pageXOffset);
65
- y = pageY - (top + window.pageYOffset);
64
+ x = pageX - (left + window.scrollX);
65
+ y = pageY - (top + window.scrollY);
66
66
  }
67
67
 
68
68
  const radius = getRadius(x, y, width, height);
@@ -94,9 +94,9 @@ export interface ExpandableLayoutImplementation
94
94
  temporary: boolean;
95
95
  persistent: boolean;
96
96
  expanded: boolean;
97
- expandNavigation(): void;
98
- collapseNavigation(): void;
99
- toggleNavigation(): void;
97
+ expandNavigation: () => void;
98
+ collapseNavigation: () => void;
99
+ toggleNavigation: () => void;
100
100
  appBarProps: ProvidedLayoutAppBarProps;
101
101
  mainProps: ProvidedLayoutMainProps;
102
102
  navToggleProps: ProvidedExpandableLayoutNavToggleProps;