@mui/material 9.0.0-beta.1 → 9.0.1

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 (419) hide show
  1. package/Accordion/Accordion.d.mts +3 -3
  2. package/Accordion/Accordion.d.ts +3 -3
  3. package/AccordionActions/AccordionActions.d.mts +2 -2
  4. package/AccordionActions/AccordionActions.d.ts +2 -2
  5. package/AccordionDetails/AccordionDetails.d.mts +2 -2
  6. package/AccordionDetails/AccordionDetails.d.ts +2 -2
  7. package/AccordionSummary/AccordionSummary.d.mts +3 -3
  8. package/AccordionSummary/AccordionSummary.d.ts +3 -3
  9. package/Alert/Alert.d.mts +3 -3
  10. package/Alert/Alert.d.ts +3 -3
  11. package/AlertTitle/AlertTitle.d.mts +3 -3
  12. package/AlertTitle/AlertTitle.d.ts +3 -3
  13. package/AppBar/AppBar.d.mts +3 -3
  14. package/AppBar/AppBar.d.ts +3 -3
  15. package/Autocomplete/Autocomplete.d.mts +2 -2
  16. package/Autocomplete/Autocomplete.d.ts +2 -2
  17. package/Autocomplete/Autocomplete.js +65 -11
  18. package/Autocomplete/Autocomplete.mjs +65 -11
  19. package/Avatar/Avatar.d.mts +2 -2
  20. package/Avatar/Avatar.d.ts +2 -2
  21. package/Avatar/Avatar.js +4 -0
  22. package/Avatar/Avatar.mjs +4 -0
  23. package/AvatarGroup/AvatarGroup.d.mts +2 -2
  24. package/AvatarGroup/AvatarGroup.d.ts +2 -2
  25. package/Backdrop/Backdrop.d.mts +3 -3
  26. package/Backdrop/Backdrop.d.ts +3 -3
  27. package/Badge/Badge.d.mts +3 -3
  28. package/Badge/Badge.d.ts +3 -3
  29. package/Badge/Badge.js +3 -0
  30. package/Badge/Badge.mjs +3 -0
  31. package/BottomNavigation/BottomNavigation.d.mts +2 -2
  32. package/BottomNavigation/BottomNavigation.d.ts +2 -2
  33. package/BottomNavigationAction/BottomNavigationAction.d.mts +3 -3
  34. package/BottomNavigationAction/BottomNavigationAction.d.ts +3 -3
  35. package/Box/Box.d.mts +3 -3
  36. package/Box/Box.d.ts +3 -3
  37. package/Breadcrumbs/Breadcrumbs.d.mts +3 -3
  38. package/Breadcrumbs/Breadcrumbs.d.ts +3 -3
  39. package/Button/Button.d.mts +6 -6
  40. package/Button/Button.d.ts +6 -6
  41. package/Button/Button.js +19 -2
  42. package/Button/Button.mjs +19 -2
  43. package/ButtonBase/ButtonBase.d.mts +9 -2
  44. package/ButtonBase/ButtonBase.d.ts +9 -2
  45. package/ButtonBase/ButtonBase.js +5 -2
  46. package/ButtonBase/ButtonBase.mjs +5 -2
  47. package/ButtonGroup/ButtonGroup.d.mts +2 -2
  48. package/ButtonGroup/ButtonGroup.d.ts +2 -2
  49. package/CHANGELOG.md +160 -1245
  50. package/Card/Card.d.mts +3 -3
  51. package/Card/Card.d.ts +3 -3
  52. package/CardActionArea/CardActionArea.d.mts +3 -3
  53. package/CardActionArea/CardActionArea.d.ts +3 -3
  54. package/CardActions/CardActions.d.mts +2 -2
  55. package/CardActions/CardActions.d.ts +2 -2
  56. package/CardContent/CardContent.d.mts +2 -2
  57. package/CardContent/CardContent.d.ts +2 -2
  58. package/CardHeader/CardHeader.d.mts +2 -2
  59. package/CardHeader/CardHeader.d.ts +2 -2
  60. package/CardMedia/CardMedia.d.mts +2 -2
  61. package/CardMedia/CardMedia.d.ts +2 -2
  62. package/Checkbox/Checkbox.d.mts +4 -4
  63. package/Checkbox/Checkbox.d.ts +4 -4
  64. package/Checkbox/Checkbox.js +2 -1
  65. package/Checkbox/Checkbox.mjs +2 -1
  66. package/Chip/Chip.d.mts +2 -2
  67. package/Chip/Chip.d.ts +2 -2
  68. package/CircularProgress/CircularProgress.d.mts +14 -4
  69. package/CircularProgress/CircularProgress.d.ts +14 -4
  70. package/CircularProgress/CircularProgress.js +33 -6
  71. package/CircularProgress/CircularProgress.mjs +33 -6
  72. package/ClickAwayListener/ClickAwayListener.d.mts +3 -3
  73. package/ClickAwayListener/ClickAwayListener.d.ts +3 -3
  74. package/ClickAwayListener/ClickAwayListener.js +6 -9
  75. package/ClickAwayListener/ClickAwayListener.mjs +6 -9
  76. package/Collapse/Collapse.d.mts +5 -5
  77. package/Collapse/Collapse.d.ts +5 -5
  78. package/Collapse/Collapse.js +6 -18
  79. package/Collapse/Collapse.mjs +7 -19
  80. package/Container/Container.d.mts +2 -2
  81. package/Container/Container.d.ts +2 -2
  82. package/CssBaseline/CssBaseline.d.mts +2 -2
  83. package/CssBaseline/CssBaseline.d.ts +2 -2
  84. package/Dialog/Dialog.d.mts +3 -3
  85. package/Dialog/Dialog.d.ts +3 -3
  86. package/Dialog/Dialog.js +11 -6
  87. package/Dialog/Dialog.mjs +11 -6
  88. package/DialogActions/DialogActions.d.mts +2 -2
  89. package/DialogActions/DialogActions.d.ts +2 -2
  90. package/DialogContent/DialogContent.d.mts +2 -2
  91. package/DialogContent/DialogContent.d.ts +2 -2
  92. package/DialogContentText/DialogContentText.d.mts +3 -3
  93. package/DialogContentText/DialogContentText.d.ts +3 -3
  94. package/DialogTitle/DialogTitle.d.mts +3 -3
  95. package/DialogTitle/DialogTitle.d.ts +3 -3
  96. package/Divider/Divider.d.mts +4 -4
  97. package/Divider/Divider.d.ts +4 -4
  98. package/Drawer/Drawer.d.mts +3 -3
  99. package/Drawer/Drawer.d.ts +3 -3
  100. package/Drawer/Drawer.js +19 -8
  101. package/Drawer/Drawer.mjs +19 -8
  102. package/Fab/Fab.d.mts +3 -3
  103. package/Fab/Fab.d.ts +3 -3
  104. package/Fab/Fab.js +7 -1
  105. package/Fab/Fab.mjs +7 -1
  106. package/Fade/Fade.d.mts +3 -3
  107. package/Fade/Fade.d.ts +3 -3
  108. package/Fade/Fade.js +28 -32
  109. package/Fade/Fade.mjs +29 -33
  110. package/FilledInput/FilledInput.d.mts +7 -3
  111. package/FilledInput/FilledInput.d.ts +7 -3
  112. package/FilledInput/FilledInput.js +18 -20
  113. package/FilledInput/FilledInput.mjs +18 -20
  114. package/FormControl/FormControl.d.mts +7 -7
  115. package/FormControl/FormControl.d.ts +7 -7
  116. package/FormControl/useFormControl.d.mts +12 -2
  117. package/FormControl/useFormControl.d.ts +12 -2
  118. package/FormControl/useFormControl.js +13 -0
  119. package/FormControl/useFormControl.mjs +12 -0
  120. package/FormControlLabel/FormControlLabel.d.mts +4 -4
  121. package/FormControlLabel/FormControlLabel.d.ts +4 -4
  122. package/FormControlLabel/FormControlLabel.js +5 -8
  123. package/FormControlLabel/FormControlLabel.mjs +5 -8
  124. package/FormGroup/FormGroup.d.mts +3 -3
  125. package/FormGroup/FormGroup.d.ts +3 -3
  126. package/FormGroup/FormGroup.js +2 -5
  127. package/FormGroup/FormGroup.mjs +2 -5
  128. package/FormHelperText/FormHelperText.d.mts +3 -3
  129. package/FormHelperText/FormHelperText.d.ts +3 -3
  130. package/FormHelperText/FormHelperText.js +2 -5
  131. package/FormHelperText/FormHelperText.mjs +2 -5
  132. package/FormLabel/FormLabel.d.mts +5 -5
  133. package/FormLabel/FormLabel.d.ts +5 -5
  134. package/FormLabel/FormLabel.js +2 -5
  135. package/FormLabel/FormLabel.mjs +2 -5
  136. package/GlobalStyles/GlobalStyles.d.mts +2 -2
  137. package/GlobalStyles/GlobalStyles.d.ts +2 -2
  138. package/Grid/Grid.d.mts +2 -2
  139. package/Grid/Grid.d.ts +2 -2
  140. package/Grid/Grid.js +2 -2
  141. package/Grid/Grid.mjs +2 -2
  142. package/Grow/Grow.d.mts +5 -5
  143. package/Grow/Grow.d.ts +5 -5
  144. package/Grow/Grow.js +30 -38
  145. package/Grow/Grow.mjs +31 -39
  146. package/Icon/Icon.d.mts +3 -3
  147. package/Icon/Icon.d.ts +3 -3
  148. package/IconButton/IconButton.d.mts +5 -5
  149. package/IconButton/IconButton.d.ts +5 -5
  150. package/IconButton/IconButton.js +1 -8
  151. package/IconButton/IconButton.mjs +1 -8
  152. package/ImageList/ImageList.d.mts +2 -2
  153. package/ImageList/ImageList.d.ts +2 -2
  154. package/ImageListItem/ImageListItem.d.mts +2 -2
  155. package/ImageListItem/ImageListItem.d.ts +2 -2
  156. package/ImageListItemBar/ImageListItemBar.d.mts +2 -2
  157. package/ImageListItemBar/ImageListItemBar.d.ts +2 -2
  158. package/InitColorSchemeScript/InitColorSchemeScript.d.mts +2 -2
  159. package/InitColorSchemeScript/InitColorSchemeScript.d.ts +2 -2
  160. package/InitColorSchemeScript/InitColorSchemeScript.js +2 -2
  161. package/InitColorSchemeScript/InitColorSchemeScript.mjs +2 -2
  162. package/Input/Input.d.mts +7 -3
  163. package/Input/Input.d.ts +7 -3
  164. package/Input/Input.js +6 -0
  165. package/Input/Input.mjs +6 -0
  166. package/InputAdornment/InputAdornment.d.mts +2 -2
  167. package/InputAdornment/InputAdornment.d.ts +2 -2
  168. package/InputBase/InputBase.d.mts +4 -3
  169. package/InputBase/InputBase.d.ts +4 -3
  170. package/InputBase/InputBase.js +50 -15
  171. package/InputBase/InputBase.mjs +50 -15
  172. package/InputLabel/InputLabel.d.mts +4 -4
  173. package/InputLabel/InputLabel.d.ts +4 -4
  174. package/InputLabel/InputLabel.js +5 -8
  175. package/InputLabel/InputLabel.mjs +5 -8
  176. package/LinearProgress/LinearProgress.d.mts +14 -4
  177. package/LinearProgress/LinearProgress.d.ts +14 -4
  178. package/LinearProgress/LinearProgress.js +42 -10
  179. package/LinearProgress/LinearProgress.mjs +42 -10
  180. package/Link/Link.d.mts +4 -4
  181. package/Link/Link.d.ts +4 -4
  182. package/List/List.d.mts +4 -4
  183. package/List/List.d.ts +4 -4
  184. package/List/List.js +2 -1
  185. package/List/List.mjs +2 -1
  186. package/ListItem/ListItem.d.mts +3 -3
  187. package/ListItem/ListItem.d.ts +3 -3
  188. package/ListItem/ListItem.js +1 -2
  189. package/ListItem/ListItem.mjs +1 -2
  190. package/ListItemAvatar/ListItemAvatar.d.mts +2 -2
  191. package/ListItemAvatar/ListItemAvatar.d.ts +2 -2
  192. package/ListItemButton/ListItemButton.d.mts +4 -4
  193. package/ListItemButton/ListItemButton.d.ts +4 -4
  194. package/ListItemButton/ListItemButton.js +7 -1
  195. package/ListItemButton/ListItemButton.mjs +7 -1
  196. package/ListItemIcon/ListItemIcon.d.mts +3 -3
  197. package/ListItemIcon/ListItemIcon.d.ts +3 -3
  198. package/ListItemSecondaryAction/ListItemSecondaryAction.d.mts +2 -2
  199. package/ListItemSecondaryAction/ListItemSecondaryAction.d.ts +2 -2
  200. package/ListItemText/ListItemText.d.mts +3 -3
  201. package/ListItemText/ListItemText.d.ts +3 -3
  202. package/ListSubheader/ListSubheader.d.mts +3 -3
  203. package/ListSubheader/ListSubheader.d.ts +3 -3
  204. package/Menu/Menu.d.mts +4 -4
  205. package/Menu/Menu.d.ts +4 -4
  206. package/MenuItem/MenuItem.d.mts +3 -3
  207. package/MenuItem/MenuItem.d.ts +3 -3
  208. package/MenuItem/MenuItem.js +7 -1
  209. package/MenuItem/MenuItem.mjs +7 -1
  210. package/MenuList/MenuList.d.mts +4 -4
  211. package/MenuList/MenuList.d.ts +4 -4
  212. package/MenuList/MenuList.js +2 -1
  213. package/MenuList/MenuList.mjs +2 -1
  214. package/MobileStepper/MobileStepper.d.mts +3 -3
  215. package/MobileStepper/MobileStepper.d.ts +3 -3
  216. package/Modal/Modal.d.mts +7 -7
  217. package/Modal/Modal.d.ts +7 -7
  218. package/NativeSelect/NativeSelect.d.mts +3 -3
  219. package/NativeSelect/NativeSelect.d.ts +3 -3
  220. package/NativeSelect/NativeSelect.js +2 -5
  221. package/NativeSelect/NativeSelect.mjs +2 -5
  222. package/NoSsr/NoSsr.d.mts +2 -2
  223. package/NoSsr/NoSsr.d.ts +2 -2
  224. package/NoSsr/NoSsr.js +2 -2
  225. package/NoSsr/NoSsr.mjs +2 -2
  226. package/OutlinedInput/OutlinedInput.d.mts +4 -4
  227. package/OutlinedInput/OutlinedInput.d.ts +4 -4
  228. package/OutlinedInput/OutlinedInput.js +13 -23
  229. package/OutlinedInput/OutlinedInput.mjs +13 -23
  230. package/Pagination/Pagination.d.mts +2 -2
  231. package/Pagination/Pagination.d.ts +2 -2
  232. package/PaginationItem/PaginationItem.d.mts +3 -3
  233. package/PaginationItem/PaginationItem.d.ts +3 -3
  234. package/Paper/Paper.d.mts +4 -4
  235. package/Paper/Paper.d.ts +4 -4
  236. package/PigmentContainer/PigmentContainer.d.mts +2 -2
  237. package/PigmentContainer/PigmentContainer.d.ts +2 -2
  238. package/PigmentContainer/PigmentContainer.js +2 -3
  239. package/PigmentContainer/PigmentContainer.mjs +2 -3
  240. package/PigmentGrid/PigmentGrid.d.mts +2 -2
  241. package/PigmentGrid/PigmentGrid.d.ts +2 -2
  242. package/PigmentGrid/PigmentGrid.js +2 -2
  243. package/PigmentGrid/PigmentGrid.mjs +2 -2
  244. package/PigmentStack/PigmentStack.d.mts +2 -2
  245. package/PigmentStack/PigmentStack.d.ts +2 -2
  246. package/PigmentStack/PigmentStack.js +2 -2
  247. package/PigmentStack/PigmentStack.mjs +2 -2
  248. package/Popover/Popover.d.mts +4 -4
  249. package/Popover/Popover.d.ts +4 -4
  250. package/Popper/BasePopper.js +23 -1
  251. package/Popper/BasePopper.mjs +23 -1
  252. package/Popper/Popper.d.mts +4 -4
  253. package/Popper/Popper.d.ts +4 -4
  254. package/Popper/Popper.js +4 -4
  255. package/Popper/Popper.mjs +4 -4
  256. package/Portal/Portal.d.mts +2 -2
  257. package/Portal/Portal.d.ts +2 -2
  258. package/Portal/Portal.js +2 -2
  259. package/Portal/Portal.mjs +2 -2
  260. package/README.md +3 -3
  261. package/Radio/Radio.d.mts +3 -3
  262. package/Radio/Radio.d.ts +3 -3
  263. package/RadioGroup/RadioGroup.d.mts +3 -3
  264. package/RadioGroup/RadioGroup.d.ts +3 -3
  265. package/Rating/Rating.d.mts +2 -2
  266. package/Rating/Rating.d.ts +2 -2
  267. package/ScopedCssBaseline/ScopedCssBaseline.d.mts +2 -2
  268. package/ScopedCssBaseline/ScopedCssBaseline.d.ts +2 -2
  269. package/Select/Select.d.mts +3 -3
  270. package/Select/Select.d.ts +3 -3
  271. package/Select/Select.js +2 -5
  272. package/Select/Select.mjs +2 -5
  273. package/Select/SelectInput.js +164 -2
  274. package/Select/SelectInput.mjs +164 -2
  275. package/Skeleton/Skeleton.d.mts +2 -2
  276. package/Skeleton/Skeleton.d.ts +2 -2
  277. package/Slide/Slide.d.mts +4 -4
  278. package/Slide/Slide.d.ts +4 -4
  279. package/Slide/Slide.js +73 -50
  280. package/Slide/Slide.mjs +74 -52
  281. package/Slider/Slider.d.mts +4 -4
  282. package/Slider/Slider.d.ts +4 -4
  283. package/Slider/Slider.js +11 -2
  284. package/Slider/Slider.mjs +11 -2
  285. package/Slider/useSlider.d.mts +1 -1
  286. package/Slider/useSlider.d.ts +1 -1
  287. package/Slider/useSlider.js +236 -209
  288. package/Slider/useSlider.mjs +236 -209
  289. package/Slider/useSlider.types.d.mts +2 -2
  290. package/Slider/useSlider.types.d.ts +2 -2
  291. package/Snackbar/Snackbar.d.mts +2 -2
  292. package/Snackbar/Snackbar.d.ts +2 -2
  293. package/SnackbarContent/SnackbarContent.d.mts +3 -3
  294. package/SnackbarContent/SnackbarContent.d.ts +3 -3
  295. package/SpeedDial/SpeedDial.d.mts +2 -2
  296. package/SpeedDial/SpeedDial.d.ts +2 -2
  297. package/SpeedDialAction/SpeedDialAction.d.mts +3 -3
  298. package/SpeedDialAction/SpeedDialAction.d.ts +3 -3
  299. package/SpeedDialIcon/SpeedDialIcon.d.mts +2 -2
  300. package/SpeedDialIcon/SpeedDialIcon.d.ts +2 -2
  301. package/Stack/Stack.d.mts +2 -2
  302. package/Stack/Stack.d.ts +2 -2
  303. package/Step/Step.d.mts +2 -2
  304. package/Step/Step.d.ts +2 -2
  305. package/StepButton/StepButton.d.mts +3 -3
  306. package/StepButton/StepButton.d.ts +3 -3
  307. package/StepConnector/StepConnector.d.mts +2 -2
  308. package/StepConnector/StepConnector.d.ts +2 -2
  309. package/StepConnector/StepConnector.js +1 -2
  310. package/StepConnector/StepConnector.mjs +1 -2
  311. package/StepContent/StepContent.d.mts +2 -2
  312. package/StepContent/StepContent.d.ts +2 -2
  313. package/StepIcon/StepIcon.d.mts +3 -3
  314. package/StepIcon/StepIcon.d.ts +3 -3
  315. package/StepLabel/StepLabel.d.mts +2 -2
  316. package/StepLabel/StepLabel.d.ts +2 -2
  317. package/Stepper/Stepper.d.mts +2 -2
  318. package/Stepper/Stepper.d.ts +2 -2
  319. package/SvgIcon/SvgIcon.d.mts +3 -3
  320. package/SvgIcon/SvgIcon.d.ts +3 -3
  321. package/SwipeableDrawer/SwipeableDrawer.d.mts +3 -3
  322. package/SwipeableDrawer/SwipeableDrawer.d.ts +3 -3
  323. package/SwipeableDrawer/SwipeableDrawer.js +7 -6
  324. package/SwipeableDrawer/SwipeableDrawer.mjs +7 -6
  325. package/Switch/Switch.d.mts +4 -4
  326. package/Switch/Switch.d.ts +4 -4
  327. package/Switch/Switch.js +9 -4
  328. package/Switch/Switch.mjs +9 -4
  329. package/Tab/Tab.d.mts +3 -3
  330. package/Tab/Tab.d.ts +3 -3
  331. package/TabScrollButton/TabScrollButton.d.mts +2 -2
  332. package/TabScrollButton/TabScrollButton.d.ts +2 -2
  333. package/Table/Table.d.mts +2 -2
  334. package/Table/Table.d.ts +2 -2
  335. package/TableBody/TableBody.d.mts +2 -2
  336. package/TableBody/TableBody.d.ts +2 -2
  337. package/TableCell/TableCell.d.mts +2 -2
  338. package/TableCell/TableCell.d.ts +2 -2
  339. package/TableContainer/TableContainer.d.mts +2 -2
  340. package/TableContainer/TableContainer.d.ts +2 -2
  341. package/TableFooter/TableFooter.d.mts +2 -2
  342. package/TableFooter/TableFooter.d.ts +2 -2
  343. package/TableHead/TableHead.d.mts +2 -2
  344. package/TableHead/TableHead.d.ts +2 -2
  345. package/TablePagination/TablePagination.d.mts +4 -4
  346. package/TablePagination/TablePagination.d.ts +4 -4
  347. package/TablePaginationActions/TablePaginationActions.d.mts +2 -2
  348. package/TablePaginationActions/TablePaginationActions.d.ts +2 -2
  349. package/TableRow/TableRow.d.mts +2 -2
  350. package/TableRow/TableRow.d.ts +2 -2
  351. package/TableSortLabel/TableSortLabel.d.mts +3 -3
  352. package/TableSortLabel/TableSortLabel.d.ts +3 -3
  353. package/TableSortLabel/TableSortLabel.js +1 -2
  354. package/TableSortLabel/TableSortLabel.mjs +1 -2
  355. package/Tabs/ScrollbarSize.js +2 -1
  356. package/Tabs/ScrollbarSize.mjs +2 -1
  357. package/Tabs/Tabs.d.mts +2 -2
  358. package/Tabs/Tabs.d.ts +2 -2
  359. package/Tabs/Tabs.js +2 -1
  360. package/Tabs/Tabs.mjs +2 -1
  361. package/TextField/TextField.d.mts +10 -10
  362. package/TextField/TextField.d.ts +10 -10
  363. package/TextareaAutosize/TextareaAutosize.d.mts +2 -2
  364. package/TextareaAutosize/TextareaAutosize.d.ts +2 -2
  365. package/TextareaAutosize/TextareaAutosize.js +2 -2
  366. package/TextareaAutosize/TextareaAutosize.mjs +2 -2
  367. package/ToggleButton/ToggleButton.d.mts +3 -3
  368. package/ToggleButton/ToggleButton.d.ts +3 -3
  369. package/ToggleButtonGroup/ToggleButtonGroup.d.mts +2 -2
  370. package/ToggleButtonGroup/ToggleButtonGroup.d.ts +2 -2
  371. package/Toolbar/Toolbar.d.mts +2 -2
  372. package/Toolbar/Toolbar.d.ts +2 -2
  373. package/Tooltip/Tooltip.d.mts +2 -2
  374. package/Tooltip/Tooltip.d.ts +2 -2
  375. package/Tooltip/Tooltip.js +26 -108
  376. package/Tooltip/Tooltip.mjs +26 -108
  377. package/Typography/Typography.d.mts +4 -4
  378. package/Typography/Typography.d.ts +4 -4
  379. package/Unstable_TrapFocus/FocusTrap.js +18 -14
  380. package/Unstable_TrapFocus/FocusTrap.mjs +18 -14
  381. package/Zoom/Zoom.d.mts +3 -3
  382. package/Zoom/Zoom.d.ts +3 -3
  383. package/Zoom/Zoom.js +24 -30
  384. package/Zoom/Zoom.mjs +25 -31
  385. package/index.js +1 -1
  386. package/index.mjs +1 -1
  387. package/package.json +7 -7
  388. package/styles/createThemeNoVars.js +1 -1
  389. package/styles/createThemeNoVars.mjs +1 -1
  390. package/styles/responsiveFontSizes.js +19 -8
  391. package/styles/responsiveFontSizes.mjs +19 -8
  392. package/styles/useThemeProps.d.mts +3 -3
  393. package/styles/useThemeProps.d.ts +3 -3
  394. package/transitions/utils.d.mts +24 -0
  395. package/transitions/utils.d.ts +24 -0
  396. package/transitions/utils.js +91 -0
  397. package/transitions/utils.mjs +88 -0
  398. package/useAutocomplete/useAutocomplete.d.mts +4 -5
  399. package/useAutocomplete/useAutocomplete.d.ts +4 -5
  400. package/useAutocomplete/useAutocomplete.js +166 -53
  401. package/useAutocomplete/useAutocomplete.mjs +166 -53
  402. package/utils/contains.d.mts +2 -0
  403. package/utils/contains.d.ts +2 -0
  404. package/utils/contains.js +9 -0
  405. package/utils/contains.mjs +2 -0
  406. package/utils/focusable.d.mts +7 -0
  407. package/utils/focusable.d.ts +7 -0
  408. package/utils/focusable.js +20 -0
  409. package/utils/focusable.mjs +13 -0
  410. package/utils/getEventTarget.d.mts +2 -0
  411. package/utils/getEventTarget.d.ts +2 -0
  412. package/utils/getEventTarget.js +9 -0
  413. package/utils/getEventTarget.mjs +2 -0
  414. package/utils/mergeSlotProps.js +2 -8
  415. package/utils/mergeSlotProps.mjs +1 -8
  416. package/version/index.js +3 -3
  417. package/version/index.mjs +3 -3
  418. package/FormControl/formControlState.js +0 -21
  419. package/FormControl/formControlState.mjs +0 -15
@@ -15,12 +15,15 @@ var _clsx = _interopRequireDefault(require("clsx"));
15
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
16
16
  var _useId = _interopRequireDefault(require("@mui/utils/useId"));
17
17
  var _refType = _interopRequireDefault(require("@mui/utils/refType"));
18
+ var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
18
19
  var _ownerDocument = _interopRequireDefault(require("../utils/ownerDocument"));
19
20
  var _Menu = _interopRequireDefault(require("../Menu/Menu"));
20
21
  var _NativeSelectInput = require("../NativeSelect/NativeSelectInput");
21
22
  var _utils = require("../InputBase/utils");
22
23
  var _zeroStyled = require("../zero-styled");
23
24
  var _slotShouldForwardProp = _interopRequireDefault(require("../styles/slotShouldForwardProp"));
25
+ var _useEnhancedEffect = _interopRequireDefault(require("../utils/useEnhancedEffect"));
26
+ var _useEventCallback = _interopRequireDefault(require("../utils/useEventCallback"));
24
27
  var _useForkRef = _interopRequireDefault(require("../utils/useForkRef"));
25
28
  var _useControlled = _interopRequireDefault(require("../utils/useControlled"));
26
29
  var _selectClasses = _interopRequireWildcard(require("./selectClasses"));
@@ -28,6 +31,37 @@ var _utils2 = require("./utils");
28
31
  var _SelectFocusSourceContext = require("./utils/SelectFocusSourceContext");
29
32
  var _jsxRuntime = require("react/jsx-runtime");
30
33
  var _span;
34
+ const OPENING_MOUSE_UP_BOUNDARY_OFFSET = 2;
35
+ // The initial mouseup may land on an item when the menu opens over the trigger.
36
+ const SELECTED_MOUSE_UP_DELAY = 400;
37
+ const UNSELECTED_MOUSE_UP_DELAY = 200;
38
+
39
+ /**
40
+ * Returns true when a native mouse event should be treated as happening inside
41
+ * the element, even if a portal or backdrop retargeted the event away from it.
42
+ *
43
+ * Select uses this for the opening mouseup: when the menu opens over the
44
+ * trigger, the release can target the backdrop or portaled menu even though the
45
+ * pointer is still inside the trigger or menu bounds.
46
+ */
47
+ function isMouseEventInsideElement(event, element) {
48
+ if (!element) {
49
+ return false;
50
+ }
51
+ const eventPath = event.composedPath();
52
+ if (eventPath.includes(element)) {
53
+ return true;
54
+ }
55
+ if (event.target?.nodeType && element.contains(event.target)) {
56
+ return true;
57
+ }
58
+ const rect = element.getBoundingClientRect();
59
+ if (rect.width === 0 && rect.height === 0) {
60
+ // Hidden or transition-mounted elements do not have useful bounds to hit-test.
61
+ return false;
62
+ }
63
+ return event.clientX >= rect.left - OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientX <= rect.right + OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientY >= rect.top - OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientY <= rect.bottom + OPENING_MOUSE_UP_BOUNDARY_OFFSET;
64
+ }
31
65
  const SelectSelect = (0, _zeroStyled.styled)(_NativeSelectInput.StyledSelectSelect, {
32
66
  name: 'MuiSelect',
33
67
  slot: 'Select',
@@ -154,6 +188,17 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
154
188
  });
155
189
  const inputRef = React.useRef(null);
156
190
  const displayRef = React.useRef(null);
191
+ const paperRef = React.useRef(null);
192
+ const openRef = React.useRef(false);
193
+ const hasSelectedItemInListRef = React.useRef(false);
194
+ const openingMouseUpListenerCleanupRef = React.useRef(null);
195
+ const didPointerDownOnItemRef = React.useRef(false);
196
+ const selectionRef = React.useRef({
197
+ allowSelectedMouseUp: false,
198
+ allowUnselectedMouseUp: false
199
+ });
200
+ const selectedMouseUpTimer = (0, _useTimeout.default)();
201
+ const unselectedMouseUpTimer = (0, _useTimeout.default)();
157
202
  const [displayNode, setDisplayNode] = React.useState(null);
158
203
  const {
159
204
  current: isOpenControlled
@@ -176,6 +221,42 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
176
221
  value
177
222
  }), [value]);
178
223
  const open = displayNode !== null && openState;
224
+ (0, _useEnhancedEffect.default)(() => {
225
+ openRef.current = open;
226
+ }, [open]);
227
+ const clearSelectionTimers = React.useCallback(() => {
228
+ selectedMouseUpTimer.clear();
229
+ unselectedMouseUpTimer.clear();
230
+ }, [selectedMouseUpTimer, unselectedMouseUpTimer]);
231
+ const resetMouseUpSelection = React.useCallback(() => {
232
+ clearSelectionTimers();
233
+ didPointerDownOnItemRef.current = false;
234
+ selectionRef.current = {
235
+ allowSelectedMouseUp: false,
236
+ allowUnselectedMouseUp: false
237
+ };
238
+ }, [clearSelectionTimers]);
239
+ const clearOpeningMouseUpListener = React.useCallback(() => {
240
+ if (openingMouseUpListenerCleanupRef.current) {
241
+ openingMouseUpListenerCleanupRef.current();
242
+ openingMouseUpListenerCleanupRef.current = null;
243
+ }
244
+ }, []);
245
+ React.useEffect(() => {
246
+ if (!open) {
247
+ resetMouseUpSelection();
248
+ clearOpeningMouseUpListener();
249
+ }
250
+ }, [open, resetMouseUpSelection, clearOpeningMouseUpListener]);
251
+
252
+ // Keep unmount cleanup separate from the `open` effect. Effect cleanups also run
253
+ // before the next effect, which would clear the opening mouseup listener while opening.
254
+ React.useEffect(() => {
255
+ return () => {
256
+ resetMouseUpSelection();
257
+ clearOpeningMouseUpListener();
258
+ };
259
+ }, [resetMouseUpSelection, clearOpeningMouseUpListener]);
179
260
  React.useEffect(() => {
180
261
  if (!open || !anchorElement || autoWidth) {
181
262
  return undefined;
@@ -226,7 +307,11 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
226
307
  }
227
308
  return undefined;
228
309
  }, [labelId]);
229
- const update = (openParam, event) => {
310
+ const update = (0, _useEventCallback.default)((openParam, event) => {
311
+ if (!openParam) {
312
+ resetMouseUpSelection();
313
+ clearOpeningMouseUpListener();
314
+ }
230
315
  if (openParam) {
231
316
  setOpenInteractionType((0, _utils2.getOpenInteractionType)(event));
232
317
  if (onOpen) {
@@ -239,9 +324,33 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
239
324
  }
240
325
  }
241
326
  if (!isOpenControlled) {
327
+ openRef.current = openParam;
242
328
  setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
243
329
  setOpenState(openParam);
244
330
  }
331
+ });
332
+ const scheduleMouseUpSelection = () => {
333
+ resetMouseUpSelection();
334
+
335
+ // When there is no selected item in the list, a mousedown
336
+ // on the trigger followed by a quick mouseup over the first option can accidentally select
337
+ // within 200ms. Delay unselected mouseup to match the safer 400ms window.
338
+ if (!hasSelectedItemInListRef.current) {
339
+ selectedMouseUpTimer.start(SELECTED_MOUSE_UP_DELAY, () => {
340
+ selectionRef.current.allowSelectedMouseUp = true;
341
+ selectionRef.current.allowUnselectedMouseUp = true;
342
+ });
343
+ } else {
344
+ // mousedown -> move to unselected item -> mouseup should not select within 200ms.
345
+ unselectedMouseUpTimer.start(UNSELECTED_MOUSE_UP_DELAY, () => {
346
+ selectionRef.current.allowUnselectedMouseUp = true;
347
+
348
+ // mousedown -> mouseup on selected item should not select within 400ms.
349
+ selectedMouseUpTimer.start(UNSELECTED_MOUSE_UP_DELAY, () => {
350
+ selectionRef.current.allowSelectedMouseUp = true;
351
+ });
352
+ });
353
+ }
245
354
  };
246
355
  const handleMouseDown = event => {
247
356
  onMouseDown?.(event);
@@ -252,6 +361,29 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
252
361
  // Hijack the default focus behavior.
253
362
  event.preventDefault();
254
363
  displayRef.current.focus();
364
+ const doc = (0, _ownerDocument.default)(event.currentTarget);
365
+ scheduleMouseUpSelection();
366
+ clearOpeningMouseUpListener();
367
+ const handleMouseUp = mouseEvent => {
368
+ openingMouseUpListenerCleanupRef.current = null;
369
+ if (!displayRef.current) {
370
+ return;
371
+ }
372
+ if (isMouseEventInsideElement(mouseEvent, displayRef.current) || isMouseEventInsideElement(mouseEvent, paperRef.current)) {
373
+ return;
374
+ }
375
+ if (!openRef.current && isOpenControlled) {
376
+ return;
377
+ }
378
+ update(false, mouseEvent);
379
+ };
380
+ doc.addEventListener('mouseup', handleMouseUp, {
381
+ capture: true,
382
+ once: true
383
+ });
384
+ openingMouseUpListenerCleanupRef.current = () => {
385
+ doc.removeEventListener('mouseup', handleMouseUp, true);
386
+ };
255
387
  update(true, event);
256
388
  };
257
389
  const handleClose = event => {
@@ -271,6 +403,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
271
403
  }
272
404
  };
273
405
  const handleItemClick = child => event => {
406
+ didPointerDownOnItemRef.current = false;
274
407
  let newValue;
275
408
 
276
409
  // We use the tabindex attribute to signal the available options.
@@ -314,6 +447,19 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
314
447
  update(false, event);
315
448
  }
316
449
  };
450
+ const handleItemMouseUp = (child, selected) => event => {
451
+ child.props.onMouseUp?.(event);
452
+ if (didPointerDownOnItemRef.current) {
453
+ didPointerDownOnItemRef.current = false;
454
+ return;
455
+ }
456
+ const disallowSelectedMouseUp = !selectionRef.current.allowSelectedMouseUp && selected;
457
+ const disallowUnselectedMouseUp = !selectionRef.current.allowUnselectedMouseUp && !selected;
458
+ if (disallowSelectedMouseUp || disallowUnselectedMouseUp) {
459
+ return;
460
+ }
461
+ event.currentTarget.click();
462
+ };
317
463
  const handleKeyDown = event => {
318
464
  if (!readOnly) {
319
465
  const validKeys = [' ', 'ArrowUp', 'ArrowDown',
@@ -387,7 +533,16 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
387
533
  }
388
534
  return /*#__PURE__*/React.cloneElement(child, {
389
535
  'aria-selected': selected ? 'true' : 'false',
536
+ onMouseDown: event => {
537
+ didPointerDownOnItemRef.current = true;
538
+ child.props.onMouseDown?.(event);
539
+ },
540
+ onPointerDown: event => {
541
+ didPointerDownOnItemRef.current = true;
542
+ child.props.onPointerDown?.(event);
543
+ },
390
544
  onClick: handleItemClick(child),
545
+ onMouseUp: handleItemMouseUp(child, selected),
391
546
  onKeyUp: event => {
392
547
  if (event.key === ' ') {
393
548
  // otherwise our MenuItems dispatches a click event
@@ -406,6 +561,11 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
406
561
  'data-value': child.props.value // Instead, we provide it as a data attribute.
407
562
  });
408
563
  });
564
+
565
+ // Keep the opening mouseup guard current without mutating refs during render.
566
+ (0, _useEnhancedEffect.default)(() => {
567
+ hasSelectedItemInListRef.current = foundMatch;
568
+ }, [foundMatch]);
409
569
  if (process.env.NODE_ENV !== 'production') {
410
570
  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler
411
571
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -455,6 +615,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
455
615
  };
456
616
  const classes = useUtilityClasses(ownerState);
457
617
  const menuPaperSlotProps = typeof MenuProps.slotProps?.paper === 'function' ? MenuProps.slotProps.paper(ownerState) : MenuProps.slotProps?.paper;
618
+ const handlePaperRef = (0, _useForkRef.default)(menuPaperSlotProps?.ref, paperRef);
458
619
  const menuListSlotProps = typeof MenuProps.slotProps?.list === 'function' ? MenuProps.slotProps.list(ownerState) : MenuProps.slotProps?.list;
459
620
  const listboxId = (0, _useId.default)();
460
621
  const nativeInputId = (0, _useId.default)();
@@ -469,7 +630,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
469
630
  "aria-expanded": open ? 'true' : 'false',
470
631
  "aria-haspopup": "listbox",
471
632
  "aria-label": ariaLabel,
472
- "aria-labelledby": [labelId, buttonId].filter(Boolean).join(' ') || undefined,
633
+ "aria-labelledby": labelId,
473
634
  "aria-describedby": ariaDescribedby,
474
635
  "aria-required": required ? 'true' : undefined,
475
636
  "aria-invalid": error ? 'true' : undefined,
@@ -536,6 +697,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
536
697
  },
537
698
  paper: {
538
699
  ...menuPaperSlotProps,
700
+ ref: handlePaperRef,
539
701
  style: {
540
702
  minWidth: menuMinWidth,
541
703
  ...menuPaperSlotProps?.style
@@ -9,18 +9,52 @@ import clsx from 'clsx';
9
9
  import composeClasses from '@mui/utils/composeClasses';
10
10
  import useId from '@mui/utils/useId';
11
11
  import refType from '@mui/utils/refType';
12
+ import useTimeout from '@mui/utils/useTimeout';
12
13
  import ownerDocument from "../utils/ownerDocument.mjs";
13
14
  import Menu from "../Menu/Menu.mjs";
14
15
  import { StyledSelectSelect, StyledSelectIcon } from "../NativeSelect/NativeSelectInput.mjs";
15
16
  import { isFilled } from "../InputBase/utils.mjs";
16
17
  import { styled } from "../zero-styled/index.mjs";
17
18
  import slotShouldForwardProp from "../styles/slotShouldForwardProp.mjs";
19
+ import useEnhancedEffect from "../utils/useEnhancedEffect.mjs";
20
+ import useEventCallback from "../utils/useEventCallback.mjs";
18
21
  import useForkRef from "../utils/useForkRef.mjs";
19
22
  import useControlled from "../utils/useControlled.mjs";
20
23
  import selectClasses, { getSelectUtilityClasses } from "./selectClasses.mjs";
21
24
  import { areEqualValues, isEmpty, getOpenInteractionType } from "./utils/index.mjs";
22
25
  import { SelectFocusSourceProvider } from "./utils/SelectFocusSourceContext.mjs";
23
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
+ const OPENING_MOUSE_UP_BOUNDARY_OFFSET = 2;
28
+ // The initial mouseup may land on an item when the menu opens over the trigger.
29
+ const SELECTED_MOUSE_UP_DELAY = 400;
30
+ const UNSELECTED_MOUSE_UP_DELAY = 200;
31
+
32
+ /**
33
+ * Returns true when a native mouse event should be treated as happening inside
34
+ * the element, even if a portal or backdrop retargeted the event away from it.
35
+ *
36
+ * Select uses this for the opening mouseup: when the menu opens over the
37
+ * trigger, the release can target the backdrop or portaled menu even though the
38
+ * pointer is still inside the trigger or menu bounds.
39
+ */
40
+ function isMouseEventInsideElement(event, element) {
41
+ if (!element) {
42
+ return false;
43
+ }
44
+ const eventPath = event.composedPath();
45
+ if (eventPath.includes(element)) {
46
+ return true;
47
+ }
48
+ if (event.target?.nodeType && element.contains(event.target)) {
49
+ return true;
50
+ }
51
+ const rect = element.getBoundingClientRect();
52
+ if (rect.width === 0 && rect.height === 0) {
53
+ // Hidden or transition-mounted elements do not have useful bounds to hit-test.
54
+ return false;
55
+ }
56
+ return event.clientX >= rect.left - OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientX <= rect.right + OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientY >= rect.top - OPENING_MOUSE_UP_BOUNDARY_OFFSET && event.clientY <= rect.bottom + OPENING_MOUSE_UP_BOUNDARY_OFFSET;
57
+ }
24
58
  const SelectSelect = styled(StyledSelectSelect, {
25
59
  name: 'MuiSelect',
26
60
  slot: 'Select',
@@ -147,6 +181,17 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
147
181
  });
148
182
  const inputRef = React.useRef(null);
149
183
  const displayRef = React.useRef(null);
184
+ const paperRef = React.useRef(null);
185
+ const openRef = React.useRef(false);
186
+ const hasSelectedItemInListRef = React.useRef(false);
187
+ const openingMouseUpListenerCleanupRef = React.useRef(null);
188
+ const didPointerDownOnItemRef = React.useRef(false);
189
+ const selectionRef = React.useRef({
190
+ allowSelectedMouseUp: false,
191
+ allowUnselectedMouseUp: false
192
+ });
193
+ const selectedMouseUpTimer = useTimeout();
194
+ const unselectedMouseUpTimer = useTimeout();
150
195
  const [displayNode, setDisplayNode] = React.useState(null);
151
196
  const {
152
197
  current: isOpenControlled
@@ -169,6 +214,42 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
169
214
  value
170
215
  }), [value]);
171
216
  const open = displayNode !== null && openState;
217
+ useEnhancedEffect(() => {
218
+ openRef.current = open;
219
+ }, [open]);
220
+ const clearSelectionTimers = React.useCallback(() => {
221
+ selectedMouseUpTimer.clear();
222
+ unselectedMouseUpTimer.clear();
223
+ }, [selectedMouseUpTimer, unselectedMouseUpTimer]);
224
+ const resetMouseUpSelection = React.useCallback(() => {
225
+ clearSelectionTimers();
226
+ didPointerDownOnItemRef.current = false;
227
+ selectionRef.current = {
228
+ allowSelectedMouseUp: false,
229
+ allowUnselectedMouseUp: false
230
+ };
231
+ }, [clearSelectionTimers]);
232
+ const clearOpeningMouseUpListener = React.useCallback(() => {
233
+ if (openingMouseUpListenerCleanupRef.current) {
234
+ openingMouseUpListenerCleanupRef.current();
235
+ openingMouseUpListenerCleanupRef.current = null;
236
+ }
237
+ }, []);
238
+ React.useEffect(() => {
239
+ if (!open) {
240
+ resetMouseUpSelection();
241
+ clearOpeningMouseUpListener();
242
+ }
243
+ }, [open, resetMouseUpSelection, clearOpeningMouseUpListener]);
244
+
245
+ // Keep unmount cleanup separate from the `open` effect. Effect cleanups also run
246
+ // before the next effect, which would clear the opening mouseup listener while opening.
247
+ React.useEffect(() => {
248
+ return () => {
249
+ resetMouseUpSelection();
250
+ clearOpeningMouseUpListener();
251
+ };
252
+ }, [resetMouseUpSelection, clearOpeningMouseUpListener]);
172
253
  React.useEffect(() => {
173
254
  if (!open || !anchorElement || autoWidth) {
174
255
  return undefined;
@@ -219,7 +300,11 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
219
300
  }
220
301
  return undefined;
221
302
  }, [labelId]);
222
- const update = (openParam, event) => {
303
+ const update = useEventCallback((openParam, event) => {
304
+ if (!openParam) {
305
+ resetMouseUpSelection();
306
+ clearOpeningMouseUpListener();
307
+ }
223
308
  if (openParam) {
224
309
  setOpenInteractionType(getOpenInteractionType(event));
225
310
  if (onOpen) {
@@ -232,9 +317,33 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
232
317
  }
233
318
  }
234
319
  if (!isOpenControlled) {
320
+ openRef.current = openParam;
235
321
  setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
236
322
  setOpenState(openParam);
237
323
  }
324
+ });
325
+ const scheduleMouseUpSelection = () => {
326
+ resetMouseUpSelection();
327
+
328
+ // When there is no selected item in the list, a mousedown
329
+ // on the trigger followed by a quick mouseup over the first option can accidentally select
330
+ // within 200ms. Delay unselected mouseup to match the safer 400ms window.
331
+ if (!hasSelectedItemInListRef.current) {
332
+ selectedMouseUpTimer.start(SELECTED_MOUSE_UP_DELAY, () => {
333
+ selectionRef.current.allowSelectedMouseUp = true;
334
+ selectionRef.current.allowUnselectedMouseUp = true;
335
+ });
336
+ } else {
337
+ // mousedown -> move to unselected item -> mouseup should not select within 200ms.
338
+ unselectedMouseUpTimer.start(UNSELECTED_MOUSE_UP_DELAY, () => {
339
+ selectionRef.current.allowUnselectedMouseUp = true;
340
+
341
+ // mousedown -> mouseup on selected item should not select within 400ms.
342
+ selectedMouseUpTimer.start(UNSELECTED_MOUSE_UP_DELAY, () => {
343
+ selectionRef.current.allowSelectedMouseUp = true;
344
+ });
345
+ });
346
+ }
238
347
  };
239
348
  const handleMouseDown = event => {
240
349
  onMouseDown?.(event);
@@ -245,6 +354,29 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
245
354
  // Hijack the default focus behavior.
246
355
  event.preventDefault();
247
356
  displayRef.current.focus();
357
+ const doc = ownerDocument(event.currentTarget);
358
+ scheduleMouseUpSelection();
359
+ clearOpeningMouseUpListener();
360
+ const handleMouseUp = mouseEvent => {
361
+ openingMouseUpListenerCleanupRef.current = null;
362
+ if (!displayRef.current) {
363
+ return;
364
+ }
365
+ if (isMouseEventInsideElement(mouseEvent, displayRef.current) || isMouseEventInsideElement(mouseEvent, paperRef.current)) {
366
+ return;
367
+ }
368
+ if (!openRef.current && isOpenControlled) {
369
+ return;
370
+ }
371
+ update(false, mouseEvent);
372
+ };
373
+ doc.addEventListener('mouseup', handleMouseUp, {
374
+ capture: true,
375
+ once: true
376
+ });
377
+ openingMouseUpListenerCleanupRef.current = () => {
378
+ doc.removeEventListener('mouseup', handleMouseUp, true);
379
+ };
248
380
  update(true, event);
249
381
  };
250
382
  const handleClose = event => {
@@ -264,6 +396,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
264
396
  }
265
397
  };
266
398
  const handleItemClick = child => event => {
399
+ didPointerDownOnItemRef.current = false;
267
400
  let newValue;
268
401
 
269
402
  // We use the tabindex attribute to signal the available options.
@@ -307,6 +440,19 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
307
440
  update(false, event);
308
441
  }
309
442
  };
443
+ const handleItemMouseUp = (child, selected) => event => {
444
+ child.props.onMouseUp?.(event);
445
+ if (didPointerDownOnItemRef.current) {
446
+ didPointerDownOnItemRef.current = false;
447
+ return;
448
+ }
449
+ const disallowSelectedMouseUp = !selectionRef.current.allowSelectedMouseUp && selected;
450
+ const disallowUnselectedMouseUp = !selectionRef.current.allowUnselectedMouseUp && !selected;
451
+ if (disallowSelectedMouseUp || disallowUnselectedMouseUp) {
452
+ return;
453
+ }
454
+ event.currentTarget.click();
455
+ };
310
456
  const handleKeyDown = event => {
311
457
  if (!readOnly) {
312
458
  const validKeys = [' ', 'ArrowUp', 'ArrowDown',
@@ -380,7 +526,16 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
380
526
  }
381
527
  return /*#__PURE__*/React.cloneElement(child, {
382
528
  'aria-selected': selected ? 'true' : 'false',
529
+ onMouseDown: event => {
530
+ didPointerDownOnItemRef.current = true;
531
+ child.props.onMouseDown?.(event);
532
+ },
533
+ onPointerDown: event => {
534
+ didPointerDownOnItemRef.current = true;
535
+ child.props.onPointerDown?.(event);
536
+ },
383
537
  onClick: handleItemClick(child),
538
+ onMouseUp: handleItemMouseUp(child, selected),
384
539
  onKeyUp: event => {
385
540
  if (event.key === ' ') {
386
541
  // otherwise our MenuItems dispatches a click event
@@ -399,6 +554,11 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
399
554
  'data-value': child.props.value // Instead, we provide it as a data attribute.
400
555
  });
401
556
  });
557
+
558
+ // Keep the opening mouseup guard current without mutating refs during render.
559
+ useEnhancedEffect(() => {
560
+ hasSelectedItemInListRef.current = foundMatch;
561
+ }, [foundMatch]);
402
562
  if (process.env.NODE_ENV !== 'production') {
403
563
  // TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler
404
564
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -448,6 +608,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
448
608
  };
449
609
  const classes = useUtilityClasses(ownerState);
450
610
  const menuPaperSlotProps = typeof MenuProps.slotProps?.paper === 'function' ? MenuProps.slotProps.paper(ownerState) : MenuProps.slotProps?.paper;
611
+ const handlePaperRef = useForkRef(menuPaperSlotProps?.ref, paperRef);
451
612
  const menuListSlotProps = typeof MenuProps.slotProps?.list === 'function' ? MenuProps.slotProps.list(ownerState) : MenuProps.slotProps?.list;
452
613
  const listboxId = useId();
453
614
  const nativeInputId = useId();
@@ -462,7 +623,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
462
623
  "aria-expanded": open ? 'true' : 'false',
463
624
  "aria-haspopup": "listbox",
464
625
  "aria-label": ariaLabel,
465
- "aria-labelledby": [labelId, buttonId].filter(Boolean).join(' ') || undefined,
626
+ "aria-labelledby": labelId,
466
627
  "aria-describedby": ariaDescribedby,
467
628
  "aria-required": required ? 'true' : undefined,
468
629
  "aria-invalid": error ? 'true' : undefined,
@@ -529,6 +690,7 @@ const SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, re
529
690
  },
530
691
  paper: {
531
692
  ...menuPaperSlotProps,
693
+ ref: handlePaperRef,
532
694
  style: {
533
695
  minWidth: menuMinWidth,
534
696
  ...menuPaperSlotProps?.style
@@ -49,11 +49,11 @@ export interface SkeletonTypeMap<AdditionalProps = {}, RootComponent extends Rea
49
49
  *
50
50
  * Demos:
51
51
  *
52
- * - [Skeleton](https://next.mui.com/material-ui/react-skeleton/)
52
+ * - [Skeleton](https://mui.com/material-ui/react-skeleton/)
53
53
  *
54
54
  * API:
55
55
  *
56
- * - [Skeleton API](https://next.mui.com/material-ui/api/skeleton/)
56
+ * - [Skeleton API](https://mui.com/material-ui/api/skeleton/)
57
57
  */
58
58
  declare const Skeleton: OverridableComponent<SkeletonTypeMap>;
59
59
  export type SkeletonProps<RootComponent extends React.ElementType = SkeletonTypeMap['defaultComponent'], AdditionalProps = {}> = OverrideProps<SkeletonTypeMap<AdditionalProps, RootComponent>, RootComponent> & {
@@ -49,11 +49,11 @@ export interface SkeletonTypeMap<AdditionalProps = {}, RootComponent extends Rea
49
49
  *
50
50
  * Demos:
51
51
  *
52
- * - [Skeleton](https://next.mui.com/material-ui/react-skeleton/)
52
+ * - [Skeleton](https://mui.com/material-ui/react-skeleton/)
53
53
  *
54
54
  * API:
55
55
  *
56
- * - [Skeleton API](https://next.mui.com/material-ui/api/skeleton/)
56
+ * - [Skeleton API](https://mui.com/material-ui/api/skeleton/)
57
57
  */
58
58
  declare const Skeleton: OverridableComponent<SkeletonTypeMap>;
59
59
  export type SkeletonProps<RootComponent extends React.ElementType = SkeletonTypeMap['defaultComponent'], AdditionalProps = {}> = OverrideProps<SkeletonTypeMap<AdditionalProps, RootComponent>, RootComponent> & {
package/Slide/Slide.d.mts CHANGED
@@ -47,17 +47,17 @@ export interface SlideProps extends TransitionProps {
47
47
  }
48
48
 
49
49
  /**
50
- * The Slide transition is used by the [Drawer](https://next.mui.com/material-ui/react-drawer/) component.
50
+ * The Slide transition is used by the [Drawer](https://mui.com/material-ui/react-drawer/) component.
51
51
  * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
52
52
  *
53
53
  * Demos:
54
54
  *
55
- * - [Dialog](https://next.mui.com/material-ui/react-dialog/)
56
- * - [Transitions](https://next.mui.com/material-ui/transitions/)
55
+ * - [Dialog](https://mui.com/material-ui/react-dialog/)
56
+ * - [Transitions](https://mui.com/material-ui/transitions/)
57
57
  *
58
58
  * API:
59
59
  *
60
- * - [Slide API](https://next.mui.com/material-ui/api/slide/)
60
+ * - [Slide API](https://mui.com/material-ui/api/slide/)
61
61
  * - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
62
62
  */
63
63
  export default function Slide(props: SlideProps): React.JSX.Element;
package/Slide/Slide.d.ts CHANGED
@@ -47,17 +47,17 @@ export interface SlideProps extends TransitionProps {
47
47
  }
48
48
 
49
49
  /**
50
- * The Slide transition is used by the [Drawer](https://next.mui.com/material-ui/react-drawer/) component.
50
+ * The Slide transition is used by the [Drawer](https://mui.com/material-ui/react-drawer/) component.
51
51
  * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.
52
52
  *
53
53
  * Demos:
54
54
  *
55
- * - [Dialog](https://next.mui.com/material-ui/react-dialog/)
56
- * - [Transitions](https://next.mui.com/material-ui/transitions/)
55
+ * - [Dialog](https://mui.com/material-ui/react-dialog/)
56
+ * - [Transitions](https://mui.com/material-ui/transitions/)
57
57
  *
58
58
  * API:
59
59
  *
60
- * - [Slide API](https://next.mui.com/material-ui/api/slide/)
60
+ * - [Slide API](https://mui.com/material-ui/api/slide/)
61
61
  * - inherits [Transition API](https://reactcommunity.org/react-transition-group/transition/#Transition-props)
62
62
  */
63
63
  export default function Slide(props: SlideProps): React.JSX.Element;