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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. package/dist/_box-shadows.scss +76 -0
  2. package/dist/_colors.scss +279 -277
  3. package/dist/_core.scss +107 -16
  4. package/dist/_object-fit.scss +86 -0
  5. package/dist/_utils.scss +246 -72
  6. package/dist/app-bar/AppBar.d.ts +1 -90
  7. package/dist/app-bar/AppBar.js +1 -40
  8. package/dist/app-bar/AppBar.js.map +1 -1
  9. package/dist/app-bar/AppBarTitle.d.ts +1 -27
  10. package/dist/app-bar/AppBarTitle.js +1 -15
  11. package/dist/app-bar/AppBarTitle.js.map +1 -1
  12. package/dist/app-bar/_app-bar.scss +156 -25
  13. package/dist/app-bar/styles.d.ts +117 -0
  14. package/dist/app-bar/styles.js +55 -0
  15. package/dist/app-bar/styles.js.map +1 -0
  16. package/dist/autocomplete/Autocomplete.d.ts +8 -79
  17. package/dist/autocomplete/Autocomplete.js +112 -83
  18. package/dist/autocomplete/Autocomplete.js.map +1 -1
  19. package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
  20. package/dist/autocomplete/AutocompleteChip.js +34 -0
  21. package/dist/autocomplete/AutocompleteChip.js.map +1 -0
  22. package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
  23. package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
  24. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  25. package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
  26. package/dist/autocomplete/AutocompleteClearButton.js +29 -0
  27. package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
  28. package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
  29. package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
  30. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  31. package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
  32. package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
  33. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
  34. package/dist/autocomplete/_autocomplete.scss +362 -34
  35. package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
  36. package/dist/autocomplete/autocompleteStyles.js +17 -8
  37. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  38. package/dist/autocomplete/defaults.d.ts +9 -9
  39. package/dist/autocomplete/defaults.js +13 -13
  40. package/dist/autocomplete/defaults.js.map +1 -1
  41. package/dist/autocomplete/types.d.ts +554 -56
  42. package/dist/autocomplete/types.js.map +1 -1
  43. package/dist/autocomplete/useAutocomplete.d.ts +22 -0
  44. package/dist/autocomplete/useAutocomplete.js +281 -0
  45. package/dist/autocomplete/useAutocomplete.js.map +1 -0
  46. package/dist/autocomplete/utils.d.ts +81 -0
  47. package/dist/autocomplete/utils.js +108 -0
  48. package/dist/autocomplete/utils.js.map +1 -0
  49. package/dist/avatar/_avatar.scss +93 -2
  50. package/dist/badge/Badge.d.ts +1 -20
  51. package/dist/badge/Badge.js +1 -14
  52. package/dist/badge/Badge.js.map +1 -1
  53. package/dist/badge/_badge.scss +90 -3
  54. package/dist/badge/styles.d.ts +26 -0
  55. package/dist/badge/styles.js +18 -0
  56. package/dist/badge/styles.js.map +1 -0
  57. package/dist/box/Box.js +2 -1
  58. package/dist/box/Box.js.map +1 -1
  59. package/dist/box/_box.scss +130 -17
  60. package/dist/box/styles.d.ts +6 -0
  61. package/dist/box/styles.js +2 -1
  62. package/dist/box/styles.js.map +1 -1
  63. package/dist/button/AsyncButton.d.ts +1 -1
  64. package/dist/button/AsyncButton.js.map +1 -1
  65. package/dist/button/Button.d.ts +2 -1
  66. package/dist/button/Button.js +2 -1
  67. package/dist/button/Button.js.map +1 -1
  68. package/dist/button/_button.scss +157 -25
  69. package/dist/card/Card.d.ts +16 -0
  70. package/dist/card/Card.js +11 -3
  71. package/dist/card/Card.js.map +1 -1
  72. package/dist/card/ClickableCard.d.ts +2 -1
  73. package/dist/card/ClickableCard.js +5 -2
  74. package/dist/card/ClickableCard.js.map +1 -1
  75. package/dist/card/_card.scss +90 -19
  76. package/dist/card/styles.d.ts +0 -7
  77. package/dist/card/styles.js +2 -3
  78. package/dist/card/styles.js.map +1 -1
  79. package/dist/chip/Chip.d.ts +2 -1
  80. package/dist/chip/Chip.js +2 -1
  81. package/dist/chip/Chip.js.map +1 -1
  82. package/dist/chip/_chip.scss +42 -20
  83. package/dist/chip/styles.d.ts +12 -10
  84. package/dist/chip/styles.js.map +1 -1
  85. package/dist/cssUtils.js.map +1 -1
  86. package/dist/delegateEvent.d.ts +2 -2
  87. package/dist/delegateEvent.js.map +1 -1
  88. package/dist/dialog/Dialog.d.ts +8 -21
  89. package/dist/dialog/Dialog.js +27 -27
  90. package/dist/dialog/Dialog.js.map +1 -1
  91. package/dist/dialog/FixedDialog.d.ts +1 -3
  92. package/dist/dialog/FixedDialog.js +0 -8
  93. package/dist/dialog/FixedDialog.js.map +1 -1
  94. package/dist/dialog/_dialog.scss +67 -13
  95. package/dist/dialog/styles.d.ts +56 -0
  96. package/dist/dialog/styles.js +29 -2
  97. package/dist/dialog/styles.js.map +1 -1
  98. package/dist/divider/Divider.d.ts +0 -11
  99. package/dist/divider/Divider.js.map +1 -1
  100. package/dist/divider/_divider.scss +7 -1
  101. package/dist/divider/styles.d.ts +11 -0
  102. package/dist/divider/styles.js.map +1 -1
  103. package/dist/draggable/useDraggable.d.ts +6 -6
  104. package/dist/draggable/useDraggable.js.map +1 -1
  105. package/dist/draggable/utils.d.ts +3 -3
  106. package/dist/draggable/utils.js.map +1 -1
  107. package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
  108. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  109. package/dist/expansion-panel/_expansion-panel.scss +5 -1
  110. package/dist/expansion-panel/useExpansionPanels.js +12 -24
  111. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  112. package/dist/{form → files}/FileInput.d.ts +3 -6
  113. package/dist/{form → files}/FileInput.js +3 -6
  114. package/dist/files/FileInput.js.map +1 -0
  115. package/dist/files/_files.scss +22 -0
  116. package/dist/files/styles.d.ts +5 -0
  117. package/dist/files/styles.js +7 -0
  118. package/dist/files/styles.js.map +1 -0
  119. package/dist/{form → files}/useFileUpload.d.ts +7 -9
  120. package/dist/{form → files}/useFileUpload.js +5 -7
  121. package/dist/files/useFileUpload.js.map +1 -0
  122. package/dist/files/utils.d.ts +169 -0
  123. package/dist/files/utils.js +114 -0
  124. package/dist/files/utils.js.map +1 -0
  125. package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +9 -174
  126. package/dist/{form/fileUtils.js → files/validation.js} +9 -134
  127. package/dist/files/validation.js.map +1 -0
  128. package/dist/focus/useFocusContainer.d.ts +2 -2
  129. package/dist/focus/useFocusContainer.js.map +1 -1
  130. package/dist/focus/utils.js.map +1 -1
  131. package/dist/form/FormMessage.js.map +1 -1
  132. package/dist/form/FormMessageContainer.js +4 -2
  133. package/dist/form/FormMessageContainer.js.map +1 -1
  134. package/dist/form/InputToggle.d.ts +2 -1
  135. package/dist/form/InputToggle.js +2 -1
  136. package/dist/form/InputToggle.js.map +1 -1
  137. package/dist/form/InputToggleIcon.js.map +1 -1
  138. package/dist/form/Label.js +2 -2
  139. package/dist/form/Label.js.map +1 -1
  140. package/dist/form/Listbox.d.ts +24 -0
  141. package/dist/form/Listbox.js +46 -0
  142. package/dist/form/Listbox.js.map +1 -0
  143. package/dist/form/ListboxProvider.d.ts +21 -0
  144. package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
  145. package/dist/form/ListboxProvider.js.map +1 -0
  146. package/dist/form/MenuItemTextField.js +1 -2
  147. package/dist/form/MenuItemTextField.js.map +1 -1
  148. package/dist/form/NativeSelect.js +7 -4
  149. package/dist/form/NativeSelect.js.map +1 -1
  150. package/dist/form/Option.d.ts +49 -10
  151. package/dist/form/Option.js +11 -9
  152. package/dist/form/Option.js.map +1 -1
  153. package/dist/form/Password.js.map +1 -1
  154. package/dist/form/Select.d.ts +2 -2
  155. package/dist/form/Select.js +81 -85
  156. package/dist/form/Select.js.map +1 -1
  157. package/dist/form/Slider.d.ts +4 -4
  158. package/dist/form/Slider.js +6 -2
  159. package/dist/form/Slider.js.map +1 -1
  160. package/dist/form/SliderThumb.d.ts +3 -3
  161. package/dist/form/SliderThumb.js.map +1 -1
  162. package/dist/form/SliderValueMarks.d.ts +2 -2
  163. package/dist/form/SliderValueMarks.js.map +1 -1
  164. package/dist/form/SliderValueTooltip.js.map +1 -1
  165. package/dist/form/TextArea.js +1 -2
  166. package/dist/form/TextArea.js.map +1 -1
  167. package/dist/form/TextField.js +1 -2
  168. package/dist/form/TextField.js.map +1 -1
  169. package/dist/form/TextFieldContainer.js +1 -2
  170. package/dist/form/TextFieldContainer.js.map +1 -1
  171. package/dist/form/_form.scss +186 -121
  172. package/dist/form/formMessageContainerStyles.d.ts +10 -0
  173. package/dist/form/formMessageContainerStyles.js +11 -0
  174. package/dist/form/formMessageContainerStyles.js.map +1 -0
  175. package/dist/form/inputToggleStyles.js.map +1 -1
  176. package/dist/form/optionStyles.d.ts +1 -0
  177. package/dist/form/optionStyles.js +2 -2
  178. package/dist/form/optionStyles.js.map +1 -1
  179. package/dist/form/selectUtils.js.map +1 -1
  180. package/dist/form/sliderUtils.d.ts +1 -1
  181. package/dist/form/sliderUtils.js.map +1 -1
  182. package/dist/form/textFieldContainerStyles.d.ts +0 -2
  183. package/dist/form/textFieldContainerStyles.js +1 -2
  184. package/dist/form/textFieldContainerStyles.js.map +1 -1
  185. package/dist/form/types.d.ts +3 -10
  186. package/dist/form/types.js.map +1 -1
  187. package/dist/form/useCheckboxGroup.d.ts +17 -17
  188. package/dist/form/useCheckboxGroup.js +9 -17
  189. package/dist/form/useCheckboxGroup.js.map +1 -1
  190. package/dist/form/useCombobox.d.ts +56 -21
  191. package/dist/form/useCombobox.js +19 -4
  192. package/dist/form/useCombobox.js.map +1 -1
  193. package/dist/form/useEditableCombobox.d.ts +24 -4
  194. package/dist/form/useEditableCombobox.js +5 -0
  195. package/dist/form/useEditableCombobox.js.map +1 -1
  196. package/dist/form/useNumberField.js.map +1 -1
  197. package/dist/form/useRadioGroup.d.ts +6 -6
  198. package/dist/form/useRadioGroup.js.map +1 -1
  199. package/dist/form/useResizingTextArea.js.map +1 -1
  200. package/dist/form/useSelectCombobox.d.ts +3 -4
  201. package/dist/form/useSelectCombobox.js.map +1 -1
  202. package/dist/form/useTextField.d.ts +1 -1
  203. package/dist/form/useTextField.js.map +1 -1
  204. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  205. package/dist/hoverMode/useHoverMode.d.ts +3 -3
  206. package/dist/hoverMode/useHoverMode.js.map +1 -1
  207. package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
  208. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  209. package/dist/icon/_icon.scss +151 -2
  210. package/dist/icon/iconConfig.d.ts +10 -0
  211. package/dist/icon/iconConfig.js +7 -0
  212. package/dist/icon/iconConfig.js.map +1 -1
  213. package/dist/icon/materialConfig.js.map +1 -1
  214. package/dist/icon/styles.js.map +1 -1
  215. package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
  216. package/dist/interaction/UserInteractionModeProvider.js +12 -8
  217. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  218. package/dist/interaction/types.d.ts +20 -2
  219. package/dist/interaction/types.js.map +1 -1
  220. package/dist/interaction/useElementInteraction.d.ts +7 -1
  221. package/dist/interaction/useElementInteraction.js +1 -2
  222. package/dist/interaction/useElementInteraction.js.map +1 -1
  223. package/dist/interaction/utils.d.ts +2 -2
  224. package/dist/interaction/utils.js +2 -2
  225. package/dist/interaction/utils.js.map +1 -1
  226. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  227. package/dist/layout/_layout.scss +23 -10
  228. package/dist/layout/useExpandableLayout.d.ts +3 -3
  229. package/dist/layout/useExpandableLayout.js.map +1 -1
  230. package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
  231. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  232. package/dist/layout/useTemporaryLayout.d.ts +2 -2
  233. package/dist/layout/useTemporaryLayout.js.map +1 -1
  234. package/dist/link/SkipToMainContent.js.map +1 -1
  235. package/dist/list/ListItem.d.ts +2 -1
  236. package/dist/list/ListItem.js +2 -1
  237. package/dist/list/ListItem.js.map +1 -1
  238. package/dist/list/ListItemChildren.js.map +1 -1
  239. package/dist/list/ListItemLink.d.ts +2 -1
  240. package/dist/list/ListItemLink.js +2 -1
  241. package/dist/list/ListItemLink.js.map +1 -1
  242. package/dist/list/_list.scss +6 -5
  243. package/dist/media-queries/_media-queries.scss +12 -0
  244. package/dist/media-queries/appSize.js.map +1 -1
  245. package/dist/media-queries/useMediaQuery.js +3 -1
  246. package/dist/media-queries/useMediaQuery.js.map +1 -1
  247. package/dist/menu/DropdownMenu.js.map +1 -1
  248. package/dist/menu/Menu.d.ts +8 -3
  249. package/dist/menu/Menu.js +2 -1
  250. package/dist/menu/Menu.js.map +1 -1
  251. package/dist/menu/MenuItemButton.js +6 -2
  252. package/dist/menu/MenuItemButton.js.map +1 -1
  253. package/dist/menu/useContextMenu.d.ts +3 -3
  254. package/dist/menu/useContextMenu.js.map +1 -1
  255. package/dist/movement/types.d.ts +5 -5
  256. package/dist/movement/types.js.map +1 -1
  257. package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
  258. package/dist/navigation/CollapsibleNavGroup.js +3 -4
  259. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  260. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
  261. package/dist/navigation/DefaultNavigationRenderer.js +6 -2
  262. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  263. package/dist/navigation/NavItemButton.d.ts +1 -1
  264. package/dist/navigation/NavItemButton.js +1 -0
  265. package/dist/navigation/NavItemButton.js.map +1 -1
  266. package/dist/navigation/NavItemLink.d.ts +3 -2
  267. package/dist/navigation/NavItemLink.js +6 -2
  268. package/dist/navigation/NavItemLink.js.map +1 -1
  269. package/dist/navigation/NavSubheader.d.ts +2 -3
  270. package/dist/navigation/NavSubheader.js.map +1 -1
  271. package/dist/navigation/Navigation.d.ts +1 -1
  272. package/dist/navigation/Navigation.js.map +1 -1
  273. package/dist/navigation/_navigation.scss +6 -5
  274. package/dist/navigation/types.d.ts +54 -6
  275. package/dist/navigation/types.js.map +1 -1
  276. package/dist/navigation/useActiveHeadingId.d.ts +1 -1
  277. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  278. package/dist/navigation/useNavigationExpansion.d.ts +104 -0
  279. package/dist/navigation/useNavigationExpansion.js +77 -0
  280. package/dist/navigation/useNavigationExpansion.js.map +1 -0
  281. package/dist/navigation/utils.d.ts +13 -0
  282. package/dist/navigation/utils.js +36 -0
  283. package/dist/navigation/utils.js.map +1 -0
  284. package/dist/objectFit.d.ts +69 -0
  285. package/dist/objectFit.js +52 -0
  286. package/dist/objectFit.js.map +1 -0
  287. package/dist/overlay/_overlay.scss +2 -1
  288. package/dist/positioning/useFixedPositioning.d.ts +17 -4
  289. package/dist/positioning/useFixedPositioning.js +10 -5
  290. package/dist/positioning/useFixedPositioning.js.map +1 -1
  291. package/dist/positioning/utils.js.map +1 -1
  292. package/dist/progress/LinearProgress.js.map +1 -1
  293. package/dist/progress/_progress.scss +20 -14
  294. package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
  295. package/dist/responsive-item/ResponsiveItem.js +68 -0
  296. package/dist/responsive-item/ResponsiveItem.js.map +1 -0
  297. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
  298. package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
  299. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  300. package/dist/responsive-item/_responsive-item.scss +110 -133
  301. package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
  302. package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
  303. package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
  304. package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
  305. package/dist/responsive-item/responsiveItemStyles.js +15 -0
  306. package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
  307. package/dist/scroll/useScrollLock.d.ts +5 -0
  308. package/dist/scroll/useScrollLock.js.map +1 -1
  309. package/dist/searching/utils.d.ts +2 -2
  310. package/dist/searching/utils.js.map +1 -1
  311. package/dist/segmented-button/SegmentedButton.d.ts +2 -1
  312. package/dist/segmented-button/SegmentedButton.js +2 -1
  313. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  314. package/dist/segmented-button/_segmented-button.scss +6 -6
  315. package/dist/sheet/_sheet.scss +18 -6
  316. package/dist/snackbar/ToastManager.js +15 -5
  317. package/dist/snackbar/ToastManager.js.map +1 -1
  318. package/dist/snackbar/_snackbar.scss +30 -17
  319. package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
  320. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  321. package/dist/table/_table.scss +15 -3
  322. package/dist/table/tableCellStyles.d.ts +7 -3
  323. package/dist/table/tableCellStyles.js +2 -2
  324. package/dist/table/tableCellStyles.js.map +1 -1
  325. package/dist/tabs/Tab.d.ts +2 -1
  326. package/dist/tabs/Tab.js +2 -1
  327. package/dist/tabs/Tab.js.map +1 -1
  328. package/dist/tabs/TabList.d.ts +2 -2
  329. package/dist/tabs/TabList.js.map +1 -1
  330. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  331. package/dist/tabs/TabListScrollButton.js +1 -1
  332. package/dist/tabs/TabListScrollButton.js.map +1 -1
  333. package/dist/tabs/_tabs.scss +30 -9
  334. package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
  335. package/dist/tabs/getTabListScrollToOptions.js +19 -0
  336. package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
  337. package/dist/tabs/tabStyles.d.ts +3 -0
  338. package/dist/tabs/tabStyles.js.map +1 -1
  339. package/dist/tabs/useTabList.d.ts +1 -8
  340. package/dist/tabs/useTabList.js +1 -0
  341. package/dist/tabs/useTabList.js.map +1 -1
  342. package/dist/tabs/useTabs.d.ts +6 -6
  343. package/dist/tabs/useTabs.js.map +1 -1
  344. package/dist/tabs/utils.d.ts +0 -18
  345. package/dist/tabs/utils.js +0 -15
  346. package/dist/tabs/utils.js.map +1 -1
  347. package/dist/test-utils/matchMedia.d.ts +1 -1
  348. package/dist/test-utils/matchMedia.js +4 -4
  349. package/dist/test-utils/matchMedia.js.map +1 -1
  350. package/dist/test-utils/polyfills/TextDecoder.js +0 -1
  351. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  352. package/dist/test-utils/timers.d.ts +9 -5
  353. package/dist/test-utils/timers.js +5 -5
  354. package/dist/test-utils/timers.js.map +1 -1
  355. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
  356. package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
  357. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  358. package/dist/theme/ThemeProvider.js +3 -1
  359. package/dist/theme/ThemeProvider.js.map +1 -1
  360. package/dist/theme/_a11y.scss +77 -13
  361. package/dist/theme/_colors.scss +279 -277
  362. package/dist/theme/_theme.scss +308 -37
  363. package/dist/theme/isColorScheme.d.ts +16 -0
  364. package/dist/theme/isColorScheme.js +19 -0
  365. package/dist/theme/isColorScheme.js.map +1 -0
  366. package/dist/theme/types.d.ts +53 -1
  367. package/dist/theme/types.js +1 -23
  368. package/dist/theme/types.js.map +1 -1
  369. package/dist/theme/useCSSVariables.d.ts +2 -19
  370. package/dist/theme/useCSSVariables.js.map +1 -1
  371. package/dist/theme/useColorScheme.d.ts +1 -35
  372. package/dist/theme/useColorScheme.js.map +1 -1
  373. package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
  374. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  375. package/dist/theme/useColorSchemeProvider.d.ts +1 -1
  376. package/dist/theme/useColorSchemeProvider.js +1 -1
  377. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  378. package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
  379. package/dist/theme/usePrefersDarkScheme.js.map +1 -0
  380. package/dist/theme/utils.js.map +1 -1
  381. package/dist/tooltip/useTooltip.d.ts +14 -9
  382. package/dist/tooltip/useTooltip.js +2 -1
  383. package/dist/tooltip/useTooltip.js.map +1 -1
  384. package/dist/transition/_transition.scss +16 -9
  385. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  386. package/dist/transition/types.d.ts +1 -1
  387. package/dist/transition/types.js.map +1 -1
  388. package/dist/transition/useCarousel.d.ts +3 -3
  389. package/dist/transition/useCarousel.js.map +1 -1
  390. package/dist/transition/useCollapseTransition.js.map +1 -1
  391. package/dist/transition/useTransition.js +1 -0
  392. package/dist/transition/useTransition.js.map +1 -1
  393. package/dist/transition/utils.js.map +1 -1
  394. package/dist/tree/TreeItem.d.ts +2 -1
  395. package/dist/tree/TreeItem.js +4 -3
  396. package/dist/tree/TreeItem.js.map +1 -1
  397. package/dist/tree/TreeItemExpander.js.map +1 -1
  398. package/dist/tree/_tree.scss +8 -6
  399. package/dist/tree/useTreeExpansion.d.ts +1 -1
  400. package/dist/tree/useTreeExpansion.js +6 -18
  401. package/dist/tree/useTreeExpansion.js.map +1 -1
  402. package/dist/tree/useTreeSelection.d.ts +1 -1
  403. package/dist/tree/useTreeSelection.js +7 -25
  404. package/dist/tree/useTreeSelection.js.map +1 -1
  405. package/dist/tree/utils.d.ts +1 -1
  406. package/dist/tree/utils.js.map +1 -1
  407. package/dist/types.d.ts +12 -4
  408. package/dist/types.js.map +1 -1
  409. package/dist/typography/WritingDirectionProvider.d.ts +1 -1
  410. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  411. package/dist/typography/_typography.scss +94 -37
  412. package/dist/typography/typographyStyles.js.map +1 -1
  413. package/dist/useDebouncedFunction.d.ts +1 -5
  414. package/dist/useDebouncedFunction.js +3 -1
  415. package/dist/useDebouncedFunction.js.map +1 -1
  416. package/dist/useDropzone.d.ts +4 -4
  417. package/dist/useDropzone.js.map +1 -1
  418. package/dist/useEnsuredId.js.map +1 -1
  419. package/dist/useIntersectionObserver.d.ts +5 -5
  420. package/dist/useIntersectionObserver.js.map +1 -1
  421. package/dist/useLocalStorage.d.ts +3 -3
  422. package/dist/useLocalStorage.js +1 -1
  423. package/dist/useLocalStorage.js.map +1 -1
  424. package/dist/useMutationObserver.d.ts +1 -1
  425. package/dist/useMutationObserver.js.map +1 -1
  426. package/dist/useOrientation.js +3 -1
  427. package/dist/useOrientation.js.map +1 -1
  428. package/dist/usePageInactive.d.ts +2 -2
  429. package/dist/usePageInactive.js.map +1 -1
  430. package/dist/useReadonlySet.d.ts +76 -0
  431. package/dist/useReadonlySet.js +72 -0
  432. package/dist/useReadonlySet.js.map +1 -0
  433. package/dist/useResizeListener.d.ts +1 -1
  434. package/dist/useResizeListener.js.map +1 -1
  435. package/dist/useThrottledFunction.d.ts +1 -5
  436. package/dist/useThrottledFunction.js +3 -1
  437. package/dist/useThrottledFunction.js.map +1 -1
  438. package/dist/useToggle.d.ts +3 -3
  439. package/dist/useToggle.js.map +1 -1
  440. package/dist/utils/RenderRecursively.d.ts +1 -1
  441. package/dist/utils/RenderRecursively.js.map +1 -1
  442. package/dist/utils/alphaNumericSort.d.ts +1 -1
  443. package/dist/utils/alphaNumericSort.js.map +1 -1
  444. package/dist/utils/bem.js.map +1 -1
  445. package/dist/utils/debounce.d.ts +5 -0
  446. package/dist/utils/debounce.js +17 -0
  447. package/dist/utils/debounce.js.map +1 -0
  448. package/dist/utils/nearest.js.map +1 -1
  449. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  450. package/dist/utils/throttle.d.ts +5 -0
  451. package/dist/utils/throttle.js +30 -0
  452. package/dist/utils/throttle.js.map +1 -0
  453. package/dist/utils/wait.js +3 -1
  454. package/dist/utils/wait.js.map +1 -1
  455. package/dist/window-splitter/WindowSplitter.d.ts +37 -15
  456. package/dist/window-splitter/WindowSplitter.js +38 -17
  457. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  458. package/dist/window-splitter/_window-splitter.scss +32 -14
  459. package/dist/window-splitter/styles.d.ts +14 -0
  460. package/dist/window-splitter/styles.js +18 -0
  461. package/dist/window-splitter/styles.js.map +1 -0
  462. package/package.json +24 -23
  463. package/src/app-bar/AppBar.tsx +1 -170
  464. package/src/app-bar/AppBarTitle.tsx +1 -44
  465. package/src/app-bar/styles.ts +206 -0
  466. package/src/autocomplete/Autocomplete.tsx +194 -211
  467. package/src/autocomplete/AutocompleteChip.tsx +48 -0
  468. package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
  469. package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
  470. package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
  471. package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
  472. package/src/autocomplete/autocompleteStyles.ts +48 -9
  473. package/src/autocomplete/defaults.ts +26 -17
  474. package/src/autocomplete/types.ts +744 -61
  475. package/src/autocomplete/useAutocomplete.ts +428 -0
  476. package/src/autocomplete/utils.ts +211 -0
  477. package/src/badge/Badge.tsx +1 -39
  478. package/src/badge/styles.ts +45 -0
  479. package/src/box/Box.tsx +11 -9
  480. package/src/box/styles.ts +14 -5
  481. package/src/button/AsyncButton.tsx +1 -1
  482. package/src/button/Button.tsx +5 -1
  483. package/src/card/Card.tsx +35 -4
  484. package/src/card/ClickableCard.tsx +9 -2
  485. package/src/card/styles.ts +1 -10
  486. package/src/chip/Chip.tsx +6 -1
  487. package/src/chip/styles.ts +12 -10
  488. package/src/delegateEvent.ts +5 -5
  489. package/src/dialog/Dialog.tsx +48 -61
  490. package/src/dialog/FixedDialog.tsx +1 -11
  491. package/src/dialog/styles.ts +97 -0
  492. package/src/divider/Divider.tsx +0 -12
  493. package/src/divider/styles.ts +12 -0
  494. package/src/draggable/useDraggable.ts +17 -10
  495. package/src/draggable/utils.ts +3 -3
  496. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  497. package/src/expansion-panel/useExpansionPanels.ts +18 -27
  498. package/src/{form → files}/FileInput.tsx +7 -15
  499. package/src/files/styles.ts +10 -0
  500. package/src/{form → files}/useFileUpload.ts +30 -34
  501. package/src/files/utils.ts +234 -0
  502. package/src/{form/fileUtils.ts → files/validation.ts} +13 -242
  503. package/src/focus/useFocusContainer.ts +16 -8
  504. package/src/form/FormMessageContainer.tsx +2 -2
  505. package/src/form/InputToggle.tsx +5 -1
  506. package/src/form/Label.tsx +18 -18
  507. package/src/form/Listbox.tsx +87 -0
  508. package/src/form/ListboxProvider.ts +37 -0
  509. package/src/form/MenuItemTextField.tsx +1 -2
  510. package/src/form/NativeSelect.tsx +14 -10
  511. package/src/form/Option.tsx +74 -22
  512. package/src/form/Select.tsx +89 -85
  513. package/src/form/Slider.tsx +14 -11
  514. package/src/form/SliderThumb.tsx +4 -4
  515. package/src/form/SliderValueMarks.tsx +4 -4
  516. package/src/form/TextArea.tsx +6 -8
  517. package/src/form/TextField.tsx +0 -2
  518. package/src/form/TextFieldContainer.tsx +9 -11
  519. package/src/form/formMessageContainerStyles.ts +22 -0
  520. package/src/form/optionStyles.ts +7 -2
  521. package/src/form/sliderUtils.ts +1 -1
  522. package/src/form/textFieldContainerStyles.ts +9 -14
  523. package/src/form/types.ts +3 -11
  524. package/src/form/useCheckboxGroup.ts +28 -36
  525. package/src/form/useCombobox.ts +86 -38
  526. package/src/form/useEditableCombobox.ts +43 -8
  527. package/src/form/useRadioGroup.ts +6 -6
  528. package/src/form/useSelectCombobox.ts +4 -4
  529. package/src/form/useTextField.ts +1 -1
  530. package/src/hoverMode/useHoverMode.ts +3 -3
  531. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  532. package/src/icon/iconConfig.tsx +12 -0
  533. package/src/interaction/UserInteractionModeProvider.tsx +12 -8
  534. package/src/interaction/types.ts +21 -2
  535. package/src/interaction/useElementInteraction.tsx +9 -2
  536. package/src/interaction/utils.ts +7 -7
  537. package/src/layout/useExpandableLayout.ts +3 -3
  538. package/src/layout/useLayoutAppBarHeight.ts +3 -4
  539. package/src/layout/useTemporaryLayout.ts +2 -2
  540. package/src/list/ListItem.tsx +5 -1
  541. package/src/list/ListItemLink.tsx +5 -1
  542. package/src/media-queries/useMediaQuery.ts +2 -1
  543. package/src/menu/Menu.tsx +11 -3
  544. package/src/menu/MenuItemButton.tsx +7 -1
  545. package/src/menu/useContextMenu.ts +3 -3
  546. package/src/movement/types.ts +5 -5
  547. package/src/navigation/CollapsibleNavGroup.tsx +16 -8
  548. package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
  549. package/src/navigation/NavItemButton.tsx +2 -1
  550. package/src/navigation/NavItemLink.tsx +11 -3
  551. package/src/navigation/NavSubheader.tsx +1 -1
  552. package/src/navigation/Navigation.tsx +1 -1
  553. package/src/navigation/types.ts +60 -10
  554. package/src/navigation/useActiveHeadingId.ts +1 -1
  555. package/src/navigation/useNavigationExpansion.ts +170 -0
  556. package/src/navigation/utils.ts +47 -0
  557. package/src/objectFit.ts +88 -0
  558. package/src/positioning/useFixedPositioning.ts +34 -11
  559. package/src/responsive-item/ResponsiveItem.tsx +96 -0
  560. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
  561. package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
  562. package/src/responsive-item/responsiveItemStyles.ts +81 -0
  563. package/src/scroll/useScrollLock.ts +6 -0
  564. package/src/searching/utils.ts +3 -3
  565. package/src/segmented-button/SegmentedButton.tsx +5 -1
  566. package/src/snackbar/ToastManager.tsx +16 -5
  567. package/src/snackbar/useCurrentToastActions.ts +5 -5
  568. package/src/table/tableCellStyles.ts +10 -6
  569. package/src/tabs/Tab.tsx +4 -1
  570. package/src/tabs/TabList.tsx +2 -2
  571. package/src/tabs/TabListScrollButton.tsx +4 -4
  572. package/src/tabs/getTabListScrollToOptions.ts +37 -0
  573. package/src/tabs/tabStyles.ts +4 -0
  574. package/src/tabs/useTabList.ts +2 -9
  575. package/src/tabs/useTabs.ts +6 -6
  576. package/src/tabs/utils.ts +0 -38
  577. package/src/test-utils/matchMedia.ts +5 -5
  578. package/src/test-utils/polyfills/TextDecoder.ts +0 -1
  579. package/src/test-utils/timers.ts +10 -7
  580. package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
  581. package/src/theme/ThemeProvider.tsx +3 -3
  582. package/src/theme/isColorScheme.ts +22 -0
  583. package/src/theme/types.ts +67 -1
  584. package/src/theme/useCSSVariables.ts +7 -30
  585. package/src/theme/useColorScheme.ts +1 -40
  586. package/src/theme/useColorSchemeMetaTag.ts +1 -1
  587. package/src/theme/useColorSchemeProvider.ts +2 -2
  588. package/src/tooltip/useTooltip.ts +17 -9
  589. package/src/transition/types.ts +1 -1
  590. package/src/transition/useCarousel.ts +3 -3
  591. package/src/transition/useTransition.ts +1 -0
  592. package/src/tree/TreeItem.tsx +7 -1
  593. package/src/tree/TreeItemExpander.tsx +1 -1
  594. package/src/tree/useTreeExpansion.ts +7 -25
  595. package/src/tree/useTreeSelection.ts +8 -32
  596. package/src/tree/utils.ts +6 -2
  597. package/src/types.ts +20 -4
  598. package/src/typography/WritingDirectionProvider.tsx +1 -1
  599. package/src/useDebouncedFunction.ts +4 -9
  600. package/src/useDropzone.ts +4 -4
  601. package/src/useIntersectionObserver.ts +5 -5
  602. package/src/useLocalStorage.ts +6 -6
  603. package/src/useMutationObserver.ts +1 -1
  604. package/src/useOrientation.ts +3 -1
  605. package/src/usePageInactive.ts +2 -2
  606. package/src/useReadonlySet.ts +122 -0
  607. package/src/useResizeListener.ts +1 -1
  608. package/src/useThrottledFunction.ts +6 -9
  609. package/src/useToggle.ts +3 -3
  610. package/src/utils/RenderRecursively.tsx +1 -1
  611. package/src/utils/alphaNumericSort.ts +1 -1
  612. package/src/utils/debounce.ts +22 -0
  613. package/src/utils/throttle.ts +38 -0
  614. package/src/utils/wait.ts +5 -1
  615. package/src/window-splitter/WindowSplitter.tsx +38 -43
  616. package/src/window-splitter/styles.ts +42 -0
  617. package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
  618. package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
  619. package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
  620. package/dist/dialog/DialogContainer.d.ts +0 -14
  621. package/dist/dialog/DialogContainer.js +0 -20
  622. package/dist/dialog/DialogContainer.js.map +0 -1
  623. package/dist/form/FileInput.js.map +0 -1
  624. package/dist/form/fileUtils.js.map +0 -1
  625. package/dist/form/useFileUpload.js.map +0 -1
  626. package/dist/form/useListboxProvider.d.ts +0 -31
  627. package/dist/form/useListboxProvider.js.map +0 -1
  628. package/dist/navigation/getHrefFromParents.d.ts +0 -5
  629. package/dist/navigation/getHrefFromParents.js +0 -13
  630. package/dist/navigation/getHrefFromParents.js.map +0 -1
  631. package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
  632. package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
  633. package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
  634. package/dist/responsive-item/styles.d.ts +0 -34
  635. package/dist/responsive-item/styles.js +0 -17
  636. package/dist/responsive-item/styles.js.map +0 -1
  637. package/dist/theme/usePrefersColorScheme.js.map +0 -1
  638. package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
  639. package/src/dialog/DialogContainer.tsx +0 -28
  640. package/src/form/useListboxProvider.ts +0 -45
  641. package/src/navigation/getHrefFromParents.ts +0 -15
  642. package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
  643. package/src/responsive-item/styles.ts +0 -58
  644. /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
  645. /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
@@ -1,100 +1,140 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useEffect } from "react";
3
+ import { Listbox } from "../form/Listbox.js";
4
4
  import { TextField } from "../form/TextField.js";
5
- import { useEditableCombobox } from "../form/useEditableCombobox.js";
6
- import { Menu } from "../menu/Menu.js";
5
+ import { ListSubheader } from "../list/ListSubheader.js";
7
6
  import { KeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
8
7
  import { useEnsuredId } from "../useEnsuredId.js";
9
8
  import { useEnsuredRef } from "../useEnsuredRef.js";
10
- import { useEnsuredState } from "../useEnsuredState.js";
9
+ import { AutocompleteChip } from "./AutocompleteChip.js";
11
10
  import { AutocompleteCircularProgress } from "./AutocompleteCircularProgress.js";
11
+ import { AutocompleteClearButton } from "./AutocompleteClearButton.js";
12
12
  import { AutocompleteDropdownButton } from "./AutocompleteDropdownButton.js";
13
- import { FilterAutocompleteOptions } from "./FilterAutocompleteOptions.js";
13
+ import { AutocompleteListboxChildren } from "./AutocompleteListboxChildren.js";
14
14
  import { autocomplete, autocompleteRightAddon } from "./autocompleteStyles.js";
15
- const noop = ()=>{
16
- // do nothing
17
- };
18
- export function Autocomplete(props) {
19
- const { id: propId, value: propValue, defaultValue = "", onClick, onFocus, onKeyDown, onChange = noop, onFocusChange, className, options, children, inputRef, extractor, onAutocomplete = noop, getOptionProps, clearOnAutocomplete, menuProps, menuLabel, menuLabelledBy, containerProps, filter, whitespace, disableFilter, noOptionsChildren, dropdownButtonProps, disableDropdownButton, loading, loadingProps, rightAddon, rightAddonProps, ...remaining } = props;
20
- const { form } = props;
15
+ import { defaultAutocompleteFilter, noopAutocompleteFilter } from "./defaults.js";
16
+ import { useAutocomplete } from "./useAutocomplete.js";
17
+ const noop = ()=>undefined;
18
+ /**
19
+ * @since 6.0.0
20
+ * @internal
21
+ */ export function Autocomplete(props) {
22
+ const { id: propId, onBlur, onFocus, onClick, onChange, onKeyDown, onOpen, type, className, inputRef, children, filter = type === "search" ? noopAutocompleteFilter : defaultAutocompleteFilter, filterSelected, value, setValue, defaultValue, onValueChange, query, setQuery, defaultQuery, options, getOptionLabel: propGetOptionLabel, getOptionProps: propGetOptionProps, allowAnyValue, listboxProps, listboxLabel, listboxLabelledBy, selectedIcon, unselectedIcon, selectedIconAfter, checkboxes, disableSelectedIcon, loading, loadingProps, dropdownButtonProps, disableDropdownButton, clearButtonProps, disableClearButton, noOptionsChildren = /*#__PURE__*/ _jsx(ListSubheader, {
23
+ children: "No Options"
24
+ }), leftAddon: propLeftAddon, disableLeftAddonStyles: propDisableLeftAddonStyles, labelProps, rightAddon, rightAddonProps, containerProps, getChipProps = noop, updateQueryOnSelect, visible, setVisible, defaultVisible, disableInlineChips, disableCloseOnSelect, ...remaining } = props;
25
+ const { form, disabled } = props;
21
26
  const id = useEnsuredId(propId, "autocomplete");
22
- const menuId = useEnsuredId(menuProps?.id, "autocomplete-listbox");
23
- const [query, setQuery] = useEnsuredState({
24
- value: propValue,
25
- setValue: typeof propValue === "string" ? noop : undefined,
26
- defaultValue
27
- });
28
- const { visible, setVisible, getMenuProps, comboboxRef, comboboxProps, movementContext } = useEditableCombobox({
27
+ const menuId = useEnsuredId(listboxProps?.id, "autocomplete-listbox");
28
+ const { query: currentQuery, value: currentValue, setValue: currentSetValue, multiselect, comboboxRef: inputNodeRef, comboboxProps, movementContext, availableOptions, getOptionLabel, getOptionProps, getListboxProps, getClearButtonProps, getDropdownButtonProps } = useAutocomplete({
29
29
  form,
30
- onClick,
30
+ onBlur,
31
31
  onFocus,
32
+ onClick,
33
+ onChange,
32
34
  onKeyDown,
33
- onFocusChange,
35
+ onOpen,
36
+ disabled,
37
+ filter,
38
+ filterSelected,
34
39
  popupId: menuId,
35
- popupRef: menuProps?.ref,
40
+ popupRef: listboxProps?.ref,
36
41
  comboboxId: id,
37
- comboboxRef: inputRef
42
+ comboboxRef: inputRef,
43
+ options,
44
+ getOptionLabel: propGetOptionLabel,
45
+ getOptionProps: propGetOptionProps,
46
+ allowAnyValue,
47
+ updateQueryOnSelect,
48
+ value,
49
+ setValue,
50
+ defaultValue,
51
+ onValueChange,
52
+ query,
53
+ setQuery,
54
+ defaultQuery,
55
+ defaultVisible,
56
+ visible,
57
+ setVisible,
58
+ checkboxes,
59
+ selectedIcon,
60
+ unselectedIcon,
61
+ selectedIconAfter,
62
+ disableSelectedIcon,
63
+ disableCloseOnSelect
38
64
  });
39
- const [containerNodeRef, containerRef] = useEnsuredRef(containerProps?.ref);
40
- useEffect(()=>{
41
- const input = comboboxRef.current;
42
- if (!input || document.activeElement !== input) {
43
- return;
44
- }
45
- const target = input.value.length;
46
- input.setSelectionRange(target, target);
47
- }, [
48
- comboboxRef,
49
- loading
50
- ]);
65
+ const [containerRef, containerRefCallback] = useEnsuredRef(containerProps?.ref);
66
+ let leftAddon = propLeftAddon;
67
+ let disableLeftAddonStyles = propDisableLeftAddonStyles;
68
+ let inlineChips = false;
69
+ let floatingActive = labelProps?.floatingActive;
70
+ if (multiselect && !disableInlineChips) {
71
+ inlineChips = true;
72
+ // TODO: Maybe one day fix the typing? Might not be possible with
73
+ // destructuring though
74
+ const value = currentValue;
75
+ disableLeftAddonStyles ??= true;
76
+ floatingActive ||= value.length > 0;
77
+ leftAddon = /*#__PURE__*/ _jsx(_Fragment, {
78
+ children: value.map((option, index)=>{
79
+ const label = getOptionLabel(option);
80
+ const overrides = getChipProps({
81
+ index,
82
+ query: currentQuery,
83
+ option,
84
+ extractor: getOptionLabel
85
+ });
86
+ return /*#__PURE__*/ _jsx(AutocompleteChip, {
87
+ ...overrides,
88
+ onClick: (event)=>{
89
+ overrides?.onClick?.(event);
90
+ currentSetValue(value.filter((v)=>v !== option));
91
+ },
92
+ children: overrides?.children ?? label
93
+ }, label);
94
+ })
95
+ });
96
+ }
51
97
  return /*#__PURE__*/ _jsxs(KeyboardMovementProvider, {
52
98
  value: movementContext,
53
99
  children: [
54
100
  /*#__PURE__*/ _jsx(TextField, {
55
- "aria-autocomplete": "list",
56
101
  ...remaining,
57
- value: query,
58
102
  ...comboboxProps,
59
103
  containerProps: {
60
104
  ...containerProps,
61
- ref: containerRef
105
+ ref: containerRefCallback,
106
+ onClick: (event)=>{
107
+ containerProps?.onClick?.(event);
108
+ inputNodeRef.current?.focus();
109
+ }
62
110
  },
63
111
  className: autocomplete({
64
112
  className,
65
113
  loading,
114
+ inlineChips,
115
+ disableClearButton,
66
116
  disableDropdownButton
67
117
  }),
68
- onChange: (event)=>{
69
- onChange(event);
70
- setQuery(event.currentTarget.value);
71
- },
72
- onKeyDown: (event)=>{
73
- comboboxProps.onKeyDown(event);
74
- if (!visible && event.key === "Escape") {
75
- onAutocomplete(null);
76
- }
77
- },
78
- onFocus: (event)=>{
79
- comboboxProps.onFocus(event);
80
- event.currentTarget.setSelectionRange(0, event.currentTarget.value.length);
118
+ labelProps: {
119
+ ...labelProps,
120
+ floatingActive
81
121
  },
122
+ leftAddon: leftAddon,
123
+ disableLeftAddonStyles: disableLeftAddonStyles,
82
124
  rightAddon: /*#__PURE__*/ _jsxs(_Fragment, {
83
125
  children: [
84
126
  rightAddon,
85
127
  loading && /*#__PURE__*/ _jsx(AutocompleteCircularProgress, {
86
128
  ...loadingProps
87
129
  }),
130
+ !disableClearButton && !!currentQuery && /*#__PURE__*/ _jsx(AutocompleteClearButton, {
131
+ ...clearButtonProps,
132
+ ...getClearButtonProps(clearButtonProps)
133
+ }),
88
134
  !disableDropdownButton && /*#__PURE__*/ _jsx(AutocompleteDropdownButton, {
89
- "aria-label": menuLabel,
90
- "aria-labelledby": menuLabelledBy,
91
- "aria-controls": comboboxProps.id,
92
- ...dropdownButtonProps,
93
- visible: visible,
94
- onClick: ()=>{
95
- comboboxRef.current?.focus();
96
- setVisible((prev)=>!prev);
97
- }
135
+ "aria-label": listboxLabel,
136
+ "aria-labelledby": listboxLabelledBy,
137
+ ...getDropdownButtonProps(dropdownButtonProps)
98
138
  })
99
139
  ]
100
140
  }),
@@ -106,30 +146,19 @@ export function Autocomplete(props) {
106
146
  })
107
147
  }
108
148
  }),
109
- /*#__PURE__*/ _jsxs(Menu, {
110
- "aria-label": menuLabel,
111
- "aria-labelledby": menuLabelledBy,
112
- ...getMenuProps(menuProps),
113
- // since the `afterInputChildren` is not included in the `comboboxRef`'s
114
- // width, the menu will no longer be equal width without changing the
115
- // fixedTo node to the container
116
- fixedTo: containerNodeRef,
117
- children: [
118
- children,
119
- /*#__PURE__*/ _jsx(FilterAutocompleteOptions, {
120
- query: query,
121
- filter: filter,
122
- options: options,
123
- noOptionsChildren: noOptionsChildren,
124
- extractor: extractor,
125
- whitespace: whitespace,
126
- comboboxRef: comboboxRef,
127
- disableFilter: disableFilter || props["aria-autocomplete"] === "none",
128
- getOptionProps: getOptionProps,
129
- onAutocomplete: onAutocomplete,
130
- clearOnAutocomplete: clearOnAutocomplete
131
- })
132
- ]
149
+ /*#__PURE__*/ _jsx(Listbox, {
150
+ "aria-label": listboxLabel,
151
+ "aria-labelledby": listboxLabelledBy,
152
+ ...getListboxProps(listboxProps),
153
+ fixedTo: containerRef,
154
+ children: /*#__PURE__*/ _jsx(AutocompleteListboxChildren, {
155
+ query: currentQuery,
156
+ options: availableOptions,
157
+ getOptionLabel: getOptionLabel,
158
+ getOptionProps: getOptionProps,
159
+ noOptionsChildren: noOptionsChildren,
160
+ children: children
161
+ })
133
162
  })
134
163
  ]
135
164
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/autocomplete/Autocomplete.tsx"],"sourcesContent":["\"use client\";\nimport {\n useEffect,\n type AriaAttributes,\n type ReactElement,\n type Ref,\n} from \"react\";\nimport { TextField, type TextFieldProps } from \"../form/TextField.js\";\nimport { type ConfigurableComboboxMenuProps } from \"../form/useCombobox.js\";\nimport { useEditableCombobox } from \"../form/useEditableCombobox.js\";\nimport { Menu } from \"../menu/Menu.js\";\nimport { type KeyboardMovementFocusChangeEventHandler } from \"../movement/types.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport {\n type PropsWithRef,\n type TextExtractor,\n type UseStateSetter,\n} from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport {\n AutocompleteCircularProgress,\n type AutocompleteCircularProgressProps,\n} from \"./AutocompleteCircularProgress.js\";\nimport {\n AutocompleteDropdownButton,\n type ConfigurableAutocompleteDropdownButtonProps,\n} from \"./AutocompleteDropdownButton.js\";\nimport { FilterAutocompleteOptions } from \"./FilterAutocompleteOptions.js\";\nimport { autocomplete, autocompleteRightAddon } from \"./autocompleteStyles.js\";\nimport {\n type AutocompleteMenuLabel,\n type AutocompleteOptionsProps,\n} from \"./types.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 6.0.0\n */\nexport interface AutocompleteProps<T>\n extends Omit<TextFieldProps, \"value\" | \"defaultValue\">,\n AutocompleteOptionsProps<T> {\n /** @defaultValue `\"list\"` */\n \"aria-autocomplete\"?: AriaAttributes[\"aria-autocomplete\"];\n inputRef?: Ref<HTMLInputElement>;\n value?: string;\n defaultValue?: string;\n\n /**\n * An `aria-label` to pass to the `Menu` component that describes the list of\n * {@link options}. Either this or the {@link menuLabelledBy} are required for\n * accessibility.\n */\n menuLabel?: string;\n\n /**\n * An `aria-labelledby` to pass to the `Menu` component that describes the\n * list of {@link options}. Either this or the {@link menuLabel} are required\n * for accessibility.\n */\n menuLabelledBy?: string;\n\n /**\n * Any additional props that should be passed to the `Menu` component.\n */\n menuProps?: PropsWithRef<\n ConfigurableComboboxMenuProps & { id?: string },\n HTMLDivElement\n >;\n\n /**\n * This prop should only be used when `aria-autocomplete` is set to\n * `\"inline\"` or `\"both\"`.\n */\n onFocusChange?: KeyboardMovementFocusChangeEventHandler;\n\n /**\n * This can be used to add any custom styling, change the icon, change the\n * label, etc for the dropdown button.\n *\n * @example Simple Example\n * ```tsx\n * dropdownButtonProps={{\n * \"aria-label\": \"Open\",\n * className: styles.dropdownButton,\n * icon: <MyCustomDropdownIcon />,\n * }}\n * ```\n */\n dropdownButtonProps?: ConfigurableAutocompleteDropdownButtonProps;\n\n /**\n * Set this to `true` to remove the {@link DropdownButton} from being rendered\n * after the input element.\n *\n * @defaultValue `false`\n */\n disableDropdownButton?: boolean;\n\n /**\n * Set this to `true` to disable a `<CircularProgress />` after the input and\n * before the `<DropdownButton />`.\n *\n * @defaultValue `false`\n */\n loading?: boolean;\n\n /**\n * @defaultValue `{ \"aria-label\": \"Loading\", ...loadingProps }`\n */\n loadingProps?: AutocompleteCircularProgressProps;\n}\n\n/**\n * @since 6.0.0\n */\nexport function Autocomplete<T extends string | { label: string }>(\n props: AutocompleteMenuLabel<Omit<AutocompleteProps<T>, \"extractor\">>\n): ReactElement;\n/**\n * @since 6.0.0\n */\nexport function Autocomplete<T>(\n props: AutocompleteMenuLabel<\n AutocompleteProps<T> & { extractor: TextExtractor<T> }\n >\n): ReactElement;\nexport function Autocomplete<T>(\n props: AutocompleteMenuLabel<AutocompleteProps<T>>\n): ReactElement {\n const {\n id: propId,\n value: propValue,\n defaultValue = \"\",\n onClick,\n onFocus,\n onKeyDown,\n onChange = noop,\n onFocusChange,\n className,\n options,\n children,\n inputRef,\n extractor,\n onAutocomplete = noop,\n getOptionProps,\n clearOnAutocomplete,\n menuProps,\n menuLabel,\n menuLabelledBy,\n containerProps,\n filter,\n whitespace,\n disableFilter,\n noOptionsChildren,\n dropdownButtonProps,\n disableDropdownButton,\n loading,\n loadingProps,\n rightAddon,\n rightAddonProps,\n ...remaining\n } = props;\n\n const { form } = props;\n const id = useEnsuredId(propId, \"autocomplete\");\n const menuId = useEnsuredId(menuProps?.id, \"autocomplete-listbox\");\n\n const [query, setQuery] = useEnsuredState<string, UseStateSetter<string>>({\n value: propValue,\n setValue: typeof propValue === \"string\" ? noop : undefined,\n defaultValue,\n });\n\n const {\n visible,\n setVisible,\n getMenuProps,\n comboboxRef,\n comboboxProps,\n movementContext,\n } = useEditableCombobox({\n form,\n onClick,\n onFocus,\n onKeyDown,\n onFocusChange,\n popupId: menuId,\n popupRef: menuProps?.ref,\n comboboxId: id,\n comboboxRef: inputRef,\n });\n const [containerNodeRef, containerRef] = useEnsuredRef(containerProps?.ref);\n useEffect(() => {\n const input = comboboxRef.current;\n if (!input || document.activeElement !== input) {\n return;\n }\n\n const target = input.value.length;\n input.setSelectionRange(target, target);\n }, [comboboxRef, loading]);\n\n return (\n <KeyboardMovementProvider value={movementContext}>\n <TextField\n aria-autocomplete=\"list\"\n {...remaining}\n value={query}\n {...comboboxProps}\n containerProps={{\n ...containerProps,\n ref: containerRef,\n }}\n className={autocomplete({\n className,\n loading,\n disableDropdownButton,\n })}\n onChange={(event) => {\n onChange(event);\n setQuery(event.currentTarget.value);\n }}\n onKeyDown={(event) => {\n comboboxProps.onKeyDown(event);\n if (!visible && event.key === \"Escape\") {\n onAutocomplete(null);\n }\n }}\n onFocus={(event) => {\n comboboxProps.onFocus(event);\n event.currentTarget.setSelectionRange(\n 0,\n event.currentTarget.value.length\n );\n }}\n rightAddon={\n <>\n {rightAddon}\n {loading && <AutocompleteCircularProgress {...loadingProps} />}\n {!disableDropdownButton && (\n <AutocompleteDropdownButton\n aria-label={menuLabel}\n aria-labelledby={menuLabelledBy}\n aria-controls={comboboxProps.id}\n {...dropdownButtonProps}\n visible={visible}\n onClick={() => {\n comboboxRef.current?.focus();\n setVisible((prev) => !prev);\n }}\n />\n )}\n </>\n }\n rightAddonProps={{\n ...rightAddonProps,\n pointerEvents: true,\n className: autocompleteRightAddon({\n className: rightAddonProps?.className,\n }),\n }}\n />\n <Menu\n aria-label={menuLabel as string}\n aria-labelledby={menuLabelledBy}\n {...getMenuProps(menuProps)}\n // since the `afterInputChildren` is not included in the `comboboxRef`'s\n // width, the menu will no longer be equal width without changing the\n // fixedTo node to the container\n fixedTo={containerNodeRef}\n >\n {children}\n <FilterAutocompleteOptions\n query={query}\n filter={filter}\n options={options}\n noOptionsChildren={noOptionsChildren}\n extractor={extractor}\n whitespace={whitespace}\n comboboxRef={comboboxRef}\n disableFilter={disableFilter || props[\"aria-autocomplete\"] === \"none\"}\n getOptionProps={getOptionProps}\n onAutocomplete={onAutocomplete}\n clearOnAutocomplete={clearOnAutocomplete}\n />\n </Menu>\n </KeyboardMovementProvider>\n );\n}\n"],"names":["useEffect","TextField","useEditableCombobox","Menu","KeyboardMovementProvider","useEnsuredId","useEnsuredRef","useEnsuredState","AutocompleteCircularProgress","AutocompleteDropdownButton","FilterAutocompleteOptions","autocomplete","autocompleteRightAddon","noop","Autocomplete","props","id","propId","value","propValue","defaultValue","onClick","onFocus","onKeyDown","onChange","onFocusChange","className","options","children","inputRef","extractor","onAutocomplete","getOptionProps","clearOnAutocomplete","menuProps","menuLabel","menuLabelledBy","containerProps","filter","whitespace","disableFilter","noOptionsChildren","dropdownButtonProps","disableDropdownButton","loading","loadingProps","rightAddon","rightAddonProps","remaining","form","menuId","query","setQuery","setValue","undefined","visible","setVisible","getMenuProps","comboboxRef","comboboxProps","movementContext","popupId","popupRef","ref","comboboxId","containerNodeRef","containerRef","input","current","document","activeElement","target","length","setSelectionRange","aria-autocomplete","event","currentTarget","key","aria-label","aria-labelledby","aria-controls","focus","prev","pointerEvents","fixedTo"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/autocomplete/Autocomplete.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Listbox } from \"../form/Listbox.js\";\nimport { TextField } from \"../form/TextField.js\";\nimport { ListSubheader } from \"../list/ListSubheader.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { AutocompleteChip } from \"./AutocompleteChip.js\";\nimport { AutocompleteCircularProgress } from \"./AutocompleteCircularProgress.js\";\nimport { AutocompleteClearButton } from \"./AutocompleteClearButton.js\";\nimport { AutocompleteDropdownButton } from \"./AutocompleteDropdownButton.js\";\nimport { AutocompleteListboxChildren } from \"./AutocompleteListboxChildren.js\";\nimport { autocomplete, autocompleteRightAddon } from \"./autocompleteStyles.js\";\nimport {\n defaultAutocompleteFilter,\n noopAutocompleteFilter,\n} from \"./defaults.js\";\nimport {\n type AutocompleteMultiSelectProps,\n type AutocompleteOption,\n type AutocompleteProps,\n type AutocompleteSingleSelectProps,\n} from \"./types.js\";\nimport { useAutocomplete } from \"./useAutocomplete.js\";\n\nconst noop = (): undefined => undefined;\n\n/**\n * This is the single select autocomplete implementation.\n *\n * @since 6.0.0\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteSingleSelectProps<Option>\n): ReactElement;\n/**\n * This is the multiselect autocomplete implementation.\n *\n * @since 6.0.0\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteMultiSelectProps<Option>\n): ReactElement;\n/**\n * @since 6.0.0\n * @internal\n */\nexport function Autocomplete<Option extends AutocompleteOption>(\n props: AutocompleteProps<Option>\n): ReactElement {\n const {\n id: propId,\n onBlur,\n onFocus,\n onClick,\n onChange,\n onKeyDown,\n onOpen,\n type,\n className,\n inputRef,\n children,\n filter = type === \"search\"\n ? noopAutocompleteFilter\n : defaultAutocompleteFilter,\n filterSelected,\n value,\n setValue,\n defaultValue,\n onValueChange,\n query,\n setQuery,\n defaultQuery,\n options,\n getOptionLabel: propGetOptionLabel,\n getOptionProps: propGetOptionProps,\n allowAnyValue,\n listboxProps,\n listboxLabel,\n listboxLabelledBy,\n selectedIcon,\n unselectedIcon,\n selectedIconAfter,\n checkboxes,\n disableSelectedIcon,\n loading,\n loadingProps,\n dropdownButtonProps,\n disableDropdownButton,\n clearButtonProps,\n disableClearButton,\n noOptionsChildren = <ListSubheader>No Options</ListSubheader>,\n leftAddon: propLeftAddon,\n disableLeftAddonStyles: propDisableLeftAddonStyles,\n labelProps,\n rightAddon,\n rightAddonProps,\n containerProps,\n getChipProps = noop,\n updateQueryOnSelect,\n visible,\n setVisible,\n defaultVisible,\n disableInlineChips,\n disableCloseOnSelect,\n ...remaining\n } = props;\n const { form, disabled } = props;\n\n const id = useEnsuredId(propId, \"autocomplete\");\n const menuId = useEnsuredId(listboxProps?.id, \"autocomplete-listbox\");\n const {\n query: currentQuery,\n value: currentValue,\n setValue: currentSetValue,\n multiselect,\n comboboxRef: inputNodeRef,\n comboboxProps,\n movementContext,\n availableOptions,\n getOptionLabel,\n getOptionProps,\n getListboxProps,\n getClearButtonProps,\n getDropdownButtonProps,\n } = useAutocomplete({\n form,\n onBlur,\n onFocus,\n onClick,\n onChange,\n onKeyDown,\n onOpen,\n disabled,\n filter,\n filterSelected,\n popupId: menuId,\n popupRef: listboxProps?.ref,\n comboboxId: id,\n comboboxRef: inputRef,\n options,\n getOptionLabel: propGetOptionLabel,\n getOptionProps: propGetOptionProps,\n allowAnyValue,\n updateQueryOnSelect,\n value,\n setValue,\n defaultValue,\n onValueChange,\n query,\n setQuery,\n defaultQuery,\n defaultVisible,\n visible,\n setVisible,\n checkboxes,\n selectedIcon,\n unselectedIcon,\n selectedIconAfter,\n disableSelectedIcon,\n disableCloseOnSelect,\n });\n const [containerRef, containerRefCallback] = useEnsuredRef(\n containerProps?.ref\n );\n\n let leftAddon = propLeftAddon;\n let disableLeftAddonStyles = propDisableLeftAddonStyles;\n let inlineChips = false;\n let floatingActive = labelProps?.floatingActive;\n if (multiselect && !disableInlineChips) {\n inlineChips = true;\n // TODO: Maybe one day fix the typing? Might not be possible with\n // destructuring though\n const value = currentValue as readonly Option[];\n disableLeftAddonStyles ??= true;\n floatingActive ||= value.length > 0;\n leftAddon = (\n <>\n {value.map((option, index) => {\n const label = getOptionLabel(option);\n const overrides = getChipProps({\n index,\n query: currentQuery,\n option,\n extractor: getOptionLabel,\n });\n return (\n <AutocompleteChip\n key={label}\n {...overrides}\n onClick={(event) => {\n overrides?.onClick?.(event);\n currentSetValue(value.filter((v) => v !== option));\n }}\n >\n {overrides?.children ?? label}\n </AutocompleteChip>\n );\n })}\n </>\n );\n }\n\n return (\n <KeyboardMovementProvider value={movementContext}>\n <TextField\n {...remaining}\n {...comboboxProps}\n containerProps={{\n ...containerProps,\n ref: containerRefCallback,\n onClick: (event) => {\n containerProps?.onClick?.(event);\n inputNodeRef.current?.focus();\n },\n }}\n className={autocomplete({\n className,\n loading,\n inlineChips,\n disableClearButton,\n disableDropdownButton,\n })}\n labelProps={{\n ...labelProps,\n floatingActive,\n }}\n leftAddon={leftAddon}\n disableLeftAddonStyles={disableLeftAddonStyles}\n rightAddon={\n <>\n {rightAddon}\n {loading && <AutocompleteCircularProgress {...loadingProps} />}\n {!disableClearButton && !!currentQuery && (\n <AutocompleteClearButton\n {...clearButtonProps}\n {...getClearButtonProps(clearButtonProps)}\n />\n )}\n {!disableDropdownButton && (\n <AutocompleteDropdownButton\n aria-label={listboxLabel as string}\n aria-labelledby={listboxLabelledBy}\n {...getDropdownButtonProps(dropdownButtonProps)}\n />\n )}\n </>\n }\n rightAddonProps={{\n ...rightAddonProps,\n pointerEvents: true,\n className: autocompleteRightAddon({\n className: rightAddonProps?.className,\n }),\n }}\n />\n <Listbox\n aria-label={listboxLabel as string}\n aria-labelledby={listboxLabelledBy}\n {...getListboxProps(listboxProps)}\n fixedTo={containerRef}\n >\n <AutocompleteListboxChildren\n query={currentQuery}\n options={availableOptions}\n getOptionLabel={getOptionLabel}\n getOptionProps={getOptionProps}\n noOptionsChildren={noOptionsChildren}\n >\n {children}\n </AutocompleteListboxChildren>\n </Listbox>\n </KeyboardMovementProvider>\n );\n}\n"],"names":["Listbox","TextField","ListSubheader","KeyboardMovementProvider","useEnsuredId","useEnsuredRef","AutocompleteChip","AutocompleteCircularProgress","AutocompleteClearButton","AutocompleteDropdownButton","AutocompleteListboxChildren","autocomplete","autocompleteRightAddon","defaultAutocompleteFilter","noopAutocompleteFilter","useAutocomplete","noop","undefined","Autocomplete","props","id","propId","onBlur","onFocus","onClick","onChange","onKeyDown","onOpen","type","className","inputRef","children","filter","filterSelected","value","setValue","defaultValue","onValueChange","query","setQuery","defaultQuery","options","getOptionLabel","propGetOptionLabel","getOptionProps","propGetOptionProps","allowAnyValue","listboxProps","listboxLabel","listboxLabelledBy","selectedIcon","unselectedIcon","selectedIconAfter","checkboxes","disableSelectedIcon","loading","loadingProps","dropdownButtonProps","disableDropdownButton","clearButtonProps","disableClearButton","noOptionsChildren","leftAddon","propLeftAddon","disableLeftAddonStyles","propDisableLeftAddonStyles","labelProps","rightAddon","rightAddonProps","containerProps","getChipProps","updateQueryOnSelect","visible","setVisible","defaultVisible","disableInlineChips","disableCloseOnSelect","remaining","form","disabled","menuId","currentQuery","currentValue","currentSetValue","multiselect","comboboxRef","inputNodeRef","comboboxProps","movementContext","availableOptions","getListboxProps","getClearButtonProps","getDropdownButtonProps","popupId","popupRef","ref","comboboxId","containerRef","containerRefCallback","inlineChips","floatingActive","length","map","option","index","label","overrides","extractor","event","v","current","focus","aria-label","aria-labelledby","pointerEvents","fixedTo"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type AutocompleteChipProps } from "./types.js";
2
+ /**
3
+ * A small wrapper around the `Chip` that defaults the `rightAddon` to the
4
+ * remove icon and adds a default `aria-description`.
5
+ *
6
+ * @since 6.0.0
7
+ */
8
+ export declare const AutocompleteChip: import("react").ForwardRefExoticComponent<AutocompleteChipProps & import("react").RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from "react";
3
+ import { Chip } from "../chip/Chip.js";
4
+ import { getIcon } from "../icon/iconConfig.js";
5
+ import { autocompleteChip } from "./autocompleteStyles.js";
6
+ /**
7
+ * A small wrapper around the `Chip` that defaults the `rightAddon` to the
8
+ * remove icon and adds a default `aria-description`.
9
+ *
10
+ * @since 6.0.0
11
+ */ export const AutocompleteChip = /*#__PURE__*/ forwardRef(function AutocompleteChip(props, ref) {
12
+ const { "aria-description": propAriaDescription, children, className, removeIcon: propRemoveIcon, rightAddon: propRightAddon, ...remaining } = props;
13
+ let rightAddon = propRightAddon;
14
+ let ariaDescription = propAriaDescription;
15
+ const removeIcon = getIcon("remove", propRemoveIcon);
16
+ if (typeof rightAddon === "undefined") {
17
+ rightAddon = removeIcon;
18
+ }
19
+ if (typeof ariaDescription === "undefined" && typeof children === "string") {
20
+ ariaDescription = `Remove "${children}"`;
21
+ }
22
+ return /*#__PURE__*/ _jsx(Chip, {
23
+ ...remaining,
24
+ "aria-description": ariaDescription,
25
+ ref: ref,
26
+ rightAddon: rightAddon,
27
+ className: autocompleteChip({
28
+ className
29
+ }),
30
+ children: children
31
+ });
32
+ });
33
+
34
+ //# sourceMappingURL=AutocompleteChip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/autocomplete/AutocompleteChip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { Chip } from \"../chip/Chip.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { autocompleteChip } from \"./autocompleteStyles.js\";\nimport { type AutocompleteChipProps } from \"./types.js\";\n\n/**\n * A small wrapper around the `Chip` that defaults the `rightAddon` to the\n * remove icon and adds a default `aria-description`.\n *\n * @since 6.0.0\n */\nexport const AutocompleteChip = forwardRef<\n HTMLButtonElement,\n AutocompleteChipProps\n>(function AutocompleteChip(props, ref) {\n const {\n \"aria-description\": propAriaDescription,\n children,\n className,\n removeIcon: propRemoveIcon,\n rightAddon: propRightAddon,\n ...remaining\n } = props;\n\n let rightAddon = propRightAddon;\n let ariaDescription = propAriaDescription;\n const removeIcon = getIcon(\"remove\", propRemoveIcon);\n if (typeof rightAddon === \"undefined\") {\n rightAddon = removeIcon;\n }\n\n if (typeof ariaDescription === \"undefined\" && typeof children === \"string\") {\n ariaDescription = `Remove \"${children}\"`;\n }\n\n return (\n <Chip\n {...remaining}\n aria-description={ariaDescription}\n ref={ref}\n rightAddon={rightAddon}\n className={autocompleteChip({ className })}\n >\n {children}\n </Chip>\n );\n});\n"],"names":["forwardRef","Chip","getIcon","autocompleteChip","AutocompleteChip","props","ref","propAriaDescription","children","className","removeIcon","propRemoveIcon","rightAddon","propRightAddon","remaining","ariaDescription","aria-description"],"mappings":";AAAA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,IAAI,QAAQ,kBAAkB;AACvC,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,gBAAgB,QAAQ,0BAA0B;AAG3D;;;;;CAKC,GACD,OAAO,MAAMC,iCAAmBJ,WAG9B,SAASI,iBAAiBC,KAAK,EAAEC,GAAG;IACpC,MAAM,EACJ,oBAAoBC,mBAAmB,EACvCC,QAAQ,EACRC,SAAS,EACTC,YAAYC,cAAc,EAC1BC,YAAYC,cAAc,EAC1B,GAAGC,WACJ,GAAGT;IAEJ,IAAIO,aAAaC;IACjB,IAAIE,kBAAkBR;IACtB,MAAMG,aAAaR,QAAQ,UAAUS;IACrC,IAAI,OAAOC,eAAe,aAAa;QACrCA,aAAaF;IACf;IAEA,IAAI,OAAOK,oBAAoB,eAAe,OAAOP,aAAa,UAAU;QAC1EO,kBAAkB,CAAC,QAAQ,EAAEP,SAAS,CAAC,CAAC;IAC1C;IAEA,qBACE,KAACP;QACE,GAAGa,SAAS;QACbE,oBAAkBD;QAClBT,KAAKA;QACLM,YAAYA;QACZH,WAAWN,iBAAiB;YAAEM;QAAU;kBAEvCD;;AAGP,GAAG"}
@@ -1,16 +1,10 @@
1
1
  import { type ReactElement } from "react";
2
- import { type CircularProgressProps } from "../progress/CircularProgress.js";
3
- import { type ProgressTheme } from "../progress/types.js";
4
- /**
5
- * @since 6.0.0
6
- */
7
- export interface AutocompleteCircularProgressProps extends CircularProgressProps {
8
- /** @defaultValue `"Loading"` */
9
- "aria-label"?: string;
10
- /** @defaultValue `"current-color"` */
11
- theme?: ProgressTheme;
12
- }
2
+ import { type AutocompleteCircularProgressProps } from "./types.js";
13
3
  /**
4
+ * An internal component used to handle the styling and minimal accessibility
5
+ * for the `CircularProgress` within the `Autocomplete`
6
+ *
7
+ * @internal
14
8
  * @since 6.0.0
15
9
  */
16
10
  export declare function AutocompleteCircularProgress(props: AutocompleteCircularProgressProps): ReactElement;
@@ -1,6 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { CircularProgress } from "../progress/CircularProgress.js";
3
3
  /**
4
+ * An internal component used to handle the styling and minimal accessibility
5
+ * for the `CircularProgress` within the `Autocomplete`
6
+ *
7
+ * @internal
4
8
  * @since 6.0.0
5
9
  */ export function AutocompleteCircularProgress(props) {
6
10
  const { "aria-labelledby": ariaLabelledby, "aria-label": ariaLabel = ariaLabelledby ? undefined : "Loading", theme = "current-color", ...remaining } = props;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/autocomplete/AutocompleteCircularProgress.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport {\n CircularProgress,\n type CircularProgressProps,\n} from \"../progress/CircularProgress.js\";\nimport { type ProgressTheme } from \"../progress/types.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface AutocompleteCircularProgressProps\n extends CircularProgressProps {\n /** @defaultValue `\"Loading\"` */\n \"aria-label\"?: string;\n\n /** @defaultValue `\"current-color\"` */\n theme?: ProgressTheme;\n}\n\n/**\n * @since 6.0.0\n */\nexport function AutocompleteCircularProgress(\n props: AutocompleteCircularProgressProps\n): ReactElement {\n const {\n \"aria-labelledby\": ariaLabelledby,\n \"aria-label\": ariaLabel = ariaLabelledby ? undefined : \"Loading\",\n theme = \"current-color\",\n ...remaining\n } = props;\n\n return (\n <CircularProgress\n {...remaining}\n aria-label={ariaLabel as string}\n aria-labelledby={ariaLabelledby}\n theme={theme}\n />\n );\n}\n"],"names":["CircularProgress","AutocompleteCircularProgress","props","ariaLabelledby","ariaLabel","undefined","theme","remaining","aria-label","aria-labelledby"],"mappings":";AACA,SACEA,gBAAgB,QAEX,kCAAkC;AAezC;;CAEC,GACD,OAAO,SAASC,6BACdC,KAAwC;IAExC,MAAM,EACJ,mBAAmBC,cAAc,EACjC,cAAcC,YAAYD,iBAAiBE,YAAY,SAAS,EAChEC,QAAQ,eAAe,EACvB,GAAGC,WACJ,GAAGL;IAEJ,qBACE,KAACF;QACE,GAAGO,SAAS;QACbC,cAAYJ;QACZK,mBAAiBN;QACjBG,OAAOA;;AAGb"}
1
+ {"version":3,"sources":["../../src/autocomplete/AutocompleteCircularProgress.tsx"],"sourcesContent":["import { type ReactElement } from \"react\";\nimport { CircularProgress } from \"../progress/CircularProgress.js\";\nimport { type AutocompleteCircularProgressProps } from \"./types.js\";\n\n/**\n * An internal component used to handle the styling and minimal accessibility\n * for the `CircularProgress` within the `Autocomplete`\n *\n * @internal\n * @since 6.0.0\n */\nexport function AutocompleteCircularProgress(\n props: AutocompleteCircularProgressProps\n): ReactElement {\n const {\n \"aria-labelledby\": ariaLabelledby,\n \"aria-label\": ariaLabel = ariaLabelledby ? undefined : \"Loading\",\n theme = \"current-color\",\n ...remaining\n } = props;\n\n return (\n <CircularProgress\n {...remaining}\n aria-label={ariaLabel as string}\n aria-labelledby={ariaLabelledby}\n theme={theme}\n />\n );\n}\n"],"names":["CircularProgress","AutocompleteCircularProgress","props","ariaLabelledby","ariaLabel","undefined","theme","remaining","aria-label","aria-labelledby"],"mappings":";AACA,SAASA,gBAAgB,QAAQ,kCAAkC;AAGnE;;;;;;CAMC,GACD,OAAO,SAASC,6BACdC,KAAwC;IAExC,MAAM,EACJ,mBAAmBC,cAAc,EACjC,cAAcC,YAAYD,iBAAiBE,YAAY,SAAS,EAChEC,QAAQ,eAAe,EACvB,GAAGC,WACJ,GAAGL;IAEJ,qBACE,KAACF;QACE,GAAGO,SAAS;QACbC,cAAYJ;QACZK,mBAAiBN;QACjBG,OAAOA;;AAGb"}
@@ -0,0 +1,9 @@
1
+ import { type ReactElement } from "react";
2
+ import { type AutocompleteClearButtonProps } from "./types.js";
3
+ /**
4
+ * An internal component used for to clear the value from the `Autocomplete`.
5
+ *
6
+ * @internal
7
+ * @since 6.0.0
8
+ */
9
+ export declare function AutocompleteClearButton(props: AutocompleteClearButtonProps): ReactElement;
@@ -0,0 +1,29 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
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
+ /**
8
+ * An internal component used for to clear the value from the `Autocomplete`.
9
+ *
10
+ * @internal
11
+ * @since 6.0.0
12
+ */ export function AutocompleteClearButton(props) {
13
+ const { id: propId, className, children, buttonType = "icon", "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel = buttonType === "text" || ariaLabelledBy ? undefined : "Clear", ...remaining } = props;
14
+ const id = useEnsuredId(propId, "autocomplete-clear");
15
+ return /*#__PURE__*/ _jsx(Button, {
16
+ ...remaining,
17
+ "aria-label": ariaLabel,
18
+ "aria-labelledby": ariaLabelledBy,
19
+ id: id,
20
+ className: autocompleteClearButton({
21
+ className
22
+ }),
23
+ tabIndex: -1,
24
+ buttonType: buttonType,
25
+ children: getIcon("clear", children)
26
+ });
27
+ }
28
+
29
+ //# sourceMappingURL=AutocompleteClearButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/autocomplete/AutocompleteClearButton.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Button } from \"../button/Button.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { autocompleteClearButton } from \"./autocompleteStyles.js\";\nimport { type AutocompleteClearButtonProps } from \"./types.js\";\n\n/**\n * An internal component used for to clear the value from the `Autocomplete`.\n *\n * @internal\n * @since 6.0.0\n */\nexport function AutocompleteClearButton(\n props: AutocompleteClearButtonProps\n): ReactElement {\n const {\n id: propId,\n className,\n children,\n buttonType = \"icon\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-label\": ariaLabel = buttonType === \"text\" || ariaLabelledBy\n ? undefined\n : \"Clear\",\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"autocomplete-clear\");\n\n return (\n <Button\n {...remaining}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n id={id}\n className={autocompleteClearButton({ className })}\n tabIndex={-1}\n buttonType={buttonType}\n >\n {getIcon(\"clear\", children)}\n </Button>\n );\n}\n"],"names":["Button","getIcon","useEnsuredId","autocompleteClearButton","AutocompleteClearButton","props","id","propId","className","children","buttonType","ariaLabelledBy","ariaLabel","undefined","remaining","aria-label","aria-labelledby","tabIndex"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,uBAAuB,QAAQ,0BAA0B;AAGlE;;;;;CAKC,GACD,OAAO,SAASC,wBACdC,KAAmC;IAEnC,MAAM,EACJC,IAAIC,MAAM,EACVC,SAAS,EACTC,QAAQ,EACRC,aAAa,MAAM,EACnB,mBAAmBC,cAAc,EACjC,cAAcC,YAAYF,eAAe,UAAUC,iBAC/CE,YACA,OAAO,EACX,GAAGC,WACJ,GAAGT;IACJ,MAAMC,KAAKJ,aAAaK,QAAQ;IAEhC,qBACE,KAACP;QACE,GAAGc,SAAS;QACbC,cAAYH;QACZI,mBAAiBL;QACjBL,IAAIA;QACJE,WAAWL,wBAAwB;YAAEK;QAAU;QAC/CS,UAAU,CAAC;QACXP,YAAYA;kBAEXT,QAAQ,SAASQ;;AAGxB"}
@@ -1,32 +1,10 @@
1
- import { type MouseEventHandler, type ReactElement, type ReactNode } from "react";
2
- import { type ButtonProps } from "../button/Button.js";
3
- import { type IconRotatorProps } from "../icon/IconRotator.js";
4
- /**
5
- * @since 6.0.0
6
- */
7
- export interface ConfigurableAutocompleteDropdownButtonProps extends ButtonProps {
8
- /** @defaultValue `AutocompleteProps.menuLabel` */
9
- "aria-label"?: string;
10
- /** @defaultValue `AutocompleteProps.menuLabelledby` */
11
- "aria-labelledby"?: string;
12
- /** @defaultValue `"autocomplete-dropdown-" + useId()` */
13
- id?: string;
14
- /** @defaultValue `getIcon("dropdown")` */
15
- icon?: ReactNode;
16
- iconRotatorProps?: Omit<IconRotatorProps, "rotated">;
17
- }
18
- /**
19
- * @since 6.0.0
20
- */
21
- export interface AutocompleteDropdownButtonProps extends ConfigurableAutocompleteDropdownButtonProps {
22
- "aria-controls": string;
23
- onClick: MouseEventHandler<HTMLButtonElement>;
24
- visible: boolean;
25
- }
1
+ import { type ReactElement } from "react";
2
+ import { type LabelRequiredForA11y } from "../types.js";
3
+ import { type AutocompleteDropdownButtonProps } from "./types.js";
26
4
  /**
27
5
  * This is a simple `Button` wrapper to be used as a dropdown button within the
28
6
  * `Autocomplete`.
29
7
  *
30
8
  * @since 6.0.0
31
9
  */
32
- export declare function AutocompleteDropdownButton(props: AutocompleteDropdownButtonProps): ReactElement;
10
+ export declare function AutocompleteDropdownButton(props: LabelRequiredForA11y<AutocompleteDropdownButtonProps>): ReactElement;
@@ -4,13 +4,14 @@ import { Button } from "../button/Button.js";
4
4
  import { IconRotator } from "../icon/IconRotator.js";
5
5
  import { getIcon } from "../icon/iconConfig.js";
6
6
  import { useEnsuredId } from "../useEnsuredId.js";
7
+ import { autocompleteDropdownButton } from "./autocompleteStyles.js";
7
8
  /**
8
9
  * This is a simple `Button` wrapper to be used as a dropdown button within the
9
10
  * `Autocomplete`.
10
11
  *
11
12
  * @since 6.0.0
12
13
  */ export function AutocompleteDropdownButton(props) {
13
- const { id: propId, icon, visible, iconRotatorProps, ...remaining } = props;
14
+ const { id: propId, icon, visible, iconRotatorProps, className, ...remaining } = props;
14
15
  const id = useEnsuredId(propId, "autocomplete-dropdown");
15
16
  return /*#__PURE__*/ _jsx(Button, {
16
17
  ...remaining,
@@ -18,6 +19,9 @@ import { useEnsuredId } from "../useEnsuredId.js";
18
19
  "aria-expanded": visible,
19
20
  tabIndex: -1,
20
21
  buttonType: "icon",
22
+ className: autocompleteDropdownButton({
23
+ className
24
+ }),
21
25
  children: /*#__PURE__*/ _jsx(IconRotator, {
22
26
  ...iconRotatorProps,
23
27
  rotated: visible,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/autocomplete/AutocompleteDropdownButton.tsx"],"sourcesContent":["\"use client\";\nimport {\n type MouseEventHandler,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { Button, type ButtonProps } from \"../button/Button.js\";\nimport { IconRotator, type IconRotatorProps } from \"../icon/IconRotator.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface ConfigurableAutocompleteDropdownButtonProps\n extends ButtonProps {\n /** @defaultValue `AutocompleteProps.menuLabel` */\n \"aria-label\"?: string;\n /** @defaultValue `AutocompleteProps.menuLabelledby` */\n \"aria-labelledby\"?: string;\n\n /** @defaultValue `\"autocomplete-dropdown-\" + useId()` */\n id?: string;\n\n /** @defaultValue `getIcon(\"dropdown\")` */\n icon?: ReactNode;\n iconRotatorProps?: Omit<IconRotatorProps, \"rotated\">;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface AutocompleteDropdownButtonProps\n extends ConfigurableAutocompleteDropdownButtonProps {\n \"aria-controls\": string;\n onClick: MouseEventHandler<HTMLButtonElement>;\n visible: boolean;\n}\n\n/**\n * This is a simple `Button` wrapper to be used as a dropdown button within the\n * `Autocomplete`.\n *\n * @since 6.0.0\n */\nexport function AutocompleteDropdownButton(\n props: AutocompleteDropdownButtonProps\n): ReactElement {\n const { id: propId, icon, visible, iconRotatorProps, ...remaining } = props;\n\n const id = useEnsuredId(propId, \"autocomplete-dropdown\");\n\n return (\n <Button\n {...remaining}\n id={id}\n aria-expanded={visible}\n tabIndex={-1}\n buttonType=\"icon\"\n >\n <IconRotator {...iconRotatorProps} rotated={visible}>\n {getIcon(\"dropdown\", icon)}\n </IconRotator>\n </Button>\n );\n}\n"],"names":["Button","IconRotator","getIcon","useEnsuredId","AutocompleteDropdownButton","props","id","propId","icon","visible","iconRotatorProps","remaining","aria-expanded","tabIndex","buttonType","rotated"],"mappings":"AAAA;;AAMA,SAASA,MAAM,QAA0B,sBAAsB;AAC/D,SAASC,WAAW,QAA+B,yBAAyB;AAC5E,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,YAAY,QAAQ,qBAAqB;AA8BlD;;;;;CAKC,GACD,OAAO,SAASC,2BACdC,KAAsC;IAEtC,MAAM,EAAEC,IAAIC,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,gBAAgB,EAAE,GAAGC,WAAW,GAAGN;IAEtE,MAAMC,KAAKH,aAAaI,QAAQ;IAEhC,qBACE,KAACP;QACE,GAAGW,SAAS;QACbL,IAAIA;QACJM,iBAAeH;QACfI,UAAU,CAAC;QACXC,YAAW;kBAEX,cAAA,KAACb;YAAa,GAAGS,gBAAgB;YAAEK,SAASN;sBACzCP,QAAQ,YAAYM;;;AAI7B"}
1
+ {"version":3,"sources":["../../src/autocomplete/AutocompleteDropdownButton.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement } from \"react\";\nimport { Button } from \"../button/Button.js\";\nimport { IconRotator } from \"../icon/IconRotator.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { autocompleteDropdownButton } from \"./autocompleteStyles.js\";\nimport { type AutocompleteDropdownButtonProps } from \"./types.js\";\n\n/**\n * This is a simple `Button` wrapper to be used as a dropdown button within the\n * `Autocomplete`.\n *\n * @since 6.0.0\n */\nexport function AutocompleteDropdownButton(\n props: LabelRequiredForA11y<AutocompleteDropdownButtonProps>\n): ReactElement {\n const {\n id: propId,\n icon,\n visible,\n iconRotatorProps,\n className,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"autocomplete-dropdown\");\n\n return (\n <Button\n {...remaining}\n id={id}\n aria-expanded={visible}\n tabIndex={-1}\n buttonType=\"icon\"\n className={autocompleteDropdownButton({ className })}\n >\n <IconRotator {...iconRotatorProps} rotated={visible}>\n {getIcon(\"dropdown\", icon)}\n </IconRotator>\n </Button>\n );\n}\n"],"names":["Button","IconRotator","getIcon","useEnsuredId","autocompleteDropdownButton","AutocompleteDropdownButton","props","id","propId","icon","visible","iconRotatorProps","className","remaining","aria-expanded","tabIndex","buttonType","rotated"],"mappings":"AAAA;;AAEA,SAASA,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,0BAA0B,QAAQ,0BAA0B;AAGrE;;;;;CAKC,GACD,OAAO,SAASC,2BACdC,KAA4D;IAE5D,MAAM,EACJC,IAAIC,MAAM,EACVC,IAAI,EACJC,OAAO,EACPC,gBAAgB,EAChBC,SAAS,EACT,GAAGC,WACJ,GAAGP;IAEJ,MAAMC,KAAKJ,aAAaK,QAAQ;IAEhC,qBACE,KAACR;QACE,GAAGa,SAAS;QACbN,IAAIA;QACJO,iBAAeJ;QACfK,UAAU,CAAC;QACXC,YAAW;QACXJ,WAAWR,2BAA2B;YAAEQ;QAAU;kBAElD,cAAA,KAACX;YAAa,GAAGU,gBAAgB;YAAEM,SAASP;sBACzCR,QAAQ,YAAYO;;;AAI7B"}
@@ -0,0 +1,22 @@
1
+ import { type ReactElement, type ReactNode } from "react";
2
+ import { type AutocompleteGetOptionLabel, type AutocompleteGetOptionProps, type AutocompleteOption } from "./types.js";
3
+ /**
4
+ * @since 6.0.0
5
+ * @internal
6
+ */
7
+ export interface AutocompleteListboxChildrenProps<Option extends AutocompleteOption> {
8
+ query: string;
9
+ options: readonly Option[];
10
+ getOptionLabel: AutocompleteGetOptionLabel<Option>;
11
+ getOptionProps: AutocompleteGetOptionProps<Option>;
12
+ children: ReactNode;
13
+ noOptionsChildren: ReactNode;
14
+ }
15
+ /**
16
+ * NOTE: This was moved to a second component to improve performance so
17
+ * that the availableOptions aren't looped until the listbox is visible
18
+ *
19
+ * @since 6.0.0
20
+ * @internal
21
+ */
22
+ export declare function AutocompleteListboxChildren<Option extends AutocompleteOption>(props: AutocompleteListboxChildrenProps<Option>): ReactElement;
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useListboxContext } from "../form/ListboxProvider.js";
4
+ import { Option } from "../form/Option.js";
5
+ /**
6
+ * NOTE: This was moved to a second component to improve performance so
7
+ * that the availableOptions aren't looped until the listbox is visible
8
+ *
9
+ * @since 6.0.0
10
+ * @internal
11
+ */ export function AutocompleteListboxChildren(props) {
12
+ const { children, query, options: availableOptions, noOptionsChildren, getOptionLabel, getOptionProps } = props;
13
+ const { isOptionSelected } = useListboxContext();
14
+ return /*#__PURE__*/ _jsxs(_Fragment, {
15
+ children: [
16
+ children,
17
+ !availableOptions.length && noOptionsChildren,
18
+ availableOptions.map((option, index)=>{
19
+ const label = getOptionLabel(option);
20
+ const optionProps = getOptionProps({
21
+ index,
22
+ query,
23
+ option,
24
+ selected: isOptionSelected(option),
25
+ extractor: getOptionLabel
26
+ });
27
+ return /*#__PURE__*/ _jsx(Option, {
28
+ value: option,
29
+ ...optionProps,
30
+ children: optionProps?.children ?? label
31
+ }, label);
32
+ })
33
+ ]
34
+ });
35
+ }
36
+
37
+ //# sourceMappingURL=AutocompleteListboxChildren.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/autocomplete/AutocompleteListboxChildren.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement, type ReactNode } from \"react\";\nimport { useListboxContext } from \"../form/ListboxProvider.js\";\nimport { Option } from \"../form/Option.js\";\nimport {\n type AutocompleteGetOptionLabel,\n type AutocompleteGetOptionProps,\n type AutocompleteOption,\n} from \"./types.js\";\n\n/**\n * @since 6.0.0\n * @internal\n */\nexport interface AutocompleteListboxChildrenProps<\n Option extends AutocompleteOption,\n> {\n query: string;\n options: readonly Option[];\n getOptionLabel: AutocompleteGetOptionLabel<Option>;\n getOptionProps: AutocompleteGetOptionProps<Option>;\n children: ReactNode;\n noOptionsChildren: ReactNode;\n}\n\n/**\n * NOTE: This was moved to a second component to improve performance so\n * that the availableOptions aren't looped until the listbox is visible\n *\n * @since 6.0.0\n * @internal\n */\nexport function AutocompleteListboxChildren<Option extends AutocompleteOption>(\n props: AutocompleteListboxChildrenProps<Option>\n): ReactElement {\n const {\n children,\n query,\n options: availableOptions,\n noOptionsChildren,\n getOptionLabel,\n getOptionProps,\n } = props;\n const { isOptionSelected } = useListboxContext();\n\n return (\n <>\n {children}\n {!availableOptions.length && noOptionsChildren}\n {availableOptions.map((option, index) => {\n const label = getOptionLabel(option);\n const optionProps = getOptionProps({\n index,\n query,\n option,\n selected: isOptionSelected(option),\n extractor: getOptionLabel,\n });\n\n return (\n <Option key={label} value={option} {...optionProps}>\n {optionProps?.children ?? label}\n </Option>\n );\n })}\n </>\n );\n}\n"],"names":["useListboxContext","Option","AutocompleteListboxChildren","props","children","query","options","availableOptions","noOptionsChildren","getOptionLabel","getOptionProps","isOptionSelected","length","map","option","index","label","optionProps","selected","extractor","value"],"mappings":"AAAA;;AAEA,SAASA,iBAAiB,QAAQ,6BAA6B;AAC/D,SAASC,MAAM,QAAQ,oBAAoB;AAsB3C;;;;;;CAMC,GACD,OAAO,SAASC,4BACdC,KAA+C;IAE/C,MAAM,EACJC,QAAQ,EACRC,KAAK,EACLC,SAASC,gBAAgB,EACzBC,iBAAiB,EACjBC,cAAc,EACdC,cAAc,EACf,GAAGP;IACJ,MAAM,EAAEQ,gBAAgB,EAAE,GAAGX;IAE7B,qBACE;;YACGI;YACA,CAACG,iBAAiBK,MAAM,IAAIJ;YAC5BD,iBAAiBM,GAAG,CAAC,CAACC,QAAQC;gBAC7B,MAAMC,QAAQP,eAAeK;gBAC7B,MAAMG,cAAcP,eAAe;oBACjCK;oBACAV;oBACAS;oBACAI,UAAUP,iBAAiBG;oBAC3BK,WAAWV;gBACb;gBAEA,qBACE,KAACR;oBAAmBmB,OAAON;oBAAS,GAAGG,WAAW;8BAC/CA,aAAab,YAAYY;mBADfA;YAIjB;;;AAGN"}