UNPKG

5.04 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 _reactIs = require("react-is");
12var _propTypes = _interopRequireDefault(require("prop-types"));
13var _clsx = _interopRequireDefault(require("clsx"));
14var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15var _zeroStyled = require("../zero-styled");
16var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
17var _DefaultPropsProvider = require("../DefaultPropsProvider");
18var _bottomNavigationClasses = require("./bottomNavigationClasses");
19var _jsxRuntime = require("react/jsx-runtime");
20const useUtilityClasses = ownerState => {
21 const {
22 classes
23 } = ownerState;
24 const slots = {
25 root: ['root']
26 };
27 return (0, _composeClasses.default)(slots, _bottomNavigationClasses.getBottomNavigationUtilityClass, classes);
28};
29const BottomNavigationRoot = (0, _zeroStyled.styled)('div', {
30 name: 'MuiBottomNavigation',
31 slot: 'Root',
32 overridesResolver: (props, styles) => styles.root
33})((0, _memoTheme.default)(({
34 theme
35}) => ({
36 display: 'flex',
37 justifyContent: 'center',
38 height: 56,
39 backgroundColor: (theme.vars || theme).palette.background.paper
40})));
41const BottomNavigation = /*#__PURE__*/React.forwardRef(function BottomNavigation(inProps, ref) {
42 const props = (0, _DefaultPropsProvider.useDefaultProps)({
43 props: inProps,
44 name: 'MuiBottomNavigation'
45 });
46 const {
47 children,
48 className,
49 component = 'div',
50 onChange,
51 showLabels = false,
52 value,
53 ...other
54 } = props;
55 const ownerState = {
56 ...props,
57 component,
58 showLabels
59 };
60 const classes = useUtilityClasses(ownerState);
61 return /*#__PURE__*/(0, _jsxRuntime.jsx)(BottomNavigationRoot, {
62 as: component,
63 className: (0, _clsx.default)(classes.root, className),
64 ref: ref,
65 ownerState: ownerState,
66 ...other,
67 children: React.Children.map(children, (child, childIndex) => {
68 if (! /*#__PURE__*/React.isValidElement(child)) {
69 return null;
70 }
71 if (process.env.NODE_ENV !== 'production') {
72 if ((0, _reactIs.isFragment)(child)) {
73 console.error(["MUI: The BottomNavigation component doesn't accept a Fragment as a child.", 'Consider providing an array instead.'].join('\n'));
74 }
75 }
76 const childValue = child.props.value === undefined ? childIndex : child.props.value;
77 return /*#__PURE__*/React.cloneElement(child, {
78 selected: childValue === value,
79 showLabel: child.props.showLabel !== undefined ? child.props.showLabel : showLabels,
80 value: childValue,
81 onChange
82 });
83 })
84 });
85});
86process.env.NODE_ENV !== "production" ? BottomNavigation.propTypes /* remove-proptypes */ = {
87 // ┌────────────────────────────── Warning ──────────────────────────────┐
88 // │ These PropTypes are generated from the TypeScript type definitions. │
89 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
90 // └─────────────────────────────────────────────────────────────────────┘
91 /**
92 * The content of the component.
93 */
94 children: _propTypes.default.node,
95 /**
96 * Override or extend the styles applied to the component.
97 */
98 classes: _propTypes.default.object,
99 /**
100 * @ignore
101 */
102 className: _propTypes.default.string,
103 /**
104 * The component used for the root node.
105 * Either a string to use a HTML element or a component.
106 */
107 component: _propTypes.default.elementType,
108 /**
109 * Callback fired when the value changes.
110 *
111 * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.
112 * @param {any} value We default to the index of the child.
113 */
114 onChange: _propTypes.default.func,
115 /**
116 * If `true`, all `BottomNavigationAction`s will show their labels.
117 * By default, only the selected `BottomNavigationAction` will show its label.
118 * @default false
119 */
120 showLabels: _propTypes.default.bool,
121 /**
122 * The system prop that allows defining system overrides as well as additional CSS styles.
123 */
124 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]),
125 /**
126 * The value of the currently selected `BottomNavigationAction`.
127 */
128 value: _propTypes.default.any
129} : void 0;
130var _default = exports.default = BottomNavigation;
\No newline at end of file