vxe-pc-ui 4.20.0 → 4.20.1
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 +594 -130
- package/dist/style.css +1 -1
- package/dist/style.min.css +1 -1
- package/es/card/src/card.js +17 -3
- package/es/icon/style.css +1 -1
- package/es/language/fr-FR.js +29 -29
- package/es/layout-aside/src/layout-aside.js +8 -5
- package/es/layout-body/src/layout-body.js +19 -11
- package/es/list/src/list.js +79 -36
- package/es/list/style.css +25 -8
- package/es/list/style.min.css +1 -1
- package/es/scrollbar/src/scrollbar.js +59 -17
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +19 -4
- package/es/tree/src/tree.js +393 -55
- 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-list/style.css +25 -8
- package/es/vxe-list/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 +17 -3
- package/lib/card/src/card.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +610 -140
- 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 +7 -7
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +27 -21
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/list/src/list.js +70 -32
- 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/scrollbar/src/scrollbar.js +67 -15
- 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 +22 -10
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tree/src/tree.js +397 -53
- 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-list/style/style.css +25 -8
- package/lib/vxe-list/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 +1 -1
- package/packages/card/src/card.ts +18 -3
- package/packages/language/fr-FR.ts +903 -903
- package/packages/layout-aside/src/layout-aside.ts +8 -5
- package/packages/layout-body/src/layout-body.ts +23 -14
- package/packages/list/src/list.ts +87 -42
- package/packages/scrollbar/src/scrollbar.ts +63 -16
- package/packages/tabs/src/tabs.ts +19 -5
- package/packages/tree/src/tree.ts +432 -64
- package/packages/ui/src/utils.ts +4 -0
- package/styles/components/list.scss +35 -10
- package/styles/components/tree.scss +76 -0
- package/types/components/card.d.ts +10 -1
- package/types/components/layout-aside.d.ts +10 -1
- package/types/components/layout-body.d.ts +10 -1
- package/types/components/list.d.ts +10 -1
- package/types/components/scrollbar.d.ts +17 -2
- package/types/components/table.d.ts +47 -4
- package/types/components/tabs.d.ts +10 -1
- package/types/components/tree.d.ts +33 -2
- /package/es/icon/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/es/icon/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
- /package/es/icon/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/es/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/es/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
- /package/es/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
- /package/lib/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
- /package/lib/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
- /package/lib/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
|
@@ -97,7 +97,7 @@ export default defineVxeComponent({
|
|
|
97
97
|
const vSize = computeSize.value
|
|
98
98
|
const collapseOpts = computeCollapseOpts.value
|
|
99
99
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
100
|
-
const {
|
|
100
|
+
const { className, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
101
101
|
const defaultSlot = slots.default
|
|
102
102
|
|
|
103
103
|
return h('aside', {
|
|
@@ -113,13 +113,16 @@ export default defineVxeComponent({
|
|
|
113
113
|
}, [
|
|
114
114
|
useScrollbar
|
|
115
115
|
? h(VxeScrollbarComponent, {
|
|
116
|
-
|
|
116
|
+
width: scrollbarOpts.width,
|
|
117
|
+
height: scrollbarOpts.height,
|
|
118
|
+
autoHide: scrollbarOpts.autoHide,
|
|
119
|
+
visible: scrollbarOpts.visible,
|
|
117
120
|
xConfig: {
|
|
118
|
-
visible:
|
|
121
|
+
visible: false
|
|
119
122
|
},
|
|
120
|
-
yConfig,
|
|
123
|
+
yConfig: scrollbarOpts.yConfig,
|
|
121
124
|
className: 'vxe-layout-aside--scrollbar' + (className ? (' ' + className) : ''),
|
|
122
|
-
viewAttrs,
|
|
125
|
+
viewAttrs: scrollbarOpts.viewAttrs,
|
|
123
126
|
viewClassName: 'vxe-layout-aside--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
124
127
|
viewInnerClassName: 'vxe-layout-aside--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
|
|
125
128
|
}, {
|
|
@@ -64,6 +64,27 @@ export default defineVxeComponent({
|
|
|
64
64
|
return Object.assign({}, getConfig().layoutBody.scrollbarConfig, props.scrollbarConfig)
|
|
65
65
|
})
|
|
66
66
|
|
|
67
|
+
const computeScrollbarProps = computed(() => {
|
|
68
|
+
const { showBacktop } = props
|
|
69
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
70
|
+
const { className, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
71
|
+
return {
|
|
72
|
+
width: scrollbarOpts.width,
|
|
73
|
+
height: scrollbarOpts.height,
|
|
74
|
+
autoHide: scrollbarOpts.autoHide,
|
|
75
|
+
visible: scrollbarOpts.visible,
|
|
76
|
+
xConfig: scrollbarOpts.xConfig,
|
|
77
|
+
yConfig: scrollbarOpts.yConfig,
|
|
78
|
+
className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
|
|
79
|
+
viewAttrs: {
|
|
80
|
+
...scrollbarOpts.viewAttrs,
|
|
81
|
+
id: showBacktop ? (backtopId || null) : null
|
|
82
|
+
},
|
|
83
|
+
viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
84
|
+
viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
|
|
85
|
+
}
|
|
86
|
+
})
|
|
87
|
+
|
|
67
88
|
const computeMaps: VxeLayoutBodyPrivateComputed = {
|
|
68
89
|
computeSize
|
|
69
90
|
}
|
|
@@ -95,8 +116,7 @@ export default defineVxeComponent({
|
|
|
95
116
|
const renderVN = () => {
|
|
96
117
|
const { loading, padding, showBacktop, useScrollbar } = props
|
|
97
118
|
const backtopOpts = computeBacktopOpts.value
|
|
98
|
-
const
|
|
99
|
-
const { native, xConfig, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
|
|
119
|
+
const scrollbarProps = computeScrollbarProps.value
|
|
100
120
|
const vSize = computeSize.value
|
|
101
121
|
const defaultSlot = slots.default
|
|
102
122
|
const backtopSlot = slots.backtop
|
|
@@ -125,18 +145,7 @@ export default defineVxeComponent({
|
|
|
125
145
|
}]
|
|
126
146
|
}, [
|
|
127
147
|
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
|
-
}, {
|
|
148
|
+
? h(VxeScrollbarComponent, scrollbarProps, {
|
|
140
149
|
default: () => defaultSlot ? defaultSlot({}) : []
|
|
141
150
|
})
|
|
142
151
|
: 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'
|
|
@@ -176,7 +176,6 @@ export default defineVxeComponent({
|
|
|
176
176
|
const refVirtualWrapper = ref() as Ref<HTMLDivElement>
|
|
177
177
|
const refVirtualBody = ref() as Ref<HTMLDivElement>
|
|
178
178
|
|
|
179
|
-
const refViewInnerElem = ref<HTMLDivElement>()
|
|
180
179
|
const refTrackXElem = ref<HTMLDivElement>()
|
|
181
180
|
const refTrackYElem = ref<HTMLDivElement>()
|
|
182
181
|
const refThumbXElem = ref<HTMLDivElement>()
|
|
@@ -242,17 +241,18 @@ export default defineVxeComponent({
|
|
|
242
241
|
|
|
243
242
|
const computeWrapperStyles = computed(() => {
|
|
244
243
|
const rowHeight = computeRowHeight.value
|
|
244
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
245
245
|
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
246
246
|
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
247
|
+
const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
|
|
248
|
+
const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
|
|
247
249
|
const stys: VxeComponentStyleType = {}
|
|
248
250
|
if (rowHeight) {
|
|
249
251
|
stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight)
|
|
250
252
|
}
|
|
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)
|
|
253
|
+
if (barWidth || barHeight) {
|
|
254
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
|
|
255
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
|
|
256
256
|
}
|
|
257
257
|
return stys
|
|
258
258
|
})
|
|
@@ -284,24 +284,50 @@ export default defineVxeComponent({
|
|
|
284
284
|
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
|
|
285
285
|
})
|
|
286
286
|
|
|
287
|
+
const computeScrollXVisible = computed(() => {
|
|
288
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
289
|
+
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
290
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
|
|
291
|
+
})
|
|
292
|
+
|
|
293
|
+
const computeScrollYVisible = computed(() => {
|
|
294
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
295
|
+
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
296
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
|
|
297
|
+
})
|
|
298
|
+
|
|
299
|
+
const computeScrollXAutoHide = computed(() => {
|
|
300
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
301
|
+
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
302
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
303
|
+
})
|
|
304
|
+
|
|
305
|
+
const computeScrollYAutoHide = computed(() => {
|
|
306
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
307
|
+
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
308
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
309
|
+
})
|
|
310
|
+
|
|
287
311
|
const computeScrollbarWrapperClss = computed(() => {
|
|
288
312
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
289
313
|
const { padding } = scrollbarOpts
|
|
290
314
|
const { yThumbHeight, xThumbWidth } = reactData
|
|
291
|
-
const scrollbarXOpts = computeScrollbarXOpts.value
|
|
292
|
-
const scrollbarYOpts = computeScrollbarYOpts.value
|
|
293
315
|
const scrollbarXToTop = computeScrollbarXToTop.value
|
|
294
316
|
const scrollbarYToLeft = computeScrollbarYToLeft.value
|
|
317
|
+
const scrollXVisible = computeScrollXVisible.value
|
|
318
|
+
const scrollYVisible = computeScrollYVisible.value
|
|
319
|
+
const scrollXAutoHide = computeScrollXAutoHide.value
|
|
320
|
+
const scrollYAutoHide = computeScrollYAutoHide.value
|
|
295
321
|
return domUtils.buildClass([
|
|
296
322
|
'vxe-scrollbar is--virtual',
|
|
297
|
-
`ov-x--${
|
|
298
|
-
`ov-y--${
|
|
323
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
324
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
299
325
|
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
300
326
|
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
301
327
|
], {
|
|
302
328
|
'is--padding': padding,
|
|
303
|
-
'ov-x--auto-hide':
|
|
304
|
-
'ov-y--auto-hide':
|
|
329
|
+
'ov-x--auto-hide': scrollXAutoHide,
|
|
330
|
+
'ov-y--auto-hide': scrollYAutoHide,
|
|
305
331
|
'overflow-y': yThumbHeight,
|
|
306
332
|
'overflow-x': xThumbWidth
|
|
307
333
|
})
|
|
@@ -2311,7 +2337,7 @@ export default defineVxeComponent({
|
|
|
2311
2337
|
|
|
2312
2338
|
const renderVN = () => {
|
|
2313
2339
|
const { showCheckbox, className, loading, useScrollbar } = props
|
|
2314
|
-
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData
|
|
2340
|
+
const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData
|
|
2315
2341
|
const defaultSlot = slots.default
|
|
2316
2342
|
const headerSlot = slots.header
|
|
2317
2343
|
const footerSlot = slots.footer
|
|
@@ -2326,8 +2352,13 @@ export default defineVxeComponent({
|
|
|
2326
2352
|
const rowOpts = computeRowOpts.value
|
|
2327
2353
|
const { isHover, padding } = rowOpts
|
|
2328
2354
|
const isDrag = computeIsDrag.value
|
|
2329
|
-
const
|
|
2330
|
-
const
|
|
2355
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
2356
|
+
const scrollXVisible = computeScrollXVisible.value
|
|
2357
|
+
const scrollYVisible = computeScrollYVisible.value
|
|
2358
|
+
const scrollbarXToTop = computeScrollbarXToTop.value
|
|
2359
|
+
const scrollbarYToLeft = computeScrollbarYToLeft.value
|
|
2360
|
+
const scrollXAutoHide = computeScrollXAutoHide.value
|
|
2361
|
+
const scrollYAutoHide = computeScrollYAutoHide.value
|
|
2331
2362
|
const scrollbarWrapperClss = computeScrollbarWrapperClss.value
|
|
2332
2363
|
const showDefChekboxHead = showCheckbox && showHeader !== false
|
|
2333
2364
|
|
|
@@ -2339,14 +2370,25 @@ export default defineVxeComponent({
|
|
|
2339
2370
|
}
|
|
2340
2371
|
return h('div', {
|
|
2341
2372
|
ref: refElem,
|
|
2342
|
-
class: [
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
'
|
|
2348
|
-
'
|
|
2349
|
-
|
|
2373
|
+
class: [
|
|
2374
|
+
'vxe-list',
|
|
2375
|
+
useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2376
|
+
useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
2377
|
+
useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
2378
|
+
useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
2379
|
+
className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
|
|
2380
|
+
{
|
|
2381
|
+
[`size--${vSize}`]: vSize,
|
|
2382
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
2383
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
2384
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
2385
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
2386
|
+
'overflow-y': yThumbHeight,
|
|
2387
|
+
'overflow-x': xThumbWidth,
|
|
2388
|
+
'is--drag': isDrag,
|
|
2389
|
+
'is--loading': loading
|
|
2390
|
+
}
|
|
2391
|
+
],
|
|
2350
2392
|
style: wrapperStyles,
|
|
2351
2393
|
...leOns
|
|
2352
2394
|
}, [
|
|
@@ -2406,17 +2448,7 @@ export default defineVxeComponent({
|
|
|
2406
2448
|
style: {
|
|
2407
2449
|
marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
|
|
2408
2450
|
}
|
|
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
|
-
])
|
|
2451
|
+
}, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
|
|
2420
2452
|
]),
|
|
2421
2453
|
footerSlot
|
|
2422
2454
|
? h('div', {
|
|
@@ -2431,7 +2463,7 @@ export default defineVxeComponent({
|
|
|
2431
2463
|
? h('div', {
|
|
2432
2464
|
class: scrollbarWrapperClss
|
|
2433
2465
|
}, [
|
|
2434
|
-
|
|
2466
|
+
scrollXVisible === false
|
|
2435
2467
|
? renderEmptyElement($xeList)
|
|
2436
2468
|
: h('div', {
|
|
2437
2469
|
ref: refTrackXElem,
|
|
@@ -2448,7 +2480,7 @@ export default defineVxeComponent({
|
|
|
2448
2480
|
onLostpointercapture: cleatPointerThumbEvent
|
|
2449
2481
|
})
|
|
2450
2482
|
]),
|
|
2451
|
-
|
|
2483
|
+
scrollYVisible === false
|
|
2452
2484
|
? renderEmptyElement($xeList)
|
|
2453
2485
|
: h('div', {
|
|
2454
2486
|
ref: refTrackYElem,
|
|
@@ -2502,11 +2534,24 @@ export default defineVxeComponent({
|
|
|
2502
2534
|
watch(() => props.syncResize, () => {
|
|
2503
2535
|
reFlag.value++
|
|
2504
2536
|
})
|
|
2537
|
+
watch(() => props.useScrollbar, () => {
|
|
2538
|
+
reFlag.value++
|
|
2539
|
+
})
|
|
2505
2540
|
watch(computeRowHeight, () => {
|
|
2506
2541
|
reFlag.value++
|
|
2507
2542
|
})
|
|
2508
|
-
watch(
|
|
2543
|
+
watch(computeScrollXVisible, () => {
|
|
2544
|
+
nextTick(() => {
|
|
2545
|
+
reFlag.value++
|
|
2546
|
+
})
|
|
2547
|
+
})
|
|
2548
|
+
watch(computeScrollYVisible, () => {
|
|
2509
2549
|
nextTick(() => {
|
|
2550
|
+
reFlag.value++
|
|
2551
|
+
})
|
|
2552
|
+
})
|
|
2553
|
+
watch(reFlag, () => {
|
|
2554
|
+
recalculate().then(() => {
|
|
2510
2555
|
recalculate()
|
|
2511
2556
|
})
|
|
2512
2557
|
})
|
|
@@ -2562,13 +2607,13 @@ export default defineVxeComponent({
|
|
|
2562
2607
|
}
|
|
2563
2608
|
if (useScrollbar || autoResize) {
|
|
2564
2609
|
const el = refElem.value
|
|
2565
|
-
const viewInnerEl =
|
|
2610
|
+
const viewInnerEl = refVirtualBody.value
|
|
2566
2611
|
const resizeObserver = globalResize.create(() => {
|
|
2567
2612
|
reFlag.value++
|
|
2568
2613
|
})
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
if (
|
|
2614
|
+
if (el) {
|
|
2615
|
+
resizeObserver.observe(el)
|
|
2616
|
+
if (autoResize) {
|
|
2572
2617
|
resizeObserver.observe(el.parentElement as HTMLDivElement)
|
|
2573
2618
|
}
|
|
2574
2619
|
}
|
|
@@ -4,6 +4,7 @@ import XEUtils from 'xe-utils'
|
|
|
4
4
|
import { VxeUI } from '../../ui'
|
|
5
5
|
import { toCssUnit } from '../../ui/src/dom'
|
|
6
6
|
import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from './util'
|
|
7
|
+
import { getDefaultConfig } from '../../ui/src/utils'
|
|
7
8
|
import VxeLoadingComponent from '../../loading'
|
|
8
9
|
|
|
9
10
|
import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ScrollbarMethods, ScrollbarPrivateMethods, VxeScrollbarPropTypes, ValueOf, ScrollbarPrivateRef, VxeScrollbarPrivateComputed, VxeScrollbarConstructor, VxeScrollbarPrivateMethods, VxeComponentStyleType } from '../../../types'
|
|
@@ -33,6 +34,7 @@ export default defineVxeComponent({
|
|
|
33
34
|
name: 'VxeScrollbar',
|
|
34
35
|
props: {
|
|
35
36
|
id: [String, Number] as PropType<VxeScrollbarPropTypes.Id>,
|
|
37
|
+
viewId: [String, Number] as PropType<VxeScrollbarPropTypes.ViewId>,
|
|
36
38
|
width: [String, Number] as PropType<VxeScrollbarPropTypes.Width>,
|
|
37
39
|
height: [String, Number] as PropType<VxeScrollbarPropTypes.Height>,
|
|
38
40
|
minWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MinWidth>,
|
|
@@ -48,6 +50,14 @@ export default defineVxeComponent({
|
|
|
48
50
|
type: Boolean as PropType<VxeScrollbarPropTypes.Padding>,
|
|
49
51
|
default: () => getConfig().scrollbar.padding
|
|
50
52
|
},
|
|
53
|
+
autoHide: {
|
|
54
|
+
type: Boolean as PropType<VxeScrollbarPropTypes.AutoHide>,
|
|
55
|
+
default: () => getConfig().scrollbar.autoHide
|
|
56
|
+
},
|
|
57
|
+
visible: {
|
|
58
|
+
type: Boolean as PropType<VxeScrollbarPropTypes.Visible>,
|
|
59
|
+
default: () => getConfig().scrollbar.visible
|
|
60
|
+
},
|
|
51
61
|
xConfig: Object as PropType<VxeScrollbarPropTypes.XConfig>,
|
|
52
62
|
yConfig: Object as PropType<VxeScrollbarPropTypes.YConfig>,
|
|
53
63
|
className: {
|
|
@@ -97,6 +107,8 @@ export default defineVxeComponent({
|
|
|
97
107
|
const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
|
|
98
108
|
const xOpts = computeXOpts.value
|
|
99
109
|
const yOpts = computeYOpts.value
|
|
110
|
+
const barWidth = yOpts.width
|
|
111
|
+
const barHeight = xOpts.height
|
|
100
112
|
const stys: VxeComponentStyleType = {}
|
|
101
113
|
if (width) {
|
|
102
114
|
stys.width = toCssUnit(width)
|
|
@@ -116,34 +128,58 @@ export default defineVxeComponent({
|
|
|
116
128
|
if (maxHeight) {
|
|
117
129
|
stys.maxHeight = toCssUnit(maxHeight)
|
|
118
130
|
}
|
|
119
|
-
if (
|
|
120
|
-
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(
|
|
121
|
-
|
|
122
|
-
if (xOpts.height) {
|
|
123
|
-
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(xOpts.height)
|
|
131
|
+
if (barWidth || barHeight) {
|
|
132
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
|
|
133
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
|
|
124
134
|
}
|
|
125
135
|
return stys
|
|
126
136
|
})
|
|
127
137
|
|
|
138
|
+
const computeXVisible = computed(() => {
|
|
139
|
+
const { visible } = props
|
|
140
|
+
const xOpts = computeXOpts.value
|
|
141
|
+
return getDefaultConfig(xOpts.visible, visible)
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
const computeYVisible = computed(() => {
|
|
145
|
+
const { visible } = props
|
|
146
|
+
const yOpts = computeYOpts.value
|
|
147
|
+
return getDefaultConfig(yOpts.visible, visible)
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
const computeXAutoHide = computed(() => {
|
|
151
|
+
const { autoHide } = props
|
|
152
|
+
const xOpts = computeXOpts.value
|
|
153
|
+
return getDefaultConfig(xOpts.autoHide, autoHide)
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
const computeYAutoHide = computed(() => {
|
|
157
|
+
const { autoHide } = props
|
|
158
|
+
const yOpts = computeYOpts.value
|
|
159
|
+
return getDefaultConfig(yOpts.autoHide, autoHide)
|
|
160
|
+
})
|
|
161
|
+
|
|
128
162
|
const computeWrapperClss = computed(() => {
|
|
129
163
|
const { native, className, padding } = props
|
|
130
164
|
const { yThumbHeight, xThumbWidth } = reactData
|
|
131
|
-
const xOpts = computeXOpts.value
|
|
132
|
-
const yOpts = computeYOpts.value
|
|
133
165
|
const xToTop = computeXToTop.value
|
|
134
166
|
const yToLeft = computeYToLeft.value
|
|
167
|
+
const xVisible = computeXVisible.value
|
|
168
|
+
const yVisible = computeYVisible.value
|
|
169
|
+
const xAutoHide = computeXAutoHide.value
|
|
170
|
+
const yAutoHide = computeYAutoHide.value
|
|
135
171
|
return domUtils.buildClass([
|
|
136
172
|
'vxe-scrollbar',
|
|
137
|
-
`ov-x--${
|
|
138
|
-
`ov-y--${
|
|
173
|
+
`ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
|
|
174
|
+
`ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
|
|
139
175
|
`sx-pos--${xToTop ? 'top' : 'bottom'}`,
|
|
140
176
|
`sy-pos--${yToLeft ? 'left' : 'right'}`,
|
|
141
177
|
native ? 'is--native' : 'is--virtual',
|
|
142
178
|
className
|
|
143
179
|
], {
|
|
144
180
|
'is--padding': padding,
|
|
145
|
-
'ov-x--auto-hide':
|
|
146
|
-
'ov-y--auto-hide':
|
|
181
|
+
'ov-x--auto-hide': xAutoHide,
|
|
182
|
+
'ov-y--auto-hide': yAutoHide,
|
|
147
183
|
'overflow-y': yThumbHeight,
|
|
148
184
|
'overflow-x': xThumbWidth
|
|
149
185
|
})
|
|
@@ -512,13 +548,13 @@ export default defineVxeComponent({
|
|
|
512
548
|
Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods)
|
|
513
549
|
|
|
514
550
|
const renderVN = () => {
|
|
515
|
-
const { id, native, loading, viewAttrs } = props
|
|
551
|
+
const { id, native, loading, viewId, viewAttrs } = props
|
|
516
552
|
const wrapperStyle = computeWrapperStyle.value
|
|
517
553
|
const wrapperClss = computeWrapperClss.value
|
|
518
554
|
const viewClss = computeViewClss.value
|
|
519
555
|
const viewInnerClss = computeViewInnerClss.value
|
|
520
|
-
const
|
|
521
|
-
const
|
|
556
|
+
const xVisible = computeXVisible.value
|
|
557
|
+
const yVisible = computeYVisible.value
|
|
522
558
|
const defaultSlot = slots.default
|
|
523
559
|
return h('div', {
|
|
524
560
|
ref: refElem,
|
|
@@ -530,6 +566,7 @@ export default defineVxeComponent({
|
|
|
530
566
|
ref: refViewElem,
|
|
531
567
|
class: viewClss,
|
|
532
568
|
onScroll: scrollEvent,
|
|
569
|
+
id: viewId || null,
|
|
533
570
|
...viewAttrs
|
|
534
571
|
}, [
|
|
535
572
|
h('div', {
|
|
@@ -538,7 +575,7 @@ export default defineVxeComponent({
|
|
|
538
575
|
class: viewInnerClss
|
|
539
576
|
}, defaultSlot ? defaultSlot({}) : [])
|
|
540
577
|
]),
|
|
541
|
-
native ||
|
|
578
|
+
native || xVisible === false
|
|
542
579
|
? renderEmptyElement($xeScrollbar)
|
|
543
580
|
: h('div', {
|
|
544
581
|
ref: refTrackXElem,
|
|
@@ -555,7 +592,7 @@ export default defineVxeComponent({
|
|
|
555
592
|
onLostpointercapture: cleatPointerThumbEvent
|
|
556
593
|
})
|
|
557
594
|
]),
|
|
558
|
-
native ||
|
|
595
|
+
native || yVisible === false
|
|
559
596
|
? renderEmptyElement($xeScrollbar)
|
|
560
597
|
: h('div', {
|
|
561
598
|
ref: refTrackYElem,
|
|
@@ -605,6 +642,16 @@ export default defineVxeComponent({
|
|
|
605
642
|
watch(() => props.syncResize, () => {
|
|
606
643
|
reFlag.value++
|
|
607
644
|
})
|
|
645
|
+
watch(computeXVisible, () => {
|
|
646
|
+
nextTick(() => {
|
|
647
|
+
reFlag.value++
|
|
648
|
+
})
|
|
649
|
+
})
|
|
650
|
+
watch(computeYVisible, () => {
|
|
651
|
+
nextTick(() => {
|
|
652
|
+
reFlag.value++
|
|
653
|
+
})
|
|
654
|
+
})
|
|
608
655
|
watch(reFlag, () => {
|
|
609
656
|
$xeScrollbar.recalculate().then(() => {
|
|
610
657
|
$xeScrollbar.recalculate()
|
|
@@ -175,6 +175,23 @@ export default defineVxeComponent({
|
|
|
175
175
|
return Object.assign({}, getConfig().tabs.scrollbarConfig, props.scrollbarConfig)
|
|
176
176
|
})
|
|
177
177
|
|
|
178
|
+
const computeScrollbarProps = computed(() => {
|
|
179
|
+
const scrollbarOpts = computeScrollbarOpts.value
|
|
180
|
+
const { viewClassName, viewInnerClassName } = scrollbarOpts
|
|
181
|
+
return {
|
|
182
|
+
width: scrollbarOpts.width,
|
|
183
|
+
height: scrollbarOpts.height,
|
|
184
|
+
autoHide: scrollbarOpts.autoHide,
|
|
185
|
+
visible: scrollbarOpts.visible,
|
|
186
|
+
xConfig: scrollbarOpts.xConfig,
|
|
187
|
+
yConfig: scrollbarOpts.yConfig,
|
|
188
|
+
className: scrollbarOpts.className,
|
|
189
|
+
viewAttrs: scrollbarOpts.viewAttrs,
|
|
190
|
+
viewClassName: 'vxe-tabs-pane--scrollbar-item-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
191
|
+
viewInnerClassName: 'vxe-tabs-pane--scrollbar-item-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
|
|
192
|
+
}
|
|
193
|
+
})
|
|
194
|
+
|
|
178
195
|
const computeMaps: VxeTabsPrivateComputed = {
|
|
179
196
|
}
|
|
180
197
|
|
|
@@ -775,8 +792,7 @@ export default defineVxeComponent({
|
|
|
775
792
|
const { initNames, activeName } = reactData
|
|
776
793
|
const { name, slots } = item
|
|
777
794
|
const defaultSlot = slots ? slots.default : null
|
|
778
|
-
const
|
|
779
|
-
const { viewClassName, viewInnerClassName } = scrollbarOpts
|
|
795
|
+
const scrollbarProps = computeScrollbarProps.value
|
|
780
796
|
if (name && initNames.includes(name)) {
|
|
781
797
|
return useScrollbar
|
|
782
798
|
? h(VxeScrollbarComponent, {
|
|
@@ -784,9 +800,7 @@ export default defineVxeComponent({
|
|
|
784
800
|
class: ['vxe-tabs-pane--scrollbar-item', {
|
|
785
801
|
'is--visible': activeName === name
|
|
786
802
|
}],
|
|
787
|
-
...
|
|
788
|
-
viewClassName: 'vxe-tabs-pane--scrollbar-item-view' + (viewClassName ? (' ' + viewClassName) : ''),
|
|
789
|
-
viewInnerClassName: 'vxe-tabs-pane--scrollbar-item-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
|
|
803
|
+
...scrollbarProps
|
|
790
804
|
}, {
|
|
791
805
|
default: () => defaultSlot ? callSlot(defaultSlot, { name }) : []
|
|
792
806
|
})
|