@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
185 lines (164 loc) • 4.56 kB
JavaScript
;
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 _button = require('../../button');
var _button2 = _interopRequireDefault(_button);
var _icon = require('../../icon');
var _icon2 = _interopRequireDefault(_icon);
var _event = require('../../../utilities/event');
var _event2 = _interopRequireDefault(_event);
var _reactModal = require('react-modal');
var _reactModal2 = _interopRequireDefault(_reactModal);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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'
}
}; /* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved */
/* Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */
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();
},
componentWillUnmount: function componentWillUnmount() {
this.isUnmounting = true;
},
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';
}
}
},
getModal: function getModal() {
return (
/* eslint-disable jsx-a11y/no-static-element-interactions */
_react2.default.createElement(
'div',
{
className: 'slds-modal' + (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
)
)
)
);
},
render: function render() {
return _react2.default.createElement(
_reactModal2.default,
{
isOpen: this.state.isOpen,
onRequestClose: this.closeModal,
style: customStyles,
overlayClassName: 'slds-modal-backdrop' + (this.state.revealed ? ' slds-modal-backdrop--open' : '')
},
this.getModal()
);
},
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);
}
}
}
}
}
});
exports.default = Manager;