@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,258 +1,249 @@
1
1
  "use client";
2
- import {
3
- useEffect,
4
- type AriaAttributes,
5
- type ReactElement,
6
- type Ref,
7
- } from "react";
8
- import { TextField, type TextFieldProps } from "../form/TextField.js";
9
- import { type ConfigurableComboboxMenuProps } from "../form/useCombobox.js";
10
- import { useEditableCombobox } from "../form/useEditableCombobox.js";
11
- import { Menu } from "../menu/Menu.js";
12
- import { type KeyboardMovementFocusChangeEventHandler } from "../movement/types.js";
2
+ import { type ReactElement } from "react";
3
+ import { Listbox } from "../form/Listbox.js";
4
+ import { TextField } from "../form/TextField.js";
5
+ import { ListSubheader } from "../list/ListSubheader.js";
13
6
  import { KeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
14
- import {
15
- type PropsWithRef,
16
- type TextExtractor,
17
- type UseStateSetter,
18
- } from "../types.js";
19
7
  import { useEnsuredId } from "../useEnsuredId.js";
20
8
  import { useEnsuredRef } from "../useEnsuredRef.js";
21
- import { useEnsuredState } from "../useEnsuredState.js";
22
- import {
23
- AutocompleteCircularProgress,
24
- type AutocompleteCircularProgressProps,
25
- } from "./AutocompleteCircularProgress.js";
26
- import {
27
- AutocompleteDropdownButton,
28
- type ConfigurableAutocompleteDropdownButtonProps,
29
- } from "./AutocompleteDropdownButton.js";
30
- import { FilterAutocompleteOptions } from "./FilterAutocompleteOptions.js";
9
+ import { AutocompleteChip } from "./AutocompleteChip.js";
10
+ import { AutocompleteCircularProgress } from "./AutocompleteCircularProgress.js";
11
+ import { AutocompleteClearButton } from "./AutocompleteClearButton.js";
12
+ import { AutocompleteDropdownButton } from "./AutocompleteDropdownButton.js";
13
+ import { AutocompleteListboxChildren } from "./AutocompleteListboxChildren.js";
31
14
  import { autocomplete, autocompleteRightAddon } from "./autocompleteStyles.js";
32
15
  import {
33
- type AutocompleteMenuLabel,
34
- type AutocompleteOptionsProps,
16
+ defaultAutocompleteFilter,
17
+ noopAutocompleteFilter,
18
+ } from "./defaults.js";
19
+ import {
20
+ type AutocompleteMultiSelectProps,
21
+ type AutocompleteOption,
22
+ type AutocompleteProps,
23
+ type AutocompleteSingleSelectProps,
35
24
  } from "./types.js";
25
+ import { useAutocomplete } from "./useAutocomplete.js";
36
26
 
37
- const noop = (): void => {
38
- // do nothing
39
- };
27
+ const noop = (): undefined => undefined;
40
28
 
41
29
  /**
30
+ * This is the single select autocomplete implementation.
31
+ *
42
32
  * @since 6.0.0
43
33
  */
44
- export interface AutocompleteProps<T>
45
- extends Omit<TextFieldProps, "value" | "defaultValue">,
46
- AutocompleteOptionsProps<T> {
47
- /** @defaultValue `"list"` */
48
- "aria-autocomplete"?: AriaAttributes["aria-autocomplete"];
49
- inputRef?: Ref<HTMLInputElement>;
50
- value?: string;
51
- defaultValue?: string;
52
-
53
- /**
54
- * An `aria-label` to pass to the `Menu` component that describes the list of
55
- * {@link options}. Either this or the {@link menuLabelledBy} are required for
56
- * accessibility.
57
- */
58
- menuLabel?: string;
59
-
60
- /**
61
- * An `aria-labelledby` to pass to the `Menu` component that describes the
62
- * list of {@link options}. Either this or the {@link menuLabel} are required
63
- * for accessibility.
64
- */
65
- menuLabelledBy?: string;
66
-
67
- /**
68
- * Any additional props that should be passed to the `Menu` component.
69
- */
70
- menuProps?: PropsWithRef<
71
- ConfigurableComboboxMenuProps & { id?: string },
72
- HTMLDivElement
73
- >;
74
-
75
- /**
76
- * This prop should only be used when `aria-autocomplete` is set to
77
- * `"inline"` or `"both"`.
78
- */
79
- onFocusChange?: KeyboardMovementFocusChangeEventHandler;
80
-
81
- /**
82
- * This can be used to add any custom styling, change the icon, change the
83
- * label, etc for the dropdown button.
84
- *
85
- * @example Simple Example
86
- * ```tsx
87
- * dropdownButtonProps={{
88
- * "aria-label": "Open",
89
- * className: styles.dropdownButton,
90
- * icon: <MyCustomDropdownIcon />,
91
- * }}
92
- * ```
93
- */
94
- dropdownButtonProps?: ConfigurableAutocompleteDropdownButtonProps;
95
-
96
- /**
97
- * Set this to `true` to remove the {@link DropdownButton} from being rendered
98
- * after the input element.
99
- *
100
- * @defaultValue `false`
101
- */
102
- disableDropdownButton?: boolean;
103
-
104
- /**
105
- * Set this to `true` to disable a `<CircularProgress />` after the input and
106
- * before the `<DropdownButton />`.
107
- *
108
- * @defaultValue `false`
109
- */
110
- loading?: boolean;
111
-
112
- /**
113
- * @defaultValue `{ "aria-label": "Loading", ...loadingProps }`
114
- */
115
- loadingProps?: AutocompleteCircularProgressProps;
116
- }
117
-
34
+ export function Autocomplete<Option extends AutocompleteOption>(
35
+ props: AutocompleteSingleSelectProps<Option>
36
+ ): ReactElement;
118
37
  /**
38
+ * This is the multiselect autocomplete implementation.
39
+ *
119
40
  * @since 6.0.0
120
41
  */
121
- export function Autocomplete<T extends string | { label: string }>(
122
- props: AutocompleteMenuLabel<Omit<AutocompleteProps<T>, "extractor">>
42
+ export function Autocomplete<Option extends AutocompleteOption>(
43
+ props: AutocompleteMultiSelectProps<Option>
123
44
  ): ReactElement;
124
45
  /**
125
46
  * @since 6.0.0
47
+ * @internal
126
48
  */
127
- export function Autocomplete<T>(
128
- props: AutocompleteMenuLabel<
129
- AutocompleteProps<T> & { extractor: TextExtractor<T> }
130
- >
131
- ): ReactElement;
132
- export function Autocomplete<T>(
133
- props: AutocompleteMenuLabel<AutocompleteProps<T>>
49
+ export function Autocomplete<Option extends AutocompleteOption>(
50
+ props: AutocompleteProps<Option>
134
51
  ): ReactElement {
135
52
  const {
136
53
  id: propId,
137
- value: propValue,
138
- defaultValue = "",
139
- onClick,
54
+ onBlur,
140
55
  onFocus,
56
+ onClick,
57
+ onChange,
141
58
  onKeyDown,
142
- onChange = noop,
143
- onFocusChange,
59
+ onOpen,
60
+ type,
144
61
  className,
145
- options,
146
- children,
147
62
  inputRef,
148
- extractor,
149
- onAutocomplete = noop,
150
- getOptionProps,
151
- clearOnAutocomplete,
152
- menuProps,
153
- menuLabel,
154
- menuLabelledBy,
155
- containerProps,
156
- filter,
157
- whitespace,
158
- disableFilter,
159
- noOptionsChildren,
160
- dropdownButtonProps,
161
- disableDropdownButton,
63
+ children,
64
+ filter = type === "search"
65
+ ? noopAutocompleteFilter
66
+ : defaultAutocompleteFilter,
67
+ filterSelected,
68
+ value,
69
+ setValue,
70
+ defaultValue,
71
+ onValueChange,
72
+ query,
73
+ setQuery,
74
+ defaultQuery,
75
+ options,
76
+ getOptionLabel: propGetOptionLabel,
77
+ getOptionProps: propGetOptionProps,
78
+ allowAnyValue,
79
+ listboxProps,
80
+ listboxLabel,
81
+ listboxLabelledBy,
82
+ selectedIcon,
83
+ unselectedIcon,
84
+ selectedIconAfter,
85
+ checkboxes,
86
+ disableSelectedIcon,
162
87
  loading,
163
88
  loadingProps,
89
+ dropdownButtonProps,
90
+ disableDropdownButton,
91
+ clearButtonProps,
92
+ disableClearButton,
93
+ noOptionsChildren = <ListSubheader>No Options</ListSubheader>,
94
+ leftAddon: propLeftAddon,
95
+ disableLeftAddonStyles: propDisableLeftAddonStyles,
96
+ labelProps,
164
97
  rightAddon,
165
98
  rightAddonProps,
99
+ containerProps,
100
+ getChipProps = noop,
101
+ updateQueryOnSelect,
102
+ visible,
103
+ setVisible,
104
+ defaultVisible,
105
+ disableInlineChips,
106
+ disableCloseOnSelect,
166
107
  ...remaining
167
108
  } = props;
109
+ const { form, disabled } = props;
168
110
 
169
- const { form } = props;
170
111
  const id = useEnsuredId(propId, "autocomplete");
171
- const menuId = useEnsuredId(menuProps?.id, "autocomplete-listbox");
172
-
173
- const [query, setQuery] = useEnsuredState<string, UseStateSetter<string>>({
174
- value: propValue,
175
- setValue: typeof propValue === "string" ? noop : undefined,
176
- defaultValue,
177
- });
178
-
112
+ const menuId = useEnsuredId(listboxProps?.id, "autocomplete-listbox");
179
113
  const {
180
- visible,
181
- setVisible,
182
- getMenuProps,
183
- comboboxRef,
114
+ query: currentQuery,
115
+ value: currentValue,
116
+ setValue: currentSetValue,
117
+ multiselect,
118
+ comboboxRef: inputNodeRef,
184
119
  comboboxProps,
185
120
  movementContext,
186
- } = useEditableCombobox({
121
+ availableOptions,
122
+ getOptionLabel,
123
+ getOptionProps,
124
+ getListboxProps,
125
+ getClearButtonProps,
126
+ getDropdownButtonProps,
127
+ } = useAutocomplete({
187
128
  form,
188
- onClick,
129
+ onBlur,
189
130
  onFocus,
131
+ onClick,
132
+ onChange,
190
133
  onKeyDown,
191
- onFocusChange,
134
+ onOpen,
135
+ disabled,
136
+ filter,
137
+ filterSelected,
192
138
  popupId: menuId,
193
- popupRef: menuProps?.ref,
139
+ popupRef: listboxProps?.ref,
194
140
  comboboxId: id,
195
141
  comboboxRef: inputRef,
142
+ options,
143
+ getOptionLabel: propGetOptionLabel,
144
+ getOptionProps: propGetOptionProps,
145
+ allowAnyValue,
146
+ updateQueryOnSelect,
147
+ value,
148
+ setValue,
149
+ defaultValue,
150
+ onValueChange,
151
+ query,
152
+ setQuery,
153
+ defaultQuery,
154
+ defaultVisible,
155
+ visible,
156
+ setVisible,
157
+ checkboxes,
158
+ selectedIcon,
159
+ unselectedIcon,
160
+ selectedIconAfter,
161
+ disableSelectedIcon,
162
+ disableCloseOnSelect,
196
163
  });
197
- const [containerNodeRef, containerRef] = useEnsuredRef(containerProps?.ref);
198
- useEffect(() => {
199
- const input = comboboxRef.current;
200
- if (!input || document.activeElement !== input) {
201
- return;
202
- }
164
+ const [containerRef, containerRefCallback] = useEnsuredRef(
165
+ containerProps?.ref
166
+ );
203
167
 
204
- const target = input.value.length;
205
- input.setSelectionRange(target, target);
206
- }, [comboboxRef, loading]);
168
+ let leftAddon = propLeftAddon;
169
+ let disableLeftAddonStyles = propDisableLeftAddonStyles;
170
+ let inlineChips = false;
171
+ let floatingActive = labelProps?.floatingActive;
172
+ if (multiselect && !disableInlineChips) {
173
+ inlineChips = true;
174
+ // TODO: Maybe one day fix the typing? Might not be possible with
175
+ // destructuring though
176
+ const value = currentValue as readonly Option[];
177
+ disableLeftAddonStyles ??= true;
178
+ floatingActive ||= value.length > 0;
179
+ leftAddon = (
180
+ <>
181
+ {value.map((option, index) => {
182
+ const label = getOptionLabel(option);
183
+ const overrides = getChipProps({
184
+ index,
185
+ query: currentQuery,
186
+ option,
187
+ extractor: getOptionLabel,
188
+ });
189
+ return (
190
+ <AutocompleteChip
191
+ key={label}
192
+ {...overrides}
193
+ onClick={(event) => {
194
+ overrides?.onClick?.(event);
195
+ currentSetValue(value.filter((v) => v !== option));
196
+ }}
197
+ >
198
+ {overrides?.children ?? label}
199
+ </AutocompleteChip>
200
+ );
201
+ })}
202
+ </>
203
+ );
204
+ }
207
205
 
208
206
  return (
209
207
  <KeyboardMovementProvider value={movementContext}>
210
208
  <TextField
211
- aria-autocomplete="list"
212
209
  {...remaining}
213
- value={query}
214
210
  {...comboboxProps}
215
211
  containerProps={{
216
212
  ...containerProps,
217
- ref: containerRef,
213
+ ref: containerRefCallback,
214
+ onClick: (event) => {
215
+ containerProps?.onClick?.(event);
216
+ inputNodeRef.current?.focus();
217
+ },
218
218
  }}
219
219
  className={autocomplete({
220
220
  className,
221
221
  loading,
222
+ inlineChips,
223
+ disableClearButton,
222
224
  disableDropdownButton,
223
225
  })}
224
- onChange={(event) => {
225
- onChange(event);
226
- setQuery(event.currentTarget.value);
227
- }}
228
- onKeyDown={(event) => {
229
- comboboxProps.onKeyDown(event);
230
- if (!visible && event.key === "Escape") {
231
- onAutocomplete(null);
232
- }
233
- }}
234
- onFocus={(event) => {
235
- comboboxProps.onFocus(event);
236
- event.currentTarget.setSelectionRange(
237
- 0,
238
- event.currentTarget.value.length
239
- );
226
+ labelProps={{
227
+ ...labelProps,
228
+ floatingActive,
240
229
  }}
230
+ leftAddon={leftAddon}
231
+ disableLeftAddonStyles={disableLeftAddonStyles}
241
232
  rightAddon={
242
233
  <>
243
234
  {rightAddon}
244
235
  {loading && <AutocompleteCircularProgress {...loadingProps} />}
236
+ {!disableClearButton && !!currentQuery && (
237
+ <AutocompleteClearButton
238
+ {...clearButtonProps}
239
+ {...getClearButtonProps(clearButtonProps)}
240
+ />
241
+ )}
245
242
  {!disableDropdownButton && (
246
243
  <AutocompleteDropdownButton
247
- aria-label={menuLabel}
248
- aria-labelledby={menuLabelledBy}
249
- aria-controls={comboboxProps.id}
250
- {...dropdownButtonProps}
251
- visible={visible}
252
- onClick={() => {
253
- comboboxRef.current?.focus();
254
- setVisible((prev) => !prev);
255
- }}
244
+ aria-label={listboxLabel as string}
245
+ aria-labelledby={listboxLabelledBy}
246
+ {...getDropdownButtonProps(dropdownButtonProps)}
256
247
  />
257
248
  )}
258
249
  </>
@@ -265,30 +256,22 @@ export function Autocomplete<T>(
265
256
  }),
266
257
  }}
267
258
  />
268
- <Menu
269
- aria-label={menuLabel as string}
270
- aria-labelledby={menuLabelledBy}
271
- {...getMenuProps(menuProps)}
272
- // since the `afterInputChildren` is not included in the `comboboxRef`'s
273
- // width, the menu will no longer be equal width without changing the
274
- // fixedTo node to the container
275
- fixedTo={containerNodeRef}
259
+ <Listbox
260
+ aria-label={listboxLabel as string}
261
+ aria-labelledby={listboxLabelledBy}
262
+ {...getListboxProps(listboxProps)}
263
+ fixedTo={containerRef}
276
264
  >
277
- {children}
278
- <FilterAutocompleteOptions
279
- query={query}
280
- filter={filter}
281
- options={options}
282
- noOptionsChildren={noOptionsChildren}
283
- extractor={extractor}
284
- whitespace={whitespace}
285
- comboboxRef={comboboxRef}
286
- disableFilter={disableFilter || props["aria-autocomplete"] === "none"}
265
+ <AutocompleteListboxChildren
266
+ query={currentQuery}
267
+ options={availableOptions}
268
+ getOptionLabel={getOptionLabel}
287
269
  getOptionProps={getOptionProps}
288
- onAutocomplete={onAutocomplete}
289
- clearOnAutocomplete={clearOnAutocomplete}
290
- />
291
- </Menu>
270
+ noOptionsChildren={noOptionsChildren}
271
+ >
272
+ {children}
273
+ </AutocompleteListboxChildren>
274
+ </Listbox>
292
275
  </KeyboardMovementProvider>
293
276
  );
294
277
  }
@@ -0,0 +1,48 @@
1
+ import { forwardRef } from "react";
2
+ import { Chip } from "../chip/Chip.js";
3
+ import { getIcon } from "../icon/iconConfig.js";
4
+ import { autocompleteChip } from "./autocompleteStyles.js";
5
+ import { type AutocompleteChipProps } from "./types.js";
6
+
7
+ /**
8
+ * A small wrapper around the `Chip` that defaults the `rightAddon` to the
9
+ * remove icon and adds a default `aria-description`.
10
+ *
11
+ * @since 6.0.0
12
+ */
13
+ export const AutocompleteChip = forwardRef<
14
+ HTMLButtonElement,
15
+ AutocompleteChipProps
16
+ >(function AutocompleteChip(props, ref) {
17
+ const {
18
+ "aria-description": propAriaDescription,
19
+ children,
20
+ className,
21
+ removeIcon: propRemoveIcon,
22
+ rightAddon: propRightAddon,
23
+ ...remaining
24
+ } = props;
25
+
26
+ let rightAddon = propRightAddon;
27
+ let ariaDescription = propAriaDescription;
28
+ const removeIcon = getIcon("remove", propRemoveIcon);
29
+ if (typeof rightAddon === "undefined") {
30
+ rightAddon = removeIcon;
31
+ }
32
+
33
+ if (typeof ariaDescription === "undefined" && typeof children === "string") {
34
+ ariaDescription = `Remove "${children}"`;
35
+ }
36
+
37
+ return (
38
+ <Chip
39
+ {...remaining}
40
+ aria-description={ariaDescription}
41
+ ref={ref}
42
+ rightAddon={rightAddon}
43
+ className={autocompleteChip({ className })}
44
+ >
45
+ {children}
46
+ </Chip>
47
+ );
48
+ });
@@ -1,23 +1,12 @@
1
1
  import { type ReactElement } from "react";
2
- import {
3
- CircularProgress,
4
- type CircularProgressProps,
5
- } from "../progress/CircularProgress.js";
6
- import { type ProgressTheme } from "../progress/types.js";
7
-
8
- /**
9
- * @since 6.0.0
10
- */
11
- export interface AutocompleteCircularProgressProps
12
- extends CircularProgressProps {
13
- /** @defaultValue `"Loading"` */
14
- "aria-label"?: string;
15
-
16
- /** @defaultValue `"current-color"` */
17
- theme?: ProgressTheme;
18
- }
2
+ import { CircularProgress } from "../progress/CircularProgress.js";
3
+ import { type AutocompleteCircularProgressProps } from "./types.js";
19
4
 
20
5
  /**
6
+ * An internal component used to handle the styling and minimal accessibility
7
+ * for the `CircularProgress` within the `Autocomplete`
8
+ *
9
+ * @internal
21
10
  * @since 6.0.0
22
11
  */
23
12
  export function AutocompleteCircularProgress(
@@ -0,0 +1,44 @@
1
+ "use client";
2
+ import { type ReactElement } from "react";
3
+ import { Button } from "../button/Button.js";
4
+ import { getIcon } from "../icon/iconConfig.js";
5
+ import { useEnsuredId } from "../useEnsuredId.js";
6
+ import { autocompleteClearButton } from "./autocompleteStyles.js";
7
+ import { type AutocompleteClearButtonProps } from "./types.js";
8
+
9
+ /**
10
+ * An internal component used for to clear the value from the `Autocomplete`.
11
+ *
12
+ * @internal
13
+ * @since 6.0.0
14
+ */
15
+ export function AutocompleteClearButton(
16
+ props: AutocompleteClearButtonProps
17
+ ): ReactElement {
18
+ const {
19
+ id: propId,
20
+ className,
21
+ children,
22
+ buttonType = "icon",
23
+ "aria-labelledby": ariaLabelledBy,
24
+ "aria-label": ariaLabel = buttonType === "text" || ariaLabelledBy
25
+ ? undefined
26
+ : "Clear",
27
+ ...remaining
28
+ } = props;
29
+ const id = useEnsuredId(propId, "autocomplete-clear");
30
+
31
+ return (
32
+ <Button
33
+ {...remaining}
34
+ aria-label={ariaLabel}
35
+ aria-labelledby={ariaLabelledBy}
36
+ id={id}
37
+ className={autocompleteClearButton({ className })}
38
+ tabIndex={-1}
39
+ buttonType={buttonType}
40
+ >
41
+ {getIcon("clear", children)}
42
+ </Button>
43
+ );
44
+ }
@@ -1,41 +1,12 @@
1
1
  "use client";
2
- import {
3
- type MouseEventHandler,
4
- type ReactElement,
5
- type ReactNode,
6
- } from "react";
7
- import { Button, type ButtonProps } from "../button/Button.js";
8
- import { IconRotator, type IconRotatorProps } from "../icon/IconRotator.js";
2
+ import { type ReactElement } from "react";
3
+ import { Button } from "../button/Button.js";
4
+ import { IconRotator } from "../icon/IconRotator.js";
9
5
  import { getIcon } from "../icon/iconConfig.js";
6
+ import { type LabelRequiredForA11y } from "../types.js";
10
7
  import { useEnsuredId } from "../useEnsuredId.js";
11
-
12
- /**
13
- * @since 6.0.0
14
- */
15
- export interface ConfigurableAutocompleteDropdownButtonProps
16
- extends ButtonProps {
17
- /** @defaultValue `AutocompleteProps.menuLabel` */
18
- "aria-label"?: string;
19
- /** @defaultValue `AutocompleteProps.menuLabelledby` */
20
- "aria-labelledby"?: string;
21
-
22
- /** @defaultValue `"autocomplete-dropdown-" + useId()` */
23
- id?: string;
24
-
25
- /** @defaultValue `getIcon("dropdown")` */
26
- icon?: ReactNode;
27
- iconRotatorProps?: Omit<IconRotatorProps, "rotated">;
28
- }
29
-
30
- /**
31
- * @since 6.0.0
32
- */
33
- export interface AutocompleteDropdownButtonProps
34
- extends ConfigurableAutocompleteDropdownButtonProps {
35
- "aria-controls": string;
36
- onClick: MouseEventHandler<HTMLButtonElement>;
37
- visible: boolean;
38
- }
8
+ import { autocompleteDropdownButton } from "./autocompleteStyles.js";
9
+ import { type AutocompleteDropdownButtonProps } from "./types.js";
39
10
 
40
11
  /**
41
12
  * This is a simple `Button` wrapper to be used as a dropdown button within the
@@ -44,9 +15,16 @@ export interface AutocompleteDropdownButtonProps
44
15
  * @since 6.0.0
45
16
  */
46
17
  export function AutocompleteDropdownButton(
47
- props: AutocompleteDropdownButtonProps
18
+ props: LabelRequiredForA11y<AutocompleteDropdownButtonProps>
48
19
  ): ReactElement {
49
- const { id: propId, icon, visible, iconRotatorProps, ...remaining } = props;
20
+ const {
21
+ id: propId,
22
+ icon,
23
+ visible,
24
+ iconRotatorProps,
25
+ className,
26
+ ...remaining
27
+ } = props;
50
28
 
51
29
  const id = useEnsuredId(propId, "autocomplete-dropdown");
52
30
 
@@ -57,6 +35,7 @@ export function AutocompleteDropdownButton(
57
35
  aria-expanded={visible}
58
36
  tabIndex={-1}
59
37
  buttonType="icon"
38
+ className={autocompleteDropdownButton({ className })}
60
39
  >
61
40
  <IconRotator {...iconRotatorProps} rotated={visible}>
62
41
  {getIcon("dropdown", icon)}