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,13 +1,13 @@
|
|
|
1
1
|
import { ref, h, reactive, PropType, computed, VNode, watch, onBeforeUnmount, nextTick, onMounted, provide } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
|
-
import { VxeUI, domUtils, createEvent,
|
|
3
|
+
import { VxeUI, domUtils, createEvent, useFns, globalEvents, globalResize, renderEmptyElement } from '../../ui'
|
|
4
4
|
import { calcTreeLine, getItemCacheObj } from './util'
|
|
5
5
|
import { createComponentLog } from '../../ui/src/log'
|
|
6
6
|
import { getCrossTreeDragNodeInfo } from './store'
|
|
7
7
|
import XEUtils from 'xe-utils'
|
|
8
8
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
9
9
|
import { toCssUnit, isScale, getPaddingTopBottomSize, addClass, removeClass, getTpImg, hasControlKey, getEventTargetNode, hasClass } from '../../ui/src/dom'
|
|
10
|
-
import { isEnableConf, enModelValue, deModelValue, getText
|
|
10
|
+
import { isEnableConf, enModelValue, deModelValue, getText } from '../../ui/src/utils'
|
|
11
11
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
|
|
12
12
|
import VxeLoadingComponent from '../../loading'
|
|
13
13
|
import VxeTooltipComponent from '../../tooltip'
|
|
@@ -16,9 +16,8 @@ import type { TreeReactData, VxeTreeEmits, VxeTreePropTypes, TreeInternalData, T
|
|
|
16
16
|
|
|
17
17
|
const { warnLog, errLog } = createComponentLog('tree')
|
|
18
18
|
|
|
19
|
-
const { menus,
|
|
20
|
-
|
|
21
|
-
const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
|
|
19
|
+
const { menus, getConfig, getI18n, getIcon, baseUtils } = VxeUI
|
|
20
|
+
const { getDefVal } = baseUtils
|
|
22
21
|
|
|
23
22
|
/**
|
|
24
23
|
* 生成节点的唯一主键
|
|
@@ -239,7 +238,7 @@ export default defineVxeComponent({
|
|
|
239
238
|
virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig>,
|
|
240
239
|
useScrollbar: {
|
|
241
240
|
type: Boolean as PropType<VxeTreePropTypes.UseScrollbar>,
|
|
242
|
-
default: () =>
|
|
241
|
+
default: () => getDefVal(getConfig().tree.useScrollbar, getConfig().useScrollbar)
|
|
243
242
|
},
|
|
244
243
|
scrollbarConfig: Object as PropType<VxeTreePropTypes.ScrollbarConfig>
|
|
245
244
|
},
|
|
@@ -269,19 +268,13 @@ export default defineVxeComponent({
|
|
|
269
268
|
|
|
270
269
|
const xID = XEUtils.uniqueId()
|
|
271
270
|
|
|
272
|
-
const { computeSize } = useSize(props)
|
|
273
|
-
|
|
274
271
|
const refElem = ref<HTMLDivElement>()
|
|
275
272
|
const refHeaderWrapperElem = ref<HTMLDivElement>()
|
|
276
273
|
const refFooterWrapperElem = ref<HTMLDivElement>()
|
|
277
274
|
const refVirtualWrapper = ref<HTMLDivElement>()
|
|
275
|
+
const refVirtualSpaceElem = ref<HTMLDivElement>()
|
|
278
276
|
const refVirtualBody = ref<HTMLDivElement>()
|
|
279
277
|
|
|
280
|
-
const refTrackXElem = ref<HTMLDivElement>()
|
|
281
|
-
const refTrackYElem = ref<HTMLDivElement>()
|
|
282
|
-
const refThumbXElem = ref<HTMLDivElement>()
|
|
283
|
-
const refThumbYElem = ref<HTMLDivElement>()
|
|
284
|
-
|
|
285
278
|
const refDragNodeLineElem = ref<HTMLDivElement>()
|
|
286
279
|
const refDragTipElem = ref<HTMLDivElement>()
|
|
287
280
|
|
|
@@ -292,6 +285,9 @@ export default defineVxeComponent({
|
|
|
292
285
|
const internalData = createInternalData()
|
|
293
286
|
const reactData = reactive(createReactData())
|
|
294
287
|
|
|
288
|
+
const { computeSize } = useFns.useSize(props)
|
|
289
|
+
const { computeIsVScrollbar } = useFns.useVScrollbar(props)
|
|
290
|
+
|
|
295
291
|
const refMaps: TreePrivateRef = {
|
|
296
292
|
refElem
|
|
297
293
|
}
|
|
@@ -439,37 +435,37 @@ export default defineVxeComponent({
|
|
|
439
435
|
const computeScrollXHeight = computed(() => {
|
|
440
436
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
441
437
|
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
442
|
-
return
|
|
438
|
+
return getDefVal(getDefVal(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
|
|
443
439
|
})
|
|
444
440
|
|
|
445
441
|
const computeScrollYWidth = computed(() => {
|
|
446
442
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
447
443
|
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
448
|
-
return
|
|
444
|
+
return getDefVal(getDefVal(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
|
|
449
445
|
})
|
|
450
446
|
|
|
451
447
|
const computeScrollXVisible = computed(() => {
|
|
452
448
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
453
449
|
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
454
|
-
return
|
|
450
|
+
return getDefVal(scrollbarXOpts.visible, scrollbarOpts.visible)
|
|
455
451
|
})
|
|
456
452
|
|
|
457
453
|
const computeScrollYVisible = computed(() => {
|
|
458
454
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
459
455
|
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
460
|
-
return
|
|
456
|
+
return getDefVal(scrollbarYOpts.visible, scrollbarOpts.visible)
|
|
461
457
|
})
|
|
462
458
|
|
|
463
459
|
const computeScrollXAutoHide = computed(() => {
|
|
464
460
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
465
461
|
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
466
|
-
return
|
|
462
|
+
return getDefVal(getDefVal(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
467
463
|
})
|
|
468
464
|
|
|
469
465
|
const computeScrollYAutoHide = computed(() => {
|
|
470
466
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
471
467
|
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
472
|
-
return
|
|
468
|
+
return getDefVal(getDefVal(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
473
469
|
})
|
|
474
470
|
|
|
475
471
|
const computeScrollbarWrapperClss = computed(() => {
|
|
@@ -522,6 +518,22 @@ export default defineVxeComponent({
|
|
|
522
518
|
getComputeMaps: () => computeMaps
|
|
523
519
|
} as unknown as VxeTreeConstructor & VxeTreePrivateMethods
|
|
524
520
|
|
|
521
|
+
const {
|
|
522
|
+
refTrackXElem,
|
|
523
|
+
refTrackYElem,
|
|
524
|
+
refThumbXElem,
|
|
525
|
+
refThumbYElem,
|
|
526
|
+
updateThumbSize,
|
|
527
|
+
updateThumbOffset,
|
|
528
|
+
clickTrackXEvent,
|
|
529
|
+
clickTrackYEvent,
|
|
530
|
+
pointerdownThumbXEvent,
|
|
531
|
+
pointermoveThumbXEvent,
|
|
532
|
+
cleatPointerThumbEvent,
|
|
533
|
+
pointerdownThumbYEvent,
|
|
534
|
+
pointermoveThumbYEvent
|
|
535
|
+
} = useFns.useInitVScrollbar($xeTree)
|
|
536
|
+
|
|
525
537
|
const getNodeId = (node: any) => {
|
|
526
538
|
if (!node) {
|
|
527
539
|
return ''
|
|
@@ -1046,8 +1058,14 @@ export default defineVxeComponent({
|
|
|
1046
1058
|
}
|
|
1047
1059
|
|
|
1048
1060
|
const updateScrollbar = () => {
|
|
1049
|
-
|
|
1050
|
-
|
|
1061
|
+
const isVScrollbar = computeIsVScrollbar.value
|
|
1062
|
+
if (isVScrollbar) {
|
|
1063
|
+
return nextTick().then(() => {
|
|
1064
|
+
updateThumbSize()
|
|
1065
|
+
updateThumbOffset()
|
|
1066
|
+
})
|
|
1067
|
+
}
|
|
1068
|
+
return Promise.resolve()
|
|
1051
1069
|
}
|
|
1052
1070
|
|
|
1053
1071
|
/**
|
|
@@ -1071,11 +1089,11 @@ export default defineVxeComponent({
|
|
|
1071
1089
|
const parentPaddingSize = getPaddingTopBottomSize(parentEl)
|
|
1072
1090
|
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight)
|
|
1073
1091
|
}
|
|
1074
|
-
updateScrollbar()
|
|
1075
1092
|
updateHeight()
|
|
1076
1093
|
return computeScrollLoad().then(() => {
|
|
1077
1094
|
updateHeight()
|
|
1078
1095
|
updateYSpace()
|
|
1096
|
+
updateScrollbar()
|
|
1079
1097
|
})
|
|
1080
1098
|
}
|
|
1081
1099
|
return nextTick()
|
|
@@ -1102,7 +1120,7 @@ export default defineVxeComponent({
|
|
|
1102
1120
|
}
|
|
1103
1121
|
|
|
1104
1122
|
const scrollEvent = (evnt: Event) => {
|
|
1105
|
-
const scrollBodyElem = evnt.
|
|
1123
|
+
const scrollBodyElem = evnt.currentTarget as HTMLDivElement
|
|
1106
1124
|
const scrollTop = scrollBodyElem.scrollTop
|
|
1107
1125
|
const scrollLeft = scrollBodyElem.scrollLeft
|
|
1108
1126
|
const isX = scrollLeft !== internalData.lastScrollLeft
|
|
@@ -1836,6 +1854,10 @@ export default defineVxeComponent({
|
|
|
1836
1854
|
|
|
1837
1855
|
const treeMethods: TreeMethods = {
|
|
1838
1856
|
dispatchEvent,
|
|
1857
|
+
getScrollViewElem () {
|
|
1858
|
+
const viewEl = refVirtualWrapper.value
|
|
1859
|
+
return viewEl || null
|
|
1860
|
+
},
|
|
1839
1861
|
getNodeId,
|
|
1840
1862
|
getNodeById (nodeid) {
|
|
1841
1863
|
const { nodeMaps } = internalData
|
|
@@ -3113,173 +3135,24 @@ export default defineVxeComponent({
|
|
|
3113
3135
|
}
|
|
3114
3136
|
}
|
|
3115
3137
|
|
|
3116
|
-
const
|
|
3117
|
-
const
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
|
|
3135
|
-
const thumbYElem = refThumbYElem.value
|
|
3136
|
-
if (thumbYElem) {
|
|
3137
|
-
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3138
|
-
}
|
|
3139
|
-
reactData.yThumbHeight = yThumbHeight
|
|
3140
|
-
}
|
|
3141
|
-
|
|
3142
|
-
const updateThumbOffset = () => {
|
|
3143
|
-
const viewEl = refVirtualWrapper.value
|
|
3144
|
-
if (!viewEl) {
|
|
3145
|
-
return
|
|
3146
|
-
}
|
|
3147
|
-
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3148
|
-
return
|
|
3149
|
-
}
|
|
3150
|
-
const { xThumbWidth, yThumbHeight } = reactData
|
|
3151
|
-
const trackXEl = refTrackXElem.value
|
|
3152
|
-
const thumbXElem = refThumbXElem.value
|
|
3153
|
-
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
|
|
3154
|
-
internalData.xThumbLeft = xThumbLeft
|
|
3155
|
-
if (thumbXElem && xThumbWidth) {
|
|
3156
|
-
thumbXElem.style.width = xThumbWidth + 'px'
|
|
3157
|
-
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
|
|
3158
|
-
}
|
|
3159
|
-
|
|
3160
|
-
const trackYEl = refTrackYElem.value
|
|
3161
|
-
const thumbYElem = refThumbYElem.value
|
|
3162
|
-
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
|
|
3163
|
-
internalData.yThumbTop = yThumbTop
|
|
3164
|
-
if (thumbYElem && yThumbHeight) {
|
|
3165
|
-
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3166
|
-
thumbYElem.style.transform = `translateY(${yThumbTop}px)`
|
|
3167
|
-
}
|
|
3168
|
-
}
|
|
3169
|
-
|
|
3170
|
-
const clickTrackXEvent = (evnt: MouseEvent) => {
|
|
3171
|
-
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3172
|
-
if (trackEl !== evnt.target) {
|
|
3173
|
-
return
|
|
3174
|
-
}
|
|
3175
|
-
const viewEl = refVirtualWrapper.value
|
|
3176
|
-
if (!viewEl) {
|
|
3177
|
-
return
|
|
3178
|
-
}
|
|
3179
|
-
const { xThumbWidth } = reactData
|
|
3180
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3181
|
-
viewEl.scrollTo({
|
|
3182
|
-
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
3183
|
-
behavior: 'auto'
|
|
3184
|
-
})
|
|
3185
|
-
}
|
|
3186
|
-
|
|
3187
|
-
const clickTrackYEvent = (evnt: MouseEvent) => {
|
|
3188
|
-
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3189
|
-
if (trackEl !== evnt.target) {
|
|
3190
|
-
return
|
|
3191
|
-
}
|
|
3192
|
-
const viewEl = refVirtualWrapper.value
|
|
3193
|
-
if (!viewEl) {
|
|
3194
|
-
return
|
|
3195
|
-
}
|
|
3196
|
-
const { yThumbHeight } = reactData
|
|
3197
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3198
|
-
viewEl.scrollTo({
|
|
3199
|
-
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
3200
|
-
behavior: 'auto'
|
|
3201
|
-
})
|
|
3202
|
-
}
|
|
3203
|
-
|
|
3204
|
-
const pointerdownThumbXEvent = (evnt: PointerEvent) => {
|
|
3205
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3206
|
-
internalData.isThumbDrag = true
|
|
3207
|
-
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3208
|
-
|
|
3209
|
-
const viewEl = refVirtualWrapper.value
|
|
3210
|
-
if (!viewEl) {
|
|
3211
|
-
return
|
|
3212
|
-
}
|
|
3213
|
-
const { xThumbWidth } = reactData
|
|
3214
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3215
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3216
|
-
const pointerPosition = evnt.clientX - trackRect.left
|
|
3217
|
-
// 记录 thumb 的偏移
|
|
3218
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3219
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3220
|
-
}
|
|
3221
|
-
|
|
3222
|
-
const pointermoveThumbXEvent = (evnt: PointerEvent) => {
|
|
3223
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3224
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3225
|
-
return
|
|
3226
|
-
}
|
|
3227
|
-
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3228
|
-
if (isThumbDrag) {
|
|
3229
|
-
const viewEl = refVirtualWrapper.value
|
|
3230
|
-
if (!viewEl) {
|
|
3231
|
-
return
|
|
3232
|
-
}
|
|
3233
|
-
const { xThumbWidth } = reactData
|
|
3234
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3235
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3236
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3237
|
-
// 更新偏移
|
|
3238
|
-
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3239
|
-
}
|
|
3240
|
-
}
|
|
3241
|
-
|
|
3242
|
-
const cleatPointerThumbEvent = (evnt: PointerEvent) => {
|
|
3243
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3244
|
-
thumbEl.releasePointerCapture(evnt.pointerId)
|
|
3245
|
-
internalData.isThumbDrag = false
|
|
3246
|
-
}
|
|
3247
|
-
|
|
3248
|
-
const pointerdownThumbYEvent = (evnt: PointerEvent) => {
|
|
3249
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3250
|
-
internalData.isThumbDrag = true
|
|
3251
|
-
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3252
|
-
|
|
3253
|
-
const viewEl = refVirtualWrapper.value
|
|
3254
|
-
if (!viewEl) {
|
|
3255
|
-
return
|
|
3256
|
-
}
|
|
3257
|
-
const { yThumbHeight } = reactData
|
|
3258
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3259
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3260
|
-
const pointerPosition = evnt.clientY - trackRect.top
|
|
3261
|
-
// 记录 thumb 的偏移
|
|
3262
|
-
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3263
|
-
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3264
|
-
}
|
|
3265
|
-
|
|
3266
|
-
const pointermoveThumbYEvent = (evnt: PointerEvent) => {
|
|
3267
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3268
|
-
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3269
|
-
return
|
|
3270
|
-
}
|
|
3271
|
-
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3272
|
-
if (isThumbDrag) {
|
|
3273
|
-
const viewEl = refVirtualWrapper.value
|
|
3274
|
-
if (!viewEl) {
|
|
3275
|
-
return
|
|
3138
|
+
const bindScrollbarResize = () => {
|
|
3139
|
+
const isVScrollbar = computeIsVScrollbar.value
|
|
3140
|
+
const { scrollObserver } = internalData
|
|
3141
|
+
if (isVScrollbar) {
|
|
3142
|
+
if (!scrollObserver) {
|
|
3143
|
+
const el = refElem.value
|
|
3144
|
+
const viewInnerEl = refVirtualSpaceElem.value
|
|
3145
|
+
const scrollObserver = globalResize.create(() => {
|
|
3146
|
+
reScrollFlag.value++
|
|
3147
|
+
})
|
|
3148
|
+
if (el) {
|
|
3149
|
+
scrollObserver.observe(el)
|
|
3150
|
+
}
|
|
3151
|
+
if (viewInnerEl) {
|
|
3152
|
+
scrollObserver.observe(viewInnerEl)
|
|
3153
|
+
}
|
|
3154
|
+
internalData.scrollObserver = scrollObserver
|
|
3276
3155
|
}
|
|
3277
|
-
const { yThumbHeight } = reactData
|
|
3278
|
-
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3279
|
-
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3280
|
-
const trackRect = trackEl.getBoundingClientRect()
|
|
3281
|
-
// 更新偏移
|
|
3282
|
-
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3283
3156
|
}
|
|
3284
3157
|
}
|
|
3285
3158
|
|
|
@@ -3627,9 +3500,10 @@ export default defineVxeComponent({
|
|
|
3627
3500
|
}
|
|
3628
3501
|
|
|
3629
3502
|
const renderVN = () => {
|
|
3630
|
-
const { loading, trigger, showLine
|
|
3503
|
+
const { loading, trigger, showLine } = props
|
|
3631
3504
|
const { bodyHeight, topSpaceHeight, treeList, tooltipStore, xThumbWidth, yThumbHeight } = reactData
|
|
3632
3505
|
const vSize = computeSize.value
|
|
3506
|
+
const isVScrollbar = computeIsVScrollbar.value
|
|
3633
3507
|
const radioOpts = computeRadioOpts.value
|
|
3634
3508
|
const checkboxOpts = computeCheckboxOpts.value
|
|
3635
3509
|
const loadingOpts = computeLoadingOpts.value
|
|
@@ -3661,17 +3535,17 @@ export default defineVxeComponent({
|
|
|
3661
3535
|
ref: refElem,
|
|
3662
3536
|
class: [
|
|
3663
3537
|
'vxe-tree',
|
|
3664
|
-
|
|
3665
|
-
|
|
3666
|
-
|
|
3667
|
-
|
|
3538
|
+
isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
3539
|
+
isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
3540
|
+
isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
3541
|
+
isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
3668
3542
|
{
|
|
3669
3543
|
[`size--${vSize}`]: vSize,
|
|
3670
3544
|
'show--line': showLine,
|
|
3671
|
-
'is--virtual-scrollbar':
|
|
3672
|
-
'ov-padding':
|
|
3673
|
-
'ov-x--auto-hide':
|
|
3674
|
-
'ov-y--auto-hide':
|
|
3545
|
+
'is--virtual-scrollbar': isVScrollbar,
|
|
3546
|
+
'ov-padding': isVScrollbar && scrollbarOpts.padding,
|
|
3547
|
+
'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
|
|
3548
|
+
'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
|
|
3675
3549
|
'overflow-y': yThumbHeight,
|
|
3676
3550
|
'overflow-x': xThumbWidth,
|
|
3677
3551
|
'checkbox--highlight': checkboxOpts.highlight,
|
|
@@ -3697,6 +3571,7 @@ export default defineVxeComponent({
|
|
|
3697
3571
|
onScroll: scrollEvent
|
|
3698
3572
|
}, [
|
|
3699
3573
|
h('div', {
|
|
3574
|
+
ref: refVirtualSpaceElem,
|
|
3700
3575
|
class: 'vxe-tree--y-space',
|
|
3701
3576
|
style: {
|
|
3702
3577
|
height: bodyHeight ? `${bodyHeight}px` : ''
|
|
@@ -3719,7 +3594,7 @@ export default defineVxeComponent({
|
|
|
3719
3594
|
/**
|
|
3720
3595
|
* 滚动条
|
|
3721
3596
|
*/
|
|
3722
|
-
|
|
3597
|
+
isVScrollbar
|
|
3723
3598
|
? h('div', {
|
|
3724
3599
|
class: scrollbarWrapperClss
|
|
3725
3600
|
}, [
|
|
@@ -3847,43 +3722,55 @@ export default defineVxeComponent({
|
|
|
3847
3722
|
triggerSearchEvent(new Event('filter'))
|
|
3848
3723
|
})
|
|
3849
3724
|
|
|
3850
|
-
const
|
|
3725
|
+
const reScrollFlag = ref(0)
|
|
3726
|
+
const reLayoutFlag = ref(0)
|
|
3851
3727
|
watch(() => props.height, () => {
|
|
3852
|
-
|
|
3728
|
+
reLayoutFlag.value++
|
|
3853
3729
|
})
|
|
3854
3730
|
watch(() => props.minHeight, () => {
|
|
3855
|
-
|
|
3731
|
+
reLayoutFlag.value++
|
|
3856
3732
|
})
|
|
3857
3733
|
watch(() => props.maxHeight, () => {
|
|
3858
|
-
|
|
3734
|
+
reLayoutFlag.value++
|
|
3859
3735
|
})
|
|
3860
|
-
watch(
|
|
3861
|
-
|
|
3736
|
+
watch(computeIsVScrollbar, () => {
|
|
3737
|
+
nextTick(() => {
|
|
3738
|
+
bindScrollbarResize()
|
|
3739
|
+
nextTick(() => {
|
|
3740
|
+
reLayoutFlag.value++
|
|
3741
|
+
})
|
|
3742
|
+
})
|
|
3862
3743
|
})
|
|
3863
3744
|
watch(computeScrollYWidth, () => {
|
|
3864
|
-
|
|
3745
|
+
reLayoutFlag.value++
|
|
3865
3746
|
})
|
|
3866
3747
|
watch(computeScrollXHeight, () => {
|
|
3867
|
-
|
|
3748
|
+
reLayoutFlag.value++
|
|
3868
3749
|
})
|
|
3869
3750
|
watch(computeScrollXVisible, () => {
|
|
3870
3751
|
nextTick(() => {
|
|
3871
|
-
|
|
3752
|
+
reLayoutFlag.value++
|
|
3872
3753
|
})
|
|
3873
3754
|
})
|
|
3874
3755
|
watch(computeScrollYVisible, () => {
|
|
3875
3756
|
nextTick(() => {
|
|
3876
|
-
|
|
3757
|
+
reLayoutFlag.value++
|
|
3877
3758
|
})
|
|
3878
3759
|
})
|
|
3879
|
-
watch(
|
|
3760
|
+
watch(reLayoutFlag, () => {
|
|
3880
3761
|
recalculate().then(() => {
|
|
3881
3762
|
recalculate()
|
|
3882
3763
|
})
|
|
3883
3764
|
})
|
|
3884
3765
|
|
|
3766
|
+
watch(reScrollFlag, () => {
|
|
3767
|
+
updateScrollbar().then(() => {
|
|
3768
|
+
updateScrollbar()
|
|
3769
|
+
})
|
|
3770
|
+
})
|
|
3771
|
+
|
|
3885
3772
|
onMounted(() => {
|
|
3886
|
-
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize
|
|
3773
|
+
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize } = props
|
|
3887
3774
|
const dragOpts = computeDragOpts.value
|
|
3888
3775
|
if (!showOverflow) {
|
|
3889
3776
|
errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true'])
|
|
@@ -3904,25 +3791,12 @@ export default defineVxeComponent({
|
|
|
3904
3791
|
if (menuConfig && !VxeUIContextMenu) {
|
|
3905
3792
|
errLog('vxe.error.reqComp', ['vxe-context-menu'])
|
|
3906
3793
|
}
|
|
3907
|
-
const el = refElem.value
|
|
3908
|
-
if (useScrollbar || autoResize) {
|
|
3909
|
-
const viewInnerEl = refVirtualBody.value
|
|
3910
|
-
const scrollObserver = globalResize.create(() => {
|
|
3911
|
-
updateScrollbar()
|
|
3912
|
-
})
|
|
3913
|
-
if (el) {
|
|
3914
|
-
scrollObserver.observe(el)
|
|
3915
|
-
}
|
|
3916
|
-
if (viewInnerEl) {
|
|
3917
|
-
scrollObserver.observe(viewInnerEl)
|
|
3918
|
-
}
|
|
3919
|
-
internalData.scrollObserver = scrollObserver
|
|
3920
|
-
}
|
|
3921
3794
|
if (autoResize) {
|
|
3795
|
+
const el = refElem.value
|
|
3922
3796
|
const parentEl = getParentElem()
|
|
3923
3797
|
const resizeObserver = globalResize.create(() => {
|
|
3924
3798
|
if (props.autoResize) {
|
|
3925
|
-
|
|
3799
|
+
reLayoutFlag.value++
|
|
3926
3800
|
}
|
|
3927
3801
|
})
|
|
3928
3802
|
if (el) {
|
|
@@ -3934,9 +3808,10 @@ export default defineVxeComponent({
|
|
|
3934
3808
|
internalData.resizeObserver = resizeObserver
|
|
3935
3809
|
}
|
|
3936
3810
|
|
|
3937
|
-
|
|
3811
|
+
reLayoutFlag.value++
|
|
3812
|
+
bindScrollbarResize()
|
|
3938
3813
|
globalEvents.on($xeTree, 'resize', () => {
|
|
3939
|
-
|
|
3814
|
+
reLayoutFlag.value++
|
|
3940
3815
|
})
|
|
3941
3816
|
})
|
|
3942
3817
|
|
|
@@ -434,41 +434,22 @@
|
|
|
434
434
|
flex-grow: 1;
|
|
435
435
|
border-radius: var(--vxe-ui-base-border-radius);
|
|
436
436
|
user-select: none;
|
|
437
|
-
|
|
437
|
+
.vxe-date-panel--time-hour-list,
|
|
438
|
+
.vxe-date-panel--time-minute-list,
|
|
439
|
+
.vxe-date-panel--time-second-list {
|
|
438
440
|
height: 100%;
|
|
439
441
|
overflow: hidden;
|
|
440
442
|
margin: 0;
|
|
441
443
|
padding: 0;
|
|
442
|
-
width:
|
|
444
|
+
width: 3em;
|
|
445
|
+
}
|
|
446
|
+
.vxe-date-panel--time-list-inner {
|
|
443
447
|
&:before,
|
|
444
448
|
&:after {
|
|
445
449
|
content: " ";
|
|
446
450
|
display: block;
|
|
447
451
|
height: 6em;
|
|
448
452
|
}
|
|
449
|
-
&:hover {
|
|
450
|
-
overflow-y: auto;
|
|
451
|
-
}
|
|
452
|
-
& > li {
|
|
453
|
-
display: block;
|
|
454
|
-
height: 2em;
|
|
455
|
-
line-height: 2em;
|
|
456
|
-
padding-left: 0.4em;
|
|
457
|
-
&:not(.is--disabled) {
|
|
458
|
-
&:hover {
|
|
459
|
-
background-color: var(--vxe-ui-input-date-picker-hover-background-color);
|
|
460
|
-
cursor: pointer;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
&.is--selected {
|
|
464
|
-
font-weight: 700;
|
|
465
|
-
color: var(--vxe-ui-font-primary-color);
|
|
466
|
-
}
|
|
467
|
-
&.is--disabled {
|
|
468
|
-
color: var(--vxe-ui-font-disabled-color);
|
|
469
|
-
cursor: no-drop;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
453
|
}
|
|
473
454
|
.vxe-date-panel--time-minute-list {
|
|
474
455
|
border-left: 1px solid var(--vxe-ui-base-popup-border-color);
|
|
@@ -476,16 +457,37 @@
|
|
|
476
457
|
.vxe-date-panel--time-second-list {
|
|
477
458
|
border-left: 1px solid var(--vxe-ui-base-popup-border-color);
|
|
478
459
|
}
|
|
460
|
+
.vxe-date-panel--time-item {
|
|
461
|
+
display: block;
|
|
462
|
+
height: 2em;
|
|
463
|
+
line-height: 2em;
|
|
464
|
+
text-align: center;
|
|
465
|
+
&:not(.is--disabled) {
|
|
466
|
+
&:hover {
|
|
467
|
+
background-color: var(--vxe-ui-input-date-picker-hover-background-color);
|
|
468
|
+
cursor: pointer;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
&.is--selected {
|
|
472
|
+
font-weight: 700;
|
|
473
|
+
color: var(--vxe-ui-font-primary-color);
|
|
474
|
+
}
|
|
475
|
+
&.is--disabled {
|
|
476
|
+
color: var(--vxe-ui-font-disabled-color);
|
|
477
|
+
cursor: no-drop;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
479
480
|
}
|
|
480
481
|
.vxe-date-panel {
|
|
481
482
|
&.type--time {
|
|
482
483
|
.vxe-date-panel--time-body {
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
484
|
+
.vxe-date-panel--time-hour-list,
|
|
485
|
+
.vxe-date-panel--time-minute-list,
|
|
486
|
+
.vxe-date-panel--time-second-list {
|
|
487
|
+
width: 3.6em;
|
|
488
|
+
.vxe-date-panel--time-item {
|
|
486
489
|
height: 2.2em;
|
|
487
490
|
line-height: 2.2em;
|
|
488
|
-
padding-left: 0.8em;
|
|
489
491
|
}
|
|
490
492
|
}
|
|
491
493
|
}
|
|
@@ -122,14 +122,20 @@
|
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
-
.vxe-ico-picker--list-wrapper
|
|
125
|
+
.vxe-ico-picker--list-wrapper,
|
|
126
|
+
.vxe-ico-picker--scrollbar-list-wrapper {
|
|
126
127
|
overflow-x: hidden;
|
|
127
128
|
overflow-y: auto;
|
|
128
129
|
height: var(--vxe-ui-icon-picker-panel-height);
|
|
129
|
-
max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.3em));
|
|
130
130
|
padding: var(--vxe-ui-layout-padding-qtr);
|
|
131
131
|
}
|
|
132
|
-
.vxe-ico-picker--list
|
|
132
|
+
.vxe-ico-picker--list-wrapper,
|
|
133
|
+
.vxe-ico-picker--scrollbar-list-wrapper-view {
|
|
134
|
+
max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.6em));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.vxe-ico-picker--list,
|
|
138
|
+
.vxe-ico-picker--scrollbar-list-wrapper-inner {
|
|
133
139
|
display: flex;
|
|
134
140
|
flex-direction: row;
|
|
135
141
|
flex-wrap: wrap;
|