UNPKG

sophia-components

Version:
152 lines (114 loc) 4.91 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _compose = require('recompose/compose'); var _compose2 = _interopRequireDefault(_compose); var _withEvents = require('../../base/withEvents'); var _withEvents2 = _interopRequireDefault(_withEvents); var _withAttrs = require('../../base/withAttrs'); var _withAttrs2 = _interopRequireDefault(_withAttrs); var _withIsHas = require('../../base/withIsHas'); var _withIsHas2 = _interopRequireDefault(_withIsHas); var _helpers = require('../../utils/helpers'); var _ModalContent = require('./components/ModalContent'); var _ModalContent2 = _interopRequireDefault(_ModalContent); var _ModalBackground = require('./components/ModalBackground'); var _ModalBackground2 = _interopRequireDefault(_ModalBackground); var _ModalClose = require('./components/ModalClose'); var _ModalClose2 = _interopRequireDefault(_ModalClose); var _ModalCard = require('./components/ModalCard'); var _ModalCard2 = _interopRequireDefault(_ModalCard); var _ModalCardHead = require('./components/ModalCardHead'); var _ModalCardHead2 = _interopRequireDefault(_ModalCardHead); var _ModalCardBody = require('./components/ModalCardBody'); var _ModalCardBody2 = _interopRequireDefault(_ModalCardBody); var _ModalCardFoot = require('./components/ModalCardFoot'); var _ModalCardFoot2 = _interopRequireDefault(_ModalCardFoot); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var constructCard = function constructCard(card, onCloseClick) { if (card.head || card.body || card.foot) { return _react2.default.createElement( _ModalCard2.default, null, _react2.default.createElement( _ModalCardHead2.default, { onCloseClick: onCloseClick }, card.head ), _react2.default.createElement( _ModalCardBody2.default, null, card.body ), _react2.default.createElement( _ModalCardFoot2.default, null, card.foot ) ); } return _react2.default.createElement( _ModalCard2.default, null, card ); }; var getContentElement = function getContentElement(content, card, onCloseClick) { return card ? constructCard(card, onCloseClick) : _react2.default.createElement( _ModalContent2.default, null, content ); }; var Modal = function Modal(_ref) { var children = _ref.children, _ref$attrs = _ref.attrs, className = _ref$attrs.className, restAttrs = _objectWithoutProperties(_ref$attrs, ['className']), events = _ref.events, withOverlay = _ref.withOverlay, onOverlayClick = _ref.onOverlayClick, onCloseClick = _ref.onCloseClick, content = _ref.content, card = _ref.card; var overlay = !withOverlay && !onOverlayClick ? null : _react2.default.createElement(_ModalBackground2.default, { onClick: onOverlayClick }); var closeButton = !onCloseClick || card && card.head ? null : _react2.default.createElement(_ModalClose2.default, { onClick: onCloseClick }); var contentElement = children || getContentElement(content, card, onCloseClick); return _react2.default.createElement( 'div', _extends({ className: (0, _helpers.classNameJoiner)('modal', className) }, restAttrs, events), overlay, contentElement, closeButton ); }; Modal.propTypes = { children: _propTypes2.default.node, content: _propTypes2.default.node, card: _propTypes2.default.oneOfType([_propTypes2.default.node, _propTypes2.default.shape({ head: _propTypes2.default.node, body: _propTypes2.default.node, foot: _propTypes2.default.node })]), attrs: _propTypes2.default.shape().isRequired, events: _propTypes2.default.shape().isRequired, withOverlay: _propTypes2.default.bool, onOverlayClick: _propTypes2.default.func, onCloseClick: _propTypes2.default.func }; Modal.defaultProps = { children: null, content: null, card: null, withOverlay: false, onOverlayClick: null, onCloseClick: null }; exports.default = (0, _compose2.default)((0, _withEvents2.default)(), (0, _withIsHas2.default)((0, _helpers.combineSets)(_withIsHas.helpersIsKeys, ['active']), _withIsHas.helpersHasKeys), (0, _withAttrs2.default)())(Modal);