sophia-components
Version:
Sophia React Components based on bulma.io
152 lines (114 loc) • 4.91 kB
JavaScript
'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);