@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.
@@ -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 propResizeHandling = this.props.needResizeHandling;
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
- direction: _propTypes["default"].string
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
- 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();
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: offsetHeight,
27
- width: offsetWidth
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 currentSize = getSize(this.targetNode); // if (this.size && shallowCompare(currentSize, this.size)) {
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.targetNode && this.removeEventListeners(this.targetNode);
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;
@@ -9,6 +9,7 @@ exports[`ResponsiveDropBox rendering the defult props 1`] = `
9
9
  data-position="bottomStart"
10
10
  data-selector-id="dropBox"
11
11
  data-test-id="dropBox"
12
+ dot-ui-element="dropbox"
12
13
  >
13
14
  <div
14
15
  class="subContainer bottom_shadow radius defaultPalette"
@@ -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));