@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.
- package/Accordion/Accordion.d.mts +0 -14
- package/Accordion/Accordion.d.ts +0 -14
- package/Accordion/Accordion.js +3 -25
- package/Accordion/Accordion.mjs +3 -25
- package/AccordionSummary/AccordionSummary.js +1 -1
- package/AccordionSummary/AccordionSummary.mjs +1 -1
- package/AccordionSummary/accordionSummaryClasses.d.mts +0 -5
- package/AccordionSummary/accordionSummaryClasses.d.ts +0 -5
- package/AccordionSummary/accordionSummaryClasses.js +1 -1
- package/AccordionSummary/accordionSummaryClasses.mjs +1 -1
- package/Alert/Alert.d.mts +0 -23
- package/Alert/Alert.d.ts +0 -23
- package/Alert/Alert.js +4 -36
- package/Alert/Alert.mjs +4 -36
- package/Alert/alertClasses.d.mts +0 -72
- package/Alert/alertClasses.d.ts +0 -72
- package/Alert/alertClasses.js +1 -1
- package/Alert/alertClasses.mjs +1 -1
- package/Autocomplete/Autocomplete.d.mts +26 -60
- package/Autocomplete/Autocomplete.d.ts +26 -60
- package/Autocomplete/Autocomplete.js +76 -119
- package/Autocomplete/Autocomplete.mjs +76 -119
- package/Avatar/Avatar.d.mts +0 -8
- package/Avatar/Avatar.d.ts +0 -8
- package/Avatar/Avatar.js +13 -35
- package/Avatar/Avatar.mjs +13 -35
- package/AvatarGroup/AvatarGroup.d.mts +0 -15
- package/AvatarGroup/AvatarGroup.d.ts +0 -15
- package/AvatarGroup/AvatarGroup.js +1 -18
- package/AvatarGroup/AvatarGroup.mjs +1 -18
- package/Backdrop/Backdrop.d.mts +1 -31
- package/Backdrop/Backdrop.d.ts +1 -31
- package/Backdrop/Backdrop.js +2 -42
- package/Backdrop/Backdrop.mjs +2 -42
- package/Badge/Badge.d.mts +0 -20
- package/Badge/Badge.d.ts +0 -20
- package/Badge/Badge.js +2 -35
- package/Badge/Badge.mjs +2 -35
- package/Box/Box.d.mts +1 -0
- package/Box/Box.d.ts +1 -0
- package/Button/Button.d.mts +1 -0
- package/Button/Button.d.ts +1 -0
- package/Button/Button.js +6 -6
- package/Button/Button.mjs +6 -6
- package/Button/buttonClasses.d.mts +0 -132
- package/Button/buttonClasses.d.ts +0 -132
- package/Button/buttonClasses.js +1 -1
- package/Button/buttonClasses.mjs +1 -1
- package/ButtonBase/ButtonBase.js +16 -2
- package/ButtonBase/ButtonBase.mjs +16 -2
- package/CHANGELOG.md +191 -0
- package/CardHeader/CardHeader.js +5 -1
- package/CardHeader/CardHeader.mjs +5 -1
- package/CircularProgress/CircularProgress.js +2 -2
- package/CircularProgress/CircularProgress.mjs +2 -2
- package/CircularProgress/circularProgressClasses.d.mts +0 -8
- package/CircularProgress/circularProgressClasses.d.ts +0 -8
- package/CircularProgress/circularProgressClasses.js +1 -1
- package/CircularProgress/circularProgressClasses.mjs +1 -1
- package/Divider/Divider.d.mts +1 -6
- package/Divider/Divider.d.ts +1 -6
- package/Divider/Divider.js +2 -18
- package/Divider/Divider.mjs +2 -18
- package/Divider/dividerClasses.d.mts +0 -4
- package/Divider/dividerClasses.d.ts +0 -4
- package/Divider/dividerClasses.js +1 -1
- package/Divider/dividerClasses.mjs +1 -1
- package/FormControlLabel/FormControlLabel.d.mts +1 -14
- package/FormControlLabel/FormControlLabel.d.ts +1 -14
- package/FormControlLabel/FormControlLabel.js +1 -13
- package/FormControlLabel/FormControlLabel.mjs +1 -13
- package/Input/Input.js +2 -1
- package/Input/Input.mjs +2 -1
- package/List/List.d.mts +1 -0
- package/List/List.d.ts +1 -0
- package/ListItemButton/ListItemButton.d.mts +1 -0
- package/ListItemButton/ListItemButton.d.ts +1 -0
- package/ListItemIcon/ListItemIcon.d.mts +1 -0
- package/ListItemIcon/ListItemIcon.d.ts +1 -0
- package/ListItemText/ListItemText.d.mts +1 -0
- package/ListItemText/ListItemText.d.ts +1 -0
- package/ListItemText/ListItemText.js +5 -1
- package/ListItemText/ListItemText.mjs +5 -1
- package/ListSubheader/ListSubheader.d.mts +1 -0
- package/ListSubheader/ListSubheader.d.ts +1 -0
- package/Menu/Menu.d.mts +0 -13
- package/Menu/Menu.d.ts +0 -13
- package/Menu/Menu.js +5 -44
- package/Menu/Menu.mjs +5 -44
- package/MenuItem/MenuItem.js +21 -1
- package/MenuItem/MenuItem.mjs +23 -1
- package/MenuList/MenuList.js +77 -109
- package/MenuList/MenuList.mjs +77 -109
- package/MobileStepper/MobileStepper.d.mts +0 -5
- package/MobileStepper/MobileStepper.d.ts +0 -5
- package/MobileStepper/MobileStepper.js +1 -10
- package/MobileStepper/MobileStepper.mjs +1 -10
- package/Paper/Paper.d.mts +1 -0
- package/Paper/Paper.d.ts +1 -0
- package/Popover/Popover.d.mts +4 -48
- package/Popover/Popover.d.ts +4 -48
- package/Popover/Popover.js +4 -64
- package/Popover/Popover.mjs +4 -64
- package/Popper/Popper.d.mts +0 -17
- package/Popper/Popper.d.ts +0 -17
- package/Popper/Popper.js +2 -26
- package/Popper/Popper.mjs +2 -26
- package/Popper/index.d.mts +1 -0
- package/Popper/index.d.ts +1 -0
- package/Popper/index.js +11 -2
- package/Popper/index.mjs +1 -0
- package/Select/SelectInput.js +50 -55
- package/Select/SelectInput.mjs +47 -52
- package/Select/index.d.mts +1 -0
- package/Select/index.d.ts +1 -0
- package/Select/index.js +12 -0
- package/Select/index.mjs +1 -0
- package/Select/utils/SelectFocusSourceContext.d.mts +4 -0
- package/Select/utils/SelectFocusSourceContext.d.ts +4 -0
- package/Select/utils/SelectFocusSourceContext.js +19 -0
- package/Select/utils/SelectFocusSourceContext.mjs +13 -0
- package/Select/utils/areEqualValues.d.mts +1 -0
- package/Select/utils/areEqualValues.d.ts +1 -0
- package/Select/utils/areEqualValues.js +14 -0
- package/Select/utils/areEqualValues.mjs +8 -0
- package/Select/utils/getOpenInteractionType.d.mts +1 -0
- package/Select/utils/getOpenInteractionType.d.ts +1 -0
- package/Select/utils/getOpenInteractionType.js +18 -0
- package/Select/utils/getOpenInteractionType.mjs +12 -0
- package/Select/utils/index.d.mts +4 -0
- package/Select/utils/index.d.ts +4 -0
- package/Select/utils/index.js +40 -0
- package/Select/utils/index.mjs +4 -0
- package/Select/utils/isEmpty.d.mts +1 -0
- package/Select/utils/isEmpty.d.ts +1 -0
- package/Select/utils/isEmpty.js +9 -0
- package/Select/utils/isEmpty.mjs +3 -0
- package/Slider/Slider.d.mts +109 -77
- package/Slider/Slider.d.ts +109 -77
- package/Slider/Slider.js +42 -119
- package/Slider/Slider.mjs +42 -119
- package/Slider/sliderClasses.d.mts +7 -7
- package/Slider/sliderClasses.d.ts +7 -7
- package/Slider/useSlider.js +50 -14
- package/Slider/useSlider.mjs +50 -14
- package/Snackbar/Snackbar.d.mts +1 -27
- package/Snackbar/Snackbar.d.ts +1 -27
- package/Snackbar/Snackbar.js +5 -58
- package/Snackbar/Snackbar.mjs +5 -58
- package/SpeedDial/SpeedDial.d.mts +0 -13
- package/SpeedDial/SpeedDial.d.ts +0 -13
- package/SpeedDial/SpeedDial.js +15 -40
- package/SpeedDial/SpeedDial.mjs +15 -40
- package/SpeedDialAction/SpeedDialAction.d.mts +0 -28
- package/SpeedDialAction/SpeedDialAction.d.ts +0 -28
- package/SpeedDialAction/SpeedDialAction.js +5 -46
- package/SpeedDialAction/SpeedDialAction.mjs +5 -46
- package/Step/Step.js +7 -5
- package/Step/Step.mjs +7 -5
- package/StepButton/StepButton.js +16 -6
- package/StepButton/StepButton.mjs +16 -6
- package/StepConnector/StepConnector.js +2 -2
- package/StepConnector/StepConnector.mjs +2 -2
- package/StepContent/StepContent.js +2 -2
- package/StepContent/StepContent.mjs +2 -2
- package/StepLabel/StepLabel.js +2 -2
- package/StepLabel/StepLabel.mjs +2 -2
- package/Stepper/Stepper.js +44 -7
- package/Stepper/Stepper.mjs +44 -7
- package/Stepper/StepperContext.d.mts +7 -0
- package/Stepper/StepperContext.d.ts +7 -0
- package/Stepper/StepperContext.js +2 -1
- package/Stepper/StepperContext.mjs +1 -0
- package/Stepper/index.d.mts +0 -1
- package/Stepper/index.d.ts +0 -1
- package/Tab/Tab.js +0 -1
- package/Tab/Tab.mjs +0 -1
- package/TablePagination/TablePagination.d.mts +1 -1
- package/TablePagination/TablePagination.d.ts +1 -1
- package/TablePagination/TablePagination.js +4 -2
- package/TablePagination/TablePagination.mjs +4 -2
- package/Tabs/Tabs.d.mts +2 -33
- package/Tabs/Tabs.d.ts +2 -33
- package/Tabs/Tabs.js +54 -135
- package/Tabs/Tabs.mjs +54 -135
- package/TextField/TextField.d.mts +6 -49
- package/TextField/TextField.d.ts +6 -49
- package/TextField/TextField.js +18 -53
- package/TextField/TextField.mjs +18 -53
- package/Tooltip/Tooltip.d.mts +1 -55
- package/Tooltip/Tooltip.d.ts +1 -55
- package/Tooltip/Tooltip.js +9 -87
- package/Tooltip/Tooltip.mjs +9 -87
- package/Typography/Typography.d.mts +1 -6
- package/Typography/Typography.d.ts +1 -6
- package/Typography/Typography.js +3 -19
- package/Typography/Typography.mjs +3 -19
- package/Typography/typographyClasses.d.mts +0 -5
- package/Typography/typographyClasses.d.ts +0 -5
- package/Typography/typographyClasses.js +1 -1
- package/Typography/typographyClasses.mjs +1 -1
- package/index.d.mts +0 -2
- package/index.d.ts +0 -2
- package/index.js +1 -9
- package/index.mjs +1 -2
- package/locale/amET.js +4 -1
- package/locale/amET.mjs +3 -1
- package/locale/arEG.js +4 -1
- package/locale/arEG.mjs +3 -1
- package/locale/arSA.js +4 -1
- package/locale/arSA.mjs +3 -1
- package/locale/arSD.js +4 -1
- package/locale/arSD.mjs +3 -1
- package/locale/beBY.js +4 -1
- package/locale/beBY.mjs +3 -1
- package/locale/bnBD.js +4 -1
- package/locale/bnBD.mjs +3 -1
- package/locale/caES.js +4 -1
- package/locale/caES.mjs +3 -1
- package/locale/csCZ.js +4 -1
- package/locale/csCZ.mjs +3 -1
- package/locale/daDK.js +4 -1
- package/locale/daDK.mjs +3 -1
- package/locale/deDE.js +4 -1
- package/locale/deDE.mjs +3 -1
- package/locale/elGR.js +4 -1
- package/locale/elGR.mjs +3 -1
- package/locale/esES.js +4 -1
- package/locale/esES.mjs +3 -1
- package/locale/etEE.js +4 -1
- package/locale/etEE.mjs +3 -1
- package/locale/faIR.js +4 -1
- package/locale/faIR.mjs +3 -1
- package/locale/fiFI.js +4 -1
- package/locale/fiFI.mjs +3 -1
- package/locale/frFR.js +4 -1
- package/locale/frFR.mjs +3 -1
- package/locale/heIL.js +4 -1
- package/locale/heIL.mjs +3 -1
- package/locale/hiIN.js +4 -1
- package/locale/hiIN.mjs +3 -1
- package/locale/hrHR.js +5 -1
- package/locale/hrHR.mjs +4 -1
- package/locale/isIS.js +4 -1
- package/locale/isIS.mjs +3 -1
- package/locale/itIT.js +4 -1
- package/locale/itIT.mjs +3 -1
- package/locale/jaJP.js +4 -1
- package/locale/jaJP.mjs +3 -1
- package/locale/khKH.js +4 -1
- package/locale/khKH.mjs +3 -1
- package/locale/kkKZ.js +4 -1
- package/locale/kkKZ.mjs +3 -1
- package/locale/koKR.js +4 -1
- package/locale/koKR.mjs +3 -1
- package/locale/kuCKB.js +4 -1
- package/locale/kuCKB.mjs +3 -1
- package/locale/kuLatn.js +4 -1
- package/locale/kuLatn.mjs +3 -1
- package/locale/mkMK.js +5 -1
- package/locale/mkMK.mjs +4 -1
- package/locale/msMS.js +5 -1
- package/locale/msMS.mjs +4 -1
- package/locale/myMY.js +5 -1
- package/locale/myMY.mjs +4 -1
- package/locale/nbNO.js +4 -1
- package/locale/nbNO.mjs +3 -1
- package/locale/neNP.js +5 -1
- package/locale/neNP.mjs +4 -1
- package/locale/nlNL.js +4 -1
- package/locale/nlNL.mjs +3 -1
- package/locale/nnNO.js +4 -1
- package/locale/nnNO.mjs +3 -1
- package/locale/plPL.js +4 -1
- package/locale/plPL.mjs +3 -1
- package/locale/psAF.js +4 -1
- package/locale/psAF.mjs +3 -1
- package/locale/ptBR.js +4 -1
- package/locale/ptBR.mjs +3 -1
- package/locale/ptPT.js +4 -1
- package/locale/ptPT.mjs +3 -1
- package/locale/roRO.js +4 -1
- package/locale/roRO.mjs +3 -1
- package/locale/ruRU.js +4 -1
- package/locale/ruRU.mjs +3 -1
- package/locale/siLK.js +4 -1
- package/locale/siLK.mjs +3 -1
- package/locale/skSK.js +4 -1
- package/locale/skSK.mjs +3 -1
- package/locale/srRS.js +5 -1
- package/locale/srRS.mjs +4 -1
- package/locale/svSE.js +4 -1
- package/locale/svSE.mjs +3 -1
- package/locale/thTH.js +4 -1
- package/locale/thTH.mjs +3 -1
- package/locale/tlTL.js +5 -1
- package/locale/tlTL.mjs +4 -1
- package/locale/trTR.js +4 -1
- package/locale/trTR.mjs +3 -1
- package/locale/ukUA.js +4 -1
- package/locale/ukUA.mjs +3 -1
- package/locale/urPK.js +4 -1
- package/locale/urPK.mjs +3 -1
- package/locale/utils/buildFormatNumber.d.mts +2 -0
- package/locale/utils/buildFormatNumber.d.ts +2 -0
- package/locale/utils/buildFormatNumber.js +23 -0
- package/locale/utils/buildFormatNumber.mjs +17 -0
- package/locale/viVN.js +4 -1
- package/locale/viVN.mjs +3 -1
- package/locale/zhCN.js +4 -1
- package/locale/zhCN.mjs +3 -1
- package/locale/zhHK.js +4 -1
- package/locale/zhHK.mjs +3 -1
- package/locale/zhTW.js +4 -1
- package/locale/zhTW.mjs +3 -1
- package/package.json +236 -236
- package/styles/components.d.mts +0 -5
- package/styles/components.d.ts +0 -5
- package/styles/overrides.d.mts +0 -2
- package/styles/overrides.d.ts +0 -2
- package/styles/props.d.mts +0 -2
- package/styles/props.d.ts +0 -2
- package/themeCssVarsAugmentation/index.js +5 -0
- package/themeCssVarsAugmentation/index.mjs +5 -0
- package/useAutocomplete/useAutocomplete.d.mts +0 -12
- package/useAutocomplete/useAutocomplete.d.ts +0 -12
- package/useAutocomplete/useAutocomplete.js +53 -28
- package/useAutocomplete/useAutocomplete.mjs +53 -28
- package/utils/index.d.mts +2 -0
- package/utils/index.d.ts +2 -0
- package/utils/index.js +14 -0
- package/utils/index.mjs +2 -0
- package/utils/useRovingTabIndex.d.mts +2 -0
- package/utils/useRovingTabIndex.d.ts +2 -0
- package/utils/useRovingTabIndex.js +9 -0
- package/utils/useRovingTabIndex.mjs +2 -0
- package/version/index.js +2 -2
- package/version/index.mjs +2 -2
- package/GridLegacy/GridLegacy.d.mts +0 -160
- package/GridLegacy/GridLegacy.d.ts +0 -160
- package/GridLegacy/GridLegacy.js +0 -601
- package/GridLegacy/GridLegacy.mjs +0 -588
- package/GridLegacy/GridLegacyContext.js +0 -17
- package/GridLegacy/GridLegacyContext.mjs +0 -12
- package/GridLegacy/gridLegacyClasses.d.mts +0 -48
- package/GridLegacy/gridLegacyClasses.d.ts +0 -48
- package/GridLegacy/gridLegacyClasses.js +0 -27
- package/GridLegacy/gridLegacyClasses.mjs +0 -19
- package/GridLegacy/index.d.mts +0 -4
- package/GridLegacy/index.d.ts +0 -4
- package/GridLegacy/index.js +0 -35
- 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(
|
|
549
|
+
const Slider = /*#__PURE__*/React.forwardRef(function Slider(inProps, ref) {
|
|
551
550
|
const props = useDefaultProps({
|
|
552
|
-
props:
|
|
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
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
const
|
|
639
|
-
|
|
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
|
-
|
|
656
|
-
|
|
657
|
-
|
|
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 =
|
|
669
|
-
elementType:
|
|
670
|
-
|
|
643
|
+
const [RailSlot, railProps] = useSlot('rail', {
|
|
644
|
+
elementType: SliderRail,
|
|
645
|
+
externalForwardedProps,
|
|
671
646
|
ownerState,
|
|
672
647
|
className: classes.rail
|
|
673
648
|
});
|
|
674
|
-
const trackProps =
|
|
675
|
-
elementType:
|
|
676
|
-
|
|
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 =
|
|
690
|
-
elementType:
|
|
661
|
+
const [ThumbSlot, thumbProps] = useSlot('thumb', {
|
|
662
|
+
elementType: SliderThumb,
|
|
691
663
|
getSlotProps: getThumbProps,
|
|
692
|
-
|
|
693
|
-
ownerState
|
|
694
|
-
...ownerState,
|
|
695
|
-
...thumbSlotProps?.ownerState
|
|
696
|
-
},
|
|
664
|
+
externalForwardedProps,
|
|
665
|
+
ownerState,
|
|
697
666
|
className: classes.thumb
|
|
698
667
|
});
|
|
699
|
-
const valueLabelProps =
|
|
700
|
-
elementType:
|
|
701
|
-
|
|
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 =
|
|
709
|
-
elementType:
|
|
710
|
-
|
|
674
|
+
const [MarkSlot, markProps] = useSlot('mark', {
|
|
675
|
+
elementType: SliderMark,
|
|
676
|
+
externalForwardedProps,
|
|
711
677
|
ownerState,
|
|
712
678
|
className: classes.mark
|
|
713
679
|
});
|
|
714
|
-
const markLabelProps =
|
|
715
|
-
elementType:
|
|
716
|
-
|
|
680
|
+
const [MarkLabelSlot, markLabelProps] = useSlot('markLabel', {
|
|
681
|
+
elementType: SliderMarkLabel,
|
|
682
|
+
externalForwardedProps,
|
|
717
683
|
ownerState,
|
|
718
684
|
className: classes.markLabel
|
|
719
685
|
});
|
|
720
|
-
const inputSliderProps =
|
|
721
|
-
elementType:
|
|
686
|
+
const [InputSliderSlot, inputSliderProps] = useSlot('input', {
|
|
687
|
+
elementType: 'input',
|
|
722
688
|
getSlotProps: getHiddenInputProps,
|
|
723
|
-
|
|
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(
|
|
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
|
|
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
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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/#
|
|
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. */
|
package/Slider/useSlider.js
CHANGED
|
@@ -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}"]`)
|
|
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
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
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);
|
package/Slider/useSlider.mjs
CHANGED
|
@@ -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}"]`)
|
|
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
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
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);
|
package/Snackbar/Snackbar.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { SxProps } from '@mui/system';
|
|
3
|
-
import ClickAwayListener
|
|
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
|
/**
|