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,237 @@
1
+ 原生实现的虚拟滚动容器组件,支持横向和纵向虚拟滚动,适用于大数据量列表的高性能渲染。不依赖 `el-scrollbar`,采用原生 CSS 滚动容器,更轻量灵活。
2
+
3
+ ### 基本用法
4
+
5
+ ::: demo 基本用法
6
+ ```vue
7
+ <template>
8
+ <XtScroll :style="{ height: '400px' }" :v-scroll="true" :data="items" :item-size="50" key-field="id">
9
+ <template #item="{ item, index }">
10
+ <div style="padding: 12px; border-bottom: 1px solid #eee;">
11
+ <strong>{{ index + 1 }}.</strong> {{ item.label }}
12
+ </div>
13
+ </template>
14
+ </XtScroll>
15
+ </template>
16
+
17
+ <script>
18
+ export default {
19
+ data() {
20
+ return {
21
+ items: Array.from({ length: 10000 }, (_, i) => ({ id: i, label: `数据项 ${i + 1}` }))
22
+ }
23
+ }
24
+ }
25
+ </script>
26
+ ```
27
+ :::
28
+
29
+ ### 纵向虚拟滚动
30
+
31
+ ::: demo 设置 `scroll-direction="vertical"`(默认值)启用纵向虚拟滚动。
32
+ ```vue
33
+ <template>
34
+ <XtScroll
35
+ :style="{ height: '300px' }"
36
+ :v-scroll="true"
37
+ :data="verticalData"
38
+ :item-size="40"
39
+ key-field="id"
40
+ scroll-direction="vertical"
41
+ >
42
+ <template #item="{ item }">
43
+ <div style="padding: 0 12px; line-height: 40px; height: 40px; border-bottom: 1px solid #ebeef5;">
44
+ {{ item.name }} - {{ item.email }}
45
+ </div>
46
+ </template>
47
+ </XtScroll>
48
+ </template>
49
+ <script>
50
+ export default {
51
+ data() {
52
+ return {
53
+ verticalData: Array.from({ length: 5000 }, (_, i) => ({
54
+ id: i,
55
+ name: `用户 ${i + 1}`,
56
+ email: `user${i + 1}@example.com`
57
+ }))
58
+ }
59
+ }
60
+ }
61
+ </script>
62
+ ```
63
+ :::
64
+
65
+ ### 横向虚拟滚动
66
+
67
+ ::: demo 设置 `scroll-direction="horizontal"` 启用横向虚拟滚动,适用于超宽表格、时间轴等场景。
68
+ ```vue
69
+ <template>
70
+ <XtScroll
71
+ :style="{ width: '600px', height: '80px' }"
72
+ :v-scroll="true"
73
+ :data="horizontalData"
74
+ :item-size="120"
75
+ scroll-direction="horizontal"
76
+ >
77
+ <template #item="{ item, index }">
78
+ <div style="width: 120px; height: 80px; display: inline-flex; align-items: center; justify-content: center; background: #f0f2f5; margin-right: 4px; border-radius: 4px;">
79
+ <span>{{ item }}</span>
80
+ </div>
81
+ </template>
82
+ </XtScroll>
83
+ </template>
84
+ <script>
85
+ export default {
86
+ data() {
87
+ return {
88
+ horizontalData: Array.from({ length: 1000 }, (_, i) => `标签 ${i + 1}`)
89
+ }
90
+ }
91
+ }
92
+ </script>
93
+ ```
94
+ :::
95
+
96
+ ### 非虚拟滚动模式
97
+
98
+ ::: demo `vScroll` 为 false 时,使用默认插槽正常渲染,原生滚动条提供流畅的滚动体验。
99
+ ```vue
100
+ <template>
101
+ <XtScroll :style="{ height: '200px' }">
102
+ <div v-for="i in 20" :key="i" style="padding: 8px; border-bottom: 1px solid #eee;">
103
+ 内容行 {{ i }} - 原生滚动条
104
+ </div>
105
+ </XtScroll>
106
+ </template>
107
+ ```
108
+ :::
109
+
110
+ ### 配合 XtList 使用
111
+
112
+ ::: demo XtList 内置了 XtScroll,开启 `virtual-scroll` 即可启用虚拟滚动。
113
+ ```vue
114
+ <template>
115
+ <XtList
116
+ :data="listData"
117
+ :columns="2"
118
+ :virtual-scroll="true"
119
+ :item-height="160"
120
+ :height="400"
121
+ title="订单列表(虚拟滚动)"
122
+ />
123
+ </template>
124
+ <script>
125
+ export default {
126
+ data() {
127
+ return {
128
+ listData: Array.from({ length: 5000 }, (_, i) => ({
129
+ title: `订单 #${i + 1}`,
130
+ subtitle: `2024-${String(Math.ceil((i + 1) / 30)).padStart(2, '0')}-${String((i % 28) + 1).padStart(2, '0')}`,
131
+ content: `金额: ¥${(Math.random() * 1000).toFixed(2)}`,
132
+ footer: i % 3 === 0 ? '已完成' : i % 3 === 1 ? '待发货' : '已取消'
133
+ }))
134
+ }
135
+ }
136
+ }
137
+ </script>
138
+ ```
139
+ :::
140
+
141
+ ### 配合 XtScrollArrow 使用
142
+
143
+ ::: demo XtScrollArrow 内置了 XtScroll,开启虚拟滚动后支持海量数据带箭头导航。
144
+ ```vue
145
+ <template>
146
+ <XtScrollArrow
147
+ direction="horizontal"
148
+ :v-scroll="true"
149
+ :v-scroll-data="arrowData"
150
+ :item-size="120"
151
+ >
152
+ <template #vitem="{ item }">
153
+ <div style="width: 100px; height: 40px; display: flex; align-items: center; justify-content: center; background: #ecf5ff; border-radius: 4px; margin: 0 4px;">
154
+ {{ item.label }}
155
+ </div>
156
+ </template>
157
+ </XtScrollArrow>
158
+ </template>
159
+ <script>
160
+ export default {
161
+ data() {
162
+ return {
163
+ arrowData: Array.from({ length: 200 }, (_, i) => ({ id: i, label: `标签 ${i + 1}` }))
164
+ }
165
+ }
166
+ }
167
+ </script>
168
+ ```
169
+ :::
170
+
171
+ ### Attributes
172
+
173
+ | 参数 | 说明 | 类型 | 默认值 |
174
+ |------|------|------|--------|
175
+ | v-scroll | 是否启用虚拟滚动 | boolean | false |
176
+ | data | 虚拟滚动数据源 | array | [] |
177
+ | item-size | 每个 item 的固定尺寸(px),纵向为高度,横向为宽度 | number | 50 |
178
+ | key-field | item 的唯一键字段名 | string | 'id' |
179
+ | buffer-size | 预渲染缓冲区大小(item 数量) | number | 5 |
180
+ | scroll-direction | 虚拟滚动方向 | 'vertical' \| 'horizontal' | 'vertical' |
181
+ | item-class-name | item 的自定义 CSS 类名 | string | '' |
182
+ | height | 容器高度 | number \| string | '' |
183
+ | max-height | 容器最大高度 | number \| string | '' |
184
+ | width | 容器宽度 | number \| string | '' |
185
+ | max-width | 容器最大宽度 | number \| string | '' |
186
+ | loading | 加载状态 | boolean | false |
187
+ | empty-text | 空数据提示文字 | string | '暂无数据' |
188
+ | load-more | 是否启用加载更多 | boolean | false |
189
+ | load-more-text | 加载更多按钮文字 | string | '加载更多' |
190
+ | load-more-loading | 加载更多按钮加载状态 | boolean | false |
191
+
192
+ ### Slots
193
+
194
+ | 名称 | 说明 | 作用域 |
195
+ |------|------|--------|
196
+ | default | 非虚拟滚动模式下的默认内容 | — |
197
+ | item | 虚拟滚动模式下每个 item 的渲染内容 | `{ item, index }` |
198
+ | empty | 空数据时的自定义内容 | — |
199
+ | loading | 加载中的自定义内容 | — |
200
+
201
+ ### Events
202
+
203
+ | 事件名 | 说明 | 回调参数 |
204
+ |--------|------|----------|
205
+ | scroll | 滚动事件 | `{ scrollTop, scrollLeft }` |
206
+ | load-more | 触发加载更多 | — |
207
+
208
+ ### Methods
209
+
210
+ | 方法名 | 说明 | 参数 |
211
+ |--------|------|------|
212
+ | scrollTo(pos) | 滚动到指定位置 | `pos: number` |
213
+ | scrollToItem(index) | 滚动到指定索引的 item | `index: number` |
214
+ | scrollToStart() | 滚动到顶部/左侧 | — |
215
+ | scrollToEnd() | 滚动到底部/右侧 | — |
216
+ | getScrollPos() | 获取当前滚动位置 | — |
217
+ | getScrollContainer() | 获取原生滚动容器 DOM 元素 | — |
218
+
219
+ ### XtScrollArrow 新增属性
220
+
221
+ | 参数 | 说明 | 类型 | 默认值 |
222
+ |------|------|------|--------|
223
+ | v-scroll | 是否启用虚拟滚动 | boolean | false |
224
+ | v-scroll-data | 虚拟滚动数据源 | array | [] |
225
+ | item-size | 每个 item 的固定尺寸(px) | number | 50 |
226
+ | key-field | item 的唯一键字段名 | string | 'id' |
227
+ | buffer-size | 预渲染缓冲区大小 | number | 5 |
228
+ | v-scroll-loading | 虚拟滚动加载状态 | boolean | false |
229
+ | load-more | 是否启用加载更多 | boolean | false |
230
+ | load-more-text | 加载更多按钮文字 | string | '加载更多' |
231
+ | load-more-loading | 加载更多按钮加载状态 | boolean | false |
232
+
233
+ ### XtScrollArrow 新增 Slot
234
+
235
+ | 名称 | 说明 | 作用域 |
236
+ |------|------|--------|
237
+ | vitem | 虚拟滚动模式下每个 item 的渲染内容 | `{ item, index }` |
@@ -0,0 +1 @@
1
+ # chart
@@ -80,12 +80,25 @@ export default {
80
80
 
81
81
  ### setPrimaryColor(color)
82
82
 
83
- 设置全局主色调。
83
+ 设置全局主色调,同时更新 `--el-color-primary*`(Element UI)和 `--xt-color-primary*`(xt 组件)两套 CSS 变量。
84
84
 
85
85
  | 参数 | 类型 | 必填 | 说明 |
86
86
  |------|------|------|------|
87
87
  | `color` | String | 是 | 十六进制颜色值 |
88
88
 
89
+ **自动衍生变量**:设置主色后会自动生成以下 Element UI 变量:
90
+
91
+ | 变量 | 说明 |
92
+ |------|------|
93
+ | `--el-color-primary` | 主色 |
94
+ | `--el-color-primary-light-3` | 主色 +30% 亮度 |
95
+ | `--el-color-primary-light-5` | 主色 +50% 亮度 |
96
+ | `--el-color-primary-light-7` | 主色 +70% 亮度 |
97
+ | `--el-color-primary-light-8` | 主色 +80% 亮度 |
98
+ | `--el-color-primary-light-9` | 主色 +90% 亮度 |
99
+ | `--el-color-primary-dark-2` | 主色 -20% 亮度 |
100
+ | `--el-color-primary-rgb` | 主色 RGB 值 |
101
+
89
102
  ```vue
90
103
  <template>
91
104
  <div>
@@ -280,6 +293,7 @@ export default {
280
293
  ## 注意事项
281
294
 
282
295
  1. `setPrimaryColor` 只支持十六进制颜色格式(如 `#1890ff`、`#fff`)
283
- 2. 设置主色调时,会自动生成对应的浅色系列(light-3 到 light-9)
284
- 3. `onConfigChange` 返回的取消订阅函数应在组件销毁时调用,避免内存泄漏
285
- 4. 所有配置修改都会触发 `onConfigChange` 监听器
296
+ 2. 设置主色调时,会自动生成对应的浅色系列(light-3 到 light-9)和暗色系列(dark-2
297
+ 3. `setPrimaryColor` 会**同时设置** `--el-*`(Element UI)和 `--xt-*`(xt 组件)两套变量
298
+ 4. `onConfigChange` 返回的取消订阅函数应在组件销毁时调用,避免内存泄漏
299
+ 5. 所有配置修改都会触发 `onConfigChange` 监听器