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.

188 lines (169 loc) 5.54 kB
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; import _extends from "@babel/runtime/helpers/esm/extends"; const _excluded = ["children", "className", "disableTypography", "inset", "primary", "primaryTypographyProps", "secondary", "secondaryTypographyProps"]; import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import { unstable_composeClasses as composeClasses } from '@mui/base'; import Typography from '../Typography'; import ListContext from '../List/ListContext'; import useThemeProps from '../styles/useThemeProps'; import styled from '../styles/styled'; import listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses'; import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; 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 composeClasses(slots, getListItemTextUtilityClass, classes); }; const ListItemTextRoot = styled('div', { name: 'MuiListItemText', slot: 'Root', overridesResolver: (props, styles) => { const { ownerState } = props; return [{ [`& .${listItemTextClasses.primary}`]: styles.primary }, { [`& .${listItemTextClasses.secondary}`]: styles.secondary }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense]; } })(({ ownerState }) => _extends({ 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 = useThemeProps({ props: inProps, name: 'MuiListItemText' }); const { children, className, disableTypography = false, inset = false, primary: primaryProp, primaryTypographyProps, secondary: secondaryProp, secondaryTypographyProps } = props, other = _objectWithoutPropertiesLoose(props, _excluded); const { dense } = React.useContext(ListContext); let primary = primaryProp != null ? primaryProp : children; let secondary = secondaryProp; const ownerState = _extends({}, props, { disableTypography, inset, primary: !!primary, secondary: !!secondary, dense }); const classes = useUtilityClasses(ownerState); if (primary != null && primary.type !== Typography && !disableTypography) { primary = /*#__PURE__*/_jsx(Typography, _extends({ variant: dense ? 'body2' : 'body1', className: classes.primary, component: "span", display: "block" }, primaryTypographyProps, { children: primary })); } if (secondary != null && secondary.type !== Typography && !disableTypography) { secondary = /*#__PURE__*/_jsx(Typography, _extends({ variant: "body2", className: classes.secondary, color: "text.secondary", display: "block" }, secondaryTypographyProps, { children: secondary })); } return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({ className: clsx(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.node, /** * Override or extend the styles applied to the component. */ classes: PropTypes.object, /** * @ignore */ className: PropTypes.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.bool, /** * If `true`, the children are indented. * This should be used if there is no left avatar or left icon. * @default false */ inset: PropTypes.bool, /** * The main content element. */ primary: PropTypes.node, /** * These props will be forwarded to the primary typography component * (as long as disableTypography is not `true`). */ primaryTypographyProps: PropTypes.object, /** * The secondary content element. */ secondary: PropTypes.node, /** * These props will be forwarded to the secondary typography component * (as long as disableTypography is not `true`). */ secondaryTypographyProps: PropTypes.object, /** * The system prop that allows defining system overrides as well as additional CSS styles. */ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]) } : void 0; export default ListItemText;