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
@@ -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';
@@ -152,7 +152,6 @@ export default defineVxeComponent({
152
152
  const refFooterElem = ref();
153
153
  const refVirtualWrapper = ref();
154
154
  const refVirtualBody = ref();
155
- const refViewInnerElem = ref();
156
155
  const refTrackXElem = ref();
157
156
  const refTrackYElem = ref();
158
157
  const refThumbXElem = ref();
@@ -205,17 +204,18 @@ export default defineVxeComponent({
205
204
  });
206
205
  const computeWrapperStyles = computed(() => {
207
206
  const rowHeight = computeRowHeight.value;
207
+ const scrollbarOpts = computeScrollbarOpts.value;
208
208
  const scrollbarXOpts = computeScrollbarXOpts.value;
209
209
  const scrollbarYOpts = computeScrollbarYOpts.value;
210
+ const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
211
+ const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
210
212
  const stys = {};
211
213
  if (rowHeight) {
212
214
  stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
213
215
  }
214
- if (scrollbarYOpts.width) {
215
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(scrollbarYOpts.width);
216
- }
217
- if (scrollbarXOpts.height) {
218
- stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(scrollbarXOpts.height);
216
+ if (barWidth || barHeight) {
217
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
218
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
219
219
  }
220
220
  return stys;
221
221
  });
@@ -243,24 +243,46 @@ export default defineVxeComponent({
243
243
  const scrollbarOpts = computeScrollbarOpts.value;
244
244
  return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
245
245
  });
246
+ const computeScrollXVisible = computed(() => {
247
+ const scrollbarOpts = computeScrollbarOpts.value;
248
+ const scrollbarXOpts = computeScrollbarXOpts.value;
249
+ return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
250
+ });
251
+ const computeScrollYVisible = computed(() => {
252
+ const scrollbarOpts = computeScrollbarOpts.value;
253
+ const scrollbarYOpts = computeScrollbarYOpts.value;
254
+ return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
255
+ });
256
+ const computeScrollXAutoHide = computed(() => {
257
+ const scrollbarOpts = computeScrollbarOpts.value;
258
+ const scrollbarXOpts = computeScrollbarXOpts.value;
259
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
260
+ });
261
+ const computeScrollYAutoHide = computed(() => {
262
+ const scrollbarOpts = computeScrollbarOpts.value;
263
+ const scrollbarYOpts = computeScrollbarYOpts.value;
264
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
265
+ });
246
266
  const computeScrollbarWrapperClss = computed(() => {
247
267
  const scrollbarOpts = computeScrollbarOpts.value;
248
268
  const { padding } = scrollbarOpts;
249
269
  const { yThumbHeight, xThumbWidth } = reactData;
250
- const scrollbarXOpts = computeScrollbarXOpts.value;
251
- const scrollbarYOpts = computeScrollbarYOpts.value;
252
270
  const scrollbarXToTop = computeScrollbarXToTop.value;
253
271
  const scrollbarYToLeft = computeScrollbarYToLeft.value;
272
+ const scrollXVisible = computeScrollXVisible.value;
273
+ const scrollYVisible = computeScrollYVisible.value;
274
+ const scrollXAutoHide = computeScrollXAutoHide.value;
275
+ const scrollYAutoHide = computeScrollYAutoHide.value;
254
276
  return domUtils.buildClass([
255
277
  'vxe-scrollbar is--virtual',
256
- `ov-x--${scrollbarXOpts.visible || 'visible'}`,
257
- `ov-y--${scrollbarYOpts.visible || 'visible'}`,
278
+ `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
279
+ `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
258
280
  `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
259
281
  `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
260
282
  ], {
261
283
  'is--padding': padding,
262
- 'ov-x--auto-hide': scrollbarXOpts.autoHide,
263
- 'ov-y--auto-hide': scrollbarYOpts.autoHide,
284
+ 'ov-x--auto-hide': scrollXAutoHide,
285
+ 'ov-y--auto-hide': scrollYAutoHide,
264
286
  'overflow-y': yThumbHeight,
265
287
  'overflow-x': xThumbWidth
266
288
  });
@@ -2139,7 +2161,7 @@ export default defineVxeComponent({
2139
2161
  };
2140
2162
  const renderVN = () => {
2141
2163
  const { showCheckbox, className, loading, useScrollbar } = props;
2142
- const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData;
2164
+ const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData;
2143
2165
  const defaultSlot = slots.default;
2144
2166
  const headerSlot = slots.header;
2145
2167
  const footerSlot = slots.footer;
@@ -2154,22 +2176,38 @@ export default defineVxeComponent({
2154
2176
  const rowOpts = computeRowOpts.value;
2155
2177
  const { isHover, padding } = rowOpts;
2156
2178
  const isDrag = computeIsDrag.value;
2157
- const scrollbarXOpts = computeScrollbarXOpts.value;
2158
- const scrollbarYOpts = computeScrollbarYOpts.value;
2179
+ const scrollbarOpts = computeScrollbarOpts.value;
2180
+ const scrollXVisible = computeScrollXVisible.value;
2181
+ const scrollYVisible = computeScrollYVisible.value;
2182
+ const scrollbarXToTop = computeScrollbarXToTop.value;
2183
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
2184
+ const scrollXAutoHide = computeScrollXAutoHide.value;
2185
+ const scrollYAutoHide = computeScrollYAutoHide.value;
2159
2186
  const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
2160
2187
  const showDefChekboxHead = showCheckbox && showHeader !== false;
2161
2188
  const leOns = {};
2162
2189
  if (isCrossListDrag && !rowList.length) {
2163
2190
  leOns.onDragover = $xeList.handleCrossListRowDragoverEmptyEvent;
2164
2191
  }
2165
- return h('div', Object.assign({ ref: refElem, class: ['vxe-list', className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '', {
2192
+ return h('div', Object.assign({ ref: refElem, class: [
2193
+ 'vxe-list',
2194
+ useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2195
+ useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2196
+ useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2197
+ useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2198
+ className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
2199
+ {
2166
2200
  [`size--${vSize}`]: vSize,
2167
2201
  'is--virtual-scrollbar': useScrollbar,
2168
- 'ov-x--auto-hide': useScrollbar && scrollbarXOpts.autoHide,
2169
- 'ov-y--auto-hide': useScrollbar && scrollbarYOpts.autoHide,
2202
+ 'ov-padding': useScrollbar && scrollbarOpts.padding,
2203
+ 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
2204
+ 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
2205
+ 'overflow-y': yThumbHeight,
2206
+ 'overflow-x': xThumbWidth,
2170
2207
  'is--drag': isDrag,
2171
2208
  'is--loading': loading
2172
- }], style: wrapperStyles }, leOns), [
2209
+ }
2210
+ ], style: wrapperStyles }, leOns), [
2173
2211
  headerSlot || showDefChekboxHead
2174
2212
  ? h('div', {
2175
2213
  ref: refHeaderElem,
@@ -2226,15 +2264,7 @@ export default defineVxeComponent({
2226
2264
  style: {
2227
2265
  marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
2228
2266
  }
2229
- }, useScrollbar
2230
- ? (defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2231
- : [
2232
- h('div', {
2233
- key: 'vi',
2234
- ref: refViewInnerElem,
2235
- class: 'vxe-scrollbar--view-inner'
2236
- }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2237
- ])
2267
+ }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => renderRow(row, i)))
2238
2268
  ]),
2239
2269
  footerSlot
2240
2270
  ? h('div', {
@@ -2249,7 +2279,7 @@ export default defineVxeComponent({
2249
2279
  ? h('div', {
2250
2280
  class: scrollbarWrapperClss
2251
2281
  }, [
2252
- scrollbarXOpts.visible === 'hidden'
2282
+ scrollXVisible === false
2253
2283
  ? renderEmptyElement($xeList)
2254
2284
  : h('div', {
2255
2285
  ref: refTrackXElem,
@@ -2266,7 +2296,7 @@ export default defineVxeComponent({
2266
2296
  onLostpointercapture: cleatPointerThumbEvent
2267
2297
  })
2268
2298
  ]),
2269
- scrollbarYOpts.visible === 'hidden'
2299
+ scrollYVisible === false
2270
2300
  ? renderEmptyElement($xeList)
2271
2301
  : h('div', {
2272
2302
  ref: refTrackYElem,
@@ -2318,11 +2348,24 @@ export default defineVxeComponent({
2318
2348
  watch(() => props.syncResize, () => {
2319
2349
  reFlag.value++;
2320
2350
  });
2351
+ watch(() => props.useScrollbar, () => {
2352
+ reFlag.value++;
2353
+ });
2321
2354
  watch(computeRowHeight, () => {
2322
2355
  reFlag.value++;
2323
2356
  });
2324
- watch(reFlag, () => {
2357
+ watch(computeScrollXVisible, () => {
2325
2358
  nextTick(() => {
2359
+ reFlag.value++;
2360
+ });
2361
+ });
2362
+ watch(computeScrollYVisible, () => {
2363
+ nextTick(() => {
2364
+ reFlag.value++;
2365
+ });
2366
+ });
2367
+ watch(reFlag, () => {
2368
+ recalculate().then(() => {
2326
2369
  recalculate();
2327
2370
  });
2328
2371
  });
@@ -2372,13 +2415,13 @@ export default defineVxeComponent({
2372
2415
  }
2373
2416
  if (useScrollbar || autoResize) {
2374
2417
  const el = refElem.value;
2375
- const viewInnerEl = refViewInnerElem.value;
2418
+ const viewInnerEl = refVirtualBody.value;
2376
2419
  const resizeObserver = globalResize.create(() => {
2377
2420
  reFlag.value++;
2378
2421
  });
2379
- resizeObserver.observe(el);
2380
- if (autoResize) {
2381
- if (el) {
2422
+ if (el) {
2423
+ resizeObserver.observe(el);
2424
+ if (autoResize) {
2382
2425
  resizeObserver.observe(el.parentElement);
2383
2426
  }
2384
2427
  }
package/es/list/style.css CHANGED
@@ -376,17 +376,24 @@
376
376
  vertical-align: middle;
377
377
  }
378
378
 
379
- .vxe-list > .vxe-scrollbar {
380
- position: unset;
379
+ .vxe-list.ov-padding.overflow-x.sx-pos--top {
380
+ padding-top: var(--vxe-ui-scrollbar-x-height);
381
381
  }
382
- .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper {
383
- scrollbar-width: none;
384
- -ms-overflow-style: none;
382
+ .vxe-list.ov-padding.overflow-x.sx-pos--bottom {
383
+ padding-bottom: var(--vxe-ui-scrollbar-x-height);
385
384
  }
386
- .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper::-webkit-scrollbar {
387
- display: none;
385
+ .vxe-list.ov-padding.overflow-y.sy-pos--left {
386
+ padding-left: var(--vxe-ui-scrollbar-y-width);
387
+ }
388
+ .vxe-list.ov-padding.overflow-y.sy-pos--right {
389
+ padding-right: var(--vxe-ui-scrollbar-y-width);
390
+ }
391
+ .vxe-list.ov-x--hidden > .vxe-list--virtual-wrapper {
392
+ overflow-x: hidden;
393
+ }
394
+ .vxe-list.ov-y--hidden > .vxe-list--virtual-wrapper {
395
+ overflow-y: hidden;
388
396
  }
389
-
390
397
  .vxe-list.is--virtual-scrollbar.ov-x--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-x {
391
398
  opacity: 1;
392
399
  }
@@ -400,4 +407,14 @@
400
407
  .vxe-list.is--virtual-scrollbar.ov-y--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-y {
401
408
  opacity: 0;
402
409
  transition: opacity 0.8s ease-in-out;
410
+ }
411
+ .vxe-list > .vxe-scrollbar {
412
+ position: unset;
413
+ }
414
+ .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper {
415
+ scrollbar-width: none;
416
+ -ms-overflow-style: none;
417
+ }
418
+ .vxe-list.is--virtual-scrollbar > .vxe-list--virtual-wrapper::-webkit-scrollbar {
419
+ display: none;
403
420
  }
@@ -1 +1 @@
1
- @charset "UTF-8";.vxe-list{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-list.size--medium{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-medium)}.vxe-list.size--small{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-small)}.vxe-list.size--mini{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-mini)}.vxe-list{position:relative;display:block;padding:0;font-size:var(--vxe-ui-list-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);direction:ltr}.vxe-list .vxe-list--virtual-wrapper{position:relative;overflow-x:auto;overflow-y:auto;outline:0}.vxe-list .vxe-list--y-space{width:0;float:left}.vxe-list .vxe-list--body,.vxe-list .vxe-list--virtual-wrapper{padding:0;margin:0;border:0;outline:0}.vxe-list--header-wrapper{display:flex;flex-direction:row;align-items:center;min-height:var(--vxe-ui-list-row-height)}.vxe-list--header-left{display:flex;flex-direction:row;align-items:center;flex-shrink:0}.vxe-list--header-content{flex-grow:1;overflow:auto}.vxe-list--body.trigger--row>.vxe-list--row:not(.is--drag-disabled):active{cursor:grabbing}.vxe-list--body.is--padding>.vxe-list--row{padding:0 var(--vxe-ui-list-current-padding)}.vxe-list--body.checkbox--highlight .vxe-list--row.is-checkbox--checked{background-color:var(--vxe-ui-list-row-checkbox-checked-background-color)}.vxe-list--body.radio--highlight .vxe-list--row.is-radio--checked{background-color:var(--vxe-ui-list-row-radio-checked-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover{background-color:var(--vxe-ui-list-row-hover-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover.is--current{background-color:var(--vxe-ui-list-row-hover-current-background-color)}.vxe-list--body.row--hover.radio--highlight .vxe-list--row.is-radio--checked:hover{background-color:var(--vxe-ui-list-row-hover-radio-checked-background-color)}.vxe-list--body.row--hover.checkbox--highlight .vxe-list--row.is-checkbox--checked:hover{background-color:var(--vxe-ui-list-row-hover-checkbox-checked-background-color)}.vxe-list--row.is--current{background-color:var(--vxe-ui-list-row-current-background-color)}.vxe-list--virtual-wrapper{height:100px}.vxe-list--row{display:flex;flex-direction:row;align-items:center}.vxe-list--row-content,.vxe-list--row-drag,.vxe-list--row-extra{display:flex;flex-direction:row;align-items:center}.vxe-list--row-drag{flex-shrink:0;padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--row-content{flex-grow:1;height:var(--vxe-ui-list-row-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--row-extra{flex-shrink:0}.vxe-list--drag-handle:not(.is--disabled){cursor:grab}.vxe-list--drag-handle:not(.is--disabled):active{cursor:grabbing}.vxe-list--drag-handle:not(.is--disabled):hover{color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-handle.is--disabled{color:var(--vxe-ui-input-disabled-color);cursor:not-allowed}.vxe-list--row.row--drag-move{transition:transform .5s ease}.vxe-list--row.row--drag-origin{opacity:.3}.vxe-list--drag-row-line{display:none;position:absolute;top:0;left:0;z-index:11;pointer-events:none}.vxe-list--drag-row-line{width:100%;height:1px;border:2px solid transparent}.vxe-list--drag-row-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-to-child=y]{border-top-color:transparent;border-bottom-color:transparent;border-left-color:var(--vxe-ui-status-success-color)}.vxe-list--drag-row-line.is--guides{background-color:var(--vxe-ui-list-drag-over-background-color)}.vxe-body--row-list-move{transition-property:transform;transition-duration:.35s}.vxe-list--drag-sort-tip{display:none;position:absolute;top:0;left:0;padding:.6em 1.4em;max-width:50%;min-width:100px;border-radius:var(--vxe-ui-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;background-color:var(--vxe-ui-layout-background-color);box-shadow:0 0 10px 0 rgba(0,0,0,.2);z-index:33}.vxe-list--drag-sort-tip[drag-status=normal] .vxe-list--drag-sort-tip-normal-status{display:block}.vxe-list--drag-sort-tip[drag-status=sub] .vxe-list--drag-sort-tip-sub-status{display:block}.vxe-list--drag-sort-tip[drag-status=disabled] .vxe-list--drag-sort-tip-disabled-status{display:block}.vxe-list--drag-sort-tip-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-list--drag-sort-tip-status{padding-right:.4em}.vxe-list--drag-sort-tip-disabled-status{display:none;flex-shrink:0;color:var(--vxe-ui-status-error-color)}.vxe-list--drag-sort-tip-normal-status,.vxe-list--drag-sort-tip-sub-status{display:none}.vxe-list--drag-sort-tip-content{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--checkbox-header{padding-right:var(--vxe-ui-list-current-padding);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header{cursor:pointer}.vxe-list--checkbox-header .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-header .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header.is--checked,.vxe-list--checkbox-header.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-header.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--hidden{cursor:default}.vxe-list--checkbox-header.is--readonly{cursor:auto}.vxe-list--checkbox-header.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-header.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-header .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--checkbox-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--checkbox-option{cursor:pointer}.vxe-list--checkbox-option .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-option.is--checked,.vxe-list--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--hidden{cursor:default}.vxe-list--checkbox-option.is--readonly{cursor:auto}.vxe-list--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-option .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--radio-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--radio-option{cursor:pointer}.vxe-list--radio-option .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-list--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--readonly{cursor:auto}.vxe-list--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--radio-option .vxe-radio--label{padding-left:.4em;vertical-align:middle}.vxe-list>.vxe-scrollbar{position:unset}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper{scrollbar-width:none;-ms-overflow-style:none}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper::-webkit-scrollbar{display:none}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:1}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:1}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}
1
+ @charset "UTF-8";.vxe-list{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-default);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-default)}.vxe-list.size--medium{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-medium);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-medium)}.vxe-list.size--small{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-small);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-small)}.vxe-list.size--mini{--vxe-ui-list-current-font-size:var(--vxe-ui-font-size-mini);--vxe-ui-list-current-padding:var(--vxe-ui-layout-padding-mini)}.vxe-list{position:relative;display:block;padding:0;font-size:var(--vxe-ui-list-current-font-size);color:var(--vxe-ui-font-color);font-family:var(--vxe-ui-font-family);direction:ltr}.vxe-list .vxe-list--virtual-wrapper{position:relative;overflow-x:auto;overflow-y:auto;outline:0}.vxe-list .vxe-list--y-space{width:0;float:left}.vxe-list .vxe-list--body,.vxe-list .vxe-list--virtual-wrapper{padding:0;margin:0;border:0;outline:0}.vxe-list--header-wrapper{display:flex;flex-direction:row;align-items:center;min-height:var(--vxe-ui-list-row-height)}.vxe-list--header-left{display:flex;flex-direction:row;align-items:center;flex-shrink:0}.vxe-list--header-content{flex-grow:1;overflow:auto}.vxe-list--body.trigger--row>.vxe-list--row:not(.is--drag-disabled):active{cursor:grabbing}.vxe-list--body.is--padding>.vxe-list--row{padding:0 var(--vxe-ui-list-current-padding)}.vxe-list--body.checkbox--highlight .vxe-list--row.is-checkbox--checked{background-color:var(--vxe-ui-list-row-checkbox-checked-background-color)}.vxe-list--body.radio--highlight .vxe-list--row.is-radio--checked{background-color:var(--vxe-ui-list-row-radio-checked-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover{background-color:var(--vxe-ui-list-row-hover-background-color)}.vxe-list--body.row--hover .vxe-list--row:hover.is--current{background-color:var(--vxe-ui-list-row-hover-current-background-color)}.vxe-list--body.row--hover.radio--highlight .vxe-list--row.is-radio--checked:hover{background-color:var(--vxe-ui-list-row-hover-radio-checked-background-color)}.vxe-list--body.row--hover.checkbox--highlight .vxe-list--row.is-checkbox--checked:hover{background-color:var(--vxe-ui-list-row-hover-checkbox-checked-background-color)}.vxe-list--row.is--current{background-color:var(--vxe-ui-list-row-current-background-color)}.vxe-list--virtual-wrapper{height:100px}.vxe-list--row{display:flex;flex-direction:row;align-items:center}.vxe-list--row-content,.vxe-list--row-drag,.vxe-list--row-extra{display:flex;flex-direction:row;align-items:center}.vxe-list--row-drag{flex-shrink:0;padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--row-content{flex-grow:1;height:var(--vxe-ui-list-row-height);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--row-extra{flex-shrink:0}.vxe-list--drag-handle:not(.is--disabled){cursor:grab}.vxe-list--drag-handle:not(.is--disabled):active{cursor:grabbing}.vxe-list--drag-handle:not(.is--disabled):hover{color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-handle.is--disabled{color:var(--vxe-ui-input-disabled-color);cursor:not-allowed}.vxe-list--row.row--drag-move{transition:transform .5s ease}.vxe-list--row.row--drag-origin{opacity:.3}.vxe-list--drag-row-line{display:none;position:absolute;top:0;left:0;z-index:11;pointer-events:none}.vxe-list--drag-row-line{width:100%;height:1px;border:2px solid transparent}.vxe-list--drag-row-line[drag-pos=top]{border-top-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-pos=bottom]{border-bottom-color:var(--vxe-ui-font-primary-color)}.vxe-list--drag-row-line[drag-to-child=y]{border-top-color:transparent;border-bottom-color:transparent;border-left-color:var(--vxe-ui-status-success-color)}.vxe-list--drag-row-line.is--guides{background-color:var(--vxe-ui-list-drag-over-background-color)}.vxe-body--row-list-move{transition-property:transform;transition-duration:.35s}.vxe-list--drag-sort-tip{display:none;position:absolute;top:0;left:0;padding:.6em 1.4em;max-width:50%;min-width:100px;border-radius:var(--vxe-ui-border-radius);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none;background-color:var(--vxe-ui-layout-background-color);box-shadow:0 0 10px 0 rgba(0,0,0,.2);z-index:33}.vxe-list--drag-sort-tip[drag-status=normal] .vxe-list--drag-sort-tip-normal-status{display:block}.vxe-list--drag-sort-tip[drag-status=sub] .vxe-list--drag-sort-tip-sub-status{display:block}.vxe-list--drag-sort-tip[drag-status=disabled] .vxe-list--drag-sort-tip-disabled-status{display:block}.vxe-list--drag-sort-tip-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-list--drag-sort-tip-status{padding-right:.4em}.vxe-list--drag-sort-tip-disabled-status{display:none;flex-shrink:0;color:var(--vxe-ui-status-error-color)}.vxe-list--drag-sort-tip-normal-status,.vxe-list--drag-sort-tip-sub-status{display:none}.vxe-list--drag-sort-tip-content{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-list--checkbox-header{padding-right:var(--vxe-ui-list-current-padding);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header{cursor:pointer}.vxe-list--checkbox-header .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-header .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-header.is--checked,.vxe-list--checkbox-header.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-header.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-header.is--hidden{cursor:default}.vxe-list--checkbox-header.is--readonly{cursor:auto}.vxe-list--checkbox-header.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-header.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-header .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--checkbox-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--checkbox-option{cursor:pointer}.vxe-list--checkbox-option .vxe-checkbox--icon{font-size:1.22em;transition:all .2s ease-in-out}.vxe-list--checkbox-option .vxe-checkbox--icon{color:var(--vxe-ui-input-border-color);vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--checkbox-option.is--checked,.vxe-list--checkbox-option.is--indeterminate{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--checked .vxe-checkbox--icon,.vxe-list--checkbox-option.is--indeterminate .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option:not(.is--disabled):hover .vxe-checkbox--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--checkbox-option.is--hidden{cursor:default}.vxe-list--checkbox-option.is--readonly{cursor:auto}.vxe-list--checkbox-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--checkbox-option.is--disabled .vxe-checkbox--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--checkbox-option .vxe-checkbox--label{padding-left:.4em;vertical-align:middle}.vxe-list--radio-option{padding-right:var(--vxe-ui-list-current-padding)}.vxe-list--radio-option{cursor:pointer}.vxe-list--radio-option .vxe-radio--icon{font-size:1.26em;transition:all .2s ease-in-out}.vxe-list--radio-option .vxe-radio--icon{color:var(--vxe-ui-input-border-color);border-radius:50%;vertical-align:middle;font-weight:700;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-list--radio-option.is--checked{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--checked .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option:not(.is--disabled):hover .vxe-radio--icon{color:var(--vxe-ui-font-primary-color)}.vxe-list--radio-option.is--readonly{cursor:auto}.vxe-list--radio-option.is--disabled{color:var(--vxe-ui-font-disabled-color);cursor:not-allowed}.vxe-list--radio-option.is--disabled .vxe-radio--icon{color:var(--vxe-ui-input-disabled-color)}.vxe-list--radio-option .vxe-radio--label{padding-left:.4em;vertical-align:middle}.vxe-list.ov-padding.overflow-x.sx-pos--top{padding-top:var(--vxe-ui-scrollbar-x-height)}.vxe-list.ov-padding.overflow-x.sx-pos--bottom{padding-bottom:var(--vxe-ui-scrollbar-x-height)}.vxe-list.ov-padding.overflow-y.sy-pos--left{padding-left:var(--vxe-ui-scrollbar-y-width)}.vxe-list.ov-padding.overflow-y.sy-pos--right{padding-right:var(--vxe-ui-scrollbar-y-width)}.vxe-list.ov-x--hidden>.vxe-list--virtual-wrapper{overflow-x:hidden}.vxe-list.ov-y--hidden>.vxe-list--virtual-wrapper{overflow-y:hidden}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:1}.vxe-list.is--virtual-scrollbar.ov-x--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide:hover>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:1}.vxe-list.is--virtual-scrollbar.ov-y--auto-hide>.vxe-scrollbar>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-list>.vxe-scrollbar{position:unset}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper{scrollbar-width:none;-ms-overflow-style:none}.vxe-list.is--virtual-scrollbar>.vxe-list--virtual-wrapper::-webkit-scrollbar{display:none}
@@ -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
  const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI;
9
10
  function createReactData() {
@@ -27,6 +28,7 @@ export default defineVxeComponent({
27
28
  name: 'VxeScrollbar',
28
29
  props: {
29
30
  id: [String, Number],
31
+ viewId: [String, Number],
30
32
  width: [String, Number],
31
33
  height: [String, Number],
32
34
  minWidth: [String, Number],
@@ -42,6 +44,14 @@ export default defineVxeComponent({
42
44
  type: Boolean,
43
45
  default: () => getConfig().scrollbar.padding
44
46
  },
47
+ autoHide: {
48
+ type: Boolean,
49
+ default: () => getConfig().scrollbar.autoHide
50
+ },
51
+ visible: {
52
+ type: Boolean,
53
+ default: () => getConfig().scrollbar.visible
54
+ },
45
55
  xConfig: Object,
46
56
  yConfig: Object,
47
57
  className: {
@@ -86,6 +96,8 @@ export default defineVxeComponent({
86
96
  const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props;
87
97
  const xOpts = computeXOpts.value;
88
98
  const yOpts = computeYOpts.value;
99
+ const barWidth = yOpts.width;
100
+ const barHeight = xOpts.height;
89
101
  const stys = {};
90
102
  if (width) {
91
103
  stys.width = toCssUnit(width);
@@ -105,33 +117,53 @@ export default defineVxeComponent({
105
117
  if (maxHeight) {
106
118
  stys.maxHeight = toCssUnit(maxHeight);
107
119
  }
108
- if (yOpts.width) {
109
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(yOpts.width);
110
- }
111
- if (xOpts.height) {
112
- stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(xOpts.height);
120
+ if (barWidth || barHeight) {
121
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
122
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
113
123
  }
114
124
  return stys;
115
125
  });
126
+ const computeXVisible = computed(() => {
127
+ const { visible } = props;
128
+ const xOpts = computeXOpts.value;
129
+ return getDefaultConfig(xOpts.visible, visible);
130
+ });
131
+ const computeYVisible = computed(() => {
132
+ const { visible } = props;
133
+ const yOpts = computeYOpts.value;
134
+ return getDefaultConfig(yOpts.visible, visible);
135
+ });
136
+ const computeXAutoHide = computed(() => {
137
+ const { autoHide } = props;
138
+ const xOpts = computeXOpts.value;
139
+ return getDefaultConfig(xOpts.autoHide, autoHide);
140
+ });
141
+ const computeYAutoHide = computed(() => {
142
+ const { autoHide } = props;
143
+ const yOpts = computeYOpts.value;
144
+ return getDefaultConfig(yOpts.autoHide, autoHide);
145
+ });
116
146
  const computeWrapperClss = computed(() => {
117
147
  const { native, className, padding } = props;
118
148
  const { yThumbHeight, xThumbWidth } = reactData;
119
- const xOpts = computeXOpts.value;
120
- const yOpts = computeYOpts.value;
121
149
  const xToTop = computeXToTop.value;
122
150
  const yToLeft = computeYToLeft.value;
151
+ const xVisible = computeXVisible.value;
152
+ const yVisible = computeYVisible.value;
153
+ const xAutoHide = computeXAutoHide.value;
154
+ const yAutoHide = computeYAutoHide.value;
123
155
  return domUtils.buildClass([
124
156
  'vxe-scrollbar',
125
- `ov-x--${xOpts.visible || 'visible'}`,
126
- `ov-y--${yOpts.visible || 'visible'}`,
157
+ `ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
158
+ `ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
127
159
  `sx-pos--${xToTop ? 'top' : 'bottom'}`,
128
160
  `sy-pos--${yToLeft ? 'left' : 'right'}`,
129
161
  native ? 'is--native' : 'is--virtual',
130
162
  className
131
163
  ], {
132
164
  'is--padding': padding,
133
- 'ov-x--auto-hide': xOpts.autoHide,
134
- 'ov-y--auto-hide': yOpts.autoHide,
165
+ 'ov-x--auto-hide': xAutoHide,
166
+ 'ov-y--auto-hide': yAutoHide,
135
167
  'overflow-y': yThumbHeight,
136
168
  'overflow-x': xThumbWidth
137
169
  });
@@ -471,13 +503,13 @@ export default defineVxeComponent({
471
503
  const scrollbarPrivateMethods = {};
472
504
  Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods);
473
505
  const renderVN = () => {
474
- const { id, native, loading, viewAttrs } = props;
506
+ const { id, native, loading, viewId, viewAttrs } = props;
475
507
  const wrapperStyle = computeWrapperStyle.value;
476
508
  const wrapperClss = computeWrapperClss.value;
477
509
  const viewClss = computeViewClss.value;
478
510
  const viewInnerClss = computeViewInnerClss.value;
479
- const xOpts = computeXOpts.value;
480
- const yOpts = computeYOpts.value;
511
+ const xVisible = computeXVisible.value;
512
+ const yVisible = computeYVisible.value;
481
513
  const defaultSlot = slots.default;
482
514
  return h('div', {
483
515
  ref: refElem,
@@ -485,14 +517,14 @@ export default defineVxeComponent({
485
517
  class: wrapperClss,
486
518
  style: wrapperStyle
487
519
  }, [
488
- h('div', Object.assign({ ref: refViewElem, class: viewClss, onScroll: scrollEvent }, viewAttrs), [
520
+ h('div', Object.assign({ ref: refViewElem, class: viewClss, onScroll: scrollEvent, id: viewId || null }, viewAttrs), [
489
521
  h('div', {
490
522
  key: 'vi',
491
523
  ref: refViewInnerElem,
492
524
  class: viewInnerClss
493
525
  }, defaultSlot ? defaultSlot({}) : [])
494
526
  ]),
495
- native || xOpts.visible === 'hidden'
527
+ native || xVisible === false
496
528
  ? renderEmptyElement($xeScrollbar)
497
529
  : h('div', {
498
530
  ref: refTrackXElem,
@@ -509,7 +541,7 @@ export default defineVxeComponent({
509
541
  onLostpointercapture: cleatPointerThumbEvent
510
542
  })
511
543
  ]),
512
- native || yOpts.visible === 'hidden'
544
+ native || yVisible === false
513
545
  ? renderEmptyElement($xeScrollbar)
514
546
  : h('div', {
515
547
  ref: refTrackYElem,
@@ -557,6 +589,16 @@ export default defineVxeComponent({
557
589
  watch(() => props.syncResize, () => {
558
590
  reFlag.value++;
559
591
  });
592
+ watch(computeXVisible, () => {
593
+ nextTick(() => {
594
+ reFlag.value++;
595
+ });
596
+ });
597
+ watch(computeYVisible, () => {
598
+ nextTick(() => {
599
+ reFlag.value++;
600
+ });
601
+ });
560
602
  watch(reFlag, () => {
561
603
  $xeScrollbar.recalculate().then(() => {
562
604
  $xeScrollbar.recalculate();