1 | 'use strict';
|
2 |
|
3 | exports.__esModule = true;
|
4 |
|
5 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
6 |
|
7 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
8 |
|
9 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
10 |
|
11 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
12 |
|
13 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
14 |
|
15 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
16 |
|
17 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
18 |
|
19 | var _inherits3 = _interopRequireDefault(_inherits2);
|
20 |
|
21 | var _extends2 = require('babel-runtime/helpers/extends');
|
22 |
|
23 | var _extends3 = _interopRequireDefault(_extends2);
|
24 |
|
25 | var _classnames = require('classnames');
|
26 |
|
27 | var _classnames2 = _interopRequireDefault(_classnames);
|
28 |
|
29 | var _events = require('dom-helpers/events');
|
30 |
|
31 | var _events2 = _interopRequireDefault(_events);
|
32 |
|
33 | var _ownerDocument = require('dom-helpers/ownerDocument');
|
34 |
|
35 | var _ownerDocument2 = _interopRequireDefault(_ownerDocument);
|
36 |
|
37 | var _inDOM = require('dom-helpers/util/inDOM');
|
38 |
|
39 | var _inDOM2 = _interopRequireDefault(_inDOM);
|
40 |
|
41 | var _scrollbarSize = require('dom-helpers/util/scrollbarSize');
|
42 |
|
43 | var _scrollbarSize2 = _interopRequireDefault(_scrollbarSize);
|
44 |
|
45 | var _react = require('react');
|
46 |
|
47 | var _react2 = _interopRequireDefault(_react);
|
48 |
|
49 | var _propTypes = require('prop-types');
|
50 |
|
51 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
52 |
|
53 | var _reactDom = require('react-dom');
|
54 |
|
55 | var _reactDom2 = _interopRequireDefault(_reactDom);
|
56 |
|
57 | var _Modal = require('react-overlays/lib/Modal');
|
58 |
|
59 | var _Modal2 = _interopRequireDefault(_Modal);
|
60 |
|
61 | var _isOverflowing = require('react-overlays/lib/utils/isOverflowing');
|
62 |
|
63 | var _isOverflowing2 = _interopRequireDefault(_isOverflowing);
|
64 |
|
65 | var _elementType = require('prop-types-extra/lib/elementType');
|
66 |
|
67 | var _elementType2 = _interopRequireDefault(_elementType);
|
68 |
|
69 | var _Fade = require('./Fade');
|
70 |
|
71 | var _Fade2 = _interopRequireDefault(_Fade);
|
72 |
|
73 | var _ModalBody = require('./ModalBody');
|
74 |
|
75 | var _ModalBody2 = _interopRequireDefault(_ModalBody);
|
76 |
|
77 | var _ModalDialog = require('./ModalDialog');
|
78 |
|
79 | var _ModalDialog2 = _interopRequireDefault(_ModalDialog);
|
80 |
|
81 | var _ModalFooter = require('./ModalFooter');
|
82 |
|
83 | var _ModalFooter2 = _interopRequireDefault(_ModalFooter);
|
84 |
|
85 | var _ModalHeader = require('./ModalHeader');
|
86 |
|
87 | var _ModalHeader2 = _interopRequireDefault(_ModalHeader);
|
88 |
|
89 | var _ModalTitle = require('./ModalTitle');
|
90 |
|
91 | var _ModalTitle2 = _interopRequireDefault(_ModalTitle);
|
92 |
|
93 | var _bootstrapUtils = require('./utils/bootstrapUtils');
|
94 |
|
95 | var _createChainedFunction = require('./utils/createChainedFunction');
|
96 |
|
97 | var _createChainedFunction2 = _interopRequireDefault(_createChainedFunction);
|
98 |
|
99 | var _splitComponentProps2 = require('./utils/splitComponentProps');
|
100 |
|
101 | var _splitComponentProps3 = _interopRequireDefault(_splitComponentProps2);
|
102 |
|
103 | var _StyleConfig = require('./utils/StyleConfig');
|
104 |
|
105 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
106 |
|
107 | var propTypes = (0, _extends3.default)({}, _Modal2.default.propTypes, _ModalDialog2.default.propTypes, {
|
108 |
|
109 | |
110 |
|
111 |
|
112 |
|
113 | backdrop: _propTypes2.default.oneOf(['static', true, false]),
|
114 |
|
115 | |
116 |
|
117 |
|
118 |
|
119 | backdropClassName: _propTypes2.default.string,
|
120 |
|
121 | |
122 |
|
123 |
|
124 | keyboard: _propTypes2.default.bool,
|
125 |
|
126 | |
127 |
|
128 |
|
129 | animation: _propTypes2.default.bool,
|
130 |
|
131 | |
132 |
|
133 |
|
134 |
|
135 |
|
136 | dialogComponentClass: _elementType2.default,
|
137 |
|
138 | |
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 | autoFocus: _propTypes2.default.bool,
|
145 |
|
146 | |
147 |
|
148 |
|
149 |
|
150 |
|
151 | enforceFocus: _propTypes2.default.bool,
|
152 |
|
153 | |
154 |
|
155 |
|
156 |
|
157 | restoreFocus: _propTypes2.default.bool,
|
158 |
|
159 | |
160 |
|
161 |
|
162 | show: _propTypes2.default.bool,
|
163 |
|
164 | |
165 |
|
166 |
|
167 |
|
168 | onHide: _propTypes2.default.func,
|
169 |
|
170 | |
171 |
|
172 |
|
173 | onEnter: _propTypes2.default.func,
|
174 |
|
175 | |
176 |
|
177 |
|
178 | onEntering: _propTypes2.default.func,
|
179 |
|
180 | |
181 |
|
182 |
|
183 | onEntered: _propTypes2.default.func,
|
184 |
|
185 | |
186 |
|
187 |
|
188 | onExit: _propTypes2.default.func,
|
189 |
|
190 | |
191 |
|
192 |
|
193 | onExiting: _propTypes2.default.func,
|
194 |
|
195 | |
196 |
|
197 |
|
198 | onExited: _propTypes2.default.func,
|
199 |
|
200 | |
201 |
|
202 |
|
203 | container: _Modal2.default.propTypes.container
|
204 | });
|
205 |
|
206 | var defaultProps = (0, _extends3.default)({}, _Modal2.default.defaultProps, {
|
207 | animation: true,
|
208 | dialogComponentClass: _ModalDialog2.default
|
209 | });
|
210 |
|
211 | var childContextTypes = {
|
212 | $bs_modal: _propTypes2.default.shape({
|
213 | onHide: _propTypes2.default.func
|
214 | })
|
215 | };
|
216 |
|
217 |
|
218 | function DialogTransition(props) {
|
219 | return _react2.default.createElement(_Fade2.default, (0, _extends3.default)({}, props, { timeout: Modal.TRANSITION_DURATION }));
|
220 | }
|
221 |
|
222 | function BackdropTransition(props) {
|
223 | return _react2.default.createElement(_Fade2.default, (0, _extends3.default)({}, props, { timeout: Modal.BACKDROP_TRANSITION_DURATION }));
|
224 | }
|
225 |
|
226 |
|
227 |
|
228 | var Modal = function (_React$Component) {
|
229 | (0, _inherits3.default)(Modal, _React$Component);
|
230 |
|
231 | function Modal(props, context) {
|
232 | (0, _classCallCheck3.default)(this, Modal);
|
233 |
|
234 | var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call(this, props, context));
|
235 |
|
236 | _this.handleEntering = _this.handleEntering.bind(_this);
|
237 | _this.handleExited = _this.handleExited.bind(_this);
|
238 | _this.handleWindowResize = _this.handleWindowResize.bind(_this);
|
239 | _this.handleDialogClick = _this.handleDialogClick.bind(_this);
|
240 | _this.setModalRef = _this.setModalRef.bind(_this);
|
241 |
|
242 | _this.state = {
|
243 | style: {}
|
244 | };
|
245 | return _this;
|
246 | }
|
247 |
|
248 | Modal.prototype.getChildContext = function getChildContext() {
|
249 | return {
|
250 | $bs_modal: {
|
251 | onHide: this.props.onHide
|
252 | }
|
253 | };
|
254 | };
|
255 |
|
256 | Modal.prototype.componentWillUnmount = function componentWillUnmount() {
|
257 |
|
258 | this.handleExited();
|
259 | };
|
260 |
|
261 | Modal.prototype.setModalRef = function setModalRef(ref) {
|
262 | this._modal = ref;
|
263 | };
|
264 |
|
265 | Modal.prototype.handleDialogClick = function handleDialogClick(e) {
|
266 | if (e.target !== e.currentTarget) {
|
267 | return;
|
268 | }
|
269 |
|
270 | this.props.onHide();
|
271 | };
|
272 |
|
273 | Modal.prototype.handleEntering = function handleEntering() {
|
274 |
|
275 | _events2.default.on(window, 'resize', this.handleWindowResize);
|
276 | this.updateStyle();
|
277 | };
|
278 |
|
279 | Modal.prototype.handleExited = function handleExited() {
|
280 |
|
281 | _events2.default.off(window, 'resize', this.handleWindowResize);
|
282 | };
|
283 |
|
284 | Modal.prototype.handleWindowResize = function handleWindowResize() {
|
285 | this.updateStyle();
|
286 | };
|
287 |
|
288 | Modal.prototype.updateStyle = function updateStyle() {
|
289 | if (!_inDOM2.default) {
|
290 | return;
|
291 | }
|
292 |
|
293 | var dialogNode = this._modal.getDialogElement();
|
294 | var dialogHeight = dialogNode.scrollHeight;
|
295 |
|
296 | var document = (0, _ownerDocument2.default)(dialogNode);
|
297 | var bodyIsOverflowing = (0, _isOverflowing2.default)(_reactDom2.default.findDOMNode(this.props.container || document.body));
|
298 | var modalIsOverflowing = dialogHeight > document.documentElement.clientHeight;
|
299 |
|
300 | this.setState({
|
301 | style: {
|
302 | paddingRight: bodyIsOverflowing && !modalIsOverflowing ? (0, _scrollbarSize2.default)() : undefined,
|
303 | paddingLeft: !bodyIsOverflowing && modalIsOverflowing ? (0, _scrollbarSize2.default)() : undefined
|
304 | }
|
305 | });
|
306 | };
|
307 |
|
308 | Modal.prototype.render = function render() {
|
309 | var _props = this.props,
|
310 | backdrop = _props.backdrop,
|
311 | backdropClassName = _props.backdropClassName,
|
312 | animation = _props.animation,
|
313 | show = _props.show,
|
314 | Dialog = _props.dialogComponentClass,
|
315 | className = _props.className,
|
316 | style = _props.style,
|
317 | children = _props.children,
|
318 | onEntering = _props.onEntering,
|
319 | onExited = _props.onExited,
|
320 | props = (0, _objectWithoutProperties3.default)(_props, ['backdrop', 'backdropClassName', 'animation', 'show', 'dialogComponentClass', 'className', 'style', 'children', 'onEntering', 'onExited']);
|
321 |
|
322 | var _splitComponentProps = (0, _splitComponentProps3.default)(props, _Modal2.default),
|
323 | baseModalProps = _splitComponentProps[0],
|
324 | dialogProps = _splitComponentProps[1];
|
325 |
|
326 | var inClassName = show && !animation && 'in';
|
327 |
|
328 | return _react2.default.createElement(
|
329 | _Modal2.default,
|
330 | (0, _extends3.default)({}, baseModalProps, {
|
331 | ref: this.setModalRef,
|
332 | show: show,
|
333 | containerClassName: (0, _bootstrapUtils.prefix)(props, 'open'),
|
334 | transition: animation ? DialogTransition : undefined,
|
335 | backdrop: backdrop,
|
336 | backdropTransition: animation ? BackdropTransition : undefined,
|
337 | backdropClassName: (0, _classnames2.default)((0, _bootstrapUtils.prefix)(props, 'backdrop'), backdropClassName, inClassName),
|
338 | onEntering: (0, _createChainedFunction2.default)(onEntering, this.handleEntering),
|
339 | onExited: (0, _createChainedFunction2.default)(onExited, this.handleExited)
|
340 | }),
|
341 | _react2.default.createElement(
|
342 | Dialog,
|
343 | (0, _extends3.default)({}, dialogProps, {
|
344 | style: (0, _extends3.default)({}, this.state.style, style),
|
345 | className: (0, _classnames2.default)(className, inClassName),
|
346 | onClick: backdrop === true ? this.handleDialogClick : null
|
347 | }),
|
348 | children
|
349 | )
|
350 | );
|
351 | };
|
352 |
|
353 | return Modal;
|
354 | }(_react2.default.Component);
|
355 |
|
356 | Modal.propTypes = propTypes;
|
357 | Modal.defaultProps = defaultProps;
|
358 | Modal.childContextTypes = childContextTypes;
|
359 |
|
360 | Modal.Body = _ModalBody2.default;
|
361 | Modal.Header = _ModalHeader2.default;
|
362 | Modal.Title = _ModalTitle2.default;
|
363 | Modal.Footer = _ModalFooter2.default;
|
364 |
|
365 | Modal.Dialog = _ModalDialog2.default;
|
366 |
|
367 | Modal.TRANSITION_DURATION = 300;
|
368 | Modal.BACKDROP_TRANSITION_DURATION = 150;
|
369 |
|
370 | exports.default = (0, _bootstrapUtils.bsClass)('modal', (0, _bootstrapUtils.bsSizes)([_StyleConfig.Size.LARGE, _StyleConfig.Size.SMALL], Modal));
|
371 | module.exports = exports['default']; |
\ | No newline at end of file |