vxe-pc-ui 3.20.0 → 3.20.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/es/card/src/card.js +20 -4
  2. package/es/drawer/src/drawer.js +75 -16
  3. package/es/drawer/style.css +13 -6
  4. package/es/drawer/style.min.css +1 -1
  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 +10 -6
  8. package/es/layout-body/src/layout-body.js +24 -12
  9. package/es/list/src/list.js +131 -49
  10. package/es/list/style.css +25 -8
  11. package/es/list/style.min.css +1 -1
  12. package/es/menu/src/menu.js +2 -2
  13. package/es/modal/src/modal.js +73 -14
  14. package/es/modal/style.css +4 -0
  15. package/es/modal/style.min.css +1 -1
  16. package/es/scrollbar/src/scrollbar.js +87 -19
  17. package/es/style.css +1 -1
  18. package/es/style.min.css +1 -1
  19. package/es/tabs/src/tabs.js +21 -5
  20. package/es/tree/src/tree.js +460 -54
  21. package/es/tree/style.css +43 -0
  22. package/es/tree/style.min.css +1 -1
  23. package/es/ui/index.js +1 -1
  24. package/es/ui/src/log.js +1 -1
  25. package/es/ui/src/utils.js +3 -0
  26. package/es/vxe-drawer/style.css +13 -6
  27. package/es/vxe-drawer/style.min.css +1 -1
  28. package/es/vxe-list/style.css +25 -8
  29. package/es/vxe-list/style.min.css +1 -1
  30. package/es/vxe-modal/style.css +4 -0
  31. package/es/vxe-modal/style.min.css +1 -1
  32. package/es/vxe-tree/style.css +43 -0
  33. package/es/vxe-tree/style.min.css +1 -1
  34. package/lib/card/src/card.js +20 -4
  35. package/lib/card/src/card.min.js +1 -1
  36. package/lib/drawer/src/drawer.js +76 -12
  37. package/lib/drawer/src/drawer.min.js +1 -1
  38. package/lib/drawer/style/style.css +13 -6
  39. package/lib/drawer/style/style.min.css +1 -1
  40. package/lib/icon/style/style.css +1 -1
  41. package/lib/icon/style/style.min.css +1 -1
  42. package/lib/index.umd.js +956 -185
  43. package/lib/index.umd.min.js +1 -1
  44. package/lib/language/fr-FR.js +29 -29
  45. package/lib/language/fr-FR.min.js +1 -1
  46. package/lib/language/fr-FR.umd.js +29 -29
  47. package/lib/layout-aside/src/layout-aside.js +10 -9
  48. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  49. package/lib/layout-body/src/layout-body.js +28 -20
  50. package/lib/layout-body/src/layout-body.min.js +1 -1
  51. package/lib/list/src/list.js +119 -46
  52. package/lib/list/src/list.min.js +1 -1
  53. package/lib/list/style/style.css +25 -8
  54. package/lib/list/style/style.min.css +1 -1
  55. package/lib/menu/src/menu.js +1 -1
  56. package/lib/menu/src/menu.min.js +1 -1
  57. package/lib/modal/src/modal.js +74 -12
  58. package/lib/modal/src/modal.min.js +1 -1
  59. package/lib/modal/style/style.css +4 -0
  60. package/lib/modal/style/style.min.css +1 -1
  61. package/lib/scrollbar/src/scrollbar.js +92 -17
  62. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  63. package/lib/style.css +1 -1
  64. package/lib/style.min.css +1 -1
  65. package/lib/tabs/src/tabs.js +21 -8
  66. package/lib/tabs/src/tabs.min.js +1 -1
  67. package/lib/tree/src/tree.js +438 -51
  68. package/lib/tree/src/tree.min.js +1 -1
  69. package/lib/tree/style/style.css +43 -0
  70. package/lib/tree/style/style.min.css +1 -1
  71. package/lib/ui/index.js +1 -1
  72. package/lib/ui/index.min.js +1 -1
  73. package/lib/ui/src/log.js +1 -1
  74. package/lib/ui/src/log.min.js +1 -1
  75. package/lib/ui/src/utils.js +4 -0
  76. package/lib/ui/src/utils.min.js +1 -1
  77. package/lib/vxe-drawer/style/style.css +13 -6
  78. package/lib/vxe-drawer/style/style.min.css +1 -1
  79. package/lib/vxe-list/style/style.css +25 -8
  80. package/lib/vxe-list/style/style.min.css +1 -1
  81. package/lib/vxe-modal/style/style.css +4 -0
  82. package/lib/vxe-modal/style/style.min.css +1 -1
  83. package/lib/vxe-tree/style/style.css +43 -0
  84. package/lib/vxe-tree/style/style.min.css +1 -1
  85. package/package.json +2 -2
  86. package/packages/card/src/card.ts +21 -4
  87. package/packages/drawer/src/drawer.ts +80 -16
  88. package/packages/language/fr-FR.ts +903 -903
  89. package/packages/layout-aside/src/layout-aside.ts +10 -6
  90. package/packages/layout-body/src/layout-body.ts +28 -15
  91. package/packages/list/src/list.ts +149 -55
  92. package/packages/menu/src/menu.ts +2 -2
  93. package/packages/modal/src/modal.ts +83 -19
  94. package/packages/scrollbar/src/scrollbar.ts +101 -19
  95. package/packages/tabs/src/tabs.ts +22 -9
  96. package/packages/tree/src/tree.ts +508 -65
  97. package/packages/ui/src/utils.ts +4 -0
  98. package/styles/components/drawer.scss +13 -6
  99. package/styles/components/list.scss +35 -10
  100. package/styles/components/modal.scss +4 -0
  101. package/styles/components/tree.scss +76 -0
  102. package/types/components/card.d.ts +10 -1
  103. package/types/components/drawer.d.ts +20 -0
  104. package/types/components/gantt-module/gantt-view.d.ts +24 -1
  105. package/types/components/gantt.d.ts +2 -0
  106. package/types/components/layout-aside.d.ts +10 -1
  107. package/types/components/layout-body.d.ts +10 -1
  108. package/types/components/list.d.ts +13 -2
  109. package/types/components/modal.d.ts +20 -0
  110. package/types/components/scrollbar.d.ts +16 -2
  111. package/types/components/table.d.ts +80 -6
  112. package/types/components/tabs.d.ts +10 -1
  113. package/types/components/tree.d.ts +35 -2
  114. /package/es/icon/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  115. /package/es/icon/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  116. /package/es/icon/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  117. /package/es/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  118. /package/es/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  119. /package/es/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  120. /package/lib/icon/style/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  121. /package/lib/icon/style/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  122. /package/lib/icon/style/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
  123. /package/lib/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
  124. /package/lib/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
  125. /package/lib/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
@@ -2,6 +2,7 @@ import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { toCssUnit } from '../../ui/src/dom'
4
4
  import { getConfig, createEvent, globalMixins } from '../../ui'
5
+ import { getDefaultConfig } from '../../ui/src/utils'
5
6
  import XEUtils from 'xe-utils'
6
7
  import VxeLoadingComponent from '../../loading'
7
8
  import VxeScrollbarComponent from '../../scrollbar'
@@ -22,7 +23,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
22
23
  collapseConfig: Object as PropType<VxeLayoutAsidePropTypes.CollapseConfig>,
23
24
  useScrollbar: {
24
25
  type: Boolean as PropType<VxeLayoutAsidePropTypes.UseScrollbar>,
25
- default: () => getConfig().layoutAside.useScrollbar
26
+ default: () => getDefaultConfig(getConfig().layoutAside.useScrollbar, getConfig().useScrollbar)
26
27
  },
27
28
  scrollbarConfig: Object as PropType<VxeLayoutAsidePropTypes.ScrollbarConfig>,
28
29
  size: {
@@ -97,7 +98,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
97
98
  const vSize = $xeLayoutAside.computeSize
98
99
  const collapseOpts = $xeLayoutAside.computeCollapseOpts
99
100
  const scrollbarOpts = $xeLayoutAside.computeScrollbarOpts
100
- const { native, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
101
+ const { className, viewClassName, viewInnerClassName } = scrollbarOpts
101
102
  const defaultSlot = slots.default
102
103
 
103
104
  return h('aside', {
@@ -113,13 +114,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
113
114
  useScrollbar
114
115
  ? h(VxeScrollbarComponent, {
115
116
  props: {
116
- native,
117
+ width: scrollbarOpts.width,
118
+ height: scrollbarOpts.height,
119
+ autoHide: scrollbarOpts.autoHide,
120
+ visible: scrollbarOpts.visible,
117
121
  xConfig: {
118
- visible: 'hidden'
122
+ visible: false
119
123
  },
120
- yConfig,
124
+ yConfig: scrollbarOpts.yConfig,
121
125
  className: 'vxe-layout-aside--scrollbar' + (className ? (' ' + className) : ''),
122
- viewAttrs,
126
+ viewAttrs: scrollbarOpts.viewAttrs,
123
127
  viewClassName: 'vxe-layout-aside--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
124
128
  viewInnerClassName: 'vxe-layout-aside--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
125
129
  },
@@ -2,6 +2,7 @@ import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getConfig, createEvent, globalMixins, renderEmptyElement } from '../../ui'
4
4
  import XEUtils from 'xe-utils'
5
+ import { getDefaultConfig } from '../../ui/src/utils'
5
6
  import VxeLoadingComponent from '../../loading'
6
7
  import VxeScrollbarComponent from '../../scrollbar'
7
8
  import VxeUIBacktopComponent from '../../backtop'
@@ -31,7 +32,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
31
32
  backtopConfig: Object as PropType<VxeLayoutBodyPropTypes.BacktopConfig>,
32
33
  useScrollbar: {
33
34
  type: Boolean as PropType<VxeLayoutBodyPropTypes.UseScrollbar>,
34
- default: () => getConfig().layoutBody.useScrollbar
35
+ default: () => getDefaultConfig(getConfig().layoutBody.useScrollbar, getConfig().useScrollbar)
35
36
  },
36
37
  scrollbarConfig: Object as PropType<VxeLayoutBodyPropTypes.ScrollbarConfig>,
37
38
  size: {
@@ -70,6 +71,30 @@ export default /* define-vxe-component start */ defineVxeComponent({
70
71
  const props = $xeLayoutBody
71
72
 
72
73
  return Object.assign({}, getConfig().layoutBody.scrollbarConfig, props.scrollbarConfig)
74
+ },
75
+ computeScrollbarProps () {
76
+ const $xeLayoutBody = this
77
+ const props = $xeLayoutBody
78
+ const backtopId = ($xeLayoutBody as any).backtopId as string
79
+
80
+ const { showBacktop } = props
81
+ const scrollbarOpts = $xeLayoutBody.computeScrollbarOpts as VxeLayoutBodyPropTypes.ScrollbarConfig
82
+ const { className, viewClassName, viewInnerClassName } = scrollbarOpts
83
+ return {
84
+ width: scrollbarOpts.width,
85
+ height: scrollbarOpts.height,
86
+ autoHide: scrollbarOpts.autoHide,
87
+ visible: scrollbarOpts.visible,
88
+ xConfig: scrollbarOpts.xConfig,
89
+ yConfig: scrollbarOpts.yConfig,
90
+ className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
91
+ viewAttrs: {
92
+ ...scrollbarOpts.viewAttrs,
93
+ id: showBacktop ? (backtopId || null) : null
94
+ },
95
+ viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
96
+ viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
97
+ }
73
98
  }
74
99
  },
75
100
  methods: {
@@ -91,8 +116,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
91
116
 
92
117
  const { loading, padding, showBacktop, useScrollbar } = props
93
118
  const backtopOpts = $xeLayoutBody.computeBacktopOpts
94
- const scrollbarOpts = $xeLayoutBody.computeScrollbarOpts
95
- const { native, xConfig, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
119
+ const scrollbarProps = $xeLayoutBody.computeScrollbarProps
96
120
  const vSize = $xeLayoutBody.computeSize
97
121
  const defaultSlot = slots.default
98
122
  const backtopSlot = slots.backtop
@@ -121,18 +145,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
121
145
  }, [
122
146
  useScrollbar
123
147
  ? h(VxeScrollbarComponent, {
124
- props: {
125
- native,
126
- xConfig,
127
- yConfig,
128
- className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
129
- viewAttrs: {
130
- ...viewAttrs,
131
- id: showBacktop ? (backtopId || null) : null
132
- },
133
- viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
134
- viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
135
- },
148
+ props: scrollbarProps,
136
149
  scopedSlots: {
137
150
  default: () => defaultSlot ? defaultSlot({}) : []
138
151
  }
@@ -4,7 +4,7 @@ import XEUtils, { XEBrowse } from 'xe-utils'
4
4
  import { VxeUI, getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
5
  import { crossListDragRowGlobal, getCrossListDragRowInfo } from './store'
6
6
  import { addClass, getTpImg, hasClass, isScale, removeClass, toCssUnit } 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 { getSlotVNs } from '../../ui/src/vn'
9
9
  import { createComponentLog } from '../../ui/src/log'
10
10
  import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
@@ -73,8 +73,10 @@ function createInternalData (): ListInternalData {
73
73
  fullKeyMaps: {},
74
74
  rowMaps: {},
75
75
 
76
- // 滚动条
77
76
  // resizeObserver: undefined,
77
+
78
+ // 滚动条
79
+ // scrollObserver: undefined,
78
80
  // isThumbDrag: false,
79
81
  thumbDragOffset: 0,
80
82
  yThumbTop: 0,
@@ -141,7 +143,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
141
143
  scrollY: Object as PropType<VxeListPropTypes.ScrollY>,
142
144
  useScrollbar: {
143
145
  type: Boolean as PropType<VxeListPropTypes.UseScrollbar>,
144
- default: () => getConfig().list.useScrollbar
146
+ default: () => getDefaultConfig(getConfig().list.useScrollbar, getConfig().useScrollbar)
145
147
  },
146
148
  scrollbarConfig: Object as PropType<VxeListPropTypes.ScrollbarConfig>
147
149
  },
@@ -226,17 +228,15 @@ export default /* define-vxe-component start */ defineVxeComponent({
226
228
  const $xeList = this
227
229
 
228
230
  const rowHeight = $xeList.computeRowHeight
229
- const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
230
- const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
231
+ const barWidth = $xeList.computeScrollYWidth
232
+ const barHeight = $xeList.computeScrollXHeight
231
233
  const stys: VxeComponentStyleType = {}
232
234
  if (rowHeight) {
233
235
  stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight)
234
236
  }
235
- if (scrollbarYOpts.width) {
236
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(scrollbarYOpts.width)
237
- }
238
- if (scrollbarXOpts.height) {
239
- stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(scrollbarXOpts.height)
237
+ if (barWidth || barHeight) {
238
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
239
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
240
240
  }
241
241
  return stys
242
242
  },
@@ -274,27 +274,64 @@ export default /* define-vxe-component start */ defineVxeComponent({
274
274
  const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
275
275
  return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
276
276
  },
277
- computeScrollbarWrapperClss () {
277
+ computeScrollXHeight () {
278
+ const $xeList = this
279
+
280
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
281
+ const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
282
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
283
+ },
284
+ computeScrollYWidth () {
285
+ const $xeList = this
286
+
287
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
288
+ const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
289
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
290
+ },
291
+ computeScrollXVisible () {
292
+ const $xeList = this
293
+
294
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
295
+ const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
296
+ return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
297
+ },
298
+ computeScrollYVisible () {
299
+ const $xeList = this
300
+
301
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
302
+ const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
303
+ return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
304
+ },
305
+ computeScrollXAutoHide () {
278
306
  const $xeList = this
279
- const reactData = $xeList.reactData
280
307
 
281
308
  const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
282
- const { padding } = scrollbarOpts
283
- const { yThumbHeight, xThumbWidth } = reactData
284
309
  const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
310
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
311
+ },
312
+ computeScrollYAutoHide () {
313
+ const $xeList = this
314
+
315
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
285
316
  const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
317
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
318
+ },
319
+ computeScrollbarWrapperClss () {
320
+ const $xeList = this
321
+ const reactData = $xeList.reactData
322
+
323
+ const { yThumbHeight, xThumbWidth } = reactData
286
324
  const scrollbarXToTop = $xeList.computeScrollbarXToTop
287
325
  const scrollbarYToLeft = $xeList.computeScrollbarYToLeft
326
+ const scrollXVisible = $xeList.computeScrollXVisible
327
+ const scrollYVisible = $xeList.computeScrollYVisible
288
328
  return domUtils.buildClass([
289
329
  'vxe-scrollbar is--virtual',
290
- `ov-x--${scrollbarXOpts.visible || 'visible'}`,
291
- `ov-y--${scrollbarYOpts.visible || 'visible'}`,
330
+ `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
331
+ `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
292
332
  `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
293
333
  `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
294
334
  ], {
295
- 'is--padding': padding,
296
- 'ov-x--auto-hide': scrollbarXOpts.autoHide,
297
- 'ov-y--auto-hide': scrollbarYOpts.autoHide,
298
335
  'overflow-y': yThumbHeight,
299
336
  'overflow-x': xThumbWidth
300
337
  })
@@ -472,6 +509,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
472
509
  const { fullData } = internalData
473
510
  return fullData
474
511
  },
512
+ getParentElem () {
513
+ const $xeList = this
514
+
515
+ const el = $xeList.$refs.refElem as HTMLDivElement
516
+ return el ? el.parentElement : null
517
+ },
475
518
  calcTableHeight (key: 'height' | 'maxHeight') {
476
519
  const $xeList = this
477
520
  const props = $xeList
@@ -2498,7 +2541,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2498
2541
  const slots = $xeList.$scopedSlots
2499
2542
 
2500
2543
  const { showCheckbox, className, loading, useScrollbar } = props
2501
- const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate } = reactData
2544
+ const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData
2502
2545
  const defaultSlot = slots.default
2503
2546
  const headerSlot = slots.header
2504
2547
  const footerSlot = slots.footer
@@ -2512,8 +2555,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
2512
2555
  const rowOpts = $xeList.computeRowOpts
2513
2556
  const { isHover, padding } = rowOpts
2514
2557
  const isDrag = $xeList.computeIsDrag
2515
- const scrollbarXOpts = $xeList.computeScrollbarXOpts
2516
- const scrollbarYOpts = $xeList.computeScrollbarYOpts
2558
+ const scrollbarOpts = $xeList.computeScrollbarOpts
2559
+ const scrollXVisible = $xeList.computeScrollXVisible
2560
+ const scrollYVisible = $xeList.computeScrollYVisible
2561
+ const scrollbarXToTop = $xeList.computeScrollbarXToTop
2562
+ const scrollbarYToLeft = $xeList.computeScrollbarYToLeft
2563
+ const scrollXAutoHide = $xeList.computeScrollXAutoHide
2564
+ const scrollYAutoHide = $xeList.computeScrollYAutoHide
2517
2565
  const scrollbarWrapperClss = $xeList.computeScrollbarWrapperClss
2518
2566
  const showDefChekboxHead = showCheckbox && checkboxOpts.showHeader !== false
2519
2567
 
@@ -2525,14 +2573,25 @@ export default /* define-vxe-component start */ defineVxeComponent({
2525
2573
  }
2526
2574
  return h('div', {
2527
2575
  ref: 'refElem',
2528
- class: ['vxe-list', className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '', {
2529
- [`size--${vSize}`]: vSize,
2530
- 'is--virtual-scrollbar': useScrollbar,
2531
- 'ov-x--auto-hide': useScrollbar && scrollbarXOpts.autoHide,
2532
- 'ov-y--auto-hide': useScrollbar && scrollbarYOpts.autoHide,
2533
- 'is--drag': isDrag,
2534
- 'is--loading': loading
2535
- }],
2576
+ class: [
2577
+ 'vxe-list',
2578
+ useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2579
+ useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2580
+ useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2581
+ useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2582
+ className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
2583
+ {
2584
+ [`size--${vSize}`]: vSize,
2585
+ 'is--virtual-scrollbar': useScrollbar,
2586
+ 'ov-padding': useScrollbar && scrollbarOpts.padding,
2587
+ 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
2588
+ 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
2589
+ 'overflow-y': yThumbHeight,
2590
+ 'overflow-x': xThumbWidth,
2591
+ 'is--drag': isDrag,
2592
+ 'is--loading': loading
2593
+ }
2594
+ ],
2536
2595
  on: leOns,
2537
2596
  style: wrapperStyles
2538
2597
  }, [
@@ -2593,17 +2652,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2593
2652
  style: {
2594
2653
  marginTop: topSpaceHeight ? `${topSpaceHeight}px` : ''
2595
2654
  }
2596
- }, useScrollbar
2597
- ? (
2598
- defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => $xeList.renderRow(h, row, i))
2599
- )
2600
- : [
2601
- h('div', {
2602
- key: 'vi',
2603
- ref: 'refViewInnerElem',
2604
- class: 'vxe-scrollbar--view-inner'
2605
- }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => $xeList.renderRow(h, row, i)))
2606
- ])
2655
+ }, defaultSlot ? defaultSlot({ items: rowList, $list: $xeList }) : rowList.map((row, i) => $xeList.renderRow(h, row, i)))
2607
2656
  ]),
2608
2657
  footerSlot
2609
2658
  ? h('div', {
@@ -2618,7 +2667,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2618
2667
  ? h('div', {
2619
2668
  class: scrollbarWrapperClss
2620
2669
  }, [
2621
- scrollbarXOpts.visible === 'hidden'
2670
+ scrollXVisible === false
2622
2671
  ? renderEmptyElement($xeList)
2623
2672
  : h('div', {
2624
2673
  ref: 'refTrackXElem',
@@ -2639,7 +2688,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
2639
2688
  }
2640
2689
  })
2641
2690
  ]),
2642
- scrollbarYOpts.visible === 'hidden'
2691
+ scrollYVisible === false
2643
2692
  ? renderEmptyElement($xeList)
2644
2693
  : h('div', {
2645
2694
  ref: 'refTrackYElem',
@@ -2700,15 +2749,44 @@ export default /* define-vxe-component start */ defineVxeComponent({
2700
2749
 
2701
2750
  $xeList.reFlag++
2702
2751
  },
2752
+ useScrollbar () {
2753
+ const $xeList = this
2754
+
2755
+ $xeList.reFlag++
2756
+ },
2703
2757
  computeRowHeight () {
2704
2758
  const $xeList = this
2705
2759
 
2706
2760
  $xeList.reFlag++
2707
2761
  },
2708
- reFlag () {
2762
+ computeScrollYWidth () {
2763
+ const $xeList = this
2764
+
2765
+ $xeList.reFlag++
2766
+ },
2767
+ computeScrollXHeight () {
2768
+ const $xeList = this
2769
+
2770
+ $xeList.reFlag++
2771
+ },
2772
+ computeScrollXVisible () {
2709
2773
  const $xeList = this
2710
2774
 
2711
2775
  $xeList.$nextTick(() => {
2776
+ $xeList.reFlag++
2777
+ })
2778
+ },
2779
+ computeScrollYVisible () {
2780
+ const $xeList = this
2781
+
2782
+ $xeList.$nextTick(() => {
2783
+ $xeList.reFlag++
2784
+ })
2785
+ },
2786
+ reFlag () {
2787
+ const $xeList = this
2788
+
2789
+ $xeList.recalculate().then(() => {
2712
2790
  $xeList.recalculate()
2713
2791
  })
2714
2792
  },
@@ -2758,20 +2836,33 @@ export default /* define-vxe-component start */ defineVxeComponent({
2758
2836
  if (useKey && !keyField) {
2759
2837
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField'])
2760
2838
  }
2761
- if (useScrollbar || autoResize) {
2762
- const el = $xeList.$refs.refElem as HTMLDivElement
2763
- const viewInnerEl = $xeList.$refs.refViewInnerElem as HTMLDivElement
2764
- const resizeObserver = globalResize.create(() => {
2839
+ const el = $xeList.$refs.refElem as HTMLDivElement
2840
+ if (useScrollbar) {
2841
+ const viewInnerEl = $xeList.$refs.refVirtualBody as HTMLDivElement
2842
+ const scrollObserver = globalResize.create(() => {
2765
2843
  $xeList.reFlag++
2766
2844
  })
2767
- resizeObserver.observe(el)
2768
- if (autoResize) {
2769
- if (el) {
2770
- resizeObserver.observe(el.parentElement as HTMLDivElement)
2771
- }
2845
+ if (el) {
2846
+ scrollObserver.observe(el)
2772
2847
  }
2773
2848
  if (viewInnerEl) {
2774
- resizeObserver.observe(viewInnerEl)
2849
+ scrollObserver.observe(viewInnerEl)
2850
+ }
2851
+ internalData.scrollObserver = scrollObserver
2852
+ }
2853
+ if (autoResize) {
2854
+ const parentEl = $xeList.getParentElem()
2855
+ const resizeObserver = globalResize.create(() => {
2856
+ if (props.autoResize) {
2857
+ $xeList.reFlag++
2858
+ }
2859
+ })
2860
+ if (el) {
2861
+ resizeObserver.observe(el)
2862
+ }
2863
+
2864
+ if (parentEl) {
2865
+ resizeObserver.observe(parentEl)
2775
2866
  }
2776
2867
  internalData.resizeObserver = resizeObserver
2777
2868
  }
@@ -2792,10 +2883,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
2792
2883
  const reactData = $xeList.reactData
2793
2884
  const internalData = $xeList.internalData
2794
2885
 
2795
- const { resizeObserver } = internalData
2886
+ const { scrollObserver, resizeObserver } = internalData
2796
2887
  if (resizeObserver) {
2797
2888
  resizeObserver.disconnect()
2798
2889
  }
2890
+ if (scrollObserver) {
2891
+ scrollObserver.disconnect()
2892
+ }
2799
2893
  globalEvents.off($xeList, 'resize')
2800
2894
  XEUtils.assign(reactData, createReactData())
2801
2895
  XEUtils.assign(internalData, createInternalData())
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI, createEvent, permission, globalMixins, globalEvents, renderEmptyElement } from '../../ui'
5
5
  import { getPopupAppendElement, scrollToView, toCssUnit } from '../../ui/src/dom'
6
- import { getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils'
6
+ import { getLastZIndex, nextZIndex, isEnableConf, getDefaultConfig } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { createComponentLog } from '../../ui/src/log'
9
9
  import VxeLoadingComponent from '../../loading'
@@ -78,7 +78,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
78
78
  menuConfig: Object as PropType<VxeMenuPropTypes.MenuConfig>,
79
79
  useScrollbar: {
80
80
  type: Boolean as PropType<VxeMenuPropTypes.UseScrollbar>,
81
- default: () => getConfig().menu.useScrollbar
81
+ default: () => getDefaultConfig(getConfig().menu.useScrollbar, getConfig().useScrollbar)
82
82
  },
83
83
  scrollbarConfig: Object as PropType<VxeMenuPropTypes.ScrollbarConfig>,
84
84
  appendTo: {
@@ -3,12 +3,13 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI, getConfig, getI18n, getIcon, createEvent, globalEvents, globalMixins, renderEmptyElement, GLOBAL_EVENT_KEYS } from '../../ui'
5
5
  import { getEventTargetNode, getPopupAppendElement, getPopupWrapperElement, isScale, toCssUnit } from '../../ui/src/dom'
6
- import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue } from '../../ui/src/utils'
6
+ import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue, getDefaultConfig } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { createComponentLog } from '../../ui/src/log'
9
9
  import { allActiveModals } from './store'
10
10
  import VxeButtonComponent from '../../button'
11
11
  import VxeLoadingComponent from '../../loading'
12
+ import VxeScrollbarComponent from '../../scrollbar'
12
13
 
13
14
  import type { VxeModalConstructor, VxeModalPropTypes, ModalReactData, ModalInternalData, VxeModalMethods, ModalEventTypes, VxeModalEmits, VxeComponentSizeType, VxeComponentPermissionInfo, ValueOf, VxeButtonConstructor, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods } from '../../../types'
14
15
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
@@ -227,6 +228,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
227
228
  },
228
229
  beforeHideMethod: Function as PropType<VxeModalPropTypes.BeforeHideMethod>,
229
230
  slots: Object as PropType<VxeModalPropTypes.Slots>,
231
+ useScrollbar: {
232
+ type: Boolean as PropType<VxeModalPropTypes.UseScrollbar>,
233
+ default: () => getDefaultConfig(getConfig().modal.useScrollbar, getConfig().useScrollbar)
234
+ },
235
+ scrollbarConfig: Object as PropType<VxeModalPropTypes.ScrollbarConfig>,
230
236
 
231
237
  /**
232
238
  * 已废弃
@@ -316,23 +322,47 @@ export default /* define-vxe-component start */ defineVxeComponent({
316
322
 
317
323
  return props.type === 'modal'
318
324
  },
319
- computeIsMinimizeStatus () {
325
+ computeIsMinimizeStatus () {
320
326
  const $xeModal = this
321
327
  const reactData = $xeModal.reactData as ModalReactData
322
328
 
323
329
  return reactData.zoomStatus === 'minimize'
324
330
  },
325
- computeIsMaximizeStatus () {
331
+ computeIsMaximizeStatus () {
326
332
  const $xeModal = this
327
333
  const reactData = $xeModal.reactData as ModalReactData
328
334
 
329
335
  return reactData.zoomStatus === 'maximize'
330
336
  },
331
- computeZoomOpts () {
337
+ computeZoomOpts () {
332
338
  const $xeModal = this
333
339
  const props = $xeModal
334
340
 
335
341
  return Object.assign({}, getConfig().modal.zoomConfig, props.zoomConfig)
342
+ },
343
+ computeScrollbarOpts () {
344
+ const $xeModal = this
345
+ const props = $xeModal
346
+
347
+ return Object.assign({}, getConfig().modal.scrollbarConfig, props.scrollbarConfig)
348
+ },
349
+ computeScrollbarProps () {
350
+ const $xeModal = this
351
+
352
+ const scrollbarOpts = $xeModal.computeScrollbarOpts as VxeModalPropTypes.ScrollbarConfig
353
+ const { viewClassName, viewInnerClassName } = scrollbarOpts
354
+ return {
355
+ width: scrollbarOpts.width,
356
+ height: scrollbarOpts.height,
357
+ autoHide: scrollbarOpts.autoHide,
358
+ visible: scrollbarOpts.visible,
359
+ xConfig: scrollbarOpts.xConfig,
360
+ yConfig: scrollbarOpts.yConfig,
361
+ className: scrollbarOpts.className,
362
+ viewAttrs: scrollbarOpts.viewAttrs,
363
+ viewClassName: 'vxe-modal--scrollbar-content-view' + (viewClassName ? (' ' + viewClassName) : ''),
364
+ viewInnerClassName: 'vxe-modal--scrollbar-content-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
365
+ }
336
366
  }
337
367
  },
338
368
  watch: {
@@ -1539,9 +1569,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1539
1569
  const props = $xeModal
1540
1570
  const slots = $xeModal.$scopedSlots
1541
1571
 
1542
- const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props
1572
+ const { slots: propSlots = {}, status, message, iconStatus, useScrollbar, useHtml } = props
1543
1573
  const content = props.content || message
1544
1574
  const isMsg = $xeModal.computeIsMsg
1575
+ const scrollbarProps = $xeModal.computeScrollbarProps
1545
1576
  const defaultSlot = slots.default || propSlots.default
1546
1577
  const leftSlot = slots.left || propSlots.left
1547
1578
  const rightSlot = slots.right || propSlots.right
@@ -1557,20 +1588,53 @@ export default /* define-vxe-component start */ defineVxeComponent({
1557
1588
  ])
1558
1589
  )
1559
1590
  }
1560
- contVNs.push(
1561
- useHtml && !defaultSlot
1562
- ? h('div', {
1563
- key: 'hc',
1564
- class: 'vxe-modal--content',
1565
- domProps: {
1566
- innerHTML: getFuncText(content)
1567
- }
1568
- })
1569
- : h('div', {
1570
- key: 'dc',
1571
- class: 'vxe-modal--content'
1572
- }, defaultSlot ? $xeModal.callSlot(defaultSlot, { $modal: $xeModal }, h) : getFuncText(content))
1573
- )
1591
+
1592
+ if (useHtml && !defaultSlot) {
1593
+ contVNs.push(
1594
+ useScrollbar
1595
+ ? h(VxeScrollbarComponent, {
1596
+ key: 'shc',
1597
+ class: 'vxe-modal--scrollbar-content',
1598
+ props: scrollbarProps,
1599
+ scopedSlots: {
1600
+ default () {
1601
+ return [
1602
+ h('div', {
1603
+ class: 'vxe-modal--scrollbar-content-html',
1604
+ domProps: {
1605
+ innerHTML: getFuncText(content)
1606
+ }
1607
+ })
1608
+ ]
1609
+ }
1610
+ }
1611
+ })
1612
+ : h('div', {
1613
+ key: 'hc',
1614
+ class: 'vxe-modal--content',
1615
+ domProps: {
1616
+ innerHTML: getFuncText(content)
1617
+ }
1618
+ })
1619
+ )
1620
+ } else {
1621
+ contVNs.push(
1622
+ useScrollbar
1623
+ ? h(VxeScrollbarComponent, {
1624
+ key: 'sdc',
1625
+ class: 'vxe-modal--scrollbar-content',
1626
+ props: scrollbarProps,
1627
+ scopedSlots: {
1628
+ default: () => defaultSlot ? $xeModal.callSlot(defaultSlot, { $modal: $xeModal }, h) : getFuncText(content)
1629
+ }
1630
+ })
1631
+ : h('div', {
1632
+ key: 'dc',
1633
+ class: 'vxe-modal--content'
1634
+ }, defaultSlot ? $xeModal.callSlot(defaultSlot, { $modal: $xeModal }, h) : getFuncText(content))
1635
+ )
1636
+ }
1637
+
1574
1638
  return h('div', {
1575
1639
  class: 'vxe-modal--body'
1576
1640
  }, [