jqtree 1.6.1 → 1.6.2
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/.eslintrc +1 -0
- package/_config.yml +1 -1
- package/_entries/10_changelog.md +5 -0
- package/_layouts/base.html +0 -22
- package/babel.config.json +11 -0
- package/babel.coverage.config.json +4 -0
- package/bower.json +1 -1
- package/jest-browser.config.js +0 -3
- package/jest-jsdom.config.js +1 -2
- package/jqtree.css +4 -1
- package/jqtree.postcss +3 -0
- package/lib/dataLoader.js +146 -98
- package/lib/dragAndDropHandler.js +668 -472
- package/lib/elementsRenderer.js +282 -197
- package/lib/jqtreeOptions.js +1 -2
- package/lib/keyHandler.js +134 -87
- package/lib/mouse.widget.js +285 -186
- package/lib/node.js +691 -505
- package/lib/nodeElement.js +329 -207
- package/lib/playwright/playwright.test.js +216 -189
- package/lib/playwright/testUtil.js +429 -193
- package/lib/playwright/visualRegression.js +182 -117
- package/lib/saveStateHandler.js +311 -204
- package/lib/scrollHandler.js +293 -199
- package/lib/selectNodeHandler.js +140 -100
- package/lib/simple.widget.js +184 -109
- package/lib/test/global.d.js +3 -0
- package/lib/test/jqTree/create.test.js +44 -40
- package/lib/test/jqTree/events.test.js +185 -138
- package/lib/test/jqTree/keyboard.test.js +216 -199
- package/lib/test/jqTree/loadOnDemand.test.js +233 -157
- package/lib/test/jqTree/methods.test.js +1269 -1019
- package/lib/test/jqTree/options.test.js +467 -398
- package/lib/test/node.test.js +1036 -873
- package/lib/test/nodeUtil.test.js +21 -20
- package/lib/test/support/exampleData.js +35 -23
- package/lib/test/support/jqTreeMatchers.js +72 -54
- package/lib/test/support/matchers.d.js +1 -0
- package/lib/test/support/setupTests.js +9 -3
- package/lib/test/support/testUtil.js +35 -15
- package/lib/test/support/treeStructure.js +41 -32
- package/lib/test/util.test.js +21 -20
- package/lib/tree.jquery.d.js +1 -0
- package/lib/tree.jquery.js +1264 -892
- package/lib/types.js +1 -2
- package/lib/typings.d.js +2 -0
- package/lib/util.js +19 -8
- package/lib/version.js +8 -3
- package/package.json +42 -34
- package/production +4 -4
- package/rollup.config.js +16 -11
- package/src/dataLoader.ts +6 -6
- package/src/dragAndDropHandler.ts +0 -4
- package/src/elementsRenderer.ts +4 -0
- package/src/jqtreeOptions.ts +1 -1
- package/src/mouse.widget.ts +19 -15
- package/src/node.ts +27 -41
- package/src/nodeElement.ts +17 -9
- package/src/playwright/.eslintrc +5 -0
- package/src/playwright/playwright.test.ts +29 -29
- package/src/saveStateHandler.ts +11 -6
- package/src/selectNodeHandler.ts +1 -1
- package/src/simple.widget.ts +1 -1
- package/src/test/.eslintrc +4 -0
- package/src/test/jqTree/create.test.ts +0 -1
- package/src/test/jqTree/events.test.ts +0 -1
- package/src/test/jqTree/keyboard.test.ts +0 -1
- package/src/test/jqTree/loadOnDemand.test.ts +46 -1
- package/src/test/jqTree/methods.test.ts +35 -10
- package/src/test/jqTree/options.test.ts +4 -5
- package/src/test/node.test.ts +2 -2
- package/src/test/support/jqTreeMatchers.ts +8 -9
- package/src/test/support/matchers.d.ts +2 -4
- package/src/test/support/setupTests.ts +2 -1
- package/src/tree.jquery.d.ts +18 -12
- package/src/tree.jquery.ts +25 -21
- package/src/version.ts +1 -1
- package/static/example.postcss +13 -0
- package/static/example_data.js +33 -36
- package/tree.jquery.debug.js +4806 -3325
- package/tree.jquery.debug.js.map +1 -1
- package/tree.jquery.js +2 -2
- package/tree.jquery.js.map +1 -1
- package/tsconfig.json +1 -0
package/lib/scrollHandler.js
CHANGED
|
@@ -1,209 +1,303 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
9
|
+
|
|
10
|
+
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); }
|
|
11
|
+
|
|
12
|
+
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; }
|
|
13
|
+
|
|
14
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
15
|
+
|
|
16
|
+
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); } }
|
|
17
|
+
|
|
18
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
var ScrollHandler = /*#__PURE__*/function () {
|
|
23
|
+
function ScrollHandler(treeWidget) {
|
|
24
|
+
_classCallCheck(this, ScrollHandler);
|
|
25
|
+
|
|
26
|
+
_defineProperty(this, "treeWidget", void 0);
|
|
27
|
+
|
|
28
|
+
_defineProperty(this, "previousTop", void 0);
|
|
29
|
+
|
|
30
|
+
_defineProperty(this, "isInitialized", void 0);
|
|
31
|
+
|
|
32
|
+
_defineProperty(this, "$scrollParent", void 0);
|
|
33
|
+
|
|
34
|
+
_defineProperty(this, "scrollParentTop", void 0);
|
|
35
|
+
|
|
36
|
+
this.treeWidget = treeWidget;
|
|
37
|
+
this.previousTop = -1;
|
|
38
|
+
this.isInitialized = false;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
_createClass(ScrollHandler, [{
|
|
42
|
+
key: "checkScrolling",
|
|
43
|
+
value: function checkScrolling() {
|
|
44
|
+
this.ensureInit();
|
|
45
|
+
this.checkVerticalScrolling();
|
|
46
|
+
this.checkHorizontalScrolling();
|
|
8
47
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
this.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
48
|
+
}, {
|
|
49
|
+
key: "scrollToY",
|
|
50
|
+
value: function scrollToY(top) {
|
|
51
|
+
this.ensureInit();
|
|
52
|
+
|
|
53
|
+
if (this.$scrollParent) {
|
|
54
|
+
this.$scrollParent[0].scrollTop = top;
|
|
55
|
+
} else {
|
|
56
|
+
var offset = this.treeWidget.$el.offset();
|
|
57
|
+
var treeTop = offset ? offset.top : 0;
|
|
58
|
+
jQuery(document).scrollTop(top + treeTop);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}, {
|
|
62
|
+
key: "isScrolledIntoView",
|
|
63
|
+
value: function isScrolledIntoView($element) {
|
|
64
|
+
this.ensureInit();
|
|
65
|
+
var elementBottom;
|
|
66
|
+
var viewBottom;
|
|
67
|
+
var elementTop;
|
|
68
|
+
var viewTop;
|
|
69
|
+
var elHeight = $element.height() || 0;
|
|
70
|
+
|
|
71
|
+
if (this.$scrollParent) {
|
|
72
|
+
viewTop = 0;
|
|
73
|
+
viewBottom = this.$scrollParent.height() || 0;
|
|
74
|
+
var offset = $element.offset();
|
|
75
|
+
var originalTop = offset ? offset.top : 0;
|
|
76
|
+
elementTop = originalTop - this.scrollParentTop;
|
|
77
|
+
elementBottom = elementTop + elHeight;
|
|
78
|
+
} else {
|
|
79
|
+
viewTop = jQuery(window).scrollTop() || 0;
|
|
80
|
+
var windowHeight = jQuery(window).height() || 0;
|
|
81
|
+
viewBottom = viewTop + windowHeight;
|
|
82
|
+
|
|
83
|
+
var _offset = $element.offset();
|
|
84
|
+
|
|
85
|
+
elementTop = _offset ? _offset.top : 0;
|
|
86
|
+
elementBottom = elementTop + elHeight;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return elementBottom <= viewBottom && elementTop >= viewTop;
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "getScrollLeft",
|
|
93
|
+
value: function getScrollLeft() {
|
|
94
|
+
if (!this.$scrollParent) {
|
|
95
|
+
return 0;
|
|
96
|
+
} else {
|
|
97
|
+
return this.$scrollParent.scrollLeft() || 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "initScrollParent",
|
|
102
|
+
value: function initScrollParent() {
|
|
103
|
+
var _this = this;
|
|
104
|
+
|
|
105
|
+
var getParentWithOverflow = function getParentWithOverflow() {
|
|
106
|
+
var cssAttributes = ["overflow", "overflow-y"];
|
|
107
|
+
|
|
108
|
+
var hasOverFlow = function hasOverFlow($el) {
|
|
109
|
+
var _iterator = _createForOfIteratorHelper(cssAttributes),
|
|
110
|
+
_step;
|
|
111
|
+
|
|
112
|
+
try {
|
|
113
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
114
|
+
var attr = _step.value;
|
|
115
|
+
var overflowValue = $el.css(attr);
|
|
116
|
+
|
|
117
|
+
if (overflowValue === "auto" || overflowValue === "scroll") {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
82
120
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
121
|
+
} catch (err) {
|
|
122
|
+
_iterator.e(err);
|
|
123
|
+
} finally {
|
|
124
|
+
_iterator.f();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return false;
|
|
88
128
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var $scrollParent = getParentWithOverflow();
|
|
93
|
-
if ($scrollParent &&
|
|
94
|
-
$scrollParent.length &&
|
|
95
|
-
$scrollParent[0].tagName !== "HTML") {
|
|
96
|
-
this.$scrollParent = $scrollParent;
|
|
97
|
-
var offset = this.$scrollParent.offset();
|
|
98
|
-
this.scrollParentTop = offset ? offset.top : 0;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
setDocumentAsScrollParent();
|
|
102
|
-
}
|
|
103
|
-
this.isInitialized = true;
|
|
104
|
-
};
|
|
105
|
-
ScrollHandler.prototype.ensureInit = function () {
|
|
106
|
-
if (!this.isInitialized) {
|
|
107
|
-
this.initScrollParent();
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
ScrollHandler.prototype.handleVerticalScrollingWithScrollParent = function (area) {
|
|
111
|
-
var scrollParent = this.$scrollParent && this.$scrollParent[0];
|
|
112
|
-
if (!scrollParent) {
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
var distanceBottom = this.scrollParentTop + scrollParent.offsetHeight - area.bottom;
|
|
116
|
-
if (distanceBottom < 20) {
|
|
117
|
-
scrollParent.scrollTop += 20;
|
|
118
|
-
this.treeWidget.refreshHitAreas();
|
|
119
|
-
this.previousTop = -1;
|
|
120
|
-
}
|
|
121
|
-
else if (area.top - this.scrollParentTop < 20) {
|
|
122
|
-
scrollParent.scrollTop -= 20;
|
|
123
|
-
this.treeWidget.refreshHitAreas();
|
|
124
|
-
this.previousTop = -1;
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
ScrollHandler.prototype.handleVerticalScrollingWithDocument = function (area) {
|
|
128
|
-
var scrollTop = jQuery(document).scrollTop() || 0;
|
|
129
|
-
var distanceTop = area.top - scrollTop;
|
|
130
|
-
if (distanceTop < 20) {
|
|
131
|
-
jQuery(document).scrollTop(scrollTop - 20);
|
|
129
|
+
|
|
130
|
+
if (hasOverFlow(_this.treeWidget.$el)) {
|
|
131
|
+
return _this.treeWidget.$el;
|
|
132
132
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
|
|
134
|
+
var _iterator2 = _createForOfIteratorHelper(_this.treeWidget.$el.parents().get()),
|
|
135
|
+
_step2;
|
|
136
|
+
|
|
137
|
+
try {
|
|
138
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
139
|
+
var el = _step2.value;
|
|
140
|
+
var $el = jQuery(el);
|
|
141
|
+
|
|
142
|
+
if (hasOverFlow($el)) {
|
|
143
|
+
return $el;
|
|
137
144
|
}
|
|
145
|
+
}
|
|
146
|
+
} catch (err) {
|
|
147
|
+
_iterator2.e(err);
|
|
148
|
+
} finally {
|
|
149
|
+
_iterator2.f();
|
|
138
150
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
151
|
+
|
|
152
|
+
return null;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
var setDocumentAsScrollParent = function setDocumentAsScrollParent() {
|
|
156
|
+
_this.scrollParentTop = 0;
|
|
157
|
+
_this.$scrollParent = null;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
if (this.treeWidget.$el.css("position") === "fixed") {
|
|
161
|
+
setDocumentAsScrollParent();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
var $scrollParent = getParentWithOverflow();
|
|
165
|
+
|
|
166
|
+
if ($scrollParent && $scrollParent.length && $scrollParent[0].tagName !== "HTML") {
|
|
167
|
+
this.$scrollParent = $scrollParent;
|
|
168
|
+
var offset = this.$scrollParent.offset();
|
|
169
|
+
this.scrollParentTop = offset ? offset.top : 0;
|
|
170
|
+
} else {
|
|
171
|
+
setDocumentAsScrollParent();
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
this.isInitialized = true;
|
|
175
|
+
}
|
|
176
|
+
}, {
|
|
177
|
+
key: "ensureInit",
|
|
178
|
+
value: function ensureInit() {
|
|
179
|
+
if (!this.isInitialized) {
|
|
180
|
+
this.initScrollParent();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}, {
|
|
184
|
+
key: "handleVerticalScrollingWithScrollParent",
|
|
185
|
+
value: function handleVerticalScrollingWithScrollParent(area) {
|
|
186
|
+
var scrollParent = this.$scrollParent && this.$scrollParent[0];
|
|
187
|
+
|
|
188
|
+
if (!scrollParent) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
var distanceBottom = this.scrollParentTop + scrollParent.offsetHeight - area.bottom;
|
|
193
|
+
|
|
194
|
+
if (distanceBottom < 20) {
|
|
195
|
+
scrollParent.scrollTop += 20;
|
|
196
|
+
this.treeWidget.refreshHitAreas();
|
|
197
|
+
this.previousTop = -1;
|
|
198
|
+
} else if (area.top - this.scrollParentTop < 20) {
|
|
199
|
+
scrollParent.scrollTop -= 20;
|
|
200
|
+
this.treeWidget.refreshHitAreas();
|
|
201
|
+
this.previousTop = -1;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}, {
|
|
205
|
+
key: "handleVerticalScrollingWithDocument",
|
|
206
|
+
value: function handleVerticalScrollingWithDocument(area) {
|
|
207
|
+
var scrollTop = jQuery(document).scrollTop() || 0;
|
|
208
|
+
var distanceTop = area.top - scrollTop;
|
|
209
|
+
|
|
210
|
+
if (distanceTop < 20) {
|
|
211
|
+
jQuery(document).scrollTop(scrollTop - 20);
|
|
212
|
+
} else {
|
|
213
|
+
var windowHeight = jQuery(window).height() || 0;
|
|
214
|
+
|
|
215
|
+
if (windowHeight - (area.bottom - scrollTop) < 20) {
|
|
216
|
+
jQuery(document).scrollTop(scrollTop + 20);
|
|
156
217
|
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}, {
|
|
221
|
+
key: "checkVerticalScrolling",
|
|
222
|
+
value: function checkVerticalScrolling() {
|
|
223
|
+
var hoveredArea = this.treeWidget.dndHandler.hoveredArea;
|
|
224
|
+
|
|
225
|
+
if (hoveredArea && hoveredArea.top !== this.previousTop) {
|
|
226
|
+
this.previousTop = hoveredArea.top;
|
|
227
|
+
|
|
157
228
|
if (this.$scrollParent) {
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
this.handleHorizontalScrollingWithDocument(positionInfo);
|
|
162
|
-
}
|
|
163
|
-
};
|
|
164
|
-
ScrollHandler.prototype.handleHorizontalScrollingWithParent = function (positionInfo) {
|
|
165
|
-
if (positionInfo.pageX === undefined ||
|
|
166
|
-
positionInfo.pageY === undefined) {
|
|
167
|
-
return;
|
|
229
|
+
this.handleVerticalScrollingWithScrollParent(hoveredArea);
|
|
230
|
+
} else {
|
|
231
|
+
this.handleVerticalScrollingWithDocument(hoveredArea);
|
|
168
232
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}, {
|
|
236
|
+
key: "checkHorizontalScrolling",
|
|
237
|
+
value: function checkHorizontalScrolling() {
|
|
238
|
+
var positionInfo = this.treeWidget.dndHandler.positionInfo;
|
|
239
|
+
|
|
240
|
+
if (!positionInfo) {
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
if (this.$scrollParent) {
|
|
245
|
+
this.handleHorizontalScrollingWithParent(positionInfo);
|
|
246
|
+
} else {
|
|
247
|
+
this.handleHorizontalScrollingWithDocument(positionInfo);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}, {
|
|
251
|
+
key: "handleHorizontalScrollingWithParent",
|
|
252
|
+
value: function handleHorizontalScrollingWithParent(positionInfo) {
|
|
253
|
+
if (positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
var $scrollParent = this.$scrollParent;
|
|
258
|
+
var scrollParentOffset = $scrollParent && $scrollParent.offset();
|
|
259
|
+
|
|
260
|
+
if (!($scrollParent && scrollParentOffset)) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
var scrollParent = $scrollParent[0];
|
|
265
|
+
var canScrollRight = scrollParent.scrollLeft + scrollParent.clientWidth < scrollParent.scrollWidth;
|
|
266
|
+
var canScrollLeft = scrollParent.scrollLeft > 0;
|
|
267
|
+
var rightEdge = scrollParentOffset.left + scrollParent.clientWidth;
|
|
268
|
+
var leftEdge = scrollParentOffset.left;
|
|
269
|
+
var isNearRightEdge = positionInfo.pageX > rightEdge - 20;
|
|
270
|
+
var isNearLeftEdge = positionInfo.pageX < leftEdge + 20;
|
|
271
|
+
|
|
272
|
+
if (isNearRightEdge && canScrollRight) {
|
|
273
|
+
scrollParent.scrollLeft = Math.min(scrollParent.scrollLeft + 20, scrollParent.scrollWidth);
|
|
274
|
+
} else if (isNearLeftEdge && canScrollLeft) {
|
|
275
|
+
scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}, {
|
|
279
|
+
key: "handleHorizontalScrollingWithDocument",
|
|
280
|
+
value: function handleHorizontalScrollingWithDocument(positionInfo) {
|
|
281
|
+
if (positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
var $document = jQuery(document);
|
|
286
|
+
var scrollLeft = $document.scrollLeft() || 0;
|
|
287
|
+
var windowWidth = jQuery(window).width() || 0;
|
|
288
|
+
var canScrollLeft = scrollLeft > 0;
|
|
289
|
+
var isNearRightEdge = positionInfo.pageX > windowWidth - 20;
|
|
290
|
+
var isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;
|
|
291
|
+
|
|
292
|
+
if (isNearRightEdge) {
|
|
293
|
+
$document.scrollLeft(scrollLeft + 20);
|
|
294
|
+
} else if (isNearLeftEdge && canScrollLeft) {
|
|
295
|
+
$document.scrollLeft(Math.max(scrollLeft - 20, 0));
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}]);
|
|
299
|
+
|
|
300
|
+
return ScrollHandler;
|
|
301
|
+
}();
|
|
302
|
+
|
|
303
|
+
exports["default"] = ScrollHandler;
|