vxe-pc-ui 3.20.1 → 3.20.5

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 (102) hide show
  1. package/es/card/src/card.js +2 -1
  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/layout-aside/src/layout-aside.js +2 -1
  7. package/es/layout-body/src/layout-body.js +2 -1
  8. package/es/list/src/list.js +57 -25
  9. package/es/menu/src/menu.js +2 -2
  10. package/es/modal/src/modal.js +73 -14
  11. package/es/modal/style.css +4 -0
  12. package/es/modal/style.min.css +1 -1
  13. package/es/scrollbar/src/scrollbar.js +22 -6
  14. package/es/style.css +1 -1
  15. package/es/style.min.css +1 -1
  16. package/es/tabs/src/tabs.js +2 -2
  17. package/es/tree/src/tree.js +50 -27
  18. package/es/ui/index.js +1 -1
  19. package/es/ui/src/log.js +1 -1
  20. package/es/vxe-drawer/style.css +13 -6
  21. package/es/vxe-drawer/style.min.css +1 -1
  22. package/es/vxe-modal/style.css +4 -0
  23. package/es/vxe-modal/style.min.css +1 -1
  24. package/lib/card/src/card.js +2 -1
  25. package/lib/card/src/card.min.js +1 -1
  26. package/lib/drawer/src/drawer.js +76 -12
  27. package/lib/drawer/src/drawer.min.js +1 -1
  28. package/lib/drawer/style/style.css +13 -6
  29. package/lib/drawer/style/style.min.css +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 +425 -191
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/layout-aside/src/layout-aside.js +2 -1
  35. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  36. package/lib/layout-body/src/layout-body.js +2 -1
  37. package/lib/layout-body/src/layout-body.min.js +1 -1
  38. package/lib/list/src/list.js +107 -64
  39. package/lib/list/src/list.min.js +1 -1
  40. package/lib/menu/src/menu.js +1 -1
  41. package/lib/menu/src/menu.min.js +1 -1
  42. package/lib/modal/src/modal.js +74 -12
  43. package/lib/modal/src/modal.min.js +1 -1
  44. package/lib/modal/style/style.css +4 -0
  45. package/lib/modal/style/style.min.css +1 -1
  46. package/lib/scrollbar/src/scrollbar.js +35 -15
  47. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  48. package/lib/style.css +1 -1
  49. package/lib/style.min.css +1 -1
  50. package/lib/tabs/src/tabs.js +1 -1
  51. package/lib/tabs/src/tabs.min.js +1 -1
  52. package/lib/tree/src/tree.js +64 -36
  53. package/lib/tree/src/tree.min.js +1 -1
  54. package/lib/ui/index.js +1 -1
  55. package/lib/ui/index.min.js +1 -1
  56. package/lib/ui/src/log.js +1 -1
  57. package/lib/ui/src/log.min.js +1 -1
  58. package/lib/vxe-drawer/style/style.css +13 -6
  59. package/lib/vxe-drawer/style/style.min.css +1 -1
  60. package/lib/vxe-modal/style/style.css +4 -0
  61. package/lib/vxe-modal/style/style.min.css +1 -1
  62. package/package.json +2 -2
  63. package/packages/card/src/card.ts +2 -1
  64. package/packages/drawer/src/drawer.ts +80 -16
  65. package/packages/layout-aside/src/layout-aside.ts +2 -1
  66. package/packages/layout-body/src/layout-body.ts +2 -1
  67. package/packages/list/src/list.ts +66 -25
  68. package/packages/menu/src/menu.ts +2 -2
  69. package/packages/modal/src/modal.ts +83 -19
  70. package/packages/scrollbar/src/scrollbar.ts +27 -6
  71. package/packages/tabs/src/tabs.ts +2 -2
  72. package/packages/tree/src/tree.ts +60 -31
  73. package/styles/components/drawer.scss +13 -6
  74. package/styles/components/modal.scss +4 -0
  75. package/types/components/drawer.d.ts +20 -0
  76. package/types/components/gantt-module/gantt-view.d.ts +24 -1
  77. package/types/components/gantt-plugins/extend-gantt-chart.d.ts +1 -1
  78. package/types/components/gantt.d.ts +2 -0
  79. package/types/components/layout-aside.d.ts +15 -0
  80. package/types/components/layout-body.d.ts +3 -0
  81. package/types/components/list.d.ts +18 -1
  82. package/types/components/modal.d.ts +20 -0
  83. package/types/components/number-input.d.ts +12 -2
  84. package/types/components/table-plugins/extend-pivot-table.d.ts +1 -1
  85. package/types/components/table.d.ts +36 -2
  86. package/types/components/tree.d.ts +15 -1
  87. package/es/scrollbar/src/util.js +0 -54
  88. package/lib/scrollbar/src/util.js +0 -63
  89. package/lib/scrollbar/src/util.min.js +0 -1
  90. package/packages/scrollbar/src/util.ts +0 -57
  91. /package/es/icon/{iconfont.1791950618327.ttf → iconfont.1792048654011.ttf} +0 -0
  92. /package/es/icon/{iconfont.1791950618327.woff → iconfont.1792048654011.woff} +0 -0
  93. /package/es/icon/{iconfont.1791950618327.woff2 → iconfont.1792048654011.woff2} +0 -0
  94. /package/es/{iconfont.1791950618327.ttf → iconfont.1792048654011.ttf} +0 -0
  95. /package/es/{iconfont.1791950618327.woff → iconfont.1792048654011.woff} +0 -0
  96. /package/es/{iconfont.1791950618327.woff2 → iconfont.1792048654011.woff2} +0 -0
  97. /package/lib/icon/style/{iconfont.1791950618327.ttf → iconfont.1792048654011.ttf} +0 -0
  98. /package/lib/icon/style/{iconfont.1791950618327.woff → iconfont.1792048654011.woff} +0 -0
  99. /package/lib/icon/style/{iconfont.1791950618327.woff2 → iconfont.1792048654011.woff2} +0 -0
  100. /package/lib/{iconfont.1791950618327.ttf → iconfont.1792048654011.ttf} +0 -0
  101. /package/lib/{iconfont.1791950618327.woff → iconfont.1792048654011.woff} +0 -0
  102. /package/lib/{iconfont.1791950618327.woff2 → iconfont.1792048654011.woff2} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "3.20.1",
3
+ "version": "3.20.5",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -25,7 +25,7 @@
25
25
  "style": "lib/style.css",
26
26
  "typings": "types/index.d.ts",
27
27
  "dependencies": {
28
- "@vxe-ui/core": "^3.4.28"
28
+ "@vxe-ui/core": "^3.4.31"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@typescript-eslint/eslint-plugin": "^6.21.0",
@@ -3,6 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getConfig, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
+ import { getDefaultConfig } from '../../ui/src/utils'
6
7
  import { getSlotVNs } from '../../ui/src/vn'
7
8
  import VxeLoadingComponent from '../../loading'
8
9
  import VxeScrollbarComponent from '../../scrollbar'
@@ -41,7 +42,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
41
42
  },
42
43
  useScrollbar: {
43
44
  type: Boolean as PropType<VxeCardPropTypes.UseScrollbar>,
44
- default: () => getConfig().card.useScrollbar
45
+ default: () => getDefaultConfig(getConfig().card.useScrollbar, getConfig().useScrollbar)
45
46
  },
46
47
  scrollbarConfig: Object as PropType<VxeCardPropTypes.ScrollbarConfig>
47
48
  },
@@ -2,12 +2,13 @@ import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { globalMixins, getIcon, getConfig, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, renderEmptyElement } from '../../ui'
5
- import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
5
+ import { getLastZIndex, nextZIndex, getFuncText, getDefaultConfig } from '../../ui/src/utils'
6
6
  import { getPopupAppendElement, getPopupWrapperElement, toCssUnit } from '../../ui/src/dom'
7
7
  import { allActiveDrawers } from './store'
8
8
  import { getSlotVNs } from '../../ui/src/vn'
9
9
  import VxeButtonComponent from '../../button'
10
10
  import VxeLoadingComponent from '../../loading'
11
+ import VxeScrollbarComponent from '../../scrollbar'
11
12
 
12
13
  import type { VxeDrawerPropTypes, DrawerReactData, VxeDrawerEmits, VxeDrawerMethods, ValueOf, VxeDrawerConstructor, VxeButtonConstructor, DrawerEventTypes, VxeModalConstructor, VxeModalMethods, VxeFormConstructor, VxeFormPrivateMethods } from '../../../types'
13
14
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
@@ -148,7 +149,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
148
149
  default: () => getConfig().drawer.size || getConfig().size
149
150
  },
150
151
  beforeHideMethod: Function as PropType<VxeDrawerPropTypes.BeforeHideMethod>,
151
- slots: Object as PropType<VxeDrawerPropTypes.Slots>
152
+ slots: Object as PropType<VxeDrawerPropTypes.Slots>,
153
+ useScrollbar: {
154
+ type: Boolean as PropType<VxeDrawerPropTypes.UseScrollbar>,
155
+ default: () => getDefaultConfig(getConfig().drawer.useScrollbar, getConfig().useScrollbar)
156
+ },
157
+ scrollbarConfig: Object as PropType<VxeDrawerPropTypes.ScrollbarConfig>
152
158
  },
153
159
  inject: {
154
160
  $xeModal: {
@@ -230,6 +236,30 @@ export default /* define-vxe-component start */ defineVxeComponent({
230
236
  return 'wr'
231
237
  }
232
238
  return 'wl'
239
+ },
240
+ computeScrollbarOpts () {
241
+ const $xeDrawer = this
242
+ const props = $xeDrawer
243
+
244
+ return Object.assign({}, getConfig().modal.scrollbarConfig, props.scrollbarConfig)
245
+ },
246
+ computeScrollbarProps () {
247
+ const $xeDrawer = this
248
+
249
+ const scrollbarOpts = $xeDrawer.computeScrollbarOpts as VxeDrawerPropTypes.ScrollbarConfig
250
+ const { viewClassName, viewInnerClassName } = scrollbarOpts
251
+ return {
252
+ width: scrollbarOpts.width,
253
+ height: scrollbarOpts.height,
254
+ autoHide: scrollbarOpts.autoHide,
255
+ visible: scrollbarOpts.visible,
256
+ xConfig: scrollbarOpts.xConfig,
257
+ yConfig: scrollbarOpts.yConfig,
258
+ className: scrollbarOpts.className,
259
+ viewAttrs: scrollbarOpts.viewAttrs,
260
+ viewClassName: 'vxe-drawer--scrollbar-content-view' + (viewClassName ? (' ' + viewClassName) : ''),
261
+ viewInnerClassName: 'vxe-drawer--scrollbar-content-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
262
+ }
233
263
  }
234
264
  },
235
265
  methods: {
@@ -619,10 +649,56 @@ export default /* define-vxe-component start */ defineVxeComponent({
619
649
  const props = $xeDrawer
620
650
  const slots = $xeDrawer.$scopedSlots
621
651
 
622
- const { slots: propSlots = {}, content, useHtml } = props
652
+ const { slots: propSlots = {}, content, useScrollbar, useHtml } = props
653
+ const scrollbarProps = $xeDrawer.computeScrollbarProps
623
654
  const defaultSlot = slots.default || propSlots.default
624
655
  const leftSlot = slots.left || propSlots.left
625
656
  const rightSlot = slots.right || propSlots.right
657
+ const contVNs: VNode[] = []
658
+ if (useHtml && !defaultSlot) {
659
+ contVNs.push(
660
+ useScrollbar
661
+ ? h(VxeScrollbarComponent, {
662
+ key: 'shc',
663
+ class: 'vxe-drawer--scrollbar-content',
664
+ props: scrollbarProps,
665
+ scopedSlots: {
666
+ default () {
667
+ return [
668
+ h('div', {
669
+ class: 'vxe-drawer--scrollbar-content-html',
670
+ domProps: {
671
+ innerHTML: getFuncText(content)
672
+ }
673
+ })
674
+ ]
675
+ }
676
+ }
677
+ })
678
+ : h('div', {
679
+ key: 'hc',
680
+ class: 'vxe-drawer--content',
681
+ domProps: {
682
+ innerHTML: getFuncText(content)
683
+ }
684
+ })
685
+ )
686
+ } else {
687
+ contVNs.push(
688
+ useScrollbar
689
+ ? h(VxeScrollbarComponent, {
690
+ key: 'sdc',
691
+ class: 'vxe-drawer--scrollbar-content',
692
+ props: scrollbarProps,
693
+ scopedSlots: {
694
+ default: () => defaultSlot ? $xeDrawer.callSlot(defaultSlot, { $drawer: $xeDrawer }, h) : getFuncText(content)
695
+ }
696
+ })
697
+ : h('div', {
698
+ class: 'vxe-drawer--content'
699
+ }, defaultSlot ? $xeDrawer.callSlot(defaultSlot, { $drawer: $xeDrawer }, h) : getFuncText(content))
700
+ )
701
+ }
626
702
  return h('div', {
627
703
  class: 'vxe-drawer--body'
628
704
  }, [
@@ -633,19 +709,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
633
709
  : renderEmptyElement($xeDrawer),
634
710
  h('div', {
635
711
  class: 'vxe-drawer--body-default'
636
- }, [
637
- useHtml && !defaultSlot
638
- ? h('div', {
639
- key: 'hc',
640
- class: 'vxe-drawer--content',
641
- domProps: {
642
- innerHTML: getFuncText(content)
643
- }
644
- })
645
- : h('div', {
646
- class: 'vxe-drawer--content'
647
- }, defaultSlot ? $xeDrawer.callSlot(defaultSlot, { $drawer: $xeDrawer }, h) : getFuncText(content))
648
- ]),
712
+ }, contVNs),
649
713
  rightSlot
650
714
  ? h('div', {
651
715
  class: 'vxe-drawer--body-right'
@@ -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: {
@@ -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: {
@@ -1,19 +1,22 @@
1
1
  import { PropType, CreateElement, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils, { XEBrowse } from 'xe-utils'
4
- import { VxeUI, getConfig, getIcon, getI18n, domUtils, menus, globalEvents, globalResize, createEvent, globalMixins, renderEmptyElement } from '../../ui'
4
+ import { VxeUI, 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
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'
11
- import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from '../../scrollbar/src/util'
12
11
  import { getItemCacheObj } from './util'
13
12
  import VxeLoadingComponent from '../../loading'
14
13
 
15
14
  import type { VxeListPropTypes, VxeListEmits, VxeComponentSizeType, ListReactData, VxeListDefines, ValueOf, ListInternalData, VxeListConstructor, VxeListPrivateMethods, VxeComponentStyleType, VxeScrollbarPropTypes } from '../../../types'
16
15
 
16
+ const { getConfig, getIcon, getI18n, domUtils, scrollbarUtils, menus, globalEvents, globalResize } = VxeUI
17
+
18
+ const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
19
+
17
20
  const { warnLog, errLog } = createComponentLog('tree')
18
21
 
19
22
  let crossListDragRowObj: {
@@ -73,8 +76,10 @@ function createInternalData (): ListInternalData {
73
76
  fullKeyMaps: {},
74
77
  rowMaps: {},
75
78
 
76
- // 滚动条
77
79
  // resizeObserver: undefined,
80
+
81
+ // 滚动条
82
+ // scrollObserver: undefined,
78
83
  // isThumbDrag: false,
79
84
  thumbDragOffset: 0,
80
85
  yThumbTop: 0,
@@ -141,7 +146,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
141
146
  scrollY: Object as PropType<VxeListPropTypes.ScrollY>,
142
147
  useScrollbar: {
143
148
  type: Boolean as PropType<VxeListPropTypes.UseScrollbar>,
144
- default: () => getConfig().list.useScrollbar
149
+ default: () => getDefaultConfig(getConfig().list.useScrollbar, getConfig().useScrollbar)
145
150
  },
146
151
  scrollbarConfig: Object as PropType<VxeListPropTypes.ScrollbarConfig>
147
152
  },
@@ -226,11 +231,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
226
231
  const $xeList = this
227
232
 
228
233
  const rowHeight = $xeList.computeRowHeight
229
- const scrollbarOpts = $xeList.computeScrollbarOpts
230
- const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
231
- const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
232
- const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
233
- const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
234
+ const barWidth = $xeList.computeScrollYWidth
235
+ const barHeight = $xeList.computeScrollXHeight
234
236
  const stys: VxeComponentStyleType = {}
235
237
  if (rowHeight) {
236
238
  stys['--vxe-ui-list-row-height'] = toCssUnit(rowHeight)
@@ -275,6 +277,20 @@ export default /* define-vxe-component start */ defineVxeComponent({
275
277
  const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
276
278
  return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
277
279
  },
280
+ computeScrollXHeight () {
281
+ const $xeList = this
282
+
283
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
284
+ const scrollbarXOpts = $xeList.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
285
+ return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
286
+ },
287
+ computeScrollYWidth () {
288
+ const $xeList = this
289
+
290
+ const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
291
+ const scrollbarYOpts = $xeList.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
292
+ return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
293
+ },
278
294
  computeScrollXVisible () {
279
295
  const $xeList = this
280
296
 
@@ -307,15 +323,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
307
323
  const $xeList = this
308
324
  const reactData = $xeList.reactData
309
325
 
310
- const scrollbarOpts = $xeList.computeScrollbarOpts as VxeListPropTypes.ScrollbarConfig
311
- const { padding } = scrollbarOpts
312
326
  const { yThumbHeight, xThumbWidth } = reactData
313
327
  const scrollbarXToTop = $xeList.computeScrollbarXToTop
314
328
  const scrollbarYToLeft = $xeList.computeScrollbarYToLeft
315
329
  const scrollXVisible = $xeList.computeScrollXVisible
316
330
  const scrollYVisible = $xeList.computeScrollYVisible
317
- const scrollXAutoHide = $xeList.computeScrollXAutoHide as boolean
318
- const scrollYAutoHide = $xeList.computeScrollYAutoHide as boolean
319
331
  return domUtils.buildClass([
320
332
  'vxe-scrollbar is--virtual',
321
333
  `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
@@ -323,9 +335,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
323
335
  `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
324
336
  `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
325
337
  ], {
326
- 'is--padding': padding,
327
- 'ov-x--auto-hide': scrollXAutoHide,
328
- 'ov-y--auto-hide': scrollYAutoHide,
329
338
  'overflow-y': yThumbHeight,
330
339
  'overflow-x': xThumbWidth
331
340
  })
@@ -503,6 +512,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
503
512
  const { fullData } = internalData
504
513
  return fullData
505
514
  },
515
+ getParentElem () {
516
+ const $xeList = this
517
+
518
+ const el = $xeList.$refs.refElem as HTMLDivElement
519
+ return el ? el.parentElement : null
520
+ },
506
521
  calcTableHeight (key: 'height' | 'maxHeight') {
507
522
  const $xeList = this
508
523
  const props = $xeList
@@ -2747,6 +2762,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
2747
2762
 
2748
2763
  $xeList.reFlag++
2749
2764
  },
2765
+ computeScrollYWidth () {
2766
+ const $xeList = this
2767
+
2768
+ $xeList.reFlag++
2769
+ },
2770
+ computeScrollXHeight () {
2771
+ const $xeList = this
2772
+
2773
+ $xeList.reFlag++
2774
+ },
2750
2775
  computeScrollXVisible () {
2751
2776
  const $xeList = this
2752
2777
 
@@ -2814,20 +2839,33 @@ export default /* define-vxe-component start */ defineVxeComponent({
2814
2839
  if (useKey && !keyField) {
2815
2840
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField'])
2816
2841
  }
2817
- if (useScrollbar || autoResize) {
2818
- const el = $xeList.$refs.refElem as HTMLDivElement
2842
+ const el = $xeList.$refs.refElem as HTMLDivElement
2843
+ if (useScrollbar) {
2819
2844
  const viewInnerEl = $xeList.$refs.refVirtualBody as HTMLDivElement
2820
- const resizeObserver = globalResize.create(() => {
2845
+ const scrollObserver = globalResize.create(() => {
2821
2846
  $xeList.reFlag++
2822
2847
  })
2823
2848
  if (el) {
2824
- resizeObserver.observe(el)
2825
- if (autoResize) {
2826
- resizeObserver.observe(el.parentElement as HTMLDivElement)
2827
- }
2849
+ scrollObserver.observe(el)
2828
2850
  }
2829
2851
  if (viewInnerEl) {
2830
- resizeObserver.observe(viewInnerEl)
2852
+ scrollObserver.observe(viewInnerEl)
2853
+ }
2854
+ internalData.scrollObserver = scrollObserver
2855
+ }
2856
+ if (autoResize) {
2857
+ const parentEl = $xeList.getParentElem()
2858
+ const resizeObserver = globalResize.create(() => {
2859
+ if (props.autoResize) {
2860
+ $xeList.reFlag++
2861
+ }
2862
+ })
2863
+ if (el) {
2864
+ resizeObserver.observe(el)
2865
+ }
2866
+
2867
+ if (parentEl) {
2868
+ resizeObserver.observe(parentEl)
2831
2869
  }
2832
2870
  internalData.resizeObserver = resizeObserver
2833
2871
  }
@@ -2848,10 +2886,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
2848
2886
  const reactData = $xeList.reactData
2849
2887
  const internalData = $xeList.internalData
2850
2888
 
2851
- const { resizeObserver } = internalData
2889
+ const { scrollObserver, resizeObserver } = internalData
2852
2890
  if (resizeObserver) {
2853
2891
  resizeObserver.disconnect()
2854
2892
  }
2893
+ if (scrollObserver) {
2894
+ scrollObserver.disconnect()
2895
+ }
2855
2896
  globalEvents.off($xeList, 'resize')
2856
2897
  XEUtils.assign(reactData, createReactData())
2857
2898
  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
  }, [
@@ -3,14 +3,15 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { VxeUI } from '../../ui'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
- import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from './util'
7
6
  import { getDefaultConfig } from '../../ui/src/utils'
8
7
 
9
8
  import VxeLoadingComponent from '../../loading'
10
9
 
11
10
  import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ValueOf, VxeScrollbarPropTypes, VxeComponentStyleType } from '../../../types'
12
11
 
13
- const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
12
+ const { getConfig, createEvent, domUtils, scrollbarUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
13
+
14
+ const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
14
15
 
15
16
  function createReactData (): ScrollbarReactData {
16
17
  return {
@@ -103,10 +104,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
103
104
  const props = $xeScrollbar
104
105
 
105
106
  const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
106
- const xOpts = $xeScrollbar.computeXOpts
107
- const yOpts = $xeScrollbar.computeYOpts
108
- const barWidth = yOpts.width
109
- const barHeight = xOpts.height
107
+ const barWidth = $xeScrollbar.computeYWidth
108
+ const barHeight = $xeScrollbar.computeXHeight
110
109
  const stys: VxeComponentStyleType = {}
111
110
  if (width) {
112
111
  stys.width = toCssUnit(width)
@@ -132,6 +131,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
132
131
  }
133
132
  return stys
134
133
  },
134
+ computeXHeight () {
135
+ const $xeScrollbar = this
136
+
137
+ const xOpts = ($xeScrollbar as any).computeXOpts as VxeScrollbarPropTypes.XConfig
138
+ return xOpts.height
139
+ },
140
+ computeYWidth () {
141
+ const $xeScrollbar = this
142
+
143
+ const yOpts = ($xeScrollbar as any).computeYOpts as VxeScrollbarPropTypes.YConfig
144
+ return yOpts.width
145
+ },
135
146
  computeXVisible () {
136
147
  const $xeScrollbar = this
137
148
  const props = $xeScrollbar
@@ -710,6 +721,16 @@ export default /* define-vxe-component start */ defineVxeComponent({
710
721
 
711
722
  $xeScrollbar.reFlag++
712
723
  },
724
+ computeYWidth () {
725
+ const $xeScrollbar = this
726
+
727
+ $xeScrollbar.reFlag++
728
+ },
729
+ computeXHeight () {
730
+ const $xeScrollbar = this
731
+
732
+ $xeScrollbar.reFlag++
733
+ },
713
734
  computeXVisible () {
714
735
  const $xeScrollbar = this
715
736
 
@@ -4,7 +4,7 @@ import XEUtils from 'xe-utils'
4
4
  import { createEvent, getConfig, getIcon, globalEvents, globalMixins, permission, renderEmptyElement } from '../../ui'
5
5
  import { getSlotVNs } from '../../ui/src/vn'
6
6
  import { toCssUnit, addClass, removeClass } from '../../ui/src/dom'
7
- import { isEnableConf } from '../../ui/src/utils'
7
+ import { getDefaultConfig, isEnableConf } from '../../ui/src/utils'
8
8
  import { createComponentLog } from '../../ui/src/log'
9
9
  import VxeLoadingComponent from '../../loading'
10
10
  import VxeScrollbarComponent from '../../scrollbar'
@@ -58,7 +58,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
58
58
  },
59
59
  useScrollbar: {
60
60
  type: Boolean as PropType<VxeTabsPropTypes.UseScrollbar>,
61
- default: () => getConfig().tabs.useScrollbar
61
+ default: () => getDefaultConfig(getConfig().tabs.useScrollbar, getConfig().useScrollbar)
62
62
  },
63
63
  scrollbarConfig: Object as PropType<VxeTabsPropTypes.ScrollbarConfig>,
64
64
  // 已废弃