@react-md/core 1.0.0-next.8 → 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 (667) hide show
  1. package/.stylelintrc.json +14 -0
  2. package/.turbo/turbo-build.log +5 -5
  3. package/.turbo/turbo-lint.log +13 -0
  4. package/CHANGELOG.md +9 -0
  5. package/README.md +39 -24
  6. package/coverage/clover.xml +1013 -404
  7. package/coverage/coverage-final.json +9 -2
  8. package/coverage/lcov-report/AutoComplete.tsx.html +283 -0
  9. package/coverage/lcov-report/RootHtml.tsx.html +370 -0
  10. package/coverage/lcov-report/Select.tsx.html +1411 -0
  11. package/coverage/lcov-report/autocomplete/AutoComplete.tsx.html +283 -0
  12. package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +283 -0
  13. package/coverage/lcov-report/autocomplete/index.html +161 -0
  14. package/coverage/lcov-report/autocomplete/useAutoComplete.ts.html +775 -0
  15. package/coverage/lcov-report/autocomplete/useAutocomplete.ts.html +775 -0
  16. package/coverage/lcov-report/autocomplete/useInlineAutoComplete.ts.html +340 -0
  17. package/coverage/lcov-report/autocomplete/useInlineAutocomplete.ts.html +346 -0
  18. package/coverage/lcov-report/autocomplete/utils.ts.html +106 -0
  19. package/coverage/lcov-report/avatar/Avatar.tsx.html +162 -99
  20. package/coverage/lcov-report/avatar/index.html +19 -34
  21. package/coverage/lcov-report/avatar/styles.ts.html +1 -1
  22. package/coverage/lcov-report/button/Button.tsx.html +85 -85
  23. package/coverage/lcov-report/button/index.html +12 -12
  24. package/coverage/lcov-report/dialog/DialogFooter.tsx.html +36 -36
  25. package/coverage/lcov-report/dialog/DialogHeader.tsx.html +26 -26
  26. package/coverage/lcov-report/dialog/index.html +34 -19
  27. package/coverage/lcov-report/form/AutoComplete.tsx.html +283 -0
  28. package/coverage/lcov-report/form/Form.tsx.html +22 -22
  29. package/coverage/lcov-report/form/OptGroup.tsx.html +169 -166
  30. package/coverage/lcov-report/form/Option.tsx.html +727 -0
  31. package/coverage/lcov-report/form/Select.tsx.html +962 -1112
  32. package/coverage/lcov-report/form/SelectOriginal.tsx.html +1630 -0
  33. package/coverage/lcov-report/form/SelectV2.tsx.html +1024 -0
  34. package/coverage/lcov-report/form/SelectedOption.tsx.html +250 -0
  35. package/coverage/lcov-report/form/index.html +57 -12
  36. package/coverage/lcov-report/form/selectUtils.ts.html +188 -221
  37. package/coverage/lcov-report/form/useAutoComplete.ts.html +787 -0
  38. package/coverage/lcov-report/form/useCombobox.ts.html +454 -460
  39. package/coverage/lcov-report/form/useComboboxList.ts.html +108 -93
  40. package/coverage/lcov-report/form/useFormReset.ts.html +229 -0
  41. package/coverage/lcov-report/form/useInlineAutoComplete.ts.html +379 -0
  42. package/coverage/lcov-report/form/useSelectCombobox.ts.html +499 -0
  43. package/coverage/lcov-report/form/utils.ts.html +209 -170
  44. package/coverage/lcov-report/icon/FontIcon.tsx.html +28 -28
  45. package/coverage/lcov-report/icon/MaterialIcon.tsx.html +235 -0
  46. package/coverage/lcov-report/icon/index.html +1 -1
  47. package/coverage/lcov-report/index.html +36 -21
  48. package/coverage/lcov-report/media-queries/appSize.ts.html +1 -1
  49. package/coverage/lcov-report/media-queries/index.html +1 -1
  50. package/coverage/lcov-report/menu/DropdownMenu.tsx.html +188 -188
  51. package/coverage/lcov-report/menu/Menu.tsx.html +271 -265
  52. package/coverage/lcov-report/menu/MenuItem.tsx.html +292 -0
  53. package/coverage/lcov-report/menu/MenuVisibilityProvider.tsx.html +48 -33
  54. package/coverage/lcov-report/menu/index.html +45 -15
  55. package/coverage/lcov-report/menu/useContextMenu.ts.html +490 -0
  56. package/coverage/lcov-report/movement/index.html +19 -19
  57. package/coverage/lcov-report/movement/useKeyboardMovementProvider.ts.html +422 -383
  58. package/coverage/lcov-report/positioning/constants.ts.html +463 -0
  59. package/coverage/lcov-report/positioning/index.html +30 -30
  60. package/coverage/lcov-report/positioning/useFixedPositioning.ts.html +1321 -0
  61. package/coverage/lcov-report/progress/CircularProgress.tsx.html +184 -184
  62. package/coverage/lcov-report/progress/index.html +19 -34
  63. package/coverage/lcov-report/searching/caseInsensitive.ts.html +685 -0
  64. package/coverage/lcov-report/searching/fuzzy.ts.html +610 -0
  65. package/coverage/lcov-report/searching/index.html +161 -0
  66. package/coverage/lcov-report/searching/toSearchQuery.ts.html +139 -0
  67. package/coverage/lcov-report/searching/utils.ts.html +247 -0
  68. package/coverage/lcov-report/src/CoreProviders.tsx.html +20 -20
  69. package/coverage/lcov-report/src/NoSsr.tsx.html +1 -1
  70. package/coverage/lcov-report/src/RootHtml.tsx.html +370 -0
  71. package/coverage/lcov-report/src/SsrProvider.tsx.html +10 -10
  72. package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +1 -1
  73. package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +1 -1
  74. package/coverage/lcov-report/src/app-bar/index.html +1 -1
  75. package/coverage/lcov-report/src/avatar/Avatar.tsx.html +1 -1
  76. package/coverage/lcov-report/src/avatar/index.html +1 -1
  77. package/coverage/lcov-report/src/avatar/styles.ts.html +1 -1
  78. package/coverage/lcov-report/src/badge/Badge.tsx.html +1 -1
  79. package/coverage/lcov-report/src/badge/index.html +1 -1
  80. package/coverage/lcov-report/src/box/Box.tsx.html +1 -1
  81. package/coverage/lcov-report/src/box/index.html +1 -1
  82. package/coverage/lcov-report/src/box/styles.ts.html +1 -1
  83. package/coverage/lcov-report/src/button/AsyncButton.tsx.html +1 -1
  84. package/coverage/lcov-report/src/button/Button.tsx.html +1 -1
  85. package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +1 -1
  86. package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +1 -1
  87. package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +1 -1
  88. package/coverage/lcov-report/src/button/buttonStyles.ts.html +1 -1
  89. package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +1 -1
  90. package/coverage/lcov-report/src/button/index.html +1 -1
  91. package/coverage/lcov-report/src/card/Card.tsx.html +1 -1
  92. package/coverage/lcov-report/src/card/CardContent.tsx.html +1 -1
  93. package/coverage/lcov-report/src/card/CardFooter.tsx.html +1 -1
  94. package/coverage/lcov-report/src/card/CardHeader.tsx.html +1 -1
  95. package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +1 -1
  96. package/coverage/lcov-report/src/card/CardTitle.tsx.html +1 -1
  97. package/coverage/lcov-report/src/card/ClickableCard.tsx.html +1 -1
  98. package/coverage/lcov-report/src/card/index.html +1 -1
  99. package/coverage/lcov-report/src/card/styles.ts.html +1 -1
  100. package/coverage/lcov-report/src/chip/Chip.tsx.html +1 -1
  101. package/coverage/lcov-report/src/chip/index.html +1 -1
  102. package/coverage/lcov-report/src/chip/styles.ts.html +1 -1
  103. package/coverage/lcov-report/src/cssUtils.ts.html +53 -53
  104. package/coverage/lcov-report/src/delegateEvent.ts.html +1 -1
  105. package/coverage/lcov-report/src/dialog/Dialog.tsx.html +1 -1
  106. package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +1 -1
  107. package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +1 -1
  108. package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +1 -1
  109. package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +1 -1
  110. package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +1 -1
  111. package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +1 -1
  112. package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +1 -1
  113. package/coverage/lcov-report/src/dialog/index.html +1 -1
  114. package/coverage/lcov-report/src/dialog/styles.ts.html +1 -1
  115. package/coverage/lcov-report/src/divider/Divider.tsx.html +1 -1
  116. package/coverage/lcov-report/src/divider/index.html +1 -1
  117. package/coverage/lcov-report/src/divider/styles.ts.html +1 -1
  118. package/coverage/lcov-report/src/draggable/index.html +1 -1
  119. package/coverage/lcov-report/src/draggable/useDraggable.ts.html +1 -1
  120. package/coverage/lcov-report/src/draggable/utils.ts.html +1 -1
  121. package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +1 -1
  122. package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +1 -1
  123. package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +1 -1
  124. package/coverage/lcov-report/src/expansion-panel/index.html +1 -1
  125. package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +1 -1
  126. package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +1 -1
  127. package/coverage/lcov-report/src/focus/index.html +1 -1
  128. package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +1 -1
  129. package/coverage/lcov-report/src/focus/utils.ts.html +1 -1
  130. package/coverage/lcov-report/src/form/AutoComplete.tsx.html +283 -0
  131. package/coverage/lcov-report/src/form/Checkbox.tsx.html +1 -1
  132. package/coverage/lcov-report/src/form/Fieldset.tsx.html +1 -1
  133. package/coverage/lcov-report/src/form/FileInput.tsx.html +1 -1
  134. package/coverage/lcov-report/src/form/Form.tsx.html +11 -8
  135. package/coverage/lcov-report/src/form/FormMessage.tsx.html +1 -1
  136. package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +1 -1
  137. package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +1 -1
  138. package/coverage/lcov-report/src/form/InputToggle.tsx.html +1 -1
  139. package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +56 -56
  140. package/coverage/lcov-report/src/form/Label.tsx.html +1 -1
  141. package/coverage/lcov-report/src/form/Legend.tsx.html +1 -1
  142. package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +3 -3
  143. package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +1 -1
  144. package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +178 -232
  145. package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +3 -3
  146. package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +1 -1
  147. package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +1 -1
  148. package/coverage/lcov-report/src/form/NativeSelect.tsx.html +1 -1
  149. package/coverage/lcov-report/src/form/OptGroup.tsx.html +1 -1
  150. package/coverage/lcov-report/src/form/Option.tsx.html +1 -1
  151. package/coverage/lcov-report/src/form/Password.tsx.html +1 -1
  152. package/coverage/lcov-report/src/form/Radio.tsx.html +1 -1
  153. package/coverage/lcov-report/src/form/Select.tsx.html +894 -1146
  154. package/coverage/lcov-report/src/form/SelectValue.tsx.html +1 -1
  155. package/coverage/lcov-report/src/form/Slider.tsx.html +1 -1
  156. package/coverage/lcov-report/src/form/SliderContainer.tsx.html +1 -1
  157. package/coverage/lcov-report/src/form/SliderMark.tsx.html +1 -1
  158. package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +1 -1
  159. package/coverage/lcov-report/src/form/SliderThumb.tsx.html +1 -1
  160. package/coverage/lcov-report/src/form/SliderTrack.tsx.html +1 -1
  161. package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +1 -1
  162. package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +1 -1
  163. package/coverage/lcov-report/src/form/Switch.tsx.html +1 -1
  164. package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +1 -1
  165. package/coverage/lcov-report/src/form/TextArea.tsx.html +1 -1
  166. package/coverage/lcov-report/src/form/TextField.tsx.html +1 -1
  167. package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +1 -1
  168. package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +1 -1
  169. package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +1 -1
  170. package/coverage/lcov-report/src/form/fileUtils.ts.html +1 -1
  171. package/coverage/lcov-report/src/form/formConfig.ts.html +1 -1
  172. package/coverage/lcov-report/src/form/formMessageStyles.ts.html +1 -1
  173. package/coverage/lcov-report/src/form/index.html +30 -900
  174. package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +30 -30
  175. package/coverage/lcov-report/src/form/menuItemInputToggleStyles.ts.html +319 -0
  176. package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +1 -1
  177. package/coverage/lcov-report/src/form/optionStyles.ts.html +1 -1
  178. package/coverage/lcov-report/src/form/passwordStyles.ts.html +1 -1
  179. package/coverage/lcov-report/src/form/selectStyles.ts.html +1 -1
  180. package/coverage/lcov-report/src/form/selectUtils.ts.html +1 -1
  181. package/coverage/lcov-report/src/form/sliderUtils.ts.html +1 -1
  182. package/coverage/lcov-report/src/form/switchStyles.ts.html +1 -1
  183. package/coverage/lcov-report/src/form/textAreaStyles.ts.html +1 -1
  184. package/coverage/lcov-report/src/form/textFieldStyles.ts.html +1 -1
  185. package/coverage/lcov-report/src/form/useAutoComplete.ts.html +787 -0
  186. package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +1 -1
  187. package/coverage/lcov-report/src/form/useCombobox.ts.html +943 -457
  188. package/coverage/lcov-report/src/form/useEditableCombobox.ts.html +502 -0
  189. package/coverage/lcov-report/src/form/useFileUpload.ts.html +1 -1
  190. package/coverage/lcov-report/src/form/useInlineAutoComplete.ts.html +109 -0
  191. package/coverage/lcov-report/src/form/useListboxProvider.ts.html +1 -1
  192. package/coverage/lcov-report/src/form/useNumberField.ts.html +1 -1
  193. package/coverage/lcov-report/src/form/useRadioGroup.ts.html +1 -1
  194. package/coverage/lcov-report/src/form/useRangeSlider.ts.html +1 -1
  195. package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +1 -1
  196. package/coverage/lcov-report/src/form/useSelectCombobox.ts.html +295 -0
  197. package/coverage/lcov-report/src/form/useSlider.ts.html +1 -1
  198. package/coverage/lcov-report/src/form/useTextField.ts.html +1 -1
  199. package/coverage/lcov-report/src/form/utils.ts.html +200 -170
  200. package/coverage/lcov-report/src/form/validation.ts.html +1 -1
  201. package/coverage/lcov-report/src/hoverMode/index.html +1 -1
  202. package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +1 -1
  203. package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +1 -1
  204. package/coverage/lcov-report/src/icon/FontIcon.tsx.html +28 -28
  205. package/coverage/lcov-report/src/icon/IconRotator.tsx.html +1 -1
  206. package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +1 -1
  207. package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +1 -1
  208. package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +1 -1
  209. package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +51 -51
  210. package/coverage/lcov-report/src/icon/iconConfig.tsx.html +10 -10
  211. package/coverage/lcov-report/src/icon/index.html +1 -1
  212. package/coverage/lcov-report/src/icon/material.ts.html +1 -1
  213. package/coverage/lcov-report/src/icon/materialConfig.ts.html +1 -1
  214. package/coverage/lcov-report/src/icon/styles.ts.html +38 -38
  215. package/coverage/lcov-report/src/index.html +9 -354
  216. package/coverage/lcov-report/src/interaction/Ripple.tsx.html +1 -1
  217. package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +1 -1
  218. package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +87 -87
  219. package/coverage/lcov-report/src/interaction/config.ts.html +7 -7
  220. package/coverage/lcov-report/src/interaction/index.html +1 -1
  221. package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +83 -83
  222. package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +7 -7
  223. package/coverage/lcov-report/src/interaction/utils.ts.html +1 -1
  224. package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +1 -1
  225. package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +1 -1
  226. package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +1 -1
  227. package/coverage/lcov-report/src/layout/Main.tsx.html +1 -1
  228. package/coverage/lcov-report/src/layout/index.html +1 -1
  229. package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +1 -1
  230. package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +1 -1
  231. package/coverage/lcov-report/src/layout/mainStyles.ts.html +1 -1
  232. package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +1 -1
  233. package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +1 -1
  234. package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +1 -1
  235. package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +1 -1
  236. package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +1 -1
  237. package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +1 -1
  238. package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +1 -1
  239. package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +1 -1
  240. package/coverage/lcov-report/src/link/Link.tsx.html +1 -1
  241. package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +1 -1
  242. package/coverage/lcov-report/src/link/index.html +1 -1
  243. package/coverage/lcov-report/src/link/styles.ts.html +1 -1
  244. package/coverage/lcov-report/src/list/List.tsx.html +30 -30
  245. package/coverage/lcov-report/src/list/ListItem.tsx.html +124 -124
  246. package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +35 -35
  247. package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +79 -79
  248. package/coverage/lcov-report/src/list/ListItemLink.tsx.html +2 -2
  249. package/coverage/lcov-report/src/list/ListItemText.tsx.html +35 -35
  250. package/coverage/lcov-report/src/list/ListSubheader.tsx.html +1 -1
  251. package/coverage/lcov-report/src/list/getListItemHeight.ts.html +44 -47
  252. package/coverage/lcov-report/src/list/index.html +5 -5
  253. package/coverage/lcov-report/src/list/listItemStyles.ts.html +65 -65
  254. package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +49 -49
  255. package/coverage/lcov-report/src/media-queries/appSize.ts.html +1 -1
  256. package/coverage/lcov-report/src/media-queries/index.html +1 -1
  257. package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +24 -24
  258. package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +1 -1
  259. package/coverage/lcov-report/src/menu/Menu.tsx.html +3 -3
  260. package/coverage/lcov-report/src/menu/MenuBar.tsx.html +1 -1
  261. package/coverage/lcov-report/src/menu/MenuButton.tsx.html +1 -1
  262. package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +1 -1
  263. package/coverage/lcov-report/src/menu/MenuItem.tsx.html +1 -1
  264. package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +1 -1
  265. package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +1 -1
  266. package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +1 -1
  267. package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +1 -1
  268. package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +1 -1
  269. package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +1 -1
  270. package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +1 -1
  271. package/coverage/lcov-report/src/menu/index.html +1 -1
  272. package/coverage/lcov-report/src/menu/useContextMenu.ts.html +1 -1
  273. package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +1 -1
  274. package/coverage/lcov-report/src/menu/utils.ts.html +1 -1
  275. package/coverage/lcov-report/src/movement/constants.ts.html +1 -1
  276. package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +1 -1
  277. package/coverage/lcov-report/src/movement/index.html +17 -62
  278. package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +1 -1
  279. package/coverage/lcov-report/src/movement/utils.ts.html +143 -119
  280. package/coverage/lcov-report/src/overlay/Overlay.tsx.html +1 -1
  281. package/coverage/lcov-report/src/overlay/index.html +1 -1
  282. package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +1 -1
  283. package/coverage/lcov-report/src/portal/Portal.tsx.html +1 -1
  284. package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +36 -36
  285. package/coverage/lcov-report/src/portal/index.html +1 -1
  286. package/coverage/lcov-report/src/positioning/constants.ts.html +1 -1
  287. package/coverage/lcov-report/src/positioning/createHorizontalPosition.ts.html +1 -1
  288. package/coverage/lcov-report/src/positioning/createVerticalPosition.ts.html +1 -1
  289. package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +1 -1
  290. package/coverage/lcov-report/src/positioning/index.html +1 -1
  291. package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +1 -1
  292. package/coverage/lcov-report/src/positioning/utils.ts.html +1 -1
  293. package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +81 -81
  294. package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +1 -1
  295. package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +1 -1
  296. package/coverage/lcov-report/src/progress/index.html +1 -1
  297. package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +1 -1
  298. package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +1 -1
  299. package/coverage/lcov-report/src/responsive-item/index.html +1 -1
  300. package/coverage/lcov-report/src/responsive-item/styles.ts.html +1 -1
  301. package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +1 -1
  302. package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +1 -1
  303. package/coverage/lcov-report/src/scroll/index.html +1 -1
  304. package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +1 -1
  305. package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +1 -1
  306. package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +1 -1
  307. package/coverage/lcov-report/src/segmented-button/index.html +1 -1
  308. package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +1 -1
  309. package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +1 -1
  310. package/coverage/lcov-report/src/sheet/Sheet.tsx.html +1 -1
  311. package/coverage/lcov-report/src/sheet/index.html +1 -1
  312. package/coverage/lcov-report/src/sheet/styles.ts.html +1 -1
  313. package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +1 -1
  314. package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +1 -1
  315. package/coverage/lcov-report/src/snackbar/Toast.tsx.html +1 -1
  316. package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +1 -1
  317. package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +1 -1
  318. package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +1 -1
  319. package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +1 -1
  320. package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +1 -1
  321. package/coverage/lcov-report/src/snackbar/index.html +1 -1
  322. package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +1 -1
  323. package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +1 -1
  324. package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +1 -1
  325. package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +1 -1
  326. package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +142 -142
  327. package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +88 -88
  328. package/coverage/lcov-report/src/suspense/index.html +32 -32
  329. package/coverage/lcov-report/src/table/Table.tsx.html +1 -1
  330. package/coverage/lcov-report/src/table/TableBody.tsx.html +1 -1
  331. package/coverage/lcov-report/src/table/TableCell.tsx.html +1 -1
  332. package/coverage/lcov-report/src/table/TableCellContent.tsx.html +1 -1
  333. package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +1 -1
  334. package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +1 -1
  335. package/coverage/lcov-report/src/table/TableContainer.tsx.html +1 -1
  336. package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +1 -1
  337. package/coverage/lcov-report/src/table/TableFooter.tsx.html +1 -1
  338. package/coverage/lcov-report/src/table/TableHeader.tsx.html +1 -1
  339. package/coverage/lcov-report/src/table/TableRadio.tsx.html +1 -1
  340. package/coverage/lcov-report/src/table/TableRow.tsx.html +1 -1
  341. package/coverage/lcov-report/src/table/index.html +1 -1
  342. package/coverage/lcov-report/src/table/tableCellStyles.ts.html +1 -1
  343. package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +1 -1
  344. package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +1 -1
  345. package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +1 -1
  346. package/coverage/lcov-report/src/table/tableRowStyles.ts.html +1 -1
  347. package/coverage/lcov-report/src/table/tableStyles.ts.html +1 -1
  348. package/coverage/lcov-report/src/tabs/Tab.tsx.html +1 -1
  349. package/coverage/lcov-report/src/tabs/TabList.tsx.html +1 -1
  350. package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +1 -1
  351. package/coverage/lcov-report/src/tabs/index.html +1 -1
  352. package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +1 -1
  353. package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +1 -1
  354. package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +1 -1
  355. package/coverage/lcov-report/src/tabs/tabStyles.ts.html +1 -1
  356. package/coverage/lcov-report/src/tabs/useTabList.ts.html +1 -1
  357. package/coverage/lcov-report/src/tabs/useTabs.ts.html +1 -1
  358. package/coverage/lcov-report/src/tabs/utils.ts.html +1 -1
  359. package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +1 -1
  360. package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +1 -1
  361. package/coverage/lcov-report/src/test-utils/data-testid.ts.html +18 -6
  362. package/coverage/lcov-report/src/test-utils/drag.ts.html +1 -1
  363. package/coverage/lcov-report/src/test-utils/index.html +7 -7
  364. package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +9 -9
  365. package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +4 -4
  366. package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +4 -4
  367. package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +3 -3
  368. package/coverage/lcov-report/src/test-utils/polyfills/TextDecoder.ts.html +106 -0
  369. package/coverage/lcov-report/src/test-utils/polyfills/TextEncoder.ts.html +100 -0
  370. package/coverage/lcov-report/src/test-utils/polyfills/index.html +1 -1
  371. package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +6 -6
  372. package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +14 -14
  373. package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +5 -5
  374. package/coverage/lcov-report/src/test-utils/render.tsx.html +21 -21
  375. package/coverage/lcov-report/src/test-utils/root-html-environment.ts.html +85 -0
  376. package/coverage/lcov-report/src/test-utils/timers.ts.html +1 -1
  377. package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +1 -1
  378. package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +1 -1
  379. package/coverage/lcov-report/src/theme/colors.ts.html +1 -1
  380. package/coverage/lcov-report/src/theme/cssVars.ts.html +1 -1
  381. package/coverage/lcov-report/src/theme/index.html +1 -1
  382. package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +1 -1
  383. package/coverage/lcov-report/src/theme/useColorScheme.ts.html +1 -1
  384. package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +1 -1
  385. package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +1 -1
  386. package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +1 -1
  387. package/coverage/lcov-report/src/theme/utils.ts.html +1 -1
  388. package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +1 -1
  389. package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +1 -1
  390. package/coverage/lcov-report/src/tooltip/constants.ts.html +1 -1
  391. package/coverage/lcov-report/src/tooltip/index.html +1 -1
  392. package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +1 -1
  393. package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +1 -1
  394. package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +1 -1
  395. package/coverage/lcov-report/src/tooltip/utils.ts.html +1 -1
  396. package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +1 -1
  397. package/coverage/lcov-report/src/transition/Collapse.tsx.html +1 -1
  398. package/coverage/lcov-report/src/transition/CrossFade.tsx.html +1 -1
  399. package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +1 -1
  400. package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +1 -1
  401. package/coverage/lcov-report/src/transition/Slide.tsx.html +1 -1
  402. package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +1 -1
  403. package/coverage/lcov-report/src/transition/collapseStyles.ts.html +13 -13
  404. package/coverage/lcov-report/src/transition/config.ts.html +3 -3
  405. package/coverage/lcov-report/src/transition/index.html +7 -7
  406. package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +1 -1
  407. package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +1 -1
  408. package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +1 -1
  409. package/coverage/lcov-report/src/transition/useCarousel.ts.html +1 -1
  410. package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +96 -150
  411. package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +1 -1
  412. package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +1 -1
  413. package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +1 -1
  414. package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +1 -1
  415. package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +1 -1
  416. package/coverage/lcov-report/src/transition/useTransition.ts.html +152 -152
  417. package/coverage/lcov-report/src/transition/utils.ts.html +14 -14
  418. package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +1 -1
  419. package/coverage/lcov-report/src/tree/Tree.tsx.html +1 -1
  420. package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +45 -45
  421. package/coverage/lcov-report/src/tree/TreeItem.tsx.html +1 -1
  422. package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +1 -1
  423. package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +8 -8
  424. package/coverage/lcov-report/src/tree/index.html +1 -1
  425. package/coverage/lcov-report/src/tree/styles.ts.html +5 -5
  426. package/coverage/lcov-report/src/tree/useTree.ts.html +1 -1
  427. package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +1 -1
  428. package/coverage/lcov-report/src/tree/useTreeItems.ts.html +1 -1
  429. package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +1 -1
  430. package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +1 -1
  431. package/coverage/lcov-report/src/tree/utils.ts.html +1 -1
  432. package/coverage/lcov-report/src/typography/SrOnly.tsx.html +12 -12
  433. package/coverage/lcov-report/src/typography/TextContainer.tsx.html +1 -1
  434. package/coverage/lcov-report/src/typography/Typography.tsx.html +94 -94
  435. package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +1 -1
  436. package/coverage/lcov-report/src/typography/index.html +1 -1
  437. package/coverage/lcov-report/src/useAsyncAction.ts.html +1 -1
  438. package/coverage/lcov-report/src/useDebouncedFunction.ts.html +1 -1
  439. package/coverage/lcov-report/src/useDropzone.ts.html +1 -1
  440. package/coverage/lcov-report/src/useElementSize.ts.html +1 -1
  441. package/coverage/lcov-report/src/useEnsuredId.ts.html +8 -8
  442. package/coverage/lcov-report/src/useEnsuredRef.ts.html +11 -11
  443. package/coverage/lcov-report/src/useEnsuredState.ts.html +16 -16
  444. package/coverage/lcov-report/src/useHtmlClassName.ts.html +1 -1
  445. package/coverage/lcov-report/src/useIntersectionObserver.ts.html +1 -1
  446. package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +1 -1
  447. package/coverage/lcov-report/src/useLocalStorage.ts.html +1 -1
  448. package/coverage/lcov-report/src/useOrientation.ts.html +32 -32
  449. package/coverage/lcov-report/src/usePageInactive.ts.html +1 -1
  450. package/coverage/lcov-report/src/useResizeListener.ts.html +1 -1
  451. package/coverage/lcov-report/src/useResizeObserver.ts.html +23 -23
  452. package/coverage/lcov-report/src/useThrottledFunction.ts.html +1 -1
  453. package/coverage/lcov-report/src/useToggle.ts.html +1 -1
  454. package/coverage/lcov-report/src/useUnmounted.ts.html +1 -1
  455. package/coverage/lcov-report/src/useWindowSize.ts.html +1 -1
  456. package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +1 -1
  457. package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +1 -1
  458. package/coverage/lcov-report/src/utils/applyRef.ts.html +1 -1
  459. package/coverage/lcov-report/src/utils/bem.ts.html +50 -50
  460. package/coverage/lcov-report/src/utils/filters.ts.html +357 -84
  461. package/coverage/lcov-report/src/utils/getClientPosition.ts.html +1 -1
  462. package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +1 -1
  463. package/coverage/lcov-report/src/utils/getPercentage.ts.html +1 -1
  464. package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +1 -1
  465. package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +1 -1
  466. package/coverage/lcov-report/src/utils/identity.ts.html +1 -1
  467. package/coverage/lcov-report/src/utils/index.html +13 -268
  468. package/coverage/lcov-report/src/utils/isElementVisible.ts.html +1 -1
  469. package/coverage/lcov-report/src/utils/loop.ts.html +1 -1
  470. package/coverage/lcov-report/src/utils/nearest.ts.html +1 -1
  471. package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +1 -1
  472. package/coverage/lcov-report/src/utils/randomInt.ts.html +1 -1
  473. package/coverage/lcov-report/src/utils/wait.ts.html +1 -1
  474. package/coverage/lcov-report/src/utils/withinRange.ts.html +1 -1
  475. package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +1 -1
  476. package/coverage/lcov-report/src/window-splitter/index.html +1 -1
  477. package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +1 -1
  478. package/coverage/lcov-report/transition/config.ts.html +5 -5
  479. package/coverage/lcov-report/transition/index.html +1 -1
  480. package/coverage/lcov-report/transition/useScaleTransition.ts.html +535 -0
  481. package/coverage/lcov-report/useAutoComplete.ts.html +787 -0
  482. package/coverage/lcov-report/useCollapseTransition.ts.html +166 -211
  483. package/coverage/lcov-report/useCombobox.ts.html +1513 -0
  484. package/coverage/lcov-report/useInlineAutoComplete.ts.html +379 -0
  485. package/coverage/lcov-report/useSelectCombobox.ts.html +295 -0
  486. package/coverage/lcov-report/utils/alphaNumericSort.ts.html +11 -50
  487. package/coverage/lcov-report/utils/filters.ts.html +1056 -201
  488. package/coverage/lcov-report/utils/index.html +10 -10
  489. package/coverage/lcov-report/utils/searching.ts.html +85 -0
  490. package/coverage/lcov-report/utils.ts.html +109 -277
  491. package/coverage/lcov.info +928 -259
  492. package/dist/RootHtml.d.ts +62 -0
  493. package/dist/RootHtml.js +49 -0
  494. package/dist/RootHtml.js.map +1 -0
  495. package/dist/avatar/Avatar.d.ts +14 -0
  496. package/dist/avatar/Avatar.js +5 -2
  497. package/dist/avatar/Avatar.js.map +1 -1
  498. package/dist/dialog/FixedDialog.d.ts +5 -4
  499. package/dist/dialog/FixedDialog.js +5 -4
  500. package/dist/dialog/FixedDialog.js.map +1 -1
  501. package/dist/form/NativeSelect.d.ts +5 -2
  502. package/dist/form/NativeSelect.js.map +1 -1
  503. package/dist/form/Option.js +3 -2
  504. package/dist/form/Option.js.map +1 -1
  505. package/dist/form/Select.d.ts +105 -15
  506. package/dist/form/Select.js +160 -249
  507. package/dist/form/Select.js.map +1 -1
  508. package/dist/form/SelectedOption.d.ts +21 -0
  509. package/dist/form/SelectedOption.js +37 -0
  510. package/dist/form/SelectedOption.js.map +1 -0
  511. package/dist/form/TextField.d.ts +2 -2
  512. package/dist/form/TextField.js.map +1 -1
  513. package/dist/form/_form.scss +8 -13
  514. package/dist/form/selectUtils.d.ts +1 -3
  515. package/dist/form/selectUtils.js +2 -10
  516. package/dist/form/selectUtils.js.map +1 -1
  517. package/dist/form/types.d.ts +6 -6
  518. package/dist/form/types.js.map +1 -1
  519. package/dist/form/useCombobox.d.ts +157 -0
  520. package/dist/form/useCombobox.js +206 -0
  521. package/dist/form/useCombobox.js.map +1 -0
  522. package/dist/form/useEditableCombobox.d.ts +15 -0
  523. package/dist/form/useEditableCombobox.js +101 -0
  524. package/dist/form/useEditableCombobox.js.map +1 -0
  525. package/dist/form/useFormReset.d.ts +16 -0
  526. package/dist/form/useFormReset.js +32 -0
  527. package/dist/form/useFormReset.js.map +1 -0
  528. package/dist/form/useListboxProvider.d.ts +1 -0
  529. package/dist/form/useListboxProvider.js +1 -0
  530. package/dist/form/useListboxProvider.js.map +1 -1
  531. package/dist/form/useSelectCombobox.d.ts +17 -0
  532. package/dist/form/useSelectCombobox.js +36 -0
  533. package/dist/form/useSelectCombobox.js.map +1 -0
  534. package/dist/form/utils.d.ts +11 -1
  535. package/dist/form/utils.js +6 -0
  536. package/dist/form/utils.js.map +1 -1
  537. package/dist/index.d.ts +14 -1
  538. package/dist/index.js +14 -1
  539. package/dist/index.js.map +1 -1
  540. package/dist/menu/Menu.js +12 -1
  541. package/dist/menu/Menu.js.map +1 -1
  542. package/dist/menu/useContextMenu.d.ts +3 -3
  543. package/dist/menu/useContextMenu.js +3 -3
  544. package/dist/menu/useContextMenu.js.map +1 -1
  545. package/dist/movement/types.d.ts +40 -21
  546. package/dist/movement/types.js.map +1 -1
  547. package/dist/movement/useKeyboardMovementProvider.js +15 -4
  548. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  549. package/dist/movement/utils.d.ts +7 -2
  550. package/dist/movement/utils.js +10 -0
  551. package/dist/movement/utils.js.map +1 -1
  552. package/dist/positioning/useFixedPositioning.js +0 -8
  553. package/dist/positioning/useFixedPositioning.js.map +1 -1
  554. package/dist/searching/caseInsensitive.d.ts +150 -0
  555. package/dist/searching/caseInsensitive.js +30 -0
  556. package/dist/searching/caseInsensitive.js.map +1 -0
  557. package/dist/searching/fuzzy.d.ts +128 -0
  558. package/dist/searching/fuzzy.js +54 -0
  559. package/dist/searching/fuzzy.js.map +1 -0
  560. package/dist/searching/toSearchQuery.d.ts +5 -0
  561. package/dist/searching/toSearchQuery.js +13 -0
  562. package/dist/searching/toSearchQuery.js.map +1 -0
  563. package/dist/searching/types.d.ts +28 -0
  564. package/dist/searching/types.js +5 -0
  565. package/dist/searching/types.js.map +1 -0
  566. package/dist/searching/utils.d.ts +21 -0
  567. package/dist/searching/utils.js +28 -0
  568. package/dist/searching/utils.js.map +1 -0
  569. package/dist/test-utils/IntersectionObserver.d.ts +12 -0
  570. package/dist/test-utils/ResizeObserver.d.ts +172 -0
  571. package/dist/test-utils/data-testid.d.ts +7 -0
  572. package/dist/test-utils/data-testid.js +1 -0
  573. package/dist/test-utils/data-testid.js.map +1 -1
  574. package/dist/test-utils/drag.d.ts +26 -0
  575. package/dist/test-utils/index.d.ts +7 -0
  576. package/dist/test-utils/jest-setup.d.ts +1 -0
  577. package/dist/test-utils/matchMedia.d.ts +101 -0
  578. package/dist/test-utils/polyfills/IntersectionObserver.d.ts +1 -0
  579. package/dist/test-utils/polyfills/ResizeObserver.d.ts +1 -0
  580. package/dist/test-utils/polyfills/TextDecoder.d.ts +1 -0
  581. package/dist/test-utils/polyfills/TextDecoder.js +8 -0
  582. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -0
  583. package/dist/test-utils/polyfills/TextEncoder.d.ts +1 -0
  584. package/dist/test-utils/polyfills/TextEncoder.js +6 -0
  585. package/dist/test-utils/polyfills/TextEncoder.js.map +1 -0
  586. package/dist/test-utils/polyfills/index.d.ts +7 -0
  587. package/dist/test-utils/polyfills/index.js +2 -0
  588. package/dist/test-utils/polyfills/index.js.map +1 -1
  589. package/dist/test-utils/polyfills/matchMedia.d.ts +1 -0
  590. package/dist/test-utils/polyfills/offsetParent.d.ts +1 -0
  591. package/dist/test-utils/polyfills/scrollIntoView.d.ts +1 -0
  592. package/dist/test-utils/render.d.ts +13 -0
  593. package/dist/test-utils/timers.d.ts +39 -0
  594. package/dist/transition/useCollapseTransition.d.ts +3 -18
  595. package/dist/transition/useCollapseTransition.js +1 -10
  596. package/dist/transition/useCollapseTransition.js.map +1 -1
  597. package/dist/transition/utils.js +7 -2
  598. package/dist/transition/utils.js.map +1 -1
  599. package/dist/useEnsuredState.d.ts +1 -1
  600. package/dist/useEnsuredState.js.map +1 -1
  601. package/dist/utils/alphaNumericSort.d.ts +1 -1
  602. package/dist/utils/alphaNumericSort.js +2 -10
  603. package/dist/utils/alphaNumericSort.js.map +1 -1
  604. package/jest.config.ts +4 -0
  605. package/package.json +14 -13
  606. package/src/RootHtml.tsx +95 -0
  607. package/src/__tests__/RootHtml.node.tsx +46 -0
  608. package/src/__tests__/__snapshots__/RootHtml.node.tsx.snap +19 -0
  609. package/src/avatar/Avatar.tsx +24 -3
  610. package/src/avatar/__tests__/Avatar.tsx +1 -1
  611. package/src/avatar/__tests__/__snapshots__/Avatar.tsx.snap +6 -6
  612. package/src/dialog/FixedDialog.tsx +5 -4
  613. package/src/form/NativeSelect.tsx +6 -3
  614. package/src/form/Option.tsx +8 -2
  615. package/src/form/Select.tsx +251 -335
  616. package/src/form/SelectedOption.tsx +55 -0
  617. package/src/form/TextField.tsx +2 -2
  618. package/src/form/__tests__/Select.tsx +439 -0
  619. package/src/form/__tests__/__snapshots__/Select.tsx.snap +492 -0
  620. package/src/form/__tests__/useFormReset.tsx +195 -0
  621. package/src/form/_form.scss +8 -13
  622. package/src/form/selectUtils.ts +3 -14
  623. package/src/form/types.ts +6 -6
  624. package/src/form/useCombobox.ts +523 -0
  625. package/src/form/useEditableCombobox.ts +139 -0
  626. package/src/form/useFormReset.ts +48 -0
  627. package/src/form/useListboxProvider.ts +2 -0
  628. package/src/form/useSelectCombobox.ts +70 -0
  629. package/src/form/utils.ts +17 -4
  630. package/src/index.ts +14 -1
  631. package/src/menu/Menu.tsx +9 -1
  632. package/src/menu/__tests__/__snapshots__/useContextMenu.tsx.snap +54 -0
  633. package/src/menu/__tests__/useContextMenu.tsx +41 -0
  634. package/src/menu/useContextMenu.ts +3 -3
  635. package/src/movement/types.ts +50 -25
  636. package/src/movement/useKeyboardMovementProvider.ts +21 -8
  637. package/src/movement/utils.ts +12 -2
  638. package/src/positioning/__tests__/__snapshots__/useFixedPositioning.tsx.snap +0 -32
  639. package/src/positioning/__tests__/useFixedPositioning.tsx +0 -14
  640. package/src/positioning/useFixedPositioning.ts +0 -6
  641. package/src/searching/__tests__/caseInsensitive.ts +165 -0
  642. package/src/searching/__tests__/fuzzy.ts +169 -0
  643. package/src/searching/__tests__/toSearchQuery.ts +21 -0
  644. package/src/searching/caseInsensitive.ts +200 -0
  645. package/src/searching/fuzzy.ts +175 -0
  646. package/src/searching/toSearchQuery.ts +18 -0
  647. package/src/searching/types.ts +34 -0
  648. package/src/searching/utils.ts +54 -0
  649. package/src/test-utils/data-testid.ts +5 -1
  650. package/src/test-utils/polyfills/TextDecoder.ts +7 -0
  651. package/src/test-utils/polyfills/TextEncoder.ts +5 -0
  652. package/src/test-utils/polyfills/index.ts +2 -0
  653. package/src/transition/__tests__/utils.ts +25 -0
  654. package/src/transition/useCollapseTransition.ts +6 -24
  655. package/src/transition/utils.ts +10 -5
  656. package/src/useEnsuredState.ts +1 -1
  657. package/src/utils/alphaNumericSort.ts +3 -16
  658. package/tsconfig.json +2 -2
  659. package/tsconfig.types.json +1 -1
  660. package/dist/form/SelectValue.d.ts +0 -17
  661. package/dist/form/SelectValue.js +0 -32
  662. package/dist/form/SelectValue.js.map +0 -1
  663. package/dist/utils/filters.d.ts +0 -196
  664. package/dist/utils/filters.js +0 -67
  665. package/dist/utils/filters.js.map +0 -1
  666. package/src/form/SelectValue.tsx +0 -39
  667. package/src/utils/filters.ts +0 -320
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">39.44% </span>
26
+ <span class="strong">100% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>127/322</span>
28
+ <span class='fraction'>320/320</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
33
+ <span class="strong">95.45% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/0</span>
35
+ <span class='fraction'>21/22</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">100% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/2</span>
42
+ <span class='fraction'>6/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">39.44% </span>
47
+ <span class="strong">100% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>127/322</span>
49
+ <span class='fraction'>320/320</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -383,9 +383,54 @@
383
383
  <a name='L318'></a><a href='#L318'>318</a>
384
384
  <a name='L319'></a><a href='#L319'>319</a>
385
385
  <a name='L320'></a><a href='#L320'>320</a>
386
- <a name='L321'></a><a href='#L321'>321</a>
387
- <a name='L322'></a><a href='#L322'>322</a>
388
- <a name='L323'></a><a href='#L323'>323</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
386
+ <a name='L321'></a><a href='#L321'>321</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
387
+ <span class="cline-any cline-yes">1x</span>
388
+ <span class="cline-any cline-yes">1x</span>
389
+ <span class="cline-any cline-yes">1x</span>
390
+ <span class="cline-any cline-yes">1x</span>
391
+ <span class="cline-any cline-yes">1x</span>
392
+ <span class="cline-any cline-yes">1x</span>
393
+ <span class="cline-any cline-yes">1x</span>
394
+ <span class="cline-any cline-yes">1x</span>
395
+ <span class="cline-any cline-yes">1x</span>
396
+ <span class="cline-any cline-yes">1x</span>
397
+ <span class="cline-any cline-yes">1x</span>
398
+ <span class="cline-any cline-yes">1x</span>
399
+ <span class="cline-any cline-yes">1x</span>
400
+ <span class="cline-any cline-yes">1x</span>
401
+ <span class="cline-any cline-yes">1x</span>
402
+ <span class="cline-any cline-yes">1x</span>
403
+ <span class="cline-any cline-yes">1x</span>
404
+ <span class="cline-any cline-yes">1x</span>
405
+ <span class="cline-any cline-yes">1x</span>
406
+ <span class="cline-any cline-yes">1x</span>
407
+ <span class="cline-any cline-yes">1x</span>
408
+ <span class="cline-any cline-yes">1x</span>
409
+ <span class="cline-any cline-yes">1x</span>
410
+ <span class="cline-any cline-yes">1x</span>
411
+ <span class="cline-any cline-yes">1x</span>
412
+ <span class="cline-any cline-yes">1x</span>
413
+ <span class="cline-any cline-yes">1x</span>
414
+ <span class="cline-any cline-yes">1x</span>
415
+ <span class="cline-any cline-yes">13x</span>
416
+ <span class="cline-any cline-yes">13x</span>
417
+ <span class="cline-any cline-yes">1x</span>
418
+ <span class="cline-any cline-yes">1x</span>
419
+ <span class="cline-any cline-yes">1x</span>
420
+ <span class="cline-any cline-yes">1x</span>
421
+ <span class="cline-any cline-yes">1x</span>
422
+ <span class="cline-any cline-yes">28x</span>
423
+ <span class="cline-any cline-yes">28x</span>
424
+ <span class="cline-any cline-yes">28x</span>
425
+ <span class="cline-any cline-yes">28x</span>
426
+ <span class="cline-any cline-yes">28x</span>
427
+ <span class="cline-any cline-yes">28x</span>
428
+ <span class="cline-any cline-yes">1x</span>
429
+ <span class="cline-any cline-yes">1x</span>
430
+ <span class="cline-any cline-yes">1x</span>
431
+ <span class="cline-any cline-yes">1x</span>
432
+ <span class="cline-any cline-yes">1x</span>
433
+ <span class="cline-any cline-yes">1x</span>
389
434
  <span class="cline-any cline-yes">1x</span>
390
435
  <span class="cline-any cline-yes">1x</span>
391
436
  <span class="cline-any cline-yes">1x</span>
@@ -405,8 +450,6 @@
405
450
  <span class="cline-any cline-yes">1x</span>
406
451
  <span class="cline-any cline-yes">1x</span>
407
452
  <span class="cline-any cline-yes">1x</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-no">&nbsp;</span>
410
453
  <span class="cline-any cline-yes">1x</span>
411
454
  <span class="cline-any cline-yes">1x</span>
412
455
  <span class="cline-any cline-yes">1x</span>
@@ -514,228 +557,242 @@
514
557
  <span class="cline-any cline-yes">1x</span>
515
558
  <span class="cline-any cline-yes">1x</span>
516
559
  <span class="cline-any cline-yes">1x</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-no">&nbsp;</span>
548
- <span class="cline-any cline-no">&nbsp;</span>
549
- <span class="cline-any cline-no">&nbsp;</span>
550
- <span class="cline-any cline-no">&nbsp;</span>
551
- <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-no">&nbsp;</span>
553
- <span class="cline-any cline-no">&nbsp;</span>
554
- <span class="cline-any cline-no">&nbsp;</span>
555
- <span class="cline-any cline-no">&nbsp;</span>
556
- <span class="cline-any cline-no">&nbsp;</span>
557
- <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-no">&nbsp;</span>
559
- <span class="cline-any cline-no">&nbsp;</span>
560
- <span class="cline-any cline-no">&nbsp;</span>
561
- <span class="cline-any cline-no">&nbsp;</span>
562
- <span class="cline-any cline-no">&nbsp;</span>
563
- <span class="cline-any cline-no">&nbsp;</span>
564
- <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-no">&nbsp;</span>
566
- <span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-no">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
- <span class="cline-any cline-no">&nbsp;</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
- <span class="cline-any cline-no">&nbsp;</span>
633
- <span class="cline-any cline-no">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-no">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
- <span class="cline-any cline-no">&nbsp;</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-no">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</span>
660
- <span class="cline-any cline-no">&nbsp;</span>
661
- <span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-no">&nbsp;</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-no">&nbsp;</span>
671
- <span class="cline-any cline-no">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-no">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</span>
675
- <span class="cline-any cline-no">&nbsp;</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-no">&nbsp;</span>
678
- <span class="cline-any cline-no">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-no">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-no">&nbsp;</span>
687
- <span class="cline-any cline-no">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
- <span class="cline-any cline-no">&nbsp;</span>
693
- <span class="cline-any cline-no">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-no">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
702
- <span class="cline-any cline-no">&nbsp;</span>
703
- <span class="cline-any cline-no">&nbsp;</span>
704
- <span class="cline-any cline-no">&nbsp;</span>
705
- <span class="cline-any cline-no">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-no">&nbsp;</span>
710
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import type {
711
- AriaAttributes,
712
- FocusEventHandler,
713
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
714
- InputHTMLAttributes,
715
- KeyboardEventHandler,
716
- MouseEventHandler,
717
- Ref,
718
- RefCallback,
719
- RefObject,
560
+ <span class="cline-any cline-yes">1x</span>
561
+ <span class="cline-any cline-yes">1x</span>
562
+ <span class="cline-any cline-yes">1x</span>
563
+ <span class="cline-any cline-yes">1x</span>
564
+ <span class="cline-any cline-yes">1x</span>
565
+ <span class="cline-any cline-yes">87x</span>
566
+ <span class="cline-any cline-yes">87x</span>
567
+ <span class="cline-any cline-yes">87x</span>
568
+ <span class="cline-any cline-yes">87x</span>
569
+ <span class="cline-any cline-yes">87x</span>
570
+ <span class="cline-any cline-yes">87x</span>
571
+ <span class="cline-any cline-yes">87x</span>
572
+ <span class="cline-any cline-yes">87x</span>
573
+ <span class="cline-any cline-yes">87x</span>
574
+ <span class="cline-any cline-yes">87x</span>
575
+ <span class="cline-any cline-yes">87x</span>
576
+ <span class="cline-any cline-yes">87x</span>
577
+ <span class="cline-any cline-yes">87x</span>
578
+ <span class="cline-any cline-yes">87x</span>
579
+ <span class="cline-any cline-yes">87x</span>
580
+ <span class="cline-any cline-yes">87x</span>
581
+ <span class="cline-any cline-yes">87x</span>
582
+ <span class="cline-any cline-yes">87x</span>
583
+ <span class="cline-any cline-yes">87x</span>
584
+ <span class="cline-any cline-yes">87x</span>
585
+ <span class="cline-any cline-yes">87x</span>
586
+ <span class="cline-any cline-yes">87x</span>
587
+ <span class="cline-any cline-yes">87x</span>
588
+ <span class="cline-any cline-yes">87x</span>
589
+ <span class="cline-any cline-yes">87x</span>
590
+ <span class="cline-any cline-yes">87x</span>
591
+ <span class="cline-any cline-yes">87x</span>
592
+ <span class="cline-any cline-yes">87x</span>
593
+ <span class="cline-any cline-yes">87x</span>
594
+ <span class="cline-any cline-yes">87x</span>
595
+ <span class="cline-any cline-yes">87x</span>
596
+ <span class="cline-any cline-yes">87x</span>
597
+ <span class="cline-any cline-yes">87x</span>
598
+ <span class="cline-any cline-yes">87x</span>
599
+ <span class="cline-any cline-yes">87x</span>
600
+ <span class="cline-any cline-yes">87x</span>
601
+ <span class="cline-any cline-yes">87x</span>
602
+ <span class="cline-any cline-yes">87x</span>
603
+ <span class="cline-any cline-yes">87x</span>
604
+ <span class="cline-any cline-yes">87x</span>
605
+ <span class="cline-any cline-yes">87x</span>
606
+ <span class="cline-any cline-yes">87x</span>
607
+ <span class="cline-any cline-yes">87x</span>
608
+ <span class="cline-any cline-yes">87x</span>
609
+ <span class="cline-any cline-yes">87x</span>
610
+ <span class="cline-any cline-yes">13x</span>
611
+ <span class="cline-any cline-yes">13x</span>
612
+ <span class="cline-any cline-yes">1x</span>
613
+ <span class="cline-any cline-yes">1x</span>
614
+ <span class="cline-any cline-yes">12x</span>
615
+ <span class="cline-any cline-yes">12x</span>
616
+ <span class="cline-any cline-yes">12x</span>
617
+ <span class="cline-any cline-yes">87x</span>
618
+ <span class="cline-any cline-yes">19x</span>
619
+ <span class="cline-any cline-yes">19x</span>
620
+ <span class="cline-any cline-yes">19x</span>
621
+ <span class="cline-any cline-yes">19x</span>
622
+ <span class="cline-any cline-yes">19x</span>
623
+ <span class="cline-any cline-yes">19x</span>
624
+ <span class="cline-any cline-yes">19x</span>
625
+ <span class="cline-any cline-yes">19x</span>
626
+ <span class="cline-any cline-yes">19x</span>
627
+ <span class="cline-any cline-yes">3x</span>
628
+ <span class="cline-any cline-yes">3x</span>
629
+ <span class="cline-any cline-yes">16x</span>
630
+ <span class="cline-any cline-yes">19x</span>
631
+ <span class="cline-any cline-yes">13x</span>
632
+ <span class="cline-any cline-yes">13x</span>
633
+ <span class="cline-any cline-yes">13x</span>
634
+ <span class="cline-any cline-yes">2x</span>
635
+ <span class="cline-any cline-yes">2x</span>
636
+ <span class="cline-any cline-yes">2x</span>
637
+ <span class="cline-any cline-yes">13x</span>
638
+ <span class="cline-any cline-yes">3x</span>
639
+ <span class="cline-any cline-yes">3x</span>
640
+ <span class="cline-any cline-yes">13x</span>
641
+ <span class="cline-any cline-yes">13x</span>
642
+ <span class="cline-any cline-yes">13x</span>
643
+ <span class="cline-any cline-yes">13x</span>
644
+ <span class="cline-any cline-yes">13x</span>
645
+ <span class="cline-any cline-yes">3x</span>
646
+ <span class="cline-any cline-yes">3x</span>
647
+ <span class="cline-any cline-yes">19x</span>
648
+ <span class="cline-any cline-yes">19x</span>
649
+ <span class="cline-any cline-yes">2x</span>
650
+ <span class="cline-any cline-yes">2x</span>
651
+ <span class="cline-any cline-yes">2x</span>
652
+ <span class="cline-any cline-yes">2x</span>
653
+ <span class="cline-any cline-yes">2x</span>
654
+ <span class="cline-any cline-yes">19x</span>
655
+ <span class="cline-any cline-yes">1x</span>
656
+ <span class="cline-any cline-yes">1x</span>
657
+ <span class="cline-any cline-yes">19x</span>
658
+ <span class="cline-any cline-yes">19x</span>
659
+ <span class="cline-any cline-yes">87x</span>
660
+ <span class="cline-any cline-yes">87x</span>
661
+ <span class="cline-any cline-yes">87x</span>
662
+ <span class="cline-any cline-yes">87x</span>
663
+ <span class="cline-any cline-yes">87x</span>
664
+ <span class="cline-any cline-yes">87x</span>
665
+ <span class="cline-any cline-yes">87x</span>
666
+ <span class="cline-any cline-yes">28x</span>
667
+ <span class="cline-any cline-yes">28x</span>
668
+ <span class="cline-any cline-yes">17x</span>
669
+ <span class="cline-any cline-yes">17x</span>
670
+ <span class="cline-any cline-yes">11x</span>
671
+ <span class="cline-any cline-yes">28x</span>
672
+ <span class="cline-any cline-yes">28x</span>
673
+ <span class="cline-any cline-yes">87x</span>
674
+ <span class="cline-any cline-yes">87x</span>
675
+ <span class="cline-any cline-yes">87x</span>
676
+ <span class="cline-any cline-yes">87x</span>
677
+ <span class="cline-any cline-yes">87x</span>
678
+ <span class="cline-any cline-yes">87x</span>
679
+ <span class="cline-any cline-yes">87x</span>
680
+ <span class="cline-any cline-yes">87x</span>
681
+ <span class="cline-any cline-yes">87x</span>
682
+ <span class="cline-any cline-yes">87x</span>
683
+ <span class="cline-any cline-yes">87x</span>
684
+ <span class="cline-any cline-yes">87x</span>
685
+ <span class="cline-any cline-yes">87x</span>
686
+ <span class="cline-any cline-yes">87x</span>
687
+ <span class="cline-any cline-yes">87x</span>
688
+ <span class="cline-any cline-yes">87x</span>
689
+ <span class="cline-any cline-yes">87x</span>
690
+ <span class="cline-any cline-yes">87x</span>
691
+ <span class="cline-any cline-yes">87x</span>
692
+ <span class="cline-any cline-yes">87x</span>
693
+ <span class="cline-any cline-yes">87x</span>
694
+ <span class="cline-any cline-yes">87x</span>
695
+ <span class="cline-any cline-yes">87x</span>
696
+ <span class="cline-any cline-yes">87x</span>
697
+ <span class="cline-any cline-yes">87x</span>
698
+ <span class="cline-any cline-yes">87x</span>
699
+ <span class="cline-any cline-yes">87x</span>
700
+ <span class="cline-any cline-yes">87x</span>
701
+ <span class="cline-any cline-yes">87x</span>
702
+ <span class="cline-any cline-yes">87x</span>
703
+ <span class="cline-any cline-yes">87x</span>
704
+ <span class="cline-any cline-yes">87x</span>
705
+ <span class="cline-any cline-yes">87x</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">"use client";
707
+ import {
708
+ useRef,
709
+ type FocusEventHandler,
710
+ type KeyboardEventHandler,
711
+ type MouseEventHandler,
712
+ type Ref,
713
+ type RefCallback,
714
+ type RefObject,
720
715
  } from "react";
721
- import type { KeyboardMovementProviderImplementation } from "../movement";
722
- import { isSearchableEvent, useKeyboardMovementProvider } from "../movement";
723
- import type { UseStateInitializer, UseStateSetter } from "../types";
724
- import { useEnsuredId } from "../useEnsuredId";
725
- import { useEnsuredRef } from "../useEnsuredRef";
726
- import { useToggle } from "../useToggle";
727
- import { tryToSubmitRelatedForm } from "./utils";
716
+ import {
717
+ type GetDefaultFocusedIndex,
718
+ type GetFocusableElements,
719
+ type KeyboardMovementExtensionData,
720
+ type KeyboardMovementProviderImplementation,
721
+ type KeyboardMovementProviderOptions,
722
+ } from "../movement/types.js";
723
+ import { useKeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
724
+ import {
725
+ type NonNullMutableRef,
726
+ type UseStateInitializer,
727
+ type UseStateSetter,
728
+ } from "../types.js";
729
+ import { useEnsuredId } from "../useEnsuredId.js";
730
+ import { useEnsuredRef } from "../useEnsuredRef.js";
731
+ import { useToggle } from "../useToggle.js";
732
+ import { tryToSubmitRelatedForm } from "./utils.js";
733
+ &nbsp;
734
+ const noop = (): void =&gt; {
735
+ // do nothing
736
+ };
728
737
  &nbsp;
729
- const noop = <span class="fstat-no" title="function not covered" >(): void =&gt; {</span>
730
- <span class="cstat-no" title="statement not covered" > // do nothing</span>
731
- <span class="cstat-no" title="statement not covered" >};</span>
738
+ /**
739
+ * @remarks \@since 6.0.0
740
+ */
741
+ export const getNonDisabledOptions = (
742
+ container: HTMLElement
743
+ ): readonly HTMLElement[] =&gt; [
744
+ ...container.querySelectorAll&lt;HTMLLIElement&gt;(
745
+ '[role="option"]:not([aria-disabled])'
746
+ ),
747
+ ];
732
748
  &nbsp;
749
+ /**
750
+ * @remarks \@since 6.0.0
751
+ */
733
752
  export type SupportedComboboxPopup = "listbox" | "grid" | "dialog";
734
753
  &nbsp;
754
+ /**
755
+ * @remarks \@since 6.0.0
756
+ */
757
+ export interface ComboboxKeyboardMovementData&lt;
758
+ E extends HTMLElement = HTMLInputElement,
759
+ &gt; extends KeyboardMovementExtensionData&lt;E&gt; {
760
+ show(): void;
761
+ hide(): void;
762
+ visible: boolean;
763
+ focusLast: NonNullMutableRef&lt;boolean&gt;;
764
+ }
765
+ &nbsp;
766
+ /**
767
+ * @remarks \@since 6.0.0
768
+ */
769
+ export type ExtendComboboxKeyDown&lt;E extends HTMLElement = HTMLInputElement&gt; = (
770
+ movementData: ComboboxKeyboardMovementData&lt;E&gt;
771
+ ) =&gt; void;
772
+ &nbsp;
773
+ /**
774
+ * @remarks \@since 6.0.0
775
+ */
776
+ export type ComboboxKeyboardMovementOptions&lt;
777
+ ComboboxEl extends HTMLElement = HTMLInputElement,
778
+ &gt; = Pick&lt;
779
+ KeyboardMovementProviderOptions&lt;ComboboxEl&gt;,
780
+ | "onClick"
781
+ | "onFocus"
782
+ | "onKeyDown"
783
+ | "disabled"
784
+ | "loopable"
785
+ | "searchable"
786
+ | "isNegativeOneAllowed"
787
+ &gt;;
788
+ &nbsp;
789
+ /**
790
+ * @remarks \@since 6.0.0
791
+ */
735
792
  export interface ComboboxOptions&lt;
736
793
  ComboboxEl extends HTMLElement = HTMLInputElement,
737
- PopupEl extends HTMLElement = HTMLElement
738
- &gt; {
794
+ PopupEl extends HTMLElement = HTMLElement,
795
+ &gt; extends ComboboxKeyboardMovementOptions&lt;ComboboxEl&gt; {
739
796
  /**
740
797
  * This is the {@link InputHTMLAttributes.form} attribute and is used to
741
798
  * attempt submitting a form when the enter key is pressed.
@@ -752,58 +809,38 @@ export interface ComboboxOptions&lt;
752
809
  * @defaultValue `"combobox-" + useId()`
753
810
  */
754
811
  comboboxId?: string;
755
- &nbsp;
756
812
  comboboxRef?: Ref&lt;ComboboxEl&gt;;
757
813
  &nbsp;
758
814
  /**
759
815
  * @defaultValue `"listbox"`
760
816
  */
761
817
  popup?: "listbox" | "grid" | "dialog";
762
- &nbsp;
763
- /**
764
- * Used to determine the keyboard completion behavior with the {@link popup}
765
- * type:
766
- *
767
- * - `"none"` - applies `aria-autocomplete="none"` and focusing options does
768
- * not update the value automatically. the user must select an option with
769
- * enter
770
- * - `"list"` - applies `aria-autocomplete="list"` and focusing options
771
- * immediately updates the value
772
- * - `"both"` - applies `aria-autocomplete="both"`, focusing options
773
- * immediately updates the value, and typing will attempt to autocomplete
774
- * the rest of the match inline using selection ranges
775
- * - `"select"` - acts as a `&lt;select&gt;` element and is **not editable**.
776
- *
777
- * @defaultValue `"list"`
778
- */
779
- autocomplete?: "none" | "list" | "both" | "select";
780
- &nbsp;
781
- onClick?: MouseEventHandler&lt;ComboboxEl&gt;;
782
- onFocus?: FocusEventHandler&lt;ComboboxEl&gt;;
783
- onKeyDown?: KeyboardEventHandler&lt;ComboboxEl&gt;;
784
818
  &nbsp;
785
819
  /**
786
820
  * @defaultValue `false`
787
821
  */
788
- disabled?: boolean;
822
+ defaultVisible?: UseStateInitializer&lt;boolean&gt;;
789
823
  &nbsp;
790
- /**
791
- * @defaultValue `false`
792
- */
793
- disableShowOnFocus?: boolean;
824
+ extendKeyDown?: ExtendComboboxKeyDown&lt;ComboboxEl&gt;;
794
825
  &nbsp;
795
826
  /**
796
- * @defaultValue `false`
827
+ * @defaultValue {@link getNonDisabledOptions}
797
828
  */
798
- defaultVisible?: UseStateInitializer&lt;boolean&gt;;
829
+ getFocusableElements?: GetFocusableElements;
830
+ &nbsp;
831
+ getDefaultFocusedIndex?: GetDefaultFocusedIndex;
799
832
  }
800
833
  &nbsp;
834
+ /**
835
+ * @remarks \@since 6.0.0
836
+ */
801
837
  export interface ComboboxWidgetProps&lt;
802
- ComboboxEl extends HTMLElement = HTMLInputElement
838
+ ComboboxEl extends HTMLElement = HTMLInputElement,
803
839
  &gt; {
804
- "aria-haspopup": SupportedComboboxPopup;
840
+ "aria-controls": string;
841
+ "aria-disabled": true | undefined;
805
842
  "aria-expanded": boolean;
806
- "aria-autocomplete"?: AriaAttributes["aria-autocomplete"];
843
+ "aria-haspopup": SupportedComboboxPopup;
807
844
  id: string;
808
845
  ref: RefCallback&lt;ComboboxEl&gt;;
809
846
  role: "combobox";
@@ -812,223 +849,180 @@ export interface ComboboxWidgetProps&lt;
812
849
  onKeyDown: KeyboardEventHandler&lt;ComboboxEl&gt;;
813
850
  }
814
851
  &nbsp;
852
+ /**
853
+ * @remarks \@since 6.0.0
854
+ */
815
855
  export interface ComboboxWidgetPopupProps&lt;
816
- PopupEl extends HTMLElement = HTMLElement
856
+ PopupEl extends HTMLElement = HTMLElement,
817
857
  &gt; {
818
- "aria-labelledby": string;
819
858
  id: string;
820
859
  ref: RefCallback&lt;PopupEl&gt;;
821
860
  role: "listbox" | "dialog" | "grid";
822
861
  }
823
862
  &nbsp;
863
+ /**
864
+ * @remarks \@since 6.0.0
865
+ */
824
866
  export interface ComboboxImplementation&lt;
825
867
  ComboboxEl extends HTMLElement = HTMLInputElement,
826
- PopupEl extends HTMLElement = HTMLElement
868
+ PopupEl extends HTMLElement = HTMLElement,
827
869
  &gt; extends KeyboardMovementProviderImplementation&lt;ComboboxEl&gt; {
828
870
  show(): void;
829
871
  hide(): void;
830
872
  visible: boolean;
831
873
  setVisible: UseStateSetter&lt;boolean&gt;;
874
+ focusLast: NonNullMutableRef&lt;boolean&gt;;
832
875
  popupRef: RefObject&lt;PopupEl&gt;;
833
876
  popupProps: ComboboxWidgetPopupProps&lt;PopupEl&gt;;
834
877
  comboboxRef: RefObject&lt;ComboboxEl&gt;;
835
878
  comboboxProps: ComboboxWidgetProps&lt;ComboboxEl&gt;;
836
879
  }
837
880
  &nbsp;
838
- export <span class="fstat-no" title="function not covered" >function useCombobox&lt;</span>
839
- <span class="cstat-no" title="statement not covered" > ComboboxEl extends HTMLElement = HTMLInputElement,</span>
840
- <span class="cstat-no" title="statement not covered" > PopupEl extends HTMLElement = HTMLElement</span>
841
- <span class="cstat-no" title="statement not covered" >&gt;(</span>
842
- <span class="cstat-no" title="statement not covered" > options: ComboboxOptions&lt;ComboboxEl, PopupEl&gt; = {}</span>
843
- <span class="cstat-no" title="statement not covered" >): ComboboxImplementation&lt;ComboboxEl, PopupEl&gt; {</span>
844
- <span class="cstat-no" title="statement not covered" > const {</span>
845
- <span class="cstat-no" title="statement not covered" > form,</span>
846
- <span class="cstat-no" title="statement not covered" > autocomplete = "list",</span>
847
- <span class="cstat-no" title="statement not covered" > popup = "listbox",</span>
848
- <span class="cstat-no" title="statement not covered" > onClick = noop,</span>
849
- <span class="cstat-no" title="statement not covered" > onFocus = noop,</span>
850
- <span class="cstat-no" title="statement not covered" > onKeyDown = noop,</span>
851
- <span class="cstat-no" title="statement not covered" > disabled = false,</span>
852
- <span class="cstat-no" title="statement not covered" > comboboxId: propComboboxId,</span>
853
- <span class="cstat-no" title="statement not covered" > comboboxRef: propComboboxRef,</span>
854
- <span class="cstat-no" title="statement not covered" > popupId: propPopupId,</span>
855
- <span class="cstat-no" title="statement not covered" > popupRef: propPopupRef,</span>
856
- <span class="cstat-no" title="statement not covered" > defaultVisible = false,</span>
857
- <span class="cstat-no" title="statement not covered" > disableShowOnFocus = autocomplete === "select",</span>
858
- <span class="cstat-no" title="statement not covered" > } = options;</span>
859
- <span class="cstat-no" title="statement not covered" > const isSelect = autocomplete === "select";</span>
860
- <span class="cstat-no" title="statement not covered" ></span>
861
- <span class="cstat-no" title="statement not covered" > const {</span>
862
- <span class="cstat-no" title="statement not covered" > toggled: visible,</span>
863
- <span class="cstat-no" title="statement not covered" > enable: show,</span>
864
- <span class="cstat-no" title="statement not covered" > disable: hide,</span>
865
- <span class="cstat-no" title="statement not covered" > setToggled: setVisible,</span>
866
- <span class="cstat-no" title="statement not covered" > } = useToggle(defaultVisible);</span>
867
- <span class="cstat-no" title="statement not covered" > const popupId = useEnsuredId(propPopupId, "combobox-popup");</span>
868
- <span class="cstat-no" title="statement not covered" > const comboboxId = useEnsuredId(propComboboxId, "combobox");</span>
869
- <span class="cstat-no" title="statement not covered" > const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);</span>
870
- <span class="cstat-no" title="statement not covered" > const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);</span>
871
- <span class="cstat-no" title="statement not covered" > const {</span>
872
- <span class="cstat-no" title="statement not covered" > movementProps,</span>
873
- <span class="cstat-no" title="statement not covered" > movementContext,</span>
874
- <span class="cstat-no" title="statement not covered" > currentFocusIndex,</span>
875
- <span class="cstat-no" title="statement not covered" > setActiveDescendantId,</span>
876
- <span class="cstat-no" title="statement not covered" > } = useKeyboardMovementProvider&lt;ComboboxEl&gt;({</span>
877
- <span class="cstat-no" title="statement not covered" > onFocus(event) {</span>
878
- <span class="cstat-no" title="statement not covered" > onFocus(event);</span>
879
- <span class="cstat-no" title="statement not covered" > if (disableShowOnFocus) {</span>
880
- <span class="cstat-no" title="statement not covered" > return;</span>
881
- <span class="cstat-no" title="statement not covered" > }</span>
882
- <span class="cstat-no" title="statement not covered" ></span>
883
- <span class="cstat-no" title="statement not covered" > show();</span>
884
- <span class="cstat-no" title="statement not covered" > },</span>
885
- <span class="cstat-no" title="statement not covered" > onClick(event) {</span>
886
- <span class="cstat-no" title="statement not covered" > onClick(event);</span>
887
- <span class="cstat-no" title="statement not covered" > // if (disabled || !isSelect) {</span>
888
- <span class="cstat-no" title="statement not covered" > if (disabled) {</span>
889
- <span class="cstat-no" title="statement not covered" > return;</span>
890
- <span class="cstat-no" title="statement not covered" > }</span>
891
- <span class="cstat-no" title="statement not covered" ></span>
892
- <span class="cstat-no" title="statement not covered" > // this was called so that the menu doesn't automatically close</span>
893
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
894
- <span class="cstat-no" title="statement not covered" > show();</span>
895
- <span class="cstat-no" title="statement not covered" > },</span>
896
- <span class="cstat-no" title="statement not covered" > onKeyDown(event) {</span>
897
- <span class="cstat-no" title="statement not covered" > onKeyDown(event);</span>
898
- <span class="cstat-no" title="statement not covered" > if (disabled) {</span>
899
- <span class="cstat-no" title="statement not covered" > return;</span>
900
- <span class="cstat-no" title="statement not covered" > }</span>
901
- <span class="cstat-no" title="statement not covered" ></span>
902
- <span class="cstat-no" title="statement not covered" > if (visible) {</span>
903
- <span class="cstat-no" title="statement not covered" > if (event.key === "Escape" || event.key === "Tab") {</span>
904
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
905
- <span class="cstat-no" title="statement not covered" > hide();</span>
906
- <span class="cstat-no" title="statement not covered" > }</span>
907
- <span class="cstat-no" title="statement not covered" ></span>
908
- <span class="cstat-no" title="statement not covered" > return;</span>
909
- <span class="cstat-no" title="statement not covered" > }</span>
910
- <span class="cstat-no" title="statement not covered" ></span>
911
- <span class="cstat-no" title="statement not covered" > if (isSearchableEvent(event)) {</span>
912
- <span class="cstat-no" title="statement not covered" > // event.stopPropagation();</span>
913
- <span class="cstat-no" title="statement not covered" ></span>
914
- <span class="cstat-no" title="statement not covered" > // const nextIndex = findMatchIndex({</span>
915
- <span class="cstat-no" title="statement not covered" > // value: event.key,</span>
916
- <span class="cstat-no" title="statement not covered" > // values: searchValues,</span>
917
- <span class="cstat-no" title="statement not covered" > // startIndex: event.shiftKey ? -1 : currentIndex,</span>
918
- <span class="cstat-no" title="statement not covered" > // });</span>
919
- <span class="cstat-no" title="statement not covered" ></span>
920
- <span class="cstat-no" title="statement not covered" > // if (nextIndex !== -1) {</span>
921
- <span class="cstat-no" title="statement not covered" > // triggerManualChangeEvent(inputRef.current, options[nextIndex].value);</span>
922
- <span class="cstat-no" title="statement not covered" > // }</span>
923
- <span class="cstat-no" title="statement not covered" > return;</span>
924
- <span class="cstat-no" title="statement not covered" > }</span>
925
- <span class="cstat-no" title="statement not covered" ></span>
926
- <span class="cstat-no" title="statement not covered" > switch (event.key) {</span>
927
- <span class="cstat-no" title="statement not covered" > case " ":</span>
928
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
929
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
930
- <span class="cstat-no" title="statement not covered" > show();</span>
931
- <span class="cstat-no" title="statement not covered" > break;</span>
932
- <span class="cstat-no" title="statement not covered" > case "Enter":</span>
933
- <span class="cstat-no" title="statement not covered" > tryToSubmitRelatedForm(event, form);</span>
934
- <span class="cstat-no" title="statement not covered" > break;</span>
935
- <span class="cstat-no" title="statement not covered" > case "Home":</span>
936
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
937
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
938
- <span class="cstat-no" title="statement not covered" > // if (currentIndex !== 0) {</span>
939
- <span class="cstat-no" title="statement not covered" > // triggerManualChangeEvent(inputRef.current, options[0].value);</span>
940
- <span class="cstat-no" title="statement not covered" > // }</span>
941
- <span class="cstat-no" title="statement not covered" > break;</span>
942
- <span class="cstat-no" title="statement not covered" > case "End":</span>
943
- <span class="cstat-no" title="statement not covered" > event.preventDefault();</span>
944
- <span class="cstat-no" title="statement not covered" > event.stopPropagation();</span>
945
- <span class="cstat-no" title="statement not covered" > // if (currentIndex !== totalOptions) {</span>
946
- <span class="cstat-no" title="statement not covered" > // triggerManualChangeEvent(</span>
947
- <span class="cstat-no" title="statement not covered" > // inputRef.current,</span>
948
- <span class="cstat-no" title="statement not covered" > // options[totalOptions].value</span>
949
- <span class="cstat-no" title="statement not covered" > // );</span>
950
- <span class="cstat-no" title="statement not covered" > // }</span>
951
- <span class="cstat-no" title="statement not covered" > break;</span>
952
- <span class="cstat-no" title="statement not covered" > case "ArrowDown":</span>
953
- <span class="cstat-no" title="statement not covered" > case "ArrowUp": {</span>
954
- <span class="cstat-no" title="statement not covered" > // event.preventDefault();</span>
955
- <span class="cstat-no" title="statement not covered" > // event.stopPropagation();</span>
956
- <span class="cstat-no" title="statement not covered" ></span>
957
- <span class="cstat-no" title="statement not covered" > // const increment = event.key === "ArrowDown";</span>
958
- <span class="cstat-no" title="statement not covered" > // if (currentIndex === -1 &amp;&amp; !increment) {</span>
959
- <span class="cstat-no" title="statement not covered" > // // this matches the native select behavior where it will do</span>
960
- <span class="cstat-no" title="statement not covered" > // // nothing if there is no current value</span>
961
- <span class="cstat-no" title="statement not covered" > // return;</span>
962
- <span class="cstat-no" title="statement not covered" > // }</span>
963
- <span class="cstat-no" title="statement not covered" ></span>
964
- <span class="cstat-no" title="statement not covered" > // const nextIndex = loop({</span>
965
- <span class="cstat-no" title="statement not covered" > // max: totalOptions,</span>
966
- <span class="cstat-no" title="statement not covered" > // value: currentIndex,</span>
967
- <span class="cstat-no" title="statement not covered" > // minmax: true,</span>
968
- <span class="cstat-no" title="statement not covered" > // increment,</span>
969
- <span class="cstat-no" title="statement not covered" > // });</span>
970
- <span class="cstat-no" title="statement not covered" ></span>
971
- <span class="cstat-no" title="statement not covered" > // triggerManualChangeEvent(inputRef.current, options[nextIndex].value);</span>
972
- <span class="cstat-no" title="statement not covered" > break;</span>
973
- <span class="cstat-no" title="statement not covered" > }</span>
974
- <span class="cstat-no" title="statement not covered" > }</span>
975
- <span class="cstat-no" title="statement not covered" > },</span>
976
- <span class="cstat-no" title="statement not covered" > loopable: false,</span>
977
- <span class="cstat-no" title="statement not covered" > searchable: isSelect,</span>
978
- <span class="cstat-no" title="statement not covered" > programmatic: true,</span>
979
- <span class="cstat-no" title="statement not covered" > includeDisabled: false,</span>
980
- <span class="cstat-no" title="statement not covered" > tabIndexBehavior: "virtual",</span>
981
- <span class="cstat-no" title="statement not covered" > getDefaultFocusedIndex(focusOptions) {</span>
982
- <span class="cstat-no" title="statement not covered" > return -1;</span>
983
- <span class="cstat-no" title="statement not covered" > // if (typeof menuProps.getDefaultFocusedIndex === "function") {</span>
984
- <span class="cstat-no" title="statement not covered" > // return menuProps.getDefaultFocusedIndex(focusOptions);</span>
985
- <span class="cstat-no" title="statement not covered" > // }</span>
986
- <span class="cstat-no" title="statement not covered" ></span>
987
- <span class="cstat-no" title="statement not covered" > // const val = typeof value === "undefined" ? currentValue : value;</span>
988
- <span class="cstat-no" title="statement not covered" > // return options.findIndex((option) =&gt; option.value === val);</span>
989
- <span class="cstat-no" title="statement not covered" > },</span>
990
- <span class="cstat-no" title="statement not covered" > getFocusableElements() {</span>
991
- <span class="cstat-no" title="statement not covered" > const popup = popupRef.current;</span>
992
- <span class="cstat-no" title="statement not covered" > if (!popup) {</span>
993
- <span class="cstat-no" title="statement not covered" > return [];</span>
994
- <span class="cstat-no" title="statement not covered" > }</span>
995
- <span class="cstat-no" title="statement not covered" ></span>
996
- <span class="cstat-no" title="statement not covered" > return [</span>
997
- <span class="cstat-no" title="statement not covered" > ...popup.querySelectorAll&lt;HTMLLIElement&gt;(</span>
998
- <span class="cstat-no" title="statement not covered" > '[role="option"]:not([aria-disabled])'</span>
999
- <span class="cstat-no" title="statement not covered" > ),</span>
1000
- <span class="cstat-no" title="statement not covered" > ];</span>
1001
- <span class="cstat-no" title="statement not covered" > },</span>
1002
- <span class="cstat-no" title="statement not covered" > });</span>
1003
- <span class="cstat-no" title="statement not covered" ></span>
1004
- <span class="cstat-no" title="statement not covered" > return {</span>
1005
- <span class="cstat-no" title="statement not covered" > show,</span>
1006
- <span class="cstat-no" title="statement not covered" > hide,</span>
1007
- <span class="cstat-no" title="statement not covered" > visible,</span>
1008
- <span class="cstat-no" title="statement not covered" > setVisible,</span>
1009
- <span class="cstat-no" title="statement not covered" > popupRef,</span>
1010
- <span class="cstat-no" title="statement not covered" > popupProps: {</span>
1011
- <span class="cstat-no" title="statement not covered" > "aria-labelledby": comboboxId,</span>
1012
- <span class="cstat-no" title="statement not covered" > id: popupId,</span>
1013
- <span class="cstat-no" title="statement not covered" > ref: popupRefCallback,</span>
1014
- <span class="cstat-no" title="statement not covered" > role: popup,</span>
1015
- <span class="cstat-no" title="statement not covered" > },</span>
1016
- <span class="cstat-no" title="statement not covered" > comboboxRef,</span>
1017
- <span class="cstat-no" title="statement not covered" > comboboxProps: {</span>
1018
- <span class="cstat-no" title="statement not covered" > ...movementProps,</span>
1019
- <span class="cstat-no" title="statement not covered" > "aria-haspopup": popup,</span>
1020
- <span class="cstat-no" title="statement not covered" > "aria-expanded": visible,</span>
1021
- <span class="cstat-no" title="statement not covered" > "aria-autocomplete": autocomplete === "select" ? undefined : autocomplete,</span>
1022
- <span class="cstat-no" title="statement not covered" > id: comboboxId,</span>
1023
- <span class="cstat-no" title="statement not covered" > ref: comboboxRefCallback,</span>
1024
- <span class="cstat-no" title="statement not covered" > role: "combobox",</span>
1025
- <span class="cstat-no" title="statement not covered" > },</span>
1026
- <span class="cstat-no" title="statement not covered" > movementProps,</span>
1027
- <span class="cstat-no" title="statement not covered" > movementContext,</span>
1028
- <span class="cstat-no" title="statement not covered" > currentFocusIndex,</span>
1029
- <span class="cstat-no" title="statement not covered" > setActiveDescendantId,</span>
1030
- <span class="cstat-no" title="statement not covered" > };</span>
1031
- <span class="cstat-no" title="statement not covered" >}</span>
881
+ /**
882
+ * @remarks \@since 6.0.0
883
+ */
884
+ export function useCombobox&lt;
885
+ ComboboxEl extends HTMLElement = HTMLInputElement,
886
+ PopupEl extends HTMLElement = HTMLElement,
887
+ &gt;(
888
+ options: ComboboxOptions&lt;ComboboxEl, PopupEl&gt;
889
+ ): ComboboxImplementation&lt;ComboboxEl, PopupEl&gt; {
890
+ const {
891
+ form,
892
+ popup = "listbox",
893
+ onClick = noop,
894
+ onFocus,
895
+ onKeyDown,
896
+ searchable,
897
+ isNegativeOneAllowed,
898
+ loopable,
899
+ disabled,
900
+ comboboxId: propComboboxId,
901
+ comboboxRef: propComboboxRef,
902
+ popupId: propPopupId,
903
+ popupRef: propPopupRef,
904
+ defaultVisible = false,
905
+ extendKeyDown = noop,
906
+ getFocusableElements = getNonDisabledOptions,
907
+ getDefaultFocusedIndex,
908
+ } = options;
909
+ &nbsp;
910
+ const {
911
+ toggled: visible,
912
+ enable: show,
913
+ disable: hide,
914
+ setToggled: setVisible,
915
+ } = useToggle(defaultVisible);
916
+ const popupId = useEnsuredId(propPopupId, "combobox-popup");
917
+ const comboboxId = useEnsuredId(propComboboxId, "combobox");
918
+ const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);
919
+ const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);
920
+ const focusLast = useRef(false);
921
+ const {
922
+ movementProps,
923
+ movementContext,
924
+ currentFocusIndex,
925
+ setActiveDescendantId,
926
+ } = useKeyboardMovementProvider&lt;ComboboxEl&gt;({
927
+ onFocus,
928
+ onKeyDown,
929
+ onClick(event) {
930
+ onClick(event);
931
+ if (disabled) {
932
+ return;
933
+ }
934
+ &nbsp;
935
+ show();
936
+ },
937
+ extendKeyDown(movementData) {
938
+ extendKeyDown({
939
+ ...movementData,
940
+ show,
941
+ hide,
942
+ visible,
943
+ focusLast,
944
+ });
945
+ const { event } = movementData;
946
+ if (event.isPropagationStopped()) {
947
+ return;
948
+ }
949
+ &nbsp;
950
+ if (visible) {
951
+ switch (event.key) {
952
+ case "Tab":
953
+ case "Escape":
954
+ event.stopPropagation();
955
+ hide();
956
+ break;
957
+ case "Enter":
958
+ event.preventDefault();
959
+ break;
960
+ }
961
+ &nbsp;
962
+ // while visible, always use the default keyboard movement behavior
963
+ return;
964
+ }
965
+ &nbsp;
966
+ switch (event.key) {
967
+ case "ArrowUp":
968
+ case "ArrowDown":
969
+ event.preventDefault();
970
+ event.stopPropagation();
971
+ focusLast.current = event.key === "ArrowUp";
972
+ show();
973
+ break;
974
+ case "Enter":
975
+ tryToSubmitRelatedForm(event, form);
976
+ break;
977
+ }
978
+ },
979
+ disabled,
980
+ loopable,
981
+ searchable,
982
+ programmatic: true,
983
+ includeDisabled: false,
984
+ tabIndexBehavior: "virtual",
985
+ getFocusableElements(container, programmatic) {
986
+ const popup = popupRef.current;
987
+ if (!popup) {
988
+ return [];
989
+ }
990
+ &nbsp;
991
+ return getFocusableElements(<span class="branch-0 cbranch-no" title="branch not covered" >popup || container, p</span>rogrammatic);
992
+ },
993
+ isNegativeOneAllowed,
994
+ getDefaultFocusedIndex,
995
+ });
996
+ &nbsp;
997
+ return {
998
+ show,
999
+ hide,
1000
+ visible,
1001
+ setVisible,
1002
+ focusLast,
1003
+ popupRef,
1004
+ popupProps: {
1005
+ id: popupId,
1006
+ ref: popupRefCallback,
1007
+ role: popup,
1008
+ },
1009
+ comboboxRef,
1010
+ comboboxProps: {
1011
+ ...movementProps,
1012
+ "aria-controls": popupId,
1013
+ "aria-disabled": disabled || undefined,
1014
+ "aria-expanded": visible,
1015
+ "aria-haspopup": popup,
1016
+ id: comboboxId,
1017
+ ref: comboboxRefCallback,
1018
+ role: "combobox",
1019
+ },
1020
+ movementProps,
1021
+ movementContext,
1022
+ currentFocusIndex,
1023
+ setActiveDescendantId,
1024
+ };
1025
+ }
1032
1026
  &nbsp;</pre></td></tr></table></pre>
1033
1027
 
1034
1028
  <div class='push'></div><!-- for sticky footer -->
@@ -1036,7 +1030,7 @@ export <span class="fstat-no" title="function not covered" >function useCombobox
1036
1030
  <div class='footer quiet pad2 space-top1 center small'>
1037
1031
  Code coverage generated by
1038
1032
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1039
- at 2023-06-17T21:26:14.522Z
1033
+ at 2024-02-25T22:13:16.797Z
1040
1034
  </div>
1041
1035
  <script src="../prettify.js"></script>
1042
1036
  <script>