UNPKG

6.48 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _zeroStyled = require("../zero-styled");
15var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
16var _DefaultPropsProvider = require("../DefaultPropsProvider");
17var _ButtonBase = _interopRequireDefault(require("../ButtonBase"));
18var _unsupportedProp = _interopRequireDefault(require("../utils/unsupportedProp"));
19var _bottomNavigationActionClasses = _interopRequireWildcard(require("./bottomNavigationActionClasses"));
20var _jsxRuntime = require("react/jsx-runtime");
21const useUtilityClasses = ownerState => {
22 const {
23 classes,
24 showLabel,
25 selected
26 } = ownerState;
27 const slots = {
28 root: ['root', !showLabel && !selected && 'iconOnly', selected && 'selected'],
29 label: ['label', !showLabel && !selected && 'iconOnly', selected && 'selected']
30 };
31 return (0, _composeClasses.default)(slots, _bottomNavigationActionClasses.getBottomNavigationActionUtilityClass, classes);
32};
33const BottomNavigationActionRoot = (0, _zeroStyled.styled)(_ButtonBase.default, {
34 name: 'MuiBottomNavigationAction',
35 slot: 'Root',
36 overridesResolver: (props, styles) => {
37 const {
38 ownerState
39 } = props;
40 return [styles.root, !ownerState.showLabel && !ownerState.selected && styles.iconOnly];
41 }
42})((0, _memoTheme.default)(({
43 theme
44}) => ({
45 transition: theme.transitions.create(['color', 'padding-top'], {
46 duration: theme.transitions.duration.short
47 }),
48 padding: '0px 12px',
49 minWidth: 80,
50 maxWidth: 168,
51 color: (theme.vars || theme).palette.text.secondary,
52 flexDirection: 'column',
53 flex: '1',
54 [`&.${_bottomNavigationActionClasses.default.selected}`]: {
55 color: (theme.vars || theme).palette.primary.main
56 },
57 variants: [{
58 props: ({
59 showLabel,
60 selected
61 }) => !showLabel && !selected,
62 style: {
63 paddingTop: 14
64 }
65 }, {
66 props: ({
67 showLabel,
68 selected,
69 label
70 }) => !showLabel && !selected && !label,
71 style: {
72 paddingTop: 0
73 }
74 }]
75})));
76const BottomNavigationActionLabel = (0, _zeroStyled.styled)('span', {
77 name: 'MuiBottomNavigationAction',
78 slot: 'Label',
79 overridesResolver: (props, styles) => styles.label
80})((0, _memoTheme.default)(({
81 theme
82}) => ({
83 fontFamily: theme.typography.fontFamily,
84 fontSize: theme.typography.pxToRem(12),
85 opacity: 1,
86 transition: 'font-size 0.2s, opacity 0.2s',
87 transitionDelay: '0.1s',
88 [`&.${_bottomNavigationActionClasses.default.selected}`]: {
89 fontSize: theme.typography.pxToRem(14)
90 },
91 variants: [{
92 props: ({
93 showLabel,
94 selected
95 }) => !showLabel && !selected,
96 style: {
97 opacity: 0,
98 transitionDelay: '0s'
99 }
100 }]
101})));
102const BottomNavigationAction = /*#__PURE__*/React.forwardRef(function BottomNavigationAction(inProps, ref) {
103 const props = (0, _DefaultPropsProvider.useDefaultProps)({
104 props: inProps,
105 name: 'MuiBottomNavigationAction'
106 });
107 const {
108 className,
109 icon,
110 label,
111 onChange,
112 onClick,
113 // eslint-disable-next-line react/prop-types -- private, always overridden by BottomNavigation
114 selected,
115 showLabel,
116 value,
117 ...other
118 } = props;
119 const ownerState = props;
120 const classes = useUtilityClasses(ownerState);
121 const handleChange = event => {
122 if (onChange) {
123 onChange(event, value);
124 }
125 if (onClick) {
126 onClick(event);
127 }
128 };
129 return /*#__PURE__*/(0, _jsxRuntime.jsxs)(BottomNavigationActionRoot, {
130 ref: ref,
131 className: (0, _clsx.default)(classes.root, className),
132 focusRipple: true,
133 onClick: handleChange,
134 ownerState: ownerState,
135 ...other,
136 children: [icon, /*#__PURE__*/(0, _jsxRuntime.jsx)(BottomNavigationActionLabel, {
137 className: classes.label,
138 ownerState: ownerState,
139 children: label
140 })]
141 });
142});
143process.env.NODE_ENV !== "production" ? BottomNavigationAction.propTypes /* remove-proptypes */ = {
144 // ┌────────────────────────────── Warning ──────────────────────────────┐
145 // │ These PropTypes are generated from the TypeScript type definitions. │
146 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
147 // └─────────────────────────────────────────────────────────────────────┘
148 /**
149 * This prop isn't supported.
150 * Use the `component` prop if you need to change the children structure.
151 */
152 children: _unsupportedProp.default,
153 /**
154 * Override or extend the styles applied to the component.
155 */
156 classes: _propTypes.default.object,
157 /**
158 * @ignore
159 */
160 className: _propTypes.default.string,
161 /**
162 * The icon to display.
163 */
164 icon: _propTypes.default.node,
165 /**
166 * The label element.
167 */
168 label: _propTypes.default.node,
169 /**
170 * @ignore
171 */
172 onChange: _propTypes.default.func,
173 /**
174 * @ignore
175 */
176 onClick: _propTypes.default.func,
177 /**
178 * If `true`, the `BottomNavigationAction` will show its label.
179 * By default, only the selected `BottomNavigationAction`
180 * inside `BottomNavigation` will show its label.
181 *
182 * The prop defaults to the value (`false`) inherited from the parent BottomNavigation component.
183 */
184 showLabel: _propTypes.default.bool,
185 /**
186 * The system prop that allows defining system overrides as well as additional CSS styles.
187 */
188 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]),
189 /**
190 * You can provide your own value. Otherwise, we fallback to the child position index.
191 */
192 value: _propTypes.default.any
193} : void 0;
194var _default = exports.default = BottomNavigationAction;
\No newline at end of file