UNPKG

@material-ui/core

Version:

React components that implement Google's Material Design.

121 lines (96 loc) 3.54 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.styles = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _clsx = _interopRequireDefault(require("clsx")); var _withStyles = _interopRequireDefault(require("../styles/withStyles")); var _ListContext = _interopRequireDefault(require("./ListContext")); var styles = { /* Styles applied to the root element. */ root: { listStyle: 'none', margin: 0, padding: 0, position: 'relative' }, /* Styles applied to the root element if `disablePadding={false}`. */ padding: { paddingTop: 8, paddingBottom: 8 }, /* Styles applied to the root element if dense. */ dense: {}, /* Styles applied to the root element if a `subheader` is provided. */ subheader: { paddingTop: 0 } }; exports.styles = styles; var List = _react.default.forwardRef(function List(props, ref) { var children = props.children, classes = props.classes, className = props.className, _props$component = props.component, Component = _props$component === void 0 ? 'ul' : _props$component, _props$dense = props.dense, dense = _props$dense === void 0 ? false : _props$dense, _props$disablePadding = props.disablePadding, disablePadding = _props$disablePadding === void 0 ? false : _props$disablePadding, subheader = props.subheader, other = (0, _objectWithoutProperties2.default)(props, ["children", "classes", "className", "component", "dense", "disablePadding", "subheader"]); var context = _react.default.useMemo(function () { return { dense: dense }; }, [dense]); return _react.default.createElement(_ListContext.default.Provider, { value: context }, _react.default.createElement(Component, (0, _extends2.default)({ className: (0, _clsx.default)(classes.root, className, dense && classes.dense, !disablePadding && classes.padding, subheader && classes.subheader), ref: ref }, other), subheader, children)); }); process.env.NODE_ENV !== "production" ? List.propTypes = { /** * The content of the component. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. * See [CSS API](#css) below for more details. */ classes: _propTypes.default.object.isRequired, /** * @ignore */ className: _propTypes.default.string, /** * The component used for the root node. * Either a string to use a DOM element or a component. */ component: _propTypes.default.elementType, /** * If `true`, compact vertical padding designed for keyboard and mouse input will be used for * the list and list items. * The prop is available to descendant components as the `dense` context. */ dense: _propTypes.default.bool, /** * If `true`, vertical padding will be removed from the list. */ disablePadding: _propTypes.default.bool, /** * The content of the subheader, normally `ListSubheader`. */ subheader: _propTypes.default.node } : void 0; var _default = (0, _withStyles.default)(styles, { name: 'MuiList' })(List); exports.default = _default;