@mui/material 9.0.0-alpha.2 → 9.0.0-alpha.4

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 (352) hide show
  1. package/Accordion/Accordion.d.mts +0 -14
  2. package/Accordion/Accordion.d.ts +0 -14
  3. package/Accordion/Accordion.js +3 -25
  4. package/Accordion/Accordion.mjs +3 -25
  5. package/AccordionSummary/AccordionSummary.js +1 -1
  6. package/AccordionSummary/AccordionSummary.mjs +1 -1
  7. package/AccordionSummary/accordionSummaryClasses.d.mts +0 -5
  8. package/AccordionSummary/accordionSummaryClasses.d.ts +0 -5
  9. package/AccordionSummary/accordionSummaryClasses.js +1 -1
  10. package/AccordionSummary/accordionSummaryClasses.mjs +1 -1
  11. package/Alert/Alert.d.mts +0 -23
  12. package/Alert/Alert.d.ts +0 -23
  13. package/Alert/Alert.js +4 -36
  14. package/Alert/Alert.mjs +4 -36
  15. package/Alert/alertClasses.d.mts +0 -72
  16. package/Alert/alertClasses.d.ts +0 -72
  17. package/Alert/alertClasses.js +1 -1
  18. package/Alert/alertClasses.mjs +1 -1
  19. package/Autocomplete/Autocomplete.d.mts +26 -60
  20. package/Autocomplete/Autocomplete.d.ts +26 -60
  21. package/Autocomplete/Autocomplete.js +76 -119
  22. package/Autocomplete/Autocomplete.mjs +76 -119
  23. package/Avatar/Avatar.d.mts +0 -8
  24. package/Avatar/Avatar.d.ts +0 -8
  25. package/Avatar/Avatar.js +13 -35
  26. package/Avatar/Avatar.mjs +13 -35
  27. package/AvatarGroup/AvatarGroup.d.mts +0 -15
  28. package/AvatarGroup/AvatarGroup.d.ts +0 -15
  29. package/AvatarGroup/AvatarGroup.js +1 -18
  30. package/AvatarGroup/AvatarGroup.mjs +1 -18
  31. package/Backdrop/Backdrop.d.mts +1 -31
  32. package/Backdrop/Backdrop.d.ts +1 -31
  33. package/Backdrop/Backdrop.js +2 -42
  34. package/Backdrop/Backdrop.mjs +2 -42
  35. package/Badge/Badge.d.mts +0 -20
  36. package/Badge/Badge.d.ts +0 -20
  37. package/Badge/Badge.js +2 -35
  38. package/Badge/Badge.mjs +2 -35
  39. package/Box/Box.d.mts +1 -0
  40. package/Box/Box.d.ts +1 -0
  41. package/Button/Button.d.mts +1 -0
  42. package/Button/Button.d.ts +1 -0
  43. package/Button/Button.js +6 -6
  44. package/Button/Button.mjs +6 -6
  45. package/Button/buttonClasses.d.mts +0 -132
  46. package/Button/buttonClasses.d.ts +0 -132
  47. package/Button/buttonClasses.js +1 -1
  48. package/Button/buttonClasses.mjs +1 -1
  49. package/ButtonBase/ButtonBase.js +16 -2
  50. package/ButtonBase/ButtonBase.mjs +16 -2
  51. package/CHANGELOG.md +191 -0
  52. package/CardHeader/CardHeader.js +5 -1
  53. package/CardHeader/CardHeader.mjs +5 -1
  54. package/CircularProgress/CircularProgress.js +2 -2
  55. package/CircularProgress/CircularProgress.mjs +2 -2
  56. package/CircularProgress/circularProgressClasses.d.mts +0 -8
  57. package/CircularProgress/circularProgressClasses.d.ts +0 -8
  58. package/CircularProgress/circularProgressClasses.js +1 -1
  59. package/CircularProgress/circularProgressClasses.mjs +1 -1
  60. package/Divider/Divider.d.mts +1 -6
  61. package/Divider/Divider.d.ts +1 -6
  62. package/Divider/Divider.js +2 -18
  63. package/Divider/Divider.mjs +2 -18
  64. package/Divider/dividerClasses.d.mts +0 -4
  65. package/Divider/dividerClasses.d.ts +0 -4
  66. package/Divider/dividerClasses.js +1 -1
  67. package/Divider/dividerClasses.mjs +1 -1
  68. package/FormControlLabel/FormControlLabel.d.mts +1 -14
  69. package/FormControlLabel/FormControlLabel.d.ts +1 -14
  70. package/FormControlLabel/FormControlLabel.js +1 -13
  71. package/FormControlLabel/FormControlLabel.mjs +1 -13
  72. package/Input/Input.js +2 -1
  73. package/Input/Input.mjs +2 -1
  74. package/List/List.d.mts +1 -0
  75. package/List/List.d.ts +1 -0
  76. package/ListItemButton/ListItemButton.d.mts +1 -0
  77. package/ListItemButton/ListItemButton.d.ts +1 -0
  78. package/ListItemIcon/ListItemIcon.d.mts +1 -0
  79. package/ListItemIcon/ListItemIcon.d.ts +1 -0
  80. package/ListItemText/ListItemText.d.mts +1 -0
  81. package/ListItemText/ListItemText.d.ts +1 -0
  82. package/ListItemText/ListItemText.js +5 -1
  83. package/ListItemText/ListItemText.mjs +5 -1
  84. package/ListSubheader/ListSubheader.d.mts +1 -0
  85. package/ListSubheader/ListSubheader.d.ts +1 -0
  86. package/Menu/Menu.d.mts +0 -13
  87. package/Menu/Menu.d.ts +0 -13
  88. package/Menu/Menu.js +5 -44
  89. package/Menu/Menu.mjs +5 -44
  90. package/MenuItem/MenuItem.js +21 -1
  91. package/MenuItem/MenuItem.mjs +23 -1
  92. package/MenuList/MenuList.js +77 -109
  93. package/MenuList/MenuList.mjs +77 -109
  94. package/MobileStepper/MobileStepper.d.mts +0 -5
  95. package/MobileStepper/MobileStepper.d.ts +0 -5
  96. package/MobileStepper/MobileStepper.js +1 -10
  97. package/MobileStepper/MobileStepper.mjs +1 -10
  98. package/Paper/Paper.d.mts +1 -0
  99. package/Paper/Paper.d.ts +1 -0
  100. package/Popover/Popover.d.mts +4 -48
  101. package/Popover/Popover.d.ts +4 -48
  102. package/Popover/Popover.js +4 -64
  103. package/Popover/Popover.mjs +4 -64
  104. package/Popper/Popper.d.mts +0 -17
  105. package/Popper/Popper.d.ts +0 -17
  106. package/Popper/Popper.js +2 -26
  107. package/Popper/Popper.mjs +2 -26
  108. package/Popper/index.d.mts +1 -0
  109. package/Popper/index.d.ts +1 -0
  110. package/Popper/index.js +11 -2
  111. package/Popper/index.mjs +1 -0
  112. package/Select/SelectInput.js +50 -55
  113. package/Select/SelectInput.mjs +47 -52
  114. package/Select/index.d.mts +1 -0
  115. package/Select/index.d.ts +1 -0
  116. package/Select/index.js +12 -0
  117. package/Select/index.mjs +1 -0
  118. package/Select/utils/SelectFocusSourceContext.d.mts +4 -0
  119. package/Select/utils/SelectFocusSourceContext.d.ts +4 -0
  120. package/Select/utils/SelectFocusSourceContext.js +19 -0
  121. package/Select/utils/SelectFocusSourceContext.mjs +13 -0
  122. package/Select/utils/areEqualValues.d.mts +1 -0
  123. package/Select/utils/areEqualValues.d.ts +1 -0
  124. package/Select/utils/areEqualValues.js +14 -0
  125. package/Select/utils/areEqualValues.mjs +8 -0
  126. package/Select/utils/getOpenInteractionType.d.mts +1 -0
  127. package/Select/utils/getOpenInteractionType.d.ts +1 -0
  128. package/Select/utils/getOpenInteractionType.js +18 -0
  129. package/Select/utils/getOpenInteractionType.mjs +12 -0
  130. package/Select/utils/index.d.mts +4 -0
  131. package/Select/utils/index.d.ts +4 -0
  132. package/Select/utils/index.js +40 -0
  133. package/Select/utils/index.mjs +4 -0
  134. package/Select/utils/isEmpty.d.mts +1 -0
  135. package/Select/utils/isEmpty.d.ts +1 -0
  136. package/Select/utils/isEmpty.js +9 -0
  137. package/Select/utils/isEmpty.mjs +3 -0
  138. package/Slider/Slider.d.mts +109 -77
  139. package/Slider/Slider.d.ts +109 -77
  140. package/Slider/Slider.js +42 -119
  141. package/Slider/Slider.mjs +42 -119
  142. package/Slider/sliderClasses.d.mts +7 -7
  143. package/Slider/sliderClasses.d.ts +7 -7
  144. package/Slider/useSlider.js +50 -14
  145. package/Slider/useSlider.mjs +50 -14
  146. package/Snackbar/Snackbar.d.mts +1 -27
  147. package/Snackbar/Snackbar.d.ts +1 -27
  148. package/Snackbar/Snackbar.js +5 -58
  149. package/Snackbar/Snackbar.mjs +5 -58
  150. package/SpeedDial/SpeedDial.d.mts +0 -13
  151. package/SpeedDial/SpeedDial.d.ts +0 -13
  152. package/SpeedDial/SpeedDial.js +15 -40
  153. package/SpeedDial/SpeedDial.mjs +15 -40
  154. package/SpeedDialAction/SpeedDialAction.d.mts +0 -28
  155. package/SpeedDialAction/SpeedDialAction.d.ts +0 -28
  156. package/SpeedDialAction/SpeedDialAction.js +5 -46
  157. package/SpeedDialAction/SpeedDialAction.mjs +5 -46
  158. package/Step/Step.js +7 -5
  159. package/Step/Step.mjs +7 -5
  160. package/StepButton/StepButton.js +16 -6
  161. package/StepButton/StepButton.mjs +16 -6
  162. package/StepConnector/StepConnector.js +2 -2
  163. package/StepConnector/StepConnector.mjs +2 -2
  164. package/StepContent/StepContent.js +2 -2
  165. package/StepContent/StepContent.mjs +2 -2
  166. package/StepLabel/StepLabel.js +2 -2
  167. package/StepLabel/StepLabel.mjs +2 -2
  168. package/Stepper/Stepper.js +44 -7
  169. package/Stepper/Stepper.mjs +44 -7
  170. package/Stepper/StepperContext.d.mts +7 -0
  171. package/Stepper/StepperContext.d.ts +7 -0
  172. package/Stepper/StepperContext.js +2 -1
  173. package/Stepper/StepperContext.mjs +1 -0
  174. package/Stepper/index.d.mts +0 -1
  175. package/Stepper/index.d.ts +0 -1
  176. package/Tab/Tab.js +0 -1
  177. package/Tab/Tab.mjs +0 -1
  178. package/TablePagination/TablePagination.d.mts +1 -1
  179. package/TablePagination/TablePagination.d.ts +1 -1
  180. package/TablePagination/TablePagination.js +4 -2
  181. package/TablePagination/TablePagination.mjs +4 -2
  182. package/Tabs/Tabs.d.mts +2 -33
  183. package/Tabs/Tabs.d.ts +2 -33
  184. package/Tabs/Tabs.js +54 -135
  185. package/Tabs/Tabs.mjs +54 -135
  186. package/TextField/TextField.d.mts +6 -49
  187. package/TextField/TextField.d.ts +6 -49
  188. package/TextField/TextField.js +18 -53
  189. package/TextField/TextField.mjs +18 -53
  190. package/Tooltip/Tooltip.d.mts +1 -55
  191. package/Tooltip/Tooltip.d.ts +1 -55
  192. package/Tooltip/Tooltip.js +9 -87
  193. package/Tooltip/Tooltip.mjs +9 -87
  194. package/Typography/Typography.d.mts +1 -6
  195. package/Typography/Typography.d.ts +1 -6
  196. package/Typography/Typography.js +3 -19
  197. package/Typography/Typography.mjs +3 -19
  198. package/Typography/typographyClasses.d.mts +0 -5
  199. package/Typography/typographyClasses.d.ts +0 -5
  200. package/Typography/typographyClasses.js +1 -1
  201. package/Typography/typographyClasses.mjs +1 -1
  202. package/index.d.mts +0 -2
  203. package/index.d.ts +0 -2
  204. package/index.js +1 -9
  205. package/index.mjs +1 -2
  206. package/locale/amET.js +4 -1
  207. package/locale/amET.mjs +3 -1
  208. package/locale/arEG.js +4 -1
  209. package/locale/arEG.mjs +3 -1
  210. package/locale/arSA.js +4 -1
  211. package/locale/arSA.mjs +3 -1
  212. package/locale/arSD.js +4 -1
  213. package/locale/arSD.mjs +3 -1
  214. package/locale/beBY.js +4 -1
  215. package/locale/beBY.mjs +3 -1
  216. package/locale/bnBD.js +4 -1
  217. package/locale/bnBD.mjs +3 -1
  218. package/locale/caES.js +4 -1
  219. package/locale/caES.mjs +3 -1
  220. package/locale/csCZ.js +4 -1
  221. package/locale/csCZ.mjs +3 -1
  222. package/locale/daDK.js +4 -1
  223. package/locale/daDK.mjs +3 -1
  224. package/locale/deDE.js +4 -1
  225. package/locale/deDE.mjs +3 -1
  226. package/locale/elGR.js +4 -1
  227. package/locale/elGR.mjs +3 -1
  228. package/locale/esES.js +4 -1
  229. package/locale/esES.mjs +3 -1
  230. package/locale/etEE.js +4 -1
  231. package/locale/etEE.mjs +3 -1
  232. package/locale/faIR.js +4 -1
  233. package/locale/faIR.mjs +3 -1
  234. package/locale/fiFI.js +4 -1
  235. package/locale/fiFI.mjs +3 -1
  236. package/locale/frFR.js +4 -1
  237. package/locale/frFR.mjs +3 -1
  238. package/locale/heIL.js +4 -1
  239. package/locale/heIL.mjs +3 -1
  240. package/locale/hiIN.js +4 -1
  241. package/locale/hiIN.mjs +3 -1
  242. package/locale/hrHR.js +5 -1
  243. package/locale/hrHR.mjs +4 -1
  244. package/locale/isIS.js +4 -1
  245. package/locale/isIS.mjs +3 -1
  246. package/locale/itIT.js +4 -1
  247. package/locale/itIT.mjs +3 -1
  248. package/locale/jaJP.js +4 -1
  249. package/locale/jaJP.mjs +3 -1
  250. package/locale/khKH.js +4 -1
  251. package/locale/khKH.mjs +3 -1
  252. package/locale/kkKZ.js +4 -1
  253. package/locale/kkKZ.mjs +3 -1
  254. package/locale/koKR.js +4 -1
  255. package/locale/koKR.mjs +3 -1
  256. package/locale/kuCKB.js +4 -1
  257. package/locale/kuCKB.mjs +3 -1
  258. package/locale/kuLatn.js +4 -1
  259. package/locale/kuLatn.mjs +3 -1
  260. package/locale/mkMK.js +5 -1
  261. package/locale/mkMK.mjs +4 -1
  262. package/locale/msMS.js +5 -1
  263. package/locale/msMS.mjs +4 -1
  264. package/locale/myMY.js +5 -1
  265. package/locale/myMY.mjs +4 -1
  266. package/locale/nbNO.js +4 -1
  267. package/locale/nbNO.mjs +3 -1
  268. package/locale/neNP.js +5 -1
  269. package/locale/neNP.mjs +4 -1
  270. package/locale/nlNL.js +4 -1
  271. package/locale/nlNL.mjs +3 -1
  272. package/locale/nnNO.js +4 -1
  273. package/locale/nnNO.mjs +3 -1
  274. package/locale/plPL.js +4 -1
  275. package/locale/plPL.mjs +3 -1
  276. package/locale/psAF.js +4 -1
  277. package/locale/psAF.mjs +3 -1
  278. package/locale/ptBR.js +4 -1
  279. package/locale/ptBR.mjs +3 -1
  280. package/locale/ptPT.js +4 -1
  281. package/locale/ptPT.mjs +3 -1
  282. package/locale/roRO.js +4 -1
  283. package/locale/roRO.mjs +3 -1
  284. package/locale/ruRU.js +4 -1
  285. package/locale/ruRU.mjs +3 -1
  286. package/locale/siLK.js +4 -1
  287. package/locale/siLK.mjs +3 -1
  288. package/locale/skSK.js +4 -1
  289. package/locale/skSK.mjs +3 -1
  290. package/locale/srRS.js +5 -1
  291. package/locale/srRS.mjs +4 -1
  292. package/locale/svSE.js +4 -1
  293. package/locale/svSE.mjs +3 -1
  294. package/locale/thTH.js +4 -1
  295. package/locale/thTH.mjs +3 -1
  296. package/locale/tlTL.js +5 -1
  297. package/locale/tlTL.mjs +4 -1
  298. package/locale/trTR.js +4 -1
  299. package/locale/trTR.mjs +3 -1
  300. package/locale/ukUA.js +4 -1
  301. package/locale/ukUA.mjs +3 -1
  302. package/locale/urPK.js +4 -1
  303. package/locale/urPK.mjs +3 -1
  304. package/locale/utils/buildFormatNumber.d.mts +2 -0
  305. package/locale/utils/buildFormatNumber.d.ts +2 -0
  306. package/locale/utils/buildFormatNumber.js +23 -0
  307. package/locale/utils/buildFormatNumber.mjs +17 -0
  308. package/locale/viVN.js +4 -1
  309. package/locale/viVN.mjs +3 -1
  310. package/locale/zhCN.js +4 -1
  311. package/locale/zhCN.mjs +3 -1
  312. package/locale/zhHK.js +4 -1
  313. package/locale/zhHK.mjs +3 -1
  314. package/locale/zhTW.js +4 -1
  315. package/locale/zhTW.mjs +3 -1
  316. package/package.json +236 -236
  317. package/styles/components.d.mts +0 -5
  318. package/styles/components.d.ts +0 -5
  319. package/styles/overrides.d.mts +0 -2
  320. package/styles/overrides.d.ts +0 -2
  321. package/styles/props.d.mts +0 -2
  322. package/styles/props.d.ts +0 -2
  323. package/themeCssVarsAugmentation/index.js +5 -0
  324. package/themeCssVarsAugmentation/index.mjs +5 -0
  325. package/useAutocomplete/useAutocomplete.d.mts +0 -12
  326. package/useAutocomplete/useAutocomplete.d.ts +0 -12
  327. package/useAutocomplete/useAutocomplete.js +53 -28
  328. package/useAutocomplete/useAutocomplete.mjs +53 -28
  329. package/utils/index.d.mts +2 -0
  330. package/utils/index.d.ts +2 -0
  331. package/utils/index.js +14 -0
  332. package/utils/index.mjs +2 -0
  333. package/utils/useRovingTabIndex.d.mts +2 -0
  334. package/utils/useRovingTabIndex.d.ts +2 -0
  335. package/utils/useRovingTabIndex.js +9 -0
  336. package/utils/useRovingTabIndex.mjs +2 -0
  337. package/version/index.js +2 -2
  338. package/version/index.mjs +2 -2
  339. package/GridLegacy/GridLegacy.d.mts +0 -160
  340. package/GridLegacy/GridLegacy.d.ts +0 -160
  341. package/GridLegacy/GridLegacy.js +0 -601
  342. package/GridLegacy/GridLegacy.mjs +0 -588
  343. package/GridLegacy/GridLegacyContext.js +0 -17
  344. package/GridLegacy/GridLegacyContext.mjs +0 -12
  345. package/GridLegacy/gridLegacyClasses.d.mts +0 -48
  346. package/GridLegacy/gridLegacyClasses.d.ts +0 -48
  347. package/GridLegacy/gridLegacyClasses.js +0 -27
  348. package/GridLegacy/gridLegacyClasses.mjs +0 -19
  349. package/GridLegacy/index.d.mts +0 -4
  350. package/GridLegacy/index.d.ts +0 -4
  351. package/GridLegacy/index.js +0 -35
  352. package/GridLegacy/index.mjs +0 -3
package/Menu/Menu.d.mts CHANGED
@@ -101,12 +101,6 @@ export interface MenuProps extends StandardProps<Omit<PopoverProps, 'slots' | 's
101
101
  * @default false
102
102
  */
103
103
  disableAutoFocusItem?: boolean | undefined;
104
- /**
105
- * Props applied to the [`MenuList`](https://mui.com/material-ui/api/menu-list/) element.
106
- * @deprecated use the `slotProps.list` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
107
- * @default {}
108
- */
109
- MenuListProps?: Partial<MenuListProps> | undefined;
110
104
  /**
111
105
  * Callback fired when the component requests to be closed.
112
106
  *
@@ -131,13 +125,6 @@ export interface MenuProps extends StandardProps<Omit<PopoverProps, 'slots' | 's
131
125
  * @default 'auto'
132
126
  */
133
127
  transitionDuration?: TransitionProps['timeout'] | 'auto' | undefined;
134
- /**
135
- * Props applied to the transition element.
136
- * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
137
- * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
138
- * @default {}
139
- */
140
- TransitionProps?: TransitionProps | undefined;
141
128
  /**
142
129
  * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.
143
130
  * @default 'selectedMenu'
package/Menu/Menu.d.ts CHANGED
@@ -101,12 +101,6 @@ export interface MenuProps extends StandardProps<Omit<PopoverProps, 'slots' | 's
101
101
  * @default false
102
102
  */
103
103
  disableAutoFocusItem?: boolean | undefined;
104
- /**
105
- * Props applied to the [`MenuList`](https://mui.com/material-ui/api/menu-list/) element.
106
- * @deprecated use the `slotProps.list` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
107
- * @default {}
108
- */
109
- MenuListProps?: Partial<MenuListProps> | undefined;
110
104
  /**
111
105
  * Callback fired when the component requests to be closed.
112
106
  *
@@ -131,13 +125,6 @@ export interface MenuProps extends StandardProps<Omit<PopoverProps, 'slots' | 's
131
125
  * @default 'auto'
132
126
  */
133
127
  transitionDuration?: TransitionProps['timeout'] | 'auto' | undefined;
134
- /**
135
- * Props applied to the transition element.
136
- * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
137
- * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
138
- * @default {}
139
- */
140
- TransitionProps?: TransitionProps | undefined;
141
128
  /**
142
129
  * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.
143
130
  * @default 'selectedMenu'
package/Menu/Menu.js CHANGED
@@ -10,7 +10,6 @@ exports.default = exports.MenuPaper = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _reactIs = require("react-is");
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _clsx = _interopRequireDefault(require("clsx"));
14
13
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
14
  var _HTMLElementType = _interopRequireDefault(require("@mui/utils/HTMLElementType"));
16
15
  var _RtlProvider = require("@mui/system/RtlProvider");
@@ -75,16 +74,10 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
75
74
  children,
76
75
  className,
77
76
  disableAutoFocusItem = false,
78
- MenuListProps = {},
79
77
  onClose,
80
78
  open,
81
- PaperProps = {},
82
79
  PopoverClasses,
83
80
  transitionDuration = 'auto',
84
- TransitionProps: {
85
- onEntering,
86
- ...TransitionProps
87
- } = {},
88
81
  variant = 'selectedMenu',
89
82
  slots = {},
90
83
  slotProps = {},
@@ -95,25 +88,18 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
95
88
  ...props,
96
89
  autoFocus,
97
90
  disableAutoFocusItem,
98
- MenuListProps,
99
- onEntering,
100
- PaperProps,
101
91
  transitionDuration,
102
- TransitionProps,
103
92
  variant
104
93
  };
105
94
  const classes = useUtilityClasses(ownerState);
106
95
  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;
107
96
  const menuListActionsRef = React.useRef(null);
108
- const handleEntering = (element, isAppearing) => {
97
+ const handleEntering = (element, _isAppearing) => {
109
98
  if (menuListActionsRef.current) {
110
99
  menuListActionsRef.current.adjustStyleForScrollbar(element, {
111
100
  direction: isRtl ? 'rtl' : 'ltr'
112
101
  });
113
102
  }
114
- if (onEntering) {
115
- onEntering(element, isAppearing);
116
- }
117
103
  };
118
104
  const handleListKeyDown = event => {
119
105
  if (event.key === 'Tab') {
@@ -152,12 +138,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
152
138
  });
153
139
  const externalForwardedProps = {
154
140
  slots,
155
- slotProps: {
156
- list: MenuListProps,
157
- transition: TransitionProps,
158
- paper: PaperProps,
159
- ...slotProps
160
- }
141
+ slotProps
161
142
  };
162
143
  const rootSlotProps = (0, _useSlotProps.default)({
163
144
  elementType: slots.root,
@@ -173,7 +154,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
173
154
  ownerState
174
155
  });
175
156
  const [ListSlot, listSlotProps] = (0, _useSlot.default)('list', {
176
- className: (0, _clsx.default)(classes.list, MenuListProps.className),
157
+ className: classes.list,
177
158
  elementType: MenuMenuList,
178
159
  shouldForwardComponentProp: true,
179
160
  externalForwardedProps,
@@ -186,7 +167,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
186
167
  }),
187
168
  ownerState
188
169
  });
189
- const resolvedTransitionProps = typeof externalForwardedProps.slotProps.transition === 'function' ? externalForwardedProps.slotProps.transition(ownerState) : externalForwardedProps.slotProps.transition;
170
+ const resolvedTransitionProps = typeof slotProps.transition === 'function' ? slotProps.transition(ownerState) : slotProps.transition;
190
171
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuRoot, {
191
172
  onClose: onClose,
192
173
  anchorOrigin: {
@@ -198,10 +179,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
198
179
  root: slots.root,
199
180
  paper: PaperSlot,
200
181
  backdrop: slots.backdrop,
201
- ...(slots.transition && {
202
- // TODO: pass `slots.transition` directly once `TransitionComponent` is removed from Popover
203
- transition: slots.transition
204
- })
182
+ transition: slots.transition
205
183
  },
206
184
  slotProps: {
207
185
  root: rootSlotProps,
@@ -269,12 +247,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
269
247
  * @default false
270
248
  */
271
249
  disableAutoFocusItem: _propTypes.default.bool,
272
- /**
273
- * Props applied to the [`MenuList`](https://mui.com/material-ui/api/menu-list/) element.
274
- * @deprecated use the `slotProps.list` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
275
- * @default {}
276
- */
277
- MenuListProps: _propTypes.default.object,
278
250
  /**
279
251
  * Callback fired when the component requests to be closed.
280
252
  *
@@ -286,10 +258,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
286
258
  * If `true`, the component is shown.
287
259
  */
288
260
  open: _propTypes.default.bool.isRequired,
289
- /**
290
- * @ignore
291
- */
292
- PaperProps: _propTypes.default.object,
293
261
  /**
294
262
  * `classes` prop applied to the [`Popover`](https://mui.com/material-ui/api/popover/) element.
295
263
  */
@@ -329,13 +297,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
329
297
  enter: _propTypes.default.number,
330
298
  exit: _propTypes.default.number
331
299
  })]),
332
- /**
333
- * Props applied to the transition element.
334
- * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
335
- * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
336
- * @default {}
337
- */
338
- TransitionProps: _propTypes.default.object,
339
300
  /**
340
301
  * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.
341
302
  * @default 'selectedMenu'
package/Menu/Menu.mjs CHANGED
@@ -3,7 +3,6 @@
3
3
  import * as React from 'react';
4
4
  import { isFragment } from 'react-is';
5
5
  import PropTypes from 'prop-types';
6
- import clsx from 'clsx';
7
6
  import composeClasses from '@mui/utils/composeClasses';
8
7
  import HTMLElementType from '@mui/utils/HTMLElementType';
9
8
  import { useRtl } from '@mui/system/RtlProvider';
@@ -68,16 +67,10 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
68
67
  children,
69
68
  className,
70
69
  disableAutoFocusItem = false,
71
- MenuListProps = {},
72
70
  onClose,
73
71
  open,
74
- PaperProps = {},
75
72
  PopoverClasses,
76
73
  transitionDuration = 'auto',
77
- TransitionProps: {
78
- onEntering,
79
- ...TransitionProps
80
- } = {},
81
74
  variant = 'selectedMenu',
82
75
  slots = {},
83
76
  slotProps = {},
@@ -88,25 +81,18 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
88
81
  ...props,
89
82
  autoFocus,
90
83
  disableAutoFocusItem,
91
- MenuListProps,
92
- onEntering,
93
- PaperProps,
94
84
  transitionDuration,
95
- TransitionProps,
96
85
  variant
97
86
  };
98
87
  const classes = useUtilityClasses(ownerState);
99
88
  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;
100
89
  const menuListActionsRef = React.useRef(null);
101
- const handleEntering = (element, isAppearing) => {
90
+ const handleEntering = (element, _isAppearing) => {
102
91
  if (menuListActionsRef.current) {
103
92
  menuListActionsRef.current.adjustStyleForScrollbar(element, {
104
93
  direction: isRtl ? 'rtl' : 'ltr'
105
94
  });
106
95
  }
107
- if (onEntering) {
108
- onEntering(element, isAppearing);
109
- }
110
96
  };
111
97
  const handleListKeyDown = event => {
112
98
  if (event.key === 'Tab') {
@@ -145,12 +131,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
145
131
  });
146
132
  const externalForwardedProps = {
147
133
  slots,
148
- slotProps: {
149
- list: MenuListProps,
150
- transition: TransitionProps,
151
- paper: PaperProps,
152
- ...slotProps
153
- }
134
+ slotProps
154
135
  };
155
136
  const rootSlotProps = useSlotProps({
156
137
  elementType: slots.root,
@@ -166,7 +147,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
166
147
  ownerState
167
148
  });
168
149
  const [ListSlot, listSlotProps] = useSlot('list', {
169
- className: clsx(classes.list, MenuListProps.className),
150
+ className: classes.list,
170
151
  elementType: MenuMenuList,
171
152
  shouldForwardComponentProp: true,
172
153
  externalForwardedProps,
@@ -179,7 +160,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
179
160
  }),
180
161
  ownerState
181
162
  });
182
- const resolvedTransitionProps = typeof externalForwardedProps.slotProps.transition === 'function' ? externalForwardedProps.slotProps.transition(ownerState) : externalForwardedProps.slotProps.transition;
163
+ const resolvedTransitionProps = typeof slotProps.transition === 'function' ? slotProps.transition(ownerState) : slotProps.transition;
183
164
  return /*#__PURE__*/_jsx(MenuRoot, {
184
165
  onClose: onClose,
185
166
  anchorOrigin: {
@@ -191,10 +172,7 @@ const Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {
191
172
  root: slots.root,
192
173
  paper: PaperSlot,
193
174
  backdrop: slots.backdrop,
194
- ...(slots.transition && {
195
- // TODO: pass `slots.transition` directly once `TransitionComponent` is removed from Popover
196
- transition: slots.transition
197
- })
175
+ transition: slots.transition
198
176
  },
199
177
  slotProps: {
200
178
  root: rootSlotProps,
@@ -262,12 +240,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
262
240
  * @default false
263
241
  */
264
242
  disableAutoFocusItem: PropTypes.bool,
265
- /**
266
- * Props applied to the [`MenuList`](https://mui.com/material-ui/api/menu-list/) element.
267
- * @deprecated use the `slotProps.list` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
268
- * @default {}
269
- */
270
- MenuListProps: PropTypes.object,
271
243
  /**
272
244
  * Callback fired when the component requests to be closed.
273
245
  *
@@ -279,10 +251,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
279
251
  * If `true`, the component is shown.
280
252
  */
281
253
  open: PropTypes.bool.isRequired,
282
- /**
283
- * @ignore
284
- */
285
- PaperProps: PropTypes.object,
286
254
  /**
287
255
  * `classes` prop applied to the [`Popover`](https://mui.com/material-ui/api/popover/) element.
288
256
  */
@@ -322,13 +290,6 @@ process.env.NODE_ENV !== "production" ? Menu.propTypes /* remove-proptypes */ =
322
290
  enter: PropTypes.number,
323
291
  exit: PropTypes.number
324
292
  })]),
325
- /**
326
- * Props applied to the transition element.
327
- * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
328
- * @deprecated use the `slotProps.transition` prop instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](https://mui.com/material-ui/migration/migrating-from-deprecated-apis/) for more details.
329
- * @default {}
330
- */
331
- TransitionProps: PropTypes.object,
332
293
  /**
333
294
  * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.
334
295
  * @default 'selectedMenu'
@@ -23,7 +23,25 @@ var _Divider = require("../Divider");
23
23
  var _ListItemIcon = require("../ListItemIcon");
24
24
  var _ListItemText = require("../ListItemText");
25
25
  var _menuItemClasses = _interopRequireWildcard(require("./menuItemClasses"));
26
+ var _Select = require("../Select");
26
27
  var _jsxRuntime = require("react/jsx-runtime");
28
+ /**
29
+ * If autoFocus is an object, it will attempt to call `element.focus()` with the options argument.
30
+ * If the browser doesn't support the options argument, it will fall back to a simple `element.focus()` call.
31
+ */function focusWithVisible(element, focusSource) {
32
+ if (focusSource == null) {
33
+ element.focus();
34
+ return;
35
+ }
36
+ try {
37
+ element.focus({
38
+ focusVisible: focusSource === 'keyboard'
39
+ });
40
+ } catch (error) {
41
+ // If the browser doesn't support the focus options argument, fall back to a simple focus call.
42
+ element.focus();
43
+ }
44
+ }
27
45
  const overridesResolver = (props, styles) => {
28
46
  const {
29
47
  ownerState
@@ -170,6 +188,7 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {
170
188
  className,
171
189
  ...other
172
190
  } = props;
191
+ const focusSource = (0, _Select.useSelectFocusSource)();
173
192
  const context = React.useContext(_ListContext.default);
174
193
  const childContext = React.useMemo(() => ({
175
194
  dense: dense || context.dense || false,
@@ -179,11 +198,12 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {
179
198
  (0, _useEnhancedEffect.default)(() => {
180
199
  if (autoFocus) {
181
200
  if (menuItemRef.current) {
182
- menuItemRef.current.focus();
201
+ focusWithVisible(menuItemRef.current, focusSource);
183
202
  } else if (process.env.NODE_ENV !== 'production') {
184
203
  console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');
185
204
  }
186
205
  }
206
+ // eslint-disable-next-line react-hooks/exhaustive-deps
187
207
  }, [autoFocus]);
188
208
  const ownerState = {
189
209
  ...props,
@@ -16,7 +16,27 @@ import { dividerClasses } from "../Divider/index.mjs";
16
16
  import { listItemIconClasses } from "../ListItemIcon/index.mjs";
17
17
  import { listItemTextClasses } from "../ListItemText/index.mjs";
18
18
  import menuItemClasses, { getMenuItemUtilityClass } from "./menuItemClasses.mjs";
19
+ import { useSelectFocusSource } from "../Select/index.mjs";
20
+
21
+ /**
22
+ * If autoFocus is an object, it will attempt to call `element.focus()` with the options argument.
23
+ * If the browser doesn't support the options argument, it will fall back to a simple `element.focus()` call.
24
+ */
19
25
  import { jsx as _jsx } from "react/jsx-runtime";
26
+ function focusWithVisible(element, focusSource) {
27
+ if (focusSource == null) {
28
+ element.focus();
29
+ return;
30
+ }
31
+ try {
32
+ element.focus({
33
+ focusVisible: focusSource === 'keyboard'
34
+ });
35
+ } catch (error) {
36
+ // If the browser doesn't support the focus options argument, fall back to a simple focus call.
37
+ element.focus();
38
+ }
39
+ }
20
40
  export const overridesResolver = (props, styles) => {
21
41
  const {
22
42
  ownerState
@@ -162,6 +182,7 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {
162
182
  className,
163
183
  ...other
164
184
  } = props;
185
+ const focusSource = useSelectFocusSource();
165
186
  const context = React.useContext(ListContext);
166
187
  const childContext = React.useMemo(() => ({
167
188
  dense: dense || context.dense || false,
@@ -171,11 +192,12 @@ const MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {
171
192
  useEnhancedEffect(() => {
172
193
  if (autoFocus) {
173
194
  if (menuItemRef.current) {
174
- menuItemRef.current.focus();
195
+ focusWithVisible(menuItemRef.current, focusSource);
175
196
  } else if (process.env.NODE_ENV !== 'production') {
176
197
  console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');
177
198
  }
178
199
  }
200
+ // eslint-disable-next-line react-hooks/exhaustive-deps
179
201
  }, [autoFocus]);
180
202
  const ownerState = {
181
203
  ...props,
@@ -10,6 +10,7 @@ exports.default = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  var _reactIs = require("react-is");
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _useRovingTabIndex = _interopRequireDefault(require("../utils/useRovingTabIndex"));
13
14
  var _ownerDocument = _interopRequireDefault(require("../utils/ownerDocument"));
14
15
  var _List = _interopRequireDefault(require("../List"));
15
16
  var _getActiveElement = _interopRequireDefault(require("../utils/getActiveElement"));
@@ -18,24 +19,6 @@ var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
18
19
  var _useEnhancedEffect = _interopRequireDefault(require("../utils/useEnhancedEffect"));
19
20
  var _utils = require("../utils");
20
21
  var _jsxRuntime = require("react/jsx-runtime");
21
- function nextItem(list, item, disableListWrap) {
22
- if (list === item) {
23
- return list.firstChild;
24
- }
25
- if (item && item.nextElementSibling) {
26
- return item.nextElementSibling;
27
- }
28
- return disableListWrap ? null : list.firstChild;
29
- }
30
- function previousItem(list, item, disableListWrap) {
31
- if (list === item) {
32
- return disableListWrap ? list.firstChild : list.lastChild;
33
- }
34
- if (item && item.previousElementSibling) {
35
- return item.previousElementSibling;
36
- }
37
- return disableListWrap ? null : list.lastChild;
38
- }
39
22
  function textCriteriaMatches(nextFocus, textCriteria) {
40
23
  if (textCriteria === undefined) {
41
24
  return true;
@@ -54,29 +37,20 @@ function textCriteriaMatches(nextFocus, textCriteria) {
54
37
  }
55
38
  return text.startsWith(textCriteria.keys.join(''));
56
39
  }
57
- function moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {
58
- let wrappedOnce = false;
59
- let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);
60
- while (nextFocus) {
61
- // Prevent infinite loop.
62
- if (nextFocus === list.firstChild) {
63
- if (wrappedOnce) {
64
- return false;
65
- }
66
- wrappedOnce = true;
67
- }
68
-
69
- // Same logic as useAutocomplete.js
70
- const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';
71
- if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {
72
- // Move to the next element.
73
- nextFocus = traversalFunction(list, nextFocus, disableListWrap);
74
- } else {
75
- nextFocus.focus();
76
- return true;
77
- }
40
+ function shouldFocusWithTextCriteria(element, criteria, disabledItemsFocusable) {
41
+ if (!textCriteriaMatches(element, criteria)) {
42
+ return false;
43
+ }
44
+ return shouldFocus(element, disabledItemsFocusable);
45
+ }
46
+ function shouldFocus(element, disabledItemsFocusable) {
47
+ if (!element || !element.hasAttribute('tabindex')) {
48
+ return false;
49
+ }
50
+ if (disabledItemsFocusable) {
51
+ return true;
78
52
  }
79
- return false;
53
+ return !element.disabled && element.getAttribute('aria-disabled') !== 'true';
80
54
  }
81
55
 
82
56
  /**
@@ -127,65 +101,6 @@ const MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {
127
101
  return listRef.current;
128
102
  }
129
103
  }), []);
130
- const handleKeyDown = event => {
131
- const list = listRef.current;
132
- const key = event.key;
133
- const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
134
- if (isModifierKeyPressed) {
135
- if (onKeyDown) {
136
- onKeyDown(event);
137
- }
138
- return;
139
- }
140
-
141
- /**
142
- * @type {Element} - will always be defined since we are in a keydown handler
143
- * attached to an element. A keydown event is either dispatched to the activeElement
144
- * or document.body or document.documentElement. Only the first case will
145
- * trigger this specific handler.
146
- */
147
- const currentFocus = (0, _getActiveElement.default)((0, _ownerDocument.default)(list));
148
- if (key === 'ArrowDown') {
149
- // Prevent scroll of the page
150
- event.preventDefault();
151
- moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);
152
- } else if (key === 'ArrowUp') {
153
- event.preventDefault();
154
- moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);
155
- } else if (key === 'Home') {
156
- event.preventDefault();
157
- moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);
158
- } else if (key === 'End') {
159
- event.preventDefault();
160
- moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);
161
- } else if (key.length === 1) {
162
- const criteria = textCriteriaRef.current;
163
- const lowerKey = key.toLowerCase();
164
- const currTime = performance.now();
165
- if (criteria.keys.length > 0) {
166
- // Reset
167
- if (currTime - criteria.lastTime > 500) {
168
- criteria.keys = [];
169
- criteria.repeating = true;
170
- criteria.previousKeyMatched = true;
171
- } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {
172
- criteria.repeating = false;
173
- }
174
- }
175
- criteria.lastTime = currTime;
176
- criteria.keys.push(lowerKey);
177
- const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);
178
- if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {
179
- event.preventDefault();
180
- } else {
181
- criteria.previousKeyMatched = false;
182
- }
183
- }
184
- if (onKeyDown) {
185
- onKeyDown(event);
186
- }
187
- };
188
- const handleRef = (0, _useForkRef.default)(listRef, ref);
189
104
 
190
105
  /**
191
106
  * the index of the item should receive focus
@@ -227,25 +142,78 @@ const MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {
227
142
  }
228
143
  }
229
144
  });
145
+ const {
146
+ focusNext,
147
+ getContainerProps,
148
+ getItemProps
149
+ } = (0, _useRovingTabIndex.default)({
150
+ focusableIndex: activeItemIndex,
151
+ orientation: 'vertical',
152
+ shouldWrap: !disableListWrap,
153
+ shouldFocus: element => shouldFocus(element, disabledItemsFocusable)
154
+ });
155
+ const rovingTabIndexContainerProps = getContainerProps();
156
+ const handleRef = (0, _useForkRef.default)(listRef, rovingTabIndexContainerProps.ref, ref);
157
+ let focusableIndex = 0;
230
158
  const items = React.Children.map(children, (child, index) => {
231
- if (index === activeItemIndex) {
232
- const newChildProps = {};
233
- if (autoFocusItem) {
234
- newChildProps.autoFocus = true;
159
+ if (! /*#__PURE__*/React.isValidElement(child) || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight) {
160
+ return child;
161
+ }
162
+ const rovingTabIndexItemProps = getItemProps(focusableIndex, child.ref);
163
+ const newChildProps = {
164
+ ref: rovingTabIndexItemProps.ref
165
+ };
166
+ if (child.props.tabIndex === undefined && variant === 'selectedMenu') {
167
+ newChildProps.tabIndex = rovingTabIndexItemProps.tabIndex;
168
+ }
169
+ if (index === activeItemIndex && autoFocusItem) {
170
+ newChildProps.autoFocus = true;
171
+ }
172
+ focusableIndex += 1;
173
+ return /*#__PURE__*/React.cloneElement(child, newChildProps);
174
+ });
175
+ const handleKeyDown = event => {
176
+ const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;
177
+ if (isModifierKeyPressed && onKeyDown) {
178
+ onKeyDown(event);
179
+ return;
180
+ }
181
+ rovingTabIndexContainerProps.onKeyDown(event);
182
+ if (event.key.length === 1) {
183
+ const criteria = textCriteriaRef.current;
184
+ const lowerKey = event.key.toLowerCase();
185
+ const currTime = performance.now();
186
+ if (criteria.keys.length > 0) {
187
+ // Reset
188
+ if (currTime - criteria.lastTime > 500) {
189
+ criteria.keys = [];
190
+ criteria.repeating = true;
191
+ criteria.previousKeyMatched = true;
192
+ } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {
193
+ criteria.repeating = false;
194
+ }
235
195
  }
236
- if (child.props.tabIndex === undefined && variant === 'selectedMenu') {
237
- newChildProps.tabIndex = 0;
196
+ criteria.lastTime = currTime;
197
+ criteria.keys.push(lowerKey);
198
+ const currentFocus = (0, _getActiveElement.default)((0, _ownerDocument.default)(listRef.current));
199
+ const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);
200
+ if (criteria.previousKeyMatched && (keepFocusOnCurrent || focusNext(element => shouldFocusWithTextCriteria(element, criteria, disabledItemsFocusable)) !== -1)) {
201
+ event.preventDefault();
202
+ } else {
203
+ criteria.previousKeyMatched = false;
238
204
  }
239
- return /*#__PURE__*/React.cloneElement(child, newChildProps);
240
205
  }
241
- return child;
242
- });
206
+ if (onKeyDown) {
207
+ onKeyDown(event);
208
+ }
209
+ };
243
210
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_List.default, {
244
211
  role: "menu",
245
212
  ref: handleRef,
246
213
  className: className,
247
214
  onKeyDown: handleKeyDown,
248
- tabIndex: autoFocus ? 0 : -1,
215
+ onFocus: rovingTabIndexContainerProps.onFocus,
216
+ tabIndex: -1,
249
217
  ...other,
250
218
  children: items
251
219
  });