@zohodesk/components 1.4.4 → 1.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cli/propValidation_report.html +1 -1
- package/README.md +25 -0
- package/es/AppContainer/AppContainer.js +1 -1
- package/es/DropBox/DropBox.js +3 -3
- package/es/Modal/Modal.js +35 -14
- package/es/Modal/Portal/Portal.js +33 -0
- package/es/Modal/Portal/__tests__/Portal.spec.js +28 -0
- package/es/Modal/Portal/__tests__/__snapshots__/Portal.spec.js.snap +30 -0
- package/es/Modal/Portal/props/defaultProps.js +3 -0
- package/es/Modal/Portal/props/propTypes.js +5 -0
- package/es/Popup/Popup.js +196 -92
- package/es/Popup/Registry.js +35 -0
- package/es/Popup/viewPort.js +15 -16
- package/es/Provider/Config.js +4 -1
- package/es/RippleEffect/RippleEffect.module.css +3 -2
- package/es/css.js +4 -4
- package/lib/AppContainer/AppContainer.js +1 -1
- package/lib/DropBox/DropBox.js +3 -3
- package/lib/Modal/Modal.js +40 -16
- package/lib/Modal/Portal/Portal.js +46 -0
- package/lib/Modal/Portal/__tests__/Portal.spec.js +37 -0
- package/lib/Modal/Portal/__tests__/__snapshots__/Portal.spec.js.snap +30 -0
- package/lib/Modal/Portal/props/defaultProps.js +10 -0
- package/lib/Modal/Portal/props/propTypes.js +16 -0
- package/lib/Popup/Popup.js +265 -147
- package/lib/Popup/Registry.js +45 -0
- package/lib/Popup/viewPort.js +15 -16
- package/lib/Provider/Config.js +4 -1
- package/lib/RippleEffect/RippleEffect.module.css +3 -2
- package/lib/css.js +4 -4
- package/package.json +11 -10
- package/result.json +1 -1
package/lib/Popup/Popup.js
CHANGED
|
@@ -29,6 +29,8 @@ var _isMobilePopover = _interopRequireDefault(require("../DropBox/utils/isMobile
|
|
|
29
29
|
|
|
30
30
|
var _selectn = _interopRequireDefault(require("selectn"));
|
|
31
31
|
|
|
32
|
+
var _Registry = _interopRequireDefault(require("./Registry.js"));
|
|
33
|
+
|
|
32
34
|
var _excluded = ["isMobile"];
|
|
33
35
|
|
|
34
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -71,11 +73,8 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
|
71
73
|
|
|
72
74
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
73
75
|
|
|
74
|
-
var lastOpenedGroup = [];
|
|
75
|
-
var popups = {};
|
|
76
|
-
|
|
77
76
|
global.closeGroupPopups = function (groupName) {
|
|
78
|
-
var groupPopups = popups[groupName] || [];
|
|
77
|
+
var groupPopups = _Registry["default"].popups[groupName] || [];
|
|
79
78
|
groupPopups.forEach(function (popup) {
|
|
80
79
|
popup.state.isPopupOpen && popup.setState({
|
|
81
80
|
isPopupOpen: false,
|
|
@@ -97,6 +96,53 @@ var defaultState = {
|
|
|
97
96
|
//{height: ‘’, width: ‘’,}
|
|
98
97
|
isAbsolutePositioningNeeded: true
|
|
99
98
|
};
|
|
99
|
+
var SCROLL_BLOCK_EVENTS = Object.freeze([{
|
|
100
|
+
name: 'wheel',
|
|
101
|
+
handlerName: 'handleBlockScroll',
|
|
102
|
+
options: {
|
|
103
|
+
capture: true,
|
|
104
|
+
passive: false
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
name: 'touchmove',
|
|
108
|
+
handlerName: 'handleBlockScroll',
|
|
109
|
+
options: {
|
|
110
|
+
capture: true,
|
|
111
|
+
passive: false
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
name: 'scroll',
|
|
115
|
+
handlerName: 'handlePositionChange',
|
|
116
|
+
options: {
|
|
117
|
+
capture: true,
|
|
118
|
+
passive: false
|
|
119
|
+
}
|
|
120
|
+
}, {
|
|
121
|
+
name: 'keydown',
|
|
122
|
+
handlerName: 'preventKeyboardScroll',
|
|
123
|
+
options: {
|
|
124
|
+
capture: true,
|
|
125
|
+
passive: false
|
|
126
|
+
}
|
|
127
|
+
}]);
|
|
128
|
+
var IFRAME_SCROLL_BLOCK_EVENTS = Object.freeze(SCROLL_BLOCK_EVENTS.filter(function (event) {
|
|
129
|
+
return event.name !== 'keydown';
|
|
130
|
+
}));
|
|
131
|
+
var CLICK_EVENTS = Object.freeze([{
|
|
132
|
+
name: 'click',
|
|
133
|
+
handlerName: 'documentClickHandler',
|
|
134
|
+
options: {
|
|
135
|
+
capture: false,
|
|
136
|
+
passive: false
|
|
137
|
+
}
|
|
138
|
+
}, {
|
|
139
|
+
name: 'click',
|
|
140
|
+
handlerName: 'documentClickHandler1',
|
|
141
|
+
options: {
|
|
142
|
+
capture: true,
|
|
143
|
+
passive: false
|
|
144
|
+
}
|
|
145
|
+
}]);
|
|
100
146
|
/* eslint-disable react/no-deprecated */
|
|
101
147
|
|
|
102
148
|
/* eslint-disable react/prop-types */
|
|
@@ -172,8 +218,11 @@ var Popup = function Popup(Component) {
|
|
|
172
218
|
_this.handleBlockScroll = _this.handleBlockScroll.bind(_assertThisInitialized(_this));
|
|
173
219
|
_this.handlePositionChange = _this.handlePositionChange.bind(_assertThisInitialized(_this));
|
|
174
220
|
_this.preventKeyboardScroll = _this.preventKeyboardScroll.bind(_assertThisInitialized(_this));
|
|
221
|
+
_this.updateListeners = _this.updateListeners.bind(_assertThisInitialized(_this));
|
|
175
222
|
_this.addScrollBlockListeners = _this.addScrollBlockListeners.bind(_assertThisInitialized(_this));
|
|
176
223
|
_this.removeScrollBlockListeners = _this.removeScrollBlockListeners.bind(_assertThisInitialized(_this));
|
|
224
|
+
_this.addScrollToUpdateListeners = _this.addScrollToUpdateListeners.bind(_assertThisInitialized(_this));
|
|
225
|
+
_this.removeScrollToUpdateListeners = _this.removeScrollToUpdateListeners.bind(_assertThisInitialized(_this));
|
|
177
226
|
_this.handleAddingScrollBlock = _this.handleAddingScrollBlock.bind(_assertThisInitialized(_this));
|
|
178
227
|
_this.handleRemovingScrollBlock = _this.handleRemovingScrollBlock.bind(_assertThisInitialized(_this));
|
|
179
228
|
_this.handleIntersectionObserver = _this.handleIntersectionObserver.bind(_assertThisInitialized(_this));
|
|
@@ -183,8 +232,10 @@ var Popup = function Popup(Component) {
|
|
|
183
232
|
_this.setContainerDynamicPositioning = _this.setContainerDynamicPositioning.bind(_assertThisInitialized(_this));
|
|
184
233
|
_this.updatePopupState = _this.updatePopupState.bind(_assertThisInitialized(_this));
|
|
185
234
|
_this.handleScrollAndBlockEvents = _this.handleScrollAndBlockEvents.bind(_assertThisInitialized(_this));
|
|
235
|
+
_this.handleIframeEventListeners = _this.handleIframeEventListeners.bind(_assertThisInitialized(_this));
|
|
186
236
|
_this.handleDropElementStyleUpdate = _this.handleDropElementStyleUpdate.bind(_assertThisInitialized(_this));
|
|
187
237
|
_this.positionRef = /*#__PURE__*/_react["default"].createRef();
|
|
238
|
+
_this.rootElement = _Registry["default"].getRootElement();
|
|
188
239
|
_this.popupObserver = new _ResizeObserver["default"](_this.handlePopupResize); //dropBoxSize
|
|
189
240
|
|
|
190
241
|
_this.size = null;
|
|
@@ -207,16 +258,15 @@ var Popup = function Popup(Component) {
|
|
|
207
258
|
key: "componentDidMount",
|
|
208
259
|
value: function componentDidMount() {
|
|
209
260
|
var group = this.getGroup();
|
|
210
|
-
var groupPopups = popups[group] || [];
|
|
261
|
+
var groupPopups = _Registry["default"].popups[group] || [];
|
|
211
262
|
groupPopups.push(this);
|
|
212
|
-
popups[group] = groupPopups;
|
|
263
|
+
_Registry["default"].popups[group] = groupPopups;
|
|
213
264
|
|
|
214
|
-
if (Object.keys(popups).length === 1 && groupPopups.length === 1) {
|
|
215
|
-
|
|
265
|
+
if (Object.keys(_Registry["default"].popups).length === 1 && groupPopups.length === 1) {
|
|
266
|
+
this.updateListeners(true, CLICK_EVENTS, document);
|
|
216
267
|
document.addEventListener('keyup', this.documentKeyupHandler, false); // document.addEventListener('scroll', this.handleScroll, true);
|
|
217
268
|
|
|
218
269
|
window.addEventListener('resize', this.handleResize);
|
|
219
|
-
document.addEventListener('click', this.documentClickHandler1, true);
|
|
220
270
|
document.addEventListener('mousedown', this.handleDocumentMouseDown, true);
|
|
221
271
|
document.addEventListener('focus', this.handleDocumentFocus, true);
|
|
222
272
|
}
|
|
@@ -235,8 +285,8 @@ var Popup = function Popup(Component) {
|
|
|
235
285
|
}
|
|
236
286
|
}, {
|
|
237
287
|
key: "handleScrollAndBlockEvents",
|
|
238
|
-
value: function handleScrollAndBlockEvents(
|
|
239
|
-
if (
|
|
288
|
+
value: function handleScrollAndBlockEvents(shouldAdd) {
|
|
289
|
+
if (shouldAdd) {
|
|
240
290
|
this.handleAddingScrollBlock();
|
|
241
291
|
this.handleAddingScrollToUpdatePosition();
|
|
242
292
|
} else {
|
|
@@ -244,6 +294,19 @@ var Popup = function Popup(Component) {
|
|
|
244
294
|
this.handleRemovingScrollToUpdatePosition();
|
|
245
295
|
}
|
|
246
296
|
}
|
|
297
|
+
}, {
|
|
298
|
+
key: "handleIframeEventListeners",
|
|
299
|
+
value: function handleIframeEventListeners(shouldAdd, eventList) {
|
|
300
|
+
var _this2 = this;
|
|
301
|
+
|
|
302
|
+
this.rootElement.querySelectorAll('iframe').forEach(function (frame) {
|
|
303
|
+
var frameDocument = frame.contentDocument;
|
|
304
|
+
|
|
305
|
+
if (frameDocument) {
|
|
306
|
+
_this2.updateListeners(shouldAdd, eventList, frameDocument);
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
}
|
|
247
310
|
}, {
|
|
248
311
|
key: "componentDidUpdate",
|
|
249
312
|
value: function componentDidUpdate(prevProps, prevState) {
|
|
@@ -269,33 +332,36 @@ var Popup = function Popup(Component) {
|
|
|
269
332
|
}
|
|
270
333
|
|
|
271
334
|
if (oldStateOpen !== isPopupReady && !isMobile || oldIsMobileState !== isMobile) {
|
|
272
|
-
|
|
335
|
+
var shouldAdd = isPopupReady && !isMobile;
|
|
336
|
+
this.handleScrollAndBlockEvents(shouldAdd);
|
|
337
|
+
this.handleIframeEventListeners(shouldAdd, CLICK_EVENTS);
|
|
273
338
|
}
|
|
274
339
|
}
|
|
275
340
|
}, {
|
|
276
341
|
key: "componentWillUnmount",
|
|
277
342
|
value: function componentWillUnmount() {
|
|
278
|
-
var
|
|
343
|
+
var _this3 = this;
|
|
279
344
|
|
|
280
345
|
var group = this.getGroup();
|
|
281
|
-
popups = Object.keys(popups).reduce(function (res, groupName) {
|
|
346
|
+
_Registry["default"].popups = Object.keys(_Registry["default"].popups).reduce(function (res, groupName) {
|
|
282
347
|
if (groupName === group) {
|
|
283
|
-
var groupPopups = popups[group];
|
|
348
|
+
var groupPopups = _Registry["default"].popups[group];
|
|
284
349
|
var newGroupPopups = groupPopups.filter(function (popup) {
|
|
285
|
-
return popup !==
|
|
350
|
+
return popup !== _this3;
|
|
286
351
|
});
|
|
287
|
-
newGroupPopups.length === 0 && lastOpenedGroup.indexOf(group) >= 0 && lastOpenedGroup.splice(lastOpenedGroup.indexOf(group), 1);
|
|
352
|
+
newGroupPopups.length === 0 && _Registry["default"].lastOpenedGroup.indexOf(group) >= 0 && _Registry["default"].lastOpenedGroup.splice(_Registry["default"].lastOpenedGroup.indexOf(group), 1);
|
|
288
353
|
res[group] = newGroupPopups;
|
|
289
354
|
}
|
|
290
355
|
|
|
291
356
|
return res;
|
|
292
|
-
}, popups);
|
|
357
|
+
}, _Registry["default"].popups);
|
|
293
358
|
this.handleRemovingScrollBlock();
|
|
294
359
|
this.handleRemovingScrollToUpdatePosition();
|
|
360
|
+
this.handleIframeEventListeners(false, CLICK_EVENTS);
|
|
295
361
|
var noPopups = true;
|
|
296
362
|
|
|
297
|
-
for (var i in popups) {
|
|
298
|
-
if (popups[i].length >= 1) {
|
|
363
|
+
for (var i in _Registry["default"].popups) {
|
|
364
|
+
if (_Registry["default"].popups[i].length >= 1) {
|
|
299
365
|
noPopups = false;
|
|
300
366
|
break;
|
|
301
367
|
}
|
|
@@ -306,11 +372,10 @@ var Popup = function Popup(Component) {
|
|
|
306
372
|
}
|
|
307
373
|
|
|
308
374
|
if (noPopups) {
|
|
309
|
-
|
|
375
|
+
this.updateListeners(false, CLICK_EVENTS, document);
|
|
310
376
|
document.removeEventListener('keyup', this.documentKeyupHandler); // document.removeEventListener('scroll', this.handleScroll);
|
|
311
377
|
|
|
312
378
|
window.removeEventListener('resize', this.handleResize);
|
|
313
|
-
document.removeEventListener('click', this.documentClickHandler1, true);
|
|
314
379
|
document.removeEventListener('mousedown', this.handleDocumentMouseDown, true);
|
|
315
380
|
document.removeEventListener('focus', this.handleDocumentFocus, true);
|
|
316
381
|
}
|
|
@@ -345,10 +410,13 @@ var Popup = function Popup(Component) {
|
|
|
345
410
|
|
|
346
411
|
if (!isOutsideScrollBlocked && !isAbsolutePositioningNeeded) {
|
|
347
412
|
(0, _intersectionObserver.addIntersectionObserver)(this.placeHolderElement, this.updateVisibilityOnIntersection);
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
413
|
+
var shouldAddScrollToUpdatePositionListeners = _Registry["default"].getOpenedScrollableFixedPopups().length === 1 && _Registry["default"].scrollableListenerPopupRef === undefined;
|
|
414
|
+
|
|
415
|
+
if (shouldAddScrollToUpdatePositionListeners) {
|
|
416
|
+
_Registry["default"].scrollableListenerPopupRef = this;
|
|
417
|
+
|
|
418
|
+
_Registry["default"].scrollableListenerPopupRef.addScrollToUpdateListeners();
|
|
419
|
+
}
|
|
352
420
|
}
|
|
353
421
|
}
|
|
354
422
|
}, {
|
|
@@ -359,10 +427,13 @@ var Popup = function Popup(Component) {
|
|
|
359
427
|
|
|
360
428
|
if (!isOutsideScrollBlocked && !isAbsolutePositioningNeeded) {
|
|
361
429
|
(0, _intersectionObserver.removeIntersectionObserver)(this.placeHolderElement, this.updateVisibilityOnIntersection);
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
430
|
+
var shouldRemoveScrollToUpdatePositionListeners = _Registry["default"].getOpenedScrollableFixedPopups().length === 0 && _Registry["default"].scrollableListenerPopupRef !== undefined;
|
|
431
|
+
|
|
432
|
+
if (shouldRemoveScrollToUpdatePositionListeners) {
|
|
433
|
+
_Registry["default"].scrollableListenerPopupRef.removeScrollToUpdateListeners();
|
|
434
|
+
|
|
435
|
+
_Registry["default"].scrollableListenerPopupRef = undefined;
|
|
436
|
+
}
|
|
366
437
|
}
|
|
367
438
|
}
|
|
368
439
|
}, {
|
|
@@ -421,50 +492,81 @@ var Popup = function Popup(Component) {
|
|
|
421
492
|
}, {
|
|
422
493
|
key: "updatePositionOnScroll",
|
|
423
494
|
value: function updatePositionOnScroll(e) {
|
|
424
|
-
var
|
|
425
|
-
defaultPosition = this.defaultPosition,
|
|
426
|
-
isTargetElementVisible = this.isTargetElementVisible;
|
|
495
|
+
var scrollablePopups = _Registry["default"].getOpenedScrollableFixedPopups(); // Check if the event target is outside all dropElements
|
|
427
496
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
497
|
+
|
|
498
|
+
scrollablePopups.forEach(function (_ref5) {
|
|
499
|
+
var placeHolderElement = _ref5.placeHolderElement,
|
|
500
|
+
defaultPosition = _ref5.defaultPosition,
|
|
501
|
+
isTargetElementVisible = _ref5.isTargetElementVisible,
|
|
502
|
+
handlePopupPosition = _ref5.handlePopupPosition;
|
|
503
|
+
|
|
504
|
+
if (e.target.contains(placeHolderElement) && isTargetElementVisible) {
|
|
505
|
+
handlePopupPosition(defaultPosition, true);
|
|
506
|
+
}
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
}, {
|
|
510
|
+
key: "updateListeners",
|
|
511
|
+
value: function updateListeners() {
|
|
512
|
+
var _this4 = this;
|
|
513
|
+
|
|
514
|
+
var add = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
515
|
+
var eventList = arguments.length > 1 ? arguments[1] : undefined;
|
|
516
|
+
var element = arguments.length > 2 ? arguments[2] : undefined;
|
|
517
|
+
var method = add ? 'addEventListener' : 'removeEventListener';
|
|
518
|
+
eventList.forEach(function (_ref6) {
|
|
519
|
+
var name = _ref6.name,
|
|
520
|
+
handlerName = _ref6.handlerName,
|
|
521
|
+
options = _ref6.options;
|
|
522
|
+
var handler = _this4[handlerName];
|
|
523
|
+
|
|
524
|
+
if (handler) {
|
|
525
|
+
element[method](name, handler, options);
|
|
526
|
+
}
|
|
527
|
+
});
|
|
431
528
|
}
|
|
432
529
|
}, {
|
|
433
530
|
key: "addScrollBlockListeners",
|
|
434
531
|
value: function addScrollBlockListeners() {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
});
|
|
447
|
-
document.addEventListener('keydown', this.preventKeyboardScroll, {
|
|
448
|
-
capture: true,
|
|
449
|
-
passive: false
|
|
450
|
-
});
|
|
532
|
+
// Only add scroll block listeners if at least one open popup needs outside scroll blocked
|
|
533
|
+
var shouldAddScrollBlockListeners = _Registry["default"].getOpenedScrollBlockedFixedPopups().length === 1 && _Registry["default"].scrollBlockedListenerPopupRef === undefined;
|
|
534
|
+
|
|
535
|
+
if (shouldAddScrollBlockListeners) {
|
|
536
|
+
_Registry["default"].scrollBlockedListenerPopupRef = this; // Main document
|
|
537
|
+
|
|
538
|
+
_Registry["default"].scrollBlockedListenerPopupRef.updateListeners(true, SCROLL_BLOCK_EVENTS, document); // Attach event listeners to all iframes within rootElement
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
_Registry["default"].scrollBlockedListenerPopupRef.handleIframeEventListeners(true, IFRAME_SCROLL_BLOCK_EVENTS);
|
|
542
|
+
}
|
|
451
543
|
}
|
|
452
544
|
}, {
|
|
453
545
|
key: "removeScrollBlockListeners",
|
|
454
546
|
value: function removeScrollBlockListeners() {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
547
|
+
// Only remove scroll block listeners if at least one open popup needs outside scroll blocked
|
|
548
|
+
var shouldRemoveScrollBlockListeners = _Registry["default"].getOpenedScrollBlockedFixedPopups().length === 0 && _Registry["default"].scrollBlockedListenerPopupRef !== undefined;
|
|
549
|
+
|
|
550
|
+
if (shouldRemoveScrollBlockListeners) {
|
|
551
|
+
_Registry["default"].scrollBlockedListenerPopupRef.updateListeners(false, SCROLL_BLOCK_EVENTS, document);
|
|
552
|
+
|
|
553
|
+
_Registry["default"].scrollBlockedListenerPopupRef.handleIframeEventListeners(false, IFRAME_SCROLL_BLOCK_EVENTS);
|
|
554
|
+
|
|
555
|
+
_Registry["default"].scrollBlockedListenerPopupRef = undefined;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
}, {
|
|
559
|
+
key: "addScrollToUpdateListeners",
|
|
560
|
+
value: function addScrollToUpdateListeners() {
|
|
561
|
+
document.addEventListener('scroll', this.updatePositionOnScroll, {
|
|
464
562
|
capture: true,
|
|
465
563
|
passive: false
|
|
466
564
|
});
|
|
467
|
-
|
|
565
|
+
}
|
|
566
|
+
}, {
|
|
567
|
+
key: "removeScrollToUpdateListeners",
|
|
568
|
+
value: function removeScrollToUpdateListeners() {
|
|
569
|
+
document.removeEventListener('scroll', this.updatePositionOnScroll, {
|
|
468
570
|
capture: true,
|
|
469
571
|
passive: false
|
|
470
572
|
});
|
|
@@ -472,35 +574,48 @@ var Popup = function Popup(Component) {
|
|
|
472
574
|
}, {
|
|
473
575
|
key: "handleBlockScroll",
|
|
474
576
|
value: function handleBlockScroll(event) {
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
577
|
+
var scrollBlockedPopups = _Registry["default"].getOpenedScrollBlockedFixedPopups(); // Check if the event target is outside all dropElements
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
var isOutsideAllDropElements = scrollBlockedPopups.every(function (_ref7) {
|
|
581
|
+
var dropElement = _ref7.dropElement;
|
|
582
|
+
return dropElement && dropElement !== event.target && !dropElement.contains(event.target);
|
|
583
|
+
});
|
|
584
|
+
|
|
585
|
+
if (isOutsideAllDropElements) {
|
|
484
586
|
event.preventDefault();
|
|
485
587
|
}
|
|
486
588
|
}
|
|
487
589
|
}, {
|
|
488
590
|
key: "handlePositionChange",
|
|
489
591
|
value: function handlePositionChange(event) {
|
|
490
|
-
var
|
|
491
|
-
var containerElement = this.dropElement;
|
|
592
|
+
var scrollBlockedPopups = _Registry["default"].getOpenedScrollBlockedFixedPopups();
|
|
492
593
|
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
594
|
+
scrollBlockedPopups.forEach(function (_ref8) {
|
|
595
|
+
var placeHolderElement = _ref8.placeHolderElement,
|
|
596
|
+
dropElement = _ref8.dropElement,
|
|
597
|
+
handlePopupPosition = _ref8.handlePopupPosition,
|
|
598
|
+
state = _ref8.state;
|
|
599
|
+
|
|
600
|
+
if (dropElement && dropElement !== event.target && !dropElement.contains(event.target) && placeHolderElement && placeHolderElement !== event.target && !placeHolderElement.contains(event.target) && event.target.contains(placeHolderElement)) {
|
|
601
|
+
handlePopupPosition(state.position, true);
|
|
602
|
+
}
|
|
603
|
+
});
|
|
496
604
|
}
|
|
497
605
|
}, {
|
|
498
606
|
key: "preventKeyboardScroll",
|
|
499
607
|
value: function preventKeyboardScroll(event) {
|
|
500
|
-
var containerElement = this.dropElement;
|
|
501
608
|
var keys = [32, 37, 38, 39, 40]; // Space, Arrow keys
|
|
502
609
|
|
|
503
|
-
|
|
610
|
+
var scrollBlockedPopups = _Registry["default"].getOpenedScrollBlockedFixedPopups(); // Check if the event target is outside all dropElements
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
var isOutsideAllDropElements = scrollBlockedPopups.every(function (_ref9) {
|
|
614
|
+
var dropElement = _ref9.dropElement;
|
|
615
|
+
return dropElement && dropElement !== event.target && !dropElement.contains(event.target) && keys.includes(event.keyCode);
|
|
616
|
+
});
|
|
617
|
+
|
|
618
|
+
if (isOutsideAllDropElements) {
|
|
504
619
|
event.preventDefault();
|
|
505
620
|
}
|
|
506
621
|
}
|
|
@@ -577,16 +692,16 @@ var Popup = function Popup(Component) {
|
|
|
577
692
|
}, {
|
|
578
693
|
key: "togglePopup",
|
|
579
694
|
value: function togglePopup(e, defaultPosition) {
|
|
580
|
-
var
|
|
695
|
+
var _this5 = this;
|
|
581
696
|
|
|
582
697
|
var group = this.getGroup();
|
|
583
698
|
this.removeClose(e);
|
|
584
699
|
var isPopupOpen = this.state.isPopupOpen;
|
|
585
|
-
var groupPopups = popups[group] || [];
|
|
586
|
-
lastOpenedGroup = !isPopupOpen && lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(lastOpenedGroup)) : lastOpenedGroup;
|
|
587
|
-
isPopupOpen && lastOpenedGroup.splice(0, 1);
|
|
700
|
+
var groupPopups = _Registry["default"].popups[group] || [];
|
|
701
|
+
_Registry["default"].lastOpenedGroup = !isPopupOpen && _Registry["default"].lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(_Registry["default"].lastOpenedGroup)) : _Registry["default"].lastOpenedGroup;
|
|
702
|
+
isPopupOpen && _Registry["default"].lastOpenedGroup.splice(0, 1);
|
|
588
703
|
groupPopups.forEach(function (popup) {
|
|
589
|
-
if (popup !==
|
|
704
|
+
if (popup !== _this5 && popup.state.isPopupOpen) {
|
|
590
705
|
popup.setState({
|
|
591
706
|
isPopupOpen: false,
|
|
592
707
|
isPopupReady: false
|
|
@@ -608,17 +723,18 @@ var Popup = function Popup(Component) {
|
|
|
608
723
|
value: function openPopupOnly(e, defaultPosition) {
|
|
609
724
|
var group = this.getGroup();
|
|
610
725
|
this.removeClose(e);
|
|
611
|
-
lastOpenedGroup = lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(lastOpenedGroup)) : lastOpenedGroup;
|
|
726
|
+
_Registry["default"].lastOpenedGroup = _Registry["default"].lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(_Registry["default"].lastOpenedGroup)) : _Registry["default"].lastOpenedGroup;
|
|
612
727
|
this.handlePopupPosition(defaultPosition);
|
|
613
728
|
}
|
|
614
729
|
}, {
|
|
615
730
|
key: "closePopupOnly",
|
|
616
731
|
value: function closePopupOnly(e) {
|
|
617
732
|
this.removeClose(e);
|
|
618
|
-
lastOpenedGroup.splice(0, 1);
|
|
619
733
|
var isPopupOpen = this.state.isPopupOpen;
|
|
620
734
|
|
|
621
735
|
if (isPopupOpen) {
|
|
736
|
+
_Registry["default"].lastOpenedGroup.splice(0, 1);
|
|
737
|
+
|
|
622
738
|
this.setState({
|
|
623
739
|
isPopupOpen: false,
|
|
624
740
|
isPopupReady: false
|
|
@@ -628,8 +744,10 @@ var Popup = function Popup(Component) {
|
|
|
628
744
|
}, {
|
|
629
745
|
key: "handleCloseLastOpenedGroup",
|
|
630
746
|
value: function handleCloseLastOpenedGroup() {
|
|
631
|
-
var groupPopups = lastOpenedGroup.length ? popups[lastOpenedGroup[0]] || [] : [];
|
|
632
|
-
|
|
747
|
+
var groupPopups = _Registry["default"].lastOpenedGroup.length ? _Registry["default"].popups[_Registry["default"].lastOpenedGroup[0]] || [] : [];
|
|
748
|
+
|
|
749
|
+
_Registry["default"].lastOpenedGroup.splice(0, 1);
|
|
750
|
+
|
|
633
751
|
groupPopups.forEach(function (popup) {
|
|
634
752
|
popup.state.isPopupOpen && popup.setState({
|
|
635
753
|
isPopupOpen: false,
|
|
@@ -660,9 +778,9 @@ var Popup = function Popup(Component) {
|
|
|
660
778
|
value: function handleGetNeedPrevent(e) {
|
|
661
779
|
var needPrevent = false;
|
|
662
780
|
|
|
663
|
-
if (lastOpenedGroup.length > 1) {
|
|
781
|
+
if (_Registry["default"].lastOpenedGroup.length > 1) {
|
|
664
782
|
var target = e.target;
|
|
665
|
-
var groupPopups = lastOpenedGroup.length ? popups[lastOpenedGroup[0]] : [];
|
|
783
|
+
var groupPopups = _Registry["default"].lastOpenedGroup.length ? _Registry["default"].popups[_Registry["default"].lastOpenedGroup[0]] : [];
|
|
666
784
|
var openedPopup = null; // eslint-disable-next-line guard-for-in
|
|
667
785
|
|
|
668
786
|
for (var i in groupPopups) {
|
|
@@ -707,8 +825,8 @@ var Popup = function Popup(Component) {
|
|
|
707
825
|
key: "documentClickHandler",
|
|
708
826
|
value: function documentClickHandler() {
|
|
709
827
|
try {
|
|
710
|
-
Object.keys(popups).forEach(function (groupName) {
|
|
711
|
-
var groupPopups = popups[groupName] || [];
|
|
828
|
+
Object.keys(_Registry["default"].popups).forEach(function (groupName) {
|
|
829
|
+
var groupPopups = _Registry["default"].popups[groupName] || [];
|
|
712
830
|
groupPopups.forEach(function (popup) {
|
|
713
831
|
popup.state.isPopupOpen && (!popup.props.checkBeforeClose || popup.props.checkBeforeClose && popup.props.checkBeforeClose()) && !(0, _Common.isTextSelected)() && popup.setState({
|
|
714
832
|
isPopupOpen: false,
|
|
@@ -716,7 +834,7 @@ var Popup = function Popup(Component) {
|
|
|
716
834
|
});
|
|
717
835
|
});
|
|
718
836
|
});
|
|
719
|
-
lastOpenedGroup = [];
|
|
837
|
+
_Registry["default"].lastOpenedGroup = [];
|
|
720
838
|
} catch (e) {// eslint-disable-next-line no-console
|
|
721
839
|
//console.error('popup component not unmounted properly', e);
|
|
722
840
|
}
|
|
@@ -756,14 +874,14 @@ var Popup = function Popup(Component) {
|
|
|
756
874
|
}, {
|
|
757
875
|
key: "handlePopupPosition",
|
|
758
876
|
value: function handlePopupPosition() {
|
|
759
|
-
var
|
|
877
|
+
var _this6 = this;
|
|
760
878
|
|
|
761
879
|
var defaultPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'bottomCenter';
|
|
762
880
|
var isUpdatePosition = arguments.length > 1 ? arguments[1] : undefined;
|
|
763
881
|
|
|
764
882
|
// isUpdatePosition --->>> Window resize and dropBox resize and to update the position
|
|
765
|
-
var
|
|
766
|
-
direction =
|
|
883
|
+
var _ref10 = this.context || {},
|
|
884
|
+
direction = _ref10.direction;
|
|
767
885
|
|
|
768
886
|
var placeHolderElement = this.placeHolderElement,
|
|
769
887
|
dropElement = this.dropElement;
|
|
@@ -789,11 +907,11 @@ var Popup = function Popup(Component) {
|
|
|
789
907
|
|
|
790
908
|
var setPosition = function setPosition() {
|
|
791
909
|
requestAnimationFrame(function () {
|
|
792
|
-
var placeHolderElement =
|
|
793
|
-
dropElement =
|
|
794
|
-
var
|
|
795
|
-
position =
|
|
796
|
-
isPopupReady =
|
|
910
|
+
var placeHolderElement = _this6.placeHolderElement,
|
|
911
|
+
dropElement = _this6.dropElement;
|
|
912
|
+
var _this6$state = _this6.state,
|
|
913
|
+
position = _this6$state.position,
|
|
914
|
+
isPopupReady = _this6$state.isPopupReady;
|
|
797
915
|
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
|
|
798
916
|
|
|
799
917
|
var betterPosition = _viewPort["default"].betterView(dropElement, placeHolderElement, defaultPosition, scrollContainer, {
|
|
@@ -802,26 +920,26 @@ var Popup = function Popup(Component) {
|
|
|
802
920
|
customOrder: customOrder
|
|
803
921
|
});
|
|
804
922
|
|
|
805
|
-
var
|
|
806
|
-
view =
|
|
807
|
-
views =
|
|
808
|
-
viewsOffset =
|
|
809
|
-
targetOffset =
|
|
810
|
-
popupOffset =
|
|
923
|
+
var _ref11 = betterPosition || _Common.DUMMY_OBJECT,
|
|
924
|
+
view = _ref11.view,
|
|
925
|
+
views = _ref11.views,
|
|
926
|
+
viewsOffset = _ref11.viewsOffset,
|
|
927
|
+
targetOffset = _ref11.targetOffset,
|
|
928
|
+
popupOffset = _ref11.popupOffset;
|
|
811
929
|
|
|
812
930
|
if (!isAbsolute) {
|
|
813
931
|
if (!isPopupReady) {
|
|
814
|
-
|
|
932
|
+
_this6.updatePopupState(view, views, viewsOffset, targetOffset, popupOffset, isAbsolute);
|
|
815
933
|
}
|
|
816
934
|
|
|
817
935
|
if (!dropElement) {
|
|
818
936
|
return;
|
|
819
937
|
}
|
|
820
938
|
|
|
821
|
-
|
|
939
|
+
_this6.setContainerDynamicPositioning(betterPosition, needArrow);
|
|
822
940
|
} else {
|
|
823
941
|
if (position !== view || !isPopupReady) {
|
|
824
|
-
|
|
942
|
+
_this6.updatePopupState(view, views, viewsOffset, targetOffset, popupOffset, isAbsolute);
|
|
825
943
|
}
|
|
826
944
|
}
|
|
827
945
|
});
|
|
@@ -840,10 +958,10 @@ var Popup = function Popup(Component) {
|
|
|
840
958
|
}, {
|
|
841
959
|
key: "handleOpenPopupPositionChange",
|
|
842
960
|
value: function handleOpenPopupPositionChange() {
|
|
843
|
-
var
|
|
961
|
+
var _this7 = this;
|
|
844
962
|
|
|
845
|
-
Object.keys(popups).forEach(function (groupName) {
|
|
846
|
-
var groupPopups = popups[groupName] || [];
|
|
963
|
+
Object.keys(_Registry["default"].popups).forEach(function (groupName) {
|
|
964
|
+
var groupPopups = _Registry["default"].popups[groupName] || [];
|
|
847
965
|
groupPopups.forEach(function (popup) {
|
|
848
966
|
if (popup.state.isPopupOpen) {
|
|
849
967
|
var placeHolderElement = popup.placeHolderElement,
|
|
@@ -857,11 +975,11 @@ var Popup = function Popup(Component) {
|
|
|
857
975
|
if (placeHolderElement && dropElement) {
|
|
858
976
|
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
|
|
859
977
|
requestAnimationFrame(function () {
|
|
860
|
-
var needArrow =
|
|
978
|
+
var needArrow = _this7.getNeedArrow(popup);
|
|
861
979
|
|
|
862
|
-
var isAbsolute =
|
|
980
|
+
var isAbsolute = _this7.getIsAbsolutePopup(popup);
|
|
863
981
|
|
|
864
|
-
var customOrder =
|
|
982
|
+
var customOrder = _this7.getCustomPositionOrder(popup);
|
|
865
983
|
|
|
866
984
|
var isMobile = (0, _isMobilePopover["default"])(true);
|
|
867
985
|
|
|
@@ -871,33 +989,33 @@ var Popup = function Popup(Component) {
|
|
|
871
989
|
customOrder: customOrder
|
|
872
990
|
});
|
|
873
991
|
|
|
874
|
-
var
|
|
875
|
-
view =
|
|
876
|
-
views =
|
|
877
|
-
|
|
878
|
-
viewsOffset =
|
|
879
|
-
targetOffset =
|
|
880
|
-
popupOffset =
|
|
881
|
-
|
|
882
|
-
var
|
|
883
|
-
|
|
884
|
-
oldLeft =
|
|
885
|
-
|
|
886
|
-
oldTop =
|
|
887
|
-
|
|
888
|
-
oldBottom =
|
|
889
|
-
|
|
890
|
-
oldRight =
|
|
891
|
-
|
|
892
|
-
var
|
|
893
|
-
|
|
894
|
-
left =
|
|
895
|
-
|
|
896
|
-
top =
|
|
897
|
-
|
|
898
|
-
bottom =
|
|
899
|
-
|
|
900
|
-
right =
|
|
992
|
+
var _ref12 = betterPosition || {},
|
|
993
|
+
view = _ref12.view,
|
|
994
|
+
views = _ref12.views,
|
|
995
|
+
_ref12$viewsOffset = _ref12.viewsOffset,
|
|
996
|
+
viewsOffset = _ref12$viewsOffset === void 0 ? {} : _ref12$viewsOffset,
|
|
997
|
+
targetOffset = _ref12.targetOffset,
|
|
998
|
+
popupOffset = _ref12.popupOffset;
|
|
999
|
+
|
|
1000
|
+
var _ref13 = positionsOffset[position] || {},
|
|
1001
|
+
_ref13$left = _ref13.left,
|
|
1002
|
+
oldLeft = _ref13$left === void 0 ? '' : _ref13$left,
|
|
1003
|
+
_ref13$top = _ref13.top,
|
|
1004
|
+
oldTop = _ref13$top === void 0 ? '' : _ref13$top,
|
|
1005
|
+
_ref13$bottom = _ref13.bottom,
|
|
1006
|
+
oldBottom = _ref13$bottom === void 0 ? '' : _ref13$bottom,
|
|
1007
|
+
_ref13$right = _ref13.right,
|
|
1008
|
+
oldRight = _ref13$right === void 0 ? '' : _ref13$right;
|
|
1009
|
+
|
|
1010
|
+
var _ref14 = viewsOffset[view] || {},
|
|
1011
|
+
_ref14$left = _ref14.left,
|
|
1012
|
+
left = _ref14$left === void 0 ? '' : _ref14$left,
|
|
1013
|
+
_ref14$top = _ref14.top,
|
|
1014
|
+
top = _ref14$top === void 0 ? '' : _ref14$top,
|
|
1015
|
+
_ref14$bottom = _ref14.bottom,
|
|
1016
|
+
bottom = _ref14$bottom === void 0 ? '' : _ref14$bottom,
|
|
1017
|
+
_ref14$right = _ref14.right,
|
|
1018
|
+
right = _ref14$right === void 0 ? '' : _ref14$right;
|
|
901
1019
|
|
|
902
1020
|
var changeState = isAbsolute ? position !== view : oldLeft !== left || oldTop !== top || oldBottom !== bottom || oldRight !== right; // let isInViewPort = viewPort.isInViewPort(
|
|
903
1021
|
// placeHolderElement,
|
|
@@ -956,11 +1074,11 @@ var Popup = function Popup(Component) {
|
|
|
956
1074
|
var height = popupSize.height,
|
|
957
1075
|
width = popupSize.width;
|
|
958
1076
|
|
|
959
|
-
var
|
|
960
|
-
|
|
961
|
-
oldHeight =
|
|
962
|
-
|
|
963
|
-
oldWidth =
|
|
1077
|
+
var _ref15 = this.size || {},
|
|
1078
|
+
_ref15$height = _ref15.height,
|
|
1079
|
+
oldHeight = _ref15$height === void 0 ? 0 : _ref15$height,
|
|
1080
|
+
_ref15$width = _ref15.width,
|
|
1081
|
+
oldWidth = _ref15$width === void 0 ? 0 : _ref15$width;
|
|
964
1082
|
|
|
965
1083
|
var _this$state2 = this.state,
|
|
966
1084
|
isPopupReady = _this$state2.isPopupReady,
|