UNPKG

4.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = exports.styles = void 0;
11
12var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
17
18var React = _interopRequireWildcard(require("react"));
19
20var _propTypes = _interopRequireDefault(require("prop-types"));
21
22var _clsx = _interopRequireDefault(require("clsx"));
23
24var _withStyles = _interopRequireDefault(require("../styles/withStyles"));
25
26var _ListItem = _interopRequireDefault(require("../ListItem"));
27
28var styles = function styles(theme) {
29 return {
30 /* Styles applied to the root element. */
31 root: (0, _extends3.default)({}, theme.typography.body1, (0, _defineProperty2.default)({
32 minHeight: 48,
33 paddingTop: 6,
34 paddingBottom: 6,
35 boxSizing: 'border-box',
36 width: 'auto',
37 overflow: 'hidden',
38 whiteSpace: 'nowrap'
39 }, theme.breakpoints.up('sm'), {
40 minHeight: 'auto'
41 })),
42 // TODO v5: remove
43
44 /* Styles applied to the root element if `disableGutters={false}`. */
45 gutters: {},
46
47 /* Styles applied to the root element if `selected={true}`. */
48 selected: {},
49
50 /* Styles applied to the root element if dense. */
51 dense: (0, _extends3.default)({}, theme.typography.body2, {
52 minHeight: 'auto'
53 })
54 };
55};
56
57exports.styles = styles;
58var MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(props, ref) {
59 var classes = props.classes,
60 className = props.className,
61 _props$component = props.component,
62 component = _props$component === void 0 ? 'li' : _props$component,
63 _props$disableGutters = props.disableGutters,
64 disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters,
65 ListItemClasses = props.ListItemClasses,
66 _props$role = props.role,
67 role = _props$role === void 0 ? 'menuitem' : _props$role,
68 selected = props.selected,
69 tabIndexProp = props.tabIndex,
70 other = (0, _objectWithoutProperties2.default)(props, ["classes", "className", "component", "disableGutters", "ListItemClasses", "role", "selected", "tabIndex"]);
71 var tabIndex;
72
73 if (!props.disabled) {
74 tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;
75 }
76
77 return /*#__PURE__*/React.createElement(_ListItem.default, (0, _extends3.default)({
78 button: true,
79 role: role,
80 tabIndex: tabIndex,
81 component: component,
82 selected: selected,
83 disableGutters: disableGutters,
84 classes: (0, _extends3.default)({
85 dense: classes.dense
86 }, ListItemClasses),
87 className: (0, _clsx.default)(classes.root, className, selected && classes.selected, !disableGutters && classes.gutters),
88 ref: ref
89 }, other));
90});
91process.env.NODE_ENV !== "production" ? MenuItem.propTypes = {
92 /**
93 * Menu item contents.
94 */
95 children: _propTypes.default.node,
96
97 /**
98 * Override or extend the styles applied to the component.
99 * See [CSS API](#css) below for more details.
100 */
101 classes: _propTypes.default.object.isRequired,
102
103 /**
104 * @ignore
105 */
106 className: _propTypes.default.string,
107
108 /**
109 * The component used for the root node.
110 * Either a string to use a HTML element or a component.
111 */
112 component: _propTypes.default
113 /* @typescript-to-proptypes-ignore */
114 .elementType,
115
116 /**
117 * If `true`, compact vertical padding designed for keyboard and mouse input will be used.
118 */
119 dense: _propTypes.default.bool,
120
121 /**
122 * @ignore
123 */
124 disabled: _propTypes.default.bool,
125
126 /**
127 * If `true`, the left and right padding is removed.
128 */
129 disableGutters: _propTypes.default.bool,
130
131 /**
132 * `classes` prop applied to the [`ListItem`](/api/list-item/) element.
133 */
134 ListItemClasses: _propTypes.default.object,
135
136 /**
137 * @ignore
138 */
139 role: _propTypes.default.string,
140
141 /**
142 * @ignore
143 */
144 selected: _propTypes.default.bool,
145
146 /**
147 * @ignore
148 */
149 tabIndex: _propTypes.default.number
150} : void 0;
151
152var _default = (0, _withStyles.default)(styles, {
153 name: 'MuiMenuItem'
154})(MenuItem);
155
156exports.default = _default;
\No newline at end of file