|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- 'use strict';
-
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
-
- var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
-
- var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
-
- var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
-
- var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
-
- var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
-
- var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
-
- var _createClass2 = require('babel-runtime/helpers/createClass');
-
- var _createClass3 = _interopRequireDefault(_createClass2);
-
- var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
-
- var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
-
- var _inherits2 = require('babel-runtime/helpers/inherits');
-
- var _inherits3 = _interopRequireDefault(_inherits2);
-
- var _simpleAssign = require('simple-assign');
-
- var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
-
- var _react = require('react');
-
- var _react2 = _interopRequireDefault(_react);
-
- var _propTypes = require('prop-types');
-
- var _propTypes2 = _interopRequireDefault(_propTypes);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
- /**
- * BeforeAfterWrapper
- * An alternative for the ::before and ::after css pseudo-elements for
- * components whose styles are defined in javascript instead of css.
- *
- * Usage: For the element that we want to apply before and after elements to,
- * wrap its children with BeforeAfterWrapper. For example:
- *
- * <Paper>
- * <Paper> <div> // See notice
- * <BeforeAfterWrapper> renders <div/> // before element
- * [children of paper] ------> [children of paper]
- * </BeforeAfterWrapper> <div/> // after element
- * </Paper> </div>
- * </Paper>
- *
- * Notice: Notice that this div bundles together our elements. If the element
- * that we want to apply before and after elements is a HTML tag (i.e. a
- * div, p, or button tag), we can avoid this extra nesting by passing using
- * the BeforeAfterWrapper in place of said tag like so:
- *
- * <p>
- * <BeforeAfterWrapper> do this instead <BeforeAfterWrapper elementType='p'>
- * [children of p] ------> [children of p]
- * </BeforeAfterWrapper> </BeforeAfterWrapper>
- * </p>
- *
- * BeforeAfterWrapper features spread functionality. This means that we can
- * pass HTML tag properties directly into the BeforeAfterWrapper tag.
- *
- * When using BeforeAfterWrapper, ensure that the parent of the beforeElement
- * and afterElement have a defined style position.
- */
-
- var styles = {
- box: {
- boxSizing: 'border-box'
- }
- };
-
- var BeforeAfterWrapper = function (_Component) {
- (0, _inherits3.default)(BeforeAfterWrapper, _Component);
-
- function BeforeAfterWrapper() {
- (0, _classCallCheck3.default)(this, BeforeAfterWrapper);
- return (0, _possibleConstructorReturn3.default)(this, (BeforeAfterWrapper.__proto__ || (0, _getPrototypeOf2.default)(BeforeAfterWrapper)).apply(this, arguments));
- }
-
- (0, _createClass3.default)(BeforeAfterWrapper, [{
- key: 'render',
- value: function render() {
- var _props = this.props,
- beforeStyle = _props.beforeStyle,
- afterStyle = _props.afterStyle,
- beforeElementType = _props.beforeElementType,
- afterElementType = _props.afterElementType,
- elementType = _props.elementType,
- other = (0, _objectWithoutProperties3.default)(_props, ['beforeStyle', 'afterStyle', 'beforeElementType', 'afterElementType', 'elementType']);
- var prepareStyles = this.context.muiTheme.prepareStyles;
-
-
- var beforeElement = void 0;
- var afterElement = void 0;
-
- if (beforeStyle) {
- beforeElement = _react2.default.createElement(this.props.beforeElementType, {
- style: prepareStyles((0, _simpleAssign2.default)({}, styles.box, beforeStyle)),
- key: '::before'
- });
- }
-
- if (afterStyle) {
- afterElement = _react2.default.createElement(this.props.afterElementType, {
- style: prepareStyles((0, _simpleAssign2.default)({}, styles.box, afterStyle)),
- key: '::after'
- });
- }
-
- var children = [beforeElement, this.props.children, afterElement];
-
- var props = other;
- props.style = prepareStyles((0, _simpleAssign2.default)({}, this.props.style));
-
- return _react2.default.createElement(this.props.elementType, props, children);
- }
- }]);
- return BeforeAfterWrapper;
- }(_react.Component);
-
- BeforeAfterWrapper.defaultProps = {
- beforeElementType: 'div',
- afterElementType: 'div',
- elementType: 'div'
- };
- BeforeAfterWrapper.contextTypes = {
- muiTheme: _propTypes2.default.object.isRequired
- };
- BeforeAfterWrapper.propTypes = process.env.NODE_ENV !== "production" ? {
- afterElementType: _propTypes2.default.string,
- afterStyle: _propTypes2.default.object,
- beforeElementType: _propTypes2.default.string,
- beforeStyle: _propTypes2.default.object,
- children: _propTypes2.default.node,
- elementType: _propTypes2.default.string,
- /**
- * Override the inline-styles of the root element.
- */
- style: _propTypes2.default.object
- } : {};
- exports.default = BeforeAfterWrapper;
|