@e-group/material-lab
Version:
EGroup Team Lab - Incubator for EGroup Team experimental React components.
202 lines (178 loc) • 6.06 kB
JavaScript
;
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;