xt-element-ui 1.4.0 → 2.0.0

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 (90) hide show
  1. package/CHANGELOG.md +37 -20
  2. package/README.md +39 -35
  3. package/docs/README.md +25 -15
  4. package/docs/components/base/xt-badge.md +139 -0
  5. package/docs/components/base/xt-bar.md +182 -0
  6. package/docs/components/base/xt-chart.md +183 -0
  7. package/docs/components/base/xt-date-picker.md +111 -0
  8. package/docs/components/base/xt-icon.md +154 -0
  9. package/docs/components/base/xt-line.md +145 -0
  10. package/docs/components/base/xt-multi.md +278 -0
  11. package/docs/components/base/xt-page.md +84 -0
  12. package/docs/components/base/xt-pie.md +175 -0
  13. package/docs/components/base/xt-progress.md +134 -0
  14. package/docs/components/base/xt-select-tree.md +141 -0
  15. package/docs/components/base/xt-table.md +344 -0
  16. package/docs/components/base/xt-tabs.md +197 -0
  17. package/docs/components/base/xt-upload.md +85 -0
  18. package/lib/index.common.js +479 -821
  19. package/lib/index.css +1 -1
  20. package/lib/index.umd.js +484 -827
  21. package/lib/index.umd.min.js +5 -5
  22. package/package.json +1 -1
  23. package/src/components/index.scss +2 -8
  24. package/src/components/xt-button/index.js +8 -8
  25. package/src/components/xt-button/index.vue +43 -73
  26. package/src/components/xt-button/style/index.scss +51 -787
  27. package/src/components/xt-card/index.js +7 -8
  28. package/src/components/xt-card/index.vue +61 -21
  29. package/src/components/xt-card/style/index.scss +56 -32
  30. package/src/components/xt-card-item/index.vue +3 -3
  31. package/src/components/xt-chart/index.js +8 -0
  32. package/src/components/{ex-chart → xt-chart}/index.vue +13 -13
  33. package/src/components/{ex-chart → xt-chart}/pieList.vue +1 -1
  34. package/src/components/{ex-chart → xt-chart}/utils.js +1 -1
  35. package/src/components/xt-config-provider/index.vue +1 -1
  36. package/src/components/xt-date-picker/index.js +8 -0
  37. package/src/components/{ex-date-picker → xt-date-picker}/index.vue +1 -1
  38. package/src/components/xt-icon/index.js +8 -0
  39. package/src/components/{ex-icon → xt-icon}/index.vue +4 -4
  40. package/src/components/xt-layout/ExFieldset.vue +1 -1
  41. package/src/components/xt-page/index.js +8 -0
  42. package/src/components/{ex-page → xt-page}/index.vue +1 -1
  43. package/src/components/xt-select-tree/index.js +8 -0
  44. package/src/components/{ex-select-tree → xt-select-tree}/index.vue +1 -1
  45. package/src/components/{ex-table/ExTableCell.vue → xt-table/XtTableCell.vue} +1 -1
  46. package/src/components/xt-table/index.js +8 -0
  47. package/src/components/{ex-table → xt-table}/index.vue +6 -6
  48. package/src/components/xt-upload/index.js +8 -0
  49. package/src/index.js +15 -29
  50. package/src/utils/index.js +1 -1
  51. package/docs/components/extend/ex-bar.md +0 -68
  52. package/docs/components/extend/ex-button.md +0 -62
  53. package/docs/components/extend/ex-card.md +0 -86
  54. package/docs/components/extend/ex-chart.md +0 -463
  55. package/docs/components/extend/ex-date-picker.md +0 -0
  56. package/docs/components/extend/ex-icon.md +0 -189
  57. package/docs/components/extend/ex-line.md +0 -71
  58. package/docs/components/extend/ex-multi.md +0 -156
  59. package/docs/components/extend/ex-page.md +0 -0
  60. package/docs/components/extend/ex-pie.md +0 -70
  61. package/docs/components/extend/ex-select-tree.md +0 -210
  62. package/docs/components/extend/ex-table.md +0 -591
  63. package/docs/components/extend/ex-upload.md +0 -134
  64. package/src/components/ex-button/index.js +0 -8
  65. package/src/components/ex-button/index.vue +0 -67
  66. package/src/components/ex-button/style/index.scss +0 -67
  67. package/src/components/ex-card/index.js +0 -7
  68. package/src/components/ex-card/index.vue +0 -68
  69. package/src/components/ex-card/style/index.scss +0 -73
  70. package/src/components/ex-chart/index.js +0 -8
  71. package/src/components/ex-date-picker/index.js +0 -8
  72. package/src/components/ex-icon/index.js +0 -8
  73. package/src/components/ex-page/index.js +0 -8
  74. package/src/components/ex-select-tree/index.js +0 -8
  75. package/src/components/ex-table/index.js +0 -8
  76. package/src/components/ex-upload/index.js +0 -8
  77. package/src/config/element-registry.js +0 -136
  78. /package/src/components/{ex-chart/ExBar.vue → xt-chart/XtBar.vue} +0 -0
  79. /package/src/components/{ex-chart/ExLine.vue → xt-chart/XtLine.vue} +0 -0
  80. /package/src/components/{ex-chart/ExMulti.vue → xt-chart/XtMulti.vue} +0 -0
  81. /package/src/components/{ex-chart/ExPie.vue → xt-chart/XtPie.vue} +0 -0
  82. /package/src/components/{ex-chart → xt-chart}/theme/dark.js +0 -0
  83. /package/src/components/{ex-chart → xt-chart}/theme/white.js +0 -0
  84. /package/src/components/{ex-date-picker → xt-date-picker}/SearchDate.vue +0 -0
  85. /package/src/components/{ex-date-picker → xt-date-picker}/quarter.vue +0 -0
  86. /package/src/components/{ex-icon → xt-icon}/style/index.scss +0 -0
  87. /package/src/components/{ex-table → xt-table}/VirtualElTable.vue +0 -0
  88. /package/src/components/{ex-table → xt-table}/virtualScrollData.js +0 -0
  89. /package/src/components/{ex-upload → xt-upload}/index.vue +0 -0
  90. /package/src/components/{ex-upload → xt-upload}/preview.vue +0 -0
@@ -0,0 +1,183 @@
1
+ ## XtChart 图表容器组件
2
+
3
+ 基于 ECharts 封装的图表容器组件,通过 `type` 属性切换不同图表类型(柱状图、折线图、饼图、组合图)。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtChart type="bar" :chart-data="chartData" />
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ data() {
16
+ return {
17
+ chartData: [
18
+ { value: 65, label: "张三" },
19
+ { value: 78, label: "李四" },
20
+ { value: 95, label: "王五" }
21
+ ]
22
+ }
23
+ }
24
+ }
25
+ </script>
26
+ ```
27
+ :::
28
+
29
+ ## 属性说明
30
+
31
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
32
+ |------|------|--------|--------|------|
33
+ | `type` | String | `bar` | `bar`、`line`、`pie`、`multi` | 图表类型 |
34
+ | `theme` | String | - | `dark`、`default` | 主题,自动检测父元素 `data-theme` |
35
+ | `size` | String | `medium` | `small`、`medium`、`large` | 图表尺寸 |
36
+
37
+ ## 示例
38
+
39
+ ### 柱状图
40
+
41
+ ::: demo 柱状图
42
+ ```vue
43
+ <template>
44
+ <XtChart type="bar" :chart-data="chartData" />
45
+ </template>
46
+
47
+ <script>
48
+ export default {
49
+ data() {
50
+ return {
51
+ chartData: [
52
+ { value: 65, label: "张三" },
53
+ { value: 78, label: "李四" },
54
+ { value: 95, label: "王五" },
55
+ { value: 82, label: "赵六" },
56
+ { value: 70, label: "钱七" }
57
+ ]
58
+ }
59
+ }
60
+ }
61
+ </script>
62
+ ```
63
+ :::
64
+
65
+ ### 折线图
66
+
67
+ ::: demo 折线图
68
+ ```vue
69
+ <template>
70
+ <XtChart type="line" :chart-data="chartData" />
71
+ </template>
72
+
73
+ <script>
74
+ export default {
75
+ data() {
76
+ return {
77
+ chartData: [
78
+ { value: 65, label: "1月" },
79
+ { value: 78, label: "2月" },
80
+ { value: 95, label: "3月" },
81
+ { value: 82, label: "4月" },
82
+ { value: 70, label: "5月" }
83
+ ]
84
+ }
85
+ }
86
+ }
87
+ </script>
88
+ ```
89
+ :::
90
+
91
+ ### 饼图
92
+
93
+ ::: demo 饼图
94
+ ```vue
95
+ <template>
96
+ <XtChart type="pie" :chart-data="chartData" />
97
+ </template>
98
+
99
+ <script>
100
+ export default {
101
+ data() {
102
+ return {
103
+ chartData: [
104
+ { value: 30, label: "北京" },
105
+ { value: 25, label: "上海" },
106
+ { value: 20, label: "广州" },
107
+ { value: 25, label: "深圳" }
108
+ ]
109
+ }
110
+ }
111
+ }
112
+ </script>
113
+ ```
114
+ :::
115
+
116
+ ### 组合图
117
+
118
+ ::: demo 组合图
119
+ ```vue
120
+ <template>
121
+ <XtChart type="multi" :chart-data="chartData" />
122
+ </template>
123
+
124
+ <script>
125
+ export default {
126
+ data() {
127
+ return {
128
+ chartData: [
129
+ {
130
+ label: "销售额",
131
+ unit: "万元",
132
+ data: [
133
+ { label: "1月", value: 100 },
134
+ { label: "2月", value: 120 },
135
+ { label: "3月", value: 90 }
136
+ ]
137
+ },
138
+ {
139
+ label: "订单数",
140
+ unit: "单",
141
+ data: [
142
+ { label: "1月", value: 50 },
143
+ { label: "2月", value: 60 },
144
+ { label: "3月", value: 45 }
145
+ ]
146
+ }
147
+ ]
148
+ }
149
+ }
150
+ }
151
+ </script>
152
+ ```
153
+ :::
154
+
155
+ ### 暗色主题
156
+
157
+ ::: demo 暗色主题
158
+ ```vue
159
+ <template>
160
+ <XtChart type="bar" :chart-data="chartData" theme="dark" />
161
+ </template>
162
+
163
+ <script>
164
+ export default {
165
+ data() {
166
+ return {
167
+ chartData: [
168
+ { value: 65, label: "张三" },
169
+ { value: 78, label: "李四" },
170
+ { value: 95, label: "王五" }
171
+ ]
172
+ }
173
+ }
174
+ }
175
+ </script>
176
+ ```
177
+ :::
178
+
179
+ ## 注意事项
180
+
181
+ - `XtChart` 是一个容器组件,会根据 `type` 属性渲染对应的子组件(XtBar/XtLine/XtPie/XtMulti)
182
+ - 所有子组件的 props 都可以通过 `XtChart` 透传
183
+ - 主题会自动检测父元素的 `data-theme` 属性,无需手动传递
@@ -0,0 +1,111 @@
1
+ ## XtDatePicker 日期选择器组件
2
+
3
+ 日期选择器组件用于选择日期范围,支持多种日期类型(年月日、年月、年、季度等)。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtDatePicker v-model="dateRange" />
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ data() {
16
+ return {
17
+ dateRange: []
18
+ }
19
+ }
20
+ }
21
+ </script>
22
+ ```
23
+ :::
24
+
25
+ ## 属性说明
26
+
27
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
28
+ |------|------|--------|--------|------|
29
+ | `value` / `v-model` | Array | - | - | 日期范围,格式为 `[startDate, endDate]` |
30
+ | `dateType` | String | `date` | `date`、`datetime`、`month`、`year`、`quarter`、`week` | 日期类型 |
31
+ | `separator` | String | `至` | - | 分隔符文本 |
32
+ | `disabled` | Boolean | `false` | - | 是否禁用 |
33
+ | `width` | Number | `280` | - | 组件宽度(px) |
34
+
35
+ ## 示例
36
+
37
+ ### 不同日期类型
38
+
39
+ ::: demo 不同日期类型
40
+ ```vue
41
+ <template>
42
+ <div style="display: flex; flex-direction: column; gap: 12px;">
43
+ <XtDatePicker v-model="dateRange" dateType="date" />
44
+ <XtDatePicker v-model="monthRange" dateType="month" />
45
+ <XtDatePicker v-model="yearRange" dateType="year" />
46
+ <XtDatePicker v-model="quarterRange" dateType="quarter" />
47
+ </div>
48
+ </template>
49
+
50
+ <script>
51
+ export default {
52
+ data() {
53
+ return {
54
+ dateRange: [],
55
+ monthRange: [],
56
+ yearRange: [],
57
+ quarterRange: []
58
+ }
59
+ }
60
+ }
61
+ </script>
62
+ ```
63
+ :::
64
+
65
+ ### 自定义分隔符
66
+
67
+ ::: demo 自定义分隔符
68
+ ```vue
69
+ <template>
70
+ <XtDatePicker v-model="dateRange" separator="~" />
71
+ </template>
72
+
73
+ <script>
74
+ export default {
75
+ data() {
76
+ return {
77
+ dateRange: []
78
+ }
79
+ }
80
+ }
81
+ </script>
82
+ ```
83
+ :::
84
+
85
+ ### 禁用状态
86
+
87
+ ::: demo 禁用状态
88
+ ```vue
89
+ <template>
90
+ <XtDatePicker v-model="dateRange" disabled />
91
+ </template>
92
+
93
+ <script>
94
+ export default {
95
+ data() {
96
+ return {
97
+ dateRange: []
98
+ }
99
+ }
100
+ }
101
+ </script>
102
+ ```
103
+ :::
104
+
105
+ ## 事件
106
+
107
+ | 事件名 | 说明 | 参数 |
108
+ |--------|------|------|
109
+ | `change` | 日期值改变时触发 | `[startDate, endDate]` |
110
+ | `focus` | 输入框获得焦点时触发 | - |
111
+ | `blur` | 输入框失去焦点时触发 | - |
@@ -0,0 +1,154 @@
1
+ ## XtIcon 图标组件
2
+
3
+ 图标组件支持多种图标类型:ElementUI 字体图标、SVG Sprite、内联 SVG 和自定义字体图标。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtIcon name="el-icon-search" />
11
+ </template>
12
+ ```
13
+ :::
14
+
15
+ ## 属性说明
16
+
17
+ | 属性 | 类型 | 默认值 | 说明 |
18
+ |------|------|--------|------|
19
+ | `name` | String | - | 图标名称或 SVG 内容 |
20
+ | `size` | String / Number | - | 图标大小 |
21
+ | `color` | String | - | 图标颜色 |
22
+ | `spin` | Boolean | `false` | 是否旋转 |
23
+
24
+ ## 图标类型
25
+
26
+ ### ElementUI 字体图标
27
+
28
+ 以 `el-icon-` 开头的图标名称会自动识别为 ElementUI 图标:
29
+
30
+ ::: demo ElementUI 图标
31
+ ```vue
32
+ <template>
33
+ <div style="display: flex; gap: 16px;">
34
+ <XtIcon name="el-icon-search" />
35
+ <XtIcon name="el-icon-edit" />
36
+ <XtIcon name="el-icon-delete" />
37
+ <XtIcon name="el-icon-user" />
38
+ </div>
39
+ </template>
40
+ ```
41
+ :::
42
+
43
+ ### SVG Sprite
44
+
45
+ 使用 `#` 或 `svg:` 前缀引用 SVG Sprite:
46
+
47
+ ::: demo SVG Sprite
48
+ ```vue
49
+ <template>
50
+ <XtIcon name="#icon-home" />
51
+ </template>
52
+ ```
53
+ :::
54
+
55
+ ### 内联 SVG
56
+
57
+ 直接传入完整的 SVG 字符串:
58
+
59
+ ::: demo 内联 SVG
60
+ ```vue
61
+ <template>
62
+ <XtIcon :name="svgContent" />
63
+ </template>
64
+
65
+ <script>
66
+ export default {
67
+ data() {
68
+ return {
69
+ svgContent: '<svg viewBox="0 0 24 24"><path fill="currentColor" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>'
70
+ }
71
+ }
72
+ }
73
+ </script>
74
+ ```
75
+ :::
76
+
77
+ ### 自定义字体图标
78
+
79
+ 非上述类型的图标名称会作为自定义字体图标类名处理:
80
+
81
+ ::: demo 自定义字体图标
82
+ ```vue
83
+ <template>
84
+ <XtIcon name="custom-icon-star" />
85
+ </template>
86
+ ```
87
+ :::
88
+
89
+ ## 示例
90
+
91
+ ### 不同尺寸
92
+
93
+ ::: demo 不同尺寸
94
+ ```vue
95
+ <template>
96
+ <div style="display: flex; align-items: center; gap: 16px;">
97
+ <XtIcon name="el-icon-search" :size="16" />
98
+ <XtIcon name="el-icon-search" :size="24" />
99
+ <XtIcon name="el-icon-search" :size="32" />
100
+ <XtIcon name="el-icon-search" size="40px" />
101
+ </div>
102
+ </template>
103
+ ```
104
+ :::
105
+
106
+ ### 不同颜色
107
+
108
+ ::: demo 不同颜色
109
+ ```vue
110
+ <template>
111
+ <div style="display: flex; gap: 16px;">
112
+ <XtIcon name="el-icon-search" color="#1890ff" />
113
+ <XtIcon name="el-icon-search" color="#52c41a" />
114
+ <XtIcon name="el-icon-search" color="#faad14" />
115
+ <XtIcon name="el-icon-search" color="#f5222d" />
116
+ </div>
117
+ </template>
118
+ ```
119
+ :::
120
+
121
+ ### 旋转动画
122
+
123
+ ::: demo 旋转动画
124
+ ```vue
125
+ <template>
126
+ <XtIcon name="el-icon-loading" spin />
127
+ </template>
128
+ ```
129
+ :::
130
+
131
+ ### 配合按钮使用
132
+
133
+ ::: demo 配合按钮使用
134
+ ```vue
135
+ <template>
136
+ <XtButton type="primary">
137
+ <XtIcon name="el-icon-search" />
138
+ 搜索
139
+ </XtButton>
140
+ </template>
141
+ ```
142
+ :::
143
+
144
+ ## 全局注册前缀
145
+
146
+ 对于自定义字体图标,可以注册前缀以避免自动添加 `ex-icon` 类名:
147
+
148
+ ```javascript
149
+ import XtIcon from 'xt-element-ui/src/components/xt-icon'
150
+
151
+ XtIcon.registerPrefix('custom-')
152
+ ```
153
+
154
+ 注册后,所有以 `custom-` 开头的图标名称不会自动添加 `ex-icon` 类名。
@@ -0,0 +1,145 @@
1
+ ## XtLine 折线图组件
2
+
3
+ 基于 ECharts 封装的折线图组件,支持面积图、平滑曲线等功能。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 基本用法
8
+ ```vue
9
+ <template>
10
+ <XtLine :chart-data="chartData" />
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ data() {
16
+ return {
17
+ chartData: [
18
+ { value: 53, label: "张三" },
19
+ { value: 10, label: "李四" },
20
+ { value: 60, label: "宋五" }
21
+ ]
22
+ }
23
+ }
24
+ }
25
+ </script>
26
+ ```
27
+ :::
28
+
29
+ ## 属性说明
30
+
31
+ | 属性 | 类型 | 默认值 | 说明 |
32
+ |------|------|--------|------|
33
+ | `chartData` | Array | - | 图表数据,格式为 `[{ label, value }]` |
34
+ | `fieldKeys` | Object | `{ label: "label", value: "value", data: "data" }` | 字段映射配置 |
35
+ | `theme` | String | - | 主题,`dark` 或 `default` |
36
+ | `size` | String | `medium` | 尺寸,`small` / `medium` / `large` |
37
+ | `isArea` | Boolean | `false` | 是否显示面积图 |
38
+ | `unit` | String | `""` | 数据单位 |
39
+ | `intervalvalue` | Number | `0` | X 轴标签间隔,0 表示全部显示 |
40
+ | `simpleMode` | Boolean | `false` | 是否启用极简模式(隐藏图例、坐标轴等) |
41
+
42
+ ## 示例
43
+
44
+ ### 面积图
45
+
46
+ ::: demo 面积图
47
+ ```vue
48
+ <template>
49
+ <XtLine :chart-data="chartData" :is-area="true" />
50
+ </template>
51
+
52
+ <script>
53
+ export default {
54
+ data() {
55
+ return {
56
+ chartData: [
57
+ { value: 53, label: "1月" },
58
+ { value: 60, label: "2月" },
59
+ { value: 78, label: "3月" },
60
+ { value: 82, label: "4月" },
61
+ { value: 95, label: "5月" }
62
+ ]
63
+ }
64
+ }
65
+ }
66
+ </script>
67
+ ```
68
+ :::
69
+
70
+ ### 极简模式
71
+
72
+ ::: demo 极简模式
73
+ ```vue
74
+ <template>
75
+ <XtLine :chart-data="chartData" simple-mode />
76
+ </template>
77
+
78
+ <script>
79
+ export default {
80
+ data() {
81
+ return {
82
+ chartData: [
83
+ { value: 53, label: "A" },
84
+ { value: 60, label: "B" },
85
+ { value: 78, label: "C" }
86
+ ]
87
+ }
88
+ }
89
+ }
90
+ </script>
91
+ ```
92
+ :::
93
+
94
+ ### 自定义字段映射
95
+
96
+ ::: demo 自定义字段映射
97
+ ```vue
98
+ <template>
99
+ <XtLine :chart-data="chartData" :field-keys="{ label: 'month', value: 'amount' }" />
100
+ </template>
101
+
102
+ <script>
103
+ export default {
104
+ data() {
105
+ return {
106
+ chartData: [
107
+ { month: "1月", amount: 53 },
108
+ { month: "2月", amount: 60 },
109
+ { month: "3月", amount: 78 }
110
+ ]
111
+ }
112
+ }
113
+ }
114
+ </script>
115
+ ```
116
+ :::
117
+
118
+ ### 暗色主题
119
+
120
+ ::: demo 暗色主题
121
+ ```vue
122
+ <template>
123
+ <XtLine :chart-data="chartData" theme="dark" />
124
+ </template>
125
+
126
+ <script>
127
+ export default {
128
+ data() {
129
+ return {
130
+ chartData: [
131
+ { value: 53, label: "张三" },
132
+ { value: 60, label: "李四" },
133
+ { value: 78, label: "王五" }
134
+ ]
135
+ }
136
+ }
137
+ }
138
+ </script>
139
+ ```
140
+ :::
141
+
142
+ ## 注意事项
143
+
144
+ - 折线图默认使用平滑曲线
145
+ - 数据值大于等于 10000 时会自动转换为"万"单位显示