@zohodesk/components 1.2.47 → 1.2.49
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/README.md +16 -1
- package/es/DropBox/DropBoxElement/DropBoxElement.js +3 -1
- package/es/DropBox/DropBoxElement/__tests__/__snapshots__/DropBoxElement.spec.js.snap +1 -0
- package/es/DropBox/__tests__/__snapshots__/DropBox.spec.js.snap +1 -0
- package/es/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +1 -0
- package/es/Popup/Popup.js +107 -8
- package/es/Popup/intersectionObserver.js +39 -0
- package/es/Popup/props/propTypes.js +30 -0
- package/es/Responsive/ResizeObserver.js +21 -85
- package/es/Responsive/ResizeObserverWithPolyfill.js +140 -0
- package/es/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -0
- package/es/TextBox/TextBox.js +1 -1
- package/lib/DropBox/DropBoxElement/DropBoxElement.js +3 -1
- package/lib/DropBox/DropBoxElement/__tests__/__snapshots__/DropBoxElement.spec.js.snap +1 -0
- package/lib/DropBox/__tests__/__snapshots__/DropBox.spec.js.snap +1 -0
- package/lib/DropDown/__tests__/__snapshots__/DropDown.spec.js.snap +1 -0
- package/lib/Popup/Popup.js +118 -9
- package/lib/Popup/intersectionObserver.js +62 -0
- package/lib/Popup/props/propTypes.js +51 -0
- package/lib/Responsive/ResizeObserver.js +20 -88
- package/lib/Responsive/ResizeObserverWithPolyfill.js +168 -0
- package/lib/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1 -0
- package/lib/TextBox/TextBox.js +1 -1
- package/package.json +6 -6
- package/result.json +1 -1
package/lib/Popup/Popup.js
CHANGED
|
@@ -9,10 +9,10 @@ exports["default"] = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
|
|
12
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
-
|
|
14
12
|
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
|
|
15
13
|
|
|
14
|
+
var _propTypes = require("./props/propTypes");
|
|
15
|
+
|
|
16
16
|
var _Common = require("../utils/Common.js");
|
|
17
17
|
|
|
18
18
|
var _viewPort = _interopRequireDefault(require("./viewPort"));
|
|
@@ -21,6 +21,8 @@ var _PositionMapping = require("./PositionMapping.js");
|
|
|
21
21
|
|
|
22
22
|
var _ResizeObserver = _interopRequireDefault(require("@zohodesk/virtualizer/lib/commons/ResizeObserver.js"));
|
|
23
23
|
|
|
24
|
+
var _intersectionObserver = require("./intersectionObserver");
|
|
25
|
+
|
|
24
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
25
27
|
|
|
26
28
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
@@ -151,6 +153,12 @@ var Popup = function Popup(Component) {
|
|
|
151
153
|
_this.handleDocumentMouseDown = _this.handleDocumentMouseDown.bind(_assertThisInitialized(_this));
|
|
152
154
|
_this.handleDocumentFocus = _this.handleDocumentFocus.bind(_assertThisInitialized(_this));
|
|
153
155
|
_this.handleGetNeedPrevent = _this.handleGetNeedPrevent.bind(_assertThisInitialized(_this));
|
|
156
|
+
_this.handleBlockScroll = _this.handleBlockScroll.bind(_assertThisInitialized(_this));
|
|
157
|
+
_this.handlePositionChange = _this.handlePositionChange.bind(_assertThisInitialized(_this));
|
|
158
|
+
_this.preventKeyboardScroll = _this.preventKeyboardScroll.bind(_assertThisInitialized(_this));
|
|
159
|
+
_this.addScrollBlockListeners = _this.addScrollBlockListeners.bind(_assertThisInitialized(_this));
|
|
160
|
+
_this.removeScrollBlockListeners = _this.removeScrollBlockListeners.bind(_assertThisInitialized(_this));
|
|
161
|
+
_this.handleIntersectionObserver = _this.handleIntersectionObserver.bind(_assertThisInitialized(_this));
|
|
154
162
|
_this.popupObserver = new _ResizeObserver["default"](_this.handlePopupResize); //dropBoxSize
|
|
155
163
|
|
|
156
164
|
_this.size = null;
|
|
@@ -164,6 +172,7 @@ var Popup = function Popup(Component) {
|
|
|
164
172
|
scrollDebounceTime = _this$getScrollDeboun.scrollDebounceTime;
|
|
165
173
|
|
|
166
174
|
_this.handleScroll = (0, _Common.debounce)(_this.handleScroll.bind(_assertThisInitialized(_this)), scrollDebounceTime);
|
|
175
|
+
_this.handleDebouncedPositionChange = (0, _Common.debounce)(_this.handlePositionChange.bind(_assertThisInitialized(_this)), 100);
|
|
167
176
|
return _this;
|
|
168
177
|
}
|
|
169
178
|
|
|
@@ -207,7 +216,10 @@ var Popup = function Popup(Component) {
|
|
|
207
216
|
oldStateOpen = _ref2$isPopupReady === void 0 ? false : _ref2$isPopupReady;
|
|
208
217
|
|
|
209
218
|
var dropElement = this.dropElement;
|
|
210
|
-
var
|
|
219
|
+
var _this$props = this.props,
|
|
220
|
+
propResizeHandling = _this$props.needResizeHandling,
|
|
221
|
+
isAbsolutePositioningNeeded = _this$props.isAbsolutePositioningNeeded,
|
|
222
|
+
isOutsideScrollBlocked = _this$props.isOutsideScrollBlocked;
|
|
211
223
|
|
|
212
224
|
if (oldStateOpen !== isPopupReady) {
|
|
213
225
|
if (isPopupReady && dropElement && (propResizeHandling !== undefined ? propResizeHandling : needResizeHandling)) {
|
|
@@ -216,6 +228,16 @@ var Popup = function Popup(Component) {
|
|
|
216
228
|
this.size = null;
|
|
217
229
|
this.popupObserver.disconnect();
|
|
218
230
|
}
|
|
231
|
+
|
|
232
|
+
if (isOutsideScrollBlocked && !isAbsolutePositioningNeeded) {
|
|
233
|
+
if (isPopupReady) {
|
|
234
|
+
(0, _intersectionObserver.addIntersectionObserver)(this.placeHolderElement, this.handleIntersectionObserver);
|
|
235
|
+
this.addScrollBlockListeners();
|
|
236
|
+
} else {
|
|
237
|
+
(0, _intersectionObserver.removeIntersectionObserver)(this.placeHolderElement, this.handleIntersectionObserver);
|
|
238
|
+
this.removeScrollBlockListeners();
|
|
239
|
+
}
|
|
240
|
+
}
|
|
219
241
|
}
|
|
220
242
|
}
|
|
221
243
|
}, {
|
|
@@ -236,6 +258,8 @@ var Popup = function Popup(Component) {
|
|
|
236
258
|
|
|
237
259
|
return res;
|
|
238
260
|
}, popups);
|
|
261
|
+
(0, _intersectionObserver.removeIntersectionObserver)(this.placeHolderElement, this.handleIntersectionObserver);
|
|
262
|
+
this.removeScrollBlockListeners();
|
|
239
263
|
var noPopups = true;
|
|
240
264
|
|
|
241
265
|
for (var i in popups) {
|
|
@@ -259,6 +283,88 @@ var Popup = function Popup(Component) {
|
|
|
259
283
|
document.removeEventListener('focus', this.handleDocumentFocus, true);
|
|
260
284
|
}
|
|
261
285
|
}
|
|
286
|
+
}, {
|
|
287
|
+
key: "addScrollBlockListeners",
|
|
288
|
+
value: function addScrollBlockListeners() {
|
|
289
|
+
document.addEventListener('wheel', this.handleBlockScroll, {
|
|
290
|
+
capture: true,
|
|
291
|
+
passive: false
|
|
292
|
+
});
|
|
293
|
+
document.addEventListener('touchmove', this.handleBlockScroll, {
|
|
294
|
+
capture: true,
|
|
295
|
+
passive: false
|
|
296
|
+
});
|
|
297
|
+
document.addEventListener('scroll', this.handleDebouncedPositionChange, {
|
|
298
|
+
capture: true,
|
|
299
|
+
passive: false
|
|
300
|
+
});
|
|
301
|
+
document.addEventListener('keydown', this.preventKeyboardScroll, {
|
|
302
|
+
capture: true,
|
|
303
|
+
passive: false
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}, {
|
|
307
|
+
key: "removeScrollBlockListeners",
|
|
308
|
+
value: function removeScrollBlockListeners() {
|
|
309
|
+
document.removeEventListener('wheel', this.handleBlockScroll, {
|
|
310
|
+
capture: true,
|
|
311
|
+
passive: false
|
|
312
|
+
});
|
|
313
|
+
document.removeEventListener('touchmove', this.handleBlockScroll, {
|
|
314
|
+
capture: true,
|
|
315
|
+
passive: false
|
|
316
|
+
});
|
|
317
|
+
document.removeEventListener('scroll', this.handleDebouncedPositionChange, {
|
|
318
|
+
capture: true,
|
|
319
|
+
passive: false
|
|
320
|
+
});
|
|
321
|
+
document.removeEventListener('keydown', this.preventKeyboardScroll, {
|
|
322
|
+
capture: true,
|
|
323
|
+
passive: false
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}, {
|
|
327
|
+
key: "handleBlockScroll",
|
|
328
|
+
value: function handleBlockScroll(event) {
|
|
329
|
+
// const targetElement = this.placeHolderElement;
|
|
330
|
+
var containerElement = this.dropElement;
|
|
331
|
+
|
|
332
|
+
if (containerElement && containerElement !== event.target && !containerElement.contains(event.target)) {
|
|
333
|
+
// --- Scroll exclude Target & Container elements --- For reference. Will adopt in future
|
|
334
|
+
// if(
|
|
335
|
+
// (containerElement && (containerElement !== event.target && !containerElement.contains(event.target)))
|
|
336
|
+
// && (targetElement && (targetElement !== event.target && !targetElement.contains(event.target)))
|
|
337
|
+
// ) {
|
|
338
|
+
event.preventDefault();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}, {
|
|
342
|
+
key: "handlePositionChange",
|
|
343
|
+
value: function handlePositionChange(event) {
|
|
344
|
+
var targetElement = this.placeHolderElement;
|
|
345
|
+
var containerElement = this.dropElement;
|
|
346
|
+
|
|
347
|
+
if (containerElement && containerElement !== event.target && !containerElement.contains(event.target) && targetElement && targetElement !== event.target && !targetElement.contains(event.target) && event.target.contains(targetElement)) {
|
|
348
|
+
this.handlePopupPosition(this.state.position); // this.closePopupOnly(event);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}, {
|
|
352
|
+
key: "preventKeyboardScroll",
|
|
353
|
+
value: function preventKeyboardScroll(event) {
|
|
354
|
+
var containerElement = this.dropElement;
|
|
355
|
+
var keys = [32, 37, 38, 39, 40]; // Space, Arrow keys
|
|
356
|
+
|
|
357
|
+
if (containerElement && containerElement !== event.target && !containerElement.contains(event.target) && keys.includes(event.keyCode)) {
|
|
358
|
+
event.preventDefault();
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}, {
|
|
362
|
+
key: "handleIntersectionObserver",
|
|
363
|
+
value: function handleIntersectionObserver(entry) {
|
|
364
|
+
if (entry.intersectionRatio === 0) {
|
|
365
|
+
this.closePopupOnly();
|
|
366
|
+
}
|
|
367
|
+
}
|
|
262
368
|
}, {
|
|
263
369
|
key: "getGroup",
|
|
264
370
|
value: function getGroup() {
|
|
@@ -587,15 +693,19 @@ var Popup = function Popup(Component) {
|
|
|
587
693
|
_ref6$left = _ref6.left,
|
|
588
694
|
oldLeft = _ref6$left === void 0 ? '' : _ref6$left,
|
|
589
695
|
_ref6$top = _ref6.top,
|
|
590
|
-
oldTop = _ref6$top === void 0 ? '' : _ref6$top
|
|
696
|
+
oldTop = _ref6$top === void 0 ? '' : _ref6$top,
|
|
697
|
+
_ref6$bottom = _ref6.bottom,
|
|
698
|
+
oldBottom = _ref6$bottom === void 0 ? '' : _ref6$bottom;
|
|
591
699
|
|
|
592
700
|
var _ref7 = viewsOffset[view] || {},
|
|
593
701
|
_ref7$left = _ref7.left,
|
|
594
702
|
left = _ref7$left === void 0 ? '' : _ref7$left,
|
|
595
703
|
_ref7$top = _ref7.top,
|
|
596
|
-
top = _ref7$top === void 0 ? '' : _ref7$top
|
|
704
|
+
top = _ref7$top === void 0 ? '' : _ref7$top,
|
|
705
|
+
_ref7$bottom = _ref7.bottom,
|
|
706
|
+
bottom = _ref7$bottom === void 0 ? '' : _ref7$bottom;
|
|
597
707
|
|
|
598
|
-
var changeState = isAbsolute ? position !== view : oldLeft !== left || oldTop !== top; // let isInViewPort = viewPort.isInViewPort(
|
|
708
|
+
var changeState = isAbsolute ? position !== view : oldLeft !== left || oldTop !== top || oldBottom !== bottom; // let isInViewPort = viewPort.isInViewPort(
|
|
599
709
|
// placeHolderElement,
|
|
600
710
|
// scrollContainer
|
|
601
711
|
// );
|
|
@@ -705,9 +815,8 @@ var Popup = function Popup(Component) {
|
|
|
705
815
|
}(_react["default"].Component);
|
|
706
816
|
|
|
707
817
|
Popup.displayName = Component.displayName || Component.name || Popup.name;
|
|
708
|
-
Popup.contextTypes =
|
|
709
|
-
|
|
710
|
-
};
|
|
818
|
+
Popup.contextTypes = _propTypes.ContextTypes;
|
|
819
|
+
Popup.propTypes = _propTypes.PopupPropTypes;
|
|
711
820
|
return (0, _hoistNonReactStatics["default"])(Popup, Component);
|
|
712
821
|
};
|
|
713
822
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addIntersectionObserver = addIntersectionObserver;
|
|
7
|
+
exports.removeIntersectionObserver = removeIntersectionObserver;
|
|
8
|
+
|
|
9
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
10
|
+
|
|
11
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
12
|
+
|
|
13
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
+
|
|
15
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
|
+
|
|
17
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
18
|
+
|
|
19
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
20
|
+
|
|
21
|
+
var observerCallbacks = null;
|
|
22
|
+
var intersectionObserver = null;
|
|
23
|
+
|
|
24
|
+
function handleObserverCallbacks(entries) {
|
|
25
|
+
entries.map(function (entry, i) {
|
|
26
|
+
var oldCallbacks = observerCallbacks.get(entry.target);
|
|
27
|
+
oldCallbacks.length && oldCallbacks.forEach(function (callback) {
|
|
28
|
+
callback && callback(entry);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function addIntersectionObserver(element, callback, options) {
|
|
34
|
+
if (intersectionObserver === null && observerCallbacks === null) {
|
|
35
|
+
intersectionObserver = new IntersectionObserver(function (entries) {
|
|
36
|
+
handleObserverCallbacks(entries);
|
|
37
|
+
}, options);
|
|
38
|
+
observerCallbacks = new Map();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
intersectionObserver.observe(element);
|
|
42
|
+
var oldCallbacks = observerCallbacks.get(element) || [];
|
|
43
|
+
observerCallbacks.set(element, [].concat(_toConsumableArray(oldCallbacks), [callback]));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function removeIntersectionObserver(element, callback) {
|
|
47
|
+
var oldCallbacks = observerCallbacks ? observerCallbacks.get(element) : [];
|
|
48
|
+
oldCallbacks = oldCallbacks.filter(function (handler) {
|
|
49
|
+
return handler !== callback;
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
if (intersectionObserver && oldCallbacks.length === 0) {
|
|
53
|
+
observerCallbacks["delete"](element);
|
|
54
|
+
intersectionObserver.unobserve(element);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (intersectionObserver && observerCallbacks && observerCallbacks.size === 0) {
|
|
58
|
+
intersectionObserver.disconnect();
|
|
59
|
+
intersectionObserver = null;
|
|
60
|
+
observerCallbacks = null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.PopupWrappersPropTypes = exports.PopupPropTypes = exports.ContextTypes = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
11
|
+
|
|
12
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
|
+
|
|
16
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
|
|
18
|
+
var ContextTypes = {
|
|
19
|
+
direction: _propTypes["default"].string
|
|
20
|
+
};
|
|
21
|
+
exports.ContextTypes = ContextTypes;
|
|
22
|
+
var PopupPropTypes = {
|
|
23
|
+
popupGroup: _propTypes["default"].string,
|
|
24
|
+
isArrow: _propTypes["default"].bool,
|
|
25
|
+
isPopupOpen: _propTypes["default"].bool,
|
|
26
|
+
closeOnScroll: _propTypes["default"].bool,
|
|
27
|
+
isOutsideScrollBlocked: _propTypes["default"].bool,
|
|
28
|
+
needResizeHandling: _propTypes["default"].bool,
|
|
29
|
+
isAbsolutePositioningNeeded: _propTypes["default"].bool,
|
|
30
|
+
scrollDebounceTime: _propTypes["default"].number,
|
|
31
|
+
customOrder: _propTypes["default"].arrayOf(_propTypes["default"].string),
|
|
32
|
+
checkBeforeClose: _propTypes["default"].func
|
|
33
|
+
};
|
|
34
|
+
exports.PopupPropTypes = PopupPropTypes;
|
|
35
|
+
|
|
36
|
+
var PopupWrappersPropTypes = _objectSpread(_objectSpread({
|
|
37
|
+
openPopupOnly: _propTypes["default"].func,
|
|
38
|
+
closePopupOnly: _propTypes["default"].func,
|
|
39
|
+
togglePopup: _propTypes["default"].func,
|
|
40
|
+
removeClose: _propTypes["default"].func,
|
|
41
|
+
isPopupReady: _propTypes["default"].bool,
|
|
42
|
+
position: _propTypes["default"].oneOf(['bottomRight', 'bottomLeft', 'bottomCenter', 'topRight', 'topLeft', 'topCenter', 'rightTop', 'rightBottom', 'rightCenter', 'leftTop', 'leftBottom', 'leftCenter']),
|
|
43
|
+
getTargetRef: _propTypes["default"].func,
|
|
44
|
+
getContainerRef: _propTypes["default"].func
|
|
45
|
+
}, PopupPropTypes), {}, {
|
|
46
|
+
isRestrictScroll: _propTypes["default"].bool,
|
|
47
|
+
positionsOffset: _propTypes["default"].object,
|
|
48
|
+
targetOffset: _propTypes["default"].object
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
exports.PopupWrappersPropTypes = PopupWrappersPropTypes;
|
|
@@ -11,59 +11,31 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
|
|
|
11
11
|
|
|
12
12
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
var
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
attributes: true
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
function getSize(element) {
|
|
22
|
-
var offsetHeight = element.offsetHeight,
|
|
23
|
-
offsetWidth = element.offsetWidth; // const { height, width } = element.getBoundingClientRect();
|
|
14
|
+
function getBorderBoxSizeFromEntry(entry) {
|
|
15
|
+
var borderBoxSize = entry.borderBoxSize;
|
|
16
|
+
return borderBoxSize[0];
|
|
17
|
+
}
|
|
24
18
|
|
|
19
|
+
function getSize(entry) {
|
|
20
|
+
var borderBoxSize = getBorderBoxSizeFromEntry(entry);
|
|
25
21
|
return {
|
|
26
|
-
height:
|
|
27
|
-
width:
|
|
22
|
+
height: borderBoxSize.blockSize,
|
|
23
|
+
width: borderBoxSize.inlineSize
|
|
28
24
|
};
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
function dispatch() {
|
|
32
|
-
var resizeResponsive = new Event('resizeResponsive');
|
|
33
|
-
window.dispatchEvent(resizeResponsive);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (!hasResizeObserver) {
|
|
37
|
-
var interval = null;
|
|
38
|
-
window.addEventListener('resize', function () {
|
|
39
|
-
clearTimeout(interval);
|
|
40
|
-
interval = setTimeout(dispatch, 100);
|
|
41
|
-
});
|
|
42
|
-
} // NOTE: this is not full polyfill , we just wrote what types of changes wlli
|
|
43
|
-
|
|
44
|
-
|
|
45
27
|
var ResizeObserverPolyfill = /*#__PURE__*/function () {
|
|
46
28
|
function ResizeObserverPolyfill(onResize) {
|
|
47
29
|
_classCallCheck(this, ResizeObserverPolyfill);
|
|
48
30
|
|
|
49
|
-
// method finding
|
|
50
|
-
this.transitionEndHandler = this.transitionEndHandler.bind(this);
|
|
51
|
-
this.resizeHandlerDispatch = this.resizeHandlerDispatch.bind(this);
|
|
52
31
|
this.resizeHandler = this.resizeHandler.bind(this);
|
|
53
|
-
this.replaceResizeHandler = this.replaceResizeHandler.bind(this);
|
|
54
|
-
this.debounce = this.debounce.bind(this);
|
|
55
32
|
this.onResize = onResize;
|
|
56
33
|
this.targetNode = null;
|
|
57
34
|
this.size = {
|
|
58
35
|
height: 0,
|
|
59
36
|
width: 0
|
|
60
37
|
};
|
|
61
|
-
|
|
62
|
-
if (hasResizeObserver) {
|
|
63
|
-
this.resizeObserverInstance = new window.ResizeObserver(this.resizeHandlerDispatch);
|
|
64
|
-
} else {
|
|
65
|
-
this.mutationObserverInstance = new window.MutationObserver(this.resizeHandlerDispatch);
|
|
66
|
-
}
|
|
38
|
+
this.resizeObserverInstance = new window.ResizeObserver(this.resizeHandler);
|
|
67
39
|
}
|
|
68
40
|
|
|
69
41
|
_createClass(ResizeObserverPolyfill, [{
|
|
@@ -71,14 +43,20 @@ var ResizeObserverPolyfill = /*#__PURE__*/function () {
|
|
|
71
43
|
value: function replaceResizeHandler(onResize) {
|
|
72
44
|
this.onResize = onResize;
|
|
73
45
|
}
|
|
46
|
+
}, {
|
|
47
|
+
key: "getEntry",
|
|
48
|
+
value: function getEntry(entries) {
|
|
49
|
+
return entries[0];
|
|
50
|
+
}
|
|
74
51
|
}, {
|
|
75
52
|
key: "resizeHandler",
|
|
76
|
-
value: function resizeHandler() {
|
|
77
|
-
if (!this.targetNode) {
|
|
53
|
+
value: function resizeHandler(entries) {
|
|
54
|
+
if (!this.targetNode || !entries.length) {
|
|
78
55
|
return;
|
|
79
56
|
}
|
|
80
57
|
|
|
81
|
-
var
|
|
58
|
+
var entry = this.getEntry(entries);
|
|
59
|
+
var currentSize = getSize(entry);
|
|
82
60
|
|
|
83
61
|
if (this.size && currentSize.height === this.size.height && currentSize.width === this.size.width) {
|
|
84
62
|
return;
|
|
@@ -88,55 +66,11 @@ var ResizeObserverPolyfill = /*#__PURE__*/function () {
|
|
|
88
66
|
this.onResize(this.size, this.targetNode);
|
|
89
67
|
return true;
|
|
90
68
|
}
|
|
91
|
-
}, {
|
|
92
|
-
key: "resizeHandlerDispatch",
|
|
93
|
-
value: function resizeHandlerDispatch() {
|
|
94
|
-
if (!this.resizeHandler() || hasResizeObserver) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
dispatch();
|
|
99
|
-
}
|
|
100
|
-
}, {
|
|
101
|
-
key: "debounce",
|
|
102
|
-
value: function debounce() {
|
|
103
|
-
clearTimeout(this.interval);
|
|
104
|
-
this.interval = setTimeout(this.resizeHandler, 100);
|
|
105
|
-
}
|
|
106
|
-
}, {
|
|
107
|
-
key: "transitionEndHandler",
|
|
108
|
-
value: function transitionEndHandler(event) {
|
|
109
|
-
if (event.propertyName.indexOf('color') === -1) {
|
|
110
|
-
this.resizeHandlerDispatch();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}, {
|
|
114
|
-
key: "addEventListeners",
|
|
115
|
-
value: function addEventListeners(targetNode) {
|
|
116
|
-
targetNode.addEventListener('transitionend', this.transitionEndHandler);
|
|
117
|
-
window.addEventListener('resizeResponsive', this.debounce);
|
|
118
|
-
targetNode.addEventListener('animationend', this.resizeHandlerDispatch);
|
|
119
|
-
targetNode.addEventListener('webkitAnimationEnd', this.resizeHandlerDispatch);
|
|
120
|
-
}
|
|
121
|
-
}, {
|
|
122
|
-
key: "removeEventListeners",
|
|
123
|
-
value: function removeEventListeners(targetNode) {
|
|
124
|
-
targetNode.removeEventListener('transitionend', this.transitionEndHandler);
|
|
125
|
-
window.removeEventListener('resizeResponsive', this.debounce);
|
|
126
|
-
targetNode.removeEventListener('animationend', this.resizeHandlerDispatch);
|
|
127
|
-
targetNode.removeEventListener('webkitAnimationEnd', this.resizeHandlerDispatch);
|
|
128
|
-
}
|
|
129
69
|
}, {
|
|
130
70
|
key: "observe",
|
|
131
71
|
value: function observe(targetNode) {
|
|
132
72
|
this.targetNode = targetNode;
|
|
133
|
-
|
|
134
|
-
if (hasResizeObserver) {
|
|
135
|
-
this.resizeObserverInstance.observe(targetNode);
|
|
136
|
-
} else {
|
|
137
|
-
this.addEventListeners(targetNode);
|
|
138
|
-
this.mutationObserverInstance.observe(targetNode, mutationObserverOptions);
|
|
139
|
-
}
|
|
73
|
+
this.resizeObserverInstance.observe(targetNode);
|
|
140
74
|
}
|
|
141
75
|
}, {
|
|
142
76
|
key: "replaceObservationElement",
|
|
@@ -147,13 +81,11 @@ var ResizeObserverPolyfill = /*#__PURE__*/function () {
|
|
|
147
81
|
|
|
148
82
|
this.targetNode && this.disconnect();
|
|
149
83
|
targetNode && this.observe(targetNode);
|
|
150
|
-
targetNode && this.resizeHandlerDispatch();
|
|
151
84
|
}
|
|
152
85
|
}, {
|
|
153
86
|
key: "disconnect",
|
|
154
87
|
value: function disconnect() {
|
|
155
|
-
this.
|
|
156
|
-
hasResizeObserver ? this.resizeObserverInstance.disconnect() : this.mutationObserverInstance.disconnect();
|
|
88
|
+
this.resizeObserverInstance.disconnect();
|
|
157
89
|
this.targetNode = null;
|
|
158
90
|
this.size = {
|
|
159
91
|
height: 0,
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
9
|
+
|
|
10
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
11
|
+
|
|
12
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
13
|
+
|
|
14
|
+
var hasResizeObserver = !!window.ResizeObserver;
|
|
15
|
+
var mutationObserverOptions = {
|
|
16
|
+
//NOTE: we donot consider child Count
|
|
17
|
+
// childList: true,
|
|
18
|
+
attributes: true
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
function getSize(element) {
|
|
22
|
+
var offsetHeight = element.offsetHeight,
|
|
23
|
+
offsetWidth = element.offsetWidth; // const { height, width } = element.getBoundingClientRect();
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
height: offsetHeight,
|
|
27
|
+
width: offsetWidth
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function dispatch() {
|
|
32
|
+
var resizeResponsive = new Event('resizeResponsive');
|
|
33
|
+
window.dispatchEvent(resizeResponsive);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (!hasResizeObserver) {
|
|
37
|
+
var interval = null;
|
|
38
|
+
window.addEventListener('resize', function () {
|
|
39
|
+
clearTimeout(interval);
|
|
40
|
+
interval = setTimeout(dispatch, 100);
|
|
41
|
+
});
|
|
42
|
+
} // NOTE: this is not full polyfill , we just wrote what types of changes wlli
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
var ResizeObserverPolyfill = /*#__PURE__*/function () {
|
|
46
|
+
function ResizeObserverPolyfill(onResize) {
|
|
47
|
+
_classCallCheck(this, ResizeObserverPolyfill);
|
|
48
|
+
|
|
49
|
+
// method finding
|
|
50
|
+
this.transitionEndHandler = this.transitionEndHandler.bind(this);
|
|
51
|
+
this.resizeHandlerDispatch = this.resizeHandlerDispatch.bind(this);
|
|
52
|
+
this.resizeHandler = this.resizeHandler.bind(this);
|
|
53
|
+
this.replaceResizeHandler = this.replaceResizeHandler.bind(this);
|
|
54
|
+
this.debounce = this.debounce.bind(this);
|
|
55
|
+
this.onResize = onResize;
|
|
56
|
+
this.targetNode = null;
|
|
57
|
+
this.size = {
|
|
58
|
+
height: 0,
|
|
59
|
+
width: 0
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
if (hasResizeObserver) {
|
|
63
|
+
this.resizeObserverInstance = new window.ResizeObserver(this.resizeHandlerDispatch);
|
|
64
|
+
} else {
|
|
65
|
+
this.mutationObserverInstance = new window.MutationObserver(this.resizeHandlerDispatch);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
_createClass(ResizeObserverPolyfill, [{
|
|
70
|
+
key: "replaceResizeHandler",
|
|
71
|
+
value: function replaceResizeHandler(onResize) {
|
|
72
|
+
this.onResize = onResize;
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "resizeHandler",
|
|
76
|
+
value: function resizeHandler() {
|
|
77
|
+
if (!this.targetNode) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
var currentSize = getSize(this.targetNode); // if (this.size && shallowCompare(currentSize, this.size)) {
|
|
82
|
+
|
|
83
|
+
if (this.size && currentSize.height === this.size.height && currentSize.width === this.size.width) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
this.size = currentSize;
|
|
88
|
+
this.onResize(this.size, this.targetNode);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "resizeHandlerDispatch",
|
|
93
|
+
value: function resizeHandlerDispatch() {
|
|
94
|
+
if (!this.resizeHandler() || hasResizeObserver) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
dispatch();
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "debounce",
|
|
102
|
+
value: function debounce() {
|
|
103
|
+
clearTimeout(this.interval);
|
|
104
|
+
this.interval = setTimeout(this.resizeHandler, 100);
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "transitionEndHandler",
|
|
108
|
+
value: function transitionEndHandler(event) {
|
|
109
|
+
if (event.propertyName.indexOf('color') === -1) {
|
|
110
|
+
this.resizeHandlerDispatch();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "addEventListeners",
|
|
115
|
+
value: function addEventListeners(targetNode) {
|
|
116
|
+
targetNode.addEventListener('transitionend', this.transitionEndHandler);
|
|
117
|
+
window.addEventListener('resizeResponsive', this.debounce);
|
|
118
|
+
targetNode.addEventListener('animationend', this.resizeHandlerDispatch);
|
|
119
|
+
targetNode.addEventListener('webkitAnimationEnd', this.resizeHandlerDispatch);
|
|
120
|
+
}
|
|
121
|
+
}, {
|
|
122
|
+
key: "removeEventListeners",
|
|
123
|
+
value: function removeEventListeners(targetNode) {
|
|
124
|
+
targetNode.removeEventListener('transitionend', this.transitionEndHandler);
|
|
125
|
+
window.removeEventListener('resizeResponsive', this.debounce);
|
|
126
|
+
targetNode.removeEventListener('animationend', this.resizeHandlerDispatch);
|
|
127
|
+
targetNode.removeEventListener('webkitAnimationEnd', this.resizeHandlerDispatch);
|
|
128
|
+
}
|
|
129
|
+
}, {
|
|
130
|
+
key: "observe",
|
|
131
|
+
value: function observe(targetNode) {
|
|
132
|
+
this.targetNode = targetNode;
|
|
133
|
+
|
|
134
|
+
if (hasResizeObserver) {
|
|
135
|
+
this.resizeObserverInstance.observe(targetNode);
|
|
136
|
+
} else {
|
|
137
|
+
this.addEventListeners(targetNode);
|
|
138
|
+
this.mutationObserverInstance.observe(targetNode, mutationObserverOptions);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}, {
|
|
142
|
+
key: "replaceObservationElement",
|
|
143
|
+
value: function replaceObservationElement(targetNode) {
|
|
144
|
+
if (this.targetNode === targetNode) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
this.targetNode && this.disconnect();
|
|
149
|
+
targetNode && this.observe(targetNode);
|
|
150
|
+
targetNode && this.resizeHandlerDispatch();
|
|
151
|
+
}
|
|
152
|
+
}, {
|
|
153
|
+
key: "disconnect",
|
|
154
|
+
value: function disconnect() {
|
|
155
|
+
this.targetNode && this.removeEventListeners(this.targetNode);
|
|
156
|
+
hasResizeObserver ? this.resizeObserverInstance.disconnect() : this.mutationObserverInstance.disconnect();
|
|
157
|
+
this.targetNode = null;
|
|
158
|
+
this.size = {
|
|
159
|
+
height: 0,
|
|
160
|
+
width: 0
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}]);
|
|
164
|
+
|
|
165
|
+
return ResizeObserverPolyfill;
|
|
166
|
+
}();
|
|
167
|
+
|
|
168
|
+
exports["default"] = ResizeObserverPolyfill;
|
package/lib/TextBox/TextBox.js
CHANGED
|
@@ -211,7 +211,7 @@ var TextBox = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
211
211
|
ref: this.inputRef,
|
|
212
212
|
type: type,
|
|
213
213
|
value: value,
|
|
214
|
-
onScroll: isScrollPrevent ? this.handlePreventTextBoxScroll :
|
|
214
|
+
onScroll: isScrollPrevent ? this.handlePreventTextBoxScroll : null,
|
|
215
215
|
onKeyPress: onKeyPress,
|
|
216
216
|
onMouseDown: onMouseDown
|
|
217
217
|
}, options, customProps));
|