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.
Files changed (94) hide show
  1. package/dist/all.esm.js +594 -130
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/card/src/card.js +17 -3
  5. package/es/icon/style.css +1 -1
  6. package/es/language/fr-FR.js +29 -29
  7. package/es/layout-aside/src/layout-aside.js +8 -5
  8. package/es/layout-body/src/layout-body.js +19 -11
  9. package/es/list/src/list.js +79 -36
  10. package/es/list/style.css +25 -8
  11. package/es/list/style.min.css +1 -1
  12. package/es/scrollbar/src/scrollbar.js +59 -17
  13. package/es/style.css +1 -1
  14. package/es/style.min.css +1 -1
  15. package/es/tabs/src/tabs.js +19 -4
  16. package/es/tree/src/tree.js +393 -55
  17. package/es/tree/style.css +43 -0
  18. package/es/tree/style.min.css +1 -1
  19. package/es/ui/index.js +1 -1
  20. package/es/ui/src/log.js +1 -1
  21. package/es/ui/src/utils.js +3 -0
  22. package/es/vxe-list/style.css +25 -8
  23. package/es/vxe-list/style.min.css +1 -1
  24. package/es/vxe-tree/style.css +43 -0
  25. package/es/vxe-tree/style.min.css +1 -1
  26. package/lib/card/src/card.js +17 -3
  27. package/lib/card/src/card.min.js +1 -1
  28. package/lib/icon/style/style.css +1 -1
  29. package/lib/icon/style/style.min.css +1 -1
  30. package/lib/index.umd.js +610 -140
  31. package/lib/index.umd.min.js +1 -1
  32. package/lib/language/fr-FR.js +29 -29
  33. package/lib/language/fr-FR.min.js +1 -1
  34. package/lib/language/fr-FR.umd.js +29 -29
  35. package/lib/layout-aside/src/layout-aside.js +7 -7
  36. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  37. package/lib/layout-body/src/layout-body.js +27 -21
  38. package/lib/layout-body/src/layout-body.min.js +1 -1
  39. package/lib/list/src/list.js +70 -32
  40. package/lib/list/src/list.min.js +1 -1
  41. package/lib/list/style/style.css +25 -8
  42. package/lib/list/style/style.min.css +1 -1
  43. package/lib/scrollbar/src/scrollbar.js +67 -15
  44. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  45. package/lib/style.css +1 -1
  46. package/lib/style.min.css +1 -1
  47. package/lib/tabs/src/tabs.js +22 -10
  48. package/lib/tabs/src/tabs.min.js +1 -1
  49. package/lib/tree/src/tree.js +397 -53
  50. package/lib/tree/src/tree.min.js +1 -1
  51. package/lib/tree/style/style.css +43 -0
  52. package/lib/tree/style/style.min.css +1 -1
  53. package/lib/ui/index.js +1 -1
  54. package/lib/ui/index.min.js +1 -1
  55. package/lib/ui/src/log.js +1 -1
  56. package/lib/ui/src/log.min.js +1 -1
  57. package/lib/ui/src/utils.js +4 -0
  58. package/lib/ui/src/utils.min.js +1 -1
  59. package/lib/vxe-list/style/style.css +25 -8
  60. package/lib/vxe-list/style/style.min.css +1 -1
  61. package/lib/vxe-tree/style/style.css +43 -0
  62. package/lib/vxe-tree/style/style.min.css +1 -1
  63. package/package.json +1 -1
  64. package/packages/card/src/card.ts +18 -3
  65. package/packages/language/fr-FR.ts +903 -903
  66. package/packages/layout-aside/src/layout-aside.ts +8 -5
  67. package/packages/layout-body/src/layout-body.ts +23 -14
  68. package/packages/list/src/list.ts +87 -42
  69. package/packages/scrollbar/src/scrollbar.ts +63 -16
  70. package/packages/tabs/src/tabs.ts +19 -5
  71. package/packages/tree/src/tree.ts +432 -64
  72. package/packages/ui/src/utils.ts +4 -0
  73. package/styles/components/list.scss +35 -10
  74. package/styles/components/tree.scss +76 -0
  75. package/types/components/card.d.ts +10 -1
  76. package/types/components/layout-aside.d.ts +10 -1
  77. package/types/components/layout-body.d.ts +10 -1
  78. package/types/components/list.d.ts +10 -1
  79. package/types/components/scrollbar.d.ts +17 -2
  80. package/types/components/table.d.ts +47 -4
  81. package/types/components/tabs.d.ts +10 -1
  82. package/types/components/tree.d.ts +33 -2
  83. /package/es/icon/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
  84. /package/es/icon/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
  85. /package/es/icon/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
  86. /package/es/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
  87. /package/es/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
  88. /package/es/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
  89. /package/lib/icon/style/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
  90. /package/lib/icon/style/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
  91. /package/lib/icon/style/{iconfont.1791880413927.woff2 → iconfont.1791950625324.woff2} +0 -0
  92. /package/lib/{iconfont.1791880413927.ttf → iconfont.1791950625324.ttf} +0 -0
  93. /package/lib/{iconfont.1791880413927.woff → iconfont.1791950625324.woff} +0 -0
  94. /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 { native, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
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
- native,
116
+ width: scrollbarOpts.width,
117
+ height: scrollbarOpts.height,
118
+ autoHide: scrollbarOpts.autoHide,
119
+ visible: scrollbarOpts.visible,
117
120
  xConfig: {
118
- visible: 'hidden'
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 scrollbarOpts = computeScrollbarOpts.value
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 (scrollbarYOpts.width) {
252
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(scrollbarYOpts.width)
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--${scrollbarXOpts.visible || 'visible'}`,
298
- `ov-y--${scrollbarYOpts.visible || 'visible'}`,
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': scrollbarXOpts.autoHide,
304
- 'ov-y--auto-hide': scrollbarYOpts.autoHide,
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 scrollbarXOpts = computeScrollbarXOpts.value
2330
- const scrollbarYOpts = computeScrollbarYOpts.value
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: ['vxe-list', className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '', {
2343
- [`size--${vSize}`]: vSize,
2344
- 'is--virtual-scrollbar': useScrollbar,
2345
- 'ov-x--auto-hide': useScrollbar && scrollbarXOpts.autoHide,
2346
- 'ov-y--auto-hide': useScrollbar && scrollbarYOpts.autoHide,
2347
- 'is--drag': isDrag,
2348
- 'is--loading': loading
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
- }, useScrollbar
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
- scrollbarXOpts.visible === 'hidden'
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
- scrollbarYOpts.visible === 'hidden'
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(reFlag, () => {
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 = refViewInnerElem.value
2610
+ const viewInnerEl = refVirtualBody.value
2566
2611
  const resizeObserver = globalResize.create(() => {
2567
2612
  reFlag.value++
2568
2613
  })
2569
- resizeObserver.observe(el)
2570
- if (autoResize) {
2571
- if (el) {
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 (yOpts.width) {
120
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(yOpts.width)
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--${xOpts.visible || 'visible'}`,
138
- `ov-y--${yOpts.visible || 'visible'}`,
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': xOpts.autoHide,
146
- 'ov-y--auto-hide': yOpts.autoHide,
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 xOpts = computeXOpts.value
521
- const yOpts = computeYOpts.value
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 || xOpts.visible === 'hidden'
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 || yOpts.visible === 'hidden'
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 scrollbarOpts = computeScrollbarOpts.value
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
- ...scrollbarOpts,
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
  })