@mui/material 9.0.0-alpha.1 → 9.0.0-alpha.3

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 (74) hide show
  1. package/Autocomplete/Autocomplete.d.mts +16 -0
  2. package/Autocomplete/Autocomplete.d.ts +16 -0
  3. package/Autocomplete/Autocomplete.js +48 -25
  4. package/Autocomplete/Autocomplete.mjs +48 -25
  5. package/Box/Box.d.mts +1 -0
  6. package/Box/Box.d.ts +1 -0
  7. package/Button/Button.d.mts +1 -0
  8. package/Button/Button.d.ts +1 -0
  9. package/CHANGELOG.md +65 -0
  10. package/CardHeader/CardHeader.js +1 -0
  11. package/CardHeader/CardHeader.mjs +1 -0
  12. package/Divider/Divider.d.mts +1 -0
  13. package/Divider/Divider.d.ts +1 -0
  14. package/List/List.d.mts +1 -0
  15. package/List/List.d.ts +1 -0
  16. package/ListItemButton/ListItemButton.d.mts +1 -0
  17. package/ListItemButton/ListItemButton.d.ts +1 -0
  18. package/ListItemIcon/ListItemIcon.d.mts +1 -0
  19. package/ListItemIcon/ListItemIcon.d.ts +1 -0
  20. package/ListItemText/ListItemText.d.mts +1 -0
  21. package/ListItemText/ListItemText.d.ts +1 -0
  22. package/ListItemText/ListItemText.js +1 -0
  23. package/ListItemText/ListItemText.mjs +1 -0
  24. package/ListSubheader/ListSubheader.d.mts +1 -0
  25. package/ListSubheader/ListSubheader.d.ts +1 -0
  26. package/MenuList/MenuList.js +76 -106
  27. package/MenuList/MenuList.mjs +76 -106
  28. package/Paper/Paper.d.mts +1 -0
  29. package/Paper/Paper.d.ts +1 -0
  30. package/SpeedDialIcon/SpeedDialIcon.js +4 -10
  31. package/SpeedDialIcon/SpeedDialIcon.mjs +4 -10
  32. package/Step/Step.js +7 -5
  33. package/Step/Step.mjs +7 -5
  34. package/StepButton/StepButton.js +16 -6
  35. package/StepButton/StepButton.mjs +16 -6
  36. package/StepConnector/StepConnector.js +2 -2
  37. package/StepConnector/StepConnector.mjs +2 -2
  38. package/StepContent/StepContent.js +2 -2
  39. package/StepContent/StepContent.mjs +2 -2
  40. package/StepIcon/StepIcon.js +1 -4
  41. package/StepIcon/StepIcon.mjs +1 -4
  42. package/StepLabel/StepLabel.js +3 -7
  43. package/StepLabel/StepLabel.mjs +3 -7
  44. package/Stepper/Stepper.js +44 -7
  45. package/Stepper/Stepper.mjs +44 -7
  46. package/Stepper/StepperContext.d.mts +7 -0
  47. package/Stepper/StepperContext.d.ts +7 -0
  48. package/Stepper/StepperContext.js +2 -1
  49. package/Stepper/StepperContext.mjs +1 -0
  50. package/Stepper/index.d.mts +0 -1
  51. package/Stepper/index.d.ts +0 -1
  52. package/Tab/Tab.js +0 -1
  53. package/Tab/Tab.mjs +0 -1
  54. package/Tabs/Tabs.js +46 -97
  55. package/Tabs/Tabs.mjs +46 -97
  56. package/Typography/Typography.d.mts +1 -0
  57. package/Typography/Typography.d.ts +1 -0
  58. package/index.js +1 -1
  59. package/index.mjs +1 -1
  60. package/package.json +20 -6
  61. package/themeCssVarsAugmentation/index.js +5 -0
  62. package/themeCssVarsAugmentation/index.mjs +5 -0
  63. package/useAutocomplete/useAutocomplete.js +24 -0
  64. package/useAutocomplete/useAutocomplete.mjs +24 -0
  65. package/utils/index.d.mts +2 -0
  66. package/utils/index.d.ts +2 -0
  67. package/utils/index.js +14 -0
  68. package/utils/index.mjs +2 -0
  69. package/utils/useRovingTabIndex.d.mts +2 -0
  70. package/utils/useRovingTabIndex.d.ts +2 -0
  71. package/utils/useRovingTabIndex.js +9 -0
  72. package/utils/useRovingTabIndex.mjs +2 -0
  73. package/version/index.js +2 -2
  74. package/version/index.mjs +2 -2
@@ -9,7 +9,7 @@ import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
9
9
  import ButtonBase from "../ButtonBase/index.mjs";
10
10
  import StepLabel from "../StepLabel/index.mjs";
11
11
  import isMuiElement from "../utils/isMuiElement.mjs";
12
- import StepperContext from "../Stepper/StepperContext.mjs";
12
+ import { useStepperContext } from "../Stepper/StepperContext.mjs";
13
13
  import StepContext from "../Step/StepContext.mjs";
14
14
  import stepButtonClasses, { getStepButtonUtilityClass } from "./stepButtonClasses.mjs";
15
15
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -68,11 +68,14 @@ const StepButton = /*#__PURE__*/React.forwardRef(function StepButton(inProps, re
68
68
  } = props;
69
69
  const {
70
70
  disabled,
71
- active
71
+ active,
72
+ index
72
73
  } = React.useContext(StepContext);
73
74
  const {
74
- orientation
75
- } = React.useContext(StepperContext);
75
+ orientation,
76
+ totalSteps,
77
+ getRovingTabIndexProps
78
+ } = useStepperContext();
76
79
  const ownerState = {
77
80
  ...props,
78
81
  orientation
@@ -86,6 +89,10 @@ const StepButton = /*#__PURE__*/React.forwardRef(function StepButton(inProps, re
86
89
  ...childProps,
87
90
  children: children
88
91
  });
92
+ const rovingTabIndexItemProps = getRovingTabIndexProps?.(index, ref) ?? {
93
+ ref,
94
+ tabIndex: active ? 0 : -1
95
+ };
89
96
  return /*#__PURE__*/_jsx(StepButtonRoot, {
90
97
  focusRipple: true,
91
98
  disabled: disabled,
@@ -93,9 +100,12 @@ const StepButton = /*#__PURE__*/React.forwardRef(function StepButton(inProps, re
93
100
  className: classes.touchRipple
94
101
  },
95
102
  className: clsx(classes.root, className),
96
- ref: ref,
97
103
  ownerState: ownerState,
98
- "aria-current": active ? 'step' : undefined,
104
+ "aria-selected": active,
105
+ "aria-posinset": index + 1,
106
+ "aria-setsize": totalSteps,
107
+ role: "tab",
108
+ ...rovingTabIndexItemProps,
99
109
  ...other,
100
110
  children: child
101
111
  });
@@ -15,7 +15,7 @@ var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
15
15
  var _zeroStyled = require("../zero-styled");
16
16
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
17
17
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
18
- var _StepperContext = _interopRequireDefault(require("../Stepper/StepperContext"));
18
+ var _StepperContext = require("../Stepper/StepperContext");
19
19
  var _StepContext = _interopRequireDefault(require("../Step/StepContext"));
20
20
  var _stepConnectorClasses = require("./stepConnectorClasses");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
@@ -112,7 +112,7 @@ const StepConnector = /*#__PURE__*/React.forwardRef(function StepConnector(inPro
112
112
  const {
113
113
  alternativeLabel,
114
114
  orientation = 'horizontal'
115
- } = React.useContext(_StepperContext.default);
115
+ } = (0, _StepperContext.useStepperContext)();
116
116
  const {
117
117
  active,
118
118
  disabled,
@@ -8,7 +8,7 @@ import capitalize from "../utils/capitalize.mjs";
8
8
  import { styled } from "../zero-styled/index.mjs";
9
9
  import memoTheme from "../utils/memoTheme.mjs";
10
10
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
11
- import StepperContext from "../Stepper/StepperContext.mjs";
11
+ import { useStepperContext } from "../Stepper/StepperContext.mjs";
12
12
  import StepContext from "../Step/StepContext.mjs";
13
13
  import { getStepConnectorUtilityClass } from "./stepConnectorClasses.mjs";
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -105,7 +105,7 @@ const StepConnector = /*#__PURE__*/React.forwardRef(function StepConnector(inPro
105
105
  const {
106
106
  alternativeLabel,
107
107
  orientation = 'horizontal'
108
- } = React.useContext(StepperContext);
108
+ } = useStepperContext();
109
109
  const {
110
110
  active,
111
111
  disabled,
@@ -15,7 +15,7 @@ var _zeroStyled = require("../zero-styled");
15
15
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
16
16
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
17
17
  var _Collapse = _interopRequireDefault(require("../Collapse"));
18
- var _StepperContext = _interopRequireDefault(require("../Stepper/StepperContext"));
18
+ var _StepperContext = require("../Stepper/StepperContext");
19
19
  var _StepContext = _interopRequireDefault(require("../Step/StepContext"));
20
20
  var _stepContentClasses = require("./stepContentClasses");
21
21
  var _useSlot = _interopRequireDefault(require("../utils/useSlot"));
@@ -79,7 +79,7 @@ const StepContent = /*#__PURE__*/React.forwardRef(function StepContent(inProps,
79
79
  } = props;
80
80
  const {
81
81
  orientation
82
- } = React.useContext(_StepperContext.default);
82
+ } = (0, _StepperContext.useStepperContext)();
83
83
  const {
84
84
  active,
85
85
  last,
@@ -8,7 +8,7 @@ import { styled } from "../zero-styled/index.mjs";
8
8
  import memoTheme from "../utils/memoTheme.mjs";
9
9
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
10
10
  import Collapse from "../Collapse/index.mjs";
11
- import StepperContext from "../Stepper/StepperContext.mjs";
11
+ import { useStepperContext } from "../Stepper/StepperContext.mjs";
12
12
  import StepContext from "../Step/StepContext.mjs";
13
13
  import { getStepContentUtilityClass } from "./stepContentClasses.mjs";
14
14
  import useSlot from "../utils/useSlot.mjs";
@@ -72,7 +72,7 @@ const StepContent = /*#__PURE__*/React.forwardRef(function StepContent(inProps,
72
72
  } = props;
73
73
  const {
74
74
  orientation
75
- } = React.useContext(StepperContext);
75
+ } = useStepperContext();
76
76
  const {
77
77
  active,
78
78
  last,
@@ -44,10 +44,7 @@ const StepIconRoot = (0, _zeroStyled.styled)(_SvgIcon.default, {
44
44
  duration: theme.transitions.duration.shortest
45
45
  }),
46
46
  color: (theme.vars || theme).palette.text.disabled,
47
- [`&.${_stepIconClasses.default.completed}`]: {
48
- color: (theme.vars || theme).palette.primary.main
49
- },
50
- [`&.${_stepIconClasses.default.active}`]: {
47
+ [`&.${_stepIconClasses.default.completed}, &.${_stepIconClasses.default.active}`]: {
51
48
  color: (theme.vars || theme).palette.primary.main
52
49
  },
53
50
  [`&.${_stepIconClasses.default.error}`]: {
@@ -37,10 +37,7 @@ const StepIconRoot = styled(SvgIcon, {
37
37
  duration: theme.transitions.duration.shortest
38
38
  }),
39
39
  color: (theme.vars || theme).palette.text.disabled,
40
- [`&.${stepIconClasses.completed}`]: {
41
- color: (theme.vars || theme).palette.primary.main
42
- },
43
- [`&.${stepIconClasses.active}`]: {
40
+ [`&.${stepIconClasses.completed}, &.${stepIconClasses.active}`]: {
44
41
  color: (theme.vars || theme).palette.primary.main
45
42
  },
46
43
  [`&.${stepIconClasses.error}`]: {
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var React = _interopRequireWildcard(require("react"));
14
14
  var _StepContext = _interopRequireDefault(require("../Step/StepContext"));
15
15
  var _StepIcon = _interopRequireDefault(require("../StepIcon"));
16
- var _StepperContext = _interopRequireDefault(require("../Stepper/StepperContext"));
16
+ var _StepperContext = require("../Stepper/StepperContext");
17
17
  var _zeroStyled = require("../zero-styled");
18
18
  var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
19
19
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
@@ -77,11 +77,7 @@ const StepLabelLabel = (0, _zeroStyled.styled)('span', {
77
77
  transition: theme.transitions.create('color', {
78
78
  duration: theme.transitions.duration.shortest
79
79
  }),
80
- [`&.${_stepLabelClasses.default.active}`]: {
81
- color: (theme.vars || theme).palette.text.primary,
82
- fontWeight: 500
83
- },
84
- [`&.${_stepLabelClasses.default.completed}`]: {
80
+ [`&.${_stepLabelClasses.default.active}, &.${_stepLabelClasses.default.completed}`]: {
85
81
  color: (theme.vars || theme).palette.text.primary,
86
82
  fontWeight: 500
87
83
  },
@@ -136,7 +132,7 @@ const StepLabel = /*#__PURE__*/React.forwardRef(function StepLabel(inProps, ref)
136
132
  const {
137
133
  alternativeLabel,
138
134
  orientation
139
- } = React.useContext(_StepperContext.default);
135
+ } = (0, _StepperContext.useStepperContext)();
140
136
  const {
141
137
  active,
142
138
  disabled,
@@ -6,7 +6,7 @@ import PropTypes from 'prop-types';
6
6
  import * as React from 'react';
7
7
  import StepContext from "../Step/StepContext.mjs";
8
8
  import StepIcon from "../StepIcon/index.mjs";
9
- import StepperContext from "../Stepper/StepperContext.mjs";
9
+ import { useStepperContext } from "../Stepper/StepperContext.mjs";
10
10
  import { styled } from "../zero-styled/index.mjs";
11
11
  import memoTheme from "../utils/memoTheme.mjs";
12
12
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
@@ -70,11 +70,7 @@ const StepLabelLabel = styled('span', {
70
70
  transition: theme.transitions.create('color', {
71
71
  duration: theme.transitions.duration.shortest
72
72
  }),
73
- [`&.${stepLabelClasses.active}`]: {
74
- color: (theme.vars || theme).palette.text.primary,
75
- fontWeight: 500
76
- },
77
- [`&.${stepLabelClasses.completed}`]: {
73
+ [`&.${stepLabelClasses.active}, &.${stepLabelClasses.completed}`]: {
78
74
  color: (theme.vars || theme).palette.text.primary,
79
75
  fontWeight: 500
80
76
  },
@@ -129,7 +125,7 @@ const StepLabel = /*#__PURE__*/React.forwardRef(function StepLabel(inProps, ref)
129
125
  const {
130
126
  alternativeLabel,
131
127
  orientation
132
- } = React.useContext(StepperContext);
128
+ } = useStepperContext();
133
129
  const {
134
130
  active,
135
131
  disabled,
@@ -12,11 +12,14 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _integerPropType = _interopRequireDefault(require("@mui/utils/integerPropType"));
14
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
+ var _RtlProvider = require("@mui/system/RtlProvider");
16
+ var _useRovingTabIndex = _interopRequireDefault(require("../utils/useRovingTabIndex"));
15
17
  var _zeroStyled = require("../zero-styled");
16
18
  var _DefaultPropsProvider = require("../DefaultPropsProvider");
17
19
  var _stepperClasses = require("./stepperClasses");
18
20
  var _StepConnector = _interopRequireDefault(require("../StepConnector"));
19
- var _StepperContext = _interopRequireDefault(require("./StepperContext"));
21
+ var _StepperContext = require("./StepperContext");
22
+ var _StepButton = _interopRequireDefault(require("../StepButton"));
20
23
  var _jsxRuntime = require("react/jsx-runtime");
21
24
  const useUtilityClasses = ownerState => {
22
25
  const {
@@ -30,7 +33,7 @@ const useUtilityClasses = ownerState => {
30
33
  };
31
34
  return (0, _composeClasses.default)(slots, _stepperClasses.getStepperUtilityClass, classes);
32
35
  };
33
- const StepperRoot = (0, _zeroStyled.styled)('div', {
36
+ const StepperRoot = (0, _zeroStyled.styled)('ol', {
34
37
  name: 'MuiStepper',
35
38
  slot: 'Root',
36
39
  overridesResolver: (props, styles) => {
@@ -41,6 +44,9 @@ const StepperRoot = (0, _zeroStyled.styled)('div', {
41
44
  }
42
45
  })({
43
46
  display: 'flex',
47
+ listStyle: 'none',
48
+ margin: 0,
49
+ padding: 0,
44
50
  variants: [{
45
51
  props: {
46
52
  orientation: 'horizontal'
@@ -67,6 +73,7 @@ const StepperRoot = (0, _zeroStyled.styled)('div', {
67
73
  });
68
74
  const defaultConnector = /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepConnector.default, {});
69
75
  const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
76
+ const isRtl = (0, _RtlProvider.useRtl)();
70
77
  const props = (0, _DefaultPropsProvider.useDefaultProps)({
71
78
  props: inProps,
72
79
  name: 'MuiStepper'
@@ -76,7 +83,7 @@ const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
76
83
  alternativeLabel = false,
77
84
  children,
78
85
  className,
79
- component = 'div',
86
+ component = 'ol',
80
87
  connector = defaultConnector,
81
88
  nonLinear = false,
82
89
  orientation = 'horizontal',
@@ -91,27 +98,57 @@ const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
91
98
  };
92
99
  const classes = useUtilityClasses(ownerState);
93
100
  const childrenArray = React.Children.toArray(children).filter(Boolean);
101
+ const totalSteps = childrenArray.length;
102
+ const isTabList = childrenArray.some(child => {
103
+ if (! /*#__PURE__*/React.isValidElement(child)) {
104
+ return false;
105
+ }
106
+ if (child.type === _StepButton.default) {
107
+ return true;
108
+ }
109
+ const grandChildren = child.props.children;
110
+ if (grandChildren) {
111
+ return React.Children.toArray(grandChildren).some(grandChild => /*#__PURE__*/React.isValidElement(grandChild) && grandChild.type === _StepButton.default);
112
+ }
113
+ return false;
114
+ });
94
115
  const steps = childrenArray.map((step, index) => {
95
116
  return /*#__PURE__*/React.cloneElement(step, {
96
117
  index,
97
- last: index + 1 === childrenArray.length,
118
+ last: index + 1 === totalSteps,
98
119
  ...step.props
99
120
  });
100
121
  });
122
+ const {
123
+ getContainerProps,
124
+ getItemProps
125
+ } = (0, _useRovingTabIndex.default)({
126
+ orientation,
127
+ isRtl
128
+ });
129
+ const rovingTabIndexContainerProps = getContainerProps(ref);
101
130
  const contextValue = React.useMemo(() => ({
102
131
  activeStep,
103
132
  alternativeLabel,
104
133
  connector,
105
134
  nonLinear,
106
- orientation
107
- }), [activeStep, alternativeLabel, connector, nonLinear, orientation]);
108
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepperContext.default.Provider, {
135
+ orientation,
136
+ totalSteps,
137
+ getRovingTabIndexProps: getItemProps,
138
+ isTabList
139
+ }), [activeStep, alternativeLabel, connector, nonLinear, orientation, totalSteps, getItemProps, isTabList]);
140
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StepperContext.StepperContextProvider, {
109
141
  value: contextValue,
110
142
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(StepperRoot, {
111
143
  as: component,
112
144
  ownerState: ownerState,
113
145
  className: (0, _clsx.default)(classes.root, className),
114
146
  ref: ref,
147
+ ...(isTabList && {
148
+ role: 'tablist',
149
+ 'aria-orientation': orientation,
150
+ ...rovingTabIndexContainerProps
151
+ }),
115
152
  ...other,
116
153
  children: steps
117
154
  })
@@ -5,11 +5,14 @@ import PropTypes from 'prop-types';
5
5
  import clsx from 'clsx';
6
6
  import integerPropType from '@mui/utils/integerPropType';
7
7
  import composeClasses from '@mui/utils/composeClasses';
8
+ import { useRtl } from '@mui/system/RtlProvider';
9
+ import useRovingTabIndex from "../utils/useRovingTabIndex.mjs";
8
10
  import { styled } from "../zero-styled/index.mjs";
9
11
  import { useDefaultProps } from "../DefaultPropsProvider/index.mjs";
10
12
  import { getStepperUtilityClass } from "./stepperClasses.mjs";
11
13
  import StepConnector from "../StepConnector/index.mjs";
12
- import StepperContext from "./StepperContext.mjs";
14
+ import { StepperContextProvider } from "./StepperContext.mjs";
15
+ import StepButton from "../StepButton/index.mjs";
13
16
  import { jsx as _jsx } from "react/jsx-runtime";
14
17
  const useUtilityClasses = ownerState => {
15
18
  const {
@@ -23,7 +26,7 @@ const useUtilityClasses = ownerState => {
23
26
  };
24
27
  return composeClasses(slots, getStepperUtilityClass, classes);
25
28
  };
26
- const StepperRoot = styled('div', {
29
+ const StepperRoot = styled('ol', {
27
30
  name: 'MuiStepper',
28
31
  slot: 'Root',
29
32
  overridesResolver: (props, styles) => {
@@ -34,6 +37,9 @@ const StepperRoot = styled('div', {
34
37
  }
35
38
  })({
36
39
  display: 'flex',
40
+ listStyle: 'none',
41
+ margin: 0,
42
+ padding: 0,
37
43
  variants: [{
38
44
  props: {
39
45
  orientation: 'horizontal'
@@ -60,6 +66,7 @@ const StepperRoot = styled('div', {
60
66
  });
61
67
  const defaultConnector = /*#__PURE__*/_jsx(StepConnector, {});
62
68
  const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
69
+ const isRtl = useRtl();
63
70
  const props = useDefaultProps({
64
71
  props: inProps,
65
72
  name: 'MuiStepper'
@@ -69,7 +76,7 @@ const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
69
76
  alternativeLabel = false,
70
77
  children,
71
78
  className,
72
- component = 'div',
79
+ component = 'ol',
73
80
  connector = defaultConnector,
74
81
  nonLinear = false,
75
82
  orientation = 'horizontal',
@@ -84,27 +91,57 @@ const Stepper = /*#__PURE__*/React.forwardRef(function Stepper(inProps, ref) {
84
91
  };
85
92
  const classes = useUtilityClasses(ownerState);
86
93
  const childrenArray = React.Children.toArray(children).filter(Boolean);
94
+ const totalSteps = childrenArray.length;
95
+ const isTabList = childrenArray.some(child => {
96
+ if (! /*#__PURE__*/React.isValidElement(child)) {
97
+ return false;
98
+ }
99
+ if (child.type === StepButton) {
100
+ return true;
101
+ }
102
+ const grandChildren = child.props.children;
103
+ if (grandChildren) {
104
+ return React.Children.toArray(grandChildren).some(grandChild => /*#__PURE__*/React.isValidElement(grandChild) && grandChild.type === StepButton);
105
+ }
106
+ return false;
107
+ });
87
108
  const steps = childrenArray.map((step, index) => {
88
109
  return /*#__PURE__*/React.cloneElement(step, {
89
110
  index,
90
- last: index + 1 === childrenArray.length,
111
+ last: index + 1 === totalSteps,
91
112
  ...step.props
92
113
  });
93
114
  });
115
+ const {
116
+ getContainerProps,
117
+ getItemProps
118
+ } = useRovingTabIndex({
119
+ orientation,
120
+ isRtl
121
+ });
122
+ const rovingTabIndexContainerProps = getContainerProps(ref);
94
123
  const contextValue = React.useMemo(() => ({
95
124
  activeStep,
96
125
  alternativeLabel,
97
126
  connector,
98
127
  nonLinear,
99
- orientation
100
- }), [activeStep, alternativeLabel, connector, nonLinear, orientation]);
101
- return /*#__PURE__*/_jsx(StepperContext.Provider, {
128
+ orientation,
129
+ totalSteps,
130
+ getRovingTabIndexProps: getItemProps,
131
+ isTabList
132
+ }), [activeStep, alternativeLabel, connector, nonLinear, orientation, totalSteps, getItemProps, isTabList]);
133
+ return /*#__PURE__*/_jsx(StepperContextProvider, {
102
134
  value: contextValue,
103
135
  children: /*#__PURE__*/_jsx(StepperRoot, {
104
136
  as: component,
105
137
  ownerState: ownerState,
106
138
  className: clsx(classes.root, className),
107
139
  ref: ref,
140
+ ...(isTabList && {
141
+ role: 'tablist',
142
+ 'aria-orientation': orientation,
143
+ ...rovingTabIndexContainerProps
144
+ }),
108
145
  ...other,
109
146
  children: steps
110
147
  })
@@ -5,6 +5,12 @@ export interface StepperContextType {
5
5
  connector: React.ReactNode;
6
6
  nonLinear: boolean;
7
7
  orientation: 'horizontal' | 'vertical';
8
+ totalSteps: number;
9
+ getRovingTabIndexProps: (index: number, ref?: React.Ref<HTMLElement>) => {
10
+ ref: (element: HTMLElement | null) => void;
11
+ tabIndex: number;
12
+ };
13
+ isTabList: boolean;
8
14
  }
9
15
  /**
10
16
  * Provides information about the current step in Stepper.
@@ -15,4 +21,5 @@ declare const StepperContext: React.Context<{} | StepperContextType>;
15
21
  * has been defined in the component tree.
16
22
  */
17
23
  export declare function useStepperContext(): StepperContextType | {};
24
+ export declare const StepperContextProvider: React.Provider<{} | StepperContextType>;
18
25
  export default StepperContext;
@@ -5,6 +5,12 @@ export interface StepperContextType {
5
5
  connector: React.ReactNode;
6
6
  nonLinear: boolean;
7
7
  orientation: 'horizontal' | 'vertical';
8
+ totalSteps: number;
9
+ getRovingTabIndexProps: (index: number, ref?: React.Ref<HTMLElement>) => {
10
+ ref: (element: HTMLElement | null) => void;
11
+ tabIndex: number;
12
+ };
13
+ isTabList: boolean;
8
14
  }
9
15
  /**
10
16
  * Provides information about the current step in Stepper.
@@ -15,4 +21,5 @@ declare const StepperContext: React.Context<{} | StepperContextType>;
15
21
  * has been defined in the component tree.
16
22
  */
17
23
  export declare function useStepperContext(): StepperContextType | {};
24
+ export declare const StepperContextProvider: React.Provider<{} | StepperContextType>;
18
25
  export default StepperContext;
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.default = exports.StepperContextProvider = void 0;
9
9
  exports.useStepperContext = useStepperContext;
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
  /**
@@ -23,4 +23,5 @@ if (process.env.NODE_ENV !== 'production') {
23
23
  function useStepperContext() {
24
24
  return React.useContext(StepperContext);
25
25
  }
26
+ const StepperContextProvider = exports.StepperContextProvider = StepperContext.Provider;
26
27
  var _default = exports.default = StepperContext;
@@ -16,4 +16,5 @@ if (process.env.NODE_ENV !== 'production') {
16
16
  export function useStepperContext() {
17
17
  return React.useContext(StepperContext);
18
18
  }
19
+ export const StepperContextProvider = StepperContext.Provider;
19
20
  export default StepperContext;
@@ -2,5 +2,4 @@ export { default } from "./Stepper.mjs";
2
2
  export * from "./Stepper.mjs";
3
3
  export { default as stepperClasses } from "./stepperClasses.mjs";
4
4
  export * from "./stepperClasses.mjs";
5
- export { default as StepperContext } from "./StepperContext.mjs";
6
5
  export * from "./StepperContext.mjs";
@@ -2,5 +2,4 @@ export { default } from "./Stepper.js";
2
2
  export * from "./Stepper.js";
3
3
  export { default as stepperClasses } from "./stepperClasses.js";
4
4
  export * from "./stepperClasses.js";
5
- export { default as StepperContext } from "./StepperContext.js";
6
5
  export * from "./StepperContext.js";
package/Tab/Tab.js CHANGED
@@ -257,7 +257,6 @@ const Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {
257
257
  onClick: handleClick,
258
258
  onFocus: handleFocus,
259
259
  ownerState: ownerState,
260
- tabIndex: selected ? 0 : -1,
261
260
  ...other,
262
261
  children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
263
262
  children: [icon, label]
package/Tab/Tab.mjs CHANGED
@@ -250,7 +250,6 @@ const Tab = /*#__PURE__*/React.forwardRef(function Tab(inProps, ref) {
250
250
  onClick: handleClick,
251
251
  onFocus: handleFocus,
252
252
  ownerState: ownerState,
253
- tabIndex: selected ? 0 : -1,
254
253
  ...other,
255
254
  children: [iconPosition === 'top' || iconPosition === 'start' ? /*#__PURE__*/_jsxs(React.Fragment, {
256
255
  children: [icon, label]