vxe-pc-ui 4.20.8 → 4.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/dist/all.esm.js +2041 -2125
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +8 -6
- package/es/date-panel/src/date-panel.js +58 -36
- package/es/date-panel/style.css +22 -20
- package/es/date-panel/style.min.css +1 -1
- package/es/drawer/src/drawer.js +7 -5
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +74 -38
- 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 +6 -4
- package/es/layout-body/src/layout-body.js +6 -4
- package/es/layout-container/src/layout-container.js +11 -3
- package/es/list/src/list.js +81 -208
- package/es/menu/src/menu.js +7 -5
- package/es/modal/src/modal.js +7 -5
- package/es/scrollbar/src/scrollbar.js +28 -173
- package/es/select/src/select.js +243 -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 +5 -4
- package/es/tooltip/src/tooltip.js +7 -5
- package/es/tooltip/style.css +2 -0
- package/es/tooltip/style.min.css +1 -1
- package/es/tree/src/tree.js +86 -212
- 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 +9 -6
- package/lib/card/src/card.min.js +1 -1
- package/lib/date-panel/src/date-panel.js +56 -34
- 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 +7 -4
- 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 +101 -45
- 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 +1049 -859
- package/lib/index.umd.min.js +1 -1
- package/lib/layout-aside/src/layout-aside.js +7 -4
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +7 -4
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/layout-container/src/layout-container.js +20 -4
- package/lib/layout-container/src/layout-container.min.js +1 -1
- package/lib/list/src/list.js +95 -232
- package/lib/list/src/list.min.js +1 -1
- package/lib/menu/src/menu.js +8 -4
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +7 -4
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/scrollbar/src/scrollbar.js +42 -199
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/select/src/select.js +315 -68
- 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 +6 -5
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +7 -4
- 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 +101 -235
- 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 +8 -6
- package/packages/date-panel/src/date-panel.ts +58 -36
- package/packages/drawer/src/drawer.ts +7 -5
- package/packages/icon-picker/src/icon-picker.ts +80 -38
- package/packages/layout-aside/src/layout-aside.ts +6 -4
- package/packages/layout-body/src/layout-body.ts +6 -4
- package/packages/layout-container/src/layout-container.ts +13 -3
- package/packages/list/src/list.ts +98 -224
- package/packages/menu/src/menu.ts +7 -5
- package/packages/modal/src/modal.ts +7 -5
- package/packages/scrollbar/src/scrollbar.ts +44 -189
- package/packages/select/src/select.ts +278 -8
- package/packages/tabs/src/tabs.ts +5 -4
- package/packages/tooltip/src/tooltip.ts +7 -5
- package/packages/tree/src/tree.ts +103 -228
- 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 +7 -16
- package/types/components/grid.d.ts +3 -1
- 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 +28 -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.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/es/icon/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/es/icon/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/es/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/es/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/es/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/lib/icon/style/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
- /package/lib/{iconfont.1792115566662.ttf → iconfont.1792219842406.ttf} +0 -0
- /package/lib/{iconfont.1792115566662.woff → iconfont.1792219842406.woff} +0 -0
- /package/lib/{iconfont.1792115566662.woff2 → iconfont.1792219842406.woff2} +0 -0
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { ref, h, reactive, computed, PropType, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
|
-
import { VxeUI } from '../../ui'
|
|
4
|
+
import { VxeUI, useFns } from '../../ui'
|
|
5
5
|
import { toCssUnit } from '../../ui/src/dom'
|
|
6
6
|
import { getDefaultConfig } from '../../ui/src/utils'
|
|
7
7
|
import VxeLoadingComponent from '../../loading'
|
|
8
8
|
|
|
9
9
|
import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ScrollbarMethods, ScrollbarPrivateMethods, VxeScrollbarPropTypes, ValueOf, ScrollbarPrivateRef, VxeScrollbarPrivateComputed, VxeScrollbarConstructor, VxeScrollbarPrivateMethods, VxeComponentStyleType } from '../../../types'
|
|
10
10
|
|
|
11
|
-
const { getConfig, createEvent, domUtils,
|
|
12
|
-
|
|
13
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
|
|
11
|
+
const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
|
|
14
12
|
|
|
15
13
|
function createReactData (): ScrollbarReactData {
|
|
16
14
|
return {
|
|
@@ -21,7 +19,7 @@ function createReactData (): ScrollbarReactData {
|
|
|
21
19
|
|
|
22
20
|
function createInternalData (): ScrollbarInternalData {
|
|
23
21
|
return {
|
|
24
|
-
//
|
|
22
|
+
// scrollObserver: undefined,
|
|
25
23
|
// isThumbDrag: false,
|
|
26
24
|
thumbDragOffset: 0,
|
|
27
25
|
yThumbTop: 0,
|
|
@@ -85,10 +83,22 @@ export default defineVxeComponent({
|
|
|
85
83
|
type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
|
|
86
84
|
default: () => getConfig().scrollbar.viewInnerClassName
|
|
87
85
|
},
|
|
86
|
+
size: {
|
|
87
|
+
type: String as PropType<VxeScrollbarPropTypes.Size>,
|
|
88
|
+
default: () => getConfig().scrollbar.size || getConfig().size
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* 已废弃
|
|
92
|
+
* @deprecated
|
|
93
|
+
*/
|
|
88
94
|
autoResize: {
|
|
89
95
|
type: Boolean as PropType<VxeScrollbarPropTypes.AutoResize>,
|
|
90
96
|
default: () => getConfig().scrollbar.autoResize
|
|
91
97
|
},
|
|
98
|
+
/**
|
|
99
|
+
* 已废弃
|
|
100
|
+
* @deprecated
|
|
101
|
+
*/
|
|
92
102
|
syncResize: [Boolean, String, Number] as PropType<VxeScrollbarPropTypes.SyncResize>
|
|
93
103
|
},
|
|
94
104
|
emits: [
|
|
@@ -103,15 +113,13 @@ export default defineVxeComponent({
|
|
|
103
113
|
const refElem = ref<HTMLDivElement>()
|
|
104
114
|
const refViewElem = ref<HTMLDivElement>()
|
|
105
115
|
const refViewInnerElem = ref<HTMLDivElement>()
|
|
106
|
-
const refTrackXElem = ref<HTMLDivElement>()
|
|
107
|
-
const refTrackYElem = ref<HTMLDivElement>()
|
|
108
|
-
const refThumbXElem = ref<HTMLDivElement>()
|
|
109
|
-
const refThumbYElem = ref<HTMLDivElement>()
|
|
110
116
|
|
|
111
117
|
const reactData = reactive(createReactData())
|
|
112
118
|
|
|
113
119
|
const internalData = createInternalData()
|
|
114
120
|
|
|
121
|
+
const { computeSize } = useFns.useSize(props)
|
|
122
|
+
|
|
115
123
|
const computeWrapperStyle = computed(() => {
|
|
116
124
|
const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
|
|
117
125
|
const barWidth = computeYWidth.value
|
|
@@ -179,6 +187,7 @@ export default defineVxeComponent({
|
|
|
179
187
|
const computeWrapperClss = computed(() => {
|
|
180
188
|
const { native, theme, className, padding } = props
|
|
181
189
|
const { yThumbHeight, xThumbWidth } = reactData
|
|
190
|
+
const vSize = computeSize.value
|
|
182
191
|
const xToTop = computeXToTop.value
|
|
183
192
|
const yToLeft = computeYToLeft.value
|
|
184
193
|
const xVisible = computeXVisible.value
|
|
@@ -187,6 +196,7 @@ export default defineVxeComponent({
|
|
|
187
196
|
const yAutoHide = computeYAutoHide.value
|
|
188
197
|
return domUtils.buildClass([
|
|
189
198
|
'vxe-scrollbar',
|
|
199
|
+
vSize ? `size--${vSize}` : '',
|
|
190
200
|
theme ? `theme--${theme}` : '',
|
|
191
201
|
`ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
|
|
192
202
|
`ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
|
|
@@ -255,17 +265,33 @@ export default defineVxeComponent({
|
|
|
255
265
|
getComputeMaps: () => computeMaps
|
|
256
266
|
} as unknown as VxeScrollbarConstructor & VxeScrollbarPrivateMethods
|
|
257
267
|
|
|
268
|
+
const {
|
|
269
|
+
refTrackXElem,
|
|
270
|
+
refTrackYElem,
|
|
271
|
+
refThumbXElem,
|
|
272
|
+
refThumbYElem,
|
|
273
|
+
updateThumbSize,
|
|
274
|
+
updateThumbOffset,
|
|
275
|
+
clickTrackXEvent,
|
|
276
|
+
clickTrackYEvent,
|
|
277
|
+
pointerdownThumbXEvent,
|
|
278
|
+
pointermoveThumbXEvent,
|
|
279
|
+
cleatPointerThumbEvent,
|
|
280
|
+
pointerdownThumbYEvent,
|
|
281
|
+
pointermoveThumbYEvent
|
|
282
|
+
} = useFns.useInitVScrollbar($xeScrollbar)
|
|
283
|
+
|
|
258
284
|
const dispatchEvent = (type: ValueOf<VxeScrollbarEmits>, params: Record<string, any>, evnt: Event | null) => {
|
|
259
285
|
emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params))
|
|
260
286
|
}
|
|
261
287
|
|
|
262
288
|
const scrollbarMethods: ScrollbarMethods = {
|
|
263
289
|
dispatchEvent,
|
|
264
|
-
|
|
290
|
+
getScrollViewElem () {
|
|
265
291
|
const viewEl = refViewElem.value
|
|
266
292
|
return viewEl || null
|
|
267
293
|
},
|
|
268
|
-
|
|
294
|
+
getScrollViewInnerElem () {
|
|
269
295
|
const viewInnerEl = refViewInnerElem.value
|
|
270
296
|
return viewInnerEl || null
|
|
271
297
|
},
|
|
@@ -325,60 +351,6 @@ export default defineVxeComponent({
|
|
|
325
351
|
}
|
|
326
352
|
}
|
|
327
353
|
|
|
328
|
-
const updateThumbSize = () => {
|
|
329
|
-
const viewEl = refViewElem.value
|
|
330
|
-
if (!viewEl) {
|
|
331
|
-
return
|
|
332
|
-
}
|
|
333
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
334
|
-
return
|
|
335
|
-
}
|
|
336
|
-
const trackXEl = refTrackXElem.value
|
|
337
|
-
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
|
|
338
|
-
const thumbXElem = refThumbXElem.value
|
|
339
|
-
if (thumbXElem) {
|
|
340
|
-
thumbXElem.style.width = xThumbWidth + 'px'
|
|
341
|
-
}
|
|
342
|
-
reactData.xThumbWidth = xThumbWidth
|
|
343
|
-
|
|
344
|
-
const trackYEl = refTrackYElem.value
|
|
345
|
-
|
|
346
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
|
|
347
|
-
const thumbYElem = refThumbYElem.value
|
|
348
|
-
if (thumbYElem) {
|
|
349
|
-
thumbYElem.style.height = yThumbHeight + 'px'
|
|
350
|
-
}
|
|
351
|
-
reactData.yThumbHeight = yThumbHeight
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
const updateThumbOffset = () => {
|
|
355
|
-
const viewEl = refViewElem.value
|
|
356
|
-
if (!viewEl) {
|
|
357
|
-
return
|
|
358
|
-
}
|
|
359
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
360
|
-
return
|
|
361
|
-
}
|
|
362
|
-
const { xThumbWidth, yThumbHeight } = reactData
|
|
363
|
-
const trackXEl = refTrackXElem.value
|
|
364
|
-
const thumbXElem = refThumbXElem.value
|
|
365
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
|
|
366
|
-
internalData.xThumbLeft = xThumbLeft
|
|
367
|
-
if (thumbXElem && xThumbWidth) {
|
|
368
|
-
thumbXElem.style.width = xThumbWidth + 'px'
|
|
369
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
const trackYEl = refTrackYElem.value
|
|
373
|
-
const thumbYElem = refThumbYElem.value
|
|
374
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
|
|
375
|
-
internalData.yThumbTop = yThumbTop
|
|
376
|
-
if (thumbYElem && yThumbHeight) {
|
|
377
|
-
thumbYElem.style.height = yThumbHeight + 'px'
|
|
378
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
|
|
382
354
|
const scrollEvent = (evnt: Event) => {
|
|
383
355
|
const { xThumbWidth, yThumbHeight } = reactData
|
|
384
356
|
const { lastScrollTop, lastScrollLeft } = internalData
|
|
@@ -452,122 +424,6 @@ export default defineVxeComponent({
|
|
|
452
424
|
}, evnt)
|
|
453
425
|
}
|
|
454
426
|
|
|
455
|
-
const clickTrackXEvent = (evnt: MouseEvent) => {
|
|
456
|
-
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
457
|
-
if (trackEl !== evnt.target) {
|
|
458
|
-
return
|
|
459
|
-
}
|
|
460
|
-
const viewEl = refViewElem.value
|
|
461
|
-
if (!viewEl) {
|
|
462
|
-
return
|
|
463
|
-
}
|
|
464
|
-
const { xThumbWidth } = reactData
|
|
465
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
466
|
-
viewEl.scrollTo({
|
|
467
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
468
|
-
behavior: 'auto'
|
|
469
|
-
})
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
const clickTrackYEvent = (evnt: MouseEvent) => {
|
|
473
|
-
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
474
|
-
if (trackEl !== evnt.target) {
|
|
475
|
-
return
|
|
476
|
-
}
|
|
477
|
-
const viewEl = refViewElem.value
|
|
478
|
-
if (!viewEl) {
|
|
479
|
-
return
|
|
480
|
-
}
|
|
481
|
-
const { yThumbHeight } = reactData
|
|
482
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
483
|
-
viewEl.scrollTo({
|
|
484
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
485
|
-
behavior: 'auto'
|
|
486
|
-
})
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
const pointerdownThumbXEvent = (evnt: PointerEvent) => {
|
|
490
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
491
|
-
internalData.isThumbDrag = true
|
|
492
|
-
thumbEl.setPointerCapture(evnt.pointerId)
|
|
493
|
-
|
|
494
|
-
const viewEl = refViewElem.value
|
|
495
|
-
if (!viewEl) {
|
|
496
|
-
return
|
|
497
|
-
}
|
|
498
|
-
const { xThumbWidth } = reactData
|
|
499
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
500
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
501
|
-
const pointerPosition = evnt.clientX - trackRect.left
|
|
502
|
-
// 记录 thumb 的偏移
|
|
503
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
504
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
const pointermoveThumbXEvent = (evnt: PointerEvent) => {
|
|
508
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
509
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
510
|
-
return
|
|
511
|
-
}
|
|
512
|
-
const { isThumbDrag, thumbDragOffset } = internalData
|
|
513
|
-
if (isThumbDrag) {
|
|
514
|
-
const viewEl = refViewElem.value
|
|
515
|
-
if (!viewEl) {
|
|
516
|
-
return
|
|
517
|
-
}
|
|
518
|
-
const { xThumbWidth } = reactData
|
|
519
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
520
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
521
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
522
|
-
// 更新偏移
|
|
523
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
const cleatPointerThumbEvent = (evnt: PointerEvent) => {
|
|
528
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
529
|
-
thumbEl.releasePointerCapture(evnt.pointerId)
|
|
530
|
-
internalData.isThumbDrag = false
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
const pointerdownThumbYEvent = (evnt: PointerEvent) => {
|
|
534
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
535
|
-
internalData.isThumbDrag = true
|
|
536
|
-
thumbEl.setPointerCapture(evnt.pointerId)
|
|
537
|
-
|
|
538
|
-
const viewEl = refViewElem.value
|
|
539
|
-
if (!viewEl) {
|
|
540
|
-
return
|
|
541
|
-
}
|
|
542
|
-
const { yThumbHeight } = reactData
|
|
543
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
544
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
545
|
-
const pointerPosition = evnt.clientY - trackRect.top
|
|
546
|
-
// 记录 thumb 的偏移
|
|
547
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
548
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
549
|
-
}
|
|
550
|
-
|
|
551
|
-
const pointermoveThumbYEvent = (evnt: PointerEvent) => {
|
|
552
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
553
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
554
|
-
return
|
|
555
|
-
}
|
|
556
|
-
const { isThumbDrag, thumbDragOffset } = internalData
|
|
557
|
-
if (isThumbDrag) {
|
|
558
|
-
const viewEl = refViewElem.value
|
|
559
|
-
if (!viewEl) {
|
|
560
|
-
return
|
|
561
|
-
}
|
|
562
|
-
const { yThumbHeight } = reactData
|
|
563
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
564
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
565
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
566
|
-
// 更新偏移
|
|
567
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
|
|
571
427
|
const scrollbarPrivateMethods: ScrollbarPrivateMethods = {
|
|
572
428
|
}
|
|
573
429
|
|
|
@@ -696,31 +552,30 @@ export default defineVxeComponent({
|
|
|
696
552
|
const viewEl = refViewElem.value
|
|
697
553
|
const viewInnerEl = refViewInnerElem.value
|
|
698
554
|
if (autoResize) {
|
|
699
|
-
const
|
|
555
|
+
const scrollObserver = globalResize.create(() => {
|
|
700
556
|
if (props.autoResize) {
|
|
701
557
|
reFlag.value++
|
|
702
558
|
}
|
|
703
559
|
})
|
|
704
560
|
if (viewEl) {
|
|
705
|
-
|
|
561
|
+
scrollObserver.observe(viewEl)
|
|
706
562
|
}
|
|
707
563
|
if (viewInnerEl) {
|
|
708
|
-
|
|
564
|
+
scrollObserver.observe(viewInnerEl)
|
|
709
565
|
}
|
|
710
|
-
internalData.
|
|
566
|
+
internalData.scrollObserver = scrollObserver
|
|
711
567
|
}
|
|
712
568
|
|
|
713
569
|
reFlag.value++
|
|
714
|
-
|
|
715
570
|
globalEvents.on($xeScrollbar, 'resize', () => {
|
|
716
571
|
reFlag.value++
|
|
717
572
|
})
|
|
718
573
|
})
|
|
719
574
|
|
|
720
575
|
onBeforeUnmount(() => {
|
|
721
|
-
const {
|
|
722
|
-
if (
|
|
723
|
-
|
|
576
|
+
const { scrollObserver } = internalData
|
|
577
|
+
if (scrollObserver) {
|
|
578
|
+
scrollObserver.disconnect()
|
|
724
579
|
}
|
|
725
580
|
globalEvents.off($xeScrollbar, 'resize')
|
|
726
581
|
})
|