UNPKG

@mui/material

Version:

Quickly build beautiful React apps. MUI is a simple and customizable component library to build faster, beautiful, and more accessible React applications. Follow your own design system, or start with Material Design.

209 lines (177 loc) 7.47 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _clsx = _interopRequireDefault(require("clsx")); var _base = require("@mui/base"); var _Typography = _interopRequireDefault(require("../Typography")); var _ListContext = _interopRequireDefault(require("../List/ListContext")); var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps")); var _styled = _interopRequireDefault(require("../styles/styled")); var _listItemTextClasses = _interopRequireWildcard(require("./listItemTextClasses")); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["children", "className", "disableTypography", "inset", "primary", "primaryTypographyProps", "secondary", "secondaryTypographyProps"]; function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } const useUtilityClasses = ownerState => { const { classes, inset, primary, secondary, dense } = ownerState; const slots = { root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'], primary: ['primary'], secondary: ['secondary'] }; return (0, _base.unstable_composeClasses)(slots, _listItemTextClasses.getListItemTextUtilityClass, classes); }; const ListItemTextRoot = (0, _styled.default)('div', { name: 'MuiListItemText', slot: 'Root', overridesResolver: (props, styles) => { const { ownerState } = props; return [{ [`& .${_listItemTextClasses.default.primary}`]: styles.primary }, { [`& .${_listItemTextClasses.default.secondary}`]: styles.secondary }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense]; } })(({ ownerState }) => (0, _extends2.default)({ flex: '1 1 auto', minWidth: 0, marginTop: 4, marginBottom: 4 }, ownerState.primary && ownerState.secondary && { marginTop: 6, marginBottom: 6 }, ownerState.inset && { paddingLeft: 56 })); const ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) { const props = (0, _useThemeProps.default)({ props: inProps, name: 'MuiListItemText' }); const { children, className, disableTypography = false, inset = false, primary: primaryProp, primaryTypographyProps, secondary: secondaryProp, secondaryTypographyProps } = props, other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded); const { dense } = React.useContext(_ListContext.default); let primary = primaryProp != null ? primaryProp : children; let secondary = secondaryProp; const ownerState = (0, _extends2.default)({}, props, { disableTypography, inset, primary: !!primary, secondary: !!secondary, dense }); const classes = useUtilityClasses(ownerState); if (primary != null && primary.type !== _Typography.default && !disableTypography) { primary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, (0, _extends2.default)({ variant: dense ? 'body2' : 'body1', className: classes.primary, component: "span", display: "block" }, primaryTypographyProps, { children: primary })); } if (secondary != null && secondary.type !== _Typography.default && !disableTypography) { secondary = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, (0, _extends2.default)({ variant: "body2", className: classes.secondary, color: "text.secondary", display: "block" }, secondaryTypographyProps, { children: secondary })); } return /*#__PURE__*/(0, _jsxRuntime.jsxs)(ListItemTextRoot, (0, _extends2.default)({ className: (0, _clsx.default)(classes.root, className), ownerState: ownerState, ref: ref }, other, { children: [primary, secondary] })); }); process.env.NODE_ENV !== "production" ? ListItemText.propTypes /* remove-proptypes */ = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the d.ts file and run "yarn proptypes" | // ---------------------------------------------------------------------- /** * Alias for the `primary` prop. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. */ classes: _propTypes.default.object, /** * @ignore */ className: _propTypes.default.string, /** * If `true`, the children won't be wrapped by a Typography component. * This can be useful to render an alternative Typography variant by wrapping * the `children` (or `primary`) text, and optional `secondary` text * with the Typography component. * @default false */ disableTypography: _propTypes.default.bool, /** * If `true`, the children are indented. * This should be used if there is no left avatar or left icon. * @default false */ inset: _propTypes.default.bool, /** * The main content element. */ primary: _propTypes.default.node, /** * These props will be forwarded to the primary typography component * (as long as disableTypography is not `true`). */ primaryTypographyProps: _propTypes.default.object, /** * The secondary content element. */ secondary: _propTypes.default.node, /** * These props will be forwarded to the secondary typography component * (as long as disableTypography is not `true`). */ secondaryTypographyProps: _propTypes.default.object, /** * The system prop that allows defining system overrides as well as additional CSS styles. */ 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]) } : void 0; var _default = ListItemText; exports.default = _default;