UNPKG

6.34 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4/* eslint-disable jsx-a11y/aria-role */
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11var React = _interopRequireWildcard(require("react"));
12var _propTypes = _interopRequireDefault(require("prop-types"));
13var _clsx = _interopRequireDefault(require("clsx"));
14var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15var _RtlProvider = require("@mui/system/RtlProvider");
16var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
17var _KeyboardArrowLeft = _interopRequireDefault(require("../internal/svg-icons/KeyboardArrowLeft"));
18var _KeyboardArrowRight = _interopRequireDefault(require("../internal/svg-icons/KeyboardArrowRight"));
19var _ButtonBase = _interopRequireDefault(require("../ButtonBase"));
20var _zeroStyled = require("../zero-styled");
21var _DefaultPropsProvider = require("../DefaultPropsProvider");
22var _tabScrollButtonClasses = _interopRequireWildcard(require("./tabScrollButtonClasses"));
23var _jsxRuntime = require("react/jsx-runtime");
24const useUtilityClasses = ownerState => {
25 const {
26 classes,
27 orientation,
28 disabled
29 } = ownerState;
30 const slots = {
31 root: ['root', orientation, disabled && 'disabled']
32 };
33 return (0, _composeClasses.default)(slots, _tabScrollButtonClasses.getTabScrollButtonUtilityClass, classes);
34};
35const TabScrollButtonRoot = (0, _zeroStyled.styled)(_ButtonBase.default, {
36 name: 'MuiTabScrollButton',
37 slot: 'Root',
38 overridesResolver: (props, styles) => {
39 const {
40 ownerState
41 } = props;
42 return [styles.root, ownerState.orientation && styles[ownerState.orientation]];
43 }
44})({
45 width: 40,
46 flexShrink: 0,
47 opacity: 0.8,
48 [`&.${_tabScrollButtonClasses.default.disabled}`]: {
49 opacity: 0
50 },
51 variants: [{
52 props: {
53 orientation: 'vertical'
54 },
55 style: {
56 width: '100%',
57 height: 40,
58 '& svg': {
59 transform: 'var(--TabScrollButton-svgRotate)'
60 }
61 }
62 }]
63});
64const TabScrollButton = /*#__PURE__*/React.forwardRef(function TabScrollButton(inProps, ref) {
65 const props = (0, _DefaultPropsProvider.useDefaultProps)({
66 props: inProps,
67 name: 'MuiTabScrollButton'
68 });
69 const {
70 className,
71 slots = {},
72 slotProps = {},
73 direction,
74 orientation,
75 disabled,
76 ...other
77 } = props;
78 const isRtl = (0, _RtlProvider.useRtl)();
79 const ownerState = {
80 isRtl,
81 ...props
82 };
83 const classes = useUtilityClasses(ownerState);
84 const StartButtonIcon = slots.StartScrollButtonIcon ?? _KeyboardArrowLeft.default;
85 const EndButtonIcon = slots.EndScrollButtonIcon ?? _KeyboardArrowRight.default;
86 const startButtonIconProps = (0, _useSlotProps.default)({
87 elementType: StartButtonIcon,
88 externalSlotProps: slotProps.startScrollButtonIcon,
89 additionalProps: {
90 fontSize: 'small'
91 },
92 ownerState
93 });
94 const endButtonIconProps = (0, _useSlotProps.default)({
95 elementType: EndButtonIcon,
96 externalSlotProps: slotProps.endScrollButtonIcon,
97 additionalProps: {
98 fontSize: 'small'
99 },
100 ownerState
101 });
102 return /*#__PURE__*/(0, _jsxRuntime.jsx)(TabScrollButtonRoot, {
103 component: "div",
104 className: (0, _clsx.default)(classes.root, className),
105 ref: ref,
106 role: null,
107 ownerState: ownerState,
108 tabIndex: null,
109 ...other,
110 style: {
111 ...other.style,
112 ...(orientation === 'vertical' && {
113 '--TabScrollButton-svgRotate': `rotate(${isRtl ? -90 : 90}deg)`
114 })
115 },
116 children: direction === 'left' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(StartButtonIcon, {
117 ...startButtonIconProps
118 }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(EndButtonIcon, {
119 ...endButtonIconProps
120 })
121 });
122});
123process.env.NODE_ENV !== "production" ? TabScrollButton.propTypes /* remove-proptypes */ = {
124 // ┌────────────────────────────── Warning ──────────────────────────────┐
125 // │ These PropTypes are generated from the TypeScript type definitions. │
126 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
127 // └─────────────────────────────────────────────────────────────────────┘
128 /**
129 * The content of the component.
130 */
131 children: _propTypes.default.node,
132 /**
133 * Override or extend the styles applied to the component.
134 */
135 classes: _propTypes.default.object,
136 /**
137 * @ignore
138 */
139 className: _propTypes.default.string,
140 /**
141 * The direction the button should indicate.
142 */
143 direction: _propTypes.default.oneOf(['left', 'right']).isRequired,
144 /**
145 * If `true`, the component is disabled.
146 * @default false
147 */
148 disabled: _propTypes.default.bool,
149 /**
150 * The component orientation (layout flow direction).
151 */
152 orientation: _propTypes.default.oneOf(['horizontal', 'vertical']).isRequired,
153 /**
154 * The extra props for the slot components.
155 * You can override the existing props or add new ones.
156 * @default {}
157 */
158 slotProps: _propTypes.default.shape({
159 endScrollButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
160 startScrollButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object])
161 }),
162 /**
163 * The components used for each slot inside.
164 * @default {}
165 */
166 slots: _propTypes.default.shape({
167 EndScrollButtonIcon: _propTypes.default.elementType,
168 StartScrollButtonIcon: _propTypes.default.elementType
169 }),
170 /**
171 * @ignore
172 */
173 style: _propTypes.default.object,
174 /**
175 * The system prop that allows defining system overrides as well as additional CSS styles.
176 */
177 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
178} : void 0;
179var _default = exports.default = TabScrollButton;
\No newline at end of file