vxe-pc-ui 4.19.8 → 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 (100) hide show
  1. package/dist/all.esm.js +878 -115
  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 +364 -21
  10. package/es/list/style.css +43 -0
  11. package/es/list/style.min.css +1 -1
  12. package/es/scrollbar/src/scrollbar.js +59 -17
  13. package/es/scrollbar/style.css +1 -0
  14. package/es/style.css +1 -1
  15. package/es/style.min.css +1 -1
  16. package/es/tabs/src/tabs.js +19 -4
  17. package/es/tree/src/tree.js +393 -55
  18. package/es/tree/style.css +43 -0
  19. package/es/tree/style.min.css +1 -1
  20. package/es/ui/index.js +1 -1
  21. package/es/ui/src/log.js +1 -1
  22. package/es/ui/src/utils.js +12 -0
  23. package/es/vxe-list/style.css +43 -0
  24. package/es/vxe-list/style.min.css +1 -1
  25. package/es/vxe-scrollbar/style.css +1 -0
  26. package/es/vxe-tree/style.css +43 -0
  27. package/es/vxe-tree/style.min.css +1 -1
  28. package/lib/card/src/card.js +17 -3
  29. package/lib/card/src/card.min.js +1 -1
  30. package/lib/icon/style/style.css +1 -1
  31. package/lib/icon/style/style.min.css +1 -1
  32. package/lib/index.umd.js +914 -126
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/language/fr-FR.js +29 -29
  35. package/lib/language/fr-FR.min.js +1 -1
  36. package/lib/language/fr-FR.umd.js +29 -29
  37. package/lib/layout-aside/src/layout-aside.js +7 -7
  38. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  39. package/lib/layout-body/src/layout-body.js +27 -21
  40. package/lib/layout-body/src/layout-body.min.js +1 -1
  41. package/lib/list/src/list.js +368 -21
  42. package/lib/list/src/list.min.js +1 -1
  43. package/lib/list/style/style.css +43 -0
  44. package/lib/list/style/style.min.css +1 -1
  45. package/lib/scrollbar/src/scrollbar.js +67 -15
  46. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  47. package/lib/scrollbar/style/style.css +1 -0
  48. package/lib/style.css +1 -1
  49. package/lib/style.min.css +1 -1
  50. package/lib/tabs/src/tabs.js +22 -10
  51. package/lib/tabs/src/tabs.min.js +1 -1
  52. package/lib/tree/src/tree.js +397 -53
  53. package/lib/tree/src/tree.min.js +1 -1
  54. package/lib/tree/style/style.css +43 -0
  55. package/lib/tree/style/style.min.css +1 -1
  56. package/lib/ui/index.js +1 -1
  57. package/lib/ui/index.min.js +1 -1
  58. package/lib/ui/src/log.js +1 -1
  59. package/lib/ui/src/log.min.js +1 -1
  60. package/lib/ui/src/utils.js +14 -0
  61. package/lib/ui/src/utils.min.js +1 -1
  62. package/lib/vxe-list/style/style.css +43 -0
  63. package/lib/vxe-list/style/style.min.css +1 -1
  64. package/lib/vxe-scrollbar/style/style.css +1 -0
  65. package/lib/vxe-tree/style/style.css +43 -0
  66. package/lib/vxe-tree/style/style.min.css +1 -1
  67. package/package.json +1 -1
  68. package/packages/card/src/card.ts +18 -3
  69. package/packages/language/fr-FR.ts +903 -903
  70. package/packages/layout-aside/src/layout-aside.ts +8 -5
  71. package/packages/layout-body/src/layout-body.ts +23 -14
  72. package/packages/list/src/list.ts +397 -24
  73. package/packages/scrollbar/src/scrollbar.ts +63 -16
  74. package/packages/tabs/src/tabs.ts +19 -5
  75. package/packages/tree/src/tree.ts +432 -64
  76. package/packages/ui/src/utils.ts +14 -0
  77. package/styles/components/list.scss +76 -0
  78. package/styles/components/scrollbar.scss +3 -0
  79. package/styles/components/tree.scss +76 -0
  80. package/types/components/card.d.ts +10 -1
  81. package/types/components/layout-aside.d.ts +10 -1
  82. package/types/components/layout-body.d.ts +10 -1
  83. package/types/components/list.d.ts +33 -2
  84. package/types/components/scrollbar.d.ts +17 -2
  85. package/types/components/table-plugins/extend-cell-area.d.ts +1 -1
  86. package/types/components/table.d.ts +71 -4
  87. package/types/components/tabs.d.ts +10 -1
  88. package/types/components/tree.d.ts +33 -2
  89. /package/es/icon/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
  90. /package/es/icon/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
  91. /package/es/icon/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
  92. /package/es/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
  93. /package/es/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
  94. /package/es/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
  95. /package/lib/icon/style/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
  96. /package/lib/icon/style/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
  97. /package/lib/icon/style/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
  98. /package/lib/{iconfont.1791862962954.ttf → iconfont.1791950625324.ttf} +0 -0
  99. /package/lib/{iconfont.1791862962954.woff → iconfont.1791950625324.woff} +0 -0
  100. /package/lib/{iconfont.1791862962954.woff2 → iconfont.1791950625324.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -4745,7 +4745,7 @@ function checkDynamic() {
4745
4745
  const {
4746
4746
  log: log_log
4747
4747
  } = VxeUI;
4748
- const uiVersion = `ui v${"4.19.8"}`;
4748
+ const uiVersion = `ui v${"4.20.1"}`;
4749
4749
  function createComponentLog(name) {
4750
4750
  const tableVersion = VxeUI.tableVersion ? `table v${VxeUI.tableVersion}` : '';
4751
4751
  const ganttVersion = VxeUI.ganttVersion ? `gantt v${VxeUI.ganttVersion}` : '';
@@ -4763,7 +4763,7 @@ const errLog = log_log.create('error', uiVersion);
4763
4763
 
4764
4764
 
4765
4765
 
4766
- const ui_version = "4.19.8";
4766
+ const ui_version = "4.20.1";
4767
4767
  VxeUI.uiVersion = ui_version;
4768
4768
  VxeUI.dynamicApp = dynamicApp;
4769
4769
  function config(options) {
@@ -7412,6 +7412,15 @@ const Avatar = VxeAvatar;
7412
7412
  function isEnableConf(conf) {
7413
7413
  return conf && conf.enabled !== false;
7414
7414
  }
7415
+ /**
7416
+ * 用于开关类型的配置项
7417
+ * 局部启用规则:conf={}
7418
+ * 局部禁用规则:conf={enabled:false}
7419
+ * 全局默认启用规则:conf.enabled=true
7420
+ */
7421
+ function hasEnableConf(conf, opts) {
7422
+ return opts && (conf ? opts.enabled !== false : opts.enabled);
7423
+ }
7415
7424
  function nextZIndex() {
7416
7425
  return index_esm.getNext();
7417
7426
  }
@@ -7458,6 +7467,9 @@ function enModelValue(nodeid) {
7458
7467
  function deModelValue(nodeid) {
7459
7468
  return nodeid ? decodeURIComponent(`${nodeid}`) : nodeid;
7460
7469
  }
7470
+ function getDefaultConfig(val1, def1) {
7471
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(val1) ? def1 : val1;
7472
+ }
7461
7473
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
7462
7474
  var es_iterator_filter = __webpack_require__(2489);
7463
7475
  ;// ./packages/tooltip/src/tooltip.ts
@@ -11686,6 +11698,7 @@ function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSiz
11686
11698
 
11687
11699
 
11688
11700
 
11701
+
11689
11702
  const {
11690
11703
  getConfig: scrollbar_getConfig,
11691
11704
  createEvent: scrollbar_createEvent,
@@ -11715,6 +11728,7 @@ function scrollbar_createInternalData() {
11715
11728
  name: 'VxeScrollbar',
11716
11729
  props: {
11717
11730
  id: [String, Number],
11731
+ viewId: [String, Number],
11718
11732
  width: [String, Number],
11719
11733
  height: [String, Number],
11720
11734
  minWidth: [String, Number],
@@ -11730,6 +11744,14 @@ function scrollbar_createInternalData() {
11730
11744
  type: Boolean,
11731
11745
  default: () => scrollbar_getConfig().scrollbar.padding
11732
11746
  },
11747
+ autoHide: {
11748
+ type: Boolean,
11749
+ default: () => scrollbar_getConfig().scrollbar.autoHide
11750
+ },
11751
+ visible: {
11752
+ type: Boolean,
11753
+ default: () => scrollbar_getConfig().scrollbar.visible
11754
+ },
11733
11755
  xConfig: Object,
11734
11756
  yConfig: Object,
11735
11757
  className: {
@@ -11781,6 +11803,8 @@ function scrollbar_createInternalData() {
11781
11803
  } = props;
11782
11804
  const xOpts = computeXOpts.value;
11783
11805
  const yOpts = computeYOpts.value;
11806
+ const barWidth = yOpts.width;
11807
+ const barHeight = xOpts.height;
11784
11808
  const stys = {};
11785
11809
  if (width) {
11786
11810
  stys.width = toCssUnit(width);
@@ -11800,14 +11824,40 @@ function scrollbar_createInternalData() {
11800
11824
  if (maxHeight) {
11801
11825
  stys.maxHeight = toCssUnit(maxHeight);
11802
11826
  }
11803
- if (yOpts.width) {
11804
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(yOpts.width);
11805
- }
11806
- if (xOpts.height) {
11807
- stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(xOpts.height);
11827
+ if (barWidth || barHeight) {
11828
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
11829
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
11808
11830
  }
11809
11831
  return stys;
11810
11832
  });
11833
+ const computeXVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
11834
+ const {
11835
+ visible
11836
+ } = props;
11837
+ const xOpts = computeXOpts.value;
11838
+ return getDefaultConfig(xOpts.visible, visible);
11839
+ });
11840
+ const computeYVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
11841
+ const {
11842
+ visible
11843
+ } = props;
11844
+ const yOpts = computeYOpts.value;
11845
+ return getDefaultConfig(yOpts.visible, visible);
11846
+ });
11847
+ const computeXAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
11848
+ const {
11849
+ autoHide
11850
+ } = props;
11851
+ const xOpts = computeXOpts.value;
11852
+ return getDefaultConfig(xOpts.autoHide, autoHide);
11853
+ });
11854
+ const computeYAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
11855
+ const {
11856
+ autoHide
11857
+ } = props;
11858
+ const yOpts = computeYOpts.value;
11859
+ return getDefaultConfig(yOpts.autoHide, autoHide);
11860
+ });
11811
11861
  const computeWrapperClss = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
11812
11862
  const {
11813
11863
  native,
@@ -11818,14 +11868,16 @@ function scrollbar_createInternalData() {
11818
11868
  yThumbHeight,
11819
11869
  xThumbWidth
11820
11870
  } = reactData;
11821
- const xOpts = computeXOpts.value;
11822
- const yOpts = computeYOpts.value;
11823
11871
  const xToTop = computeXToTop.value;
11824
11872
  const yToLeft = computeYToLeft.value;
11825
- return scrollbar_domUtils.buildClass(['vxe-scrollbar', `ov-x--${xOpts.visible || 'visible'}`, `ov-y--${yOpts.visible || 'visible'}`, `sx-pos--${xToTop ? 'top' : 'bottom'}`, `sy-pos--${yToLeft ? 'left' : 'right'}`, native ? 'is--native' : 'is--virtual', className], {
11873
+ const xVisible = computeXVisible.value;
11874
+ const yVisible = computeYVisible.value;
11875
+ const xAutoHide = computeXAutoHide.value;
11876
+ const yAutoHide = computeYAutoHide.value;
11877
+ return scrollbar_domUtils.buildClass(['vxe-scrollbar', `ov-x--${xVisible === false ? 'hidden' : 'visible'}`, `ov-y--${yVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${xToTop ? 'top' : 'bottom'}`, `sy-pos--${yToLeft ? 'left' : 'right'}`, native ? 'is--native' : 'is--virtual', className], {
11826
11878
  'is--padding': padding,
11827
- 'ov-x--auto-hide': xOpts.autoHide,
11828
- 'ov-y--auto-hide': yOpts.autoHide,
11879
+ 'ov-x--auto-hide': xAutoHide,
11880
+ 'ov-y--auto-hide': yAutoHide,
11829
11881
  'overflow-y': yThumbHeight,
11830
11882
  'overflow-x': xThumbWidth
11831
11883
  });
@@ -12200,14 +12252,15 @@ function scrollbar_createInternalData() {
12200
12252
  id,
12201
12253
  native,
12202
12254
  loading,
12255
+ viewId,
12203
12256
  viewAttrs
12204
12257
  } = props;
12205
12258
  const wrapperStyle = computeWrapperStyle.value;
12206
12259
  const wrapperClss = computeWrapperClss.value;
12207
12260
  const viewClss = computeViewClss.value;
12208
12261
  const viewInnerClss = computeViewInnerClss.value;
12209
- const xOpts = computeXOpts.value;
12210
- const yOpts = computeYOpts.value;
12262
+ const xVisible = computeXVisible.value;
12263
+ const yVisible = computeYVisible.value;
12211
12264
  const defaultSlot = slots.default;
12212
12265
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12213
12266
  ref: refElem,
@@ -12218,12 +12271,13 @@ function scrollbar_createInternalData() {
12218
12271
  ref: refViewElem,
12219
12272
  class: viewClss,
12220
12273
  onScroll: scrollEvent,
12274
+ id: viewId || null,
12221
12275
  ...viewAttrs
12222
12276
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12223
12277
  key: 'vi',
12224
12278
  ref: refViewInnerElem,
12225
12279
  class: viewInnerClss
12226
- }, defaultSlot ? defaultSlot({}) : [])]), native || xOpts.visible === 'hidden' ? scrollbar_renderEmptyElement($xeScrollbar) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12280
+ }, defaultSlot ? defaultSlot({}) : [])]), native || xVisible === false ? scrollbar_renderEmptyElement($xeScrollbar) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12227
12281
  ref: refTrackXElem,
12228
12282
  class: 'vxe-scrollbar--track-x',
12229
12283
  onClick: clickTrackXEvent
@@ -12235,7 +12289,7 @@ function scrollbar_createInternalData() {
12235
12289
  onPointerup: cleatPointerThumbEvent,
12236
12290
  onPointercancel: cleatPointerThumbEvent,
12237
12291
  onLostpointercapture: cleatPointerThumbEvent
12238
- })]), native || yOpts.visible === 'hidden' ? scrollbar_renderEmptyElement($xeScrollbar) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12292
+ })]), native || yVisible === false ? scrollbar_renderEmptyElement($xeScrollbar) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
12239
12293
  ref: refTrackYElem,
12240
12294
  class: 'vxe-scrollbar--track-y',
12241
12295
  onClick: clickTrackYEvent
@@ -12277,6 +12331,16 @@ function scrollbar_createInternalData() {
12277
12331
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.syncResize, () => {
12278
12332
  reFlag.value++;
12279
12333
  });
12334
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeXVisible, () => {
12335
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
12336
+ reFlag.value++;
12337
+ });
12338
+ });
12339
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeYVisible, () => {
12340
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
12341
+ reFlag.value++;
12342
+ });
12343
+ });
12280
12344
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reFlag, () => {
12281
12345
  $xeScrollbar.recalculate().then(() => {
12282
12346
  $xeScrollbar.recalculate();
@@ -12410,6 +12474,19 @@ const Scrollbar = VxeScrollbar;
12410
12474
  const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
12411
12475
  return Object.assign({}, getConfig().card.scrollbarConfig, props.scrollbarConfig);
12412
12476
  });
12477
+ const computeScrollbarProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
12478
+ const scrollbarOpts = computeScrollbarOpts.value;
12479
+ return {
12480
+ width: scrollbarOpts.width,
12481
+ height: scrollbarOpts.height,
12482
+ autoHide: scrollbarOpts.autoHide,
12483
+ visible: scrollbarOpts.visible,
12484
+ xConfig: scrollbarOpts.xConfig,
12485
+ yConfig: scrollbarOpts.yConfig,
12486
+ className: scrollbarOpts.className,
12487
+ viewAttrs: scrollbarOpts.viewAttrs
12488
+ };
12489
+ });
12413
12490
  const computeMaps = {
12414
12491
  computeSize
12415
12492
  };
@@ -12451,6 +12528,7 @@ const Scrollbar = VxeScrollbar;
12451
12528
  const vSize = computeSize.value;
12452
12529
  const cardStyle = computeCardStyle.value;
12453
12530
  const scrollbarOpts = computeScrollbarOpts.value;
12531
+ const scrollbarProps = computeScrollbarProps.value;
12454
12532
  const {
12455
12533
  viewClassName,
12456
12534
  viewInnerClassName
@@ -12476,7 +12554,7 @@ const Scrollbar = VxeScrollbar;
12476
12554
  class: 'vxe-card--body'
12477
12555
  }, [leftSlot ? useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
12478
12556
  class: 'vxe-card--body-scrollbar-left',
12479
- ...scrollbarOpts,
12557
+ ...scrollbarProps,
12480
12558
  viewClassName: 'vxe-card--body-scrollbar-left-view',
12481
12559
  viewInnerClassName: 'vxe-card--body-scrollbar-left-inner'
12482
12560
  }, {
@@ -12485,7 +12563,7 @@ const Scrollbar = VxeScrollbar;
12485
12563
  class: 'vxe-card--body-left'
12486
12564
  }, vn_getSlotVNs(leftSlot({}))) : renderEmptyElement($xeCard), useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
12487
12565
  class: 'vxe-card--body-scrollbar-content',
12488
- ...scrollbarOpts,
12566
+ ...scrollbarProps,
12489
12567
  viewClassName: 'vxe-card--body-scrollbar-content-view' + (viewClassName ? ' ' + viewClassName : ''),
12490
12568
  viewInnerClassName: 'vxe-card--body-scrollbar-content-inner' + (viewClassName ? ' ' + viewInnerClassName : '')
12491
12569
  }, {
@@ -12494,7 +12572,7 @@ const Scrollbar = VxeScrollbar;
12494
12572
  class: 'vxe-card--body-content'
12495
12573
  }, defaultSlot ? vn_getSlotVNs(defaultSlot({})) : []), rightSlot ? useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
12496
12574
  class: 'vxe-card--body-scrollbar-right',
12497
- ...scrollbarOpts,
12575
+ ...scrollbarProps,
12498
12576
  viewClassName: 'vxe-card--body-scrollbar-right-view',
12499
12577
  viewInnerClassName: 'vxe-card--body-scrollbar-right-inner'
12500
12578
  }, {
@@ -13153,6 +13231,7 @@ function getItemCacheObj(item) {
13153
13231
 
13154
13232
 
13155
13233
 
13234
+
13156
13235
  const {
13157
13236
  warnLog: list_warnLog,
13158
13237
  errLog: list_errLog
@@ -13183,6 +13262,9 @@ function list_createReactData() {
13183
13262
  updateCheckboxFlag: 1,
13184
13263
  isAllChecked: false,
13185
13264
  isAllIndeterminate: false,
13265
+ // 滚动条
13266
+ yThumbHeight: 0,
13267
+ xThumbWidth: 0,
13186
13268
  insertRowFlag: 1,
13187
13269
  removeRowFlag: 1,
13188
13270
  dragRow: null,
@@ -13192,13 +13274,18 @@ function list_createReactData() {
13192
13274
  }
13193
13275
  function list_createInternalData() {
13194
13276
  return {
13195
- resizeObserver: undefined,
13196
13277
  fullData: [],
13197
13278
  afterList: [],
13198
13279
  fullKeyMaps: {},
13199
13280
  rowMaps: {},
13200
- lastScrollLeft: 0,
13281
+ // 滚动条
13282
+ // resizeObserver: undefined,
13283
+ // isThumbDrag: false,
13284
+ thumbDragOffset: 0,
13285
+ yThumbTop: 0,
13286
+ xThumbLeft: 0,
13201
13287
  lastScrollTop: 0,
13288
+ lastScrollLeft: 0,
13202
13289
  scrollYStore: {
13203
13290
  startIndex: 0,
13204
13291
  endIndex: 0,
@@ -13252,7 +13339,12 @@ let crossListDragRowObj = null;
13252
13339
  dragConfig: Object,
13253
13340
  menuConfig: Object,
13254
13341
  virtualYConfig: Object,
13255
- scrollY: Object
13342
+ scrollY: Object,
13343
+ useScrollbar: {
13344
+ type: Boolean,
13345
+ default: () => getConfig().list.useScrollbar
13346
+ },
13347
+ scrollbarConfig: Object
13256
13348
  },
13257
13349
  emits: ['update:checkRowKey', 'update:checkRowKeys', 'row-click', 'row-dblclick', 'current-change', 'radio-change', 'checkbox-change', 'checkbox-all', 'scroll', 'row-dragstart', 'row-dragover', 'row-dragend', 'row-remove-dragend', 'row-insert-dragend', 'row-menu', 'menu-click'],
13258
13350
  setup(props, context) {
@@ -13273,6 +13365,10 @@ let crossListDragRowObj = null;
13273
13365
  const refFooterElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13274
13366
  const refVirtualWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13275
13367
  const refVirtualBody = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13368
+ const refTrackXElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13369
+ const refTrackYElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13370
+ const refThumbXElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13371
+ const refThumbYElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13276
13372
  const refDragRowLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13277
13373
  const refDragTipElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
13278
13374
  const refMaps = {
@@ -13331,11 +13427,20 @@ let crossListDragRowObj = null;
13331
13427
  });
13332
13428
  const computeWrapperStyles = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13333
13429
  const rowHeight = computeRowHeight.value;
13334
- const style = {};
13430
+ const scrollbarOpts = computeScrollbarOpts.value;
13431
+ const scrollbarXOpts = computeScrollbarXOpts.value;
13432
+ const scrollbarYOpts = computeScrollbarYOpts.value;
13433
+ const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
13434
+ const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
13435
+ const stys = {};
13335
13436
  if (rowHeight) {
13336
- style['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
13437
+ stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight);
13337
13438
  }
13338
- return style;
13439
+ if (barWidth || barHeight) {
13440
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
13441
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
13442
+ }
13443
+ return stys;
13339
13444
  });
13340
13445
  const computeVirtualStyles = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13341
13446
  const {
@@ -13357,6 +13462,68 @@ let crossListDragRowObj = null;
13357
13462
  }
13358
13463
  return style;
13359
13464
  });
13465
+ const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13466
+ return Object.assign({}, getConfig().list.scrollbarConfig, props.scrollbarConfig);
13467
+ });
13468
+ const computeScrollbarXOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13469
+ const scrollbarOpts = computeScrollbarOpts.value;
13470
+ return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig);
13471
+ });
13472
+ const computeScrollbarYOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13473
+ const scrollbarOpts = computeScrollbarOpts.value;
13474
+ return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
13475
+ });
13476
+ const computeScrollXVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13477
+ const scrollbarOpts = computeScrollbarOpts.value;
13478
+ const scrollbarXOpts = computeScrollbarXOpts.value;
13479
+ return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
13480
+ });
13481
+ const computeScrollYVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13482
+ const scrollbarOpts = computeScrollbarOpts.value;
13483
+ const scrollbarYOpts = computeScrollbarYOpts.value;
13484
+ return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
13485
+ });
13486
+ const computeScrollXAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13487
+ const scrollbarOpts = computeScrollbarOpts.value;
13488
+ const scrollbarXOpts = computeScrollbarXOpts.value;
13489
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
13490
+ });
13491
+ const computeScrollYAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13492
+ const scrollbarOpts = computeScrollbarOpts.value;
13493
+ const scrollbarYOpts = computeScrollbarYOpts.value;
13494
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
13495
+ });
13496
+ const computeScrollbarWrapperClss = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13497
+ const scrollbarOpts = computeScrollbarOpts.value;
13498
+ const {
13499
+ padding
13500
+ } = scrollbarOpts;
13501
+ const {
13502
+ yThumbHeight,
13503
+ xThumbWidth
13504
+ } = reactData;
13505
+ const scrollbarXToTop = computeScrollbarXToTop.value;
13506
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
13507
+ const scrollXVisible = computeScrollXVisible.value;
13508
+ const scrollYVisible = computeScrollYVisible.value;
13509
+ const scrollXAutoHide = computeScrollXAutoHide.value;
13510
+ const scrollYAutoHide = computeScrollYAutoHide.value;
13511
+ return domUtils.buildClass(['vxe-scrollbar is--virtual', `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`, `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`], {
13512
+ 'is--padding': padding,
13513
+ 'ov-x--auto-hide': scrollXAutoHide,
13514
+ 'ov-y--auto-hide': scrollYAutoHide,
13515
+ 'overflow-y': yThumbHeight,
13516
+ 'overflow-x': xThumbWidth
13517
+ });
13518
+ });
13519
+ const computeScrollbarXToTop = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13520
+ const scrollbarXOpts = computeScrollbarXOpts.value;
13521
+ return scrollbarXOpts.position === 'top';
13522
+ });
13523
+ const computeScrollbarYToLeft = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
13524
+ const scrollbarYOpts = computeScrollbarYOpts.value;
13525
+ return scrollbarYOpts.position === 'left';
13526
+ });
13360
13527
  const dispatchEvent = (type, params, evnt) => {
13361
13528
  emit(type, createEvent(evnt, {
13362
13529
  $list: $xeList
@@ -13534,6 +13701,7 @@ let crossListDragRowObj = null;
13534
13701
  lastScrollLeft,
13535
13702
  lastScrollTop
13536
13703
  } = internalData;
13704
+ updateScrollbar();
13537
13705
  return clearScroll().then(() => {
13538
13706
  if (lastScrollLeft || lastScrollTop) {
13539
13707
  internalData.lastScrollLeft = 0;
@@ -13542,6 +13710,10 @@ let crossListDragRowObj = null;
13542
13710
  }
13543
13711
  });
13544
13712
  };
13713
+ const updateScrollbar = () => {
13714
+ updateThumbSize();
13715
+ updateThumbOffset();
13716
+ };
13545
13717
  /**
13546
13718
  * 重新计算列表
13547
13719
  */
@@ -13559,6 +13731,7 @@ let crossListDragRowObj = null;
13559
13731
  parentHeight = parentEl.clientHeight - Math.ceil(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(parentStyle.paddingLeft) + external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(parentStyle.paddingRight));
13560
13732
  }
13561
13733
  reactData.parentHeight = parentHeight;
13734
+ updateScrollbar();
13562
13735
  updateHeight();
13563
13736
  if (el.clientWidth && el.clientHeight) {
13564
13737
  return computeScrollLoad();
@@ -13596,6 +13769,7 @@ let crossListDragRowObj = null;
13596
13769
  const scrollLeft = scrollBodyElem.scrollLeft;
13597
13770
  const isX = scrollLeft !== internalData.lastScrollLeft;
13598
13771
  const isY = scrollTop !== internalData.lastScrollTop;
13772
+ updateThumbOffset();
13599
13773
  internalData.lastScrollTop = scrollTop;
13600
13774
  internalData.lastScrollLeft = scrollLeft;
13601
13775
  if (reactData.scrollYLoad) {
@@ -15102,6 +15276,183 @@ let crossListDragRowObj = null;
15102
15276
  hideDropTip();
15103
15277
  }
15104
15278
  };
15279
+ const updateThumbSize = () => {
15280
+ const viewEl = refVirtualWrapper.value;
15281
+ if (!viewEl) {
15282
+ return;
15283
+ }
15284
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
15285
+ return;
15286
+ }
15287
+ const trackXEl = refTrackXElem.value;
15288
+ const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
15289
+ const thumbXElem = refThumbXElem.value;
15290
+ if (thumbXElem) {
15291
+ thumbXElem.style.width = xThumbWidth + 'px';
15292
+ }
15293
+ reactData.xThumbWidth = xThumbWidth;
15294
+ const trackYEl = refTrackYElem.value;
15295
+ const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
15296
+ const thumbYElem = refThumbYElem.value;
15297
+ if (thumbYElem) {
15298
+ thumbYElem.style.height = yThumbHeight + 'px';
15299
+ }
15300
+ reactData.yThumbHeight = yThumbHeight;
15301
+ };
15302
+ const updateThumbOffset = () => {
15303
+ const viewEl = refVirtualWrapper.value;
15304
+ if (!viewEl) {
15305
+ return;
15306
+ }
15307
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
15308
+ return;
15309
+ }
15310
+ const {
15311
+ xThumbWidth,
15312
+ yThumbHeight
15313
+ } = reactData;
15314
+ const trackXEl = refTrackXElem.value;
15315
+ const thumbXElem = refThumbXElem.value;
15316
+ const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
15317
+ internalData.xThumbLeft = xThumbLeft;
15318
+ if (thumbXElem && xThumbWidth) {
15319
+ thumbXElem.style.width = xThumbWidth + 'px';
15320
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
15321
+ }
15322
+ const trackYEl = refTrackYElem.value;
15323
+ const thumbYElem = refThumbYElem.value;
15324
+ const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
15325
+ internalData.yThumbTop = yThumbTop;
15326
+ if (thumbYElem && yThumbHeight) {
15327
+ thumbYElem.style.height = yThumbHeight + 'px';
15328
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
15329
+ }
15330
+ };
15331
+ const clickTrackXEvent = evnt => {
15332
+ const trackEl = evnt.currentTarget;
15333
+ if (trackEl !== evnt.target) {
15334
+ return;
15335
+ }
15336
+ const viewEl = refVirtualWrapper.value;
15337
+ if (!viewEl) {
15338
+ return;
15339
+ }
15340
+ const {
15341
+ xThumbWidth
15342
+ } = reactData;
15343
+ const trackRect = trackEl.getBoundingClientRect();
15344
+ viewEl.scrollTo({
15345
+ left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
15346
+ behavior: 'auto'
15347
+ });
15348
+ };
15349
+ const clickTrackYEvent = evnt => {
15350
+ const trackEl = evnt.currentTarget;
15351
+ if (trackEl !== evnt.target) {
15352
+ return;
15353
+ }
15354
+ const viewEl = refVirtualWrapper.value;
15355
+ if (!viewEl) {
15356
+ return;
15357
+ }
15358
+ const {
15359
+ yThumbHeight
15360
+ } = reactData;
15361
+ const trackRect = trackEl.getBoundingClientRect();
15362
+ viewEl.scrollTo({
15363
+ top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
15364
+ behavior: 'auto'
15365
+ });
15366
+ };
15367
+ const pointerdownThumbXEvent = evnt => {
15368
+ const thumbEl = evnt.currentTarget;
15369
+ internalData.isThumbDrag = true;
15370
+ thumbEl.setPointerCapture(evnt.pointerId);
15371
+ const viewEl = refVirtualWrapper.value;
15372
+ if (!viewEl) {
15373
+ return;
15374
+ }
15375
+ const {
15376
+ xThumbWidth
15377
+ } = reactData;
15378
+ const trackEl = thumbEl.parentElement;
15379
+ const trackRect = trackEl.getBoundingClientRect();
15380
+ const pointerPosition = evnt.clientX - trackRect.left;
15381
+ // 记录 thumb 的偏移
15382
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
15383
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
15384
+ };
15385
+ const pointermoveThumbXEvent = evnt => {
15386
+ const thumbEl = evnt.currentTarget;
15387
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
15388
+ return;
15389
+ }
15390
+ const {
15391
+ isThumbDrag,
15392
+ thumbDragOffset
15393
+ } = internalData;
15394
+ if (isThumbDrag) {
15395
+ const viewEl = refVirtualWrapper.value;
15396
+ if (!viewEl) {
15397
+ return;
15398
+ }
15399
+ const {
15400
+ xThumbWidth
15401
+ } = reactData;
15402
+ const thumbEl = evnt.currentTarget;
15403
+ const trackEl = thumbEl.parentElement;
15404
+ const trackRect = trackEl.getBoundingClientRect();
15405
+ // 更新偏移
15406
+ viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
15407
+ }
15408
+ };
15409
+ const cleatPointerThumbEvent = evnt => {
15410
+ const thumbEl = evnt.currentTarget;
15411
+ thumbEl.releasePointerCapture(evnt.pointerId);
15412
+ internalData.isThumbDrag = false;
15413
+ };
15414
+ const pointerdownThumbYEvent = evnt => {
15415
+ const thumbEl = evnt.currentTarget;
15416
+ internalData.isThumbDrag = true;
15417
+ thumbEl.setPointerCapture(evnt.pointerId);
15418
+ const viewEl = refVirtualWrapper.value;
15419
+ if (!viewEl) {
15420
+ return;
15421
+ }
15422
+ const {
15423
+ yThumbHeight
15424
+ } = reactData;
15425
+ const trackEl = thumbEl.parentElement;
15426
+ const trackRect = trackEl.getBoundingClientRect();
15427
+ const pointerPosition = evnt.clientY - trackRect.top;
15428
+ // 记录 thumb 的偏移
15429
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
15430
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
15431
+ };
15432
+ const pointermoveThumbYEvent = evnt => {
15433
+ const thumbEl = evnt.currentTarget;
15434
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
15435
+ return;
15436
+ }
15437
+ const {
15438
+ isThumbDrag,
15439
+ thumbDragOffset
15440
+ } = internalData;
15441
+ if (isThumbDrag) {
15442
+ const viewEl = refVirtualWrapper.value;
15443
+ if (!viewEl) {
15444
+ return;
15445
+ }
15446
+ const {
15447
+ yThumbHeight
15448
+ } = reactData;
15449
+ const thumbEl = evnt.currentTarget;
15450
+ const trackEl = thumbEl.parentElement;
15451
+ const trackRect = trackEl.getBoundingClientRect();
15452
+ // 更新偏移
15453
+ viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
15454
+ }
15455
+ };
15105
15456
  Object.assign($xeList, listMethods, listPrivateMethods);
15106
15457
  const renderDragTip = () => {
15107
15458
  const {
@@ -15336,14 +15687,17 @@ let crossListDragRowObj = null;
15336
15687
  const {
15337
15688
  showCheckbox,
15338
15689
  className,
15339
- loading
15690
+ loading,
15691
+ useScrollbar
15340
15692
  } = props;
15341
15693
  const {
15342
15694
  bodyHeight,
15343
15695
  topSpaceHeight,
15344
15696
  rowList,
15345
15697
  isAllChecked,
15346
- isAllIndeterminate
15698
+ isAllIndeterminate,
15699
+ xThumbWidth,
15700
+ yThumbHeight
15347
15701
  } = reactData;
15348
15702
  const defaultSlot = slots.default;
15349
15703
  const headerSlot = slots.header;
@@ -15368,6 +15722,14 @@ let crossListDragRowObj = null;
15368
15722
  padding
15369
15723
  } = rowOpts;
15370
15724
  const isDrag = computeIsDrag.value;
15725
+ const scrollbarOpts = computeScrollbarOpts.value;
15726
+ const scrollXVisible = computeScrollXVisible.value;
15727
+ const scrollYVisible = computeScrollYVisible.value;
15728
+ const scrollbarXToTop = computeScrollbarXToTop.value;
15729
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
15730
+ const scrollXAutoHide = computeScrollXAutoHide.value;
15731
+ const scrollYAutoHide = computeScrollYAutoHide.value;
15732
+ const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
15371
15733
  const showDefChekboxHead = showCheckbox && showHeader !== false;
15372
15734
  const leOns = {};
15373
15735
  if (isCrossListDrag && !rowList.length) {
@@ -15375,10 +15737,16 @@ let crossListDragRowObj = null;
15375
15737
  }
15376
15738
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15377
15739
  ref: refElem,
15378
- class: ['vxe-list', className ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(className) ? className({
15740
+ class: ['vxe-list', useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', className ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(className) ? className({
15379
15741
  $list: $xeList
15380
15742
  }) : className : '', {
15381
15743
  [`size--${vSize}`]: vSize,
15744
+ 'is--virtual-scrollbar': useScrollbar,
15745
+ 'ov-padding': useScrollbar && scrollbarOpts.padding,
15746
+ 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
15747
+ 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
15748
+ 'overflow-y': yThumbHeight,
15749
+ 'overflow-x': xThumbWidth,
15382
15750
  'is--drag': isDrag,
15383
15751
  'is--loading': loading
15384
15752
  }],
@@ -15436,6 +15804,36 @@ let crossListDragRowObj = null;
15436
15804
  items: rowList,
15437
15805
  $list: $xeList
15438
15806
  })) : renderEmptyElement($xeList),
15807
+ /**
15808
+ * 滚动条
15809
+ */
15810
+ useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15811
+ class: scrollbarWrapperClss
15812
+ }, [scrollXVisible === false ? renderEmptyElement($xeList) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15813
+ ref: refTrackXElem,
15814
+ class: 'vxe-scrollbar--track-x',
15815
+ onClick: clickTrackXEvent
15816
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15817
+ ref: refThumbXElem,
15818
+ class: 'vxe-scrollbar--thumb-x',
15819
+ onPointerdown: pointerdownThumbXEvent,
15820
+ onPointermove: pointermoveThumbXEvent,
15821
+ onPointerup: cleatPointerThumbEvent,
15822
+ onPointercancel: cleatPointerThumbEvent,
15823
+ onLostpointercapture: cleatPointerThumbEvent
15824
+ })]), scrollYVisible === false ? renderEmptyElement($xeList) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15825
+ ref: refTrackYElem,
15826
+ class: 'vxe-scrollbar--track-y',
15827
+ onClick: clickTrackYEvent
15828
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
15829
+ ref: refThumbYElem,
15830
+ class: 'vxe-scrollbar--thumb-y',
15831
+ onPointerdown: pointerdownThumbYEvent,
15832
+ onPointermove: pointermoveThumbYEvent,
15833
+ onPointerup: cleatPointerThumbEvent,
15834
+ onPointercancel: cleatPointerThumbEvent,
15835
+ onLostpointercapture: cleatPointerThumbEvent
15836
+ })])]) : renderEmptyElement($xeList),
15439
15837
  /**
15440
15838
  * 拖拽提示
15441
15839
  */
@@ -15468,11 +15866,24 @@ let crossListDragRowObj = null;
15468
15866
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.syncResize, () => {
15469
15867
  reFlag.value++;
15470
15868
  });
15869
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.useScrollbar, () => {
15870
+ reFlag.value++;
15871
+ });
15471
15872
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeRowHeight, () => {
15472
15873
  reFlag.value++;
15473
15874
  });
15474
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reFlag, () => {
15875
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollXVisible, () => {
15876
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
15877
+ reFlag.value++;
15878
+ });
15879
+ });
15880
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollYVisible, () => {
15475
15881
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
15882
+ reFlag.value++;
15883
+ });
15884
+ });
15885
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reFlag, () => {
15886
+ recalculate().then(() => {
15476
15887
  recalculate();
15477
15888
  });
15478
15889
  });
@@ -15490,7 +15901,9 @@ let crossListDragRowObj = null;
15490
15901
  updateCheckboxModeValue();
15491
15902
  });
15492
15903
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onActivated)(() => {
15493
- recalculate().then(() => refreshScroll());
15904
+ recalculate().then(() => {
15905
+ refreshScroll();
15906
+ });
15494
15907
  });
15495
15908
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
15496
15909
  loadData(props.data || []);
@@ -15499,7 +15912,9 @@ let crossListDragRowObj = null;
15499
15912
  const {
15500
15913
  showSeq,
15501
15914
  showRadio,
15502
- showCheckbox
15915
+ showCheckbox,
15916
+ autoResize,
15917
+ useScrollbar
15503
15918
  } = props;
15504
15919
  const rowOpts = computeRowOpts.value;
15505
15920
  const {
@@ -15524,17 +15939,27 @@ let crossListDragRowObj = null;
15524
15939
  if (useKey && !keyField) {
15525
15940
  list_errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField']);
15526
15941
  }
15527
- if (props.autoResize) {
15942
+ if (useScrollbar || autoResize) {
15528
15943
  const el = refElem.value;
15529
- const resizeObserver = globalResize.create(() => recalculate());
15530
- resizeObserver.observe(el);
15944
+ const viewInnerEl = refVirtualBody.value;
15945
+ const resizeObserver = globalResize.create(() => {
15946
+ reFlag.value++;
15947
+ });
15531
15948
  if (el) {
15532
- resizeObserver.observe(el.parentElement);
15949
+ resizeObserver.observe(el);
15950
+ if (autoResize) {
15951
+ resizeObserver.observe(el.parentElement);
15952
+ }
15953
+ }
15954
+ if (viewInnerEl) {
15955
+ resizeObserver.observe(viewInnerEl);
15533
15956
  }
15534
15957
  internalData.resizeObserver = resizeObserver;
15535
15958
  }
15536
- recalculate();
15537
- globalEvents.on($xeList, 'resize', recalculate);
15959
+ reFlag.value++;
15960
+ globalEvents.on($xeList, 'resize', () => {
15961
+ reFlag.value++;
15962
+ });
15538
15963
  });
15539
15964
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
15540
15965
  const {
@@ -37421,10 +37846,7 @@ const ImagePreview = VxeImagePreview;
37421
37846
  const collapseOpts = computeCollapseOpts.value;
37422
37847
  const scrollbarOpts = computeScrollbarOpts.value;
37423
37848
  const {
37424
- native,
37425
- yConfig,
37426
37849
  className,
37427
- viewAttrs,
37428
37850
  viewClassName,
37429
37851
  viewInnerClassName
37430
37852
  } = scrollbarOpts;
@@ -37440,13 +37862,16 @@ const ImagePreview = VxeImagePreview;
37440
37862
  }],
37441
37863
  style: varStyle
37442
37864
  }, [useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
37443
- native,
37865
+ width: scrollbarOpts.width,
37866
+ height: scrollbarOpts.height,
37867
+ autoHide: scrollbarOpts.autoHide,
37868
+ visible: scrollbarOpts.visible,
37444
37869
  xConfig: {
37445
- visible: 'hidden'
37870
+ visible: false
37446
37871
  },
37447
- yConfig,
37872
+ yConfig: scrollbarOpts.yConfig,
37448
37873
  className: 'vxe-layout-aside--scrollbar' + (className ? ' ' + className : ''),
37449
- viewAttrs,
37874
+ viewAttrs: scrollbarOpts.viewAttrs,
37450
37875
  viewClassName: 'vxe-layout-aside--scrollbar-view' + (viewClassName ? ' ' + viewClassName : ''),
37451
37876
  viewInnerClassName: 'vxe-layout-aside--scrollbar-inner' + (viewInnerClassName ? ' ' + viewInnerClassName : '')
37452
37877
  }, {
@@ -37542,6 +37967,32 @@ function layout_body_createReactData() {
37542
37967
  const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
37543
37968
  return Object.assign({}, getConfig().layoutBody.scrollbarConfig, props.scrollbarConfig);
37544
37969
  });
37970
+ const computeScrollbarProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
37971
+ const {
37972
+ showBacktop
37973
+ } = props;
37974
+ const scrollbarOpts = computeScrollbarOpts.value;
37975
+ const {
37976
+ className,
37977
+ viewClassName,
37978
+ viewInnerClassName
37979
+ } = scrollbarOpts;
37980
+ return {
37981
+ width: scrollbarOpts.width,
37982
+ height: scrollbarOpts.height,
37983
+ autoHide: scrollbarOpts.autoHide,
37984
+ visible: scrollbarOpts.visible,
37985
+ xConfig: scrollbarOpts.xConfig,
37986
+ yConfig: scrollbarOpts.yConfig,
37987
+ className: 'vxe-layout-body--scrollbar' + (className ? ' ' + className : ''),
37988
+ viewAttrs: {
37989
+ ...scrollbarOpts.viewAttrs,
37990
+ id: showBacktop ? backtopId || null : null
37991
+ },
37992
+ viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? ' ' + viewClassName : ''),
37993
+ viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? ' ' + viewInnerClassName : '')
37994
+ };
37995
+ });
37545
37996
  const computeMaps = {
37546
37997
  computeSize
37547
37998
  };
@@ -37572,16 +38023,7 @@ function layout_body_createReactData() {
37572
38023
  useScrollbar
37573
38024
  } = props;
37574
38025
  const backtopOpts = computeBacktopOpts.value;
37575
- const scrollbarOpts = computeScrollbarOpts.value;
37576
- const {
37577
- native,
37578
- xConfig,
37579
- yConfig,
37580
- className,
37581
- viewAttrs,
37582
- viewClassName,
37583
- viewInnerClassName
37584
- } = scrollbarOpts;
38026
+ const scrollbarProps = computeScrollbarProps.value;
37585
38027
  const vSize = computeSize.value;
37586
38028
  const defaultSlot = slots.default;
37587
38029
  const backtopSlot = slots.backtop;
@@ -37604,18 +38046,7 @@ function layout_body_createReactData() {
37604
38046
  'is--loading': loading,
37605
38047
  'is--padding': padding
37606
38048
  }]
37607
- }, [useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
37608
- native,
37609
- xConfig,
37610
- yConfig,
37611
- className: 'vxe-layout-body--scrollbar' + (className ? ' ' + className : ''),
37612
- viewAttrs: {
37613
- ...viewAttrs,
37614
- id: showBacktop ? backtopId || null : null
37615
- },
37616
- viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? ' ' + viewClassName : ''),
37617
- viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? ' ' + viewInnerClassName : '')
37618
- }, {
38049
+ }, [useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, scrollbarProps, {
37619
38050
  default: () => defaultSlot ? defaultSlot({}) : []
37620
38051
  }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
37621
38052
  id: showBacktop ? backtopId : '',
@@ -50304,6 +50735,25 @@ const scrollbarOffsetSize = 20;
50304
50735
  const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
50305
50736
  return Object.assign({}, getConfig().tabs.scrollbarConfig, props.scrollbarConfig);
50306
50737
  });
50738
+ const computeScrollbarProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
50739
+ const scrollbarOpts = computeScrollbarOpts.value;
50740
+ const {
50741
+ viewClassName,
50742
+ viewInnerClassName
50743
+ } = scrollbarOpts;
50744
+ return {
50745
+ width: scrollbarOpts.width,
50746
+ height: scrollbarOpts.height,
50747
+ autoHide: scrollbarOpts.autoHide,
50748
+ visible: scrollbarOpts.visible,
50749
+ xConfig: scrollbarOpts.xConfig,
50750
+ yConfig: scrollbarOpts.yConfig,
50751
+ className: scrollbarOpts.className,
50752
+ viewAttrs: scrollbarOpts.viewAttrs,
50753
+ viewClassName: 'vxe-tabs-pane--scrollbar-item-view' + (viewClassName ? ' ' + viewClassName : ''),
50754
+ viewInnerClassName: 'vxe-tabs-pane--scrollbar-item-inner' + (viewClassName ? ' ' + viewInnerClassName : '')
50755
+ };
50756
+ });
50307
50757
  const computeMaps = {};
50308
50758
  const $xeTabs = {
50309
50759
  xID,
@@ -50979,20 +51429,14 @@ const scrollbarOffsetSize = 20;
50979
51429
  slots
50980
51430
  } = item;
50981
51431
  const defaultSlot = slots ? slots.default : null;
50982
- const scrollbarOpts = computeScrollbarOpts.value;
50983
- const {
50984
- viewClassName,
50985
- viewInnerClassName
50986
- } = scrollbarOpts;
51432
+ const scrollbarProps = computeScrollbarProps.value;
50987
51433
  if (name && initNames.includes(name)) {
50988
51434
  return useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(packages_scrollbar, {
50989
51435
  key: `${name}`,
50990
51436
  class: ['vxe-tabs-pane--scrollbar-item', {
50991
51437
  'is--visible': activeName === name
50992
51438
  }],
50993
- ...scrollbarOpts,
50994
- viewClassName: 'vxe-tabs-pane--scrollbar-item-view' + (viewClassName ? ' ' + viewClassName : ''),
50995
- viewInnerClassName: 'vxe-tabs-pane--scrollbar-item-inner' + (viewClassName ? ' ' + viewInnerClassName : '')
51439
+ ...scrollbarProps
50996
51440
  }, {
50997
51441
  default: () => defaultSlot ? callSlot(defaultSlot, {
50998
51442
  name
@@ -52678,6 +53122,7 @@ function getCrossTreeDragNodeInfo() {
52678
53122
 
52679
53123
 
52680
53124
 
53125
+
52681
53126
  const {
52682
53127
  warnLog: tree_warnLog,
52683
53128
  errLog: tree_errLog
@@ -52694,6 +53139,34 @@ const {
52694
53139
  function tree_getNodeUniqueId() {
52695
53140
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId('node_');
52696
53141
  }
53142
+ function tree_createReactData() {
53143
+ return {
53144
+ parentHeight: 0,
53145
+ customHeight: 0,
53146
+ customMinHeight: 0,
53147
+ customMaxHeight: 0,
53148
+ currentNode: null,
53149
+ scrollYLoad: false,
53150
+ bodyHeight: 0,
53151
+ topSpaceHeight: 0,
53152
+ selectRadioKey: null,
53153
+ treeList: [],
53154
+ updateExpandedFlag: 1,
53155
+ updateCheckboxFlag: 1,
53156
+ // 滚动条
53157
+ yThumbHeight: 0,
53158
+ xThumbWidth: 0,
53159
+ insertNodeFlag: 1,
53160
+ removeNodeFlag: 1,
53161
+ dragNode: null,
53162
+ dragTipText: '',
53163
+ isCrossDragNode: false,
53164
+ tooltipStore: {
53165
+ visible: false,
53166
+ node: null
53167
+ }
53168
+ };
53169
+ }
52697
53170
  function tree_createInternalData() {
52698
53171
  return {
52699
53172
  // initialized: false,
@@ -52706,8 +53179,14 @@ function tree_createInternalData() {
52706
53179
  indeterminateNodeMaps: {},
52707
53180
  treeExpandedMaps: {},
52708
53181
  treeExpandLazyLoadedMaps: {},
52709
- lastScrollLeft: 0,
53182
+ // 滚动条
53183
+ // resizeObserver: undefined,
53184
+ // isThumbDrag: false,
53185
+ thumbDragOffset: 0,
53186
+ yThumbTop: 0,
53187
+ xThumbLeft: 0,
52710
53188
  lastScrollTop: 0,
53189
+ lastScrollLeft: 0,
52711
53190
  scrollYStore: {
52712
53191
  startIndex: 0,
52713
53192
  endIndex: 0,
@@ -52724,31 +53203,6 @@ function tree_createInternalData() {
52724
53203
  // hpTimeout: undefined
52725
53204
  };
52726
53205
  }
52727
- function tree_createReactData() {
52728
- return {
52729
- parentHeight: 0,
52730
- customHeight: 0,
52731
- customMinHeight: 0,
52732
- customMaxHeight: 0,
52733
- currentNode: null,
52734
- scrollYLoad: false,
52735
- bodyHeight: 0,
52736
- topSpaceHeight: 0,
52737
- selectRadioKey: null,
52738
- treeList: [],
52739
- updateExpandedFlag: 1,
52740
- updateCheckboxFlag: 1,
52741
- insertNodeFlag: 1,
52742
- removeNodeFlag: 1,
52743
- dragNode: null,
52744
- dragTipText: '',
52745
- isCrossDragNode: false,
52746
- tooltipStore: {
52747
- visible: false,
52748
- node: null
52749
- }
52750
- };
52751
- }
52752
53206
  let crossTreeDragNodeObj = null;
52753
53207
  /* harmony default export */ var tree = (defineVxeComponent({
52754
53208
  name: 'VxeTree',
@@ -52879,7 +53333,12 @@ let crossTreeDragNodeObj = null;
52879
53333
  type: String,
52880
53334
  default: () => tree_getConfig().tree.size || tree_getConfig().size
52881
53335
  },
52882
- virtualYConfig: Object
53336
+ virtualYConfig: Object,
53337
+ useScrollbar: {
53338
+ type: Boolean,
53339
+ default: () => tree_getConfig().tree.useScrollbar
53340
+ },
53341
+ scrollbarConfig: Object
52883
53342
  },
52884
53343
  emits: ['update:modelValue', 'update:checkNodeKey', 'update:checkNodeKeys', 'node-click', 'node-dblclick', 'current-change', 'radio-change', 'checkbox-change', 'load-success', 'load-error', 'scroll', 'node-dragstart', 'node-dragover', 'node-dragend', 'node-remove-dragend', 'node-insert-dragend', 'node-expand', 'node-menu', 'menu-click'],
52885
53344
  setup(props, context) {
@@ -52896,6 +53355,10 @@ let crossTreeDragNodeObj = null;
52896
53355
  const refFooterWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
52897
53356
  const refVirtualWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
52898
53357
  const refVirtualBody = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
53358
+ const refTrackXElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
53359
+ const refTrackYElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
53360
+ const refThumbXElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
53361
+ const refThumbYElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
52899
53362
  const refDragNodeLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
52900
53363
  const refDragTipElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
52901
53364
  const refTooltip = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -52975,6 +53438,19 @@ let crossTreeDragNodeObj = null;
52975
53438
  const computeMenuOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
52976
53439
  return Object.assign({}, tree_getConfig().tree.menuConfig, props.menuConfig);
52977
53440
  });
53441
+ const computeWrapperStyles = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53442
+ const scrollbarOpts = computeScrollbarOpts.value;
53443
+ const scrollbarXOpts = computeScrollbarXOpts.value;
53444
+ const scrollbarYOpts = computeScrollbarYOpts.value;
53445
+ const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), tree_getConfig().scrollbar.width);
53446
+ const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), tree_getConfig().scrollbar.height);
53447
+ const stys = {};
53448
+ if (barWidth || barHeight) {
53449
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
53450
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
53451
+ }
53452
+ return stys;
53453
+ });
52978
53454
  const computeTreeStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
52979
53455
  const {
52980
53456
  indent
@@ -53018,6 +53494,70 @@ let crossTreeDragNodeObj = null;
53018
53494
  const computeFilterOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53019
53495
  return Object.assign({}, tree_getConfig().tree.filterConfig, props.filterConfig);
53020
53496
  });
53497
+ const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53498
+ return Object.assign({}, tree_getConfig().tree.scrollbarConfig, props.scrollbarConfig);
53499
+ });
53500
+ const computeScrollbarXOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53501
+ const scrollbarOpts = computeScrollbarOpts.value;
53502
+ return Object.assign({}, tree_getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
53503
+ visible: false
53504
+ });
53505
+ });
53506
+ const computeScrollbarYOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53507
+ const scrollbarOpts = computeScrollbarOpts.value;
53508
+ return Object.assign({}, tree_getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
53509
+ });
53510
+ const computeScrollXVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53511
+ const scrollbarOpts = computeScrollbarOpts.value;
53512
+ const scrollbarXOpts = computeScrollbarXOpts.value;
53513
+ return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
53514
+ });
53515
+ const computeScrollYVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53516
+ const scrollbarOpts = computeScrollbarOpts.value;
53517
+ const scrollbarYOpts = computeScrollbarYOpts.value;
53518
+ return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
53519
+ });
53520
+ const computeScrollXAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53521
+ const scrollbarOpts = computeScrollbarOpts.value;
53522
+ const scrollbarXOpts = computeScrollbarXOpts.value;
53523
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), tree_getConfig().scrollbar.autoHide);
53524
+ });
53525
+ const computeScrollYAutoHide = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53526
+ const scrollbarOpts = computeScrollbarOpts.value;
53527
+ const scrollbarYOpts = computeScrollbarYOpts.value;
53528
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), tree_getConfig().scrollbar.autoHide);
53529
+ });
53530
+ const computeScrollbarWrapperClss = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53531
+ const scrollbarOpts = computeScrollbarOpts.value;
53532
+ const {
53533
+ padding
53534
+ } = scrollbarOpts;
53535
+ const {
53536
+ yThumbHeight,
53537
+ xThumbWidth
53538
+ } = reactData;
53539
+ const scrollbarXToTop = computeScrollbarXToTop.value;
53540
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
53541
+ const scrollXVisible = computeScrollXVisible.value;
53542
+ const scrollYVisible = computeScrollYVisible.value;
53543
+ const scrollXAutoHide = computeScrollXAutoHide.value;
53544
+ const scrollYAutoHide = computeScrollYAutoHide.value;
53545
+ return domUtils.buildClass(['vxe-scrollbar is--virtual', `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`, `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`], {
53546
+ 'is--padding': padding,
53547
+ 'ov-x--auto-hide': scrollXAutoHide,
53548
+ 'ov-y--auto-hide': scrollYAutoHide,
53549
+ 'overflow-y': yThumbHeight,
53550
+ 'overflow-x': xThumbWidth
53551
+ });
53552
+ });
53553
+ const computeScrollbarXToTop = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53554
+ const scrollbarXOpts = computeScrollbarXOpts.value;
53555
+ return scrollbarXOpts.position === 'top';
53556
+ });
53557
+ const computeScrollbarYToLeft = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
53558
+ const scrollbarYOpts = computeScrollbarYOpts.value;
53559
+ return scrollbarYOpts.position === 'left';
53560
+ });
53021
53561
  const computeMaps = {
53022
53562
  computeKeyField,
53023
53563
  computeParentField,
@@ -53614,6 +54154,10 @@ let crossTreeDragNodeObj = null;
53614
54154
  }
53615
54155
  });
53616
54156
  };
54157
+ const updateScrollbar = () => {
54158
+ updateThumbSize();
54159
+ updateThumbOffset();
54160
+ };
53617
54161
  /**
53618
54162
  * 重新计算列表
53619
54163
  */
@@ -53639,6 +54183,7 @@ let crossTreeDragNodeObj = null;
53639
54183
  const parentPaddingSize = getPaddingTopBottomSize(parentEl);
53640
54184
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
53641
54185
  }
54186
+ updateScrollbar();
53642
54187
  updateHeight();
53643
54188
  return computeScrollLoad().then(() => {
53644
54189
  updateHeight();
@@ -53680,6 +54225,7 @@ let crossTreeDragNodeObj = null;
53680
54225
  const scrollLeft = scrollBodyElem.scrollLeft;
53681
54226
  const isX = scrollLeft !== internalData.lastScrollLeft;
53682
54227
  const isY = scrollTop !== internalData.lastScrollTop;
54228
+ updateThumbOffset();
53683
54229
  internalData.lastScrollTop = scrollTop;
53684
54230
  internalData.lastScrollLeft = scrollLeft;
53685
54231
  if (reactData.scrollYLoad) {
@@ -54355,13 +54901,6 @@ let crossTreeDragNodeObj = null;
54355
54901
  checked: isChecked
54356
54902
  }, evnt);
54357
54903
  };
54358
- const handleGlobalResizeEvent = () => {
54359
- const el = refElem.value;
54360
- if (!el || !el.clientWidth) {
54361
- return;
54362
- }
54363
- recalculate();
54364
- };
54365
54904
  const insertTreeNode = (newRecords, isAppend) => {
54366
54905
  const {
54367
54906
  treeFullData,
@@ -56024,6 +56563,183 @@ let crossTreeDragNodeObj = null;
56024
56563
  hideDropTip();
56025
56564
  }
56026
56565
  };
56566
+ const updateThumbSize = () => {
56567
+ const viewEl = refVirtualWrapper.value;
56568
+ if (!viewEl) {
56569
+ return;
56570
+ }
56571
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
56572
+ return;
56573
+ }
56574
+ const trackXEl = refTrackXElem.value;
56575
+ const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
56576
+ const thumbXElem = refThumbXElem.value;
56577
+ if (thumbXElem) {
56578
+ thumbXElem.style.width = xThumbWidth + 'px';
56579
+ }
56580
+ reactData.xThumbWidth = xThumbWidth;
56581
+ const trackYEl = refTrackYElem.value;
56582
+ const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
56583
+ const thumbYElem = refThumbYElem.value;
56584
+ if (thumbYElem) {
56585
+ thumbYElem.style.height = yThumbHeight + 'px';
56586
+ }
56587
+ reactData.yThumbHeight = yThumbHeight;
56588
+ };
56589
+ const updateThumbOffset = () => {
56590
+ const viewEl = refVirtualWrapper.value;
56591
+ if (!viewEl) {
56592
+ return;
56593
+ }
56594
+ if (!viewEl.clientHeight || !viewEl.clientHeight) {
56595
+ return;
56596
+ }
56597
+ const {
56598
+ xThumbWidth,
56599
+ yThumbHeight
56600
+ } = reactData;
56601
+ const trackXEl = refTrackXElem.value;
56602
+ const thumbXElem = refThumbXElem.value;
56603
+ const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
56604
+ internalData.xThumbLeft = xThumbLeft;
56605
+ if (thumbXElem && xThumbWidth) {
56606
+ thumbXElem.style.width = xThumbWidth + 'px';
56607
+ thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
56608
+ }
56609
+ const trackYEl = refTrackYElem.value;
56610
+ const thumbYElem = refThumbYElem.value;
56611
+ const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
56612
+ internalData.yThumbTop = yThumbTop;
56613
+ if (thumbYElem && yThumbHeight) {
56614
+ thumbYElem.style.height = yThumbHeight + 'px';
56615
+ thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
56616
+ }
56617
+ };
56618
+ const clickTrackXEvent = evnt => {
56619
+ const trackEl = evnt.currentTarget;
56620
+ if (trackEl !== evnt.target) {
56621
+ return;
56622
+ }
56623
+ const viewEl = refVirtualWrapper.value;
56624
+ if (!viewEl) {
56625
+ return;
56626
+ }
56627
+ const {
56628
+ xThumbWidth
56629
+ } = reactData;
56630
+ const trackRect = trackEl.getBoundingClientRect();
56631
+ viewEl.scrollTo({
56632
+ left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
56633
+ behavior: 'auto'
56634
+ });
56635
+ };
56636
+ const clickTrackYEvent = evnt => {
56637
+ const trackEl = evnt.currentTarget;
56638
+ if (trackEl !== evnt.target) {
56639
+ return;
56640
+ }
56641
+ const viewEl = refVirtualWrapper.value;
56642
+ if (!viewEl) {
56643
+ return;
56644
+ }
56645
+ const {
56646
+ yThumbHeight
56647
+ } = reactData;
56648
+ const trackRect = trackEl.getBoundingClientRect();
56649
+ viewEl.scrollTo({
56650
+ top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
56651
+ behavior: 'auto'
56652
+ });
56653
+ };
56654
+ const pointerdownThumbXEvent = evnt => {
56655
+ const thumbEl = evnt.currentTarget;
56656
+ internalData.isThumbDrag = true;
56657
+ thumbEl.setPointerCapture(evnt.pointerId);
56658
+ const viewEl = refVirtualWrapper.value;
56659
+ if (!viewEl) {
56660
+ return;
56661
+ }
56662
+ const {
56663
+ xThumbWidth
56664
+ } = reactData;
56665
+ const trackEl = thumbEl.parentElement;
56666
+ const trackRect = trackEl.getBoundingClientRect();
56667
+ const pointerPosition = evnt.clientX - trackRect.left;
56668
+ // 记录 thumb 的偏移
56669
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
56670
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
56671
+ };
56672
+ const pointermoveThumbXEvent = evnt => {
56673
+ const thumbEl = evnt.currentTarget;
56674
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
56675
+ return;
56676
+ }
56677
+ const {
56678
+ isThumbDrag,
56679
+ thumbDragOffset
56680
+ } = internalData;
56681
+ if (isThumbDrag) {
56682
+ const viewEl = refVirtualWrapper.value;
56683
+ if (!viewEl) {
56684
+ return;
56685
+ }
56686
+ const {
56687
+ xThumbWidth
56688
+ } = reactData;
56689
+ const thumbEl = evnt.currentTarget;
56690
+ const trackEl = thumbEl.parentElement;
56691
+ const trackRect = trackEl.getBoundingClientRect();
56692
+ // 更新偏移
56693
+ viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
56694
+ }
56695
+ };
56696
+ const cleatPointerThumbEvent = evnt => {
56697
+ const thumbEl = evnt.currentTarget;
56698
+ thumbEl.releasePointerCapture(evnt.pointerId);
56699
+ internalData.isThumbDrag = false;
56700
+ };
56701
+ const pointerdownThumbYEvent = evnt => {
56702
+ const thumbEl = evnt.currentTarget;
56703
+ internalData.isThumbDrag = true;
56704
+ thumbEl.setPointerCapture(evnt.pointerId);
56705
+ const viewEl = refVirtualWrapper.value;
56706
+ if (!viewEl) {
56707
+ return;
56708
+ }
56709
+ const {
56710
+ yThumbHeight
56711
+ } = reactData;
56712
+ const trackEl = thumbEl.parentElement;
56713
+ const trackRect = trackEl.getBoundingClientRect();
56714
+ const pointerPosition = evnt.clientY - trackRect.top;
56715
+ // 记录 thumb 的偏移
56716
+ const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
56717
+ internalData.thumbDragOffset = pointerPosition - thumbOffset;
56718
+ };
56719
+ const pointermoveThumbYEvent = evnt => {
56720
+ const thumbEl = evnt.currentTarget;
56721
+ if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
56722
+ return;
56723
+ }
56724
+ const {
56725
+ isThumbDrag,
56726
+ thumbDragOffset
56727
+ } = internalData;
56728
+ if (isThumbDrag) {
56729
+ const viewEl = refVirtualWrapper.value;
56730
+ if (!viewEl) {
56731
+ return;
56732
+ }
56733
+ const {
56734
+ yThumbHeight
56735
+ } = reactData;
56736
+ const thumbEl = evnt.currentTarget;
56737
+ const trackEl = thumbEl.parentElement;
56738
+ const trackRect = trackEl.getBoundingClientRect();
56739
+ // 更新偏移
56740
+ viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
56741
+ }
56742
+ };
56027
56743
  Object.assign($xeTree, treeMethods, treePrivateMethods);
56028
56744
  const renderDragIcon = (node, nodeid) => {
56029
56745
  const {
@@ -56368,19 +57084,23 @@ let crossTreeDragNodeObj = null;
56368
57084
  const {
56369
57085
  loading,
56370
57086
  trigger,
56371
- showLine
57087
+ showLine,
57088
+ useScrollbar
56372
57089
  } = props;
56373
57090
  const {
56374
57091
  bodyHeight,
56375
57092
  topSpaceHeight,
56376
57093
  treeList,
56377
- tooltipStore
57094
+ tooltipStore,
57095
+ xThumbWidth,
57096
+ yThumbHeight
56378
57097
  } = reactData;
56379
57098
  const vSize = computeSize.value;
56380
57099
  const radioOpts = computeRadioOpts.value;
56381
57100
  const checkboxOpts = computeCheckboxOpts.value;
56382
57101
  const loadingOpts = computeLoadingOpts.value;
56383
57102
  const isNodeHover = computeIsNodeHover.value;
57103
+ const wrapperStyles = computeWrapperStyles.value;
56384
57104
  const treeStyle = computeTreeStyle.value;
56385
57105
  const dragOpts = computeDragOpts.value;
56386
57106
  const tooltipOpts = computeTooltipOpts.value;
@@ -56388,21 +57108,36 @@ let crossTreeDragNodeObj = null;
56388
57108
  const headerSlot = slots.header;
56389
57109
  const footerSlot = slots.footer;
56390
57110
  const tooltipSlot = slots.tooltip;
57111
+ const scrollbarOpts = computeScrollbarOpts.value;
57112
+ const scrollXVisible = computeScrollXVisible.value;
57113
+ const scrollYVisible = computeScrollYVisible.value;
57114
+ const scrollbarXToTop = computeScrollbarXToTop.value;
57115
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
57116
+ const scrollXAutoHide = computeScrollXAutoHide.value;
57117
+ const scrollYAutoHide = computeScrollYAutoHide.value;
57118
+ const scrollbarWrapperClss = computeScrollbarWrapperClss.value;
56391
57119
  const teOns = {};
56392
57120
  if (dragOpts.isCrossTreeDrag && !treeList.length) {
56393
57121
  teOns.onDragover = $xeTree.handleCrossTreeNodeDragoverEmptyEvent;
56394
57122
  }
56395
57123
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
56396
57124
  ref: refElem,
56397
- class: ['vxe-tree', {
57125
+ class: ['vxe-tree', useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '', useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '', useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '', {
56398
57126
  [`size--${vSize}`]: vSize,
56399
57127
  'show--line': showLine,
57128
+ 'is--virtual-scrollbar': useScrollbar,
57129
+ 'ov-padding': useScrollbar && scrollbarOpts.padding,
57130
+ 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
57131
+ 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
57132
+ 'overflow-y': yThumbHeight,
57133
+ 'overflow-x': xThumbWidth,
56400
57134
  'checkbox--highlight': checkboxOpts.highlight,
56401
57135
  'radio--highlight': radioOpts.highlight,
56402
57136
  'node--hover': isNodeHover,
56403
57137
  'node--trigger': trigger === 'node',
56404
57138
  'is--loading': loading
56405
57139
  }],
57140
+ style: wrapperStyles,
56406
57141
  ...teOns
56407
57142
  }, [headerSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
56408
57143
  ref: refHeaderWrapperElem,
@@ -56431,6 +57166,36 @@ let crossTreeDragNodeObj = null;
56431
57166
  }, footerSlot({
56432
57167
  $tree: $xeTree
56433
57168
  })) : renderEmptyElement($xeTree),
57169
+ /**
57170
+ * 滚动条
57171
+ */
57172
+ useScrollbar ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
57173
+ class: scrollbarWrapperClss
57174
+ }, [scrollXVisible === false ? renderEmptyElement($xeTree) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
57175
+ ref: refTrackXElem,
57176
+ class: 'vxe-scrollbar--track-x',
57177
+ onClick: clickTrackXEvent
57178
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
57179
+ ref: refThumbXElem,
57180
+ class: 'vxe-scrollbar--thumb-x',
57181
+ onPointerdown: pointerdownThumbXEvent,
57182
+ onPointermove: pointermoveThumbXEvent,
57183
+ onPointerup: cleatPointerThumbEvent,
57184
+ onPointercancel: cleatPointerThumbEvent,
57185
+ onLostpointercapture: cleatPointerThumbEvent
57186
+ })]), scrollYVisible === false ? renderEmptyElement($xeTree) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
57187
+ ref: refTrackYElem,
57188
+ class: 'vxe-scrollbar--track-y',
57189
+ onClick: clickTrackYEvent
57190
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
57191
+ ref: refThumbYElem,
57192
+ class: 'vxe-scrollbar--thumb-y',
57193
+ onPointerdown: pointerdownThumbYEvent,
57194
+ onPointermove: pointermoveThumbYEvent,
57195
+ onPointerup: cleatPointerThumbEvent,
57196
+ onPointercancel: cleatPointerThumbEvent,
57197
+ onLostpointercapture: cleatPointerThumbEvent
57198
+ })])]) : renderEmptyElement($xeTree),
56434
57199
  /**
56435
57200
  * 拖拽提示
56436
57201
  */
@@ -56514,18 +57279,33 @@ let crossTreeDragNodeObj = null;
56514
57279
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.filterValue, () => {
56515
57280
  triggerSearchEvent(new Event('filter'));
56516
57281
  });
56517
- const hFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
57282
+ const reFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
56518
57283
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.height, () => {
56519
- hFlag.value++;
57284
+ reFlag.value++;
56520
57285
  });
56521
57286
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.minHeight, () => {
56522
- hFlag.value++;
57287
+ reFlag.value++;
56523
57288
  });
56524
57289
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.maxHeight, () => {
56525
- hFlag.value++;
57290
+ reFlag.value++;
56526
57291
  });
56527
- (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(hFlag, () => {
56528
- recalculate();
57292
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.useScrollbar, () => {
57293
+ reFlag.value++;
57294
+ });
57295
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollXVisible, () => {
57296
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
57297
+ reFlag.value++;
57298
+ });
57299
+ });
57300
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollYVisible, () => {
57301
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
57302
+ reFlag.value++;
57303
+ });
57304
+ });
57305
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reFlag, () => {
57306
+ recalculate().then(() => {
57307
+ recalculate();
57308
+ });
56529
57309
  });
56530
57310
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
56531
57311
  const {
@@ -56534,7 +57314,9 @@ let crossTreeDragNodeObj = null;
56534
57314
  menuConfig,
56535
57315
  showOverflow,
56536
57316
  lazy,
56537
- loadMethod
57317
+ loadMethod,
57318
+ autoResize,
57319
+ useScrollbar
56538
57320
  } = props;
56539
57321
  const dragOpts = computeDragOpts.value;
56540
57322
  if (!showOverflow) {
@@ -56556,24 +57338,30 @@ let crossTreeDragNodeObj = null;
56556
57338
  if (menuConfig && !VxeUIContextMenu) {
56557
57339
  tree_errLog('vxe.error.reqComp', ['vxe-context-menu']);
56558
57340
  }
56559
- if (props.autoResize) {
57341
+ if (useScrollbar || autoResize) {
56560
57342
  const el = refElem.value;
57343
+ const viewInnerEl = refVirtualBody.value;
56561
57344
  const parentEl = getParentElem();
56562
57345
  const resizeObserver = globalResize.create(() => {
56563
- if (props.autoResize) {
56564
- recalculate();
56565
- }
57346
+ reFlag.value++;
56566
57347
  });
56567
57348
  if (el) {
56568
57349
  resizeObserver.observe(el);
57350
+ if (autoResize) {
57351
+ if (parentEl) {
57352
+ resizeObserver.observe(parentEl);
57353
+ }
57354
+ }
56569
57355
  }
56570
- if (parentEl) {
56571
- resizeObserver.observe(parentEl);
57356
+ if (viewInnerEl) {
57357
+ resizeObserver.observe(viewInnerEl);
56572
57358
  }
56573
57359
  internalData.resizeObserver = resizeObserver;
56574
57360
  }
56575
- recalculate();
56576
- globalEvents.on($xeTree, 'resize', handleGlobalResizeEvent);
57361
+ reFlag.value++;
57362
+ globalEvents.on($xeTree, 'resize', () => {
57363
+ reFlag.value++;
57364
+ });
56577
57365
  });
56578
57366
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
56579
57367
  const {