UNPKG

react-lightning-design-components

Version:

Salesforce Lightning Design System components built with React 16

255 lines (212 loc) 19.3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModalFooter = exports.ModalContent = exports.ModalHeader = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); 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 _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _Button = require('./Button'); var _Button2 = _interopRequireDefault(_Button); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ModalHeader = exports.ModalHeader = function (_Component) { (0, _inherits3.default)(ModalHeader, _Component); function ModalHeader() { (0, _classCallCheck3.default)(this, ModalHeader); return (0, _possibleConstructorReturn3.default)(this, (ModalHeader.__proto__ || (0, _getPrototypeOf2.default)(ModalHeader)).apply(this, arguments)); } (0, _createClass3.default)(ModalHeader, [{ key: 'onClose', value: function onClose() { if (this.props.onClose) { this.props.onClose(); } } }, { key: 'render', value: function render() { var _props = this.props, className = _props.className, title = _props.title, tagline = _props.tagline, closeButton = _props.closeButton, props = (0, _objectWithoutProperties3.default)(_props, ['className', 'title', 'tagline', 'closeButton']); var hdClassNames = (0, _classnames2.default)(className, 'slds-modal__header'); var pprops = props; delete pprops.onClose; delete pprops.iconSize; delete pprops.inverse; return _react2.default.createElement( 'div', (0, _extends3.default)({ className: hdClassNames }, pprops), _react2.default.createElement( 'h2', { className: 'slds-text-heading--medium' }, title ), tagline ? _react2.default.createElement( 'p', { className: 'slds-m-top--x-small' }, tagline ) : null, closeButton ? _react2.default.createElement(_Button2.default, { className: 'slds-button--icon-inverse slds-modal__close', icon: 'close', iconSize: 'large', size: 'large', alt: 'Close', inverse: true, onClick: this.onClose.bind(this) }) : null ); } }]); return ModalHeader; }(_react.Component); ModalHeader.propTypes = { className: _propTypes2.default.string, closeButton: _propTypes2.default.bool, isError: _propTypes2.default.bool, onClose: _propTypes2.default.func, tagline: _propTypes2.default.any, title: _propTypes2.default.node }; var ModalContent = function ModalContent(_ref) { var className = _ref.className, children = _ref.children, props = (0, _objectWithoutProperties3.default)(_ref, ['className', 'children']); var ctClassNames = (0, _classnames2.default)(className, 'slds-modal__content'); return _react2.default.createElement( 'div', (0, _extends3.default)({ className: ctClassNames }, props), children ); }; exports.ModalContent = ModalContent; ModalContent.propTypes = { className: _propTypes2.default.string, children: _propTypes2.default.node }; var Modal = function (_Component2) { (0, _inherits3.default)(Modal, _Component2); function Modal() { (0, _classCallCheck3.default)(this, Modal); return (0, _possibleConstructorReturn3.default)(this, (Modal.__proto__ || (0, _getPrototypeOf2.default)(Modal)).apply(this, arguments)); } (0, _createClass3.default)(Modal, [{ key: 'hide', value: function hide() { if (this.props.onHide) { this.props.onHide(); } } }, { key: 'renderChildComponent', value: function renderChildComponent(comp) { if (comp.type === ModalHeader) { var className = comp.props.className; if (this.props.isError) { className = (0, _classnames2.default)(className, 'slds-theme--error', 'slds-theme--alert-texture'); } return _react2.default.cloneElement(comp, { onClose: this.hide.bind(this), className: className }); } if (comp.type === ModalContent) { var _className = comp.props.className; if (this.props.isError) { _className = (0, _classnames2.default)(_className, 'slds-p-around--medium'); } return _react2.default.cloneElement(comp, { className: _className }); } return comp; } }, { key: 'render', value: function render() { var _props2 = this.props, className = _props2.className, opened = _props2.opened, children = _props2.children, size = _props2.size, isError = _props2.isError, props = (0, _objectWithoutProperties3.default)(_props2, ['className', 'opened', 'children', 'size', 'isError']); var pprops = (0, _extends3.default)({}, props); delete pprops.onHide; var modalClassNames = (0, _classnames2.default)(className, 'slds-modal', { 'slds-fade-in-open': opened, 'slds-modal--large': size === 'large', 'slds-modal--prompt': isError }); var backdropClassNames = (0, _classnames2.default)(className, 'slds-modal-backdrop', { 'slds-modal-backdrop--open': opened }); return _react2.default.createElement( 'div', null, _react2.default.createElement( 'div', (0, _extends3.default)({ className: modalClassNames, 'aria-hidden': !opened, role: 'dialog' }, pprops), _react2.default.createElement( 'div', { className: 'slds-modal__container' }, _react2.default.Children.map(children, this.renderChildComponent.bind(this)) ) ), _react2.default.createElement('div', { className: backdropClassNames }) ); } }]); return Modal; }(_react.Component); var MODAL_SIZES = ['large']; Modal.propTypes = { children: _propTypes2.default.node, className: _propTypes2.default.string, isError: _propTypes2.default.bool, onHide: _propTypes2.default.func, opened: _propTypes2.default.bool, size: _propTypes2.default.oneOf(MODAL_SIZES) }; var ModalFooter = function ModalFooter(_ref2) { var className = _ref2.className, directional = _ref2.directional, children = _ref2.children, props = (0, _objectWithoutProperties3.default)(_ref2, ['className', 'directional', 'children']); var ftClassNames = (0, _classnames2.default)(className, 'slds-modal__footer', { 'slds-modal__footer--directional': directional }); return _react2.default.createElement( 'div', (0, _extends3.default)({ className: ftClassNames }, props), children ); }; exports.ModalFooter = ModalFooter; ModalFooter.propTypes = { className: _propTypes2.default.string, directional: _propTypes2.default.bool, children: _propTypes2.default.node }; Modal.Header = ModalHeader; Modal.Content = ModalContent; Modal.Footer = ModalFooter; exports.default = Modal; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL01vZGFsLmpzIl0sIm5hbWVzIjpbIk1vZGFsSGVhZGVyIiwicHJvcHMiLCJvbkNsb3NlIiwiY2xhc3NOYW1lIiwidGl0bGUiLCJ0YWdsaW5lIiwiY2xvc2VCdXR0b24iLCJoZENsYXNzTmFtZXMiLCJwcHJvcHMiLCJpY29uU2l6ZSIsImludmVyc2UiLCJiaW5kIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsImlzRXJyb3IiLCJmdW5jIiwiYW55Iiwibm9kZSIsIk1vZGFsQ29udGVudCIsImNoaWxkcmVuIiwiY3RDbGFzc05hbWVzIiwiTW9kYWwiLCJvbkhpZGUiLCJjb21wIiwidHlwZSIsImNsb25lRWxlbWVudCIsImhpZGUiLCJvcGVuZWQiLCJzaXplIiwibW9kYWxDbGFzc05hbWVzIiwiYmFja2Ryb3BDbGFzc05hbWVzIiwiQ2hpbGRyZW4iLCJtYXAiLCJyZW5kZXJDaGlsZENvbXBvbmVudCIsIk1PREFMX1NJWkVTIiwib25lT2YiLCJNb2RhbEZvb3RlciIsImRpcmVjdGlvbmFsIiwiZnRDbGFzc05hbWVzIiwiSGVhZGVyIiwiQ29udGVudCIsIkZvb3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0lBRWFBLFcsV0FBQUEsVzs7Ozs7Ozs7Ozs4QkFDRDtBQUNSLFVBQUksS0FBS0MsS0FBTCxDQUFXQyxPQUFmLEVBQXdCO0FBQ3RCLGFBQUtELEtBQUwsQ0FBV0MsT0FBWDtBQUNEO0FBQ0Y7Ozs2QkFFUTtBQUFBLG1CQUNzRCxLQUFLRCxLQUQzRDtBQUFBLFVBQ0NFLFNBREQsVUFDQ0EsU0FERDtBQUFBLFVBQ1lDLEtBRFosVUFDWUEsS0FEWjtBQUFBLFVBQ21CQyxPQURuQixVQUNtQkEsT0FEbkI7QUFBQSxVQUM0QkMsV0FENUIsVUFDNEJBLFdBRDVCO0FBQUEsVUFDNENMLEtBRDVDOztBQUVQLFVBQU1NLGVB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QUFBQSxNQUF0Q21DLFdBQXNDLFNBQXRDQSxXQUFzQztBQUFBLE1BQXpCbEIsUUFBeUIsU0FBekJBLFFBQXlCO0FBQUEsTUFBWm5CLEtBQVk7O0FBQzdFLE1BQU1zQyxlQUFlLDBCQUNuQnBDLFNBRG1CLEVBRW5CLG9CQUZtQixFQUduQixFQUFFLG1DQUFtQ21DLFdBQXJDLEVBSG1CLENBQXJCO0FBS0EsU0FDRTtBQUFBO0FBQUEsNkJBQUssV0FBWUMsWUFBakIsSUFBcUN0QyxLQUFyQztBQUErQ21CO0FBQS9DLEdBREY7QUFHRCxDQVRNOzs7QUFXUGlCLFlBQVl6QixTQUFaLEdBQXdCO0FBQ3RCVCxhQUFXLG9CQUFVVSxNQURDO0FBRXRCeUIsZUFBYSxvQkFBVXhCLElBRkQ7QUFHdEJNLFlBQVUsb0JBQVVGO0FBSEUsQ0FBeEI7O0FBT0FJLE1BQU1rQixNQUFOLEdBQWV4QyxXQUFmO0FBQ0FzQixNQUFNbUIsT0FBTixHQUFnQnRCLFlBQWhCO0FBQ0FHLE1BQU1vQixNQUFOLEdBQWVMLFdBQWY7O2tCQUVlZixLIiwiZmlsZSI6Ik1vZGFsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IEJ1dHRvbiBmcm9tICcuL0J1dHRvbic7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgTW9kYWxIZWFkZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBvbkNsb3NlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2xvc2UpIHtcbiAgICAgIHRoaXMucHJvcHMub25DbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgdGl0bGUsIHRhZ2xpbmUsIGNsb3NlQnV0dG9uLCAuLi5wcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBoZENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWxfX2hlYWRlcicpO1xuICAgIGNvbnN0IHBwcm9wcyA9IHByb3BzO1xuICAgIGRlbGV0ZSBwcHJvcHMub25DbG9zZTtcbiAgICBkZWxldGUgcHByb3BzLmljb25TaXplO1xuICAgIGRlbGV0ZSBwcHJvcHMuaW52ZXJzZTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9eyBoZENsYXNzTmFtZXMgfSB7IC4uLnBwcm9wcyB9PlxuICAgICAgICA8aDIgY2xhc3NOYW1lPSdzbGRzLXRleHQtaGVhZGluZy0tbWVkaXVtJz57IHRpdGxlIH08L2gyPlxuICAgICAgICB7XG4gICAgICAgICAgdGFnbGluZSA/XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9J3NsZHMtbS10b3AtLXgtc21hbGwnPnsgdGFnbGluZSB9PC9wPiA6XG4gICAgICAgICAgICBudWxsXG4gICAgICAgIH1cbiAgICAgICAge1xuICAgICAgICAgIGNsb3NlQnV0dG9uID9cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPSdzbGRzLWJ1dHRvbi0taWNvbi1pbnZlcnNlIHNsZHMtbW9kYWxfX2Nsb3NlJ1xuICAgICAgICAgICAgICBpY29uPSdjbG9zZSdcbiAgICAgICAgICAgICAgaWNvblNpemU9J2xhcmdlJ1xuICAgICAgICAgICAgICBzaXplPSdsYXJnZSdcbiAgICAgICAgICAgICAgYWx0PSdDbG9zZSdcbiAgICAgICAgICAgICAgaW52ZXJzZVxuICAgICAgICAgICAgICBvbkNsaWNrPXsgdGhpcy5vbkNsb3NlLmJpbmQodGhpcykgfVxuICAgICAgICAgICAgLz4gOlxuICAgICAgICAgICAgbnVsbFxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9XG5cbn1cblxuTW9kYWxIZWFkZXIucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsb3NlQnV0dG9uOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0YWdsaW5lOiBQcm9wVHlwZXMuYW55LFxuICB0aXRsZTogUHJvcFR5cGVzLm5vZGUsXG59O1xuXG5leHBvcnQgY29uc3QgTW9kYWxDb250ZW50ID0gKHsgY2xhc3NOYW1lLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBjdENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWxfX2NvbnRlbnQnKTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17IGN0Q2xhc3NOYW1lcyB9IHsgLi4ucHJvcHMgfT57IGNoaWxkcmVuIH08L2Rpdj5cbiAgKTtcbn07XG5cbk1vZGFsQ29udGVudC5wcm9wVHlwZXMgPSB7XG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuY2xhc3MgTW9kYWwgZXh0ZW5kcyBDb21wb25lbnQge1xuICBoaWRlKCkge1xuICAgIGlmICh0aGlzLnByb3BzLm9uSGlkZSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkhpZGUoKTtcbiAgICB9XG4gIH1cblxuICByZW5kZXJDaGlsZENvbXBvbmVudChjb21wKSB7XG4gICAgaWYgKGNvbXAudHlwZSA9PT0gTW9kYWxIZWFkZXIpIHtcbiAgICAgIGxldCBjbGFzc05hbWUgPSBjb21wLnByb3BzLmNsYXNzTmFtZTtcbiAgICAgIGlmICh0aGlzLnByb3BzLmlzRXJyb3IpIHtcbiAgICAgICAgY2xhc3NOYW1lID0gY2xhc3NuYW1lcyhjbGFzc05hbWUsICdzbGRzLXRoZW1lLS1lcnJvcicsICdzbGRzLXRoZW1lLS1hbGVydC10ZXh0dXJlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNvbXAsIHsgb25DbG9zZTogdGhpcy5oaWRlLmJpbmQodGhpcyksIGNsYXNzTmFtZSB9KTtcbiAgICB9XG4gICAgaWYgKGNvbXAudHlwZSA9PT0gTW9kYWxDb250ZW50KSB7XG4gICAgICBsZXQgY2xhc3NOYW1lID0gY29tcC5wcm9wcy5jbGFzc05hbWU7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0Vycm9yKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCAnc2xkcy1wLWFyb3VuZC0tbWVkaXVtJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNvbXAsIHsgY2xhc3NOYW1lIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNsYXNzTmFtZSwgb3BlbmVkLCBjaGlsZHJlbiwgc2l6ZSwgaXNFcnJvciwgLi4ucHJvcHMgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3QgcHByb3BzID0geyAuLi5wcm9wcyB9O1xuICAgIGRlbGV0ZSBwcHJvcHMub25IaWRlO1xuICAgIGNvbnN0IG1vZGFsQ2xhc3NOYW1lcyA9IGNsYXNzbmFtZXMoY2xhc3NOYW1lLCAnc2xkcy1tb2RhbCcsIHtcbiAgICAgICdzbGRzLWZhZGUtaW4tb3Blbic6IG9wZW5lZCxcbiAgICAgICdzbGRzLW1vZGFsLS1sYXJnZSc6IHNpemUgPT09ICdsYXJnZScsXG4gICAgICAnc2xkcy1tb2RhbC0tcHJvbXB0JzogaXNFcnJvcixcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrZHJvcENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKGNsYXNzTmFtZSwgJ3NsZHMtbW9kYWwtYmFja2Ryb3AnLCB7XG4gICAgICAnc2xkcy1tb2RhbC1iYWNrZHJvcC0tb3Blbic6IG9wZW5lZCxcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17IG1vZGFsQ2xhc3NOYW1lcyB9XG4gICAgICAgICAgYXJpYS1oaWRkZW49eyAhb3BlbmVkIH1cbiAgICAgICAgICByb2xlPSdkaWFsb2cnXG4gICAgICAgICAgeyAuLi5wcHJvcHMgfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9J3NsZHMtbW9kYWxfX2NvbnRhaW5lcic+XG4gICAgICAgICAgICB7IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlbiwgdGhpcy5yZW5kZXJDaGlsZENvbXBvbmVudC5iaW5kKHRoaXMpKSB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17IGJhY2tkcm9wQ2xhc3NOYW1lcyB9PjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxufVxuXG5jb25zdCBNT0RBTF9TSVpFUyA9IFsnbGFyZ2UnXTtcblxuTW9kYWwucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNFcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uSGlkZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW5lZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNpemU6IFByb3BUeXBlcy5vbmVPZihNT0RBTF9TSVpFUyksXG59O1xuXG5leHBvcnQgY29uc3QgTW9kYWxGb290ZXIgPSAoeyBjbGFzc05hbWUsIGRpcmVjdGlvbmFsLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4ge1xuICBjb25zdCBmdENsYXNzTmFtZXMgPSBjbGFzc25hbWVzKFxuICAgIGNsYXNzTmFtZSxcbiAgICAnc2xkcy1tb2RhbF9fZm9vdGVyJyxcbiAgICB7ICdzbGRzLW1vZGFsX19mb290ZXItLWRpcmVjdGlvbmFsJzogZGlyZWN0aW9uYWwgfVxuICApO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXsgZnRDbGFzc05hbWVzIH0geyAuLi5wcm9wcyB9PnsgY2hpbGRyZW4gfTwvZGl2PlxuICApO1xufTtcblxuTW9kYWxGb290ZXIucHJvcFR5cGVzID0ge1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGRpcmVjdGlvbmFsOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxufTtcblxuXG5Nb2RhbC5IZWFkZXIgPSBNb2RhbEhlYWRlcjtcbk1vZGFsLkNvbnRlbnQgPSBNb2RhbENvbnRlbnQ7XG5Nb2RhbC5Gb290ZXIgPSBNb2RhbEZvb3RlcjtcblxuZXhwb3J0IGRlZmF1bHQgTW9kYWw7XG4iXX0=