vxe-pc-ui 3.20.8 → 3.20.10
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/es/card/src/card.js +2 -1
- package/es/date-panel/src/date-panel.js +70 -39
- package/es/date-panel/style.css +22 -20
- package/es/date-panel/style.min.css +1 -1
- package/es/drawer/src/drawer.js +1 -0
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +11 -3
- package/es/icon-picker/style.css +9 -3
- package/es/icon-picker/style.min.css +1 -1
- package/es/layout-aside/src/layout-aside.js +2 -1
- package/es/layout-body/src/layout-body.js +2 -1
- package/es/layout-container/src/layout-container.js +9 -2
- package/es/list/src/list.js +80 -223
- package/es/menu/src/menu.js +1 -0
- package/es/modal/src/modal.js +1 -0
- package/es/scrollbar/src/scrollbar.js +32 -188
- package/es/select/src/select.js +273 -8
- package/es/select/style.css +44 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +2 -1
- package/es/tooltip/src/tooltip.js +7 -6
- package/es/tooltip/style.css +2 -0
- package/es/tooltip/style.min.css +1 -1
- package/es/tree/src/tree.js +85 -228
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-date-panel/style.css +22 -20
- package/es/vxe-date-panel/style.min.css +1 -1
- package/es/vxe-icon-picker/style.css +9 -3
- package/es/vxe-icon-picker/style.min.css +1 -1
- package/es/vxe-select/style.css +44 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tooltip/style.css +2 -0
- package/es/vxe-tooltip/style.min.css +1 -1
- package/lib/card/src/card.js +1 -1
- package/lib/card/src/card.min.js +1 -1
- package/lib/date-panel/src/date-panel.js +74 -43
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/style/style.css +22 -20
- package/lib/date-panel/style/style.min.css +1 -1
- package/lib/drawer/src/drawer.js +1 -1
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +56 -38
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/icon-picker/style/style.css +9 -3
- package/lib/icon-picker/style/style.min.css +1 -1
- package/lib/index.umd.js +894 -816
- package/lib/index.umd.min.js +1 -1
- package/lib/layout-aside/src/layout-aside.js +1 -1
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +1 -1
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/layout-container/src/layout-container.js +13 -3
- package/lib/layout-container/src/layout-container.min.js +1 -1
- package/lib/list/src/list.js +72 -225
- package/lib/list/src/list.min.js +1 -1
- package/lib/menu/src/menu.js +1 -1
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +1 -1
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +29 -192
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/select/src/select.js +322 -69
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +44 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +1 -1
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +5 -6
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tooltip/style/style.css +2 -0
- package/lib/tooltip/style/style.min.css +1 -1
- package/lib/tree/src/tree.js +77 -229
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-date-panel/style/style.css +22 -20
- package/lib/vxe-date-panel/style/style.min.css +1 -1
- package/lib/vxe-icon-picker/style/style.css +9 -3
- package/lib/vxe-icon-picker/style/style.min.css +1 -1
- package/lib/vxe-select/style/style.css +44 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tooltip/style/style.css +2 -0
- package/lib/vxe-tooltip/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/card/src/card.ts +4 -2
- package/packages/date-panel/src/date-panel.ts +70 -39
- package/packages/drawer/src/drawer.ts +4 -2
- package/packages/icon-picker/src/icon-picker.ts +12 -3
- package/packages/layout-aside/src/layout-aside.ts +4 -2
- package/packages/layout-body/src/layout-body.ts +4 -2
- package/packages/layout-container/src/layout-container.ts +13 -3
- package/packages/list/src/list.ts +85 -241
- package/packages/menu/src/menu.ts +3 -1
- package/packages/modal/src/modal.ts +3 -1
- package/packages/scrollbar/src/scrollbar.ts +32 -199
- package/packages/select/src/select.ts +304 -11
- package/packages/tabs/src/tabs.ts +4 -4
- package/packages/tooltip/src/tooltip.ts +10 -8
- package/packages/tree/src/tree.ts +90 -247
- package/styles/components/date-panel.scss +31 -29
- package/styles/components/icon-picker.scss +9 -3
- package/styles/components/select.scss +77 -0
- package/styles/components/tooltip.scss +1 -0
- package/types/components/card.d.ts +2 -2
- package/types/components/drawer.d.ts +2 -2
- package/types/components/gantt-module/gantt-view.d.ts +8 -17
- package/types/components/grid.d.ts +3 -2
- package/types/components/icon-picker.d.ts +21 -1
- package/types/components/layout-aside.d.ts +2 -2
- package/types/components/layout-body.d.ts +2 -2
- package/types/components/layout-container.d.ts +3 -1
- package/types/components/list.d.ts +6 -2
- package/types/components/menu.d.ts +2 -2
- package/types/components/modal.d.ts +2 -2
- package/types/components/scrollbar.d.ts +17 -14
- package/types/components/select.d.ts +28 -3
- package/types/components/table.d.ts +26 -22
- package/types/components/tabs.d.ts +2 -2
- package/types/components/tooltip.d.ts +2 -2
- package/types/components/tree.d.ts +8 -17
- /package/es/icon/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/es/icon/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
- /package/es/icon/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/es/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/es/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
- /package/es/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
- /package/lib/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
- /package/lib/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
- /package/lib/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
|
-
import { VxeUI } from '../../ui';
|
|
3
|
+
import { VxeUI, globalMixins } from '../../ui';
|
|
4
4
|
import { toCssUnit } from '../../ui/src/dom';
|
|
5
5
|
import { getDefaultConfig } from '../../ui/src/utils';
|
|
6
6
|
import VxeLoadingComponent from '../../loading';
|
|
7
|
-
const { getConfig, createEvent, domUtils,
|
|
8
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils;
|
|
7
|
+
const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI;
|
|
9
8
|
function createReactData() {
|
|
10
9
|
return {
|
|
11
10
|
yThumbHeight: 0,
|
|
@@ -14,7 +13,7 @@ function createReactData() {
|
|
|
14
13
|
}
|
|
15
14
|
function createInternalData() {
|
|
16
15
|
return {
|
|
17
|
-
//
|
|
16
|
+
// scrollObserver: undefined,
|
|
18
17
|
// isThumbDrag: false,
|
|
19
18
|
thumbDragOffset: 0,
|
|
20
19
|
yThumbTop: 0,
|
|
@@ -25,6 +24,10 @@ function createInternalData() {
|
|
|
25
24
|
}
|
|
26
25
|
export default {
|
|
27
26
|
name: 'VxeScrollbar',
|
|
27
|
+
mixins: [
|
|
28
|
+
globalMixins.sizeMixin,
|
|
29
|
+
globalMixins.initVScrollbarMixin
|
|
30
|
+
],
|
|
28
31
|
props: {
|
|
29
32
|
id: [String, Number],
|
|
30
33
|
viewId: [String, Number],
|
|
@@ -77,10 +80,22 @@ export default {
|
|
|
77
80
|
type: String,
|
|
78
81
|
default: () => getConfig().scrollbar.viewInnerClassName
|
|
79
82
|
},
|
|
83
|
+
size: {
|
|
84
|
+
type: String,
|
|
85
|
+
default: () => getConfig().scrollbar.size || getConfig().size
|
|
86
|
+
},
|
|
87
|
+
/**
|
|
88
|
+
* 已废弃
|
|
89
|
+
* @deprecated
|
|
90
|
+
*/
|
|
80
91
|
autoResize: {
|
|
81
92
|
type: Boolean,
|
|
82
93
|
default: () => getConfig().scrollbar.autoResize
|
|
83
94
|
},
|
|
95
|
+
/**
|
|
96
|
+
* 已废弃
|
|
97
|
+
* @deprecated
|
|
98
|
+
*/
|
|
84
99
|
syncResize: [Boolean, String, Number]
|
|
85
100
|
},
|
|
86
101
|
data() {
|
|
@@ -89,8 +104,7 @@ export default {
|
|
|
89
104
|
return Object.assign(Object.assign({}, {}), { xID,
|
|
90
105
|
reactData, reFlag: 0 });
|
|
91
106
|
},
|
|
92
|
-
computed: {
|
|
93
|
-
computeWrapperStyle() {
|
|
107
|
+
computed: Object.assign(Object.assign({}, {}), { computeWrapperStyle() {
|
|
94
108
|
const $xeScrollbar = this;
|
|
95
109
|
const props = $xeScrollbar;
|
|
96
110
|
const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props;
|
|
@@ -165,6 +179,7 @@ export default {
|
|
|
165
179
|
const reactData = $xeScrollbar.reactData;
|
|
166
180
|
const { native, theme, className, padding } = props;
|
|
167
181
|
const { yThumbHeight, xThumbWidth } = reactData;
|
|
182
|
+
const vSize = $xeScrollbar.computeSize;
|
|
168
183
|
const xToTop = $xeScrollbar.computeXToTop;
|
|
169
184
|
const yToLeft = $xeScrollbar.computeYToLeft;
|
|
170
185
|
const xVisible = $xeScrollbar.computeXVisible;
|
|
@@ -173,6 +188,7 @@ export default {
|
|
|
173
188
|
const yAutoHide = $xeScrollbar.computeYAutoHide;
|
|
174
189
|
return domUtils.buildClass([
|
|
175
190
|
'vxe-scrollbar',
|
|
191
|
+
vSize ? `size--${vSize}` : '',
|
|
176
192
|
theme ? `theme--${theme}` : '',
|
|
177
193
|
`ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
|
|
178
194
|
`ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
|
|
@@ -225,8 +241,7 @@ export default {
|
|
|
225
241
|
const $xeScrollbar = this;
|
|
226
242
|
const yOpts = $xeScrollbar.computeYOpts;
|
|
227
243
|
return yOpts.position === 'left';
|
|
228
|
-
}
|
|
229
|
-
},
|
|
244
|
+
} }),
|
|
230
245
|
methods: {
|
|
231
246
|
//
|
|
232
247
|
// Method
|
|
@@ -235,12 +250,12 @@ export default {
|
|
|
235
250
|
const $xeScrollbar = this;
|
|
236
251
|
$xeScrollbar.$emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params));
|
|
237
252
|
},
|
|
238
|
-
|
|
253
|
+
getScrollViewElem() {
|
|
239
254
|
const $xeScrollbar = this;
|
|
240
255
|
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
241
256
|
return viewEl || null;
|
|
242
257
|
},
|
|
243
|
-
|
|
258
|
+
getScrollViewInnerElem() {
|
|
244
259
|
const $xeScrollbar = this;
|
|
245
260
|
const viewInnerEl = $xeScrollbar.$refs.refViewInnerElem;
|
|
246
261
|
return viewInnerEl || null;
|
|
@@ -308,60 +323,6 @@ export default {
|
|
|
308
323
|
$xeScrollbar.updateThumbOffset();
|
|
309
324
|
return $xeScrollbar.$nextTick();
|
|
310
325
|
},
|
|
311
|
-
updateThumbSize() {
|
|
312
|
-
const $xeScrollbar = this;
|
|
313
|
-
const reactData = $xeScrollbar.reactData;
|
|
314
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
315
|
-
if (!viewEl) {
|
|
316
|
-
return;
|
|
317
|
-
}
|
|
318
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const trackXEl = $xeScrollbar.$refs.refTrackXElem;
|
|
322
|
-
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
323
|
-
const thumbXElem = $xeScrollbar.$refs.refThumbXElem;
|
|
324
|
-
if (thumbXElem) {
|
|
325
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
326
|
-
}
|
|
327
|
-
reactData.xThumbWidth = xThumbWidth;
|
|
328
|
-
const trackYEl = $xeScrollbar.$refs.refTrackYElem;
|
|
329
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
330
|
-
const thumbYElem = $xeScrollbar.$refs.refThumbYElem;
|
|
331
|
-
if (thumbYElem) {
|
|
332
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
333
|
-
}
|
|
334
|
-
reactData.yThumbHeight = yThumbHeight;
|
|
335
|
-
},
|
|
336
|
-
updateThumbOffset() {
|
|
337
|
-
const $xeScrollbar = this;
|
|
338
|
-
const reactData = $xeScrollbar.reactData;
|
|
339
|
-
const internalData = $xeScrollbar.internalData;
|
|
340
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
341
|
-
if (!viewEl) {
|
|
342
|
-
return;
|
|
343
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
const { xThumbWidth, yThumbHeight } = reactData;
|
|
348
|
-
const trackXEl = $xeScrollbar.$refs.refTrackXElem;
|
|
349
|
-
const thumbXElem = $xeScrollbar.$refs.refThumbXElem;
|
|
350
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
351
|
-
internalData.xThumbLeft = xThumbLeft;
|
|
352
|
-
if (thumbXElem && xThumbWidth) {
|
|
353
|
-
thumbXElem.style.width = xThumbWidth + 'px';
|
|
354
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
355
|
-
}
|
|
356
|
-
const trackYEl = $xeScrollbar.$refs.refTrackYElem;
|
|
357
|
-
const thumbYElem = $xeScrollbar.$refs.refThumbYElem;
|
|
358
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
359
|
-
internalData.yThumbTop = yThumbTop;
|
|
360
|
-
if (thumbYElem && yThumbHeight) {
|
|
361
|
-
thumbYElem.style.height = yThumbHeight + 'px';
|
|
362
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
326
|
scrollEvent(evnt) {
|
|
366
327
|
const $xeScrollbar = this;
|
|
367
328
|
const reactData = $xeScrollbar.reactData;
|
|
@@ -439,123 +400,6 @@ export default {
|
|
|
439
400
|
scrollWidth: scrollWidth
|
|
440
401
|
}, evnt);
|
|
441
402
|
},
|
|
442
|
-
clickTrackXEvent(evnt) {
|
|
443
|
-
const $xeScrollbar = this;
|
|
444
|
-
const reactData = $xeScrollbar.reactData;
|
|
445
|
-
const trackEl = evnt.currentTarget;
|
|
446
|
-
if (trackEl !== evnt.target) {
|
|
447
|
-
return;
|
|
448
|
-
}
|
|
449
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
450
|
-
if (!viewEl) {
|
|
451
|
-
return;
|
|
452
|
-
}
|
|
453
|
-
const { xThumbWidth } = reactData;
|
|
454
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
455
|
-
viewEl.scrollTo({
|
|
456
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
457
|
-
behavior: 'auto'
|
|
458
|
-
});
|
|
459
|
-
},
|
|
460
|
-
clickTrackYEvent(evnt) {
|
|
461
|
-
const $xeScrollbar = this;
|
|
462
|
-
const reactData = $xeScrollbar.reactData;
|
|
463
|
-
const trackEl = evnt.currentTarget;
|
|
464
|
-
if (trackEl !== evnt.target) {
|
|
465
|
-
return;
|
|
466
|
-
}
|
|
467
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
468
|
-
if (!viewEl) {
|
|
469
|
-
return;
|
|
470
|
-
}
|
|
471
|
-
const { yThumbHeight } = reactData;
|
|
472
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
473
|
-
viewEl.scrollTo({
|
|
474
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
475
|
-
behavior: 'auto'
|
|
476
|
-
});
|
|
477
|
-
},
|
|
478
|
-
pointerdownThumbXEvent(evnt) {
|
|
479
|
-
const $xeScrollbar = this;
|
|
480
|
-
const reactData = $xeScrollbar.reactData;
|
|
481
|
-
const internalData = $xeScrollbar.internalData;
|
|
482
|
-
const thumbEl = evnt.currentTarget;
|
|
483
|
-
internalData.isThumbDrag = true;
|
|
484
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
485
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
486
|
-
if (!viewEl) {
|
|
487
|
-
return;
|
|
488
|
-
}
|
|
489
|
-
const { xThumbWidth } = reactData;
|
|
490
|
-
const trackEl = thumbEl.parentElement;
|
|
491
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
492
|
-
const pointerPosition = evnt.clientX - trackRect.left;
|
|
493
|
-
// 记录 thumb 的偏移
|
|
494
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
495
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
496
|
-
},
|
|
497
|
-
pointermoveThumbXEvent(evnt) {
|
|
498
|
-
const $xeScrollbar = this;
|
|
499
|
-
const reactData = $xeScrollbar.reactData;
|
|
500
|
-
const internalData = $xeScrollbar.internalData;
|
|
501
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
502
|
-
if (isThumbDrag) {
|
|
503
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
504
|
-
if (!viewEl) {
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
507
|
-
const { xThumbWidth } = reactData;
|
|
508
|
-
const thumbEl = evnt.currentTarget;
|
|
509
|
-
const trackEl = thumbEl.parentElement;
|
|
510
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
511
|
-
// 更新偏移
|
|
512
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
513
|
-
}
|
|
514
|
-
},
|
|
515
|
-
cleatPointerThumbEvent(evnt) {
|
|
516
|
-
const $xeScrollbar = this;
|
|
517
|
-
const internalData = $xeScrollbar.internalData;
|
|
518
|
-
const thumbEl = evnt.currentTarget;
|
|
519
|
-
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
520
|
-
internalData.isThumbDrag = false;
|
|
521
|
-
},
|
|
522
|
-
pointerdownThumbYEvent(evnt) {
|
|
523
|
-
const $xeScrollbar = this;
|
|
524
|
-
const reactData = $xeScrollbar.reactData;
|
|
525
|
-
const internalData = $xeScrollbar.internalData;
|
|
526
|
-
const thumbEl = evnt.currentTarget;
|
|
527
|
-
internalData.isThumbDrag = true;
|
|
528
|
-
thumbEl.setPointerCapture(evnt.pointerId);
|
|
529
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
530
|
-
if (!viewEl) {
|
|
531
|
-
return;
|
|
532
|
-
}
|
|
533
|
-
const { yThumbHeight } = reactData;
|
|
534
|
-
const trackEl = thumbEl.parentElement;
|
|
535
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
536
|
-
const pointerPosition = evnt.clientY - trackRect.top;
|
|
537
|
-
// 记录 thumb 的偏移
|
|
538
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
539
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
540
|
-
},
|
|
541
|
-
pointermoveThumbYEvent(evnt) {
|
|
542
|
-
const $xeScrollbar = this;
|
|
543
|
-
const reactData = $xeScrollbar.reactData;
|
|
544
|
-
const internalData = $xeScrollbar.internalData;
|
|
545
|
-
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
546
|
-
if (isThumbDrag) {
|
|
547
|
-
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
548
|
-
if (!viewEl) {
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
const { yThumbHeight } = reactData;
|
|
552
|
-
const thumbEl = evnt.currentTarget;
|
|
553
|
-
const trackEl = thumbEl.parentElement;
|
|
554
|
-
const trackRect = trackEl.getBoundingClientRect();
|
|
555
|
-
// 更新偏移
|
|
556
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
557
|
-
}
|
|
558
|
-
},
|
|
559
403
|
//
|
|
560
404
|
// Render
|
|
561
405
|
//
|
|
@@ -717,18 +561,18 @@ export default {
|
|
|
717
561
|
const viewEl = $xeScrollbar.$refs.refViewElem;
|
|
718
562
|
const viewInnerEl = $xeScrollbar.$refs.refViewInnerElem;
|
|
719
563
|
if (autoResize) {
|
|
720
|
-
const
|
|
564
|
+
const scrollObserver = globalResize.create(() => {
|
|
721
565
|
if (props.autoResize) {
|
|
722
566
|
$xeScrollbar.reFlag++;
|
|
723
567
|
}
|
|
724
568
|
});
|
|
725
569
|
if (viewEl) {
|
|
726
|
-
|
|
570
|
+
scrollObserver.observe(viewEl);
|
|
727
571
|
}
|
|
728
572
|
if (viewInnerEl) {
|
|
729
|
-
|
|
573
|
+
scrollObserver.observe(viewInnerEl);
|
|
730
574
|
}
|
|
731
|
-
internalData.
|
|
575
|
+
internalData.scrollObserver = scrollObserver;
|
|
732
576
|
}
|
|
733
577
|
$xeScrollbar.reFlag++;
|
|
734
578
|
globalEvents.on($xeScrollbar, 'resize', () => {
|
|
@@ -738,9 +582,9 @@ export default {
|
|
|
738
582
|
beforeDestroy() {
|
|
739
583
|
const $xeScrollbar = this;
|
|
740
584
|
const internalData = $xeScrollbar.internalData;
|
|
741
|
-
const {
|
|
742
|
-
if (
|
|
743
|
-
|
|
585
|
+
const { scrollObserver } = internalData;
|
|
586
|
+
if (scrollObserver) {
|
|
587
|
+
scrollObserver.disconnect();
|
|
744
588
|
}
|
|
745
589
|
globalEvents.off($xeScrollbar, 'resize');
|
|
746
590
|
},
|