UNPKG

@material-ui/core

Version:

React components that implement Google's Material Design.

142 lines (125 loc) 4.9 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; import * as React from 'react'; import PropTypes from 'prop-types'; import clsx from 'clsx'; import withStyles from '../styles/withStyles'; import capitalize from '../utils/capitalize'; export var styles = function styles(theme) { return { /* Styles applied to the root element. */ root: _defineProperty({ width: '100%', marginLeft: 'auto', boxSizing: 'border-box', marginRight: 'auto', paddingLeft: theme.spacing(2), paddingRight: theme.spacing(2), display: 'block' }, theme.breakpoints.up('sm'), { paddingLeft: theme.spacing(3), paddingRight: theme.spacing(3) }), /* Styles applied to the root element if `disableGutters={true}`. */ disableGutters: { paddingLeft: 0, paddingRight: 0 }, /* Styles applied to the root element if `fixed={true}`. */ fixed: Object.keys(theme.breakpoints.values).reduce(function (acc, breakpoint) { var value = theme.breakpoints.values[breakpoint]; if (value !== 0) { acc[theme.breakpoints.up(breakpoint)] = { maxWidth: value }; } return acc; }, {}), /* Styles applied to the root element if `maxWidth="xs"`. */ maxWidthXs: _defineProperty({}, theme.breakpoints.up('xs'), { maxWidth: Math.max(theme.breakpoints.values.xs, 444) }), /* Styles applied to the root element if `maxWidth="sm"`. */ maxWidthSm: _defineProperty({}, theme.breakpoints.up('sm'), { maxWidth: theme.breakpoints.values.sm }), /* Styles applied to the root element if `maxWidth="md"`. */ maxWidthMd: _defineProperty({}, theme.breakpoints.up('md'), { maxWidth: theme.breakpoints.values.md }), /* Styles applied to the root element if `maxWidth="lg"`. */ maxWidthLg: _defineProperty({}, theme.breakpoints.up('lg'), { maxWidth: theme.breakpoints.values.lg }), /* Styles applied to the root element if `maxWidth="xl"`. */ maxWidthXl: _defineProperty({}, theme.breakpoints.up('xl'), { maxWidth: theme.breakpoints.values.xl }) }; }; var Container = /*#__PURE__*/React.forwardRef(function Container(props, ref) { var classes = props.classes, className = props.className, _props$component = props.component, Component = _props$component === void 0 ? 'div' : _props$component, _props$disableGutters = props.disableGutters, disableGutters = _props$disableGutters === void 0 ? false : _props$disableGutters, _props$fixed = props.fixed, fixed = _props$fixed === void 0 ? false : _props$fixed, _props$maxWidth = props.maxWidth, maxWidth = _props$maxWidth === void 0 ? 'lg' : _props$maxWidth, other = _objectWithoutProperties(props, ["classes", "className", "component", "disableGutters", "fixed", "maxWidth"]); return /*#__PURE__*/React.createElement(Component, _extends({ className: clsx(classes.root, className, fixed && classes.fixed, disableGutters && classes.disableGutters, maxWidth !== false && classes["maxWidth".concat(capitalize(String(maxWidth)))]), ref: ref }, other)); }); process.env.NODE_ENV !== "production" ? Container.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the d.ts file and run "yarn proptypes" | // ---------------------------------------------------------------------- /** * @ignore */ children: PropTypes /* @typescript-to-proptypes-ignore */ .node.isRequired, /** * Override or extend the styles applied to the component. * See [CSS API](#css) below for more details. */ classes: PropTypes.object, /** * @ignore */ className: PropTypes.string, /** * The component used for the root node. * Either a string to use a HTML element or a component. */ component: PropTypes /* @typescript-to-proptypes-ignore */ .elementType, /** * If `true`, the left and right padding is removed. */ disableGutters: PropTypes.bool, /** * Set the max-width to match the min-width of the current breakpoint. * This is useful if you'd prefer to design for a fixed set of sizes * instead of trying to accommodate a fully fluid viewport. * It's fluid by default. */ fixed: PropTypes.bool, /** * Determine the max-width of the container. * The container width grows with the size of the screen. * Set to `false` to disable `maxWidth`. */ maxWidth: PropTypes.oneOf(['lg', 'md', 'sm', 'xl', 'xs', false]) } : void 0; export default withStyles(styles, { name: 'MuiContainer' })(Container);