@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/Slider/Slider.mjs CHANGED
@@ -6,14 +6,13 @@ import clsx from 'clsx';
6
6
  import chainPropTypes from '@mui/utils/chainPropTypes';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
8
  import { useRtl } from '@mui/system/RtlProvider';
9
- import useSlotProps from '@mui/utils/useSlotProps';
10
9
  import isHostComponent from '@mui/utils/isHostComponent';
11
10
  import { useSlider, valueToPercent } from "./useSlider.mjs";
12
11
  import { styled } from "../zero-styled/index.mjs";
13
12
  import memoTheme from "../utils/memoTheme.mjs";
14
13
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
14
+ import useSlot from "../utils/useSlot.mjs";
15
15
  import slotShouldForwardProp from "../styles/slotShouldForwardProp.mjs";
16
- import shouldSpreadAdditionalProps from "../utils/shouldSpreadAdditionalProps.mjs";
17
16
  import capitalize from "../utils/capitalize.mjs";
18
17
  import createSimplePaletteValueFilter from "../utils/createSimplePaletteValueFilter.mjs";
19
18
  import BaseSliderValueLabel from "./SliderValueLabel.mjs";
@@ -547,9 +546,9 @@ const useUtilityClasses = ownerState => {
547
546
  const Forward = ({
548
547
  children
549
548
  }) => children;
550
- const Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {
549
+ const Slider = /*#__PURE__*/React.forwardRef(function Slider(inProps, ref) {
551
550
  const props = useDefaultProps({
552
- props: inputProps,
551
+ props: inProps,
553
552
  name: 'MuiSlider'
554
553
  });
555
554
  const isRtl = useRtl();
@@ -557,10 +556,6 @@ const Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {
557
556
  'aria-label': ariaLabel,
558
557
  'aria-valuetext': ariaValuetext,
559
558
  'aria-labelledby': ariaLabelledby,
560
- // eslint-disable-next-line react/prop-types
561
- component = 'span',
562
- components = {},
563
- componentsProps = {},
564
559
  color = 'primary',
565
560
  classes: classesProp,
566
561
  className,
@@ -579,8 +574,8 @@ const Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {
579
574
  size = 'medium',
580
575
  step = 1,
581
576
  scale = Identity,
582
- slotProps,
583
- slots,
577
+ slotProps = {},
578
+ slots = {},
584
579
  tabIndex,
585
580
  track = 'normal',
586
581
  value: valueProp,
@@ -631,96 +626,67 @@ const Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {
631
626
  ownerState.dragging = dragging;
632
627
  ownerState.focusedThumbIndex = focusedThumbIndex;
633
628
  const classes = useUtilityClasses(ownerState);
634
-
635
- // support both `slots` and `components` for backward compatibility
636
- const RootSlot = slots?.root ?? components.Root ?? SliderRoot;
637
- const RailSlot = slots?.rail ?? components.Rail ?? SliderRail;
638
- const TrackSlot = slots?.track ?? components.Track ?? SliderTrack;
639
- const ThumbSlot = slots?.thumb ?? components.Thumb ?? SliderThumb;
640
- const ValueLabelSlot = slots?.valueLabel ?? components.ValueLabel ?? SliderValueLabel;
641
- const MarkSlot = slots?.mark ?? components.Mark ?? SliderMark;
642
- const MarkLabelSlot = slots?.markLabel ?? components.MarkLabel ?? SliderMarkLabel;
643
- const InputSlot = slots?.input ?? components.Input ?? 'input';
644
- const rootSlotProps = slotProps?.root ?? componentsProps.root;
645
- const railSlotProps = slotProps?.rail ?? componentsProps.rail;
646
- const trackSlotProps = slotProps?.track ?? componentsProps.track;
647
- const thumbSlotProps = slotProps?.thumb ?? componentsProps.thumb;
648
- const valueLabelSlotProps = slotProps?.valueLabel ?? componentsProps.valueLabel;
649
- const markSlotProps = slotProps?.mark ?? componentsProps.mark;
650
- const markLabelSlotProps = slotProps?.markLabel ?? componentsProps.markLabel;
651
- const inputSlotProps = slotProps?.input ?? componentsProps.input;
652
- const rootProps = useSlotProps({
653
- elementType: RootSlot,
629
+ const externalForwardedProps = {
630
+ slots,
631
+ slotProps
632
+ };
633
+ const [RootSlot, rootProps] = useSlot('root', {
634
+ elementType: SliderRoot,
654
635
  getSlotProps: getRootProps,
655
- externalSlotProps: rootSlotProps,
656
- externalForwardedProps: other,
657
- additionalProps: {
658
- ...(shouldSpreadAdditionalProps(RootSlot) && {
659
- as: component
660
- })
661
- },
662
- ownerState: {
663
- ...ownerState,
664
- ...rootSlotProps?.ownerState
636
+ externalForwardedProps: {
637
+ ...externalForwardedProps,
638
+ ...other
665
639
  },
640
+ ownerState,
666
641
  className: [classes.root, className]
667
642
  });
668
- const railProps = useSlotProps({
669
- elementType: RailSlot,
670
- externalSlotProps: railSlotProps,
643
+ const [RailSlot, railProps] = useSlot('rail', {
644
+ elementType: SliderRail,
645
+ externalForwardedProps,
671
646
  ownerState,
672
647
  className: classes.rail
673
648
  });
674
- const trackProps = useSlotProps({
675
- elementType: TrackSlot,
676
- externalSlotProps: trackSlotProps,
649
+ const [TrackSlot, trackProps] = useSlot('track', {
650
+ elementType: SliderTrack,
651
+ externalForwardedProps,
677
652
  additionalProps: {
678
653
  style: {
679
654
  ...axisProps[axis].offset(trackOffset),
680
655
  ...axisProps[axis].leap(trackLeap)
681
656
  }
682
657
  },
683
- ownerState: {
684
- ...ownerState,
685
- ...trackSlotProps?.ownerState
686
- },
658
+ ownerState,
687
659
  className: classes.track
688
660
  });
689
- const thumbProps = useSlotProps({
690
- elementType: ThumbSlot,
661
+ const [ThumbSlot, thumbProps] = useSlot('thumb', {
662
+ elementType: SliderThumb,
691
663
  getSlotProps: getThumbProps,
692
- externalSlotProps: thumbSlotProps,
693
- ownerState: {
694
- ...ownerState,
695
- ...thumbSlotProps?.ownerState
696
- },
664
+ externalForwardedProps,
665
+ ownerState,
697
666
  className: classes.thumb
698
667
  });
699
- const valueLabelProps = useSlotProps({
700
- elementType: ValueLabelSlot,
701
- externalSlotProps: valueLabelSlotProps,
702
- ownerState: {
703
- ...ownerState,
704
- ...valueLabelSlotProps?.ownerState
705
- },
668
+ const [ValueLabelSlot, valueLabelProps] = useSlot('valueLabel', {
669
+ elementType: SliderValueLabel,
670
+ externalForwardedProps,
671
+ ownerState,
706
672
  className: classes.valueLabel
707
673
  });
708
- const markProps = useSlotProps({
709
- elementType: MarkSlot,
710
- externalSlotProps: markSlotProps,
674
+ const [MarkSlot, markProps] = useSlot('mark', {
675
+ elementType: SliderMark,
676
+ externalForwardedProps,
711
677
  ownerState,
712
678
  className: classes.mark
713
679
  });
714
- const markLabelProps = useSlotProps({
715
- elementType: MarkLabelSlot,
716
- externalSlotProps: markLabelSlotProps,
680
+ const [MarkLabelSlot, markLabelProps] = useSlot('markLabel', {
681
+ elementType: SliderMarkLabel,
682
+ externalForwardedProps,
717
683
  ownerState,
718
684
  className: classes.markLabel
719
685
  });
720
- const inputSliderProps = useSlotProps({
721
- elementType: InputSlot,
686
+ const [InputSliderSlot, inputSliderProps] = useSlot('input', {
687
+ elementType: 'input',
722
688
  getSlotProps: getHiddenInputProps,
723
- externalSlotProps: inputSlotProps,
689
+ externalForwardedProps,
724
690
  ownerState
725
691
  });
726
692
  return /*#__PURE__*/_jsxs(RootSlot, {
@@ -788,7 +754,7 @@ const Slider = /*#__PURE__*/React.forwardRef(function Slider(inputProps, ref) {
788
754
  ...getThumbStyle(index),
789
755
  ...thumbProps.style
790
756
  },
791
- children: /*#__PURE__*/_jsx(InputSlot, {
757
+ children: /*#__PURE__*/_jsx(InputSliderSlot, {
792
758
  "data-index": index,
793
759
  "aria-label": getAriaLabel ? getAriaLabel(index) : ariaLabel,
794
760
  "aria-valuenow": scale(value),
@@ -850,48 +816,6 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes /* remove-proptypes */
850
816
  * @default 'primary'
851
817
  */
852
818
  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),
853
- /**
854
- * The components used for each slot inside.
855
- *
856
- * @deprecated use the `slots` 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.
857
- *
858
- * @default {}
859
- */
860
- components: PropTypes.shape({
861
- Input: PropTypes.elementType,
862
- Mark: PropTypes.elementType,
863
- MarkLabel: PropTypes.elementType,
864
- Rail: PropTypes.elementType,
865
- Root: PropTypes.elementType,
866
- Thumb: PropTypes.elementType,
867
- Track: PropTypes.elementType,
868
- ValueLabel: PropTypes.elementType
869
- }),
870
- /**
871
- * The extra props for the slot components.
872
- * You can override the existing props or add new ones.
873
- *
874
- * @deprecated use the `slotProps` 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.
875
- *
876
- * @default {}
877
- */
878
- componentsProps: PropTypes.shape({
879
- input: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
880
- mark: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
881
- markLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
882
- rail: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
883
- root: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
884
- thumb: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
885
- track: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
886
- valueLabel: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
887
- children: PropTypes.element,
888
- className: PropTypes.string,
889
- open: PropTypes.bool,
890
- style: PropTypes.object,
891
- value: PropTypes.node,
892
- valueLabelDisplay: PropTypes.oneOf(['auto', 'off', 'on'])
893
- })])
894
- }),
895
819
  /**
896
820
  * The default value. Use when the component is not controlled.
897
821
  */
@@ -989,7 +913,7 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes /* remove-proptypes */
989
913
  */
990
914
  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),
991
915
  /**
992
- * The props used for each slot inside the Slider.
916
+ * The props used for each slot inside.
993
917
  * @default {}
994
918
  */
995
919
  slotProps: PropTypes.shape({
@@ -1010,8 +934,7 @@ process.env.NODE_ENV !== "production" ? Slider.propTypes /* remove-proptypes */
1010
934
  })])
1011
935
  }),
1012
936
  /**
1013
- * The components used for each slot inside the Slider.
1014
- * Either a string to use a HTML element or a component.
937
+ * The components used for each slot inside.
1015
938
  * @default {}
1016
939
  */
1017
940
  slots: PropTypes.shape({
@@ -46,31 +46,31 @@ export interface SliderClasses {
46
46
  /** Styles applied to the root element if `size="small"`. */
47
47
  sizeSmall: string;
48
48
  /** Styles applied to the thumb element if `color="primary"`.
49
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorPrimary](/material-ui/api/slider/#slider-classes-MuiSlider-colorPrimary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
49
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorPrimary](/material-ui/api/slider/#slider-classes-MuiSlider-colorPrimary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
50
50
  */
51
51
  thumbColorPrimary: string;
52
52
  /** Styles applied to the thumb element if `color="secondary"`.
53
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorSecondary](/material-ui/api/slider/#slider-classes-MuiSlider-colorSecondary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
53
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorSecondary](/material-ui/api/slider/#slider-classes-MuiSlider-colorSecondary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
54
54
  */
55
55
  thumbColorSecondary: string;
56
56
  /** Styles applied to the thumb element if `color="error"`.
57
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorError](/material-ui/api/slider/#slider-classes-MuiSlider-colorError) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
57
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorError](/material-ui/api/slider/#slider-classes-MuiSlider-colorError) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
58
58
  */
59
59
  thumbColorError: string;
60
60
  /** Styles applied to the thumb element if `color="info"`.
61
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorInfo](/material-ui/api/slider/#slider-classes-MuiSlider-colorInfo) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
61
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorInfo](/material-ui/api/slider/#slider-classes-MuiSlider-colorInfo) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
62
62
  */
63
63
  thumbColorInfo: string;
64
64
  /** Styles applied to the thumb element if `color="success"`.
65
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorSuccess](/material-ui/api/slider/#slider-classes-MuiSlider-colorSuccess) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
65
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorSuccess](/material-ui/api/slider/#slider-classes-MuiSlider-colorSuccess) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
66
66
  */
67
67
  thumbColorSuccess: string;
68
68
  /** Styles applied to the thumb element if `color="warning"`.
69
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorWarning](/material-ui/api/slider/#slider-classes-MuiSlider-colorWarning) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
69
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorWarning](/material-ui/api/slider/#slider-classes-MuiSlider-colorWarning) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
70
70
  */
71
71
  thumbColorWarning: string;
72
72
  /** Styles applied to the thumb element if `size="small"`.
73
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-sizeSmall](/material-ui/api/slider/#slider-classes-MuiSlider-sizeSmall) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
73
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-sizeSmall](/material-ui/api/slider/#slider-classes-MuiSlider-sizeSmall) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
74
74
  */
75
75
  thumbSizeSmall: string;
76
76
  /** Styles applied to the thumb label element. */
@@ -46,31 +46,31 @@ export interface SliderClasses {
46
46
  /** Styles applied to the root element if `size="small"`. */
47
47
  sizeSmall: string;
48
48
  /** Styles applied to the thumb element if `color="primary"`.
49
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorPrimary](/material-ui/api/slider/#slider-classes-MuiSlider-colorPrimary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
49
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorPrimary](/material-ui/api/slider/#slider-classes-MuiSlider-colorPrimary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
50
50
  */
51
51
  thumbColorPrimary: string;
52
52
  /** Styles applied to the thumb element if `color="secondary"`.
53
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorSecondary](/material-ui/api/slider/#slider-classes-MuiSlider-colorSecondary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
53
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorSecondary](/material-ui/api/slider/#slider-classes-MuiSlider-colorSecondary) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
54
54
  */
55
55
  thumbColorSecondary: string;
56
56
  /** Styles applied to the thumb element if `color="error"`.
57
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorError](/material-ui/api/slider/#slider-classes-MuiSlider-colorError) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
57
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorError](/material-ui/api/slider/#slider-classes-MuiSlider-colorError) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
58
58
  */
59
59
  thumbColorError: string;
60
60
  /** Styles applied to the thumb element if `color="info"`.
61
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorInfo](/material-ui/api/slider/#slider-classes-MuiSlider-colorInfo) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
61
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorInfo](/material-ui/api/slider/#slider-classes-MuiSlider-colorInfo) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
62
62
  */
63
63
  thumbColorInfo: string;
64
64
  /** Styles applied to the thumb element if `color="success"`.
65
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorSuccess](/material-ui/api/slider/#slider-classes-MuiSlider-colorSuccess) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
65
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorSuccess](/material-ui/api/slider/#slider-classes-MuiSlider-colorSuccess) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
66
66
  */
67
67
  thumbColorSuccess: string;
68
68
  /** Styles applied to the thumb element if `color="warning"`.
69
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-colorWarning](/material-ui/api/slider/#slider-classes-MuiSlider-colorWarning) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
69
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-colorWarning](/material-ui/api/slider/#slider-classes-MuiSlider-colorWarning) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
70
70
  */
71
71
  thumbColorWarning: string;
72
72
  /** Styles applied to the thumb element if `size="small"`.
73
- * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#slider-classes-MuiSlider-thumb) and [.MuiSlider-sizeSmall](/material-ui/api/slider/#slider-classes-MuiSlider-sizeSmall) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
73
+ * @deprecated Combine the [.MuiSlider-thumb](/material-ui/api/slider/#Slider-css-MuiSlider-thumb) and [.MuiSlider-sizeSmall](/material-ui/api/slider/#slider-classes-MuiSlider-sizeSmall) classes instead. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
74
74
  */
75
75
  thumbSizeSmall: string;
76
76
  /** Styles applied to the thumb label element. */
@@ -97,11 +97,27 @@ function setValueIndex({
97
97
  function focusThumb({
98
98
  sliderRef,
99
99
  activeIndex,
100
- setActive
100
+ setActive,
101
+ focusVisible
101
102
  }) {
102
103
  const doc = (0, _ownerDocument.default)(sliderRef.current);
103
104
  if (!sliderRef.current?.contains(doc.activeElement) || Number(doc?.activeElement?.getAttribute('data-index')) !== activeIndex) {
104
- sliderRef.current?.querySelector(`[type="range"][data-index="${activeIndex}"]`).focus();
105
+ const input = sliderRef.current?.querySelector(`[type="range"][data-index="${activeIndex}"]`);
106
+ if (input != null) {
107
+ if (focusVisible === undefined) {
108
+ input.focus({
109
+ preventScroll: true
110
+ });
111
+ } else {
112
+ input.focus({
113
+ preventScroll: true,
114
+ // Prevent pointer-driven focus rings in browsers that support this option.
115
+ // Chrome 144+ supports `focusVisible` in `HTMLElement.focus()` options.
116
+ // @ts-ignore - `focusVisible` is not yet in TypeScript's lib.dom FocusOptions.
117
+ focusVisible
118
+ });
119
+ }
120
+ }
105
121
  }
106
122
  if (setActive) {
107
123
  setActive(activeIndex);
@@ -188,6 +204,7 @@ function useSlider(parameters) {
188
204
  value: valueProp
189
205
  } = parameters;
190
206
  const touchId = React.useRef(undefined);
207
+ const focusFrame = React.useRef(null);
191
208
  // We can't use the :active browser pseudo-classes.
192
209
  // - The active state isn't triggered when clicking on the rail.
193
210
  // - The active state isn't transferred when inversing a range slider.
@@ -195,6 +212,12 @@ function useSlider(parameters) {
195
212
  const [open, setOpen] = React.useState(-1);
196
213
  const [dragging, setDragging] = React.useState(false);
197
214
  const moveCount = React.useRef(0);
215
+ const cancelFocusFrame = (0, _useEventCallback.default)(() => {
216
+ if (focusFrame.current != null) {
217
+ cancelAnimationFrame(focusFrame.current);
218
+ focusFrame.current = null;
219
+ }
220
+ });
198
221
  // lastChangedValue is updated whenever onChange is triggered.
199
222
  const lastChangedValue = React.useRef(null);
200
223
  const [valueDerived, setValueState] = (0, _useControlled.default)({
@@ -467,7 +490,8 @@ function useSlider(parameters) {
467
490
  focusThumb({
468
491
  sliderRef,
469
492
  activeIndex,
470
- setActive
493
+ setActive,
494
+ focusVisible: false
471
495
  });
472
496
  setValueState(newValue);
473
497
  if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {
@@ -525,7 +549,8 @@ function useSlider(parameters) {
525
549
  focusThumb({
526
550
  sliderRef,
527
551
  activeIndex,
528
- setActive
552
+ setActive,
553
+ focusVisible: false
529
554
  });
530
555
  setValueState(newValue);
531
556
  if (handleChange && !areValuesEqual(newValue, valueDerived)) {
@@ -557,14 +582,16 @@ function useSlider(parameters) {
557
582
  });
558
583
  return () => {
559
584
  slider.removeEventListener('touchstart', handleTouchStart);
585
+ cancelFocusFrame();
560
586
  stopListening();
561
587
  };
562
- }, [stopListening, handleTouchStart]);
588
+ }, [stopListening, handleTouchStart, cancelFocusFrame]);
563
589
  React.useEffect(() => {
564
590
  if (disabled) {
565
591
  stopListening();
592
+ cancelFocusFrame();
566
593
  }
567
- }, [disabled, stopListening]);
594
+ }, [disabled, stopListening, cancelFocusFrame]);
568
595
  const createHandleMouseDown = otherHandlers => event => {
569
596
  otherHandlers.onMouseDown?.(event);
570
597
  if (disabled) {
@@ -578,9 +605,6 @@ function useSlider(parameters) {
578
605
  if (event.button !== 0) {
579
606
  return;
580
607
  }
581
-
582
- // Avoid text selection
583
- event.preventDefault();
584
608
  const finger = trackFinger(event, touchId);
585
609
  if (finger !== false) {
586
610
  const {
@@ -589,11 +613,23 @@ function useSlider(parameters) {
589
613
  } = getFingerNewValue({
590
614
  finger
591
615
  });
592
- focusThumb({
593
- sliderRef,
594
- activeIndex,
595
- setActive
596
- });
616
+ const doc = (0, _ownerDocument.default)(sliderRef.current);
617
+ const activeElement = doc.activeElement;
618
+ const pressedOnFocusedThumb = sliderRef.current?.contains(activeElement) && Number(activeElement?.getAttribute('data-index')) === activeIndex;
619
+ setActive(activeIndex);
620
+ if (pressedOnFocusedThumb) {
621
+ event.preventDefault();
622
+ } else {
623
+ cancelFocusFrame();
624
+ focusFrame.current = requestAnimationFrame(() => {
625
+ focusFrame.current = null;
626
+ focusThumb({
627
+ sliderRef,
628
+ activeIndex,
629
+ focusVisible: false
630
+ });
631
+ });
632
+ }
597
633
  setValueState(newValue);
598
634
  if (handleChange && !areValuesEqual(newValue, valueDerived)) {
599
635
  handleChange(event, newValue, activeIndex);
@@ -88,11 +88,27 @@ function setValueIndex({
88
88
  function focusThumb({
89
89
  sliderRef,
90
90
  activeIndex,
91
- setActive
91
+ setActive,
92
+ focusVisible
92
93
  }) {
93
94
  const doc = ownerDocument(sliderRef.current);
94
95
  if (!sliderRef.current?.contains(doc.activeElement) || Number(doc?.activeElement?.getAttribute('data-index')) !== activeIndex) {
95
- sliderRef.current?.querySelector(`[type="range"][data-index="${activeIndex}"]`).focus();
96
+ const input = sliderRef.current?.querySelector(`[type="range"][data-index="${activeIndex}"]`);
97
+ if (input != null) {
98
+ if (focusVisible === undefined) {
99
+ input.focus({
100
+ preventScroll: true
101
+ });
102
+ } else {
103
+ input.focus({
104
+ preventScroll: true,
105
+ // Prevent pointer-driven focus rings in browsers that support this option.
106
+ // Chrome 144+ supports `focusVisible` in `HTMLElement.focus()` options.
107
+ // @ts-ignore - `focusVisible` is not yet in TypeScript's lib.dom FocusOptions.
108
+ focusVisible
109
+ });
110
+ }
111
+ }
96
112
  }
97
113
  if (setActive) {
98
114
  setActive(activeIndex);
@@ -178,6 +194,7 @@ export function useSlider(parameters) {
178
194
  value: valueProp
179
195
  } = parameters;
180
196
  const touchId = React.useRef(undefined);
197
+ const focusFrame = React.useRef(null);
181
198
  // We can't use the :active browser pseudo-classes.
182
199
  // - The active state isn't triggered when clicking on the rail.
183
200
  // - The active state isn't transferred when inversing a range slider.
@@ -185,6 +202,12 @@ export function useSlider(parameters) {
185
202
  const [open, setOpen] = React.useState(-1);
186
203
  const [dragging, setDragging] = React.useState(false);
187
204
  const moveCount = React.useRef(0);
205
+ const cancelFocusFrame = useEventCallback(() => {
206
+ if (focusFrame.current != null) {
207
+ cancelAnimationFrame(focusFrame.current);
208
+ focusFrame.current = null;
209
+ }
210
+ });
188
211
  // lastChangedValue is updated whenever onChange is triggered.
189
212
  const lastChangedValue = React.useRef(null);
190
213
  const [valueDerived, setValueState] = useControlled({
@@ -457,7 +480,8 @@ export function useSlider(parameters) {
457
480
  focusThumb({
458
481
  sliderRef,
459
482
  activeIndex,
460
- setActive
483
+ setActive,
484
+ focusVisible: false
461
485
  });
462
486
  setValueState(newValue);
463
487
  if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {
@@ -515,7 +539,8 @@ export function useSlider(parameters) {
515
539
  focusThumb({
516
540
  sliderRef,
517
541
  activeIndex,
518
- setActive
542
+ setActive,
543
+ focusVisible: false
519
544
  });
520
545
  setValueState(newValue);
521
546
  if (handleChange && !areValuesEqual(newValue, valueDerived)) {
@@ -547,14 +572,16 @@ export function useSlider(parameters) {
547
572
  });
548
573
  return () => {
549
574
  slider.removeEventListener('touchstart', handleTouchStart);
575
+ cancelFocusFrame();
550
576
  stopListening();
551
577
  };
552
- }, [stopListening, handleTouchStart]);
578
+ }, [stopListening, handleTouchStart, cancelFocusFrame]);
553
579
  React.useEffect(() => {
554
580
  if (disabled) {
555
581
  stopListening();
582
+ cancelFocusFrame();
556
583
  }
557
- }, [disabled, stopListening]);
584
+ }, [disabled, stopListening, cancelFocusFrame]);
558
585
  const createHandleMouseDown = otherHandlers => event => {
559
586
  otherHandlers.onMouseDown?.(event);
560
587
  if (disabled) {
@@ -568,9 +595,6 @@ export function useSlider(parameters) {
568
595
  if (event.button !== 0) {
569
596
  return;
570
597
  }
571
-
572
- // Avoid text selection
573
- event.preventDefault();
574
598
  const finger = trackFinger(event, touchId);
575
599
  if (finger !== false) {
576
600
  const {
@@ -579,11 +603,23 @@ export function useSlider(parameters) {
579
603
  } = getFingerNewValue({
580
604
  finger
581
605
  });
582
- focusThumb({
583
- sliderRef,
584
- activeIndex,
585
- setActive
586
- });
606
+ const doc = ownerDocument(sliderRef.current);
607
+ const activeElement = doc.activeElement;
608
+ const pressedOnFocusedThumb = sliderRef.current?.contains(activeElement) && Number(activeElement?.getAttribute('data-index')) === activeIndex;
609
+ setActive(activeIndex);
610
+ if (pressedOnFocusedThumb) {
611
+ event.preventDefault();
612
+ } else {
613
+ cancelFocusFrame();
614
+ focusFrame.current = requestAnimationFrame(() => {
615
+ focusFrame.current = null;
616
+ focusThumb({
617
+ sliderRef,
618
+ activeIndex,
619
+ focusVisible: false
620
+ });
621
+ });
622
+ }
587
623
  setValueState(newValue);
588
624
  if (handleChange && !areValuesEqual(newValue, valueDerived)) {
589
625
  handleChange(event, newValue, activeIndex);
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { SxProps } from '@mui/system';
3
- import ClickAwayListener, { ClickAwayListenerProps } from "../ClickAwayListener/index.mjs";
3
+ import ClickAwayListener from "../ClickAwayListener/index.mjs";
4
4
  import { Theme } from "../styles/index.mjs";
5
5
  import { InternalStandardProps as StandardProps } from "../internal/index.mjs";
6
6
  import { SnackbarContentProps } from "../SnackbarContent/index.mjs";
@@ -89,16 +89,6 @@ export interface SnackbarProps extends Omit<StandardProps<React.HTMLAttributes<H
89
89
  * Override or extend the styles applied to the component.
90
90
  */
91
91
  classes?: Partial<SnackbarClasses> | undefined;
92
- /**
93
- * Props applied to the `ClickAwayListener` element.
94
- * @deprecated Use `slotProps.clickAwayListener` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
95
- */
96
- ClickAwayListenerProps?: Partial<ClickAwayListenerProps> | undefined;
97
- /**
98
- * Props applied to the [`SnackbarContent`](https://mui.com/material-ui/api/snackbar-content/) element.
99
- * @deprecated Use `slotProps.content` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
100
- */
101
- ContentProps?: Partial<SnackbarContentProps> | undefined;
102
92
  /**
103
93
  * If `true`, the `autoHideDuration` timer will expire even if the window is not focused.
104
94
  * @default false
@@ -141,15 +131,6 @@ export interface SnackbarProps extends Omit<StandardProps<React.HTMLAttributes<H
141
131
  * The system prop that allows defining system overrides as well as additional CSS styles.
142
132
  */
143
133
  sx?: SxProps<Theme> | undefined;
144
- /**
145
- * The component used for the transition.
146
- * [Follow this guide](https://mui.com/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
147
- * @deprecated Use `slots.transition` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
148
- * @default Grow
149
- */
150
- TransitionComponent?: React.JSXElementConstructor<TransitionProps & {
151
- children: React.ReactElement<unknown, any>;
152
- }> | undefined;
153
134
  /**
154
135
  * The duration for the transition, in milliseconds.
155
136
  * You may specify a single timeout for all transitions, or individually with an object.
@@ -159,13 +140,6 @@ export interface SnackbarProps extends Omit<StandardProps<React.HTMLAttributes<H
159
140
  * }
160
141
  */
161
142
  transitionDuration?: TransitionProps['timeout'] | undefined;
162
- /**
163
- * Props applied to the transition element.
164
- * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
165
- * @deprecated Use `slotProps.transition` instead. This prop will be removed in a future major release. See [Migrating from deprecated APIs](/material-ui/migration/migrating-from-deprecated-apis/) for more details.
166
- * @default {}
167
- */
168
- TransitionProps?: TransitionProps | undefined;
169
143
  }
170
144
 
171
145
  /**