@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,103 +1,601 @@
1
- import { type ReactNode } from "react";
2
- import { type MenuItemProps } from "../menu/MenuItem.jsx";
3
- import { type BaseSearchOptions, type WhitespaceFilter } from "../searching/types.js";
4
- import { type RequireAtLeastOne, type TextExtractor } from "../types.js";
1
+ import { type AriaAttributes, type ChangeEventHandler, type Dispatch, type FocusEventHandler, type MouseEventHandler, type ReactNode, type Ref } from "react";
2
+ import { type ButtonProps } from "../button/Button.js";
3
+ import { type ChipProps } from "../chip/Chip.js";
4
+ import { type OptionProps, type OptionSelectedIconProps } from "../form/Option.js";
5
+ import { type TextFieldProps } from "../form/TextField.js";
6
+ import { type ComboboxMenuProps, type ComboboxVisibilityOptions, type ConfigurableComboboxMenuProps } from "../form/useCombobox.js";
7
+ import { type EditableComboboxImplementation, type EditableComboboxOptions, type EditableComboboxWidgetProps } from "../form/useEditableCombobox.js";
8
+ import { type EditableHTMLElement } from "../form/utils.js";
9
+ import { type IconRotatorProps } from "../icon/IconRotator.js";
10
+ import { type CircularProgressProps } from "../progress/CircularProgress.js";
11
+ import { type ProgressTheme } from "../progress/types.js";
12
+ import { type BaseSearchOptions } from "../searching/types.js";
13
+ import { type PropsWithRef, type TextExtractor, type UseStateInitializer } from "../types.js";
5
14
  /**
15
+ * If a autocomplete value is one of these types, no additional code is required
16
+ * to display a label in the input/chip for the autocomplete once the value has
17
+ * been selected.
18
+ *
19
+ * - `"some value"` -> `"some value"`
20
+ * - `{ label: "Hello, world", value: 300 }` -> `"Hello, world!"`
21
+ *
6
22
  * @since 6.0.0
7
23
  */
8
- export type AutocompleteMenuLabel<T extends {
9
- menuLabel?: string;
10
- menuLabelledBy?: string;
11
- }> = RequireAtLeastOne<T, "menuLabel" | "menuLabelledBy">;
24
+ export type AutocompleteLabeledOption = string | {
25
+ label: string;
26
+ };
12
27
  /**
13
28
  * @since 6.0.0
14
29
  */
15
- export type AutocompleteFilterOptions<T> = Pick<Required<BaseSearchOptions<T>>, "list" | "query" | "extractor" | "whitespace">;
30
+ export type AutocompleteOption = AutocompleteLabeledOption | {};
16
31
  /**
17
32
  * @since 6.0.0
18
33
  */
19
- export interface AutocompleteGetOptionPropsOptions<T> {
34
+ export type AutocompleteFilterOptions<Option extends AutocompleteOption> = Pick<Required<BaseSearchOptions<Option>>, "list" | "query" | "extractor">;
35
+ /**
36
+ * @since 6.0.0
37
+ */
38
+ export type AutocompleteFilterFunction<Option extends AutocompleteOption> = (options: AutocompleteFilterOptions<Option>) => readonly Option[];
39
+ /**
40
+ * @since 6.0.0
41
+ */
42
+ export interface AutocompleteGetOptionPropsOptions<Option extends AutocompleteOption> {
20
43
  index: number;
21
- option: T;
44
+ query: string;
45
+ option: Option;
46
+ selected: boolean;
47
+ extractor: TextExtractor<Option>;
22
48
  }
23
49
  /**
50
+ * This can be used to add additional props to each option.
51
+ *
52
+ * @example Simple Example
53
+ * ```tsx
54
+ * getOptionProps={({ option }) => {
55
+ * return {
56
+ * disabled: option === "",
57
+ * className: cnb(option === "a" && styles.blue),
58
+ * leftAddon: option === value && <CheckIcon />,
59
+ * };
60
+ * }}
61
+ * ```
62
+ * @since 6.0.0
63
+ */
64
+ export type AutocompleteGetOptionProps<Option extends AutocompleteOption> = (options: AutocompleteGetOptionPropsOptions<Option>) => ConfigurableAutocompleteOptionProps | undefined;
65
+ /**
66
+ * This can be used to add additional props to each inline chip for multiselect
67
+ * autocompletes.
68
+ *
69
+ * @example Simple Example
70
+ * ```tsx
71
+ * getChipProps={({ option, index }) => {
72
+ * return {
73
+ * disabled: index < 3,
74
+ * className: cnb(option === "a" && styles.blue)<
75
+ * };
76
+ * }}
77
+ * ```
24
78
  * @since 6.0.0
25
79
  */
26
- export interface AutocompleteOptionsProps<T> {
80
+ export type AutocompleteGetChipProps<Option extends AutocompleteOption> = (options: Omit<AutocompleteGetOptionPropsOptions<Option>, "selected">) => Partial<AutocompleteChipProps> | undefined;
81
+ /**
82
+ * If the list of options contain an object that doesn't have a
83
+ * `label: string`, this prop must be provided to extract a string to display
84
+ * in the text field once selected.
85
+ *
86
+ * @example No Getter Required
87
+ * ```tsx
88
+ * const options1 = ['a', 'b', 'c', 'd'];
89
+ * const options2 = [{ label: 'a' }, { label: 'b' }, { label: 'c' }, { label: 'd' }];
90
+ *
91
+ * <Autocomplete options={options1} />
92
+ * <Autocomplete options={options2} />
93
+ * ```
94
+ *
95
+ * @example Getter Required
96
+ * ```tsx
97
+ * const options = [
98
+ * {
99
+ * name: "Alaska",
100
+ * abbr: "AK",
101
+ * },
102
+ * {
103
+ * name: "Arizona",
104
+ * abbr: "AZ",
105
+ * }
106
+ * ];
107
+ *
108
+ * <Autocomplete options={options} getOptionLabel={(state) => state.name} />
109
+ * ```
110
+ *
111
+ * @defaultValue `defaultAutocompleteExtractor`
112
+ * @since 6.0.0
113
+ */
114
+ export type AutocompleteGetOptionLabel<Option extends AutocompleteOption> = (option: Option) => string;
115
+ /**
116
+ * @since 6.0.0
117
+ */
118
+ export type ConfigurableAutocompleteOptionProps = Partial<Omit<OptionProps, "role" | "value">>;
119
+ /**
120
+ * @since 6.0.0
121
+ */
122
+ export interface AutocompleteControlledValue<T> {
123
+ value: T;
124
+ setValue: Dispatch<T>;
125
+ defaultValue?: never;
126
+ onValueChange?: never;
127
+ }
128
+ /**
129
+ * @since 6.0.0
130
+ */
131
+ export interface AutocompleteUncontrolledValue<T> {
132
+ value?: never;
133
+ setValue?: never;
134
+ defaultValue?: UseStateInitializer<T>;
27
135
  /**
28
- * This list of options to display and will be filtered based on the current
29
- * value in the text box unless {@link disableFilter} is `true`.
136
+ * This prop should be used when some action should occur whenever the value
137
+ * changes, but is not required to be stored in state. For all other cases, it
138
+ * is recommended to control the `value` instead of using this prop.
30
139
  *
31
- * When this is not a list of strings or a list of objects with a
32
- * `{ label: string }`, the {@link extractor} is required to pull a searchable
33
- * string from each option.
140
+ * @defaultValue `() => {}`
34
141
  */
35
- options: readonly T[];
142
+ onValueChange?: (value: T) => void;
143
+ }
144
+ /**
145
+ * @since 6.0.0
146
+ */
147
+ export type AutocompleteValue<T> = AutocompleteControlledValue<T> | AutocompleteUncontrolledValue<T>;
148
+ /**
149
+ * @since 6.0.0
150
+ */
151
+ export interface AutocompleteControlledQuery {
152
+ query: string;
153
+ setQuery: Dispatch<string>;
154
+ defaultQuery?: never;
155
+ }
156
+ /**
157
+ * @since 6.0.0
158
+ */
159
+ export interface AutocompleteUncontrolledQuery {
160
+ query?: never;
161
+ setQuery?: never;
162
+ defaultQuery?: UseStateInitializer<string>;
163
+ }
164
+ /**
165
+ * @since 6.0.0
166
+ */
167
+ export type AutocompleteQuery = AutocompleteControlledQuery | AutocompleteUncontrolledQuery;
168
+ /**
169
+ * This allows the `query` to be updated whenever a new value has been selected.
170
+ *
171
+ * - `"clear"` - clears the `query`
172
+ * - `"selected"` - sets the query to the selected value's label
173
+ * - `"as-is"` - doesn't change the `query`
174
+ *
175
+ * @defaultValue `(multiselect || Array.isArray(value ?? defaultValue)) ? "clear" : "as-is"`
176
+ * @since 6.0.0
177
+ */
178
+ export type AutocompleteUpdateQueryOnSelect = "clear" | "selected" | "as-is";
179
+ /**
180
+ * @since 6.0.0
181
+ */
182
+ export interface AutocompleteUnknownQueryAndValueOptions<Option extends AutocompleteOption> {
183
+ query?: string;
184
+ setQuery?: Dispatch<string>;
185
+ defaultQuery?: UseStateInitializer<string>;
186
+ value?: Option | null | readonly Option[];
187
+ setValue?: Dispatch<Option | null | readonly Option[]>;
188
+ defaultValue?: UseStateInitializer<Option | null | readonly Option[]>;
189
+ onValueChange?: (value: Option | null | readonly Option[]) => void;
190
+ }
191
+ /**
192
+ * A utility type that makes the `getOptionLabel` required when an option is not
193
+ * a {@link AutocompleteLabeledOption}.
194
+ *
195
+ * @since 6.0.0
196
+ */
197
+ export type AutocompleteOptionLabelExtractor<Option extends AutocompleteOption> = Option extends AutocompleteLabeledOption ? {
198
+ getOptionLabel?: AutocompleteGetOptionLabel<Option>;
199
+ } : {
200
+ getOptionLabel: AutocompleteGetOptionLabel<Option>;
201
+ };
202
+ /**
203
+ * @since 6.0.0
204
+ */
205
+ export interface AutocompleteFilteringOptions<Option extends AutocompleteOption> {
36
206
  /**
37
- * This controls how the {@link options} are filtered based on the current
38
- * value in the text box.
207
+ * The list of options that can be shown within the autocomplete and filtered
208
+ * based on the current query.
209
+ */
210
+ options: readonly Option[];
211
+ /** @see {@link AutocompleteGetOptionLabel} */
212
+ getOptionLabel?: AutocompleteGetOptionLabel<Option>;
213
+ /**
214
+ * The function that filters the {@link options} based on the current query
215
+ * and defaults to a case insensitive search that starts with the query.
216
+ *
217
+ * @example Case Insensitive Anywhere
218
+ * ```tsx
219
+ * import { caseInsensitiveSearch } from "@react-md/core/searching/caseInsensitive";
220
+ *
221
+ * <Autocomplete {...props} filter={caseInsensitiveSearch} />
222
+ * ```
39
223
  *
40
- * @example Fuzzy Search
224
+ * @example Fuzzy Filtering
41
225
  * ```tsx
42
226
  * import { fuzzySearch } from "@react-md/core/searching/fuzzy";
43
227
  *
44
- * <Autocomplete
45
- * {...props}
46
- * filter={fuzzySearch}
47
- * />
228
+ * <Autocomplete {...props} filter={fuzzySearch} />
48
229
  * ```
49
230
  *
50
- * @defaultValue `caseInsensitiveSearch`
51
- */
52
- filter?(options: AutocompleteFilterOptions<T>): readonly T[];
53
- /**
54
- * @example
231
+ * @example Async Searching
55
232
  * ```tsx
56
- * <Autocomplete
57
- * options={[{ children: "Apple" }, { children = "Banana" }]}
58
- * extractor={(option) => option.children}
59
- * {...props}
60
- * />
233
+ * import { useDebouncedFunction } from "@react-md/core/useDebouncedFunction";
234
+ * import { useState } from "react";
235
+ *
236
+ * interface State {
237
+ * loading: boolean;
238
+ * options: readonly string[];
239
+ * }
240
+ *
241
+ * function Example() {
242
+ * const [state, setState] = useState<State>({
243
+ * loading: false,
244
+ * options: [],
245
+ * });
246
+ *
247
+ * const search = useDebouncedFunction(async (query: string) => {
248
+ * setState(prev => ({ ...prev, loading: true }));
249
+ *
250
+ * const options = await someAsyncTask(query);
251
+ * setState({ loading: false, options })
252
+ * });
253
+ *
254
+ * return (
255
+ * <Autocomplete
256
+ * {...props}
257
+ * // Setting `type="search"` automatically updates the `filter` prop to
258
+ * // be `noopAutocompleteFilter`
259
+ * type="search"
260
+ * options={options}
261
+ * onChange={(event) => search(event.currentTarget.value)}
262
+ * />
263
+ * );
264
+ * }
61
265
  * ```
266
+ *
267
+ * @defaultValue `defaultAutocompleteFilter`
268
+ */
269
+ filter?: AutocompleteFilterFunction<Option>;
270
+ /**
271
+ * Set this to `true` to update the filtering behavior to also remove the
272
+ * selected value from the available options. This is mostly for the
273
+ * multiselect behavior.
274
+ *
275
+ * @defaultValue `false`
276
+ */
277
+ filterSelected?: boolean;
278
+ /**
279
+ * Set this to `true` to allow any value to be typed into the autocomplete
280
+ * instead of enforcing an empty string or one of the option labels.
281
+ *
282
+ * @defaultValue `filter === noopAutocompleteFilter`
283
+ */
284
+ allowAnyValue?: boolean;
285
+ }
286
+ /**
287
+ * @since 6.0.0
288
+ */
289
+ export interface AutocompleteFilterAndListboxOptions<Option extends AutocompleteOption> extends AutocompleteFilteringOptions<Option>, OptionSelectedIconProps {
290
+ /**
291
+ * Set this to `true` when using a multiselect autocomplete to update each
292
+ * option to use checkboxes to show the selection state.
293
+ *
294
+ * @defaultValue `false`
295
+ */
296
+ checkboxes?: boolean;
297
+ /**
298
+ * @see {@link OptionSelectedIconProps.disableSelectedIcon}
299
+ * @defaultValue `!checkboxes`
300
+ */
301
+ disableSelectedIcon?: boolean;
302
+ /**
303
+ * @see {@link AutocompleteUpdateQueryOnSelect}
304
+ * @defaultValue `multiselect ? "clear" : "as-is"`
305
+ */
306
+ updateQueryOnSelect?: AutocompleteUpdateQueryOnSelect;
307
+ /**
308
+ * Set this to `true` to prevent the listbox from closing when an option is
309
+ * selected.
310
+ *
311
+ * @defaultValue `checkboxes`
312
+ */
313
+ disableCloseOnSelect?: boolean;
314
+ /** @see {@link AutocompleteGetOptionProps} */
315
+ getOptionProps?: AutocompleteGetOptionProps<Option>;
316
+ }
317
+ /**
318
+ * @since 6.0.0
319
+ */
320
+ export interface AutocompleteEditableComboboxOptions<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends EditableComboboxOptions<ComboboxEl, PopupEl>, AutocompleteFilterAndListboxOptions<Option> {
321
+ onBlur?: FocusEventHandler<ComboboxEl>;
322
+ onChange?: ChangeEventHandler<ComboboxEl>;
323
+ /**
324
+ * This is a convenience prop for the `onEntering`/`onEntered` transition
325
+ * callbacks that will ensure it is only called once even if the transitions
326
+ * are disabled. A great use-case for this function is to fetch data once the
327
+ * menu is opened.
328
+ */
329
+ onOpen?: () => void;
330
+ }
331
+ /**
332
+ * @since 6.0.0
333
+ */
334
+ export type AutocompleteQueryAndExtractorOptions<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> = AutocompleteEditableComboboxOptions<Option, ComboboxEl, PopupEl> & AutocompleteOptionLabelExtractor<Option> & AutocompleteQuery;
335
+ /**
336
+ * @since 6.0.0
337
+ */
338
+ export type AutocompleteSingleSelectOptions<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> = AutocompleteQueryAndExtractorOptions<Option, ComboboxEl, PopupEl> & AutocompleteValue<Option | null>;
339
+ /**
340
+ * @since 6.0.0
341
+ */
342
+ export type AutocompleteMultiSelectOptions<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> = AutocompleteQueryAndExtractorOptions<Option, ComboboxEl, PopupEl> & AutocompleteValue<readonly Option[]>;
343
+ /**
344
+ * @since 6.0.0
345
+ */
346
+ export interface AutocompleteOptions<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends AutocompleteEditableComboboxOptions<Option, ComboboxEl, PopupEl>, AutocompleteUnknownQueryAndValueOptions<Option> {
347
+ }
348
+ /**
349
+ * @since 6.0.0
350
+ */
351
+ export interface AutocompleteComboboxProps<ComboboxEl extends EditableHTMLElement = HTMLInputElement> extends EditableComboboxWidgetProps<ComboboxEl> {
352
+ "aria-autocomplete": NonNullable<AriaAttributes["aria-autocomplete"]>;
353
+ value: string;
354
+ onBlur: FocusEventHandler<ComboboxEl>;
355
+ onChange: ChangeEventHandler<ComboboxEl>;
356
+ }
357
+ /**
358
+ * @since 6.0.0
359
+ */
360
+ export interface AutocompleteListboxProps<T extends AutocompleteOption = AutocompleteOption, PopupEl extends HTMLElement = HTMLElement> extends Omit<ComboboxMenuProps<PopupEl>, "ref">, OptionSelectedIconProps {
361
+ value: T | null | readonly T[];
362
+ setValue: Dispatch<T>;
363
+ onEnter: (appearing: boolean) => void;
364
+ }
365
+ /**
366
+ * @since 6.0.0
367
+ */
368
+ export interface ConfigurableAutocompleteListboxProps extends ConfigurableComboboxMenuProps, OptionSelectedIconProps {
369
+ id?: string;
370
+ }
371
+ /**
372
+ * @since 6.0.0
373
+ */
374
+ export interface ConfigurableAutocompleteClearButtonProps extends ButtonProps {
375
+ /** @defaultValue `"Clear"` */
376
+ "aria-label"?: string;
377
+ /** @defaultValue `"autocomplete-clear-" + useId()` */
378
+ id?: string;
379
+ }
380
+ /**
381
+ * @internal
382
+ * @since 6.0.0
383
+ */
384
+ export interface AutocompleteClearButtonProps extends ConfigurableAutocompleteClearButtonProps {
385
+ onClick: MouseEventHandler<HTMLButtonElement>;
386
+ }
387
+ /**
388
+ * @since 6.0.0
389
+ */
390
+ export interface ConfigurableAutocompleteDropdownButtonProps extends ButtonProps {
391
+ /** @defaultValue `AutocompleteProps.listboxLabel` */
392
+ "aria-label"?: string;
393
+ /** @defaultValue `AutocompleteProps.listboxLabelledby` */
394
+ "aria-labelledby"?: string;
395
+ /** @defaultValue `"autocomplete-dropdown-" + useId()` */
396
+ id?: string;
397
+ /** @defaultValue `getIcon("dropdown")` */
398
+ icon?: ReactNode;
399
+ iconRotatorProps?: Omit<IconRotatorProps, "rotated">;
400
+ }
401
+ /**
402
+ * @since 6.0.0
403
+ */
404
+ export interface AutocompleteDropdownButtonProps extends ConfigurableAutocompleteDropdownButtonProps {
405
+ "aria-controls": string;
406
+ onClick: MouseEventHandler<HTMLButtonElement>;
407
+ visible: boolean;
408
+ }
409
+ /**
410
+ * @since 6.0.0
411
+ */
412
+ export interface AutocompleteCircularProgressProps extends CircularProgressProps {
413
+ /** @defaultValue `"Loading"` */
414
+ "aria-label"?: string;
415
+ /** @defaultValue `"current-color"` */
416
+ theme?: ProgressTheme;
417
+ }
418
+ /**
419
+ * @since 6.0.0
420
+ */
421
+ export interface AutocompleteChipProps extends ChipProps {
422
+ /**
423
+ * @defaultValue `typeof children === "string" && \`Remove "${children}"\`
424
+ */
425
+ "aria-description"?: string;
426
+ /** @defaultValue `getIcon("remove")` */
427
+ removeIcon?: ReactNode;
428
+ children: ReactNode;
429
+ }
430
+ /**
431
+ * @since 6.0.0
432
+ */
433
+ export interface AutocompleteWithQueryImplementation<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends EditableComboboxImplementation<ComboboxEl, PopupEl> {
434
+ query: string;
435
+ setQuery: Dispatch<string>;
436
+ comboboxProps: AutocompleteComboboxProps<ComboboxEl>;
437
+ /**
438
+ * This is a convenience prop to determine if the autocomplete supports
439
+ * multiselect.
440
+ */
441
+ multiselect: boolean;
442
+ /**
443
+ * This is the current list of options that will be filtered based on the
444
+ * current `query`. This should normally be rendered in the
445
+ * `AutocompleteListboxChildren` component
446
+ */
447
+ availableOptions: readonly Option[];
448
+ /**
449
+ * Generates the props required for the `Listbox` component and should
450
+ * normally be provided any menu props that might override the default display
451
+ * settings.
452
+ */
453
+ getListboxProps: (overrides?: ConfigurableAutocompleteListboxProps) => AutocompleteListboxProps<Option, PopupEl>;
454
+ /**
455
+ * Generates the props required for the `AutocompleteClearButton`.
456
+ */
457
+ getClearButtonProps: (overrides?: ConfigurableAutocompleteClearButtonProps) => AutocompleteClearButtonProps;
458
+ /**
459
+ * Generates the props required for the `AutocompleteDropdownButton`.
460
+ */
461
+ getDropdownButtonProps: (overrides?: ConfigurableAutocompleteDropdownButtonProps) => AutocompleteDropdownButtonProps;
462
+ /** @see {@link AutocompleteGetOptionLabel} */
463
+ getOptionLabel: AutocompleteGetOptionLabel<Option>;
464
+ /** @see {@link AutocompleteGetOptionProps} */
465
+ getOptionProps: AutocompleteGetOptionProps<Option>;
466
+ }
467
+ /**
468
+ * @since 6.0.0
469
+ */
470
+ export interface AutocompleteSingleSelectImplementation<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
471
+ value: Option | null;
472
+ setValue: Dispatch<Option | null>;
473
+ }
474
+ /**
475
+ * @since 6.0.0
476
+ */
477
+ export interface AutocompleteMultiSelectImplementation<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
478
+ value: readonly Option[];
479
+ setValue: Dispatch<readonly Option[]>;
480
+ }
481
+ /**
482
+ * @since 6.0.0
483
+ */
484
+ export interface AutocompleteImplementation<Option extends AutocompleteOption, ComboboxEl extends EditableHTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends AutocompleteWithQueryImplementation<Option, ComboboxEl, PopupEl> {
485
+ value: Option | null | readonly Option[];
486
+ setValue: Dispatch<Option | null | readonly Option[]>;
487
+ }
488
+ /**
489
+ * @since 6.0.0
490
+ */
491
+ export interface AutocompleteBaseProps<Option extends AutocompleteOption> extends Omit<TextFieldProps, "value" | "defaultValue">, AutocompleteFilterAndListboxOptions<Option>, ComboboxVisibilityOptions {
492
+ inputRef?: Ref<HTMLInputElement>;
493
+ /**
494
+ * An `aria-label` to pass to the `Listbox` component that describes the list
495
+ * of {@link options}. Either this or the {@link listboxLabelledBy} are
496
+ * required for accessibility.
497
+ */
498
+ listboxLabel?: string;
499
+ /**
500
+ * An `aria-labelledby` to pass to the `Listbox` component that describes the
501
+ * list of {@link options}. Either this or the {@link listboxLabel} are
502
+ * required for accessibility.
62
503
  */
63
- extractor?: TextExtractor<T>;
504
+ listboxLabelledBy?: string;
64
505
  /**
65
- * This can be used to add additional props to each option.
506
+ * Any additional props that should be passed to the `Listbox` component.
507
+ */
508
+ listboxProps?: PropsWithRef<ConfigurableAutocompleteListboxProps, HTMLDivElement>;
509
+ /** @see {@link AutocompleteGetOptionProps} */
510
+ getOptionProps?: AutocompleteGetOptionProps<Option>;
511
+ /**
512
+ * This can be used to add any custom styling, change the icon, change the
513
+ * label, etc for the dropdown button.
66
514
  *
67
515
  * @example Simple Example
68
516
  * ```tsx
69
- * getOptionProps={({ option }) => {
70
- * return {
71
- * disabled: option === "",
72
- * className: cnb(option === "a" && styles.blue),
73
- * leftAddon: option === value && <CheckIcon />,
74
- * };
517
+ * dropdownButtonProps={{
518
+ * "aria-label": "Open",
519
+ * className: styles.dropdownButton,
520
+ * icon: <MyCustomDropdownIcon />,
75
521
  * }}
76
522
  * ```
77
523
  */
78
- getOptionProps?(options: AutocompleteGetOptionPropsOptions<T>): Partial<MenuItemProps> | undefined;
524
+ dropdownButtonProps?: ConfigurableAutocompleteDropdownButtonProps;
79
525
  /**
80
- * The children to display when there are no {@link options} due to the
81
- * current text box value.
526
+ * Set this to `true` to remove the {@link DropdownButton} from being rendered
527
+ * after the input element.
82
528
  *
83
- * @defaultValue `<ListSubheader>No options</ListSubheader`
529
+ * @defaultValue `false`
84
530
  */
85
- noOptionsChildren?: ReactNode;
531
+ disableDropdownButton?: boolean;
86
532
  /**
87
- * This will be called whenever one of the options are selected or reset.
533
+ * Set this to `true` to disable a `<CircularProgress />` after the input and
534
+ * before the `<DropdownButton />`.
535
+ *
536
+ * @defaultValue `false`
88
537
  */
89
- onAutocomplete?(option: T | null): void;
538
+ loading?: boolean;
539
+ /**
540
+ * @defaultValue `{ "aria-label": "Loading", ...loadingProps }`
541
+ */
542
+ loadingProps?: AutocompleteCircularProgressProps;
543
+ clearButtonProps?: PropsWithRef<ConfigurableAutocompleteClearButtonProps, HTMLButtonElement>;
90
544
  /**
91
545
  * @defaultValue `false`
92
546
  */
93
- clearOnAutocomplete?: boolean;
547
+ disableClearButton?: boolean;
548
+ /**
549
+ * This is a convenience prop for the `onEntering`/`onEntered` transition
550
+ * callbacks that will ensure it is only called once even if the transitions
551
+ * are disabled. A great use-case for this function is to fetch data once the
552
+ * menu is opened.
553
+ */
554
+ onOpen?: () => void;
94
555
  /**
95
- * Set this to `true` to disable the built-in filtering of the
96
- * {@link options}. This will always be `true` if `aria-autocomplete="none"`.
556
+ * The children to display when there are no {@link options} due to the
557
+ * current text box value.
558
+ *
559
+ * @defaultValue `<ListSubheader>No options</ListSubheader`
560
+ */
561
+ noOptionsChildren?: ReactNode;
562
+ /**
563
+ * Set this to `true` when using a multiselect autocomplete to prevent the
564
+ * selected values from being rendered inline with the input. This is useful
565
+ * when the selected values should be shown in a different part of the UI
566
+ * instead.
97
567
  *
98
568
  * @defaultValue `false`
99
569
  */
100
- disableFilter?: boolean;
101
- /** @defaultValue `"keep"` */
102
- whitespace?: WhitespaceFilter;
570
+ disableInlineChips?: boolean;
571
+ /** @see {@link AutocompleteGetChipProps} */
572
+ getChipProps?: AutocompleteGetChipProps<Option>;
103
573
  }
574
+ /**
575
+ * @since 6.0.0
576
+ */
577
+ export type AutocompleteListboxLabelProps = {
578
+ listboxLabel: string;
579
+ } | {
580
+ listboxLabelledBy: string;
581
+ };
582
+ /**
583
+ * @since 6.0.0
584
+ */
585
+ export type AutocompleteQueryAndExtractorProps<Option extends AutocompleteOption> = AutocompleteBaseProps<Option> & AutocompleteOptionLabelExtractor<Option> & AutocompleteQuery & AutocompleteListboxLabelProps;
586
+ /**
587
+ * @since 6.0.0
588
+ */
589
+ export type AutocompleteSingleSelectProps<Option extends AutocompleteOption> = AutocompleteQueryAndExtractorProps<Option> & AutocompleteValue<Option | null> & {
590
+ checkboxes?: never;
591
+ getChipProps?: never;
592
+ disableInlineChips?: never;
593
+ };
594
+ /**
595
+ * @since 6.0.0
596
+ */
597
+ export type AutocompleteMultiSelectProps<Option extends AutocompleteOption> = AutocompleteQueryAndExtractorProps<Option> & AutocompleteValue<readonly Option[]>;
598
+ /**
599
+ * @since 6.0.0
600
+ */
601
+ export type AutocompleteProps<Option extends AutocompleteOption> = AutocompleteBaseProps<Option> & AutocompleteUnknownQueryAndValueOptions<Option>;