UNPKG

@e-group/material-lab

Version:

EGroup Team Lab - Incubator for EGroup Team experimental React components.

202 lines (178 loc) 6.06 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _styles = require("@material-ui/core/styles"); var _clsx = _interopRequireDefault(require("clsx")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } const styles = theme => ({ root: { borderTop: "1px solid ".concat(theme.palette.divider) }, vertical: { position: 'relative', top: '-0.06em', display: 'inline-block', height: '0.9em', margin: '0 8px', verticalAlign: 'middle', borderTop: 0, borderLeft: "1px solid ".concat(theme.palette.divider), '&$dashed': { borderWidth: '0 0 0 1px' } }, horizontal: { display: 'flex', clear: 'both', width: '100%', minWidth: '100%', // Fix https://github.com/ant-design/ant-design/issues/10914 margin: '24px 0', '&$withText': { display: 'flex', margin: ' 16px 0', whiteSpace: 'nowrap', textAlign: 'center', borderTop: 0, '&::before, &::after': { position: 'relative', top: '50%', width: '50%', borderTop: "1px solid ".concat(theme.palette.divider), transform: 'translateY(50%)', content: '""' }, '&$dashed': { borderTop: 0, '&::before, &::after': { borderStyle: 'dashed none none' } }, '&$withTextLeft': { '&::before': { top: '50%', width: '5%' }, '&::after': { top: '50%', width: '95%' } }, '&$withTextRight': { '&::before': { top: '50%', width: '95%' }, '&::after': { top: '50%', width: '5%' } } } }, withText: props => _objectSpread(_objectSpread({}, theme.typography[props.headingVariant]), {}, { lineHeight: 1 }), withTextLeft: {}, withTextRight: {}, innerText: { display: 'inline-block', padding: theme.spacing(0, 1) }, dashed: { background: 'none', borderColor: theme.palette.divider, borderStyle: 'dashed', borderWidth: '1px 0 0' }, plain: { '&$withText': _objectSpread(_objectSpread({}, theme.typography.body1), {}, { lineHeight: 1 }) } }); /** * Re implement Ant Design Divider component with react-material coding style. * https://github.com/ant-design/ant-design/blob/master/components/divider/index.tsx * @param {*} props */ const Divider = props => { const classes = props.classes, className = props.className, children = props.children, type = props.type, orientation = props.orientation, dashed = props.dashed, plain = props.plain, headingVariant = props.headingVariant, other = (0, _objectWithoutProperties2.default)(props, ["classes", "className", "children", "type", "orientation", "dashed", "plain", "headingVariant"]); const hasChildren = !!children; const orientationPrefix = orientation.length > 0 ? "".concat(orientation.charAt(0).toUpperCase()).concat(orientation.slice(1)) : orientation; return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({ className: (0, _clsx.default)(classes.root, classes[type], { [classes.withText]: hasChildren, [classes["withText".concat(orientationPrefix)]]: hasChildren, [classes.dashed]: !!dashed, [classes.plain]: !!plain }, className) }, other, { role: "separator" }), children && /*#__PURE__*/_react.default.createElement("span", { className: classes.innerText }, children)); }; Divider.propTypes = { /** * 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 content of the component. */ children: _propTypes.default.node, /** * direction type of divider */ type: _propTypes.default.oneOf(['horizontal', 'vertical']), /** * divider text show as plain style */ plain: _propTypes.default.bool, /** * whether line is dashed */ dashed: _propTypes.default.bool, /** * position of title inside divider */ orientation: _propTypes.default.oneOf(['left', 'right', 'center']), /** * Applies the heading typography styles. */ headingVariant: _propTypes.default.oneOf(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) }; Divider.defaultProps = { type: 'horizontal', plain: true, dashed: false, orientation: 'center', headingVariant: 'h6' }; var _default = (0, _styles.withStyles)(styles, { name: 'EgDivider' })(Divider); exports.default = _default;