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

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 (645) 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 +42 -20
  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} +9 -174
  126. package/dist/{form/fileUtils.js → files/validation.js} +9 -134
  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/Slider.d.ts +4 -4
  158. package/dist/form/Slider.js +6 -2
  159. package/dist/form/Slider.js.map +1 -1
  160. package/dist/form/SliderThumb.d.ts +3 -3
  161. package/dist/form/SliderThumb.js.map +1 -1
  162. package/dist/form/SliderValueMarks.d.ts +2 -2
  163. package/dist/form/SliderValueMarks.js.map +1 -1
  164. package/dist/form/SliderValueTooltip.js.map +1 -1
  165. package/dist/form/TextArea.js +1 -2
  166. package/dist/form/TextArea.js.map +1 -1
  167. package/dist/form/TextField.js +1 -2
  168. package/dist/form/TextField.js.map +1 -1
  169. package/dist/form/TextFieldContainer.js +1 -2
  170. package/dist/form/TextFieldContainer.js.map +1 -1
  171. package/dist/form/_form.scss +186 -121
  172. package/dist/form/formMessageContainerStyles.d.ts +10 -0
  173. package/dist/form/formMessageContainerStyles.js +11 -0
  174. package/dist/form/formMessageContainerStyles.js.map +1 -0
  175. package/dist/form/inputToggleStyles.js.map +1 -1
  176. package/dist/form/optionStyles.d.ts +1 -0
  177. package/dist/form/optionStyles.js +2 -2
  178. package/dist/form/optionStyles.js.map +1 -1
  179. package/dist/form/selectUtils.js.map +1 -1
  180. package/dist/form/sliderUtils.d.ts +1 -1
  181. package/dist/form/sliderUtils.js.map +1 -1
  182. package/dist/form/textFieldContainerStyles.d.ts +0 -2
  183. package/dist/form/textFieldContainerStyles.js +1 -2
  184. package/dist/form/textFieldContainerStyles.js.map +1 -1
  185. package/dist/form/types.d.ts +3 -10
  186. package/dist/form/types.js.map +1 -1
  187. package/dist/form/useCheckboxGroup.d.ts +17 -17
  188. package/dist/form/useCheckboxGroup.js +9 -17
  189. package/dist/form/useCheckboxGroup.js.map +1 -1
  190. package/dist/form/useCombobox.d.ts +56 -21
  191. package/dist/form/useCombobox.js +19 -4
  192. package/dist/form/useCombobox.js.map +1 -1
  193. package/dist/form/useEditableCombobox.d.ts +24 -4
  194. package/dist/form/useEditableCombobox.js +5 -0
  195. package/dist/form/useEditableCombobox.js.map +1 -1
  196. package/dist/form/useNumberField.js.map +1 -1
  197. package/dist/form/useRadioGroup.d.ts +6 -6
  198. package/dist/form/useRadioGroup.js.map +1 -1
  199. package/dist/form/useResizingTextArea.js.map +1 -1
  200. package/dist/form/useSelectCombobox.d.ts +3 -4
  201. package/dist/form/useSelectCombobox.js.map +1 -1
  202. package/dist/form/useTextField.d.ts +1 -1
  203. package/dist/form/useTextField.js.map +1 -1
  204. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  205. package/dist/hoverMode/useHoverMode.d.ts +3 -3
  206. package/dist/hoverMode/useHoverMode.js.map +1 -1
  207. package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
  208. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  209. package/dist/icon/_icon.scss +151 -2
  210. package/dist/icon/iconConfig.d.ts +10 -0
  211. package/dist/icon/iconConfig.js +7 -0
  212. package/dist/icon/iconConfig.js.map +1 -1
  213. package/dist/icon/materialConfig.js.map +1 -1
  214. package/dist/icon/styles.js.map +1 -1
  215. package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
  216. package/dist/interaction/UserInteractionModeProvider.js +12 -8
  217. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  218. package/dist/interaction/types.d.ts +20 -2
  219. package/dist/interaction/types.js.map +1 -1
  220. package/dist/interaction/useElementInteraction.d.ts +7 -1
  221. package/dist/interaction/useElementInteraction.js +1 -2
  222. package/dist/interaction/useElementInteraction.js.map +1 -1
  223. package/dist/interaction/utils.d.ts +2 -2
  224. package/dist/interaction/utils.js +2 -2
  225. package/dist/interaction/utils.js.map +1 -1
  226. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  227. package/dist/layout/_layout.scss +23 -10
  228. package/dist/layout/useExpandableLayout.d.ts +3 -3
  229. package/dist/layout/useExpandableLayout.js.map +1 -1
  230. package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
  231. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  232. package/dist/layout/useTemporaryLayout.d.ts +2 -2
  233. package/dist/layout/useTemporaryLayout.js.map +1 -1
  234. package/dist/link/SkipToMainContent.js.map +1 -1
  235. package/dist/list/ListItem.d.ts +2 -1
  236. package/dist/list/ListItem.js +2 -1
  237. package/dist/list/ListItem.js.map +1 -1
  238. package/dist/list/ListItemChildren.js.map +1 -1
  239. package/dist/list/ListItemLink.d.ts +2 -1
  240. package/dist/list/ListItemLink.js +2 -1
  241. package/dist/list/ListItemLink.js.map +1 -1
  242. package/dist/list/_list.scss +6 -5
  243. package/dist/media-queries/_media-queries.scss +12 -0
  244. package/dist/media-queries/appSize.js.map +1 -1
  245. package/dist/media-queries/useMediaQuery.js +3 -1
  246. package/dist/media-queries/useMediaQuery.js.map +1 -1
  247. package/dist/menu/DropdownMenu.js.map +1 -1
  248. package/dist/menu/Menu.d.ts +8 -3
  249. package/dist/menu/Menu.js +2 -1
  250. package/dist/menu/Menu.js.map +1 -1
  251. package/dist/menu/MenuItemButton.js +6 -2
  252. package/dist/menu/MenuItemButton.js.map +1 -1
  253. package/dist/menu/useContextMenu.d.ts +3 -3
  254. package/dist/menu/useContextMenu.js.map +1 -1
  255. package/dist/movement/types.d.ts +5 -5
  256. package/dist/movement/types.js.map +1 -1
  257. package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
  258. package/dist/navigation/CollapsibleNavGroup.js +3 -4
  259. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  260. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
  261. package/dist/navigation/DefaultNavigationRenderer.js +6 -2
  262. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  263. package/dist/navigation/NavItemButton.d.ts +1 -1
  264. package/dist/navigation/NavItemButton.js +1 -0
  265. package/dist/navigation/NavItemButton.js.map +1 -1
  266. package/dist/navigation/NavItemLink.d.ts +3 -2
  267. package/dist/navigation/NavItemLink.js +6 -2
  268. package/dist/navigation/NavItemLink.js.map +1 -1
  269. package/dist/navigation/NavSubheader.d.ts +2 -3
  270. package/dist/navigation/NavSubheader.js.map +1 -1
  271. package/dist/navigation/Navigation.d.ts +1 -1
  272. package/dist/navigation/Navigation.js.map +1 -1
  273. package/dist/navigation/_navigation.scss +6 -5
  274. package/dist/navigation/types.d.ts +54 -6
  275. package/dist/navigation/types.js.map +1 -1
  276. package/dist/navigation/useActiveHeadingId.d.ts +1 -1
  277. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  278. package/dist/navigation/useNavigationExpansion.d.ts +104 -0
  279. package/dist/navigation/useNavigationExpansion.js +77 -0
  280. package/dist/navigation/useNavigationExpansion.js.map +1 -0
  281. package/dist/navigation/utils.d.ts +13 -0
  282. package/dist/navigation/utils.js +36 -0
  283. package/dist/navigation/utils.js.map +1 -0
  284. package/dist/objectFit.d.ts +69 -0
  285. package/dist/objectFit.js +52 -0
  286. package/dist/objectFit.js.map +1 -0
  287. package/dist/overlay/_overlay.scss +2 -1
  288. package/dist/positioning/useFixedPositioning.d.ts +17 -4
  289. package/dist/positioning/useFixedPositioning.js +10 -5
  290. package/dist/positioning/useFixedPositioning.js.map +1 -1
  291. package/dist/positioning/utils.js.map +1 -1
  292. package/dist/progress/LinearProgress.js.map +1 -1
  293. package/dist/progress/_progress.scss +20 -14
  294. package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
  295. package/dist/responsive-item/ResponsiveItem.js +68 -0
  296. package/dist/responsive-item/ResponsiveItem.js.map +1 -0
  297. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
  298. package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
  299. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  300. package/dist/responsive-item/_responsive-item.scss +110 -133
  301. package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
  302. package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
  303. package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
  304. package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
  305. package/dist/responsive-item/responsiveItemStyles.js +15 -0
  306. package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
  307. package/dist/scroll/useScrollLock.d.ts +5 -0
  308. package/dist/scroll/useScrollLock.js.map +1 -1
  309. package/dist/searching/utils.d.ts +2 -2
  310. package/dist/searching/utils.js.map +1 -1
  311. package/dist/segmented-button/SegmentedButton.d.ts +2 -1
  312. package/dist/segmented-button/SegmentedButton.js +2 -1
  313. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  314. package/dist/segmented-button/_segmented-button.scss +6 -6
  315. package/dist/sheet/_sheet.scss +18 -6
  316. package/dist/snackbar/ToastManager.js +15 -5
  317. package/dist/snackbar/ToastManager.js.map +1 -1
  318. package/dist/snackbar/_snackbar.scss +30 -17
  319. package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
  320. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  321. package/dist/table/_table.scss +15 -3
  322. package/dist/table/tableCellStyles.d.ts +7 -3
  323. package/dist/table/tableCellStyles.js +2 -2
  324. package/dist/table/tableCellStyles.js.map +1 -1
  325. package/dist/tabs/Tab.d.ts +2 -1
  326. package/dist/tabs/Tab.js +2 -1
  327. package/dist/tabs/Tab.js.map +1 -1
  328. package/dist/tabs/TabList.d.ts +2 -2
  329. package/dist/tabs/TabList.js.map +1 -1
  330. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  331. package/dist/tabs/TabListScrollButton.js +1 -1
  332. package/dist/tabs/TabListScrollButton.js.map +1 -1
  333. package/dist/tabs/_tabs.scss +30 -9
  334. package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
  335. package/dist/tabs/getTabListScrollToOptions.js +19 -0
  336. package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
  337. package/dist/tabs/tabStyles.d.ts +3 -0
  338. package/dist/tabs/tabStyles.js.map +1 -1
  339. package/dist/tabs/useTabList.d.ts +1 -8
  340. package/dist/tabs/useTabList.js +1 -0
  341. package/dist/tabs/useTabList.js.map +1 -1
  342. package/dist/tabs/useTabs.d.ts +6 -6
  343. package/dist/tabs/useTabs.js.map +1 -1
  344. package/dist/tabs/utils.d.ts +0 -18
  345. package/dist/tabs/utils.js +0 -15
  346. package/dist/tabs/utils.js.map +1 -1
  347. package/dist/test-utils/matchMedia.d.ts +1 -1
  348. package/dist/test-utils/matchMedia.js +4 -4
  349. package/dist/test-utils/matchMedia.js.map +1 -1
  350. package/dist/test-utils/polyfills/TextDecoder.js +0 -1
  351. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  352. package/dist/test-utils/timers.d.ts +9 -5
  353. package/dist/test-utils/timers.js +5 -5
  354. package/dist/test-utils/timers.js.map +1 -1
  355. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
  356. package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
  357. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  358. package/dist/theme/ThemeProvider.js +3 -1
  359. package/dist/theme/ThemeProvider.js.map +1 -1
  360. package/dist/theme/_a11y.scss +77 -13
  361. package/dist/theme/_colors.scss +279 -277
  362. package/dist/theme/_theme.scss +308 -37
  363. package/dist/theme/isColorScheme.d.ts +16 -0
  364. package/dist/theme/isColorScheme.js +19 -0
  365. package/dist/theme/isColorScheme.js.map +1 -0
  366. package/dist/theme/types.d.ts +53 -1
  367. package/dist/theme/types.js +1 -23
  368. package/dist/theme/types.js.map +1 -1
  369. package/dist/theme/useCSSVariables.d.ts +2 -19
  370. package/dist/theme/useCSSVariables.js.map +1 -1
  371. package/dist/theme/useColorScheme.d.ts +1 -35
  372. package/dist/theme/useColorScheme.js.map +1 -1
  373. package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
  374. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  375. package/dist/theme/useColorSchemeProvider.d.ts +1 -1
  376. package/dist/theme/useColorSchemeProvider.js +1 -1
  377. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  378. package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
  379. package/dist/theme/usePrefersDarkScheme.js.map +1 -0
  380. package/dist/theme/utils.js.map +1 -1
  381. package/dist/tooltip/useTooltip.d.ts +14 -9
  382. package/dist/tooltip/useTooltip.js +2 -1
  383. package/dist/tooltip/useTooltip.js.map +1 -1
  384. package/dist/transition/_transition.scss +16 -9
  385. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  386. package/dist/transition/types.d.ts +1 -1
  387. package/dist/transition/types.js.map +1 -1
  388. package/dist/transition/useCarousel.d.ts +3 -3
  389. package/dist/transition/useCarousel.js.map +1 -1
  390. package/dist/transition/useCollapseTransition.js.map +1 -1
  391. package/dist/transition/useTransition.js +1 -0
  392. package/dist/transition/useTransition.js.map +1 -1
  393. package/dist/transition/utils.js.map +1 -1
  394. package/dist/tree/TreeItem.d.ts +2 -1
  395. package/dist/tree/TreeItem.js +4 -3
  396. package/dist/tree/TreeItem.js.map +1 -1
  397. package/dist/tree/TreeItemExpander.js.map +1 -1
  398. package/dist/tree/_tree.scss +8 -6
  399. package/dist/tree/useTreeExpansion.d.ts +1 -1
  400. package/dist/tree/useTreeExpansion.js +6 -18
  401. package/dist/tree/useTreeExpansion.js.map +1 -1
  402. package/dist/tree/useTreeSelection.d.ts +1 -1
  403. package/dist/tree/useTreeSelection.js +7 -25
  404. package/dist/tree/useTreeSelection.js.map +1 -1
  405. package/dist/tree/utils.d.ts +1 -1
  406. package/dist/tree/utils.js.map +1 -1
  407. package/dist/types.d.ts +12 -4
  408. package/dist/types.js.map +1 -1
  409. package/dist/typography/WritingDirectionProvider.d.ts +1 -1
  410. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  411. package/dist/typography/_typography.scss +94 -37
  412. package/dist/typography/typographyStyles.js.map +1 -1
  413. package/dist/useDebouncedFunction.d.ts +1 -5
  414. package/dist/useDebouncedFunction.js +3 -1
  415. package/dist/useDebouncedFunction.js.map +1 -1
  416. package/dist/useDropzone.d.ts +4 -4
  417. package/dist/useDropzone.js.map +1 -1
  418. package/dist/useEnsuredId.js.map +1 -1
  419. package/dist/useIntersectionObserver.d.ts +5 -5
  420. package/dist/useIntersectionObserver.js.map +1 -1
  421. package/dist/useLocalStorage.d.ts +3 -3
  422. package/dist/useLocalStorage.js +1 -1
  423. package/dist/useLocalStorage.js.map +1 -1
  424. package/dist/useMutationObserver.d.ts +1 -1
  425. package/dist/useMutationObserver.js.map +1 -1
  426. package/dist/useOrientation.js +3 -1
  427. package/dist/useOrientation.js.map +1 -1
  428. package/dist/usePageInactive.d.ts +2 -2
  429. package/dist/usePageInactive.js.map +1 -1
  430. package/dist/useReadonlySet.d.ts +76 -0
  431. package/dist/useReadonlySet.js +72 -0
  432. package/dist/useReadonlySet.js.map +1 -0
  433. package/dist/useResizeListener.d.ts +1 -1
  434. package/dist/useResizeListener.js.map +1 -1
  435. package/dist/useThrottledFunction.d.ts +1 -5
  436. package/dist/useThrottledFunction.js +3 -1
  437. package/dist/useThrottledFunction.js.map +1 -1
  438. package/dist/useToggle.d.ts +3 -3
  439. package/dist/useToggle.js.map +1 -1
  440. package/dist/utils/RenderRecursively.d.ts +1 -1
  441. package/dist/utils/RenderRecursively.js.map +1 -1
  442. package/dist/utils/alphaNumericSort.d.ts +1 -1
  443. package/dist/utils/alphaNumericSort.js.map +1 -1
  444. package/dist/utils/bem.js.map +1 -1
  445. package/dist/utils/debounce.d.ts +5 -0
  446. package/dist/utils/debounce.js +17 -0
  447. package/dist/utils/debounce.js.map +1 -0
  448. package/dist/utils/nearest.js.map +1 -1
  449. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  450. package/dist/utils/throttle.d.ts +5 -0
  451. package/dist/utils/throttle.js +30 -0
  452. package/dist/utils/throttle.js.map +1 -0
  453. package/dist/utils/wait.js +3 -1
  454. package/dist/utils/wait.js.map +1 -1
  455. package/dist/window-splitter/WindowSplitter.d.ts +37 -15
  456. package/dist/window-splitter/WindowSplitter.js +38 -17
  457. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  458. package/dist/window-splitter/_window-splitter.scss +32 -14
  459. package/dist/window-splitter/styles.d.ts +14 -0
  460. package/dist/window-splitter/styles.js +18 -0
  461. package/dist/window-splitter/styles.js.map +1 -0
  462. package/package.json +24 -23
  463. package/src/app-bar/AppBar.tsx +1 -170
  464. package/src/app-bar/AppBarTitle.tsx +1 -44
  465. package/src/app-bar/styles.ts +206 -0
  466. package/src/autocomplete/Autocomplete.tsx +194 -211
  467. package/src/autocomplete/AutocompleteChip.tsx +48 -0
  468. package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
  469. package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
  470. package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
  471. package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
  472. package/src/autocomplete/autocompleteStyles.ts +48 -9
  473. package/src/autocomplete/defaults.ts +26 -17
  474. package/src/autocomplete/types.ts +744 -61
  475. package/src/autocomplete/useAutocomplete.ts +428 -0
  476. package/src/autocomplete/utils.ts +211 -0
  477. package/src/badge/Badge.tsx +1 -39
  478. package/src/badge/styles.ts +45 -0
  479. package/src/box/Box.tsx +11 -9
  480. package/src/box/styles.ts +14 -5
  481. package/src/button/AsyncButton.tsx +1 -1
  482. package/src/button/Button.tsx +5 -1
  483. package/src/card/Card.tsx +35 -4
  484. package/src/card/ClickableCard.tsx +9 -2
  485. package/src/card/styles.ts +1 -10
  486. package/src/chip/Chip.tsx +6 -1
  487. package/src/chip/styles.ts +12 -10
  488. package/src/delegateEvent.ts +5 -5
  489. package/src/dialog/Dialog.tsx +48 -61
  490. package/src/dialog/FixedDialog.tsx +1 -11
  491. package/src/dialog/styles.ts +97 -0
  492. package/src/divider/Divider.tsx +0 -12
  493. package/src/divider/styles.ts +12 -0
  494. package/src/draggable/useDraggable.ts +17 -10
  495. package/src/draggable/utils.ts +3 -3
  496. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  497. package/src/expansion-panel/useExpansionPanels.ts +18 -27
  498. package/src/{form → files}/FileInput.tsx +7 -15
  499. package/src/files/styles.ts +10 -0
  500. package/src/{form → files}/useFileUpload.ts +30 -34
  501. package/src/files/utils.ts +234 -0
  502. package/src/{form/fileUtils.ts → files/validation.ts} +13 -242
  503. package/src/focus/useFocusContainer.ts +16 -8
  504. package/src/form/FormMessageContainer.tsx +2 -2
  505. package/src/form/InputToggle.tsx +5 -1
  506. package/src/form/Label.tsx +18 -18
  507. package/src/form/Listbox.tsx +87 -0
  508. package/src/form/ListboxProvider.ts +37 -0
  509. package/src/form/MenuItemTextField.tsx +1 -2
  510. package/src/form/NativeSelect.tsx +14 -10
  511. package/src/form/Option.tsx +74 -22
  512. package/src/form/Select.tsx +89 -85
  513. package/src/form/Slider.tsx +14 -11
  514. package/src/form/SliderThumb.tsx +4 -4
  515. package/src/form/SliderValueMarks.tsx +4 -4
  516. package/src/form/TextArea.tsx +6 -8
  517. package/src/form/TextField.tsx +0 -2
  518. package/src/form/TextFieldContainer.tsx +9 -11
  519. package/src/form/formMessageContainerStyles.ts +22 -0
  520. package/src/form/optionStyles.ts +7 -2
  521. package/src/form/sliderUtils.ts +1 -1
  522. package/src/form/textFieldContainerStyles.ts +9 -14
  523. package/src/form/types.ts +3 -11
  524. package/src/form/useCheckboxGroup.ts +28 -36
  525. package/src/form/useCombobox.ts +86 -38
  526. package/src/form/useEditableCombobox.ts +43 -8
  527. package/src/form/useRadioGroup.ts +6 -6
  528. package/src/form/useSelectCombobox.ts +4 -4
  529. package/src/form/useTextField.ts +1 -1
  530. package/src/hoverMode/useHoverMode.ts +3 -3
  531. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  532. package/src/icon/iconConfig.tsx +12 -0
  533. package/src/interaction/UserInteractionModeProvider.tsx +12 -8
  534. package/src/interaction/types.ts +21 -2
  535. package/src/interaction/useElementInteraction.tsx +9 -2
  536. package/src/interaction/utils.ts +7 -7
  537. package/src/layout/useExpandableLayout.ts +3 -3
  538. package/src/layout/useLayoutAppBarHeight.ts +3 -4
  539. package/src/layout/useTemporaryLayout.ts +2 -2
  540. package/src/list/ListItem.tsx +5 -1
  541. package/src/list/ListItemLink.tsx +5 -1
  542. package/src/media-queries/useMediaQuery.ts +2 -1
  543. package/src/menu/Menu.tsx +11 -3
  544. package/src/menu/MenuItemButton.tsx +7 -1
  545. package/src/menu/useContextMenu.ts +3 -3
  546. package/src/movement/types.ts +5 -5
  547. package/src/navigation/CollapsibleNavGroup.tsx +16 -8
  548. package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
  549. package/src/navigation/NavItemButton.tsx +2 -1
  550. package/src/navigation/NavItemLink.tsx +11 -3
  551. package/src/navigation/NavSubheader.tsx +1 -1
  552. package/src/navigation/Navigation.tsx +1 -1
  553. package/src/navigation/types.ts +60 -10
  554. package/src/navigation/useActiveHeadingId.ts +1 -1
  555. package/src/navigation/useNavigationExpansion.ts +170 -0
  556. package/src/navigation/utils.ts +47 -0
  557. package/src/objectFit.ts +88 -0
  558. package/src/positioning/useFixedPositioning.ts +34 -11
  559. package/src/responsive-item/ResponsiveItem.tsx +96 -0
  560. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
  561. package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
  562. package/src/responsive-item/responsiveItemStyles.ts +81 -0
  563. package/src/scroll/useScrollLock.ts +6 -0
  564. package/src/searching/utils.ts +3 -3
  565. package/src/segmented-button/SegmentedButton.tsx +5 -1
  566. package/src/snackbar/ToastManager.tsx +16 -5
  567. package/src/snackbar/useCurrentToastActions.ts +5 -5
  568. package/src/table/tableCellStyles.ts +10 -6
  569. package/src/tabs/Tab.tsx +4 -1
  570. package/src/tabs/TabList.tsx +2 -2
  571. package/src/tabs/TabListScrollButton.tsx +4 -4
  572. package/src/tabs/getTabListScrollToOptions.ts +37 -0
  573. package/src/tabs/tabStyles.ts +4 -0
  574. package/src/tabs/useTabList.ts +2 -9
  575. package/src/tabs/useTabs.ts +6 -6
  576. package/src/tabs/utils.ts +0 -38
  577. package/src/test-utils/matchMedia.ts +5 -5
  578. package/src/test-utils/polyfills/TextDecoder.ts +0 -1
  579. package/src/test-utils/timers.ts +10 -7
  580. package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
  581. package/src/theme/ThemeProvider.tsx +3 -3
  582. package/src/theme/isColorScheme.ts +22 -0
  583. package/src/theme/types.ts +67 -1
  584. package/src/theme/useCSSVariables.ts +7 -30
  585. package/src/theme/useColorScheme.ts +1 -40
  586. package/src/theme/useColorSchemeMetaTag.ts +1 -1
  587. package/src/theme/useColorSchemeProvider.ts +2 -2
  588. package/src/tooltip/useTooltip.ts +17 -9
  589. package/src/transition/types.ts +1 -1
  590. package/src/transition/useCarousel.ts +3 -3
  591. package/src/transition/useTransition.ts +1 -0
  592. package/src/tree/TreeItem.tsx +7 -1
  593. package/src/tree/TreeItemExpander.tsx +1 -1
  594. package/src/tree/useTreeExpansion.ts +7 -25
  595. package/src/tree/useTreeSelection.ts +8 -32
  596. package/src/tree/utils.ts +6 -2
  597. package/src/types.ts +20 -4
  598. package/src/typography/WritingDirectionProvider.tsx +1 -1
  599. package/src/useDebouncedFunction.ts +4 -9
  600. package/src/useDropzone.ts +4 -4
  601. package/src/useIntersectionObserver.ts +5 -5
  602. package/src/useLocalStorage.ts +6 -6
  603. package/src/useMutationObserver.ts +1 -1
  604. package/src/useOrientation.ts +3 -1
  605. package/src/usePageInactive.ts +2 -2
  606. package/src/useReadonlySet.ts +122 -0
  607. package/src/useResizeListener.ts +1 -1
  608. package/src/useThrottledFunction.ts +6 -9
  609. package/src/useToggle.ts +3 -3
  610. package/src/utils/RenderRecursively.tsx +1 -1
  611. package/src/utils/alphaNumericSort.ts +1 -1
  612. package/src/utils/debounce.ts +22 -0
  613. package/src/utils/throttle.ts +38 -0
  614. package/src/utils/wait.ts +5 -1
  615. package/src/window-splitter/WindowSplitter.tsx +38 -43
  616. package/src/window-splitter/styles.ts +42 -0
  617. package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
  618. package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
  619. package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
  620. package/dist/dialog/DialogContainer.d.ts +0 -14
  621. package/dist/dialog/DialogContainer.js +0 -20
  622. package/dist/dialog/DialogContainer.js.map +0 -1
  623. package/dist/form/FileInput.js.map +0 -1
  624. package/dist/form/fileUtils.js.map +0 -1
  625. package/dist/form/useFileUpload.js.map +0 -1
  626. package/dist/form/useListboxProvider.d.ts +0 -31
  627. package/dist/form/useListboxProvider.js.map +0 -1
  628. package/dist/navigation/getHrefFromParents.d.ts +0 -5
  629. package/dist/navigation/getHrefFromParents.js +0 -13
  630. package/dist/navigation/getHrefFromParents.js.map +0 -1
  631. package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
  632. package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
  633. package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
  634. package/dist/responsive-item/styles.d.ts +0 -34
  635. package/dist/responsive-item/styles.js +0 -17
  636. package/dist/responsive-item/styles.js.map +0 -1
  637. package/dist/theme/usePrefersColorScheme.js.map +0 -1
  638. package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
  639. package/src/dialog/DialogContainer.tsx +0 -28
  640. package/src/form/useListboxProvider.ts +0 -45
  641. package/src/navigation/getHrefFromParents.ts +0 -15
  642. package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
  643. package/src/responsive-item/styles.ts +0 -58
  644. /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
  645. /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
@@ -101,7 +101,7 @@ export interface SliderThumbPresentation {
101
101
  *
102
102
  * @defaultValue `() => ""`
103
103
  */
104
- getValueText?(value: number): string;
104
+ getValueText?: (value: number) => string;
105
105
 
106
106
  /**
107
107
  * Set this to `true` if the slider's thumb position should only update when
@@ -145,11 +145,11 @@ export interface SliderThumbProps
145
145
  vertical: boolean;
146
146
  onChange: ChangeEventHandler<HTMLInputElement>;
147
147
  tooltipProps?: Partial<TooltipProps>;
148
- getTooltipProps(
148
+ getTooltipProps: (
149
149
  value: number,
150
150
  isFirstThumb: boolean
151
- ): Partial<TooltipProps> | void;
152
- getTooltipChildren(value: number, isFirstThumb: boolean): ReactNode;
151
+ ) => Partial<TooltipProps> | undefined;
152
+ getTooltipChildren: (value: number, isFirstThumb: boolean) => ReactNode;
153
153
  }
154
154
 
155
155
  /**
@@ -90,9 +90,9 @@ export interface SliderMarksOptions {
90
90
  /**
91
91
  * This can be used to override any styles for the specific mark.
92
92
  */
93
- getMarkProps?(
93
+ getMarkProps?: (
94
94
  options: SliderValueMarkState
95
- ): HTMLAttributes<HTMLSpanElement> | void;
95
+ ) => HTMLAttributes<HTMLSpanElement> | undefined;
96
96
 
97
97
  /**
98
98
  * This can be used to override any styles for a specific mark's label or
@@ -116,9 +116,9 @@ export interface SliderMarksOptions {
116
116
  * />
117
117
  * ```
118
118
  */
119
- getMarkLabelProps?(
119
+ getMarkLabelProps?: (
120
120
  options: SliderValueMarkState
121
- ): Partial<CustomizableSliderMarkLabelProps> | void;
121
+ ) => Partial<CustomizableSliderMarkLabelProps> | undefined;
122
122
  }
123
123
 
124
124
  /**
@@ -128,15 +128,14 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
128
128
  areaClassName,
129
129
  resizeContainerProps,
130
130
  resize = "auto",
131
- dense = false,
132
- error = false,
133
- active = false,
134
- inline: propInline = false,
135
- stretch = false,
131
+ dense,
132
+ error,
133
+ active,
134
+ inline: propInline,
136
135
  leftAddon,
137
136
  rightAddon,
138
- disableLeftAddonStyles = false,
139
- disableRightAddonStyles = false,
137
+ disableLeftAddonStyles,
138
+ disableRightAddonStyles,
140
139
  theme: propTheme,
141
140
  underlineDirection: propUnderlineDirection,
142
141
  messageProps,
@@ -267,7 +266,6 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
267
266
  dense={dense}
268
267
  inline={inline}
269
268
  active={active}
270
- stretch={stretch}
271
269
  readOnly={readOnly}
272
270
  disabled={disabled}
273
271
  leftAddon={leftAddon}
@@ -136,7 +136,6 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
136
136
  error,
137
137
  active,
138
138
  inline,
139
- stretch,
140
139
  leftAddon,
141
140
  leftAddonProps,
142
141
  rightAddon,
@@ -182,7 +181,6 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
182
181
  dense={dense}
183
182
  inline={inline}
184
183
  active={active}
185
- stretch={stretch}
186
184
  readOnly={readOnly}
187
185
  disabled={disabled}
188
186
  leftAddon={leftAddon}
@@ -33,20 +33,19 @@ export const TextFieldContainer = forwardRef<
33
33
  const {
34
34
  children,
35
35
  className,
36
- dense = false,
37
- error = false,
38
- label = false,
39
- active = false,
40
- inline = false,
41
- stretch = false,
42
- readOnly = false,
43
- disabled = false,
36
+ dense,
37
+ error,
38
+ label,
39
+ active,
40
+ inline,
41
+ readOnly,
42
+ disabled,
44
43
  leftAddon,
45
44
  leftAddonProps,
46
- disableLeftAddonStyles = false,
45
+ disableLeftAddonStyles,
47
46
  rightAddon,
48
47
  rightAddonProps,
49
- disableRightAddonStyles = false,
48
+ disableRightAddonStyles,
50
49
  theme: propTheme,
51
50
  underlineDirection: propUnderlineDirection,
52
51
  ...remaining
@@ -68,7 +67,6 @@ export const TextFieldContainer = forwardRef<
68
67
  label,
69
68
  inline,
70
69
  active,
71
- stretch,
72
70
  readOnly,
73
71
  disabled,
74
72
  className,
@@ -0,0 +1,22 @@
1
+ import { cnb } from "cnbuilder";
2
+ import { bem } from "../utils/bem.js";
3
+
4
+ const styles = bem("rmd-form-message-container");
5
+
6
+ /**
7
+ * @since 6.0.0
8
+ */
9
+ export interface FormMessageContainerClassNameOptions {
10
+ className?: string;
11
+ }
12
+
13
+ /**
14
+ * @since 6.0.0
15
+ */
16
+ export function formMessageContainer(
17
+ options: FormMessageContainerClassNameOptions = {}
18
+ ): string {
19
+ const { className } = options;
20
+
21
+ return cnb(styles(), className);
22
+ }
@@ -10,13 +10,18 @@ export interface OptionClassNameOptions {
10
10
  className?: string;
11
11
  icon: boolean;
12
12
  selected: boolean;
13
+ selectedClassName?: string;
13
14
  }
14
15
 
15
16
  /**
16
17
  * @since 6.0.0
17
18
  */
18
19
  export function option(options: OptionClassNameOptions): string {
19
- const { className, icon, selected } = options;
20
+ const { className, icon, selected, selectedClassName } = options;
20
21
 
21
- return cnb(styles({ icon, selected }), className);
22
+ return cnb(
23
+ styles({ icon, selected }),
24
+ selected && selectedClassName,
25
+ className
26
+ );
22
27
  }
@@ -45,7 +45,7 @@ export const getJumpValue = (options: JumpOptions): number => {
45
45
  * @internal
46
46
  */
47
47
  type RequiredThumbProps = Pick<
48
- DraggableImplementation<HTMLElement>,
48
+ DraggableImplementation,
49
49
  | "dragging"
50
50
  | keyof DraggableMouseEventHandlers<HTMLElement>
51
51
  | keyof DraggableTouchEventHandlers<HTMLElement>
@@ -31,9 +31,6 @@ export interface TextFieldContainerClassNameOptions
31
31
  /** @defaultValue `false` */
32
32
  inline?: boolean;
33
33
 
34
- /** @defaultValue `false` */
35
- stretch?: boolean;
36
-
37
34
  /** @defaultValue `false` */
38
35
  label?: boolean;
39
36
 
@@ -53,16 +50,15 @@ export function textFieldContainer(
53
50
  const {
54
51
  className,
55
52
  theme = "outline",
56
- dense = false,
57
- error = false,
58
- label = false,
59
- active = false,
60
- inline = false,
61
- stretch = false,
62
- readOnly = false,
63
- disabled = false,
64
- leftAddon = false,
65
- rightAddon = false,
53
+ dense,
54
+ error,
55
+ label,
56
+ active,
57
+ inline,
58
+ readOnly,
59
+ disabled,
60
+ leftAddon,
61
+ rightAddon,
66
62
  underlineDirection = "left",
67
63
  } = options;
68
64
  const underline = theme === "underline";
@@ -82,7 +78,6 @@ export function textFieldContainer(
82
78
  styles({
83
79
  error,
84
80
  inline,
85
- stretch,
86
81
  filled,
87
82
  outline,
88
83
  disabled: disabled || readOnly,
package/src/form/types.ts CHANGED
@@ -90,7 +90,7 @@ export interface FormComponentStates {
90
90
  * @see https://html.spec.whatwg.org/multipage/forms.html#autofill
91
91
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values
92
92
  */
93
- export type AutocompleteValue =
93
+ export type AutocompleteAttributeValue =
94
94
  | "off"
95
95
  | "on"
96
96
  | "name"
@@ -182,11 +182,11 @@ export interface UserAgentAutocompleteProps {
182
182
  *
183
183
  * @see https://html.spec.whatwg.org/multipage/forms.html#autofill
184
184
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values
185
- * @see {@link AutocompleteValue}
185
+ * @see {@link AutocompleteAttributeValue}
186
186
  * @see {@link autoComplete}
187
187
  * @see {@link UserAgentAutocompleteProps.name}
188
188
  */
189
- autoCompleteValue?: AutocompleteValue;
189
+ autoCompleteValue?: AutocompleteAttributeValue;
190
190
 
191
191
  /**
192
192
  * @see {@link autoCompleteValue}
@@ -472,14 +472,6 @@ export interface TextFieldContainerOptions
472
472
  */
473
473
  inline?: boolean;
474
474
 
475
- /**
476
- * Set this to `true` if this component should stretch to fill a flex or grid
477
- * container using `flex: 1 1 auto`.
478
- *
479
- * @defaultValue `false`
480
- */
481
- stretch?: boolean;
482
-
483
475
  /**
484
476
  * This should generally be an icon or a button that will be placed before the
485
477
  * `TextField` or `TextArea`.
@@ -1,6 +1,7 @@
1
1
  "use client";
2
- import { useCallback, useRef, useState } from "react";
2
+ import { useCallback, useRef } from "react";
3
3
  import { type UseStateInitializer, type UseStateSetter } from "../types.js";
4
+ import { useReadonlySet } from "../useReadonlySet.js";
4
5
 
5
6
  const EMPTY_LIST = [] as const;
6
7
 
@@ -55,37 +56,37 @@ export interface CheckboxGroupOptions<V> {
55
56
 
56
57
  /** @since 6.0.0 */
57
58
  export interface CheckboxGroupImplementation<V extends string> {
58
- reset(): void;
59
+ reset: () => void;
59
60
  checkedValues: ReadonlySet<V>;
60
61
  setCheckedValues: UseStateSetter<ReadonlySet<V>>;
61
- getCheckboxProps(value: V): {
62
+ getCheckboxProps: (value: V) => {
62
63
  name: string;
63
64
  value: V;
64
65
  checked: boolean;
65
- onChange(): void;
66
+ onChange: () => void;
66
67
  };
67
68
  }
68
69
 
69
70
  /** @since 6.0.0 */
70
71
  export interface IndeterminateCheckboxGroupImplementation<V extends string>
71
72
  extends CheckboxGroupImplementation<V> {
72
- getIndeterminateProps(): {
73
+ getIndeterminateProps: () => {
73
74
  "aria-checked": "mixed" | undefined;
74
75
  name: string;
75
76
  checked: boolean;
76
77
  indeterminate: boolean;
77
- onChange(): void;
78
+ onChange: () => void;
78
79
  };
79
80
  }
80
81
 
81
82
  /** @since 6.0.0 */
82
83
  export interface MenuItemCheckboxGroupImplementation<V extends string> {
83
- reset(): void;
84
+ reset: () => void;
84
85
  checkedValues: ReadonlySet<V>;
85
86
  setCheckedValues: UseStateSetter<ReadonlySet<V>>;
86
- getCheckboxProps(value: V): {
87
+ getCheckboxProps: (value: V) => {
87
88
  checked: boolean;
88
- onCheckedChange(): void;
89
+ onCheckedChange: () => void;
89
90
  };
90
91
  }
91
92
 
@@ -93,33 +94,33 @@ export interface MenuItemCheckboxGroupImplementation<V extends string> {
93
94
  export interface IndeterminateMenuItemCheckboxGroupImplementation<
94
95
  V extends string,
95
96
  > extends MenuItemCheckboxGroupImplementation<V> {
96
- getIndeterminateProps(): {
97
+ getIndeterminateProps: () => {
97
98
  "aria-checked": "mixed" | undefined;
98
99
  checked: boolean;
99
100
  indeterminate: boolean;
100
- onCheckedChange(): void;
101
+ onCheckedChange: () => void;
101
102
  };
102
103
  }
103
104
 
104
105
  /** @since 6.0.0 */
105
106
  export interface CombinedCheckboxGroupReturnValue<V extends string> {
106
- reset(): void;
107
+ reset: () => void;
107
108
  checkedValues: ReadonlySet<V>;
108
109
  setCheckedValues: UseStateSetter<ReadonlySet<V>>;
109
- getCheckboxProps(value: V): {
110
+ getCheckboxProps: (value: V) => {
110
111
  name?: string;
111
112
  value?: V;
112
113
  checked: boolean;
113
- onChange?(): void;
114
- onCheckedChange?(): void;
114
+ onChange?: () => void;
115
+ onCheckedChange?: () => void;
115
116
  };
116
- getIndeterminateProps?(): {
117
+ getIndeterminateProps?: () => {
117
118
  "aria-checked": "mixed" | undefined;
118
119
  name?: string;
119
120
  checked: boolean;
120
121
  indeterminate: boolean;
121
- onChange?(): void;
122
- onCheckedChange?(): void;
122
+ onChange?: () => void;
123
+ onCheckedChange?: () => void;
123
124
  };
124
125
  }
125
126
 
@@ -266,12 +267,12 @@ export function useCheckboxGroup<V extends string>(
266
267
  values,
267
268
  defaultCheckedValues = EMPTY_LIST,
268
269
  } = options;
269
- const [checkedValues, setCheckedValues] = useState<ReadonlySet<V>>(() => {
270
- if (typeof defaultCheckedValues === "function") {
271
- return new Set(defaultCheckedValues());
272
- }
273
-
274
- return new Set(defaultCheckedValues);
270
+ const {
271
+ value: checkedValues,
272
+ setValue: setCheckedValues,
273
+ toggleValue,
274
+ } = useReadonlySet({
275
+ defaultValue: defaultCheckedValues,
275
276
  });
276
277
  const initial = useRef(checkedValues);
277
278
 
@@ -287,7 +288,7 @@ export function useCheckboxGroup<V extends string>(
287
288
  checked,
288
289
  indeterminate,
289
290
  [menu ? "onCheckedChange" : "onChange"]() {
290
- setCheckedValues(() => {
291
+ setCheckedValues((checkedValues) => {
291
292
  if (checkedValues.size === 0 || indeterminate) {
292
293
  return new Set(values);
293
294
  }
@@ -302,7 +303,7 @@ export function useCheckboxGroup<V extends string>(
302
303
  return {
303
304
  reset: useCallback(() => {
304
305
  setCheckedValues(initial.current);
305
- }, []),
306
+ }, [setCheckedValues]),
306
307
  checkedValues,
307
308
  setCheckedValues,
308
309
  getIndeterminateProps,
@@ -312,16 +313,7 @@ export function useCheckboxGroup<V extends string>(
312
313
  value: menu ? undefined : value,
313
314
  checked: checkedValues.has(value),
314
315
  [menu ? "onCheckedChange" : "onChange"]() {
315
- setCheckedValues((prevValues) => {
316
- const nextValues = new Set(prevValues);
317
- if (prevValues.has(value)) {
318
- nextValues.delete(value);
319
- } else {
320
- nextValues.add(value);
321
- }
322
-
323
- return nextValues;
324
- });
316
+ toggleValue(value);
325
317
  },
326
318
  };
327
319
  },
@@ -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,