@react-md/core 1.0.0-next.7 → 1.0.0-next.9

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 (713) hide show
  1. package/.stylelintrc.json +14 -0
  2. package/.turbo/turbo-build.log +6 -6
  3. package/.turbo/turbo-lint.log +13 -12
  4. package/CHANGELOG.md +15 -0
  5. package/README.md +39 -24
  6. package/coverage/clover.xml +1013 -529
  7. package/coverage/coverage-final.json +9 -3
  8. package/coverage/lcov-report/AutoComplete.tsx.html +283 -0
  9. package/coverage/lcov-report/MenuItemCheckbox.tsx.html +223 -0
  10. package/coverage/lcov-report/MenuItemInputToggle.tsx.html +178 -232
  11. package/coverage/lcov-report/MenuItemRadio.tsx.html +436 -0
  12. package/coverage/lcov-report/RootHtml.tsx.html +370 -0
  13. package/coverage/lcov-report/Select.tsx.html +1411 -0
  14. package/coverage/lcov-report/SrOnly.tsx.html +328 -0
  15. package/coverage/lcov-report/Typography.tsx.html +1027 -0
  16. package/coverage/lcov-report/autocomplete/AutoComplete.tsx.html +283 -0
  17. package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +283 -0
  18. package/coverage/lcov-report/autocomplete/index.html +161 -0
  19. package/coverage/lcov-report/autocomplete/useAutoComplete.ts.html +775 -0
  20. package/coverage/lcov-report/autocomplete/useAutocomplete.ts.html +775 -0
  21. package/coverage/lcov-report/autocomplete/useInlineAutoComplete.ts.html +340 -0
  22. package/coverage/lcov-report/autocomplete/useInlineAutocomplete.ts.html +346 -0
  23. package/coverage/lcov-report/autocomplete/utils.ts.html +106 -0
  24. package/coverage/lcov-report/avatar/Avatar.tsx.html +162 -99
  25. package/coverage/lcov-report/avatar/index.html +19 -34
  26. package/coverage/lcov-report/avatar/styles.ts.html +1 -1
  27. package/coverage/lcov-report/button/Button.tsx.html +85 -85
  28. package/coverage/lcov-report/button/index.html +12 -12
  29. package/coverage/lcov-report/dialog/DialogFooter.tsx.html +36 -36
  30. package/coverage/lcov-report/dialog/DialogHeader.tsx.html +26 -26
  31. package/coverage/lcov-report/dialog/index.html +34 -19
  32. package/coverage/lcov-report/form/AutoComplete.tsx.html +283 -0
  33. package/coverage/lcov-report/form/Form.tsx.html +22 -22
  34. package/coverage/lcov-report/form/OptGroup.tsx.html +169 -166
  35. package/coverage/lcov-report/form/Option.tsx.html +727 -0
  36. package/coverage/lcov-report/form/Select.tsx.html +962 -1112
  37. package/coverage/lcov-report/form/SelectOriginal.tsx.html +1630 -0
  38. package/coverage/lcov-report/form/SelectV2.tsx.html +1024 -0
  39. package/coverage/lcov-report/form/SelectedOption.tsx.html +250 -0
  40. package/coverage/lcov-report/form/index.html +57 -12
  41. package/coverage/lcov-report/form/selectUtils.ts.html +188 -221
  42. package/coverage/lcov-report/form/useAutoComplete.ts.html +787 -0
  43. package/coverage/lcov-report/form/useCombobox.ts.html +454 -460
  44. package/coverage/lcov-report/form/useComboboxList.ts.html +108 -93
  45. package/coverage/lcov-report/form/useFormReset.ts.html +229 -0
  46. package/coverage/lcov-report/form/useInlineAutoComplete.ts.html +379 -0
  47. package/coverage/lcov-report/form/useSelectCombobox.ts.html +499 -0
  48. package/coverage/lcov-report/form/utils.ts.html +209 -170
  49. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  50. package/coverage/lcov-report/icon/MaterialIcon.tsx.html +235 -0
  51. package/coverage/lcov-report/icon/index.html +1 -1
  52. package/coverage/lcov-report/index.html +32 -32
  53. package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
  54. package/coverage/lcov-report/media-queries/index.html +1 -1
  55. package/coverage/lcov-report/menu/DropdownMenu.tsx.html +188 -188
  56. package/coverage/lcov-report/menu/Menu.tsx.html +271 -265
  57. package/coverage/lcov-report/menu/MenuItem.tsx.html +292 -0
  58. package/coverage/lcov-report/menu/MenuVisibilityProvider.tsx.html +48 -33
  59. package/coverage/lcov-report/menu/index.html +45 -15
  60. package/coverage/lcov-report/menu/useContextMenu.ts.html +490 -0
  61. package/coverage/lcov-report/menuItemInputToggleStyles.ts.html +319 -0
  62. package/coverage/lcov-report/movement/index.html +19 -19
  63. package/coverage/lcov-report/movement/useKeyboardMovementProvider.ts.html +422 -383
  64. package/coverage/lcov-report/positioning/constants.ts.html +463 -0
  65. package/coverage/lcov-report/positioning/index.html +30 -30
  66. package/coverage/lcov-report/positioning/useFixedPositioning.ts.html +1321 -0
  67. package/coverage/lcov-report/progress/CircularProgress.tsx.html +184 -184
  68. package/coverage/lcov-report/progress/index.html +19 -34
  69. package/coverage/lcov-report/searching/caseInsensitive.ts.html +685 -0
  70. package/coverage/lcov-report/searching/fuzzy.ts.html +610 -0
  71. package/coverage/lcov-report/searching/index.html +161 -0
  72. package/coverage/lcov-report/searching/toSearchQuery.ts.html +139 -0
  73. package/coverage/lcov-report/searching/utils.ts.html +247 -0
  74. package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
  75. package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
  76. package/coverage/lcov-report/src/RootHtml.tsx.html +370 -0
  77. package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
  78. package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +1 -1
  79. package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
  80. package/coverage/lcov-report/src/app-bar/index.html +1 -1
  81. package/coverage/lcov-report/src/avatar/Avatar.tsx.html +1 -1
  82. package/coverage/lcov-report/src/avatar/index.html +1 -1
  83. package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
  84. package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
  85. package/coverage/lcov-report/src/badge/index.html +1 -1
  86. package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
  87. package/coverage/lcov-report/src/box/index.html +1 -1
  88. package/coverage/lcov-report/src/box/styles.ts.html +1 -1
  89. package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
  90. package/coverage/lcov-report/src/button/Button.tsx.html +1 -1
  91. package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
  92. package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +1 -1
  93. package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +1 -1
  94. package/coverage/lcov-report/src/button/buttonStyles.ts.html +1 -1
  95. package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
  96. package/coverage/lcov-report/src/button/index.html +1 -1
  97. package/coverage/lcov-report/src/card/Card.tsx.html +1 -1
  98. package/coverage/lcov-report/src/card/CardContent.tsx.html +1 -1
  99. package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
  100. package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
  101. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
  102. package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
  103. package/coverage/lcov-report/src/card/ClickableCard.tsx.html +1 -1
  104. package/coverage/lcov-report/src/card/index.html +1 -1
  105. package/coverage/lcov-report/src/card/styles.ts.html +1 -1
  106. package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
  107. package/coverage/lcov-report/src/chip/index.html +1 -1
  108. package/coverage/lcov-report/src/chip/styles.ts.html +1 -1
  109. package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
  110. package/coverage/lcov-report/src/delegateEvent.ts.html +1 -1
  111. package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
  112. package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
  113. package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
  114. package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
  115. package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
  116. package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
  117. package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
  118. package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
  119. package/coverage/lcov-report/src/dialog/index.html +1 -1
  120. package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
  121. package/coverage/lcov-report/src/divider/Divider.tsx.html +1 -1
  122. package/coverage/lcov-report/src/divider/index.html +1 -1
  123. package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
  124. package/coverage/lcov-report/src/draggable/index.html +1 -1
  125. package/coverage/lcov-report/src/draggable/useDraggable.ts.html +1 -1
  126. package/coverage/lcov-report/src/draggable/utils.ts.html +1 -1
  127. package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
  128. package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
  129. package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
  130. package/coverage/lcov-report/src/expansion-panel/index.html +1 -1
  131. package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
  132. package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +1 -1
  133. package/coverage/lcov-report/src/focus/index.html +1 -1
  134. package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
  135. package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
  136. package/coverage/lcov-report/src/form/AutoComplete.tsx.html +283 -0
  137. package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
  138. package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
  139. package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
  140. package/coverage/lcov-report/src/form/Form.tsx.html +11 -8
  141. package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
  142. package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +1 -1
  143. package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
  144. package/coverage/lcov-report/src/form/InputToggle.tsx.html +1 -1
  145. package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +56 -56
  146. package/coverage/lcov-report/src/form/Label.tsx.html +1 -1
  147. package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
  148. package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +3 -3
  149. package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
  150. package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +178 -232
  151. package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +3 -3
  152. package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
  153. package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
  154. package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
  155. package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
  156. package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
  157. package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
  158. package/coverage/lcov-report/src/form/Radio.tsx.html +1 -1
  159. package/coverage/lcov-report/src/form/Select.tsx.html +894 -1146
  160. package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
  161. package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
  162. package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
  163. package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
  164. package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
  165. package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
  166. package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
  167. package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
  168. package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
  169. package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
  170. package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
  171. package/coverage/lcov-report/src/form/TextArea.tsx.html +1 -1
  172. package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
  173. package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
  174. package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
  175. package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +1 -1
  176. package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
  177. package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
  178. package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
  179. package/coverage/lcov-report/src/form/index.html +30 -900
  180. package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
  181. package/coverage/lcov-report/src/form/menuItemInputToggleStyles.ts.html +319 -0
  182. package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
  183. package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
  184. package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
  185. package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
  186. package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
  187. package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
  188. package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
  189. package/coverage/lcov-report/src/form/textAreaStyles.ts.html +1 -1
  190. package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
  191. package/coverage/lcov-report/src/form/useAutoComplete.ts.html +787 -0
  192. package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
  193. package/coverage/lcov-report/src/form/useCombobox.ts.html +943 -457
  194. package/coverage/lcov-report/src/form/useEditableCombobox.ts.html +502 -0
  195. package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
  196. package/coverage/lcov-report/src/form/useInlineAutoComplete.ts.html +109 -0
  197. package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
  198. package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
  199. package/coverage/lcov-report/src/form/useRadioGroup.ts.html +1 -1
  200. package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
  201. package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
  202. package/coverage/lcov-report/src/form/useSelectCombobox.ts.html +295 -0
  203. package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
  204. package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
  205. package/coverage/lcov-report/src/form/utils.ts.html +200 -170
  206. package/coverage/lcov-report/src/form/validation.ts.html +1 -1
  207. package/coverage/lcov-report/src/hoverMode/index.html +1 -1
  208. package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +1 -1
  209. package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +1 -1
  210. package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
  211. package/coverage/lcov-report/src/icon/IconRotator.tsx.html +1 -1
  212. package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
  213. package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
  214. package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
  215. package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +51 -51
  216. package/coverage/lcov-report/src/icon/iconConfig.tsx.html +10 -10
  217. package/coverage/lcov-report/src/icon/index.html +1 -1
  218. package/coverage/lcov-report/src/icon/material.ts.html +1 -1
  219. package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
  220. package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
  221. package/coverage/lcov-report/src/index.html +9 -354
  222. package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
  223. package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
  224. package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
  225. package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
  226. package/coverage/lcov-report/src/interaction/index.html +1 -1
  227. package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +83 -83
  228. package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +7 -7
  229. package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
  230. package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
  231. package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +1 -1
  232. package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
  233. package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
  234. package/coverage/lcov-report/src/layout/index.html +1 -1
  235. package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +1 -1
  236. package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
  237. package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
  238. package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
  239. package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
  240. package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +1 -1
  241. package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
  242. package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
  243. package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
  244. package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
  245. package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
  246. package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
  247. package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
  248. package/coverage/lcov-report/src/link/index.html +1 -1
  249. package/coverage/lcov-report/src/link/styles.ts.html +1 -1
  250. package/coverage/lcov-report/src/list/List.tsx.html +30 -30
  251. package/coverage/lcov-report/src/list/ListItem.tsx.html +124 -124
  252. package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +35 -35
  253. package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +79 -79
  254. package/coverage/lcov-report/src/list/ListItemLink.tsx.html +2 -2
  255. package/coverage/lcov-report/src/list/ListItemText.tsx.html +35 -35
  256. package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
  257. package/coverage/lcov-report/src/list/getListItemHeight.ts.html +44 -47
  258. package/coverage/lcov-report/src/list/index.html +5 -5
  259. package/coverage/lcov-report/src/list/listItemStyles.ts.html +65 -65
  260. package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +49 -49
  261. package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
  262. package/coverage/lcov-report/src/media-queries/index.html +1 -1
  263. package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +24 -24
  264. package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
  265. package/coverage/lcov-report/src/menu/Menu.tsx.html +3 -3
  266. package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
  267. package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
  268. package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
  269. package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
  270. package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
  271. package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
  272. package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
  273. package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
  274. package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
  275. package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
  276. package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
  277. package/coverage/lcov-report/src/menu/index.html +1 -1
  278. package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
  279. package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
  280. package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
  281. package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
  282. package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
  283. package/coverage/lcov-report/src/movement/index.html +17 -62
  284. package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +1 -1
  285. package/coverage/lcov-report/src/movement/utils.ts.html +143 -119
  286. package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
  287. package/coverage/lcov-report/src/overlay/index.html +1 -1
  288. package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
  289. package/coverage/lcov-report/src/portal/Portal.tsx.html +1 -1
  290. package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +36 -36
  291. package/coverage/lcov-report/src/portal/index.html +1 -1
  292. package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
  293. package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +1 -1
  294. package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +1 -1
  295. package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +1 -1
  296. package/coverage/lcov-report/src/positioning/index.html +1 -1
  297. package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +1 -1
  298. package/coverage/lcov-report/src/positioning/utils.ts.html +1 -1
  299. package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +81 -81
  300. package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +1 -1
  301. package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
  302. package/coverage/lcov-report/src/progress/index.html +1 -1
  303. package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
  304. package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
  305. package/coverage/lcov-report/src/responsive-item/index.html +1 -1
  306. package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
  307. package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
  308. package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
  309. package/coverage/lcov-report/src/scroll/index.html +1 -1
  310. package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
  311. package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
  312. package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
  313. package/coverage/lcov-report/src/segmented-button/index.html +1 -1
  314. package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
  315. package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
  316. package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
  317. package/coverage/lcov-report/src/sheet/index.html +1 -1
  318. package/coverage/lcov-report/src/sheet/styles.ts.html +1 -1
  319. package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +1 -1
  320. package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +1 -1
  321. package/coverage/lcov-report/src/snackbar/Toast.tsx.html +1 -1
  322. package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
  323. package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
  324. package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +1 -1
  325. package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +1 -1
  326. package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +1 -1
  327. package/coverage/lcov-report/src/snackbar/index.html +1 -1
  328. package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +1 -1
  329. package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +1 -1
  330. package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +1 -1
  331. package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
  332. package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +142 -142
  333. package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +88 -88
  334. package/coverage/lcov-report/src/suspense/index.html +32 -32
  335. package/coverage/lcov-report/src/table/Table.tsx.html +1 -1
  336. package/coverage/lcov-report/src/table/TableBody.tsx.html +1 -1
  337. package/coverage/lcov-report/src/table/TableCell.tsx.html +1 -1
  338. package/coverage/lcov-report/src/table/TableCellContent.tsx.html +1 -1
  339. package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +1 -1
  340. package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +1 -1
  341. package/coverage/lcov-report/src/table/TableContainer.tsx.html +1 -1
  342. package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
  343. package/coverage/lcov-report/src/table/TableFooter.tsx.html +1 -1
  344. package/coverage/lcov-report/src/table/TableHeader.tsx.html +1 -1
  345. package/coverage/lcov-report/src/table/TableRadio.tsx.html +1 -1
  346. package/coverage/lcov-report/src/table/TableRow.tsx.html +1 -1
  347. package/coverage/lcov-report/src/table/index.html +1 -1
  348. package/coverage/lcov-report/src/table/tableCellStyles.ts.html +1 -1
  349. package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +1 -1
  350. package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +1 -1
  351. package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +1 -1
  352. package/coverage/lcov-report/src/table/tableRowStyles.ts.html +1 -1
  353. package/coverage/lcov-report/src/table/tableStyles.ts.html +1 -1
  354. package/coverage/lcov-report/src/tabs/Tab.tsx.html +1 -1
  355. package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
  356. package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
  357. package/coverage/lcov-report/src/tabs/index.html +1 -1
  358. package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +1 -1
  359. package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
  360. package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +1 -1
  361. package/coverage/lcov-report/src/tabs/tabStyles.ts.html +1 -1
  362. package/coverage/lcov-report/src/tabs/useTabList.ts.html +1 -1
  363. package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
  364. package/coverage/lcov-report/src/tabs/utils.ts.html +1 -1
  365. package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
  366. package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +1 -1
  367. package/coverage/lcov-report/src/test-utils/data-testid.ts.html +18 -6
  368. package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
  369. package/coverage/lcov-report/src/test-utils/index.html +7 -7
  370. package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
  371. package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
  372. package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
  373. package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
  374. package/coverage/lcov-report/src/test-utils/polyfills/TextDecoder.ts.html +106 -0
  375. package/coverage/lcov-report/src/test-utils/polyfills/TextEncoder.ts.html +100 -0
  376. package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
  377. package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
  378. package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
  379. package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
  380. package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
  381. package/coverage/lcov-report/src/test-utils/root-html-environment.ts.html +85 -0
  382. package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
  383. package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
  384. package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
  385. package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
  386. package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
  387. package/coverage/lcov-report/src/theme/index.html +1 -1
  388. package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +1 -1
  389. package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
  390. package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
  391. package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
  392. package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
  393. package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
  394. package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +1 -1
  395. package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +1 -1
  396. package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
  397. package/coverage/lcov-report/src/tooltip/index.html +1 -1
  398. package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +1 -1
  399. package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +1 -1
  400. package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +1 -1
  401. package/coverage/lcov-report/src/tooltip/utils.ts.html +1 -1
  402. package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
  403. package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
  404. package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
  405. package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
  406. package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +1 -1
  407. package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
  408. package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
  409. package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
  410. package/coverage/lcov-report/src/transition/config.ts.html +3 -3
  411. package/coverage/lcov-report/src/transition/index.html +7 -7
  412. package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
  413. package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +1 -1
  414. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +1 -1
  415. package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
  416. package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +96 -150
  417. package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
  418. package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
  419. package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +1 -1
  420. package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +1 -1
  421. package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
  422. package/coverage/lcov-report/src/transition/useTransition.ts.html +152 -152
  423. package/coverage/lcov-report/src/transition/utils.ts.html +14 -14
  424. package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +1 -1
  425. package/coverage/lcov-report/src/tree/Tree.tsx.html +1 -1
  426. package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
  427. package/coverage/lcov-report/src/tree/TreeItem.tsx.html +1 -1
  428. package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
  429. package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
  430. package/coverage/lcov-report/src/tree/index.html +1 -1
  431. package/coverage/lcov-report/src/tree/styles.ts.html +5 -5
  432. package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
  433. package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
  434. package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
  435. package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
  436. package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
  437. package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
  438. package/coverage/lcov-report/src/typography/SrOnly.tsx.html +12 -12
  439. package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
  440. package/coverage/lcov-report/src/typography/Typography.tsx.html +94 -94
  441. package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
  442. package/coverage/lcov-report/src/typography/index.html +1 -1
  443. package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
  444. package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
  445. package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
  446. package/coverage/lcov-report/src/useElementSize.ts.html +1 -1
  447. package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
  448. package/coverage/lcov-report/src/useEnsuredRef.ts.html +11 -11
  449. package/coverage/lcov-report/src/useEnsuredState.ts.html +16 -16
  450. package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
  451. package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
  452. package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
  453. package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
  454. package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
  455. package/coverage/lcov-report/src/usePageInactive.ts.html +1 -1
  456. package/coverage/lcov-report/src/useResizeListener.ts.html +1 -1
  457. package/coverage/lcov-report/src/useResizeObserver.ts.html +23 -23
  458. package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
  459. package/coverage/lcov-report/src/useToggle.ts.html +1 -1
  460. package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
  461. package/coverage/lcov-report/src/useWindowSize.ts.html +1 -1
  462. package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
  463. package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
  464. package/coverage/lcov-report/src/utils/applyRef.ts.html +1 -1
  465. package/coverage/lcov-report/src/utils/bem.ts.html +50 -50
  466. package/coverage/lcov-report/src/utils/filters.ts.html +357 -84
  467. package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
  468. package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +1 -1
  469. package/coverage/lcov-report/src/utils/getPercentage.ts.html +1 -1
  470. package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +1 -1
  471. package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +1 -1
  472. package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
  473. package/coverage/lcov-report/src/utils/index.html +13 -268
  474. package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
  475. package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
  476. package/coverage/lcov-report/src/utils/nearest.ts.html +1 -1
  477. package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +1 -1
  478. package/coverage/lcov-report/src/utils/randomInt.ts.html +1 -1
  479. package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
  480. package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
  481. package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
  482. package/coverage/lcov-report/src/window-splitter/index.html +1 -1
  483. package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +1 -1
  484. package/coverage/lcov-report/transition/config.ts.html +5 -5
  485. package/coverage/lcov-report/transition/index.html +1 -1
  486. package/coverage/lcov-report/transition/useScaleTransition.ts.html +535 -0
  487. package/coverage/lcov-report/useAutoComplete.ts.html +787 -0
  488. package/coverage/lcov-report/useCollapseTransition.ts.html +166 -211
  489. package/coverage/lcov-report/useCombobox.ts.html +1513 -0
  490. package/coverage/lcov-report/useInlineAutoComplete.ts.html +379 -0
  491. package/coverage/lcov-report/useSelectCombobox.ts.html +295 -0
  492. package/coverage/lcov-report/utils/alphaNumericSort.ts.html +11 -50
  493. package/coverage/lcov-report/utils/filters.ts.html +1056 -201
  494. package/coverage/lcov-report/utils/index.html +10 -10
  495. package/coverage/lcov-report/utils/searching.ts.html +85 -0
  496. package/coverage/lcov-report/utils.ts.html +109 -277
  497. package/coverage/lcov.info +900 -363
  498. package/dist/RootHtml.d.ts +62 -0
  499. package/dist/RootHtml.js +49 -0
  500. package/dist/RootHtml.js.map +1 -0
  501. package/dist/_core.scss +49 -43
  502. package/dist/avatar/Avatar.d.ts +14 -0
  503. package/dist/avatar/Avatar.js +5 -2
  504. package/dist/avatar/Avatar.js.map +1 -1
  505. package/dist/badge/_badge.scss +23 -19
  506. package/dist/dialog/FixedDialog.d.ts +5 -4
  507. package/dist/dialog/FixedDialog.js +5 -4
  508. package/dist/dialog/FixedDialog.js.map +1 -1
  509. package/dist/form/MenuItemInputToggle.d.ts +2 -15
  510. package/dist/form/MenuItemInputToggle.js +26 -37
  511. package/dist/form/MenuItemInputToggle.js.map +1 -1
  512. package/dist/form/NativeSelect.d.ts +5 -2
  513. package/dist/form/NativeSelect.js.map +1 -1
  514. package/dist/form/Option.js +3 -2
  515. package/dist/form/Option.js.map +1 -1
  516. package/dist/form/Select.d.ts +105 -15
  517. package/dist/form/Select.js +160 -249
  518. package/dist/form/Select.js.map +1 -1
  519. package/dist/form/SelectedOption.d.ts +21 -0
  520. package/dist/form/SelectedOption.js +37 -0
  521. package/dist/form/SelectedOption.js.map +1 -0
  522. package/dist/form/TextField.d.ts +2 -2
  523. package/dist/form/TextField.js.map +1 -1
  524. package/dist/form/_form.scss +47 -29
  525. package/dist/form/menuItemInputToggleStyles.d.ts +39 -0
  526. package/dist/form/menuItemInputToggleStyles.js +31 -0
  527. package/dist/form/menuItemInputToggleStyles.js.map +1 -0
  528. package/dist/form/selectUtils.d.ts +1 -3
  529. package/dist/form/selectUtils.js +2 -10
  530. package/dist/form/selectUtils.js.map +1 -1
  531. package/dist/form/types.d.ts +6 -6
  532. package/dist/form/types.js.map +1 -1
  533. package/dist/form/useCombobox.d.ts +157 -0
  534. package/dist/form/useCombobox.js +206 -0
  535. package/dist/form/useCombobox.js.map +1 -0
  536. package/dist/form/useEditableCombobox.d.ts +15 -0
  537. package/dist/form/useEditableCombobox.js +101 -0
  538. package/dist/form/useEditableCombobox.js.map +1 -0
  539. package/dist/form/useFormReset.d.ts +16 -0
  540. package/dist/form/useFormReset.js +32 -0
  541. package/dist/form/useFormReset.js.map +1 -0
  542. package/dist/form/useListboxProvider.d.ts +1 -0
  543. package/dist/form/useListboxProvider.js +1 -0
  544. package/dist/form/useListboxProvider.js.map +1 -1
  545. package/dist/form/useSelectCombobox.d.ts +17 -0
  546. package/dist/form/useSelectCombobox.js +36 -0
  547. package/dist/form/useSelectCombobox.js.map +1 -0
  548. package/dist/form/utils.d.ts +11 -1
  549. package/dist/form/utils.js +6 -0
  550. package/dist/form/utils.js.map +1 -1
  551. package/dist/icon/_icon.scss +7 -5
  552. package/dist/index.d.ts +15 -1
  553. package/dist/index.js +15 -1
  554. package/dist/index.js.map +1 -1
  555. package/dist/interaction/_interaction.scss +56 -44
  556. package/dist/list/types.d.ts +10 -1
  557. package/dist/list/types.js.map +1 -1
  558. package/dist/menu/Menu.js +12 -1
  559. package/dist/menu/Menu.js.map +1 -1
  560. package/dist/menu/_menu.scss +1 -0
  561. package/dist/menu/useContextMenu.d.ts +3 -3
  562. package/dist/menu/useContextMenu.js +3 -3
  563. package/dist/menu/useContextMenu.js.map +1 -1
  564. package/dist/movement/types.d.ts +40 -21
  565. package/dist/movement/types.js.map +1 -1
  566. package/dist/movement/useKeyboardMovementProvider.js +15 -4
  567. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  568. package/dist/movement/utils.d.ts +7 -2
  569. package/dist/movement/utils.js +10 -0
  570. package/dist/movement/utils.js.map +1 -1
  571. package/dist/positioning/useFixedPositioning.js +0 -8
  572. package/dist/positioning/useFixedPositioning.js.map +1 -1
  573. package/dist/searching/caseInsensitive.d.ts +150 -0
  574. package/dist/searching/caseInsensitive.js +30 -0
  575. package/dist/searching/caseInsensitive.js.map +1 -0
  576. package/dist/searching/fuzzy.d.ts +128 -0
  577. package/dist/searching/fuzzy.js +54 -0
  578. package/dist/searching/fuzzy.js.map +1 -0
  579. package/dist/searching/toSearchQuery.d.ts +5 -0
  580. package/dist/searching/toSearchQuery.js +13 -0
  581. package/dist/searching/toSearchQuery.js.map +1 -0
  582. package/dist/searching/types.d.ts +28 -0
  583. package/dist/searching/types.js +5 -0
  584. package/dist/searching/types.js.map +1 -0
  585. package/dist/searching/utils.d.ts +21 -0
  586. package/dist/searching/utils.js +28 -0
  587. package/dist/searching/utils.js.map +1 -0
  588. package/dist/test-utils/IntersectionObserver.d.ts +12 -0
  589. package/dist/test-utils/ResizeObserver.d.ts +172 -0
  590. package/dist/test-utils/data-testid.d.ts +7 -0
  591. package/dist/test-utils/data-testid.js +1 -0
  592. package/dist/test-utils/data-testid.js.map +1 -1
  593. package/dist/test-utils/drag.d.ts +26 -0
  594. package/dist/test-utils/index.d.ts +7 -0
  595. package/dist/test-utils/jest-setup.d.ts +1 -0
  596. package/dist/test-utils/matchMedia.d.ts +101 -0
  597. package/dist/test-utils/polyfills/IntersectionObserver.d.ts +1 -0
  598. package/dist/test-utils/polyfills/ResizeObserver.d.ts +1 -0
  599. package/dist/test-utils/polyfills/TextDecoder.d.ts +1 -0
  600. package/dist/test-utils/polyfills/TextDecoder.js +8 -0
  601. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -0
  602. package/dist/test-utils/polyfills/TextEncoder.d.ts +1 -0
  603. package/dist/test-utils/polyfills/TextEncoder.js +6 -0
  604. package/dist/test-utils/polyfills/TextEncoder.js.map +1 -0
  605. package/dist/test-utils/polyfills/index.d.ts +7 -0
  606. package/dist/test-utils/polyfills/index.js +2 -0
  607. package/dist/test-utils/polyfills/index.js.map +1 -1
  608. package/dist/test-utils/polyfills/matchMedia.d.ts +1 -0
  609. package/dist/test-utils/polyfills/offsetParent.d.ts +1 -0
  610. package/dist/test-utils/polyfills/scrollIntoView.d.ts +1 -0
  611. package/dist/test-utils/render.d.ts +13 -0
  612. package/dist/test-utils/timers.d.ts +39 -0
  613. package/dist/theme/_theme.scss +192 -34
  614. package/dist/transition/useCollapseTransition.d.ts +3 -18
  615. package/dist/transition/useCollapseTransition.js +1 -10
  616. package/dist/transition/useCollapseTransition.js.map +1 -1
  617. package/dist/transition/utils.js +7 -2
  618. package/dist/transition/utils.js.map +1 -1
  619. package/dist/typography/SrOnly.d.ts +3 -3
  620. package/dist/typography/SrOnly.js +4 -4
  621. package/dist/typography/SrOnly.js.map +1 -1
  622. package/dist/typography/Typography.d.ts +19 -19
  623. package/dist/typography/Typography.js +19 -19
  624. package/dist/typography/Typography.js.map +1 -1
  625. package/dist/typography/_typography.scss +65 -25
  626. package/dist/useEnsuredState.d.ts +1 -1
  627. package/dist/useEnsuredState.js.map +1 -1
  628. package/dist/utils/alphaNumericSort.d.ts +1 -1
  629. package/dist/utils/alphaNumericSort.js +2 -10
  630. package/dist/utils/alphaNumericSort.js.map +1 -1
  631. package/jest.config.ts +4 -0
  632. package/package.json +21 -20
  633. package/src/RootHtml.tsx +95 -0
  634. package/src/__tests__/RootHtml.node.tsx +46 -0
  635. package/src/__tests__/__snapshots__/RootHtml.node.tsx.snap +19 -0
  636. package/src/_core.scss +49 -43
  637. package/src/avatar/Avatar.tsx +24 -3
  638. package/src/avatar/__tests__/Avatar.tsx +1 -1
  639. package/src/avatar/__tests__/__snapshots__/Avatar.tsx.snap +6 -6
  640. package/src/badge/_badge.scss +23 -19
  641. package/src/button/__tests__/__snapshots__/Button.tsx.snap +1 -1
  642. package/src/dialog/FixedDialog.tsx +5 -4
  643. package/src/form/MenuItemInputToggle.tsx +46 -64
  644. package/src/form/NativeSelect.tsx +6 -3
  645. package/src/form/Option.tsx +8 -2
  646. package/src/form/Select.tsx +251 -335
  647. package/src/form/SelectedOption.tsx +55 -0
  648. package/src/form/TextField.tsx +2 -2
  649. package/src/form/__tests__/MenuItemCheckbox.tsx +53 -0
  650. package/src/form/__tests__/MenuItemRadio.tsx +53 -0
  651. package/src/form/__tests__/Select.tsx +439 -0
  652. package/src/form/__tests__/__snapshots__/FileInput.tsx.snap +23 -23
  653. package/src/form/__tests__/__snapshots__/MenuItemCheckbox.tsx.snap +96 -0
  654. package/src/form/__tests__/__snapshots__/MenuItemRadio.tsx.snap +96 -0
  655. package/src/form/__tests__/__snapshots__/Select.tsx.snap +492 -0
  656. package/src/form/__tests__/useFormReset.tsx +195 -0
  657. package/src/form/_form.scss +47 -29
  658. package/src/form/menuItemInputToggleStyles.ts +78 -0
  659. package/src/form/selectUtils.ts +3 -14
  660. package/src/form/types.ts +6 -6
  661. package/src/form/useCombobox.ts +523 -0
  662. package/src/form/useEditableCombobox.ts +139 -0
  663. package/src/form/useFormReset.ts +48 -0
  664. package/src/form/useListboxProvider.ts +2 -0
  665. package/src/form/useSelectCombobox.ts +70 -0
  666. package/src/form/utils.ts +17 -4
  667. package/src/icon/_icon.scss +7 -5
  668. package/src/index.ts +15 -1
  669. package/src/interaction/_interaction.scss +56 -44
  670. package/src/list/types.ts +12 -1
  671. package/src/menu/Menu.tsx +9 -1
  672. package/src/menu/__tests__/__snapshots__/useContextMenu.tsx.snap +54 -0
  673. package/src/menu/__tests__/useContextMenu.tsx +41 -0
  674. package/src/menu/_menu.scss +1 -0
  675. package/src/menu/useContextMenu.ts +3 -3
  676. package/src/movement/types.ts +50 -25
  677. package/src/movement/useKeyboardMovementProvider.ts +21 -8
  678. package/src/movement/utils.ts +12 -2
  679. package/src/positioning/__tests__/__snapshots__/useFixedPositioning.tsx.snap +0 -32
  680. package/src/positioning/__tests__/useFixedPositioning.tsx +0 -14
  681. package/src/positioning/useFixedPositioning.ts +0 -6
  682. package/src/searching/__tests__/caseInsensitive.ts +165 -0
  683. package/src/searching/__tests__/fuzzy.ts +169 -0
  684. package/src/searching/__tests__/toSearchQuery.ts +21 -0
  685. package/src/searching/caseInsensitive.ts +200 -0
  686. package/src/searching/fuzzy.ts +175 -0
  687. package/src/searching/toSearchQuery.ts +18 -0
  688. package/src/searching/types.ts +34 -0
  689. package/src/searching/utils.ts +54 -0
  690. package/src/test-utils/data-testid.ts +5 -1
  691. package/src/test-utils/polyfills/TextDecoder.ts +7 -0
  692. package/src/test-utils/polyfills/TextEncoder.ts +5 -0
  693. package/src/test-utils/polyfills/index.ts +2 -0
  694. package/src/theme/_theme.scss +192 -34
  695. package/src/transition/__tests__/utils.ts +25 -0
  696. package/src/transition/useCollapseTransition.ts +6 -24
  697. package/src/transition/utils.ts +10 -5
  698. package/src/typography/SrOnly.tsx +9 -9
  699. package/src/typography/Typography.tsx +19 -19
  700. package/src/typography/__tests__/__snapshots__/SrOnly.tsx.snap +5 -5
  701. package/src/typography/_typography.scss +65 -25
  702. package/src/useEnsuredState.ts +1 -1
  703. package/src/utils/alphaNumericSort.ts +3 -16
  704. package/tsconfig.json +2 -2
  705. package/tsconfig.types.json +1 -1
  706. package/dist/form/SelectValue.d.ts +0 -17
  707. package/dist/form/SelectValue.js +0 -32
  708. package/dist/form/SelectValue.js.map +0 -1
  709. package/dist/utils/filters.d.ts +0 -196
  710. package/dist/utils/filters.js +0 -67
  711. package/dist/utils/filters.js.map +0 -1
  712. package/src/form/SelectValue.tsx +0 -39
  713. package/src/utils/filters.ts +0 -320
@@ -0,0 +1,157 @@
1
+ import { type FocusEventHandler, type KeyboardEventHandler, type MouseEventHandler, type Ref, type RefCallback, type RefObject } from "react";
2
+ import { type MenuProps } from "../menu/Menu.js";
3
+ import { type MenuSheetConfigurableProps } from "../menu/MenuSheet.js";
4
+ import { type GetDefaultFocusedIndex, type GetFocusableElements, type KeyboardMovementExtensionData, type KeyboardMovementProviderImplementation, type KeyboardMovementProviderOptions } from "../movement/types.js";
5
+ import { type PositionAnchor, type PositionWidth } from "../positioning/types.js";
6
+ import { type TransitionCallbacks } from "../transition/types.js";
7
+ import { type NonNullMutableRef, type UseStateInitializer, type UseStateSetter } from "../types.js";
8
+ /**
9
+ * @remarks \@since 6.0.0
10
+ */
11
+ export declare const getNonDisabledOptions: (container: HTMLElement) => readonly HTMLElement[];
12
+ /**
13
+ * @remarks \@since 6.0.0
14
+ */
15
+ export type SupportedComboboxPopup = "listbox" | "grid" | "dialog";
16
+ /**
17
+ * @remarks \@since 6.0.0
18
+ */
19
+ export interface ComboboxKeyboardMovementData<E extends HTMLElement = HTMLInputElement> extends KeyboardMovementExtensionData<E> {
20
+ show(): void;
21
+ hide(): void;
22
+ visible: boolean;
23
+ focusLast: NonNullMutableRef<boolean>;
24
+ }
25
+ /**
26
+ * @remarks \@since 6.0.0
27
+ */
28
+ export type ExtendComboboxKeyDown<E extends HTMLElement = HTMLInputElement> = (movementData: ComboboxKeyboardMovementData<E>) => void;
29
+ /**
30
+ * @remarks \@since 6.0.0
31
+ */
32
+ export type ComboboxKeyboardMovementOptions<ComboboxEl extends HTMLElement = HTMLInputElement> = Pick<KeyboardMovementProviderOptions<ComboboxEl>, "onClick" | "onFocus" | "onKeyDown" | "disabled" | "loopable" | "searchable" | "onFocusChange" | "isNegativeOneAllowed">;
33
+ /**
34
+ * @remarks \@since 6.0.0
35
+ */
36
+ export interface BaseComboboxOptions<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends ComboboxKeyboardMovementOptions<ComboboxEl> {
37
+ /**
38
+ * This is the {@link InputHTMLAttributes.form} attribute and is used to
39
+ * attempt submitting a form when the enter key is pressed.
40
+ */
41
+ form?: string;
42
+ /**
43
+ * @defaultValue `"combobox-popup-" + useId()`
44
+ */
45
+ popupId?: string;
46
+ popupRef?: Ref<PopupEl>;
47
+ /**
48
+ * @defaultValue `"combobox-" + useId()`
49
+ */
50
+ comboboxId?: string;
51
+ comboboxRef?: Ref<ComboboxEl>;
52
+ /**
53
+ * @defaultValue `"listbox"`
54
+ */
55
+ popup?: "listbox" | "grid" | "dialog";
56
+ /**
57
+ * @defaultValue `false`
58
+ */
59
+ defaultVisible?: UseStateInitializer<boolean>;
60
+ extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;
61
+ /**
62
+ * @defaultValue {@link getNonDisabledOptions}
63
+ */
64
+ getFocusableElements?: GetFocusableElements;
65
+ getDefaultFocusedIndex?: GetDefaultFocusedIndex;
66
+ }
67
+ /**
68
+ * @remarks \@since 6.0.0
69
+ */
70
+ export interface ComboboxOptions<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends BaseComboboxOptions<ComboboxEl, PopupEl> {
71
+ getEnterDefaultFocusedIndex(options: {
72
+ focusLast: boolean;
73
+ focusables: readonly HTMLElement[];
74
+ currentFocusIndex: number;
75
+ }): number;
76
+ }
77
+ /**
78
+ * @remarks \@since 6.0.0
79
+ */
80
+ export interface ComboboxWidgetProps<ComboboxEl extends HTMLElement = HTMLInputElement> {
81
+ "aria-controls": string;
82
+ "aria-disabled": true | undefined;
83
+ "aria-expanded": boolean;
84
+ "aria-haspopup": SupportedComboboxPopup;
85
+ id: string;
86
+ ref: RefCallback<ComboboxEl>;
87
+ role: "combobox";
88
+ onClick: MouseEventHandler<ComboboxEl>;
89
+ onFocus: FocusEventHandler<ComboboxEl>;
90
+ onKeyDown: KeyboardEventHandler<ComboboxEl>;
91
+ }
92
+ /**
93
+ * @remarks \@since 6.0.0
94
+ */
95
+ export interface ComboboxWidgetPopupProps<PopupEl extends HTMLElement = HTMLElement> {
96
+ id: string;
97
+ ref: RefCallback<PopupEl>;
98
+ role: "listbox" | "dialog" | "grid";
99
+ }
100
+ /**
101
+ * @remarks \@since 6.0.0
102
+ */
103
+ export type ComboboxTransitionCallbacks = Pick<TransitionCallbacks, "onEntering" | "onEntered" | "onExiting" | "onExited">;
104
+ /**
105
+ * @remarks \@since 6.0.0
106
+ */
107
+ export interface ComboboxTransitionOptions extends ComboboxTransitionCallbacks {
108
+ disableTransition?: boolean;
109
+ }
110
+ /**
111
+ * @remarks \@since 6.0.0
112
+ */
113
+ export type ConfigurableComboboxMenuProps = Partial<Omit<MenuProps, "fixedTo" | "visible" | "onRequestClose" | keyof ComboboxWidgetPopupProps>>;
114
+ /**
115
+ * @remarks \@since 6.0.0
116
+ */
117
+ export interface ProvidedComboboxMenuProps<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLDivElement> extends Required<ComboboxTransitionCallbacks>, ComboboxWidgetPopupProps<PopupEl> {
118
+ visible: boolean;
119
+ onRequestClose(): void;
120
+ /** @defaultValue `"min"` */
121
+ width: PositionWidth;
122
+ /** @defaultValue `BELOW_CENTER_ANCHOR` */
123
+ anchor: PositionAnchor;
124
+ fixedTo: RefObject<ComboboxEl>;
125
+ sheetProps: MenuSheetConfigurableProps & Required<ComboboxTransitionCallbacks>;
126
+ }
127
+ /**
128
+ * @remarks \@since 6.0.0
129
+ */
130
+ export interface ComboboxMenuProps<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLDivElement> extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>, ProvidedComboboxMenuProps<ComboboxEl, PopupEl> {
131
+ }
132
+ /**
133
+ * Since the combobox usually uses the `Menu` as a popup element, this is a
134
+ * helper util to create the required props and merge any additional props
135
+ * with reasonable defaults.
136
+ */
137
+ export type ComboboxGetMenuProps<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLDivElement> = (props?: ConfigurableComboboxMenuProps) => ComboboxMenuProps<ComboboxEl, PopupEl>;
138
+ /**
139
+ * @remarks \@since 6.0.0
140
+ */
141
+ export interface ComboboxImplementation<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends KeyboardMovementProviderImplementation<ComboboxEl> {
142
+ show(): void;
143
+ hide(): void;
144
+ visible: boolean;
145
+ setVisible: UseStateSetter<boolean>;
146
+ focusLast: NonNullMutableRef<boolean>;
147
+ popupRef: RefObject<PopupEl>;
148
+ popupProps: ComboboxWidgetPopupProps<PopupEl>;
149
+ comboboxRef: RefObject<ComboboxEl>;
150
+ comboboxProps: ComboboxWidgetProps<ComboboxEl>;
151
+ getMenuProps: ComboboxGetMenuProps<ComboboxEl, PopupEl>;
152
+ getTransitionCallbacks(options: ComboboxTransitionOptions): Required<ComboboxTransitionCallbacks>;
153
+ }
154
+ /**
155
+ * @remarks \@since 6.0.0
156
+ */
157
+ export declare function useCombobox<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement>(options: ComboboxOptions<ComboboxEl, PopupEl>): ComboboxImplementation<ComboboxEl, PopupEl>;
@@ -0,0 +1,206 @@
1
+ "use client";
2
+ import { useRef } from "react";
3
+ import { useKeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
4
+ import { BELOW_CENTER_ANCHOR } from "../positioning/constants.js";
5
+ import { TRANSITION_CONFIG } from "../transition/config.js";
6
+ import { useEnsuredId } from "../useEnsuredId.js";
7
+ import { useEnsuredRef } from "../useEnsuredRef.js";
8
+ import { useToggle } from "../useToggle.js";
9
+ import { tryToSubmitRelatedForm } from "./utils.js";
10
+ const noop = ()=>{
11
+ // do nothing
12
+ };
13
+ /**
14
+ * @remarks \@since 6.0.0
15
+ */ export const getNonDisabledOptions = (container)=>[
16
+ ...container.querySelectorAll('[role="option"]:not([aria-disabled])')
17
+ ];
18
+ /**
19
+ * @remarks \@since 6.0.0
20
+ */ export function useCombobox(options) {
21
+ const { form, popup = "listbox", onClick = noop, onFocus, onKeyDown, searchable, isNegativeOneAllowed, loopable, disabled, comboboxId: propComboboxId, comboboxRef: propComboboxRef, popupId: propPopupId, popupRef: propPopupRef, defaultVisible = false, onFocusChange = noop, extendKeyDown = noop, getFocusableElements = getNonDisabledOptions, getEnterDefaultFocusedIndex, getDefaultFocusedIndex } = options;
22
+ const { toggled: visible, enable: show, disable: hide, setToggled: setVisible } = useToggle(defaultVisible);
23
+ const popupId = useEnsuredId(propPopupId, "combobox-popup");
24
+ const comboboxId = useEnsuredId(propComboboxId, "combobox");
25
+ const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);
26
+ const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);
27
+ const focusLast = useRef(false);
28
+ const { movementProps, movementContext, currentFocusIndex, activeDescendantId, setActiveDescendantId } = useKeyboardMovementProvider({
29
+ onFocus,
30
+ onKeyDown,
31
+ onClick (event) {
32
+ onClick(event);
33
+ if (disabled) {
34
+ return;
35
+ }
36
+ show();
37
+ },
38
+ extendKeyDown (movementData) {
39
+ extendKeyDown({
40
+ ...movementData,
41
+ show,
42
+ hide,
43
+ visible,
44
+ focusLast
45
+ });
46
+ const { event } = movementData;
47
+ if (event.isPropagationStopped()) {
48
+ return;
49
+ }
50
+ if (visible) {
51
+ switch(event.key){
52
+ case "Tab":
53
+ case "Escape":
54
+ event.stopPropagation();
55
+ hide();
56
+ break;
57
+ case "Enter":
58
+ event.preventDefault();
59
+ break;
60
+ }
61
+ // while visible, always use the default keyboard movement behavior
62
+ return;
63
+ }
64
+ switch(event.key){
65
+ case "ArrowUp":
66
+ case "ArrowDown":
67
+ event.preventDefault();
68
+ event.stopPropagation();
69
+ focusLast.current = event.key === "ArrowUp";
70
+ show();
71
+ break;
72
+ case "Enter":
73
+ tryToSubmitRelatedForm(event, form);
74
+ break;
75
+ }
76
+ },
77
+ disabled,
78
+ loopable,
79
+ searchable,
80
+ onFocusChange,
81
+ programmatic: true,
82
+ includeDisabled: false,
83
+ tabIndexBehavior: "virtual",
84
+ getFocusableElements (container, programmatic) {
85
+ const popup = popupRef.current;
86
+ if (!popup) {
87
+ return [];
88
+ }
89
+ return getFocusableElements(popup || container, programmatic);
90
+ },
91
+ isNegativeOneAllowed,
92
+ getDefaultFocusedIndex
93
+ });
94
+ const getTransitionCallbacks = (options = {})=>{
95
+ const { onEntered, onEntering, onExiting, onExited, disableTransition } = options;
96
+ const handleEntering = (callback = noop, skipped)=>(appearing)=>{
97
+ callback(appearing);
98
+ const popup = popupRef.current;
99
+ if (!popup || skipped) {
100
+ // Chrome does not trigger the scrollIntoView behavior correctly while
101
+ // using a scale transition, so need to trigger this on the entered
102
+ // flow to really make sure the item is in view.
103
+ // An alternative would be to implement a custom scrollIntoView
104
+ // behavior again like the previous versions of react-md, but this is
105
+ // less lines of code
106
+ const activeOption = document.getElementById(activeDescendantId);
107
+ if (activeOption) {
108
+ activeOption.scrollIntoView({
109
+ block: "nearest"
110
+ });
111
+ }
112
+ return;
113
+ }
114
+ const focusables = getFocusableElements(popup, true);
115
+ const index = getEnterDefaultFocusedIndex({
116
+ focusLast: focusLast.current,
117
+ focusables,
118
+ currentFocusIndex: currentFocusIndex.current
119
+ });
120
+ focusLast.current = false;
121
+ currentFocusIndex.current = index;
122
+ const option = focusables[index];
123
+ if (!option) {
124
+ return;
125
+ }
126
+ onFocusChange({
127
+ index,
128
+ element: option
129
+ });
130
+ option.scrollIntoView({
131
+ block: "nearest"
132
+ });
133
+ setActiveDescendantId(option.id || "");
134
+ };
135
+ const handleExiting = (callback = noop, skipped)=>()=>{
136
+ callback();
137
+ if (!skipped) {
138
+ // since the menu is unmounted or set to hidden while not visible, need
139
+ // to clear the aria-activedescendant and current focus index when
140
+ // hiding
141
+ currentFocusIndex.current = -1;
142
+ setActiveDescendantId("");
143
+ }
144
+ };
145
+ const isTransitionCompleteSkipped = !disableTransition && !TRANSITION_CONFIG.disabled;
146
+ return {
147
+ onEntering: handleEntering(onEntering, false),
148
+ onEntered: handleEntering(onEntered, isTransitionCompleteSkipped),
149
+ onExiting: handleExiting(onExiting, false),
150
+ onExited: handleExiting(onExited, isTransitionCompleteSkipped)
151
+ };
152
+ };
153
+ const popupProps = {
154
+ id: popupId,
155
+ ref: popupRefCallback,
156
+ role: popup
157
+ };
158
+ return {
159
+ show,
160
+ hide,
161
+ visible,
162
+ setVisible,
163
+ focusLast,
164
+ popupRef,
165
+ popupProps,
166
+ comboboxRef,
167
+ comboboxProps: {
168
+ ...movementProps,
169
+ "aria-controls": popupId,
170
+ "aria-disabled": disabled || undefined,
171
+ "aria-expanded": visible,
172
+ "aria-haspopup": popup,
173
+ id: comboboxId,
174
+ ref: comboboxRefCallback,
175
+ role: "combobox"
176
+ },
177
+ movementProps,
178
+ movementContext,
179
+ currentFocusIndex,
180
+ activeDescendantId,
181
+ setActiveDescendantId,
182
+ getTransitionCallbacks,
183
+ getMenuProps (props = {}) {
184
+ const { sheetProps, disableTransition } = props;
185
+ return {
186
+ anchor: BELOW_CENTER_ANCHOR,
187
+ width: "min",
188
+ ...props,
189
+ ...popupProps,
190
+ fixedTo: comboboxRef,
191
+ visible,
192
+ onRequestClose: hide,
193
+ ...getTransitionCallbacks(props),
194
+ sheetProps: {
195
+ ...sheetProps,
196
+ ...getTransitionCallbacks({
197
+ ...sheetProps,
198
+ disableTransition: sheetProps?.disableTransition ?? disableTransition
199
+ })
200
+ }
201
+ };
202
+ }
203
+ };
204
+ }
205
+
206
+ //# sourceMappingURL=useCombobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/useCombobox.ts"],"sourcesContent":["\"use client\";\nimport {\n useRef,\n type FocusEventHandler,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type Ref,\n type RefCallback,\n type RefObject,\n} from \"react\";\nimport { type MenuProps } from \"../menu/Menu.js\";\nimport { type MenuSheetConfigurableProps } from \"../menu/MenuSheet.js\";\nimport {\n type GetDefaultFocusedIndex,\n type GetFocusableElements,\n type KeyboardMovementExtensionData,\n type KeyboardMovementProviderImplementation,\n type KeyboardMovementProviderOptions,\n} from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { BELOW_CENTER_ANCHOR } from \"../positioning/constants.js\";\nimport {\n type PositionAnchor,\n type PositionWidth,\n} from \"../positioning/types.js\";\nimport { TRANSITION_CONFIG } from \"../transition/config.js\";\nimport {\n type TransitionCallbacks,\n type TransitionEnterHandler,\n type TransitionExitHandler,\n} from \"../transition/types.js\";\nimport {\n type NonNullMutableRef,\n type UseStateInitializer,\n type UseStateSetter,\n} from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useToggle } from \"../useToggle.js\";\nimport { tryToSubmitRelatedForm } from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport const getNonDisabledOptions = (\n container: HTMLElement\n): readonly HTMLElement[] => [\n ...container.querySelectorAll<HTMLLIElement>(\n '[role=\"option\"]:not([aria-disabled])'\n ),\n];\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type SupportedComboboxPopup = \"listbox\" | \"grid\" | \"dialog\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxKeyboardMovementData<\n E extends HTMLElement = HTMLInputElement,\n> extends KeyboardMovementExtensionData<E> {\n show(): void;\n hide(): void;\n visible: boolean;\n focusLast: NonNullMutableRef<boolean>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ExtendComboboxKeyDown<E extends HTMLElement = HTMLInputElement> = (\n movementData: ComboboxKeyboardMovementData<E>\n) => void;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ComboboxKeyboardMovementOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> = Pick<\n KeyboardMovementProviderOptions<ComboboxEl>,\n | \"onClick\"\n | \"onFocus\"\n | \"onKeyDown\"\n | \"disabled\"\n | \"loopable\"\n | \"searchable\"\n | \"onFocusChange\"\n | \"isNegativeOneAllowed\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface BaseComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxKeyboardMovementOptions<ComboboxEl> {\n /**\n * This is the {@link InputHTMLAttributes.form} attribute and is used to\n * attempt submitting a form when the enter key is pressed.\n */\n form?: string;\n\n /**\n * @defaultValue `\"combobox-popup-\" + useId()`\n */\n popupId?: string;\n popupRef?: Ref<PopupEl>;\n\n /**\n * @defaultValue `\"combobox-\" + useId()`\n */\n comboboxId?: string;\n comboboxRef?: Ref<ComboboxEl>;\n\n /**\n * @defaultValue `\"listbox\"`\n */\n popup?: \"listbox\" | \"grid\" | \"dialog\";\n\n /**\n * @defaultValue `false`\n */\n defaultVisible?: UseStateInitializer<boolean>;\n\n extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;\n\n /**\n * @defaultValue {@link getNonDisabledOptions}\n */\n getFocusableElements?: GetFocusableElements;\n\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends BaseComboboxOptions<ComboboxEl, PopupEl> {\n getEnterDefaultFocusedIndex(options: {\n focusLast: boolean;\n focusables: readonly HTMLElement[];\n currentFocusIndex: number;\n }): number;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxWidgetProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> {\n \"aria-controls\": string;\n \"aria-disabled\": true | undefined;\n \"aria-expanded\": boolean;\n \"aria-haspopup\": SupportedComboboxPopup;\n id: string;\n ref: RefCallback<ComboboxEl>;\n role: \"combobox\";\n onClick: MouseEventHandler<ComboboxEl>;\n onFocus: FocusEventHandler<ComboboxEl>;\n onKeyDown: KeyboardEventHandler<ComboboxEl>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxWidgetPopupProps<\n PopupEl extends HTMLElement = HTMLElement,\n> {\n id: string;\n ref: RefCallback<PopupEl>;\n role: \"listbox\" | \"dialog\" | \"grid\";\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ComboboxTransitionCallbacks = Pick<\n TransitionCallbacks,\n \"onEntering\" | \"onEntered\" | \"onExiting\" | \"onExited\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxTransitionOptions extends ComboboxTransitionCallbacks {\n disableTransition?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type ConfigurableComboboxMenuProps = Partial<\n Omit<\n MenuProps,\n \"fixedTo\" | \"visible\" | \"onRequestClose\" | keyof ComboboxWidgetPopupProps\n >\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ProvidedComboboxMenuProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLDivElement,\n> extends Required<ComboboxTransitionCallbacks>,\n ComboboxWidgetPopupProps<PopupEl> {\n visible: boolean;\n onRequestClose(): void;\n\n /** @defaultValue `\"min\"` */\n width: PositionWidth;\n\n /** @defaultValue `BELOW_CENTER_ANCHOR` */\n anchor: PositionAnchor;\n\n fixedTo: RefObject<ComboboxEl>;\n\n sheetProps: MenuSheetConfigurableProps &\n Required<ComboboxTransitionCallbacks>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxMenuProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLDivElement,\n> extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,\n ProvidedComboboxMenuProps<ComboboxEl, PopupEl> {}\n\n/**\n * Since the combobox usually uses the `Menu` as a popup element, this is a\n * helper util to create the required props and merge any additional props\n * with reasonable defaults.\n */\nexport type ComboboxGetMenuProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLDivElement,\n> = (\n props?: ConfigurableComboboxMenuProps\n) => ComboboxMenuProps<ComboboxEl, PopupEl>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface ComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends KeyboardMovementProviderImplementation<ComboboxEl> {\n show(): void;\n hide(): void;\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n focusLast: NonNullMutableRef<boolean>;\n popupRef: RefObject<PopupEl>;\n popupProps: ComboboxWidgetPopupProps<PopupEl>;\n comboboxRef: RefObject<ComboboxEl>;\n comboboxProps: ComboboxWidgetProps<ComboboxEl>;\n\n getMenuProps: ComboboxGetMenuProps<ComboboxEl, PopupEl>;\n getTransitionCallbacks(\n options: ComboboxTransitionOptions\n ): Required<ComboboxTransitionCallbacks>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function useCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: ComboboxOptions<ComboboxEl, PopupEl>\n): ComboboxImplementation<ComboboxEl, PopupEl> {\n const {\n form,\n popup = \"listbox\",\n onClick = noop,\n onFocus,\n onKeyDown,\n searchable,\n isNegativeOneAllowed,\n loopable,\n disabled,\n comboboxId: propComboboxId,\n comboboxRef: propComboboxRef,\n popupId: propPopupId,\n popupRef: propPopupRef,\n defaultVisible = false,\n onFocusChange = noop,\n extendKeyDown = noop,\n getFocusableElements = getNonDisabledOptions,\n getEnterDefaultFocusedIndex,\n getDefaultFocusedIndex,\n } = options;\n\n const {\n toggled: visible,\n enable: show,\n disable: hide,\n setToggled: setVisible,\n } = useToggle(defaultVisible);\n const popupId = useEnsuredId(propPopupId, \"combobox-popup\");\n const comboboxId = useEnsuredId(propComboboxId, \"combobox\");\n const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);\n const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);\n const focusLast = useRef(false);\n const {\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n } = useKeyboardMovementProvider<ComboboxEl>({\n onFocus,\n onKeyDown,\n onClick(event) {\n onClick(event);\n if (disabled) {\n return;\n }\n\n show();\n },\n extendKeyDown(movementData) {\n extendKeyDown({\n ...movementData,\n show,\n hide,\n visible,\n focusLast,\n });\n const { event } = movementData;\n if (event.isPropagationStopped()) {\n return;\n }\n\n if (visible) {\n switch (event.key) {\n case \"Tab\":\n case \"Escape\":\n event.stopPropagation();\n hide();\n break;\n case \"Enter\":\n event.preventDefault();\n break;\n }\n\n // while visible, always use the default keyboard movement behavior\n return;\n }\n\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n event.preventDefault();\n event.stopPropagation();\n focusLast.current = event.key === \"ArrowUp\";\n show();\n break;\n case \"Enter\":\n tryToSubmitRelatedForm(event, form);\n break;\n }\n },\n disabled,\n loopable,\n searchable,\n onFocusChange,\n programmatic: true,\n includeDisabled: false,\n tabIndexBehavior: \"virtual\",\n getFocusableElements(container, programmatic) {\n const popup = popupRef.current;\n if (!popup) {\n return [];\n }\n\n return getFocusableElements(popup || container, programmatic);\n },\n isNegativeOneAllowed,\n getDefaultFocusedIndex,\n });\n const getTransitionCallbacks = (\n options: ComboboxTransitionOptions = {}\n ): Required<ComboboxTransitionCallbacks> => {\n const { onEntered, onEntering, onExiting, onExited, disableTransition } =\n options;\n\n const handleEntering =\n (callback: TransitionEnterHandler = noop, skipped: boolean) =>\n (appearing: boolean) => {\n callback(appearing);\n\n const popup = popupRef.current;\n if (!popup || skipped) {\n // Chrome does not trigger the scrollIntoView behavior correctly while\n // using a scale transition, so need to trigger this on the entered\n // flow to really make sure the item is in view.\n // An alternative would be to implement a custom scrollIntoView\n // behavior again like the previous versions of react-md, but this is\n // less lines of code\n const activeOption = document.getElementById(activeDescendantId);\n if (activeOption) {\n activeOption.scrollIntoView({ block: \"nearest\" });\n }\n return;\n }\n\n const focusables = getFocusableElements(popup, true);\n const index = getEnterDefaultFocusedIndex({\n focusLast: focusLast.current,\n focusables,\n currentFocusIndex: currentFocusIndex.current,\n });\n focusLast.current = false;\n currentFocusIndex.current = index;\n\n const option = focusables[index];\n if (!option) {\n return;\n }\n\n onFocusChange({\n index,\n element: option,\n });\n\n option.scrollIntoView({ block: \"nearest\" });\n setActiveDescendantId(option.id || \"\");\n };\n const handleExiting =\n (callback: TransitionExitHandler = noop, skipped: boolean) =>\n (): void => {\n callback();\n\n if (!skipped) {\n // since the menu is unmounted or set to hidden while not visible, need\n // to clear the aria-activedescendant and current focus index when\n // hiding\n currentFocusIndex.current = -1;\n setActiveDescendantId(\"\");\n }\n };\n\n const isTransitionCompleteSkipped =\n !disableTransition && !TRANSITION_CONFIG.disabled;\n\n return {\n onEntering: handleEntering(onEntering, false),\n onEntered: handleEntering(onEntered, isTransitionCompleteSkipped),\n onExiting: handleExiting(onExiting, false),\n onExited: handleExiting(onExited, isTransitionCompleteSkipped),\n };\n };\n\n const popupProps: ComboboxWidgetPopupProps<PopupEl> = {\n id: popupId,\n ref: popupRefCallback,\n role: popup,\n };\n\n return {\n show,\n hide,\n visible,\n setVisible,\n focusLast,\n popupRef,\n popupProps,\n comboboxRef,\n comboboxProps: {\n ...movementProps,\n \"aria-controls\": popupId,\n \"aria-disabled\": disabled || undefined,\n \"aria-expanded\": visible,\n \"aria-haspopup\": popup,\n id: comboboxId,\n ref: comboboxRefCallback,\n role: \"combobox\",\n },\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n getTransitionCallbacks,\n getMenuProps(props = {}) {\n const { sheetProps, disableTransition } = props;\n return {\n anchor: BELOW_CENTER_ANCHOR,\n width: \"min\",\n ...props,\n ...popupProps,\n fixedTo: comboboxRef,\n visible,\n onRequestClose: hide,\n ...getTransitionCallbacks(props),\n sheetProps: {\n ...sheetProps,\n ...getTransitionCallbacks({\n ...sheetProps,\n disableTransition:\n sheetProps?.disableTransition ?? disableTransition,\n }),\n },\n };\n },\n };\n}\n"],"names":["useRef","useKeyboardMovementProvider","BELOW_CENTER_ANCHOR","TRANSITION_CONFIG","useEnsuredId","useEnsuredRef","useToggle","tryToSubmitRelatedForm","noop","getNonDisabledOptions","container","querySelectorAll","useCombobox","options","form","popup","onClick","onFocus","onKeyDown","searchable","isNegativeOneAllowed","loopable","disabled","comboboxId","propComboboxId","comboboxRef","propComboboxRef","popupId","propPopupId","popupRef","propPopupRef","defaultVisible","onFocusChange","extendKeyDown","getFocusableElements","getEnterDefaultFocusedIndex","getDefaultFocusedIndex","toggled","visible","enable","show","disable","hide","setToggled","setVisible","comboboxRefCallback","popupRefCallback","focusLast","movementProps","movementContext","currentFocusIndex","activeDescendantId","setActiveDescendantId","event","movementData","isPropagationStopped","key","stopPropagation","preventDefault","current","programmatic","includeDisabled","tabIndexBehavior","getTransitionCallbacks","onEntered","onEntering","onExiting","onExited","disableTransition","handleEntering","callback","skipped","appearing","activeOption","document","getElementById","scrollIntoView","block","focusables","index","option","element","id","handleExiting","isTransitionCompleteSkipped","popupProps","ref","role","comboboxProps","undefined","getMenuProps","props","sheetProps","anchor","width","fixedTo","onRequestClose"],"mappings":"AAAA;AACA,SACEA,MAAM,QAOD,QAAQ;AAUf,SAASC,2BAA2B,QAAQ,6CAA6C;AACzF,SAASC,mBAAmB,QAAQ,8BAA8B;AAKlE,SAASC,iBAAiB,QAAQ,0BAA0B;AAW5D,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,sBAAsB,QAAQ,aAAa;AAEpD,MAAMC,OAAO;AACX,aAAa;AACf;AAEA;;CAEC,GACD,OAAO,MAAMC,wBAAwB,CACnCC,YAC2B;WACxBA,UAAUC,gBAAgB,CAC3B;KAEH,CAAC;AA+NF;;CAEC,GACD,OAAO,SAASC,YAIdC,OAA6C;IAE7C,MAAM,EACJC,IAAI,EACJC,QAAQ,SAAS,EACjBC,UAAUR,IAAI,EACdS,OAAO,EACPC,SAAS,EACTC,UAAU,EACVC,oBAAoB,EACpBC,QAAQ,EACRC,QAAQ,EACRC,YAAYC,cAAc,EAC1BC,aAAaC,eAAe,EAC5BC,SAASC,WAAW,EACpBC,UAAUC,YAAY,EACtBC,iBAAiB,KAAK,EACtBC,gBAAgBxB,IAAI,EACpByB,gBAAgBzB,IAAI,EACpB0B,uBAAuBzB,qBAAqB,EAC5C0B,2BAA2B,EAC3BC,sBAAsB,EACvB,GAAGvB;IAEJ,MAAM,EACJwB,SAASC,OAAO,EAChBC,QAAQC,IAAI,EACZC,SAASC,IAAI,EACbC,YAAYC,UAAU,EACvB,GAAGtC,UAAUyB;IACd,MAAMJ,UAAUvB,aAAawB,aAAa;IAC1C,MAAML,aAAanB,aAAaoB,gBAAgB;IAChD,MAAM,CAACC,aAAaoB,oBAAoB,GAAGxC,cAAcqB;IACzD,MAAM,CAACG,UAAUiB,iBAAiB,GAAGzC,cAAcyB;IACnD,MAAMiB,YAAY/C,OAAO;IACzB,MAAM,EACJgD,aAAa,EACbC,eAAe,EACfC,iBAAiB,EACjBC,kBAAkB,EAClBC,qBAAqB,EACtB,GAAGnD,4BAAwC;QAC1CgB;QACAC;QACAF,SAAQqC,KAAK;YACXrC,QAAQqC;YACR,IAAI/B,UAAU;gBACZ;YACF;YAEAkB;QACF;QACAP,eAAcqB,YAAY;YACxBrB,cAAc;gBACZ,GAAGqB,YAAY;gBACfd;gBACAE;gBACAJ;gBACAS;YACF;YACA,MAAM,EAAEM,KAAK,EAAE,GAAGC;YAClB,IAAID,MAAME,oBAAoB,IAAI;gBAChC;YACF;YAEA,IAAIjB,SAAS;gBACX,OAAQe,MAAMG,GAAG;oBACf,KAAK;oBACL,KAAK;wBACHH,MAAMI,eAAe;wBACrBf;wBACA;oBACF,KAAK;wBACHW,MAAMK,cAAc;wBACpB;gBACJ;gBAEA,mEAAmE;gBACnE;YACF;YAEA,OAAQL,MAAMG,GAAG;gBACf,KAAK;gBACL,KAAK;oBACHH,MAAMK,cAAc;oBACpBL,MAAMI,eAAe;oBACrBV,UAAUY,OAAO,GAAGN,MAAMG,GAAG,KAAK;oBAClChB;oBACA;gBACF,KAAK;oBACHjC,uBAAuB8C,OAAOvC;oBAC9B;YACJ;QACF;QACAQ;QACAD;QACAF;QACAa;QACA4B,cAAc;QACdC,iBAAiB;QACjBC,kBAAkB;QAClB5B,sBAAqBxB,SAAS,EAAEkD,YAAY;YAC1C,MAAM7C,QAAQc,SAAS8B,OAAO;YAC9B,IAAI,CAAC5C,OAAO;gBACV,OAAO,EAAE;YACX;YAEA,OAAOmB,qBAAqBnB,SAASL,WAAWkD;QAClD;QACAxC;QACAgB;IACF;IACA,MAAM2B,yBAAyB,CAC7BlD,UAAqC,CAAC,CAAC;QAEvC,MAAM,EAAEmD,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,iBAAiB,EAAE,GACrEvD;QAEF,MAAMwD,iBACJ,CAACC,WAAmC9D,IAAI,EAAE+D,UAC1C,CAACC;gBACCF,SAASE;gBAET,MAAMzD,QAAQc,SAAS8B,OAAO;gBAC9B,IAAI,CAAC5C,SAASwD,SAAS;oBACrB,sEAAsE;oBACtE,mEAAmE;oBACnE,gDAAgD;oBAChD,+DAA+D;oBAC/D,qEAAqE;oBACrE,qBAAqB;oBACrB,MAAME,eAAeC,SAASC,cAAc,CAACxB;oBAC7C,IAAIsB,cAAc;wBAChBA,aAAaG,cAAc,CAAC;4BAAEC,OAAO;wBAAU;oBACjD;oBACA;gBACF;gBAEA,MAAMC,aAAa5C,qBAAqBnB,OAAO;gBAC/C,MAAMgE,QAAQ5C,4BAA4B;oBACxCY,WAAWA,UAAUY,OAAO;oBAC5BmB;oBACA5B,mBAAmBA,kBAAkBS,OAAO;gBAC9C;gBACAZ,UAAUY,OAAO,GAAG;gBACpBT,kBAAkBS,OAAO,GAAGoB;gBAE5B,MAAMC,SAASF,UAAU,CAACC,MAAM;gBAChC,IAAI,CAACC,QAAQ;oBACX;gBACF;gBAEAhD,cAAc;oBACZ+C;oBACAE,SAASD;gBACX;gBAEAA,OAAOJ,cAAc,CAAC;oBAAEC,OAAO;gBAAU;gBACzCzB,sBAAsB4B,OAAOE,EAAE,IAAI;YACrC;QACF,MAAMC,gBACJ,CAACb,WAAkC9D,IAAI,EAAE+D,UACzC;gBACED;gBAEA,IAAI,CAACC,SAAS;oBACZ,uEAAuE;oBACvE,kEAAkE;oBAClE,SAAS;oBACTrB,kBAAkBS,OAAO,GAAG,CAAC;oBAC7BP,sBAAsB;gBACxB;YACF;QAEF,MAAMgC,8BACJ,CAAChB,qBAAqB,CAACjE,kBAAkBmB,QAAQ;QAEnD,OAAO;YACL2C,YAAYI,eAAeJ,YAAY;YACvCD,WAAWK,eAAeL,WAAWoB;YACrClB,WAAWiB,cAAcjB,WAAW;YACpCC,UAAUgB,cAAchB,UAAUiB;QACpC;IACF;IAEA,MAAMC,aAAgD;QACpDH,IAAIvD;QACJ2D,KAAKxC;QACLyC,MAAMxE;IACR;IAEA,OAAO;QACLyB;QACAE;QACAJ;QACAM;QACAG;QACAlB;QACAwD;QACA5D;QACA+D,eAAe;YACb,GAAGxC,aAAa;YAChB,iBAAiBrB;YACjB,iBAAiBL,YAAYmE;YAC7B,iBAAiBnD;YACjB,iBAAiBvB;YACjBmE,IAAI3D;YACJ+D,KAAKzC;YACL0C,MAAM;QACR;QACAvC;QACAC;QACAC;QACAC;QACAC;QACAW;QACA2B,cAAaC,QAAQ,CAAC,CAAC;YACrB,MAAM,EAAEC,UAAU,EAAExB,iBAAiB,EAAE,GAAGuB;YAC1C,OAAO;gBACLE,QAAQ3F;gBACR4F,OAAO;gBACP,GAAGH,KAAK;gBACR,GAAGN,UAAU;gBACbU,SAAStE;gBACTa;gBACA0D,gBAAgBtD;gBAChB,GAAGqB,uBAAuB4B,MAAM;gBAChCC,YAAY;oBACV,GAAGA,UAAU;oBACb,GAAG7B,uBAAuB;wBACxB,GAAG6B,UAAU;wBACbxB,mBACEwB,YAAYxB,qBAAqBA;oBACrC,EAAE;gBACJ;YACF;QACF;IACF;AACF"}
@@ -0,0 +1,15 @@
1
+ import { type BaseComboboxOptions, type ComboboxImplementation } from "./useCombobox.js";
2
+ /**
3
+ * @remarks \@since 6.0.0
4
+ */
5
+ export interface EditableComboboxOptions<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends BaseComboboxOptions<ComboboxEl, PopupEl> {
6
+ }
7
+ /**
8
+ * @remarks \@since 6.0.0
9
+ */
10
+ export interface EditableComboboxImplementation<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends ComboboxImplementation<ComboboxEl, PopupEl> {
11
+ }
12
+ /**
13
+ * @remarks \@since 6.0.0
14
+ */
15
+ export declare function useEditableCombobox<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement>(options?: EditableComboboxOptions<ComboboxEl, PopupEl>): EditableComboboxImplementation<ComboboxEl, PopupEl>;
@@ -0,0 +1,101 @@
1
+ "use client";
2
+ import { useRef } from "react";
3
+ import { isTypeEvent } from "../movement/utils.js";
4
+ import { useCombobox } from "./useCombobox.js";
5
+ import { isChangeableHTMLElement, triggerManualChangeEvent } from "./utils.js";
6
+ /**
7
+ * @remarks \@since 6.0.0
8
+ */ export function useEditableCombobox(options = {}) {
9
+ const focusFirst = useRef(false);
10
+ const { getMenuProps, ...combobox } = useCombobox({
11
+ ...options,
12
+ loopable: true,
13
+ searchable: false,
14
+ isNegativeOneAllowed: true,
15
+ getEnterDefaultFocusedIndex (options) {
16
+ const { focusLast, focusables, currentFocusIndex } = options;
17
+ if (focusFirst.current) {
18
+ focusFirst.current = false;
19
+ return 0;
20
+ }
21
+ if (focusLast) {
22
+ return focusables.length - 1;
23
+ }
24
+ return currentFocusIndex;
25
+ },
26
+ extendKeyDown (movementData) {
27
+ const { event, show, hide, visible, currentFocusIndex, setActiveDescendantId } = movementData;
28
+ const resetFocus = ()=>{
29
+ currentFocusIndex.current = -1;
30
+ setActiveDescendantId("");
31
+ };
32
+ switch(event.key){
33
+ case "Escape":
34
+ if (!visible && isChangeableHTMLElement(event.currentTarget)) {
35
+ event.preventDefault();
36
+ event.stopPropagation();
37
+ triggerManualChangeEvent(event.currentTarget, "");
38
+ }
39
+ break;
40
+ case "Home":
41
+ case "End":
42
+ // do not attempt to jump to the start or end of the listbox so
43
+ // natural text editing occurs
44
+ event.stopPropagation();
45
+ if (visible) {
46
+ resetFocus();
47
+ }
48
+ break;
49
+ case "ArrowLeft":
50
+ case "ArrowRight":
51
+ if (visible) {
52
+ resetFocus();
53
+ }
54
+ break;
55
+ case "ArrowUp":
56
+ // Note: The non-altKey version is handled in the `useCombobox` hook
57
+ //
58
+ // if the popup is available and the altKey was pressed, return focus
59
+ // to the combobox without closing. If the focus was already on the
60
+ // combobox, hide the popup
61
+ if (visible && event.altKey) {
62
+ event.preventDefault();
63
+ event.stopPropagation();
64
+ if (currentFocusIndex.current !== -1) {
65
+ resetFocus();
66
+ } else {
67
+ hide();
68
+ }
69
+ }
70
+ break;
71
+ case "ArrowDown":
72
+ // if the popup is available, display the popup keep the focus on the
73
+ // combobox if the altKey was pressed. Otherwise, move focus into the
74
+ // listbox
75
+ if (!visible) {
76
+ event.preventDefault();
77
+ event.stopPropagation();
78
+ focusFirst.current = !event.altKey;
79
+ show();
80
+ }
81
+ break;
82
+ default:
83
+ if (isTypeEvent(event)) {
84
+ show();
85
+ resetFocus();
86
+ }
87
+ }
88
+ }
89
+ });
90
+ return {
91
+ ...combobox,
92
+ getMenuProps (props) {
93
+ return {
94
+ preventOverlap: true,
95
+ ...getMenuProps(props)
96
+ };
97
+ }
98
+ };
99
+ }
100
+
101
+ //# sourceMappingURL=useEditableCombobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/useEditableCombobox.ts"],"sourcesContent":["\"use client\";\nimport { useRef } from \"react\";\nimport { isTypeEvent } from \"../movement/utils.js\";\nimport {\n useCombobox,\n type BaseComboboxOptions,\n type ComboboxImplementation,\n} from \"./useCombobox.js\";\nimport { isChangeableHTMLElement, triggerManualChangeEvent } from \"./utils.js\";\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface EditableComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends BaseComboboxOptions<ComboboxEl, PopupEl> {}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface EditableComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxImplementation<ComboboxEl, PopupEl> {}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function useEditableCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: EditableComboboxOptions<ComboboxEl, PopupEl> = {}\n): EditableComboboxImplementation<ComboboxEl, PopupEl> {\n const focusFirst = useRef(false);\n const { getMenuProps, ...combobox } = useCombobox({\n ...options,\n loopable: true,\n searchable: false,\n isNegativeOneAllowed: true,\n getEnterDefaultFocusedIndex(options) {\n const { focusLast, focusables, currentFocusIndex } = options;\n if (focusFirst.current) {\n focusFirst.current = false;\n return 0;\n }\n\n if (focusLast) {\n return focusables.length - 1;\n }\n\n return currentFocusIndex;\n },\n extendKeyDown(movementData) {\n const {\n event,\n show,\n hide,\n visible,\n currentFocusIndex,\n setActiveDescendantId,\n } = movementData;\n\n const resetFocus = (): void => {\n currentFocusIndex.current = -1;\n setActiveDescendantId(\"\");\n };\n\n switch (event.key) {\n case \"Escape\":\n if (!visible && isChangeableHTMLElement(event.currentTarget)) {\n event.preventDefault();\n event.stopPropagation();\n triggerManualChangeEvent(event.currentTarget, \"\");\n }\n break;\n case \"Home\":\n case \"End\":\n // do not attempt to jump to the start or end of the listbox so\n // natural text editing occurs\n event.stopPropagation();\n if (visible) {\n resetFocus();\n }\n break;\n case \"ArrowLeft\":\n case \"ArrowRight\":\n if (visible) {\n resetFocus();\n }\n break;\n case \"ArrowUp\":\n // Note: The non-altKey version is handled in the `useCombobox` hook\n //\n // if the popup is available and the altKey was pressed, return focus\n // to the combobox without closing. If the focus was already on the\n // combobox, hide the popup\n if (visible && event.altKey) {\n event.preventDefault();\n event.stopPropagation();\n\n if (currentFocusIndex.current !== -1) {\n resetFocus();\n } else {\n hide();\n }\n }\n break;\n case \"ArrowDown\":\n // if the popup is available, display the popup keep the focus on the\n // combobox if the altKey was pressed. Otherwise, move focus into the\n // listbox\n if (!visible) {\n event.preventDefault();\n event.stopPropagation();\n focusFirst.current = !event.altKey;\n show();\n }\n break;\n default:\n if (isTypeEvent(event)) {\n show();\n resetFocus();\n }\n }\n },\n });\n\n return {\n ...combobox,\n getMenuProps(props) {\n return {\n preventOverlap: true,\n ...getMenuProps(props),\n };\n },\n };\n}\n"],"names":["useRef","isTypeEvent","useCombobox","isChangeableHTMLElement","triggerManualChangeEvent","useEditableCombobox","options","focusFirst","getMenuProps","combobox","loopable","searchable","isNegativeOneAllowed","getEnterDefaultFocusedIndex","focusLast","focusables","currentFocusIndex","current","length","extendKeyDown","movementData","event","show","hide","visible","setActiveDescendantId","resetFocus","key","currentTarget","preventDefault","stopPropagation","altKey","props","preventOverlap"],"mappings":"AAAA;AACA,SAASA,MAAM,QAAQ,QAAQ;AAC/B,SAASC,WAAW,QAAQ,uBAAuB;AACnD,SACEC,WAAW,QAGN,mBAAmB;AAC1B,SAASC,uBAAuB,EAAEC,wBAAwB,QAAQ,aAAa;AAkB/E;;CAEC,GACD,OAAO,SAASC,oBAIdC,UAAwD,CAAC,CAAC;IAE1D,MAAMC,aAAaP,OAAO;IAC1B,MAAM,EAAEQ,YAAY,EAAE,GAAGC,UAAU,GAAGP,YAAY;QAChD,GAAGI,OAAO;QACVI,UAAU;QACVC,YAAY;QACZC,sBAAsB;QACtBC,6BAA4BP,OAAO;YACjC,MAAM,EAAEQ,SAAS,EAAEC,UAAU,EAAEC,iBAAiB,EAAE,GAAGV;YACrD,IAAIC,WAAWU,OAAO,EAAE;gBACtBV,WAAWU,OAAO,GAAG;gBACrB,OAAO;YACT;YAEA,IAAIH,WAAW;gBACb,OAAOC,WAAWG,MAAM,GAAG;YAC7B;YAEA,OAAOF;QACT;QACAG,eAAcC,YAAY;YACxB,MAAM,EACJC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,OAAO,EACPR,iBAAiB,EACjBS,qBAAqB,EACtB,GAAGL;YAEJ,MAAMM,aAAa;gBACjBV,kBAAkBC,OAAO,GAAG,CAAC;gBAC7BQ,sBAAsB;YACxB;YAEA,OAAQJ,MAAMM,GAAG;gBACf,KAAK;oBACH,IAAI,CAACH,WAAWrB,wBAAwBkB,MAAMO,aAAa,GAAG;wBAC5DP,MAAMQ,cAAc;wBACpBR,MAAMS,eAAe;wBACrB1B,yBAAyBiB,MAAMO,aAAa,EAAE;oBAChD;oBACA;gBACF,KAAK;gBACL,KAAK;oBACH,+DAA+D;oBAC/D,8BAA8B;oBAC9BP,MAAMS,eAAe;oBACrB,IAAIN,SAAS;wBACXE;oBACF;oBACA;gBACF,KAAK;gBACL,KAAK;oBACH,IAAIF,SAAS;wBACXE;oBACF;oBACA;gBACF,KAAK;oBACH,oEAAoE;oBACpE,EAAE;oBACF,qEAAqE;oBACrE,mEAAmE;oBACnE,2BAA2B;oBAC3B,IAAIF,WAAWH,MAAMU,MAAM,EAAE;wBAC3BV,MAAMQ,cAAc;wBACpBR,MAAMS,eAAe;wBAErB,IAAId,kBAAkBC,OAAO,KAAK,CAAC,GAAG;4BACpCS;wBACF,OAAO;4BACLH;wBACF;oBACF;oBACA;gBACF,KAAK;oBACH,qEAAqE;oBACrE,qEAAqE;oBACrE,UAAU;oBACV,IAAI,CAACC,SAAS;wBACZH,MAAMQ,cAAc;wBACpBR,MAAMS,eAAe;wBACrBvB,WAAWU,OAAO,GAAG,CAACI,MAAMU,MAAM;wBAClCT;oBACF;oBACA;gBACF;oBACE,IAAIrB,YAAYoB,QAAQ;wBACtBC;wBACAI;oBACF;YACJ;QACF;IACF;IAEA,OAAO;QACL,GAAGjB,QAAQ;QACXD,cAAawB,KAAK;YAChB,OAAO;gBACLC,gBAAgB;gBAChB,GAAGzB,aAAawB,MAAM;YACxB;QACF;IACF;AACF"}
@@ -0,0 +1,16 @@
1
+ import { type RefObject } from "react";
2
+ import { type ChangeableHTMLElement } from "./utils.js";
3
+ /**
4
+ * @remarks \@since 6.0.0
5
+ * @internal
6
+ */
7
+ export interface FormResetOptions {
8
+ form?: string;
9
+ elementRef: RefObject<ChangeableHTMLElement>;
10
+ defaultValue: string;
11
+ }
12
+ /**
13
+ * @remarks \@since 6.0.0
14
+ * @internal
15
+ */
16
+ export declare function useFormReset(options: FormResetOptions): void;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+ import { useEffect } from "react";
3
+ import { triggerManualChangeEvent } from "./utils.js";
4
+ /**
5
+ * @remarks \@since 6.0.0
6
+ * @internal
7
+ */ export function useFormReset(options) {
8
+ const { form, elementRef, defaultValue } = options;
9
+ useEffect(()=>{
10
+ const element = elementRef.current;
11
+ if (!element) {
12
+ return;
13
+ }
14
+ const formElement = form && document.getElementById(form) || element.closest("form") || null;
15
+ if (!formElement) {
16
+ return;
17
+ }
18
+ const handleReset = ()=>{
19
+ triggerManualChangeEvent(element, defaultValue);
20
+ };
21
+ formElement.addEventListener("reset", handleReset);
22
+ return ()=>{
23
+ formElement.removeEventListener("reset", handleReset);
24
+ };
25
+ }, [
26
+ defaultValue,
27
+ elementRef,
28
+ form
29
+ ]);
30
+ }
31
+
32
+ //# sourceMappingURL=useFormReset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/form/useFormReset.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, type RefObject } from \"react\";\nimport {\n triggerManualChangeEvent,\n type ChangeableHTMLElement,\n} from \"./utils.js\";\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface FormResetOptions {\n form?: string;\n elementRef: RefObject<ChangeableHTMLElement>;\n defaultValue: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport function useFormReset(options: FormResetOptions): void {\n const { form, elementRef, defaultValue } = options;\n\n useEffect(() => {\n const element = elementRef.current;\n if (!element) {\n return;\n }\n\n const formElement =\n (form && document.getElementById(form)) ||\n element.closest<HTMLFormElement>(\"form\") ||\n null;\n if (!formElement) {\n return;\n }\n\n const handleReset = (): void => {\n triggerManualChangeEvent(element, defaultValue);\n };\n\n formElement.addEventListener(\"reset\", handleReset);\n return () => {\n formElement.removeEventListener(\"reset\", handleReset);\n };\n }, [defaultValue, elementRef, form]);\n}\n"],"names":["useEffect","triggerManualChangeEvent","useFormReset","options","form","elementRef","defaultValue","element","current","formElement","document","getElementById","closest","handleReset","addEventListener","removeEventListener"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAwB,QAAQ;AAClD,SACEC,wBAAwB,QAEnB,aAAa;AAYpB;;;CAGC,GACD,OAAO,SAASC,aAAaC,OAAyB;IACpD,MAAM,EAAEC,IAAI,EAAEC,UAAU,EAAEC,YAAY,EAAE,GAAGH;IAE3CH,UAAU;QACR,MAAMO,UAAUF,WAAWG,OAAO;QAClC,IAAI,CAACD,SAAS;YACZ;QACF;QAEA,MAAME,cACJ,AAACL,QAAQM,SAASC,cAAc,CAACP,SACjCG,QAAQK,OAAO,CAAkB,WACjC;QACF,IAAI,CAACH,aAAa;YAChB;QACF;QAEA,MAAMI,cAAc;YAClBZ,yBAAyBM,SAASD;QACpC;QAEAG,YAAYK,gBAAgB,CAAC,SAASD;QACtC,OAAO;YACLJ,YAAYM,mBAAmB,CAAC,SAASF;QAC3C;IACF,GAAG;QAACP;QAAcD;QAAYD;KAAK;AACrC"}
@@ -13,6 +13,7 @@ export interface ListboxContext {
13
13
  * selected or not.
14
14
  */
15
15
  currentValue: string | number | null;
16
+ selectedIconAfter: boolean;
16
17
  disableSelectedIcon: boolean;
17
18
  }
18
19
  /**
@@ -5,6 +5,7 @@ const context = createContext({
5
5
  current: null
6
6
  },
7
7
  currentValue: null,
8
+ selectedIconAfter: false,
8
9
  disableSelectedIcon: false
9
10
  });
10
11
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/useListboxProvider.ts"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type RefObject } from \"react\";\n\n/**\n * @internal\n * \\@remarks \\@since 6.0.0\n */\nexport interface ListboxContext {\n /**\n * This ref is used to trigger the change event when an option is clicked.\n */\n inputRef: RefObject<HTMLInputElement>;\n\n /**\n * This is used within the `Option` component to determine if it is currently\n * selected or not.\n */\n currentValue: string | number | null;\n\n disableSelectedIcon: boolean;\n}\n\nconst context = createContext<ListboxContext>({\n inputRef: { current: null },\n currentValue: null,\n disableSelectedIcon: false,\n});\n\n/**\n * **Client Component**\n *\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport const { Provider: ListboxProvider } = context;\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function useListboxContext(): ListboxContext {\n return useContext(context);\n}\n"],"names":["createContext","useContext","context","inputRef","current","currentValue","disableSelectedIcon","Provider","ListboxProvider","useListboxContext"],"mappings":"AAAA;AACA,SAASA,aAAa,EAAEC,UAAU,QAAwB,QAAQ;AAqBlE,MAAMC,UAAUF,cAA8B;IAC5CG,UAAU;QAAEC,SAAS;IAAK;IAC1BC,cAAc;IACdC,qBAAqB;AACvB;AAEA;;;;;CAKC,GACD,OAAO,MAAM,EAAEC,UAAUC,eAAe,EAAE,GAAGN,QAAQ;AAErD;;;CAGC,GACD,OAAO,SAASO;IACd,OAAOR,WAAWC;AACpB"}
1
+ {"version":3,"sources":["../../src/form/useListboxProvider.ts"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, type RefObject } from \"react\";\n\n/**\n * @internal\n * \\@remarks \\@since 6.0.0\n */\nexport interface ListboxContext {\n /**\n * This ref is used to trigger the change event when an option is clicked.\n */\n inputRef: RefObject<HTMLInputElement>;\n\n /**\n * This is used within the `Option` component to determine if it is currently\n * selected or not.\n */\n currentValue: string | number | null;\n\n selectedIconAfter: boolean;\n disableSelectedIcon: boolean;\n}\n\nconst context = createContext<ListboxContext>({\n inputRef: { current: null },\n currentValue: null,\n selectedIconAfter: false,\n disableSelectedIcon: false,\n});\n\n/**\n * **Client Component**\n *\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport const { Provider: ListboxProvider } = context;\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function useListboxContext(): ListboxContext {\n return useContext(context);\n}\n"],"names":["createContext","useContext","context","inputRef","current","currentValue","selectedIconAfter","disableSelectedIcon","Provider","ListboxProvider","useListboxContext"],"mappings":"AAAA;AACA,SAASA,aAAa,EAAEC,UAAU,QAAwB,QAAQ;AAsBlE,MAAMC,UAAUF,cAA8B;IAC5CG,UAAU;QAAEC,SAAS;IAAK;IAC1BC,cAAc;IACdC,mBAAmB;IACnBC,qBAAqB;AACvB;AAEA;;;;;CAKC,GACD,OAAO,MAAM,EAAEC,UAAUC,eAAe,EAAE,GAAGP,QAAQ;AAErD;;;CAGC,GACD,OAAO,SAASQ;IACd,OAAOT,WAAWC;AACpB"}
@@ -0,0 +1,17 @@
1
+ import { type BaseComboboxOptions, type ComboboxImplementation } from "./useCombobox.js";
2
+ /**
3
+ * @remarks \@since 6.0.0
4
+ */
5
+ export interface SelectComboboxOptions<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends BaseComboboxOptions<ComboboxEl, PopupEl> {
6
+ value: string;
7
+ values: readonly string[];
8
+ }
9
+ /**
10
+ * @remarks \@since 6.0.0
11
+ */
12
+ export interface SelectComboboxImplementation<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement> extends ComboboxImplementation<ComboboxEl, PopupEl> {
13
+ }
14
+ /**
15
+ * @remarks \@since 6.0.0
16
+ */
17
+ export declare function useSelectCombobox<ComboboxEl extends HTMLElement = HTMLInputElement, PopupEl extends HTMLElement = HTMLElement>(options: SelectComboboxOptions<ComboboxEl, PopupEl>): SelectComboboxImplementation<ComboboxEl, PopupEl>;