vxe-pc-ui 4.18.23 → 4.19.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 (138) hide show
  1. package/dist/all.esm.js +1076 -989
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/calendar/src/calendar.js +1 -1
  5. package/es/card/src/card.js +1 -1
  6. package/es/carousel/src/carousel.js +1 -1
  7. package/es/countdown/src/countdown.js +1 -1
  8. package/es/date-picker/src/date-picker.js +3 -3
  9. package/es/icon/style.css +1 -1
  10. package/es/icon-picker/src/icon-picker.js +1 -1
  11. package/es/layout-aside/src/layout-aside.js +31 -6
  12. package/es/layout-aside/style.css +5 -0
  13. package/es/layout-aside/style.min.css +1 -1
  14. package/es/layout-body/src/layout-body.js +29 -6
  15. package/es/layout-body/style.css +5 -1
  16. package/es/layout-body/style.min.css +1 -1
  17. package/es/list/src/list.js +1 -1
  18. package/es/menu/src/menu.js +20 -5
  19. package/es/menu/style.css +14 -2
  20. package/es/menu/style.min.css +1 -1
  21. package/es/scrollbar/src/scrollbar.js +38 -17
  22. package/es/scrollbar/style.css +16 -13
  23. package/es/scrollbar/style.min.css +1 -1
  24. package/es/select/src/select.js +2 -2
  25. package/es/style.css +1 -1
  26. package/es/style.min.css +1 -1
  27. package/es/tabs/src/tabs.js +1 -1
  28. package/es/text-ellipsis/style.css +29 -10
  29. package/es/text-ellipsis/style.min.css +1 -1
  30. package/es/ui/index.js +8 -2
  31. package/es/ui/src/log.js +1 -1
  32. package/es/upload/src/upload.js +1 -1
  33. package/es/vxe-layout-aside/style.css +5 -0
  34. package/es/vxe-layout-aside/style.min.css +1 -1
  35. package/es/vxe-layout-body/style.css +5 -1
  36. package/es/vxe-layout-body/style.min.css +1 -1
  37. package/es/vxe-menu/style.css +14 -2
  38. package/es/vxe-menu/style.min.css +1 -1
  39. package/es/vxe-scrollbar/style.css +16 -13
  40. package/es/vxe-scrollbar/style.min.css +1 -1
  41. package/es/vxe-text-ellipsis/style.css +29 -10
  42. package/es/vxe-text-ellipsis/style.min.css +1 -1
  43. package/lib/calendar/src/calendar.js +1 -1
  44. package/lib/calendar/src/calendar.min.js +1 -1
  45. package/lib/card/src/card.js +1 -1
  46. package/lib/card/src/card.min.js +1 -1
  47. package/lib/carousel/src/carousel.js +1 -1
  48. package/lib/carousel/src/carousel.min.js +1 -1
  49. package/lib/countdown/src/countdown.js +1 -1
  50. package/lib/countdown/src/countdown.min.js +1 -1
  51. package/lib/date-picker/src/date-picker.js +3 -3
  52. package/lib/date-picker/src/date-picker.min.js +1 -1
  53. package/lib/icon/style/style.css +1 -1
  54. package/lib/icon/style/style.min.css +1 -1
  55. package/lib/icon-picker/src/icon-picker.js +1 -1
  56. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  57. package/lib/index.umd.js +1456 -1333
  58. package/lib/index.umd.min.js +1 -1
  59. package/lib/layout-aside/src/layout-aside.js +35 -4
  60. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  61. package/lib/layout-aside/style/style.css +5 -0
  62. package/lib/layout-aside/style/style.min.css +1 -1
  63. package/lib/layout-body/src/layout-body.js +35 -3
  64. package/lib/layout-body/src/layout-body.min.js +1 -1
  65. package/lib/layout-body/style/style.css +5 -1
  66. package/lib/layout-body/style/style.min.css +1 -1
  67. package/lib/list/src/list.js +1 -1
  68. package/lib/list/src/list.min.js +1 -1
  69. package/lib/menu/src/menu.js +25 -3
  70. package/lib/menu/src/menu.min.js +1 -1
  71. package/lib/menu/style/style.css +14 -2
  72. package/lib/menu/style/style.min.css +1 -1
  73. package/lib/scrollbar/src/scrollbar.js +38 -8
  74. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  75. package/lib/scrollbar/style/style.css +16 -13
  76. package/lib/scrollbar/style/style.min.css +1 -1
  77. package/lib/select/src/select.js +2 -2
  78. package/lib/select/src/select.min.js +1 -1
  79. package/lib/style.css +1 -1
  80. package/lib/style.min.css +1 -1
  81. package/lib/tabs/src/tabs.js +1 -1
  82. package/lib/tabs/src/tabs.min.js +1 -1
  83. package/lib/text-ellipsis/style/style.css +29 -10
  84. package/lib/text-ellipsis/style/style.min.css +1 -1
  85. package/lib/ui/index.js +8 -2
  86. package/lib/ui/index.min.js +1 -1
  87. package/lib/ui/src/log.js +1 -1
  88. package/lib/ui/src/log.min.js +1 -1
  89. package/lib/upload/src/upload.js +1 -1
  90. package/lib/upload/src/upload.min.js +1 -1
  91. package/lib/vxe-layout-aside/style/style.css +5 -0
  92. package/lib/vxe-layout-aside/style/style.min.css +1 -1
  93. package/lib/vxe-layout-body/style/style.css +5 -1
  94. package/lib/vxe-layout-body/style/style.min.css +1 -1
  95. package/lib/vxe-menu/style/style.css +14 -2
  96. package/lib/vxe-menu/style/style.min.css +1 -1
  97. package/lib/vxe-scrollbar/style/style.css +16 -13
  98. package/lib/vxe-scrollbar/style/style.min.css +1 -1
  99. package/lib/vxe-text-ellipsis/style/style.css +29 -10
  100. package/lib/vxe-text-ellipsis/style/style.min.css +1 -1
  101. package/package.json +2 -2
  102. package/packages/calendar/src/calendar.ts +1 -1
  103. package/packages/card/src/card.ts +1 -1
  104. package/packages/carousel/src/carousel.ts +1 -1
  105. package/packages/countdown/src/countdown.ts +1 -1
  106. package/packages/date-picker/src/date-picker.ts +3 -3
  107. package/packages/icon-picker/src/icon-picker.ts +1 -1
  108. package/packages/layout-aside/src/layout-aside.ts +32 -6
  109. package/packages/layout-body/src/layout-body.ts +33 -6
  110. package/packages/list/src/list.ts +1 -1
  111. package/packages/menu/src/menu.ts +26 -5
  112. package/packages/scrollbar/src/scrollbar.ts +41 -14
  113. package/packages/select/src/select.ts +2 -2
  114. package/packages/tabs/src/tabs.ts +1 -1
  115. package/packages/ui/index.ts +8 -3
  116. package/packages/upload/src/upload.ts +1 -1
  117. package/styles/components/layout-aside.scss +5 -0
  118. package/styles/components/layout-body.scss +4 -1
  119. package/styles/components/menu.scss +15 -2
  120. package/styles/components/scrollbar.scss +24 -17
  121. package/styles/components/text-ellipsis.scss +23 -64
  122. package/styles/theme/base.scss +2 -0
  123. package/types/components/layout-aside.d.ts +5 -0
  124. package/types/components/layout-body.d.ts +5 -1
  125. package/types/components/menu.d.ts +5 -0
  126. package/types/components/scrollbar.d.ts +15 -0
  127. /package/es/icon/{iconfont.1791517860186.ttf → iconfont.1791542939851.ttf} +0 -0
  128. /package/es/icon/{iconfont.1791517860186.woff → iconfont.1791542939851.woff} +0 -0
  129. /package/es/icon/{iconfont.1791517860186.woff2 → iconfont.1791542939851.woff2} +0 -0
  130. /package/es/{iconfont.1791517860186.ttf → iconfont.1791542939851.ttf} +0 -0
  131. /package/es/{iconfont.1791517860186.woff → iconfont.1791542939851.woff} +0 -0
  132. /package/es/{iconfont.1791517860186.woff2 → iconfont.1791542939851.woff2} +0 -0
  133. /package/lib/icon/style/{iconfont.1791517860186.ttf → iconfont.1791542939851.ttf} +0 -0
  134. /package/lib/icon/style/{iconfont.1791517860186.woff → iconfont.1791542939851.woff} +0 -0
  135. /package/lib/icon/style/{iconfont.1791517860186.woff2 → iconfont.1791542939851.woff2} +0 -0
  136. /package/lib/{iconfont.1791517860186.ttf → iconfont.1791542939851.ttf} +0 -0
  137. /package/lib/{iconfont.1791517860186.woff → iconfont.1791542939851.woff} +0 -0
  138. /package/lib/{iconfont.1791517860186.woff2 → iconfont.1791542939851.woff2} +0 -0
@@ -5,8 +5,6 @@
5
5
  .vxe-scrollbar.is--virtual > .vxe-scrollbar--view {
6
6
  scrollbar-width: none;
7
7
  -ms-overflow-style: none;
8
- overflow-x: auto;
9
- overflow-y: auto;
10
8
  }
11
9
  .vxe-scrollbar.is--virtual > .vxe-scrollbar--view::-webkit-scrollbar {
12
10
  display: none;
@@ -25,16 +23,6 @@
25
23
  opacity: 0;
26
24
  transition: opacity 0.8s ease-in-out;
27
25
  }
28
- .vxe-scrollbar.is--native > .vxe-scrollbar--view {
29
- overflow-x: auto;
30
- overflow-y: auto;
31
- }
32
- .vxe-scrollbar.is--native.ov-x--hidden > .vxe-scrollbar--view {
33
- overflow-x: hidden;
34
- }
35
- .vxe-scrollbar.is--native.ov-y--hidden > .vxe-scrollbar--view {
36
- overflow-y: hidden;
37
- }
38
26
  .vxe-scrollbar.is--native > .vxe-scrollbar--view::-webkit-scrollbar {
39
27
  width: var(--vxe-ui-scrollbar-y-width);
40
28
  height: var(--vxe-ui-scrollbar-x-height);
@@ -49,14 +37,23 @@
49
37
  .vxe-scrollbar.is--native > .vxe-scrollbar--view::-webkit-scrollbar-thumb:active {
50
38
  background-color: var(--vxe-ui-scrollbar-thumb-active-background-color);
51
39
  }
40
+ .vxe-scrollbar.ov-x--hidden > .vxe-scrollbar--view {
41
+ overflow-x: hidden;
42
+ }
43
+ .vxe-scrollbar.ov-y--hidden > .vxe-scrollbar--view {
44
+ overflow-y: hidden;
45
+ }
52
46
 
53
47
  .vxe-scrollbar--view {
54
48
  height: 100%;
55
49
  width: 100%;
50
+ overflow-x: auto;
51
+ overflow-y: auto;
56
52
  }
57
53
 
58
54
  .vxe-scrollbar--track-x,
59
55
  .vxe-scrollbar--track-y {
56
+ display: none;
60
57
  position: absolute;
61
58
  background-color: var(--vxe-ui-scrollbar-track-background-color);
62
59
  -webkit-user-select: none;
@@ -64,11 +61,16 @@
64
61
  user-select: none;
65
62
  }
66
63
 
64
+ .vxe-scrollbar.overflow-y > .vxe-scrollbar--track-x, .vxe-scrollbar.overflow-y > .vxe-scrollbar--track-y {
65
+ display: block;
66
+ }
67
+
67
68
  .vxe-scrollbar--track-x {
68
69
  width: 100%;
69
70
  bottom: 0;
70
71
  left: 0;
71
72
  height: var(--vxe-ui-scrollbar-x-height);
73
+ padding: var(--vxe-ui-scrollbar-track-padding) 0;
72
74
  }
73
75
 
74
76
  .vxe-scrollbar--track-y {
@@ -76,6 +78,7 @@
76
78
  right: 0;
77
79
  top: 0;
78
80
  width: var(--vxe-ui-scrollbar-y-width);
81
+ padding: 0 var(--vxe-ui-scrollbar-track-padding);
79
82
  }
80
83
 
81
84
  .vxe-scrollbar--thumb-y {
@@ -88,7 +91,7 @@
88
91
 
89
92
  .vxe-scrollbar--thumb-x,
90
93
  .vxe-scrollbar--thumb-y {
91
- border-radius: var(--vxe-ui-base-border-radius);
94
+ border-radius: var(--vxe-ui-scrollbar-thumb-border-radius);
92
95
  background-color: var(--vxe-ui-scrollbar-thumb-background-color);
93
96
  }
94
97
  .vxe-scrollbar--thumb-x:hover,
@@ -1 +1 @@
1
- .vxe-scrollbar{width:100%;position:relative}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view{scrollbar-width:none;-ms-overflow-style:none;overflow-x:auto;overflow-y:auto}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view::-webkit-scrollbar{display:none}.vxe-scrollbar.is--virtual.ov-x--auto-hide:hover>.vxe-scrollbar--track-x{opacity:1}.vxe-scrollbar.is--virtual.ov-x--auto-hide>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--virtual.ov-y--auto-hide:hover>.vxe-scrollbar--track-y{opacity:1}.vxe-scrollbar.is--virtual.ov-y--auto-hide>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--native>.vxe-scrollbar--view{overflow-x:auto;overflow-y:auto}.vxe-scrollbar.is--native.ov-x--hidden>.vxe-scrollbar--view{overflow-x:hidden}.vxe-scrollbar.is--native.ov-y--hidden>.vxe-scrollbar--view{overflow-y:hidden}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar{width:var(--vxe-ui-scrollbar-y-width);height:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb{border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}.vxe-scrollbar--view{height:100%;width:100%}.vxe-scrollbar--track-x,.vxe-scrollbar--track-y{position:absolute;background-color:var(--vxe-ui-scrollbar-track-background-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-scrollbar--track-x{width:100%;bottom:0;left:0;height:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar--track-y{height:100%;right:0;top:0;width:var(--vxe-ui-scrollbar-y-width)}.vxe-scrollbar--thumb-y{width:100%}.vxe-scrollbar--thumb-x{height:100%}.vxe-scrollbar--thumb-x,.vxe-scrollbar--thumb-y{border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar--thumb-x:hover,.vxe-scrollbar--thumb-y:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar--thumb-x:active,.vxe-scrollbar--thumb-y:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}
1
+ .vxe-scrollbar{width:100%;position:relative}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view{scrollbar-width:none;-ms-overflow-style:none}.vxe-scrollbar.is--virtual>.vxe-scrollbar--view::-webkit-scrollbar{display:none}.vxe-scrollbar.is--virtual.ov-x--auto-hide:hover>.vxe-scrollbar--track-x{opacity:1}.vxe-scrollbar.is--virtual.ov-x--auto-hide>.vxe-scrollbar--track-x{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--virtual.ov-y--auto-hide:hover>.vxe-scrollbar--track-y{opacity:1}.vxe-scrollbar.is--virtual.ov-y--auto-hide>.vxe-scrollbar--track-y{opacity:0;transition:opacity .8s ease-in-out}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar{width:var(--vxe-ui-scrollbar-y-width);height:var(--vxe-ui-scrollbar-x-height)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb{border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar.is--native>.vxe-scrollbar--view::-webkit-scrollbar-thumb:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}.vxe-scrollbar.ov-x--hidden>.vxe-scrollbar--view{overflow-x:hidden}.vxe-scrollbar.ov-y--hidden>.vxe-scrollbar--view{overflow-y:hidden}.vxe-scrollbar--view{height:100%;width:100%;overflow-x:auto;overflow-y:auto}.vxe-scrollbar--track-x,.vxe-scrollbar--track-y{display:none;position:absolute;background-color:var(--vxe-ui-scrollbar-track-background-color);-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-scrollbar.overflow-y>.vxe-scrollbar--track-x,.vxe-scrollbar.overflow-y>.vxe-scrollbar--track-y{display:block}.vxe-scrollbar--track-x{width:100%;bottom:0;left:0;height:var(--vxe-ui-scrollbar-x-height);padding:var(--vxe-ui-scrollbar-track-padding) 0}.vxe-scrollbar--track-y{height:100%;right:0;top:0;width:var(--vxe-ui-scrollbar-y-width);padding:0 var(--vxe-ui-scrollbar-track-padding)}.vxe-scrollbar--thumb-y{width:100%}.vxe-scrollbar--thumb-x{height:100%}.vxe-scrollbar--thumb-x,.vxe-scrollbar--thumb-y{border-radius:var(--vxe-ui-scrollbar-thumb-border-radius);background-color:var(--vxe-ui-scrollbar-thumb-background-color)}.vxe-scrollbar--thumb-x:hover,.vxe-scrollbar--thumb-y:hover{background-color:var(--vxe-ui-scrollbar-thumb-hover-background-color)}.vxe-scrollbar--thumb-x:active,.vxe-scrollbar--thumb-y:active{background-color:var(--vxe-ui-scrollbar-thumb-active-background-color)}
@@ -1,7 +1,27 @@
1
+ .vxe-text-ellipsis {
2
+ --vxe-ui-text-ellipsis-current-font-size: inherit;
3
+ }
4
+ .vxe-text-ellipsis.size--xlarge {
5
+ --vxe-ui-text-ellipsis-current-font-size: var(--vxe-ui-font-size-xlarge);
6
+ }
7
+ .vxe-text-ellipsis.size--large {
8
+ --vxe-ui-text-ellipsis-current-font-size: var(--vxe-ui-font-size-large);
9
+ }
10
+ .vxe-text-ellipsis.size--medium {
11
+ --vxe-ui-text-ellipsis-current-font-size: var(--vxe-ui-font-size-medium);
12
+ }
13
+ .vxe-text-ellipsis.size--small {
14
+ --vxe-ui-text-ellipsis-current-font-size: var(--vxe-ui-font-size-small);
15
+ }
16
+ .vxe-text-ellipsis.size--mini {
17
+ --vxe-ui-text-ellipsis-current-font-size: var(--vxe-ui-font-size-mini);
18
+ }
19
+
1
20
  .vxe-text-ellipsis {
2
21
  display: block;
3
22
  overflow: hidden;
4
23
  white-space: normal;
24
+ font-size: var(--vxe-ui-text-ellipsis-current-font-size);
5
25
  }
6
26
  .vxe-text-ellipsis.theme--primary {
7
27
  color: var(--vxe-ui-font-primary-color);
@@ -57,6 +77,15 @@
57
77
  .vxe-text-ellipsis.theme--error > .vxe-text-ellipsis--link:hover {
58
78
  color: var(--vxe-ui-status-error-lighten-color);
59
79
  }
80
+ .vxe-text-ellipsis.theme--perfect {
81
+ color: var(--vxe-ui-table-header-background-color);
82
+ }
83
+ .vxe-text-ellipsis.theme--perfect > .vxe-text-ellipsis--link:focus {
84
+ color: var(--vxe-ui-table-header-background-color);
85
+ }
86
+ .vxe-text-ellipsis.theme--perfect > .vxe-text-ellipsis--link:hover {
87
+ color: var(--vxe-ui-table-header-background-color);
88
+ }
60
89
  .vxe-text-ellipsis.is--underline:hover .vxe-text-ellipsis--link {
61
90
  text-decoration: underline;
62
91
  }
@@ -101,14 +130,4 @@
101
130
  .vxe-text-ellipsis--link {
102
131
  text-decoration: none;
103
132
  color: inherit;
104
- }
105
-
106
- .vxe-text-ellipsis.size--medium {
107
- font-size: var(--vxe-ui-font-size-medium);
108
- }
109
- .vxe-text-ellipsis.size--small {
110
- font-size: var(--vxe-ui-font-size-small);
111
- }
112
- .vxe-text-ellipsis.size--mini {
113
- font-size: var(--vxe-ui-font-size-mini);
114
133
  }
@@ -1 +1 @@
1
- .vxe-text-ellipsis{display:block;overflow:hidden;white-space:normal}.vxe-text-ellipsis.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-text-ellipsis.theme--primary>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text-ellipsis.theme--primary>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text-ellipsis.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-text-ellipsis.theme--success>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-success-darken-color)}.vxe-text-ellipsis.theme--success>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-success-lighten-color)}.vxe-text-ellipsis.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-text-ellipsis.theme--info>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-info-darken-color)}.vxe-text-ellipsis.theme--info>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-info-lighten-color)}.vxe-text-ellipsis.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-text-ellipsis.theme--warning>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-warning-darken-color)}.vxe-text-ellipsis.theme--warning>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-warning-lighten-color)}.vxe-text-ellipsis.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-text-ellipsis.theme--danger>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-danger-darken-color)}.vxe-text-ellipsis.theme--danger>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-danger-lighten-color)}.vxe-text-ellipsis.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-text-ellipsis.theme--error>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-error-darken-color)}.vxe-text-ellipsis.theme--error>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-error-lighten-color)}.vxe-text-ellipsis.is--underline:hover .vxe-text-ellipsis--link{text-decoration:underline}.vxe-text-ellipsis.is--single{text-overflow:ellipsis;white-space:nowrap}.vxe-text-ellipsis.is--multi{word-wrap:break-word;word-break:break-all}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon{cursor:pointer}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:focus{color:var(--vxe-ui-font-darken-color)}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text-ellipsis .vxe-text-ellipsis--reality{display:none;z-index:-1;pointer-events:none}.vxe-text-ellipsis--icon{padding:0 .1em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-text-ellipsis--content,.vxe-text-ellipsis--link{padding:0 .1em}.vxe-text-ellipsis--link{text-decoration:none;color:inherit}.vxe-text-ellipsis.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-text-ellipsis.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-text-ellipsis.size--mini{font-size:var(--vxe-ui-font-size-mini)}
1
+ .vxe-text-ellipsis{--vxe-ui-text-ellipsis-current-font-size:inherit}.vxe-text-ellipsis.size--xlarge{--vxe-ui-text-ellipsis-current-font-size:var(--vxe-ui-font-size-xlarge)}.vxe-text-ellipsis.size--large{--vxe-ui-text-ellipsis-current-font-size:var(--vxe-ui-font-size-large)}.vxe-text-ellipsis.size--medium{--vxe-ui-text-ellipsis-current-font-size:var(--vxe-ui-font-size-medium)}.vxe-text-ellipsis.size--small{--vxe-ui-text-ellipsis-current-font-size:var(--vxe-ui-font-size-small)}.vxe-text-ellipsis.size--mini{--vxe-ui-text-ellipsis-current-font-size:var(--vxe-ui-font-size-mini)}.vxe-text-ellipsis{display:block;overflow:hidden;white-space:normal;font-size:var(--vxe-ui-text-ellipsis-current-font-size)}.vxe-text-ellipsis.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-text-ellipsis.theme--primary>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text-ellipsis.theme--primary>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text-ellipsis.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-text-ellipsis.theme--success>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-success-darken-color)}.vxe-text-ellipsis.theme--success>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-success-lighten-color)}.vxe-text-ellipsis.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-text-ellipsis.theme--info>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-info-darken-color)}.vxe-text-ellipsis.theme--info>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-info-lighten-color)}.vxe-text-ellipsis.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-text-ellipsis.theme--warning>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-warning-darken-color)}.vxe-text-ellipsis.theme--warning>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-warning-lighten-color)}.vxe-text-ellipsis.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-text-ellipsis.theme--danger>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-danger-darken-color)}.vxe-text-ellipsis.theme--danger>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-danger-lighten-color)}.vxe-text-ellipsis.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-text-ellipsis.theme--error>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-status-error-darken-color)}.vxe-text-ellipsis.theme--error>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-status-error-lighten-color)}.vxe-text-ellipsis.theme--perfect{color:var(--vxe-ui-table-header-background-color)}.vxe-text-ellipsis.theme--perfect>.vxe-text-ellipsis--link:focus{color:var(--vxe-ui-table-header-background-color)}.vxe-text-ellipsis.theme--perfect>.vxe-text-ellipsis--link:hover{color:var(--vxe-ui-table-header-background-color)}.vxe-text-ellipsis.is--underline:hover .vxe-text-ellipsis--link{text-decoration:underline}.vxe-text-ellipsis.is--single{text-overflow:ellipsis;white-space:nowrap}.vxe-text-ellipsis.is--multi{word-wrap:break-word;word-break:break-all}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon{cursor:pointer}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:focus{color:var(--vxe-ui-font-darken-color)}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:hover{color:var(--vxe-ui-font-primary-lighten-color)}.vxe-text-ellipsis.is--copy>.vxe-text-ellipsis--icon:active{color:var(--vxe-ui-font-primary-darken-color)}.vxe-text-ellipsis .vxe-text-ellipsis--reality{display:none;z-index:-1;pointer-events:none}.vxe-text-ellipsis--icon{padding:0 .1em;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-text-ellipsis--content,.vxe-text-ellipsis--link{padding:0 .1em}.vxe-text-ellipsis--link{text-decoration:none;color:inherit}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-pc-ui",
3
- "version": "4.18.23",
3
+ "version": "4.19.1",
4
4
  "description": "A vue based PC component library",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -27,7 +27,7 @@
27
27
  "style": "lib/style.css",
28
28
  "typings": "types/index.d.ts",
29
29
  "dependencies": {
30
- "@vxe-ui/core": "^4.4.27"
30
+ "@vxe-ui/core": "^4.4.28"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@rollup/plugin-commonjs": "^29.0.0",
@@ -5,7 +5,7 @@ import { getDateQuarter } from '../../date-panel/src/util'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
6
  import { isEnableConf } from '../../ui/src/utils'
7
7
  import { createComponentLog } from '../../ui/src/log'
8
- import VxeButtonComponent from '../../button/src/button'
8
+ import VxeButtonComponent from '../../button'
9
9
  import XEUtils from 'xe-utils'
10
10
 
11
11
  import type { VxeCalendarConstructor, VxeCalendarEmits, CalendarInternalData, CalendarReactData, CalendarMethods, VxeCalendarPropTypes, CalendarPrivateRef, VxeDatePanelDefines, ValueOf } from '../../../types'
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getSlotVNs } from '../../ui/src/vn'
4
4
  import { getConfig, createEvent, useSize, renderEmptyElement } from '../../ui'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
- import VxeLoadingComponent from '../../loading/src/loading'
6
+ import VxeLoadingComponent from '../../loading'
7
7
  import XEUtils from 'xe-utils'
8
8
 
9
9
  import type { CardReactData, VxeCardEmits, VxeCardPropTypes, CardPrivateRef, ValueOf, CardMethods, CardPrivateMethods, VxeCardPrivateComputed, VxeCardConstructor, VxeCardPrivateMethods } from '../../../types'
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getConfig, getIcon, createEvent, renderEmptyElement } from '../../ui'
4
4
  import { getSlotVNs } from '../../ui/src/vn'
5
5
  import { toCssUnit } from '../../ui/src/dom'
6
- import VxeLoadingComponent from '../../loading/src/loading'
6
+ import VxeLoadingComponent from '../../loading'
7
7
  import XEUtils from 'xe-utils'
8
8
 
9
9
  import type { CarouselReactData, CarouselPrivateRef, VxeCarouselPropTypes, CarouselInternalData, CarouselMethods, CarouselPrivateMethods, VxeCarouselEmits, VxeCarouselDefines, VxeCarouselPrivateComputed, VxeCarouselConstructor, ValueOf, VxeCarouselPrivateMethods } from '../../../types'
@@ -2,7 +2,7 @@ import { ref, h, reactive, watch, computed, PropType, onUnmounted, onMounted } f
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getConfig, getI18n, createEvent, useSize, renderEmptyElement } from '../../ui'
4
4
  import { getSlotVNs } from '../../ui/src/vn'
5
- import VxeTextComponent from '../../text/src/text'
5
+ import VxeTextComponent from '../../text'
6
6
  import XEUtils from 'xe-utils'
7
7
 
8
8
  import type { VxeCountdownPropTypes, CountdownReactData, CountdownInternalData, CountdownPrivateRef, VxeCountdownEmits, VxeCountdownPrivateComputed, VxeCountdownConstructor, VxeCountdownPrivateMethods, ValueOf, CountdownMethods, CountdownPrivateMethods } from '../../../types'
@@ -7,9 +7,9 @@ import { updatePanelPlacement, getEventTargetNode, hasControlKey, getPopupContai
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { parseDateObj, parseDateValue, getDateByCode, handleValueFormat, hasDateValueType, hasTimestampValueType, isAllSameChar, getChunkDefaultNum, checkDateInputFormat } from '../../date-panel/src/util'
9
9
  import { createComponentLog } from '../../ui/src/log'
10
- import VxeDatePanelComponent from '../../date-panel/src/date-panel'
11
- import VxeButtonComponent from '../../button/src/button'
12
- import VxeButtonGroupComponent from '../../button/src/button-group'
10
+ import VxeDatePanelComponent from '../../date-panel'
11
+ import VxeButtonComponent from '../../button'
12
+ import VxeButtonGroupComponent from '../../button-group'
13
13
 
14
14
  import type { VxeDatePickerConstructor, VxeDatePickerEmits, DatePickerInternalData, DatePickerReactData, DatePickerMethods, VxeDatePanelDefines, VxeDatePickerPropTypes, DatePickerPrivateRef, VxeFormConstructor, VxeFormPrivateMethods, VxeFormDefines, ValueOf, VxeModalConstructor, VxeDrawerConstructor, VxeModalMethods, VxeDrawerMethods, VxeDatePickerDefines, VxeButtonGroupEvents, VxeDatePanelConstructor, VxeCardConstructor, VxeCardPrivateMethods, VxeComponentStyleType } from '../../../types'
15
15
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
@@ -5,7 +5,7 @@ import { getConfig, getIcon, getI18n, globalEvents, createEvent, renderer, useSi
5
5
  import { getEventTargetNode, getPopupContainer, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
6
6
  import { getLastZIndex, nextZIndex, getFuncText } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
- import VxeInputComponent from '../../input/src/input'
8
+ import VxeInputComponent from '../../input'
9
9
 
10
10
  import type { VxeIconPickerPropTypes, VxeIconPickerConstructor, IconPickerInternalData, VxeInputConstructor, ValueOf, IconPickerReactData, VxeIconPickerEmits, IconPickerMethods, IconPickerPrivateRef, VxeIconPickerMethods, VxeIconPickerDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeComponentStyleType } from '../../../types'
11
11
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
@@ -2,8 +2,9 @@ import { ref, h, reactive, computed, provide, PropType } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { toCssUnit } from '../../ui/src/dom'
4
4
  import { getConfig, useSize, createEvent } from '../../ui'
5
- import VxeLoadingComponent from '../../loading'
6
5
  import XEUtils from 'xe-utils'
6
+ import VxeLoadingComponent from '../../loading'
7
+ import VxeScrollbarComponent from '../../scrollbar'
7
8
 
8
9
  import type { VxeLayoutAsidePropTypes, LayoutAsideReactData, VxeLayoutAsideEmits, LayoutAsidePrivateRef, LayoutAsideMethods, LayoutAsidePrivateMethods, VxeLayoutAsidePrivateComputed, VxeLayoutAsideConstructor, VxeLayoutAsidePrivateMethods, ValueOf, VxeComponentStyleType } from '../../../types'
9
10
 
@@ -16,6 +17,11 @@ export default defineVxeComponent({
16
17
  loading: Boolean as PropType<VxeLayoutAsidePropTypes.Loading>,
17
18
  padding: Boolean as PropType<VxeLayoutAsidePropTypes.Padding>,
18
19
  collapseConfig: Object as PropType<VxeLayoutAsidePropTypes.CollapseConfig>,
20
+ useScrollbar: {
21
+ type: Boolean as PropType<VxeLayoutAsidePropTypes.UseScrollbar>,
22
+ default: () => getConfig().layoutAside.useScrollbar
23
+ },
24
+ scrollbarConfig: Object as PropType<VxeLayoutAsidePropTypes.ScrollbarConfig>,
19
25
  size: {
20
26
  type: String as PropType<VxeLayoutAsidePropTypes.Size>,
21
27
  default: () => getConfig().layoutAside.size || getConfig().size
@@ -41,6 +47,10 @@ export default defineVxeComponent({
41
47
  return Object.assign({}, getConfig().layoutAside.collapseConfig, props.collapseConfig)
42
48
  })
43
49
 
50
+ const computeScrollbarOpts = computed(() => {
51
+ return Object.assign({}, getConfig().layoutAside.scrollbarConfig, props.scrollbarConfig)
52
+ })
53
+
44
54
  const computeVarStyle = computed(() => {
45
55
  const { width, collapseWidth } = props
46
56
  const stys: VxeComponentStyleType = {}
@@ -82,10 +92,12 @@ export default defineVxeComponent({
82
92
  Object.assign($xeLayoutAside, layoutAsideMethods, layoutAsidePrivateMethods)
83
93
 
84
94
  const renderVN = () => {
85
- const { collapsed, loading, padding } = props
95
+ const { collapsed, loading, padding, useScrollbar } = props
86
96
  const varStyle = computeVarStyle.value
87
97
  const vSize = computeSize.value
88
98
  const collapseOpts = computeCollapseOpts.value
99
+ const scrollbarOpts = computeScrollbarOpts.value
100
+ const { native, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
89
101
  const defaultSlot = slots.default
90
102
 
91
103
  return h('aside', {
@@ -99,14 +111,28 @@ export default defineVxeComponent({
99
111
  }],
100
112
  style: varStyle
101
113
  }, [
102
- h('div', {
103
- class: 'vxe-layout-aside--inner'
104
- }, defaultSlot ? defaultSlot({}) : []),
114
+ useScrollbar
115
+ ? h(VxeScrollbarComponent, {
116
+ native,
117
+ xConfig: {
118
+ visible: 'hidden'
119
+ },
120
+ yConfig,
121
+ className: 'vxe-layout-aside--scrollbar' + (className ? (' ' + className) : ''),
122
+ viewAttrs,
123
+ viewClassName: 'vxe-layout-aside--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
124
+ viewInnerClassName: 'vxe-layout-aside--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
125
+ }, {
126
+ default: () => defaultSlot ? defaultSlot({}) : []
127
+ })
128
+ : h('div', {
129
+ class: 'vxe-layout-aside--inner'
130
+ }, defaultSlot ? defaultSlot({}) : []),
105
131
  /**
106
132
  * 加载中
107
133
  */
108
134
  h(VxeLoadingComponent, {
109
- class: 'vxe-list-view--loading',
135
+ class: 'vxe-layout-aside--loading',
110
136
  modelValue: loading
111
137
  })
112
138
  ])
@@ -1,9 +1,10 @@
1
1
  import { ref, h, reactive, PropType, computed } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import { getConfig, useSize, createEvent, renderEmptyElement } from '../../ui'
4
+ import XEUtils from 'xe-utils'
4
5
  import VxeLoadingComponent from '../../loading'
6
+ import VxeScrollbarComponent from '../../scrollbar'
5
7
  import VxeUIBacktopComponent from '../../backtop'
6
- import XEUtils from 'xe-utils'
7
8
 
8
9
  import type { LayoutBodyInternalData, VxeLayoutBodyPropTypes, LayoutBodyReactData, LayoutBodyPrivateRef, VxeLayoutBodyEmits, LayoutBodyMethods, LayoutBodyPrivateMethods, VxeLayoutBodyPrivateComputed, VxeLayoutBodyConstructor, VxeLayoutBodyPrivateMethods, ValueOf } from '../../../types'
9
10
 
@@ -25,6 +26,11 @@ export default defineVxeComponent({
25
26
  default: () => getConfig().layoutBody.showBacktop
26
27
  },
27
28
  backtopConfig: Object as PropType<VxeLayoutBodyPropTypes.BacktopConfig>,
29
+ useScrollbar: {
30
+ type: Boolean as PropType<VxeLayoutBodyPropTypes.UseScrollbar>,
31
+ default: () => getConfig().layoutBody.useScrollbar
32
+ },
33
+ scrollbarConfig: Object as PropType<VxeLayoutBodyPropTypes.ScrollbarConfig>,
28
34
  size: {
29
35
  type: String as PropType<VxeLayoutBodyPropTypes.Size>,
30
36
  default: () => getConfig().layoutBody.size || getConfig().size
@@ -54,6 +60,10 @@ export default defineVxeComponent({
54
60
  })
55
61
  })
56
62
 
63
+ const computeScrollbarOpts = computed(() => {
64
+ return Object.assign({}, getConfig().layoutBody.scrollbarConfig, props.scrollbarConfig)
65
+ })
66
+
57
67
  const computeMaps: VxeLayoutBodyPrivateComputed = {
58
68
  computeSize
59
69
  }
@@ -83,8 +93,10 @@ export default defineVxeComponent({
83
93
  Object.assign($xeLayoutBody, layoutBodyMethods, layoutBodyPrivateMethods)
84
94
 
85
95
  const renderVN = () => {
86
- const { loading, padding, showBacktop } = props
96
+ const { loading, padding, showBacktop, useScrollbar } = props
87
97
  const backtopOpts = computeBacktopOpts.value
98
+ const scrollbarOpts = computeScrollbarOpts.value
99
+ const { native, xConfig, yConfig, className, viewAttrs, viewClassName, viewInnerClassName } = scrollbarOpts
88
100
  const vSize = computeSize.value
89
101
  const defaultSlot = slots.default
90
102
  const backtopSlot = slots.backtop
@@ -112,10 +124,25 @@ export default defineVxeComponent({
112
124
  'is--padding': padding
113
125
  }]
114
126
  }, [
115
- h('div', {
116
- id: showBacktop ? backtopId : '',
117
- class: 'vxe-layout-body--inner'
118
- }, defaultSlot ? defaultSlot({}) : []),
127
+ useScrollbar
128
+ ? h(VxeScrollbarComponent, {
129
+ native,
130
+ xConfig,
131
+ yConfig,
132
+ className: 'vxe-layout-body--scrollbar' + (className ? (' ' + className) : ''),
133
+ viewAttrs: {
134
+ ...viewAttrs,
135
+ id: showBacktop ? (backtopId || null) : null
136
+ },
137
+ viewClassName: 'vxe-layout-body--scrollbar-view' + (viewClassName ? (' ' + viewClassName) : ''),
138
+ viewInnerClassName: 'vxe-layout-body--scrollbar-inner' + (viewInnerClassName ? (' ' + viewInnerClassName) : '')
139
+ }, {
140
+ default: () => defaultSlot ? defaultSlot({}) : []
141
+ })
142
+ : h('div', {
143
+ id: showBacktop ? backtopId : '',
144
+ class: 'vxe-layout-body--inner'
145
+ }, defaultSlot ? defaultSlot({}) : []),
119
146
  /**
120
147
  * 加载中
121
148
  */
@@ -8,7 +8,7 @@ import { isEnableConf, getText, enModelValue, deModelValue } from '../../ui/src/
8
8
  import { createComponentLog } from '../../ui/src/log'
9
9
  import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
10
10
  import { getItemCacheObj } from './util'
11
- import VxeLoadingComponent from '../../loading/src/loading'
11
+ import VxeLoadingComponent from '../../loading'
12
12
 
13
13
  import type { VxeListConstructor, VxeListPropTypes, VxeListEmits, ListReactData, VxeListPrivateMethods, ListInternalData, VxeListDefines, ValueOf, ListMethods, ListPrivateMethods, ListPrivateRef, VxeComponentStyleType } from '../../../types'
14
14
 
@@ -7,6 +7,7 @@ import { getLastZIndex, nextZIndex, isEnableConf } 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'
10
+ import VxeScrollbarComponent from '../../scrollbar'
10
11
 
11
12
  import type { VxeMenuDefines, VxeMenuPropTypes, MenuInternalData, MenuReactData, VxeMenuEmits, MenuMethods, VxeComponentSlotType, MenuPrivateMethods, MenuPrivateRef, VxeMenuPrivateComputed, VxeMenuConstructor, VxeMenuPrivateMethods, ValueOf, VxeLayoutAsideConstructor, VxeLayoutAsidePrivateMethods } from '../../../types'
12
13
 
@@ -71,6 +72,11 @@ export default defineVxeComponent({
71
72
  default: () => getConfig().menu.size || getConfig().size
72
73
  },
73
74
  menuConfig: Object as PropType<VxeMenuPropTypes.MenuConfig>,
75
+ useScrollbar: {
76
+ type: Boolean as PropType<VxeMenuPropTypes.UseScrollbar>,
77
+ default: () => getConfig().menu.useScrollbar
78
+ },
79
+ scrollbarConfig: Object as PropType<VxeMenuPropTypes.ScrollbarConfig>,
74
80
  appendTo: {
75
81
  type: [String, Function] as PropType<VxeMenuPropTypes.AppendTo>,
76
82
  default: () => getConfig().menu.appendTo
@@ -134,6 +140,10 @@ export default defineVxeComponent({
134
140
  return propsOpts.routerLink || 'routerLink'
135
141
  })
136
142
 
143
+ const computeScrollbarOpts = computed(() => {
144
+ return Object.assign({}, getConfig().menu.scrollbarConfig, props.scrollbarConfig)
145
+ })
146
+
137
147
  const computeCurrBorder = computed(() => {
138
148
  const { border } = props
139
149
  if (border) {
@@ -676,12 +686,14 @@ export default defineVxeComponent({
676
686
  }
677
687
 
678
688
  const renderVN = () => {
679
- const { loading, collapseFixed, appendTo } = props
689
+ const { loading, collapseFixed, appendTo, useScrollbar } = props
680
690
  const { initialized, menuList, collapseStyle, isEnterCollapse } = reactData
681
691
  const vSize = computeSize.value
682
692
  const isCollapsed = computeIsCollapsed.value
683
693
  const currBorder = computeCurrBorder.value
684
694
  const varStyle = computeVarStyle.value
695
+ const scrollbarOpts = computeScrollbarOpts.value
696
+ const { viewClassName, viewInnerClassName } = scrollbarOpts
685
697
  const headerSlot = slots.header
686
698
  const footerSlot = slots.footer
687
699
  let ons: Record<string, any> = {}
@@ -735,9 +747,18 @@ export default defineVxeComponent({
735
747
  class: 'vxe-menu--header'
736
748
  }, headerSlot(stParams))
737
749
  : renderEmptyElement($xeMenu),
738
- h('div', {
739
- class: 'vxe-menu--body'
740
- }, menuList.map(child => renderDefaultChildren(child, menuList))),
750
+ useScrollbar
751
+ ? h(VxeScrollbarComponent, {
752
+ class: 'vxe-menu--scrollbar-body',
753
+ ...scrollbarOpts,
754
+ viewClassName: 'vxe-menu--body-view' + (viewClassName ? (' ' + viewClassName) : ''),
755
+ viewInnerClassName: 'vxe-menu--body-inner' + (viewClassName ? (' ' + viewInnerClassName) : '')
756
+ }, {
757
+ default: () => menuList.map(child => renderDefaultChildren(child, menuList))
758
+ })
759
+ : h('div', {
760
+ class: 'vxe-menu--body'
761
+ }, menuList.map(child => renderDefaultChildren(child, menuList))),
741
762
  footerSlot
742
763
  ? h('div', {
743
764
  class: 'vxe-menu--footer'
@@ -750,7 +771,7 @@ export default defineVxeComponent({
750
771
  * 加载中
751
772
  */
752
773
  h(VxeLoadingComponent, {
753
- class: 'vxe-list-view--loading',
774
+ class: 'vxe-menu-view--loading',
754
775
  modelValue: loading
755
776
  })
756
777
  ])
@@ -32,6 +32,7 @@ function createInternalData (): ScrollbarInternalData {
32
32
  export default defineVxeComponent({
33
33
  name: 'VxeScrollbar',
34
34
  props: {
35
+ id: [String, Number] as PropType<VxeScrollbarPropTypes.Id>,
35
36
  width: [String, Number] as PropType<VxeScrollbarPropTypes.Width>,
36
37
  height: [String, Number] as PropType<VxeScrollbarPropTypes.Height>,
37
38
  minWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MinWidth>,
@@ -45,8 +46,22 @@ export default defineVxeComponent({
45
46
  },
46
47
  xConfig: Object as PropType<VxeScrollbarPropTypes.XConfig>,
47
48
  yConfig: Object as PropType<VxeScrollbarPropTypes.YConfig>,
48
- className: String as PropType<VxeScrollbarPropTypes.ClassName>,
49
- viewClassName: String as PropType<VxeScrollbarPropTypes.ViewClassName>,
49
+ className: {
50
+ type: String as PropType<VxeScrollbarPropTypes.ClassName>,
51
+ default: () => getConfig().scrollbar.className
52
+ },
53
+ viewAttrs: {
54
+ type: Object as PropType<VxeScrollbarPropTypes.ViewAttrs>,
55
+ default: () => getConfig().scrollbar.viewAttrs
56
+ },
57
+ viewClassName: {
58
+ type: String as PropType<VxeScrollbarPropTypes.ViewClassName>,
59
+ default: () => getConfig().scrollbar.viewClassName
60
+ },
61
+ viewInnerClassName: {
62
+ type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
63
+ default: () => getConfig().scrollbar.viewInnerClassName
64
+ },
50
65
  autoResize: {
51
66
  type: Boolean as PropType<VxeScrollbarPropTypes.AutoResize>,
52
67
  default: () => getConfig().scrollbar.autoResize
@@ -108,6 +123,7 @@ export default defineVxeComponent({
108
123
 
109
124
  const computeWrapperClss = computed(() => {
110
125
  const { native, className } = props
126
+ const { yThumbHeight, xThumbWidth } = reactData
111
127
  const xOpts = computeXOpts.value
112
128
  const yOpts = computeYOpts.value
113
129
  return domUtils.buildClass([
@@ -118,7 +134,9 @@ export default defineVxeComponent({
118
134
  className
119
135
  ], {
120
136
  'ov-x--auto-hide': xOpts.autoHide,
121
- 'ov-y--auto-hide': yOpts.autoHide
137
+ 'ov-y--auto-hide': yOpts.autoHide,
138
+ 'overflow-y': yThumbHeight,
139
+ 'overflow-x': xThumbWidth
122
140
  })
123
141
  })
124
142
 
@@ -130,6 +148,14 @@ export default defineVxeComponent({
130
148
  ])
131
149
  })
132
150
 
151
+ const computeViewInnerClss = computed(() => {
152
+ const { viewInnerClassName } = props
153
+ return domUtils.buildClass([
154
+ 'vxe-scrollbar--view-inner',
155
+ viewInnerClassName
156
+ ])
157
+ })
158
+
133
159
  const computeXOpts = computed(() => {
134
160
  return Object.assign({}, getConfig().scrollbar.xConfig, props.xConfig)
135
161
  })
@@ -427,31 +453,32 @@ export default defineVxeComponent({
427
453
  Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods)
428
454
 
429
455
  const renderVN = () => {
430
- const { native, loading, autoResize } = props
456
+ const { id, native, loading, viewAttrs } = props
431
457
  const wrapperStyle = computeWrapperStyle.value
432
458
  const wrapperClss = computeWrapperClss.value
433
459
  const viewClss = computeViewClss.value
460
+ const viewInnerClss = computeViewInnerClss.value
434
461
  const xOpts = computeXOpts.value
435
462
  const yOpts = computeYOpts.value
436
463
  const defaultSlot = slots.default
437
464
  return h('div', {
438
465
  ref: refElem,
466
+ id: id || null,
439
467
  class: wrapperClss,
440
468
  style: wrapperStyle
441
469
  }, [
442
470
  h('div', {
443
471
  ref: refViewElem,
444
472
  class: viewClss,
445
- onScroll: scrollEvent
446
- }, autoResize
447
- ? [
448
- h('div', {
449
- key: 'vi',
450
- ref: refViewInnerElem,
451
- class: 'vxe-scrollbar--view-inner'
452
- }, defaultSlot ? defaultSlot({}) : [])
453
- ]
454
- : defaultSlot ? defaultSlot({}) : []),
473
+ onScroll: scrollEvent,
474
+ ...viewAttrs
475
+ }, [
476
+ h('div', {
477
+ key: 'vi',
478
+ ref: refViewInnerElem,
479
+ class: viewInnerClss
480
+ }, defaultSlot ? defaultSlot({}) : [])
481
+ ]),
455
482
  native || xOpts.visible === 'hidden'
456
483
  ? renderEmptyElement($xeScrollbar)
457
484
  : h('div', {
@@ -6,8 +6,8 @@ import { getEventTargetNode, getPopupContainer, toCssUnit, updatePanelPlacement
6
6
  import { getLastZIndex, nextZIndex, getFuncText, eqEmptyValue } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { createComponentLog } from '../../ui/src/log'
9
- import VxeInputComponent from '../../input/src/input'
10
- import VxeButtonComponent from '../../button/src/button'
9
+ import VxeInputComponent from '../../input'
10
+ import VxeButtonComponent from '../../button'
11
11
 
12
12
  import type { VxeSelectPropTypes, VxeSelectConstructor, SelectInternalData, SelectReactData, VxeSelectDefines, VxeButtonEvents, ValueOf, VxeSelectEmits, VxeComponentSlotType, VxeInputConstructor, SelectMethods, SelectPrivateRef, VxeSelectMethods, VxeOptionProps, VxeDrawerConstructor, VxeDrawerMethods, VxeFormDefines, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeInputEvents, VxeComponentStyleType, VxeCardConstructor, VxeCardPrivateMethods } from '../../../types'
13
13
  import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
@@ -6,7 +6,7 @@ import { toCssUnit, addClass, removeClass } from '../../ui/src/dom'
6
6
  import { isEnableConf } from '../../ui/src/utils'
7
7
  import { createComponentLog } from '../../ui/src/log'
8
8
  import XEUtils from 'xe-utils'
9
- import VxeLoadingComponent from '../../loading/src/loading'
9
+ import VxeLoadingComponent from '../../loading'
10
10
 
11
11
  import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, TabsPrivateRef, VxeTabsPrivateComputed, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf, TabsMethods, TabsPrivateMethods, VxeComponentStyleType } from '../../../types'
12
12
 
@@ -221,11 +221,16 @@ setConfig({
221
221
  digits: 2,
222
222
  controls: true
223
223
  },
224
- layoutAside: {},
225
- layoutBody: {
226
- backtopConfig: {
224
+ layoutAside: {
225
+ scrollbarConfig: {
226
+ yConfig: {
227
+ autoHide: true
228
+ }
227
229
  }
228
230
  },
231
+ layoutBody: {
232
+ backtopConfig: {}
233
+ },
229
234
  layoutContainer: {},
230
235
  layoutFooter: {},
231
236
  layoutHeader: {},