xt-element-ui 2.2.2 → 2.2.4

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 (153) hide show
  1. package/README.md +140 -192
  2. package/docs/README.md +162 -81
  3. package/docs/components/base/theme.md +248 -0
  4. package/docs/components/base/xt-button.md +11 -4
  5. package/docs/components/base/xt-card.md +5 -11
  6. package/docs/components/base/xt-config-provider.md +2 -0
  7. package/docs/components/base/xt-flow.md +404 -0
  8. package/docs/components/base/xt-list.md +1 -1
  9. package/docs/components/base/xt-multi.md +5 -5
  10. package/docs/components/base/xt-scroll-arrow.md +87 -1
  11. package/docs/components/base/xt-scroll.md +237 -0
  12. package/docs/components/business/xt-chart.md +1 -0
  13. package/docs/components/utils/config.md +18 -4
  14. package/docs/components/utils/theme.md +280 -183
  15. package/lib/index.common.1.js +4 -26
  16. package/lib/index.common.2.js +1 -1
  17. package/lib/index.common.js +4577 -109925
  18. package/lib/index.css +1 -1
  19. package/lib/index.umd.1.js +4 -26
  20. package/lib/index.umd.2.js +1 -1
  21. package/lib/index.umd.js +4583 -109930
  22. package/lib/index.umd.min.1.js +1 -1
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/theme/element-overrides.css +607 -0
  25. package/lib/theme/element-vars.css +280 -0
  26. package/lib/xt-badge/xt-badge.common.js +1 -1
  27. package/lib/xt-badge/xt-badge.css +1 -1
  28. package/lib/xt-badge/xt-badge.umd.js +1 -1
  29. package/lib/xt-button/xt-button.common.js +13 -8
  30. package/lib/xt-button/xt-button.css +1 -1
  31. package/lib/xt-button/xt-button.umd.js +13 -8
  32. package/lib/xt-button/xt-button.umd.min.js +1 -1
  33. package/lib/xt-card/xt-card.common.js +5 -5
  34. package/lib/xt-card/xt-card.umd.js +5 -5
  35. package/lib/xt-card/xt-card.umd.min.js +1 -1
  36. package/lib/xt-card-item/xt-card-item.common.js +4 -4
  37. package/lib/xt-card-item/xt-card-item.umd.js +4 -4
  38. package/lib/xt-card-item/xt-card-item.umd.min.js +1 -1
  39. package/lib/xt-chart/xt-chart.common.js +1969 -108924
  40. package/lib/xt-chart/xt-chart.css +1 -1
  41. package/lib/xt-chart/xt-chart.umd.js +1975 -108929
  42. package/lib/xt-chart/xt-chart.umd.min.js +1 -1
  43. package/lib/xt-config-provider/xt-config-provider.common.js +561 -107504
  44. package/lib/xt-config-provider/xt-config-provider.css +1 -1
  45. package/lib/xt-config-provider/xt-config-provider.umd.js +567 -107509
  46. package/lib/xt-config-provider/xt-config-provider.umd.min.js +1 -1
  47. package/lib/xt-date-picker/xt-date-picker.common.1.js +4 -26
  48. package/lib/xt-date-picker/xt-date-picker.common.2.js +1 -1
  49. package/lib/xt-date-picker/xt-date-picker.common.js +1 -47
  50. package/lib/xt-date-picker/xt-date-picker.css +1 -1
  51. package/lib/xt-date-picker/xt-date-picker.umd.1.js +4 -26
  52. package/lib/xt-date-picker/xt-date-picker.umd.2.js +1 -1
  53. package/lib/xt-date-picker/xt-date-picker.umd.js +1 -47
  54. package/lib/xt-date-picker/xt-date-picker.umd.min.1.js +1 -1
  55. package/lib/xt-date-picker/xt-date-picker.umd.min.js +1 -1
  56. package/lib/xt-flex-box/xt-flex-box.common.js +1 -1
  57. package/lib/xt-flex-box/xt-flex-box.umd.js +1 -1
  58. package/lib/xt-flow/demo.html +10 -0
  59. package/lib/xt-flow/index.js +1 -0
  60. package/lib/xt-flow/xt-flow.common.js +638 -0
  61. package/lib/xt-flow/xt-flow.css +1 -0
  62. package/lib/xt-flow/xt-flow.umd.js +648 -0
  63. package/lib/xt-flow/xt-flow.umd.min.js +1 -0
  64. package/lib/xt-form-schema/xt-form-schema.common.js +1 -1
  65. package/lib/xt-form-schema/xt-form-schema.umd.js +1 -1
  66. package/lib/xt-grid-box/xt-grid-box.common.js +1 -1
  67. package/lib/xt-grid-box/xt-grid-box.umd.js +1 -1
  68. package/lib/xt-grid-item/xt-grid-item.common.js +1 -1
  69. package/lib/xt-grid-item/xt-grid-item.umd.js +1 -1
  70. package/lib/xt-icon/xt-icon.common.js +1 -1
  71. package/lib/xt-icon/xt-icon.umd.js +1 -1
  72. package/lib/xt-input/xt-input.common.js +1 -1
  73. package/lib/xt-input/xt-input.umd.js +1 -1
  74. package/lib/xt-list/xt-list.common.js +457 -118
  75. package/lib/xt-list/xt-list.css +1 -1
  76. package/lib/xt-list/xt-list.umd.js +457 -118
  77. package/lib/xt-list/xt-list.umd.min.js +1 -1
  78. package/lib/xt-map/xt-map.common.js +1 -1
  79. package/lib/xt-map/xt-map.umd.js +1 -1
  80. package/lib/xt-map-provider/xt-map-provider.common.js +1 -1
  81. package/lib/xt-map-provider/xt-map-provider.umd.js +1 -1
  82. package/lib/xt-page/xt-page.common.js +1 -1
  83. package/lib/xt-page/xt-page.umd.js +1 -1
  84. package/lib/xt-progress/xt-progress.common.js +1 -1
  85. package/lib/xt-progress/xt-progress.umd.js +1 -1
  86. package/lib/xt-scroll/demo.html +10 -0
  87. package/lib/xt-scroll/index.js +1 -0
  88. package/lib/xt-scroll/xt-scroll.common.js +551 -0
  89. package/lib/xt-scroll/xt-scroll.css +1 -0
  90. package/lib/xt-scroll/xt-scroll.umd.js +561 -0
  91. package/lib/xt-scroll/xt-scroll.umd.min.js +1 -0
  92. package/lib/xt-scroll-arrow/xt-scroll-arrow.common.js +591 -170
  93. package/lib/xt-scroll-arrow/xt-scroll-arrow.css +1 -1
  94. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.js +591 -170
  95. package/lib/xt-scroll-arrow/xt-scroll-arrow.umd.min.js +1 -1
  96. package/lib/xt-select-tree/xt-select-tree.common.js +1 -1
  97. package/lib/xt-select-tree/xt-select-tree.umd.js +1 -1
  98. package/lib/xt-step-price/xt-step-price.common.js +2 -2
  99. package/lib/xt-step-price/xt-step-price.umd.js +2 -2
  100. package/lib/xt-step-price-item/xt-step-price-item.common.js +1 -1
  101. package/lib/xt-step-price-item/xt-step-price-item.umd.js +1 -1
  102. package/lib/xt-tab-pane/xt-tab-pane.common.js +1 -1
  103. package/lib/xt-tab-pane/xt-tab-pane.umd.js +1 -1
  104. package/lib/xt-table/xt-table.common.js +2 -2
  105. package/lib/xt-table/xt-table.umd.js +2 -2
  106. package/lib/xt-tabs/xt-tabs.common.js +1 -1
  107. package/lib/xt-tabs/xt-tabs.umd.js +1 -1
  108. package/lib/xt-text/xt-text.common.js +1 -1
  109. package/lib/xt-text/xt-text.css +1 -1
  110. package/lib/xt-text/xt-text.umd.js +1 -1
  111. package/lib/xt-time/xt-time.common.js +1 -1
  112. package/lib/xt-time/xt-time.umd.js +1 -1
  113. package/lib/xt-transfer-tree/xt-transfer-tree.common.js +1 -1
  114. package/lib/xt-transfer-tree/xt-transfer-tree.umd.js +1 -1
  115. package/lib/xt-upload/xt-upload.common.js +11 -11
  116. package/lib/xt-upload/xt-upload.umd.js +12 -12
  117. package/lib/xt-upload/xt-upload.umd.min.js +1 -1
  118. package/package.json +6 -5
  119. package/src/components/index.scss +7 -1
  120. package/src/components/theme/element-overrides.css +607 -0
  121. package/src/components/theme/element-vars.css +280 -0
  122. package/src/components/theme/iframe-injector.js +502 -0
  123. package/src/components/theme/index.js +64 -0
  124. package/src/components/xt-badge/style/index.scss +6 -6
  125. package/src/components/xt-button/index.vue +11 -6
  126. package/src/components/xt-button/style/index.scss +7 -5
  127. package/src/components/xt-card/index.vue +3 -3
  128. package/src/components/xt-card-item/index.vue +2 -2
  129. package/src/components/xt-chart/XtMulti.vue +8 -18
  130. package/src/components/xt-chart/XtPie.vue +1 -0
  131. package/src/components/xt-chart/utils.js +84 -50
  132. package/src/components/xt-config-provider/index.vue +56 -54
  133. package/src/components/xt-config-provider/style/index.scss +0 -11
  134. package/src/components/xt-date-picker/component/RangeDate.vue +1 -29
  135. package/src/components/xt-date-picker/style/index.scss +79 -54
  136. package/src/components/xt-flow/flowable-parser.js +244 -0
  137. package/src/components/xt-flow/index.js +8 -0
  138. package/src/components/xt-flow/index.vue +226 -0
  139. package/src/components/xt-flow/style/index.scss +359 -0
  140. package/src/components/xt-list/index.vue +23 -12
  141. package/src/components/xt-scroll/index.js +9 -0
  142. package/src/components/xt-scroll/index.vue +363 -0
  143. package/src/components/xt-scroll/style/index.scss +107 -0
  144. package/src/components/xt-scroll-arrow/index.vue +200 -83
  145. package/src/components/xt-scroll-arrow/style/index.scss +16 -5
  146. package/src/components/xt-text/style/index.scss +6 -6
  147. package/src/index.js +15 -13
  148. package/src/styles/css-variables.scss +73 -1
  149. package/src/utils/color.js +105 -0
  150. package/src/utils/index.js +456 -468
  151. package/src/utils/theme-vars.js +134 -0
  152. package/lib/css/1.87a493be.css +0 -1
  153. package/lib/xt-date-picker/css/1.87a493be.css +0 -1
@@ -0,0 +1,359 @@
1
+ // ============================
2
+ // xt-flow 审批流程轨迹组件样式
3
+ // 全部使用 CSS 变量,无缝适配明暗主题
4
+ // ============================
5
+
6
+ .xt-flow {
7
+ position: relative;
8
+ padding: var(--xt-spacing-md, 16px) 0;
9
+ }
10
+
11
+ // ============================
12
+ // 节点主体
13
+ // ============================
14
+ .xt-flow__node {
15
+ display: flex;
16
+ align-items: flex-start;
17
+ padding-bottom: 0;
18
+ position: relative;
19
+
20
+ &:last-child {
21
+ .xt-flow__line {
22
+ display: none;
23
+ }
24
+ }
25
+ }
26
+
27
+ // ============================
28
+ // 时间线区域(左侧)
29
+ // ============================
30
+ .xt-flow__timeline {
31
+ display: flex;
32
+ flex-direction: column;
33
+ align-items: center;
34
+ flex-shrink: 0;
35
+ width: 40px;
36
+ margin-right: var(--xt-spacing-sm, 12px);
37
+ }
38
+
39
+ // ============================
40
+ // 节点图标
41
+ // ============================
42
+ .xt-flow__icon {
43
+ width: 24px;
44
+ height: 24px;
45
+ border-radius: 50%;
46
+ display: flex;
47
+ align-items: center;
48
+ justify-content: center;
49
+ flex-shrink: 0;
50
+ z-index: 1;
51
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
52
+
53
+ // 默认圆点
54
+ &-dot {
55
+ width: 10px;
56
+ height: 10px;
57
+ border-radius: 50%;
58
+ display: block;
59
+ }
60
+
61
+ // 通过
62
+ &--approved {
63
+ background: var(--xt-color-primary-light-9, #e8f4ff);
64
+ .xt-flow__icon-dot {
65
+ background: var(--xt-color-primary, #1890ff);
66
+ }
67
+ }
68
+
69
+ // 驳回
70
+ &--rejected {
71
+ background: var(--xt-color-danger-light-9, #fef0f0);
72
+ .xt-flow__icon-dot {
73
+ background: var(--xt-color-danger, #f56c6c);
74
+ }
75
+ }
76
+
77
+ // 待办
78
+ &--pending {
79
+ background: var(--xt-color-warning-light-9, #fdf6ec);
80
+ .xt-flow__icon-dot {
81
+ background: var(--xt-color-warning, #e6a23c);
82
+ animation: xt-flow-pulse 1.5s ease-in-out infinite;
83
+ }
84
+ }
85
+
86
+ // 转办
87
+ &--transferred,
88
+ &--delegated {
89
+ background: var(--xt-color-info-light-9, #f4f4f5);
90
+ .xt-flow__icon-dot {
91
+ background: var(--xt-color-info, #909399);
92
+ }
93
+ }
94
+
95
+ // 撤回
96
+ &--recalled,
97
+ &--cancelled {
98
+ background: var(--xt-fill-color-light, #f5f7fa);
99
+ .xt-flow__icon-dot {
100
+ background: var(--xt-text-color-secondary, #909399);
101
+ }
102
+ }
103
+
104
+ // 发起
105
+ &--started {
106
+ background: var(--xt-color-primary-light-9, #e8f4ff);
107
+ .xt-flow__icon-dot {
108
+ background: var(--xt-color-primary, #1890ff);
109
+ }
110
+ }
111
+ }
112
+
113
+ @keyframes xt-flow-pulse {
114
+ 0%, 100% { opacity: 1; }
115
+ 50% { opacity: 0.4; }
116
+ }
117
+
118
+ // ============================
119
+ // 连接线
120
+ // ============================
121
+ .xt-flow__line {
122
+ width: 2px;
123
+ flex: 1;
124
+ min-height: 32px;
125
+ background: var(--xt-border-color-light, #e4e7ed);
126
+ margin: 4px 0;
127
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
128
+
129
+ // 通过 - 实线主题色
130
+ &--approved {
131
+ background: var(--xt-color-primary-light-5, #8cc8ff);
132
+ }
133
+
134
+ // 驳回 - 虚线
135
+ &--rejected,
136
+ &--dashed {
137
+ background: repeating-linear-gradient(
138
+ to bottom,
139
+ var(--xt-color-danger, #f56c6c) 0px,
140
+ var(--xt-color-danger, #f56c6c) 4px,
141
+ transparent 4px,
142
+ transparent 8px
143
+ );
144
+ }
145
+
146
+ // 待办 - 浅色虚线
147
+ &--pending {
148
+ background: repeating-linear-gradient(
149
+ to bottom,
150
+ var(--xt-border-color, #dcdfe6) 0px,
151
+ var(--xt-border-color, #dcdfe6) 3px,
152
+ transparent 3px,
153
+ transparent 6px
154
+ );
155
+ }
156
+
157
+ // 转办/委托
158
+ &--transferred,
159
+ &--delegated {
160
+ background: var(--xt-border-color, #dcdfe6);
161
+ }
162
+
163
+ // 撤回/取消
164
+ &--recalled,
165
+ &--cancelled {
166
+ background: var(--xt-border-color-lighter, #ebeef5);
167
+ }
168
+ }
169
+
170
+ // ============================
171
+ // 节点内容区域
172
+ // ============================
173
+ .xt-flow__body {
174
+ flex: 1;
175
+ min-width: 0;
176
+ padding-bottom: var(--xt-spacing-md, 16px);
177
+ border-radius: var(--xt-border-radius-small, 4px);
178
+ transition: background var(--xt-transition-duration-fast, 0.2s) ease;
179
+ }
180
+
181
+ // ============================
182
+ // 节点头部
183
+ // ============================
184
+ .xt-flow__header {
185
+ display: flex;
186
+ align-items: center;
187
+ justify-content: space-between;
188
+ margin-bottom: 4px;
189
+ }
190
+
191
+ .xt-flow__title {
192
+ font-size: calc(14px + var(--xt-font-size-increment, 0px));
193
+ font-weight: var(--xt-font-weight-primary, 500);
194
+ color: var(--xt-text-color-primary, #303133);
195
+ line-height: 1.4;
196
+ word-break: break-all;
197
+ }
198
+
199
+ .xt-flow__status {
200
+ flex-shrink: 0;
201
+ font-size: calc(12px + var(--xt-font-size-increment, 0px));
202
+ padding: 1px 8px;
203
+ border-radius: var(--xt-border-radius-mini, 2px);
204
+ margin-left: var(--xt-spacing-xs, 8px);
205
+ line-height: 20px;
206
+ white-space: nowrap;
207
+
208
+ // 通过
209
+ &--approved {
210
+ color: var(--xt-color-primary, #1890ff);
211
+ background: var(--xt-color-primary-light-9, #e8f4ff);
212
+ }
213
+
214
+ // 驳回
215
+ &--rejected {
216
+ color: var(--xt-color-danger, #f56c6c);
217
+ background: var(--xt-color-danger-light-9, #fef0f0);
218
+ }
219
+
220
+ // 待办
221
+ &--pending {
222
+ color: var(--xt-color-warning, #e6a23c);
223
+ background: var(--xt-color-warning-light-9, #fdf6ec);
224
+ }
225
+
226
+ // 转办/委托
227
+ &--transferred,
228
+ &--delegated {
229
+ color: var(--xt-color-info, #909399);
230
+ background: var(--xt-color-info-light-9, #f4f4f5);
231
+ }
232
+
233
+ // 撤回/取消
234
+ &--recalled,
235
+ &--cancelled {
236
+ color: var(--xt-text-color-secondary, #909399);
237
+ background: var(--xt-fill-color-light, #f5f7fa);
238
+ }
239
+
240
+ // 发起
241
+ &--started {
242
+ color: var(--xt-color-primary, #1890ff);
243
+ background: var(--xt-color-primary-light-9, #e8f4ff);
244
+ }
245
+ }
246
+
247
+ // ============================
248
+ // 节点元信息
249
+ // ============================
250
+ .xt-flow__meta {
251
+ display: flex;
252
+ align-items: center;
253
+ flex-wrap: wrap;
254
+ gap: var(--xt-spacing-xs, 8px);
255
+ font-size: calc(12px + var(--xt-font-size-increment, 0px));
256
+ color: var(--xt-text-color-secondary, #909399);
257
+ line-height: 1.5;
258
+ }
259
+
260
+ .xt-flow__assignee {
261
+ display: inline-flex;
262
+ align-items: center;
263
+ gap: 2px;
264
+ }
265
+
266
+ .xt-flow__assignee-icon {
267
+ font-size: 12px;
268
+ }
269
+
270
+ .xt-flow__time,
271
+ .xt-flow__duration {
272
+ color: var(--xt-text-color-placeholder, #a8abb2);
273
+ }
274
+
275
+ // ============================
276
+ // 节点描述/审批意见
277
+ // ============================
278
+ .xt-flow__desc {
279
+ margin-top: 6px;
280
+ padding: var(--xt-spacing-xs, 8px);
281
+ font-size: calc(13px + var(--xt-font-size-increment, 0px));
282
+ color: var(--xt-text-color-regular, #606266);
283
+ background: var(--xt-fill-color-light, #f5f7fa);
284
+ border-radius: var(--xt-border-radius-small, 4px);
285
+ line-height: 1.6;
286
+ word-break: break-all;
287
+ }
288
+
289
+ .xt-flow__desc-label {
290
+ font-weight: var(--xt-font-weight-primary, 500);
291
+ color: var(--xt-text-color-primary, #303133);
292
+ }
293
+
294
+ // ============================
295
+ // 节点操作按钮
296
+ // ============================
297
+ .xt-flow__actions {
298
+ margin-top: 8px;
299
+ display: flex;
300
+ gap: var(--xt-spacing-xs, 8px);
301
+ flex-wrap: wrap;
302
+ }
303
+
304
+ // ============================
305
+ // 折叠/展开触发器
306
+ // ============================
307
+ .xt-flow__collapse {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ padding: var(--xt-spacing-sm, 12px) 0;
312
+ cursor: pointer;
313
+ user-select: none;
314
+ transition: color var(--xt-transition-duration-fast, 0.2s) ease;
315
+
316
+ &:hover {
317
+ .xt-flow__collapse-text {
318
+ color: var(--xt-color-primary, #1890ff);
319
+ }
320
+ }
321
+ }
322
+
323
+ .xt-flow__collapse-text {
324
+ font-size: calc(13px + var(--xt-font-size-increment, 0px));
325
+ color: var(--xt-text-color-secondary, #909399);
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: 4px;
329
+ transition: color var(--xt-transition-duration-fast, 0.2s) ease;
330
+ }
331
+
332
+ .xt-flow__collapse-arrow {
333
+ font-size: 10px;
334
+
335
+ &--up {
336
+ transform: rotate(0deg);
337
+ }
338
+ }
339
+
340
+ // ============================
341
+ // 方形 / 圆形两套圆角
342
+ // ============================
343
+ .xt-flow--square {
344
+ .xt-flow__icon {
345
+ border-radius: 4px;
346
+ }
347
+ .xt-flow__icon-dot {
348
+ border-radius: 2px;
349
+ }
350
+ }
351
+
352
+ .xt-flow--round {
353
+ .xt-flow__icon {
354
+ border-radius: 50%;
355
+ }
356
+ .xt-flow__icon-dot {
357
+ border-radius: 50%;
358
+ }
359
+ }
@@ -30,10 +30,10 @@
30
30
  </div>
31
31
  </div>
32
32
 
33
- <!-- 主体区域 -->
34
- <div
33
+ <!-- 主体区域:使用 xt-scroll 作为滚动容器 -->
34
+ <xt-scroll
35
35
  ref="scrollContainer"
36
- class="xt-list__body"
36
+ :class="['xt-list__body', { 'xt-list__body--virtual': virtualScroll }]"
37
37
  :style="bodyStyle"
38
38
  @scroll="onScroll"
39
39
  >
@@ -184,7 +184,7 @@
184
184
  {{ loadMoreText }}
185
185
  </el-button>
186
186
  </div>
187
- </div>
187
+ </xt-scroll>
188
188
 
189
189
  <!-- 加载状态 -->
190
190
  <div v-if="loading" class="xt-list__loading">
@@ -212,12 +212,18 @@
212
212
  </template>
213
213
 
214
214
  <script>
215
+ import XtScroll from '../xt-scroll'
216
+
215
217
  const CARD_ITEM_HEIGHT = 160
216
218
  const GROUP_HEADER_HEIGHT = 44
217
219
 
218
220
  export default {
219
221
  name: 'XtList',
220
222
 
223
+ components: {
224
+ XtScroll
225
+ },
226
+
221
227
  props: {
222
228
  data: { type: Array, default: () => [] },
223
229
  // 分组配置
@@ -547,9 +553,10 @@ export default {
547
553
  return group._items.indexOf(item)
548
554
  },
549
555
 
550
- onScroll() {
556
+ onScroll(e) {
551
557
  if (!this.virtualScroll) return
552
- this.scrollTop = this.$refs.scrollContainer.scrollTop
558
+ // xt-scroll 传递的是 { scrollTop, scrollLeft } 对象
559
+ this.scrollTop = e && e.scrollTop != null ? e.scrollTop : 0
553
560
  if (this.rafId) return
554
561
  if (typeof requestAnimationFrame === 'undefined') return
555
562
  this.rafId = requestAnimationFrame(() => {
@@ -560,18 +567,22 @@ export default {
560
567
 
561
568
  updateContainerHeight() {
562
569
  if (this.$refs.scrollContainer) {
563
- this.containerHeight = this.$refs.scrollContainer.clientHeight
570
+ const scrollCmp = this.$refs.scrollContainer
571
+ const wrap = scrollCmp.getScrollContainer && scrollCmp.getScrollContainer()
572
+ this.containerHeight = wrap ? wrap.clientHeight : 0
564
573
  }
565
574
  },
566
575
 
567
576
  bindResizeObserver() {
568
577
  if (typeof ResizeObserver === 'undefined') return
569
- const container = this.$refs.scrollContainer
570
- if (!container) return
578
+ const scrollCmp = this.$refs.scrollContainer
579
+ if (!scrollCmp) return
580
+ const wrap = scrollCmp.getScrollContainer && scrollCmp.getScrollContainer()
581
+ if (!wrap) return
571
582
  this.resizeObserver = new ResizeObserver(() => {
572
583
  this.updateContainerHeight()
573
584
  })
574
- this.resizeObserver.observe(container)
585
+ this.resizeObserver.observe(wrap)
575
586
  },
576
587
 
577
588
  unbindResizeObserver() {
@@ -611,8 +622,8 @@ export default {
611
622
 
612
623
  // ========== 对外暴露方法 ==========
613
624
  scrollToTop() {
614
- if (this.$refs.scrollContainer) {
615
- this.$refs.scrollContainer.scrollTo({ top: 0, behavior: 'smooth' })
625
+ if (this.$refs.scrollContainer && this.$refs.scrollContainer.scrollToStart) {
626
+ this.$refs.scrollContainer.scrollToStart()
616
627
  }
617
628
  },
618
629
 
@@ -0,0 +1,9 @@
1
+ import './style/index.scss'
2
+ import XtScroll from './index.vue'
3
+
4
+ XtScroll.install = function (Vue) {
5
+ Vue.component(XtScroll.name, XtScroll)
6
+ }
7
+
8
+ export default XtScroll
9
+ export { XtScroll }