UNPKG

@salesforce/design-system-react

Version:

Salesforce Lightning Design System for React

170 lines (146 loc) 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _createReactClass = require("create-react-class"); var _createReactClass2 = _interopRequireDefault(_createReactClass); var _reactDom = require("react-dom"); var _reactDom2 = _interopRequireDefault(_reactDom); var _reactModal = require("react-modal"); var _reactModal2 = _interopRequireDefault(_reactModal); var _button = require("../../button"); var _button2 = _interopRequireDefault(_button); var _icon = require("../../icon"); var _icon2 = _interopRequireDefault(_icon); var _event = require("../../../utilities/event"); var _event2 = _interopRequireDefault(_event); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved */ /* Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */ var customStyles = { content: { position: 'default', top: 'default', left: 'default', right: 'default', bottom: 'default', border: 'default', background: 'default', overflow: 'default', WebkitOverflowScrolling: 'default', borderRadius: 'default', outline: 'default', padding: 'default' }, overlay: { backgroundColor: 'default' } }; // This component should be deprecated and appears to have // been created in order to do modals in portals. var Manager = (0, _createReactClass2.default)({ displayName: "Manager", getDefaultProps: function getDefaultProps() { return { title: '', isOpen: false }; }, getInitialState: function getInitialState() { return { isOpen: this.props.isOpen, revealed: false }; }, componentDidMount: function componentDidMount() { var _this = this; if (!this.state.revealed) { setTimeout(function () { _this.setState({ revealed: true }); }); } this.updateBodyScroll(); }, componentDidUpdate: function componentDidUpdate(prevProps, prevState) { if (this.state.isOpen !== prevState.isOpen) { this.updateBodyScroll(); if (!this.state.isOpen) { if (!this.isUnmounting) { var el = this.getDOMNode().parentNode; if (el && el.getAttribute('data-slds-modal')) { _reactDom2.default.unmountComponentAtNode(el); document.body.removeChild(el); } } } } }, componentWillUnmount: function componentWillUnmount() { this.isUnmounting = true; }, getModal: function getModal() { return ( /* eslint-disable jsx-a11y/no-static-element-interactions */ _react2.default.createElement("div", { className: "slds-modal".concat(this.state.revealed ? ' slds-fade-in-open' : ''), onClick: this.closeModal }, _react2.default.createElement("div", { className: "slds-modal__container", onClick: function onClick(e) { _event2.default.trap(e); } }, _react2.default.createElement("div", { className: "slds-modal__header" }, _react2.default.createElement("h2", { className: "slds-text-heading--medium" }, this.props.title), _react2.default.createElement(_button2.default, { className: "slds-button slds-modal__close", onClick: this.closeModal }, _react2.default.createElement(_icon2.default, { name: "close", category: "utility", size: "small" }), _react2.default.createElement("span", { className: "slds-assistive-text" }, "Close"))), _react2.default.createElement("div", { className: "slds-modal__content" }, this.props.children), _react2.default.createElement("div", { className: "slds-modal__footer" }, this.props.footer))) ); }, openModal: function openModal() { this.setState({ isOpen: true }); }, closeModal: function closeModal() { this.setState({ isOpen: false }); }, handleSubmitModal: function handleSubmitModal() { this.closeModal(); }, updateBodyScroll: function updateBodyScroll() { if (window && document && document.body) { if (this.state.isOpen) { document.body.style.overflow = 'hidden'; } else { document.body.style.overflow = 'inherit'; } } }, render: function render() { return _react2.default.createElement(_reactModal2.default, { isOpen: this.state.isOpen, onRequestClose: this.closeModal, style: customStyles, overlayClassName: "slds-modal-backdrop".concat(this.state.revealed ? ' slds-modal-backdrop--open' : '') }, this.getModal()); } }); exports.default = Manager;