xt-element-ui 2.0.2 → 2.0.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.
package/docs/README.md CHANGED
@@ -7,7 +7,7 @@ actionText: 🚀 快速上手
7
7
  actionLink: /components/base/xt-button
8
8
  features:
9
9
  - title: 🎯 丰富的组件
10
- details: 提供 15+ 组件,覆盖布局、表单、数据展示、图表等常见场景
10
+ details: 提供 20+ 组件,覆盖布局、表单、数据展示、图表等常见场景
11
11
  - title: 📦 开箱即用
12
12
  details: 基于 ElementUI 构建,与现有 ElementUI 项目无缝集成
13
13
  - title: 🪶 按需引入
@@ -70,6 +70,7 @@ Vue.use(XtElementUI)
70
70
  | **XtProgress** | 进度条组件 |
71
71
  | **XtTabs** | 标签页组件 |
72
72
  | **XtBadge** | 徽标组件 |
73
+ | **XtScrollArrow** | 滚动箭头组件 |
73
74
 
74
75
  ### 📊 图表组件
75
76
 
@@ -42,7 +42,7 @@
42
42
  <XtBadge :value="5" type="warning">
43
43
  <XtButton size="small">通知</XtButton>
44
44
  </XtBadge>
45
- <XtBadge :value="99+" type="danger">
45
+ <XtBadge value="99+" type="danger">
46
46
  <XtButton size="small">消息</XtButton>
47
47
  </XtBadge>
48
48
  </div>
@@ -126,7 +126,7 @@
126
126
  <template>
127
127
  <div style="display: flex; gap: 16px;">
128
128
  <XtBadge :value="12" />
129
- <XtBadge :value="99+" type="danger" />
129
+ <XtBadge value="99+" type="danger" />
130
130
  <XtBadge is-dot type="success" />
131
131
  </div>
132
132
  </template>
@@ -7,7 +7,7 @@
7
7
  ::: demo 基本用法
8
8
  ```vue
9
9
  <template>
10
- <XtBar :chart-data="chartData" />
10
+ <XtBar :chart-data="chartData" width="600px" height="400px" />
11
11
  </template>
12
12
 
13
13
  <script>
@@ -4,6 +4,7 @@
4
4
 
5
5
  使用 `XtMapProvider` 统一配置项目中所有地图,无需在每个 `<XtMap>` 上重复写密钥:
6
6
 
7
+ ::: demo 全局配置(推荐)
7
8
  ```vue
8
9
  <template>
9
10
  <XtMapProvider
@@ -21,3 +22,4 @@
21
22
  </XtMapProvider>
22
23
  </template>
23
24
  ```
25
+ :::
@@ -53,13 +53,14 @@ export default {
53
53
 
54
54
  使用 `XtMapProvider` 统一配置项目中所有地图,无需在每个 `<XtMap>` 上重复写密钥:
55
55
 
56
+ ::: demo 基本用法
56
57
  ```vue
57
58
  <template>
58
59
  <XtMapProvider
59
60
  provider="amap"
60
- api-key="你的高德密钥"
61
- security-js-code="你的安全密钥"
62
- theme="light"
61
+ api-key="AMAP_KEY"
62
+ security-js-code="AMAP_SECURITY_CODE"
63
+ theme="dark"
63
64
  >
64
65
  <div style="width: 100%; height: 500px;">
65
66
  <XtMap :center="[116.397428, 39.90923]" :zoom="11" />
@@ -70,6 +71,7 @@ export default {
70
71
  </XtMapProvider>
71
72
  </template>
72
73
  ```
74
+ :::
73
75
 
74
76
  或通过 `Vue.prototype.$xt` 方式配置(入口文件):
75
77
 
@@ -92,18 +94,20 @@ setMapTheme('dark')
92
94
 
93
95
  #### 高德地图(推荐)
94
96
 
97
+ ::: demo
95
98
  ```vue
96
99
  <XtMap
97
100
  provider="amap"
98
- api-key="AMAP_KEY"
99
- security-js-code="AMAP_SECURITY_CODE"
101
+ api-key="4a32fafb17f9e5236c4bb5f2e538d43b"
102
+ security-js-code="50f302bf821cda57f798308236e7f8e2"
100
103
  :center="[116.397428, 39.90923]"
101
104
  :zoom="11"
102
105
  />
103
106
  ```
107
+ :::
104
108
 
105
109
  #### 天地图
106
-
110
+ ::: demo 天地图
107
111
  ```vue
108
112
  <XtMap
109
113
  provider="tianditu"
@@ -112,9 +116,10 @@ setMapTheme('dark')
112
116
  :zoom="11"
113
117
  />
114
118
  ```
119
+ :::
115
120
 
116
121
  #### 百度地图
117
-
122
+ ::: demo 百度地图
118
123
  ```vue
119
124
  <XtMap
120
125
  provider="baidu"
@@ -123,9 +128,10 @@ setMapTheme('dark')
123
128
  :zoom="11"
124
129
  />
125
130
  ```
131
+ :::
126
132
 
127
133
  ### 暗黑主题
128
-
134
+ ::: demo 暗黑主题
129
135
  ```vue
130
136
  <template>
131
137
  <div style="width: 100%; height: 500px;">
@@ -139,11 +145,12 @@ setMapTheme('dark')
139
145
  </div>
140
146
  </template>
141
147
  ```
148
+ :::
142
149
 
143
150
  高德地图原生支持 dark 主题样式;天地图、百度地图通过 CSS 滤镜实现近似效果。
144
151
 
145
152
  ### 地图类型切换
146
-
153
+ ::: demo 地图类型切换
147
154
  ```vue
148
155
  <template>
149
156
  <div>
@@ -176,9 +183,10 @@ export default {
176
183
  }
177
184
  </script>
178
185
  ```
186
+ :::
179
187
 
180
188
  ### 通过 ref 调用实例方法
181
-
189
+ ::: demo 通过 ref 调用实例方法
182
190
  ```vue
183
191
  <template>
184
192
  <div>
@@ -228,11 +236,13 @@ export default {
228
236
  }
229
237
  </script>
230
238
  ```
239
+ :::
231
240
 
232
241
  ### 自定义 API URL
233
242
 
234
243
  如需使用自建代理或反向代理(例如解决密钥暴露问题),可通过 `api-url` 覆盖:
235
244
 
245
+ ::: demo 自定义 API URL
236
246
  ```vue
237
247
  <XtMap
238
248
  provider="amap"
@@ -241,6 +251,7 @@ export default {
241
251
  :zoom="11"
242
252
  />
243
253
  ```
254
+ :::
244
255
 
245
256
  ---
246
257
 
@@ -71,8 +71,10 @@ export default {
71
71
  ::: demo 仅主内容
72
72
  ```vue
73
73
  <template>
74
- <XtPage :show-header="false" :show-footer="false">
75
- <template #default>仅主内容区域</template>
74
+ <XtPage :show-header="false" :show-footer="false" style="height: 600px;">
75
+ <template #default="{ tableHeight }">
76
+ <div class="multiline-box" :style="{ height: tableHeight+'px' }">自适应容器</div>
77
+ </template>
76
78
  </XtPage>
77
79
  </template>
78
80
  ```
@@ -0,0 +1,158 @@
1
+ ## XtScrollArrow 滚动箭头组件
2
+
3
+ 滚动箭头组件用于在内容溢出时显示滚动箭头,支持水平和垂直方向的滚动。
4
+
5
+ ## 基本用法
6
+
7
+ ::: demo 水平滚动
8
+ ```vue
9
+ <template>
10
+ <XtScrollArrow :width="300">
11
+ <div style="display: flex; gap: 16px; padding: 8px;">
12
+ <div v-for="i in 10" :key="i" style="width: 80px; height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
13
+ 项目 {{ i }}
14
+ </div>
15
+ </div>
16
+ </XtScrollArrow>
17
+ </template>
18
+ ```
19
+ :::
20
+
21
+ ## 属性说明
22
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
23
+ |------|------|--------|--------|------|
24
+ | `direction` | String | horizontal | `horizontal`、`vertical` | 滚动方向 |
25
+ | `scrollStep` | Number | 100 | - | 每次滚动的步长(像素) |
26
+ | `autoHide` | Boolean | true | - | 是否自动隐藏箭头(滚动到边界时隐藏) |
27
+ | `height` | String / Number | - | - | 容器高度 |
28
+ | `width` | String / Number | - | - | 容器宽度 |
29
+
30
+ ## 事件说明
31
+ | 事件名称 | 说明 | 参数 |
32
+ |----------|------|------|
33
+ | `scroll` | 滚动时触发 | `scrollContainer` - 滚动容器元素 |
34
+
35
+ ## 示例
36
+
37
+ ### 垂直滚动
38
+
39
+ ::: demo 垂直滚动
40
+ ```vue
41
+ <template>
42
+ <XtScrollArrow direction="vertical" :height="200" :width="200">
43
+ <div style="display: flex; flex-direction: column; gap: 12px; padding: 8px;">
44
+ <div v-for="i in 10" :key="i" style="height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
45
+ 项目 {{ i }}
46
+ </div>
47
+ </div>
48
+ </XtScrollArrow>
49
+ </template>
50
+ ```
51
+ :::
52
+
53
+ ### 自定义滚动步长
54
+
55
+ ::: demo 自定义滚动步长
56
+ ```vue
57
+ <template>
58
+ <XtScrollArrow :width="300" :scrollStep="50">
59
+ <div style="display: flex; gap: 16px; padding: 8px;">
60
+ <div v-for="i in 10" :key="i" style="width: 80px; height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
61
+ 项目 {{ i }}
62
+ </div>
63
+ </div>
64
+ </XtScrollArrow>
65
+ </template>
66
+ ```
67
+ :::
68
+
69
+ ### 始终显示箭头
70
+
71
+ ::: demo 始终显示箭头
72
+ ```vue
73
+ <template>
74
+ <XtScrollArrow :width="300" :autoHide="false">
75
+ <div style="display: flex; gap: 16px; padding: 8px;">
76
+ <div v-for="i in 10" :key="i" style="width: 80px; height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center;">
77
+ 项目 {{ i }}
78
+ </div>
79
+ </div>
80
+ </XtScrollArrow>
81
+ </template>
82
+ ```
83
+ :::
84
+
85
+ ### 结合其他组件使用
86
+
87
+ ::: demo 结合按钮组使用
88
+ ```vue
89
+ <template>
90
+ <XtScrollArrow :width="400">
91
+ <div style="display: flex; gap: 8px; padding: 8px;">
92
+ <el-button v-for="i in 8" :key="i" type="primary" plain>按钮 {{ i }}</el-button>
93
+ </div>
94
+ </XtScrollArrow>
95
+ </template>
96
+ ```
97
+ :::
98
+
99
+ ### 动态内容
100
+
101
+ ::: demo 动态内容
102
+ ```vue
103
+ <template>
104
+ <div>
105
+ <el-button @click="addItem" style="margin-bottom: 12px;">添加项目</el-button>
106
+ <XtScrollArrow ref="arrow" :width="300" :appendMode="true">
107
+ <div style="display: flex; gap: 12px; padding: 8px;">
108
+ <div v-for="item in items" :key="item.id" style="width: 80px; height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;">
109
+ {{ item.name }}
110
+ </div>
111
+ </div>
112
+ </XtScrollArrow>
113
+ </div>
114
+ </template>
115
+
116
+ <script>
117
+ export default {
118
+ data() {
119
+ return {
120
+ items: [
121
+ { id: 1, name: '项目 1' },
122
+ { id: 2, name: '项目 2' },
123
+ { id: 3, name: '项目 3' },
124
+ { id: 4, name: '项目 4' },
125
+ { id: 5, name: '项目 5' }
126
+ ],
127
+ count: 5
128
+ }
129
+ },
130
+ methods: {
131
+ addItem() {
132
+ this.count++
133
+ this.items.push({ id: this.count, name: `项目 ${this.count}` })
134
+ // this.$nextTick(() => {
135
+ // this.$refs.arrow.scrollToEnd()
136
+ // })
137
+ }
138
+ }
139
+ }
140
+ </script>
141
+ ```
142
+ :::
143
+
144
+ ### 响应式宽度
145
+
146
+ ::: demo 响应式宽度
147
+ ```vue
148
+ <template>
149
+ <XtScrollArrow width="100%">
150
+ <div style="display: flex; gap: 16px; padding: 8px;">
151
+ <div v-for="i in 10" :key="i" style="width: 100px; height: 60px; background: #f5f7fa; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;">
152
+ 项目 {{ i }}
153
+ </div>
154
+ </div>
155
+ </XtScrollArrow>
156
+ </template>
157
+ ```
158
+ :::
@@ -121,7 +121,8 @@ export default {
121
121
  | `fieldKeys` | Object | `{ min: 'min', max: 'max', price: 'price' }` | 字段名映射,支持自定义字段名 |
122
122
  | `limit` | Number | `0` | 阶梯数量上限,<=0 表示不限制 |
123
123
  | `step` | Number | `10` | 阶梯增量,新增时自动填充下一级的 min 值 |
124
- | `disabled` | Boolean | `false` | 是否禁用所有操作 |
124
+ | `disabled` | Boolean | `false` | 是否禁用所有操作 |
125
+ | `allowNegative` | Boolean | `false` | 是否允许输入负数价格和下限 |
125
126
  | `tip` | String | `'区间左闭右闭 [min, max],最后一级为 [min, +∞),保证连续且不重叠。'` | 底部提示文本 |
126
127
  | `defaultFirst` | Boolean | `true` | 空数组时是否自动生成默认阶梯 |
127
128