UNPKG

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