vxe-pc-ui 4.20.0 → 4.20.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/dist/all.esm.js +780 -173
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +19 -4
- package/es/drawer/src/drawer.js +59 -15
- package/es/drawer/style.css +13 -6
- package/es/drawer/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/language/fr-FR.js +29 -29
- package/es/layout-aside/src/layout-aside.js +10 -6
- package/es/layout-body/src/layout-body.js +21 -12
- package/es/list/src/list.js +118 -49
- package/es/list/style.css +25 -8
- package/es/list/style.min.css +1 -1
- package/es/menu/src/menu.js +2 -2
- package/es/modal/src/modal.js +56 -12
- package/es/modal/style.css +15 -4
- package/es/modal/style.min.css +1 -1
- package/es/scrollbar/src/scrollbar.js +73 -19
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +21 -6
- package/es/tree/src/tree.js +410 -53
- package/es/tree/style.css +43 -0
- package/es/tree/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +3 -0
- package/es/vxe-drawer/style.css +13 -6
- package/es/vxe-drawer/style.min.css +1 -1
- package/es/vxe-list/style.css +25 -8
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-modal/style.css +15 -4
- package/es/vxe-modal/style.min.css +1 -1
- package/es/vxe-tree/style.css +43 -0
- package/es/vxe-tree/style.min.css +1 -1
- package/lib/card/src/card.js +19 -4
- package/lib/card/src/card.min.js +1 -1
- package/lib/drawer/src/drawer.js +64 -11
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/drawer/style/style.css +13 -6
- package/lib/drawer/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +887 -183
- package/lib/index.umd.min.js +1 -1
- package/lib/language/fr-FR.js +29 -29
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +29 -29
- package/lib/layout-aside/src/layout-aside.js +9 -8
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +29 -22
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/list/src/list.js +110 -47
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/style/style.css +25 -8
- package/lib/list/style/style.min.css +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 +61 -10
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/modal/style/style.css +15 -4
- package/lib/modal/style/style.min.css +1 -1
- package/lib/scrollbar/src/scrollbar.js +81 -17
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +23 -11
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tree/src/tree.js +412 -50
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/style/style.css +43 -0
- package/lib/tree/style/style.min.css +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/ui/src/utils.js +4 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-drawer/style/style.css +13 -6
- package/lib/vxe-drawer/style/style.min.css +1 -1
- package/lib/vxe-list/style/style.css +25 -8
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-modal/style/style.css +15 -4
- package/lib/vxe-modal/style/style.min.css +1 -1
- package/lib/vxe-tree/style/style.css +43 -0
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/card/src/card.ts +20 -4
- package/packages/drawer/src/drawer.ts +73 -16
- package/packages/language/fr-FR.ts +903 -903
- package/packages/layout-aside/src/layout-aside.ts +10 -6
- package/packages/layout-body/src/layout-body.ts +25 -15
- package/packages/list/src/list.ts +130 -55
- package/packages/menu/src/menu.ts +2 -2
- package/packages/modal/src/modal.ts +71 -14
- package/packages/scrollbar/src/scrollbar.ts +79 -18
- package/packages/tabs/src/tabs.ts +21 -7
- package/packages/tree/src/tree.ts +452 -62
- package/packages/ui/src/utils.ts +4 -0
- package/styles/components/drawer.scss +13 -6
- package/styles/components/list.scss +35 -10
- package/styles/components/modal.scss +12 -4
- package/styles/components/tree.scss +76 -0
- package/types/components/card.d.ts +10 -1
- package/types/components/drawer.d.ts +20 -0
- package/types/components/gantt-module/gantt-view.d.ts +24 -1
- package/types/components/gantt.d.ts +2 -0
- package/types/components/layout-aside.d.ts +10 -1
- package/types/components/layout-body.d.ts +10 -1
- package/types/components/list.d.ts +13 -2
- package/types/components/modal.d.ts +20 -0
- package/types/components/scrollbar.d.ts +17 -2
- package/types/components/table.d.ts +80 -6
- package/types/components/tabs.d.ts +10 -1
- package/types/components/tree.d.ts +35 -2
- /package/es/icon/{iconfont.1791880413927.ttf → iconfont.1792034967421.ttf} +0 -0
- /package/es/icon/{iconfont.1791880413927.woff → iconfont.1792034967421.woff} +0 -0
- /package/es/icon/{iconfont.1791880413927.woff2 → iconfont.1792034967421.woff2} +0 -0
- /package/es/{iconfont.1791880413927.ttf → iconfont.1792034967421.ttf} +0 -0
- /package/es/{iconfont.1791880413927.woff → iconfont.1792034967421.woff} +0 -0
- /package/es/{iconfont.1791880413927.woff2 → iconfont.1792034967421.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.ttf → iconfont.1792034967421.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.woff → iconfont.1792034967421.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.woff2 → iconfont.1792034967421.woff2} +0 -0
- /package/lib/{iconfont.1791880413927.ttf → iconfont.1792034967421.ttf} +0 -0
- /package/lib/{iconfont.1791880413927.woff → iconfont.1792034967421.woff} +0 -0
- /package/lib/{iconfont.1791880413927.woff2 → iconfont.1792034967421.woff2} +0 -0
|
@@ -2,6 +2,7 @@ import { ref, h, reactive, computed, provide, PropType } from 'vue'
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import { toCssUnit } from '../../ui/src/dom'
|
|
4
4
|
import { getConfig, useSize, createEvent } from '../../ui'
|
|
5
|
+
import { getDefaultConfig } from '../../ui/src/utils'
|
|
5
6
|
import XEUtils from 'xe-utils'
|
|
6
7
|
import VxeLoadingComponent from '../../loading'
|
|
7
8
|
import VxeScrollbarComponent from '../../scrollbar'
|
|
@@ -19,7 +20,7 @@ export default defineVxeComponent({
|
|
|
19
20
|
collapseConfig: Object as PropType<VxeLayoutAsidePropTypes.CollapseConfig>,
|
|
20
21
|
useScrollbar: {
|
|
21
22
|
type: Boolean as PropType<VxeLayoutAsidePropTypes.UseScrollbar>,
|
|
22
|
-
default: () => getConfig().layoutAside.useScrollbar
|
|
23
|
+
default: () => getDefaultConfig(getConfig().layoutAside.useScrollbar, getConfig().useScrollbar)
|
|
23
24
|
},
|
|
24
25
|
scrollbarConfig: Object as PropType<VxeLayoutAsidePropTypes.ScrollbarConfig>,
|
|
25
26
|
size: {
|
|
@@ -97,7 +98,7 @@ export default defineVxeComponent({
|
|
|
97
98
|
const vSize = computeSize.value
|
|
98
99
|
const collapseOpts = computeCollapseOpts.value
|
|
99
100
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
100
|
-
const {
|
|
101
|
+
const { className, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
101
102
|
const defaultSlot = slots.default
|
|
102
103
|
|
|
103
104
|
return h('aside', {
|
|
@@ -113,13 +114,16 @@ export default defineVxeComponent({
|
|
|
113
114
|
}, [
|
|
114
115
|
useScrollbar
|
|
115
116
|
? h(VxeScrollbarComponent, {
|
|
116
|
-
|
|
117
|
+
width: scrollbarOpts.width,
|
|
118
|
+
height: scrollbarOpts.height,
|
|
119
|
+
autoHide: scrollbarOpts.autoHide,
|
|
120
|
+
visible: scrollbarOpts.visible,
|
|
117
121
|
xConfig: {
|
|
118
|
-
visible:
|
|
122
|
+
visible: false
|
|
119
123
|
},
|
|
120
|
-
yConfig,
|
|
124
|
+
yConfig: scrollbarOpts.yConfig,
|
|
121
125
|
className: 'vxe-layout-aside--scrollbar' + (className ? (' ' + className) : ''),
|
|
122
|
-
viewAttrs,
|
|
126
|
+
viewAttrs: scrollbarOpts.viewAttrs,
|
|
123
127
|
viewClassName: 'vxe-layout-aside--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
124
128
|
viewInnerClassName: 'vxe-layout-aside--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
|
|
125
129
|
}, {
|
|
@@ -2,6 +2,7 @@ import { ref, h, reactive, PropType, computed } from 'vue'
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import { getConfig, useSize, createEvent, renderEmptyElement } from '../../ui'
|
|
4
4
|
import XEUtils from 'xe-utils'
|
|
5
|
+
import { getDefaultConfig } from '../../ui/src/utils'
|
|
5
6
|
import VxeLoadingComponent from '../../loading'
|
|
6
7
|
import VxeScrollbarComponent from '../../scrollbar'
|
|
7
8
|
import VxeUIBacktopComponent from '../../backtop'
|
|
@@ -28,7 +29,7 @@ export default defineVxeComponent({
|
|
|
28
29
|
backtopConfig: Object as PropType<VxeLayoutBodyPropTypes.BacktopConfig>,
|
|
29
30
|
useScrollbar: {
|
|
30
31
|
type: Boolean as PropType<VxeLayoutBodyPropTypes.UseScrollbar>,
|
|
31
|
-
default: () => getConfig().layoutBody.useScrollbar
|
|
32
|
+
default: () => getDefaultConfig(getConfig().layoutBody.useScrollbar, getConfig().useScrollbar)
|
|
32
33
|
},
|
|
33
34
|
scrollbarConfig: Object as PropType<VxeLayoutBodyPropTypes.ScrollbarConfig>,
|
|
34
35
|
size: {
|
|
@@ -64,6 +65,27 @@ export default defineVxeComponent({
|
|
|
64
65
|
return Object.assign({}, getConfig().layoutBody.scrollbarConfig, props.scrollbarConfig)
|
|
65
66
|
})
|
|
66
67
|
|
|
68
|
+
const computeScrollbarProps = computed(() => {
|
|
69
|
+
const { showBacktop } = props
|
|
70
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
71
|
+
const { className, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
72
|
+
return {
|
|
73
|
+
width: scrollbarOpts.width,
|
|
74
|
+
height: scrollbarOpts.height,
|
|
75
|
+
autoHide: scrollbarOpts.autoHide,
|
|
76
|
+
visible: scrollbarOpts.visible,
|
|
77
|
+
xConfig: scrollbarOpts.xConfig,
|
|
78
|
+
yConfig: scrollbarOpts.yConfig,
|
|
79
|
+
className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
|
|
80
|
+
viewAttrs: {
|
|
81
|
+
...scrollbarOpts.viewAttrs,
|
|
82
|
+
id: showBacktop ? (backtopId || null) : null
|
|
83
|
+
},
|
|
84
|
+
viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
85
|
+
viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
|
|
67
89
|
const computeMaps: VxeLayoutBodyPrivateComputed = {
|
|
68
90
|
computeSize
|
|
69
91
|
}
|
|
@@ -95,8 +117,7 @@ export default defineVxeComponent({
|
|
|
95
117
|
const renderVN = () => {
|
|
96
118
|
const { loading, padding, showBacktop, useScrollbar } = props
|
|
97
119
|
const backtopOpts = computeBacktopOpts.value
|
|
98
|
-
const
|
|
99
|
-
const { native, xConfig, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
120
|
+
const scrollbarProps = computeScrollbarProps.value
|
|
100
121
|
const vSize = computeSize.value
|
|
101
122
|
const defaultSlot = slots.default
|
|
102
123
|
const backtopSlot = slots.backtop
|
|
@@ -125,18 +146,7 @@ export default defineVxeComponent({
|
|
|
125
146
|
}]
|
|
126
147
|
}, [
|
|
127
148
|
useScrollbar
|
|
128
|
-
? h(VxeScrollbarComponent, {
|
|
129
|
-
native,
|
|
130
|
-
xConfig,
|
|
131
|
-
yConfig,
|
|
132
|
-
className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
|
|
133
|
-
viewAttrs: {
|
|
134
|
-
...viewAttrs,
|
|
135
|
-
id: showBacktop ? (backtopId || null) : null
|
|
136
|
-
},
|
|
137
|
-
viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
138
|
-
viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
|
|
139
|
-
}, {
|
|
149
|
+
? h(VxeScrollbarComponent, scrollbarProps, {
|
|
140
150
|
default: () => defaultSlot ? defaultSlot({}) : []
|
|
141
151
|
})
|
|
142
152
|
: h('div', {
|
|
@@ -4,7 +4,7 @@ import XEUtils from 'xe-utils'
|
|
|
4
4
|
import { VxeUI, getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize, useSize, createEvent, renderEmptyElement } from '../../ui'
|
|
5
5
|
import { getCrossListDragRowInfo } from './store'
|
|
6
6
|
import { isScale, removeClass, addClass, getTpImg, toCssUnit, hasClass } from '../../ui/src/dom'
|
|
7
|
-
import { isEnableConf, getText, enModelValue, deModelValue } from '../../ui/src/utils'
|
|
7
|
+
import { isEnableConf, getText, enModelValue, deModelValue, getDefaultConfig } from '../../ui/src/utils'
|
|
8
8
|
import { createComponentLog } from '../../ui/src/log'
|
|
9
9
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
|
|
10
10
|
import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from '../../scrollbar/src/util'
|
|
@@ -63,8 +63,10 @@ function createInternalData (): ListInternalData {
|
|
|
63
63
|
fullKeyMaps: {},
|
|
64
64
|
rowMaps: {},
|
|
65
65
|
|
|
66
|
-
// 滚动条
|
|
67
66
|
// resizeObserver: undefined,
|
|
67
|
+
|
|
68
|
+
// 滚动条
|
|
69
|
+
// scrollObserver: undefined,
|
|
68
70
|
// isThumbDrag: false,
|
|
69
71
|
thumbDragOffset: 0,
|
|
70
72
|
yThumbTop: 0,
|
|
@@ -133,7 +135,7 @@ export default defineVxeComponent({
|
|
|
133
135
|
scrollY: Object as PropType<VxeListPropTypes.ScrollY>,
|
|
134
136
|
useScrollbar: {
|
|
135
137
|
type: Boolean as PropType<VxeListPropTypes.UseScrollbar>,
|
|
136
|
-
default: () => getConfig().list.useScrollbar
|
|
138
|
+
default: () => getDefaultConfig(getConfig().list.useScrollbar, getConfig().useScrollbar)
|
|
137
139
|
},
|
|
138
140
|
scrollbarConfig: Object as PropType<VxeListPropTypes.ScrollbarConfig>
|
|
139
141
|
},
|
|
@@ -176,7 +178,6 @@ export default defineVxeComponent({
|
|
|
176
178
|
const refVirtualWrapper = ref() as Ref<HTMLDivElement>
|
|
177
179
|
const refVirtualBody = ref() as Ref<HTMLDivElement>
|
|
178
180
|
|
|
179
|
-
const refViewInnerElem = ref<HTMLDivElement>()
|
|
180
181
|
const refTrackXElem = ref<HTMLDivElement>()
|
|
181
182
|
const refTrackYElem = ref<HTMLDivElement>()
|
|
182
183
|
const refThumbXElem = ref<HTMLDivElement>()
|
|
@@ -242,17 +243,15 @@ export default defineVxeComponent({
|
|
|
242
243
|
|
|
243
244
|
const computeWrapperStyles = computed(() => {
|
|
244
245
|
const rowHeight = computeRowHeight.value
|
|
245
|
-
const
|
|
246
|
-
const
|
|
246
|
+
const barWidth = computeScrollYWidth.value
|
|
247
|
+
const barHeight = computeScrollXHeight.value
|
|
247
248
|
const stys: VxeComponentStyleType = {}
|
|
248
249
|
if (rowHeight) {
|
|
249
250
|
stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight)
|
|
250
251
|
}
|
|
251
|
-
if (
|
|
252
|
-
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(
|
|
253
|
-
|
|
254
|
-
if (scrollbarXOpts.height) {
|
|
255
|
-
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(scrollbarXOpts.height)
|
|
252
|
+
if (barWidth || barHeight) {
|
|
253
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
|
|
254
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
|
|
256
255
|
}
|
|
257
256
|
return stys
|
|
258
257
|
})
|
|
@@ -284,24 +283,55 @@ export default defineVxeComponent({
|
|
|
284
283
|
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
|
|
285
284
|
})
|
|
286
285
|
|
|
287
|
-
const
|
|
286
|
+
const computeScrollXHeight = computed(() => {
|
|
287
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
288
|
+
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
289
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
|
|
290
|
+
})
|
|
291
|
+
|
|
292
|
+
const computeScrollYWidth = computed(() => {
|
|
293
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
294
|
+
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
295
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
|
|
296
|
+
})
|
|
297
|
+
|
|
298
|
+
const computeScrollXVisible = computed(() => {
|
|
299
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
300
|
+
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
301
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
|
|
302
|
+
})
|
|
303
|
+
|
|
304
|
+
const computeScrollYVisible = computed(() => {
|
|
305
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
306
|
+
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
307
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
|
|
308
|
+
})
|
|
309
|
+
|
|
310
|
+
const computeScrollXAutoHide = computed(() => {
|
|
288
311
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
289
|
-
const { padding } = scrollbarOpts
|
|
290
|
-
const { yThumbHeight, xThumbWidth } = reactData
|
|
291
312
|
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
313
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
const computeScrollYAutoHide = computed(() => {
|
|
317
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
292
318
|
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
319
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
320
|
+
})
|
|
321
|
+
|
|
322
|
+
const computeScrollbarWrapperClss = computed(() => {
|
|
323
|
+
const { yThumbHeight, xThumbWidth } = reactData
|
|
293
324
|
const scrollbarXToTop = computeScrollbarXToTop.value
|
|
294
325
|
const scrollbarYToLeft = computeScrollbarYToLeft.value
|
|
326
|
+
const scrollXVisible = computeScrollXVisible.value
|
|
327
|
+
const scrollYVisible = computeScrollYVisible.value
|
|
295
328
|
return domUtils.buildClass([
|
|
296
329
|
'vxe-scrollbar is--virtual',
|
|
297
|
-
`ov-x--${
|
|
298
|
-
`ov-y--${
|
|
330
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
331
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
299
332
|
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
300
333
|
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
301
334
|
], {
|
|
302
|
-
'is--padding': padding,
|
|
303
|
-
'ov-x--auto-hide': scrollbarXOpts.autoHide,
|
|
304
|
-
'ov-y--auto-hide': scrollbarYOpts.autoHide,
|
|
305
335
|
'overflow-y': yThumbHeight,
|
|
306
336
|
'overflow-x': xThumbWidth
|
|
307
337
|
})
|
|
@@ -334,6 +364,11 @@ export default defineVxeComponent({
|
|
|
334
364
|
return getRowIdByField(row, keyField)
|
|
335
365
|
}
|
|
336
366
|
|
|
367
|
+
const getParentElem = () => {
|
|
368
|
+
const el = refElem.value
|
|
369
|
+
return el ? el.parentElement : null
|
|
370
|
+
}
|
|
371
|
+
|
|
337
372
|
const calcTableHeight = (key: 'height' | 'maxHeight') => {
|
|
338
373
|
const { parentHeight } = reactData
|
|
339
374
|
const val = props[key]
|
|
@@ -2311,7 +2346,7 @@ export default defineVxeComponent({
|
|
|
2311
2346
|
|
|
2312
2347
|
const renderVN = () => {
|
|
2313
2348
|
const { showCheckbox, className, loading, useScrollbar } = props
|
|
2314
|
-
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData
|
|
2349
|
+
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData
|
|
2315
2350
|
const defaultSlot = slots.default
|
|
2316
2351
|
const headerSlot = slots.header
|
|
2317
2352
|
const footerSlot = slots.footer
|
|
@@ -2326,8 +2361,13 @@ export default defineVxeComponent({
|
|
|
2326
2361
|
const rowOpts = computeRowOpts.value
|
|
2327
2362
|
const { isHover, padding } = rowOpts
|
|
2328
2363
|
const isDrag = computeIsDrag.value
|
|
2329
|
-
const
|
|
2330
|
-
const
|
|
2364
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
2365
|
+
const scrollXVisible = computeScrollXVisible.value
|
|
2366
|
+
const scrollYVisible = computeScrollYVisible.value
|
|
2367
|
+
const scrollbarXToTop = computeScrollbarXToTop.value
|
|
2368
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value
|
|
2369
|
+
const scrollXAutoHide = computeScrollXAutoHide.value
|
|
2370
|
+
const scrollYAutoHide = computeScrollYAutoHide.value
|
|
2331
2371
|
const scrollbarWrapperClss = computeScrollbarWrapperClss.value
|
|
2332
2372
|
const showDefChekboxHead = showCheckbox && showHeader !== false
|
|
2333
2373
|
|
|
@@ -2339,14 +2379,25 @@ export default defineVxeComponent({
|
|
|
2339
2379
|
}
|
|
2340
2380
|
return h('div', {
|
|
2341
2381
|
ref: refElem,
|
|
2342
|
-
class: [
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
'
|
|
2348
|
-
'
|
|
2349
|
-
|
|
2382
|
+
class: [
|
|
2383
|
+
'vxe-list',
|
|
2384
|
+
useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2385
|
+
useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2386
|
+
useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
2387
|
+
useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
2388
|
+
className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
|
|
2389
|
+
{
|
|
2390
|
+
[`size--${vSize}`]: vSize,
|
|
2391
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
2392
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
2393
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
2394
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
2395
|
+
'overflow-y': yThumbHeight,
|
|
2396
|
+
'overflow-x': xThumbWidth,
|
|
2397
|
+
'is--drag': isDrag,
|
|
2398
|
+
'is--loading': loading
|
|
2399
|
+
}
|
|
2400
|
+
],
|
|
2350
2401
|
style: wrapperStyles,
|
|
2351
2402
|
...leOns
|
|
2352
2403
|
}, [
|
|
@@ -2406,17 +2457,7 @@ export default defineVxeComponent({
|
|
|
2406
2457
|
style: {
|
|
2407
2458
|
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
|
|
2408
2459
|
}
|
|
2409
|
-
},
|
|
2410
|
-
? (
|
|
2411
|
-
defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i))
|
|
2412
|
-
)
|
|
2413
|
-
: [
|
|
2414
|
-
h('div', {
|
|
2415
|
-
key: 'vi',
|
|
2416
|
-
ref: refViewInnerElem,
|
|
2417
|
-
class: 'vxe-scrollbar--view-inner'
|
|
2418
|
-
}, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
|
|
2419
|
-
])
|
|
2460
|
+
}, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
|
|
2420
2461
|
]),
|
|
2421
2462
|
footerSlot
|
|
2422
2463
|
? h('div', {
|
|
@@ -2431,7 +2472,7 @@ export default defineVxeComponent({
|
|
|
2431
2472
|
? h('div', {
|
|
2432
2473
|
class: scrollbarWrapperClss
|
|
2433
2474
|
}, [
|
|
2434
|
-
|
|
2475
|
+
scrollXVisible === false
|
|
2435
2476
|
? renderEmptyElement($xeList)
|
|
2436
2477
|
: h('div', {
|
|
2437
2478
|
ref: refTrackXElem,
|
|
@@ -2448,7 +2489,7 @@ export default defineVxeComponent({
|
|
|
2448
2489
|
onLostpointercapture: cleatPointerThumbEvent
|
|
2449
2490
|
})
|
|
2450
2491
|
]),
|
|
2451
|
-
|
|
2492
|
+
scrollYVisible === false
|
|
2452
2493
|
? renderEmptyElement($xeList)
|
|
2453
2494
|
: h('div', {
|
|
2454
2495
|
ref: refTrackYElem,
|
|
@@ -2502,11 +2543,30 @@ export default defineVxeComponent({
|
|
|
2502
2543
|
watch(() => props.syncResize, () => {
|
|
2503
2544
|
reFlag.value++
|
|
2504
2545
|
})
|
|
2546
|
+
watch(() => props.useScrollbar, () => {
|
|
2547
|
+
reFlag.value++
|
|
2548
|
+
})
|
|
2505
2549
|
watch(computeRowHeight, () => {
|
|
2506
2550
|
reFlag.value++
|
|
2507
2551
|
})
|
|
2508
|
-
watch(
|
|
2552
|
+
watch(computeScrollYWidth, () => {
|
|
2553
|
+
reFlag.value++
|
|
2554
|
+
})
|
|
2555
|
+
watch(computeScrollXHeight, () => {
|
|
2556
|
+
reFlag.value++
|
|
2557
|
+
})
|
|
2558
|
+
watch(computeScrollXVisible, () => {
|
|
2559
|
+
nextTick(() => {
|
|
2560
|
+
reFlag.value++
|
|
2561
|
+
})
|
|
2562
|
+
})
|
|
2563
|
+
watch(computeScrollYVisible, () => {
|
|
2509
2564
|
nextTick(() => {
|
|
2565
|
+
reFlag.value++
|
|
2566
|
+
})
|
|
2567
|
+
})
|
|
2568
|
+
watch(reFlag, () => {
|
|
2569
|
+
recalculate().then(() => {
|
|
2510
2570
|
recalculate()
|
|
2511
2571
|
})
|
|
2512
2572
|
})
|
|
@@ -2560,20 +2620,32 @@ export default defineVxeComponent({
|
|
|
2560
2620
|
if (useKey && !keyField) {
|
|
2561
2621
|
errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField'])
|
|
2562
2622
|
}
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
const viewInnerEl =
|
|
2566
|
-
const
|
|
2623
|
+
const el = refElem.value
|
|
2624
|
+
if (useScrollbar) {
|
|
2625
|
+
const viewInnerEl = refVirtualBody.value
|
|
2626
|
+
const scrollObserver = globalResize.create(() => {
|
|
2567
2627
|
reFlag.value++
|
|
2568
2628
|
})
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
if (el) {
|
|
2572
|
-
resizeObserver.observe(el.parentElement as HTMLDivElement)
|
|
2573
|
-
}
|
|
2629
|
+
if (el) {
|
|
2630
|
+
scrollObserver.observe(el)
|
|
2574
2631
|
}
|
|
2575
2632
|
if (viewInnerEl) {
|
|
2576
|
-
|
|
2633
|
+
scrollObserver.observe(viewInnerEl)
|
|
2634
|
+
}
|
|
2635
|
+
internalData.scrollObserver = scrollObserver
|
|
2636
|
+
}
|
|
2637
|
+
if (autoResize) {
|
|
2638
|
+
const parentEl = getParentElem()
|
|
2639
|
+
const resizeObserver = globalResize.create(() => {
|
|
2640
|
+
if (props.autoResize) {
|
|
2641
|
+
reFlag.value++
|
|
2642
|
+
}
|
|
2643
|
+
})
|
|
2644
|
+
if (el) {
|
|
2645
|
+
resizeObserver.observe(el)
|
|
2646
|
+
}
|
|
2647
|
+
if (parentEl) {
|
|
2648
|
+
resizeObserver.observe(parentEl)
|
|
2577
2649
|
}
|
|
2578
2650
|
internalData.resizeObserver = resizeObserver
|
|
2579
2651
|
}
|
|
@@ -2584,10 +2656,13 @@ export default defineVxeComponent({
|
|
|
2584
2656
|
})
|
|
2585
2657
|
|
|
2586
2658
|
onBeforeUnmount(() => {
|
|
2587
|
-
const { resizeObserver } = internalData
|
|
2659
|
+
const { scrollObserver, resizeObserver } = internalData
|
|
2588
2660
|
if (resizeObserver) {
|
|
2589
2661
|
resizeObserver.disconnect()
|
|
2590
2662
|
}
|
|
2663
|
+
if (scrollObserver) {
|
|
2664
|
+
scrollObserver.disconnect()
|
|
2665
|
+
}
|
|
2591
2666
|
globalEvents.off($xeList, 'resize')
|
|
2592
2667
|
XEUtils.assign(reactData, createReactData())
|
|
2593
2668
|
XEUtils.assign(internalData, createInternalData())
|
|
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
|
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { VxeUI, createEvent, permission, useSize, globalEvents, renderEmptyElement } from '../../ui'
|
|
5
5
|
import { getPopupContainer, scrollToView, toCssUnit } from '../../ui/src/dom'
|
|
6
|
-
import { getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
|
|
6
|
+
import { getLastZIndex, nextZIndex, isEnableConf, getDefaultConfig } from '../../ui/src/utils'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
8
|
import { createComponentLog } from '../../ui/src/log'
|
|
9
9
|
import VxeLoadingComponent from '../../loading'
|
|
@@ -74,7 +74,7 @@ export default defineVxeComponent({
|
|
|
74
74
|
menuConfig: Object as PropType<VxeMenuPropTypes.MenuConfig>,
|
|
75
75
|
useScrollbar: {
|
|
76
76
|
type: Boolean as PropType<VxeMenuPropTypes.UseScrollbar>,
|
|
77
|
-
default: () => getConfig().menu.useScrollbar
|
|
77
|
+
default: () => getDefaultConfig(getConfig().menu.useScrollbar, getConfig().useScrollbar)
|
|
78
78
|
},
|
|
79
79
|
scrollbarConfig: Object as PropType<VxeMenuPropTypes.ScrollbarConfig>,
|
|
80
80
|
appendTo: {
|
|
@@ -2,13 +2,14 @@ import { h, Teleport, ref, Ref, inject, computed, reactive, provide, nextTick, w
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
4
|
import { getEventTargetNode, getPopupContainer, getPopupWrapperElement, isScale, toCssUnit } from '../../ui/src/dom'
|
|
5
|
-
import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue } from '../../ui/src/utils'
|
|
5
|
+
import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue, getDefaultConfig } from '../../ui/src/utils'
|
|
6
6
|
import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui'
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
8
8
|
import { createComponentLog } from '../../ui/src/log'
|
|
9
9
|
import { allActiveModals } from './store'
|
|
10
10
|
import VxeButtonComponent from '../../button'
|
|
11
11
|
import VxeLoadingComponent from '../../loading'
|
|
12
|
+
import VxeScrollbarComponent from '../../scrollbar'
|
|
12
13
|
|
|
13
14
|
import type { VxeModalConstructor, VxeModalPropTypes, ModalReactData, ModalInternalData, VxeModalEmits, VxeModalPrivateComputed, ModalEventTypes, VxeButtonInstance, ModalMethods, ModalPrivateRef, VxeModalMethods, ValueOf, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods } from '../../../types'
|
|
14
15
|
import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
|
|
@@ -223,6 +224,11 @@ export default defineVxeComponent({
|
|
|
223
224
|
},
|
|
224
225
|
beforeHideMethod: Function as PropType<VxeModalPropTypes.BeforeHideMethod>,
|
|
225
226
|
slots: Object as PropType<VxeModalPropTypes.Slots>,
|
|
227
|
+
useScrollbar: {
|
|
228
|
+
type: Boolean as PropType<VxeModalPropTypes.UseScrollbar>,
|
|
229
|
+
default: () => getDefaultConfig(getConfig().modal.useScrollbar, getConfig().useScrollbar)
|
|
230
|
+
},
|
|
231
|
+
scrollbarConfig: Object as PropType<VxeModalPropTypes.ScrollbarConfig>,
|
|
226
232
|
|
|
227
233
|
/**
|
|
228
234
|
* 已废弃
|
|
@@ -310,6 +316,27 @@ export default defineVxeComponent({
|
|
|
310
316
|
return Object.assign({}, getConfig().modal.zoomConfig, props.zoomConfig)
|
|
311
317
|
})
|
|
312
318
|
|
|
319
|
+
const computeScrollbarOpts = computed(() => {
|
|
320
|
+
return Object.assign({}, getConfig().modal.scrollbarConfig, props.scrollbarConfig)
|
|
321
|
+
})
|
|
322
|
+
|
|
323
|
+
const computeScrollbarProps = computed(() => {
|
|
324
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
325
|
+
const { viewClassName, viewInnerClassName } = scrollbarOpts
|
|
326
|
+
return {
|
|
327
|
+
width: scrollbarOpts.width,
|
|
328
|
+
height: scrollbarOpts.height,
|
|
329
|
+
autoHide: scrollbarOpts.autoHide,
|
|
330
|
+
visible: scrollbarOpts.visible,
|
|
331
|
+
xConfig: scrollbarOpts.xConfig,
|
|
332
|
+
yConfig: scrollbarOpts.yConfig,
|
|
333
|
+
className: scrollbarOpts.className,
|
|
334
|
+
viewAttrs: scrollbarOpts.viewAttrs,
|
|
335
|
+
viewClassName: 'vxe-modal--scrollbar-content-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
336
|
+
viewInnerClassName: 'vxe-modal--scrollbar-content-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
|
|
337
|
+
}
|
|
338
|
+
})
|
|
339
|
+
|
|
313
340
|
const computeMaps: VxeModalPrivateComputed = {
|
|
314
341
|
computeSize,
|
|
315
342
|
computeZoomOpts
|
|
@@ -1371,9 +1398,10 @@ export default defineVxeComponent({
|
|
|
1371
1398
|
}
|
|
1372
1399
|
|
|
1373
1400
|
const renderBody = () => {
|
|
1374
|
-
const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props
|
|
1401
|
+
const { slots: propSlots = {}, status, message, iconStatus, useScrollbar, useHtml } = props
|
|
1375
1402
|
const content = props.content || message
|
|
1376
1403
|
const isMsg = computeIsMsg.value
|
|
1404
|
+
const scrollbarProps = computeScrollbarProps.value
|
|
1377
1405
|
const defaultSlot = slots.default || propSlots.default
|
|
1378
1406
|
const leftSlot = slots.left || propSlots.left
|
|
1379
1407
|
const rightSlot = slots.right || propSlots.right
|
|
@@ -1389,18 +1417,47 @@ export default defineVxeComponent({
|
|
|
1389
1417
|
])
|
|
1390
1418
|
)
|
|
1391
1419
|
}
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1420
|
+
|
|
1421
|
+
if (useHtml && !defaultSlot) {
|
|
1422
|
+
contVNs.push(
|
|
1423
|
+
useScrollbar
|
|
1424
|
+
? h(VxeScrollbarComponent, {
|
|
1425
|
+
key: 'shc',
|
|
1426
|
+
class: 'vxe-modal--scrollbar-content',
|
|
1427
|
+
...scrollbarProps
|
|
1428
|
+
}, {
|
|
1429
|
+
default () {
|
|
1430
|
+
return [
|
|
1431
|
+
h('div', {
|
|
1432
|
+
class: 'vxe-modal--scrollbar-content-html',
|
|
1433
|
+
innerHTML: getFuncText(content)
|
|
1434
|
+
})
|
|
1435
|
+
]
|
|
1436
|
+
}
|
|
1437
|
+
})
|
|
1438
|
+
: h('div', {
|
|
1439
|
+
key: 'hc',
|
|
1440
|
+
class: 'vxe-modal--content',
|
|
1441
|
+
innerHTML: getFuncText(content)
|
|
1442
|
+
})
|
|
1443
|
+
)
|
|
1444
|
+
} else {
|
|
1445
|
+
contVNs.push(
|
|
1446
|
+
useScrollbar
|
|
1447
|
+
? h(VxeScrollbarComponent, {
|
|
1448
|
+
key: 'sdc',
|
|
1449
|
+
class: 'vxe-modal--scrollbar-content',
|
|
1450
|
+
...scrollbarProps
|
|
1451
|
+
}, {
|
|
1452
|
+
default: () => defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content)
|
|
1453
|
+
})
|
|
1454
|
+
: h('div', {
|
|
1455
|
+
key: 'dc',
|
|
1456
|
+
class: 'vxe-modal--content'
|
|
1457
|
+
}, defaultSlot ? getSlotVNs(defaultSlot({ $modal: $xeModal })) : getFuncText(content))
|
|
1458
|
+
)
|
|
1459
|
+
}
|
|
1460
|
+
|
|
1404
1461
|
return h('div', {
|
|
1405
1462
|
class: 'vxe-modal--body'
|
|
1406
1463
|
}, [
|