@zfqh/uview-x 0.0.0-stage → 0.0.2

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 (93) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +127 -3
  4. package/components/uv-badge/props.ts +83 -0
  5. package/components/uv-badge/uv-badge.vue +186 -0
  6. package/components/uv-button/props.ts +148 -0
  7. package/components/uv-button/uv-button.vue +565 -0
  8. package/components/uv-checkbox/props.ts +83 -0
  9. package/components/uv-checkbox/uv-checkbox.vue +403 -0
  10. package/components/uv-checkbox-group/props.ts +97 -0
  11. package/components/uv-checkbox-group/uv-checkbox-group.vue +163 -0
  12. package/components/uv-code/props.ts +48 -0
  13. package/components/uv-code/uv-code.vue +156 -0
  14. package/components/uv-dialog/props.ts +56 -0
  15. package/components/uv-dialog/uv-dialog.vue +492 -0
  16. package/components/uv-form/props.ts +59 -0
  17. package/components/uv-form/uv-form.vue +256 -0
  18. package/components/uv-form/valid.ts +1344 -0
  19. package/components/uv-form-item/props.ts +62 -0
  20. package/components/uv-form-item/uv-form-item.vue +335 -0
  21. package/components/uv-icon/icons.ts +161 -0
  22. package/components/uv-icon/props.ts +91 -0
  23. package/components/uv-icon/uv-icon.vue +208 -0
  24. package/components/uv-icon/uvicons.ttf +0 -0
  25. package/components/uv-input/props.ts +185 -0
  26. package/components/uv-input/uv-input.vue +431 -0
  27. package/components/uv-line/props.ts +42 -0
  28. package/components/uv-line/uv-line.vue +75 -0
  29. package/components/uv-line-progress/props.ts +43 -0
  30. package/components/uv-line-progress/uv-line-progress.vue +166 -0
  31. package/components/uv-loading-icon/props.ts +78 -0
  32. package/components/uv-loading-icon/uv-loading-icon.vue +226 -0
  33. package/components/uv-overlay/props.ts +38 -0
  34. package/components/uv-overlay/uv-overlay.vue +120 -0
  35. package/components/uv-popup/props.ts +101 -0
  36. package/components/uv-popup/uv-popup.vue +371 -0
  37. package/components/uv-safe-bottom/props.ts +18 -0
  38. package/components/uv-safe-bottom/uv-safe-bottom.vue +120 -0
  39. package/components/uv-status-bar/props.ts +22 -0
  40. package/components/uv-status-bar/uv-status-bar.vue +121 -0
  41. package/components/uv-tabs/props.ts +84 -0
  42. package/components/uv-tabs/uv-tabs.vue +432 -0
  43. package/components/uv-transition/props.ts +38 -0
  44. package/components/uv-transition/uv-transition.vue +170 -0
  45. package/hooks/index.ts +5 -0
  46. package/hooks/useDebounce.ts +35 -0
  47. package/hooks/useI18n.ts +95 -0
  48. package/hooks/useThrottle.ts +38 -0
  49. package/index.ts +23 -0
  50. package/libs/dayjs/index.ts +217 -0
  51. package/libs/index.ts +4 -0
  52. package/libs/luch-request/adapters/index.ts +133 -0
  53. package/libs/luch-request/core/InterceptorManager.ts +52 -0
  54. package/libs/luch-request/core/Request.ts +202 -0
  55. package/libs/luch-request/core/buildFullPath.ts +21 -0
  56. package/libs/luch-request/core/defaults.ts +34 -0
  57. package/libs/luch-request/core/dispatchRequest.ts +7 -0
  58. package/libs/luch-request/core/mergeConfig.ts +127 -0
  59. package/libs/luch-request/core/settle.ts +17 -0
  60. package/libs/luch-request/helpers/buildURL.ts +65 -0
  61. package/libs/luch-request/helpers/combineURLs.ts +15 -0
  62. package/libs/luch-request/helpers/isAbsoluteURL.ts +15 -0
  63. package/libs/luch-request/index.d.ts +197 -0
  64. package/libs/luch-request/index.ts +3 -0
  65. package/libs/luch-request/utils/clone.ts +265 -0
  66. package/libs/luch-request/utils.ts +136 -0
  67. package/locales/en.ts +78 -0
  68. package/locales/index.ts +169 -0
  69. package/locales/zh-Hans.ts +78 -0
  70. package/package.json +42 -4
  71. package/styles/color.scss +33 -0
  72. package/styles/common.scss +134 -0
  73. package/styles/components.scss +19 -0
  74. package/styles/index.scss +7 -0
  75. package/styles/theme.scss +44 -0
  76. package/styles/var.module.scss +32 -0
  77. package/styles/vue.scss +39 -0
  78. package/theme.scss +2 -0
  79. package/types/index.d.ts +66 -0
  80. package/utils/colorGradient.ts +139 -0
  81. package/utils/compat.ts +165 -0
  82. package/utils/compress.ts +34 -0
  83. package/utils/config.ts +95 -0
  84. package/utils/debounce.ts +7 -0
  85. package/utils/digit.ts +157 -0
  86. package/utils/function.ts +771 -0
  87. package/utils/http.ts +5 -0
  88. package/utils/index.ts +57 -0
  89. package/utils/locale.ts +296 -0
  90. package/utils/platform.ts +71 -0
  91. package/utils/route.ts +142 -0
  92. package/utils/test.ts +256 -0
  93. package/utils/throttle.ts +7 -0
@@ -0,0 +1,62 @@
1
+ // @ts-nocheck
2
+
3
+ import config from '../../utils/config';
4
+
5
+ const props = {
6
+ // input的label提示语
7
+ label: {
8
+ type: String,
9
+ default: '',
10
+ },
11
+ // 绑定的值
12
+ prop: {
13
+ type: String,
14
+ default: '',
15
+ },
16
+ // 是否显示表单域的下划线边框
17
+ borderBottom: {
18
+ type: [Boolean],
19
+ default: false,
20
+ },
21
+ // label的位置,left-左边,top-上边
22
+ labelPosition: {
23
+ type: String,
24
+ default: '',
25
+ },
26
+ // label的宽度,单位px
27
+ labelWidth: {
28
+ type: [String, Number],
29
+ default: '',
30
+ },
31
+ // 右侧图标
32
+ rightIcon: {
33
+ type: String,
34
+ default: '',
35
+ },
36
+ // 左侧图标
37
+ leftIcon: {
38
+ type: String,
39
+ default: '',
40
+ },
41
+ // 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置
42
+ required: {
43
+ type: Boolean,
44
+ default: false,
45
+ },
46
+ leftIconStyle: {
47
+ type: [String, Object],
48
+ default: '',
49
+ },
50
+ customStyle: {
51
+ type: [Object, String],
52
+ default: () => ({}),
53
+ },
54
+ customClass: {
55
+ type: String,
56
+ default: '',
57
+ },
58
+
59
+ ...config.props.formItem,
60
+ };
61
+
62
+ export default props;
@@ -0,0 +1,335 @@
1
+ <template>
2
+ <view class="uv-form-item" :class="[p.customClass]">
3
+ <view
4
+ class="uv-form-item__body"
5
+ :style="[bodyStyle]"
6
+ @tap="clickHandler"
7
+ >
8
+ <!-- 微信小程序中,将一个参数设置空字符串,结果会变成字符串"true" -->
9
+ <slot name="label">
10
+ <view
11
+ v-if="p.required || p.leftIcon || p.label"
12
+ class="uv-form-item__body__left"
13
+ :style="[leftStyle]"
14
+ >
15
+ <!-- 为了块对齐 -->
16
+ <view class="uv-form-item__body__left__content">
17
+ <text
18
+ v-if="p.required"
19
+ class="uv-form-item__body__left__content__required"
20
+ >*</text>
21
+ <view
22
+ v-if="p.leftIcon"
23
+ class="uv-form-item__body__left__content__icon"
24
+ >
25
+ <uv-icon
26
+ :name="p.leftIcon"
27
+ :custom-style="p.leftIconStyle"
28
+ ></uv-icon>
29
+ </view>
30
+ <view
31
+ class="uv-form-item__body__left__content__label"
32
+ :style="[labelStyle]"
33
+ >
34
+ <text class="uv-form-item__body__left__content__label__text">{{ p.label }}</text>
35
+ </view>
36
+ </view>
37
+ </view>
38
+ </slot>
39
+ <view class="uv-form-item__body__right">
40
+ <view class="uv-form-item__body__right__content">
41
+ <view class="uv-form-item__body__right__content__slot">
42
+ <slot />
43
+ </view>
44
+ <view class="uv-form-item__body__right__content__icon">
45
+ <slot name="right" />
46
+ </view>
47
+ </view>
48
+ </view>
49
+ </view>
50
+ <slot name="error">
51
+ <uv-transition
52
+ v-if="!!message && parentData.errorType === 'message'"
53
+ :show="true"
54
+ :duration="100"
55
+ mode="fade"
56
+ >
57
+ <text
58
+ class="uv-form-item__body__right__message"
59
+ :style="[messageStyle]"
60
+ >{{ message }}</text>
61
+ </uv-transition>
62
+ </slot>
63
+ <uv-line
64
+ v-if="p.borderBottom"
65
+ :color="message && parentData.errorType === 'border-bottom' ? '#f56c6c' : '#d6d7d9'"
66
+ ></uv-line>
67
+ </view>
68
+ </template>
69
+
70
+ <script setup lang="ts">
71
+ import { computed, inject, onUnmounted, provide, reactive, ref, watch } from 'vue'
72
+ import { $uv } from '../../utils'
73
+ import props from './props'
74
+
75
+
76
+ defineOptions({
77
+ name: 'uv-form-item',
78
+ // #ifdef UNI-APP-X
79
+ styleIsolation: 'app-and-page',
80
+ // #endif
81
+ virtualHost: true,
82
+ })
83
+
84
+ /**
85
+ * FormItem 表单域
86
+ * @description 此组件一般用于表单场景,可以配置Input输入框,Select弹出框,进行表单验证等。
87
+ * @tutorial https://www.uvui.cn/components/form.html
88
+ * @property {String} label input的label提示语
89
+ * @property {String} prop 绑定的值
90
+ * @property {String | Boolean} borderBottom 是否显示表单域的下划线边框
91
+ * @property {String | Number} labelWidth label的宽度,单位px
92
+ * @property {String} rightIcon 右侧图标
93
+ * @property {String} leftIcon 左侧图标
94
+ * @property {String | Object} leftIconStyle 左侧图标的样式
95
+ * @property {Boolean} required 是否显示左边的必填星号,只作显示用,具体校验必填的逻辑,请在rules中配置 (默认 false )
96
+ * @property {Object} customStyle 定义需要用到的外部样式
97
+ * @event {Function} click 点击时触发
98
+ * @example <uv-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1"></uv-form-item>
99
+ */
100
+ const p = defineProps(props)
101
+
102
+ const emit = defineEmits(['click'])
103
+
104
+ // 错误提示语
105
+ const message = ref<string | null>('')
106
+
107
+ // 注入 uv-form 提供的表单上下文
108
+ const formContext: any = inject('uv-form-context', null)
109
+
110
+ // 注册到 form 的句柄,form 通过它读取当前 prop / 写入错误信息
111
+ const handle: any = {
112
+ prop: p.prop,
113
+ setMessage: (msg: string | null) => {
114
+ message.value = msg
115
+ }
116
+ }
117
+ if (formContext) {
118
+ formContext.register(handle)
119
+ } else {
120
+ $uv.error('uv-form-item需要结合uv-form组件使用')
121
+ }
122
+
123
+ watch(
124
+ () => p.prop,
125
+ (prop: string) => {
126
+ handle.prop = prop
127
+ }
128
+ )
129
+
130
+ onUnmounted(() => {
131
+ if (formContext) formContext.unregister(handle)
132
+ })
133
+
134
+ // 提供给 uv-input / uv-textarea / uv-checkbox / uv-radio 等触发校验
135
+ const formItemContext: any = reactive({
136
+ prop: p.prop,
137
+ validate: (trigger: string) => {
138
+ if (formContext && p.prop) formContext.validateField([p.prop], null, trigger)
139
+ }
140
+ })
141
+ provide('uv-form-item-context', formItemContext)
142
+
143
+ watch(
144
+ () => p.prop,
145
+ (prop: string) => {
146
+ formItemContext.prop = prop
147
+ }
148
+ )
149
+
150
+ const parentData = computed(() => {
151
+ const ctx: any = formContext || {}
152
+ return {
153
+ // 提示文本的位置
154
+ labelPosition: p.labelPosition || ctx.labelPosition || 'left',
155
+ // 提示文本对齐方式
156
+ labelAlign: ctx.labelAlign || 'left',
157
+ // 提示文本的样式
158
+ labelStyle: ctx.labelStyle || {},
159
+ // 提示文本的宽度
160
+ labelWidth: p.labelWidth || ctx.labelWidth || 45,
161
+ // 错误提示方式
162
+ errorType: ctx.errorType || 'message'
163
+ }
164
+ })
165
+
166
+ const bodyStyle = computed(() => {
167
+ // 与旧版保持一致:自定义样式在前,flexDirection 在后覆盖
168
+ const customStyle = $uv.addStyle(p.customStyle) || {}
169
+ const style: any = {
170
+ flexDirection: parentData.value.labelPosition === 'left' ? 'row' : 'column'
171
+ }
172
+ return $uv.deepMerge(customStyle, style)
173
+ })
174
+
175
+ const leftStyle = computed(() => {
176
+ const style: any = {
177
+ width: $uv.addUnit(parentData.value.labelWidth),
178
+ marginBottom: parentData.value.labelPosition === 'left' ? 0 : '5px'
179
+ }
180
+ return style
181
+ })
182
+
183
+ const labelStyle = computed(() => {
184
+ const style: any = {
185
+ justifyContent:
186
+ parentData.value.labelAlign === 'left'
187
+ ? 'flex-start'
188
+ : parentData.value.labelAlign === 'center'
189
+ ? 'center'
190
+ : 'flex-end'
191
+ }
192
+ return $uv.deepMerge($uv.addStyle(parentData.value.labelStyle), style)
193
+ })
194
+
195
+ const messageStyle = computed(() => {
196
+ const style: any = {
197
+ marginLeft: $uv.addUnit(parentData.value.labelPosition === 'top' ? 0 : parentData.value.labelWidth)
198
+ }
199
+ return style
200
+ })
201
+
202
+ // 移除uv-form-item的校验结果
203
+ const clearValidate = () => {
204
+ message.value = null
205
+ }
206
+
207
+ // 清空当前的组件的校验结果,并重置为初始值
208
+ const resetField = () => {
209
+ if (!formContext) return
210
+ // 找到原始值
211
+ const value = $uv.getProperty(formContext.originalModel, p.prop)
212
+ // 将uv-form的model的prop属性链还原原始值
213
+ $uv.setProperty(formContext.model, p.prop, value)
214
+ // 移除校验结果
215
+ message.value = null
216
+ }
217
+
218
+ // 点击组件
219
+ const clickHandler = () => {
220
+ emit('click')
221
+ }
222
+
223
+ defineExpose({
224
+ clearValidate,
225
+ resetField
226
+ })
227
+ </script>
228
+
229
+ <style lang="scss">
230
+ @import '../../styles/components.scss';
231
+ @import '../../styles/color.scss';
232
+
233
+ .uv-form-item {
234
+ display: flex;
235
+ flex-direction: column;
236
+ font-size: 14px;
237
+ color: $uv-main-color;
238
+ }
239
+
240
+ .uv-form-item__body {
241
+ display: flex;
242
+ flex-direction: row;
243
+ padding: 10px 0;
244
+ }
245
+
246
+ .uv-form-item__body__left {
247
+ display: flex;
248
+ flex-direction: row;
249
+ align-items: center;
250
+ /* #ifndef APP-NVUE */
251
+ flex-shrink: 0;
252
+ /* #endif */
253
+ }
254
+
255
+ .uv-form-item__body__left__content {
256
+ display: flex;
257
+ flex-direction: row;
258
+ position: relative;
259
+ align-items: center;
260
+ padding-right: 10rpx;
261
+ /* #ifndef APP-NVUE */
262
+ width: 100%;
263
+ flex: none;
264
+ /* #endif */
265
+ }
266
+
267
+ .uv-form-item__body__left__content__icon {
268
+ margin-right: 8rpx;
269
+ }
270
+
271
+ .uv-form-item__body__left__content__required {
272
+ position: absolute;
273
+ left: -9px;
274
+ color: $uv-error;
275
+ line-height: 20px;
276
+ font-size: 20px;
277
+ top: 3px;
278
+ }
279
+
280
+ .uv-form-item__body__left__content__label {
281
+ display: flex;
282
+ flex-direction: row;
283
+ align-items: center;
284
+ /* #ifndef APP-NVUE */
285
+ width: 100%;
286
+ flex: none;
287
+ overflow: visible;
288
+ /* #endif */
289
+ }
290
+
291
+ .uv-form-item__body__left__content__label__text {
292
+ /* #ifndef APP-NVUE */
293
+ flex-shrink: 0;
294
+ white-space: nowrap;
295
+ /* #endif */
296
+ /* #ifdef APP-NVUE */
297
+ lines: 1;
298
+ overflow: hidden;
299
+ text-overflow: ellipsis;
300
+ /* #endif */
301
+ color: $uv-main-color;
302
+ font-size: 15px;
303
+ }
304
+
305
+ .uv-form-item__body__right {
306
+ flex: 1;
307
+ }
308
+
309
+ .uv-form-item__body__right__content {
310
+ display: flex;
311
+ flex-direction: row;
312
+ align-items: center;
313
+ flex: 1;
314
+ }
315
+
316
+ .uv-form-item__body__right__content__slot {
317
+ flex: 1;
318
+ display: flex;
319
+ flex-direction: row;
320
+ align-items: center;
321
+ }
322
+
323
+ .uv-form-item__body__right__content__icon {
324
+ /* uv-ui 上游模板类名笔误导致该容器实际未应用样式,为保持 H5 demo 一致,这里不设置 margin-left */
325
+ color: $uv-light-color;
326
+ font-size: 30rpx;
327
+ }
328
+
329
+ .uv-form-item__body__right__message {
330
+ margin-top: -6px;
331
+ line-height: 24px;
332
+ font-size: 12px;
333
+ color: $uv-error;
334
+ }
335
+ </style>
@@ -0,0 +1,161 @@
1
+ // @ts-nocheck
2
+ export default {
3
+ 'uvicon-level': 'e68f',
4
+ 'uvicon-checkbox-mark': 'e659',
5
+ 'uvicon-folder': 'e694',
6
+ 'uvicon-movie': 'e67c',
7
+ 'uvicon-star-fill': 'e61e',
8
+ 'uvicon-star': 'e618',
9
+ 'uvicon-phone-fill': 'e6ac',
10
+ 'uvicon-phone': 'e6ba',
11
+ 'uvicon-apple-fill': 'e635',
12
+ 'uvicon-backspace': 'e64d',
13
+ 'uvicon-attach': 'e640',
14
+ 'uvicon-empty-data': 'e671',
15
+ 'uvicon-empty-address': 'e68a',
16
+ 'uvicon-empty-favor': 'e662',
17
+ 'uvicon-empty-car': 'e657',
18
+ 'uvicon-empty-order': 'e66b',
19
+ 'uvicon-empty-list': 'e672',
20
+ 'uvicon-empty-search': 'e677',
21
+ 'uvicon-empty-permission': 'e67d',
22
+ 'uvicon-empty-news': 'e67e',
23
+ 'uvicon-empty-history': 'e685',
24
+ 'uvicon-empty-coupon': 'e69b',
25
+ 'uvicon-empty-page': 'e60e',
26
+ 'uvicon-empty-wifi-off': 'e6cc',
27
+ 'uvicon-reload': 'e627',
28
+ 'uvicon-order': 'e695',
29
+ 'uvicon-server-man': 'e601',
30
+ 'uvicon-search': 'e632',
31
+ 'uvicon-more-dot-fill': 'e66f',
32
+ 'uvicon-scan': 'e631',
33
+ 'uvicon-map': 'e665',
34
+ 'uvicon-map-fill': 'e6a8',
35
+ 'uvicon-tags': 'e621',
36
+ 'uvicon-tags-fill': 'e613',
37
+ 'uvicon-eye': 'e664',
38
+ 'uvicon-eye-fill': 'e697',
39
+ 'uvicon-eye-off': 'e69c',
40
+ 'uvicon-eye-off-outline': 'e688',
41
+ 'uvicon-mic': 'e66d',
42
+ 'uvicon-mic-off': 'e691',
43
+ 'uvicon-calendar': 'e65c',
44
+ 'uvicon-trash': 'e623',
45
+ 'uvicon-trash-fill': 'e6ce',
46
+ 'uvicon-play-left': 'e6bf',
47
+ 'uvicon-play-right': 'e6b3',
48
+ 'uvicon-minus': 'e614',
49
+ 'uvicon-plus': 'e625',
50
+ 'uvicon-info-circle': 'e69f',
51
+ 'uvicon-info-circle-fill': 'e6a7',
52
+ 'uvicon-question-circle': 'e622',
53
+ 'uvicon-question-circle-fill': 'e6bc',
54
+ 'uvicon-close': 'e65a',
55
+ 'uvicon-checkmark': 'e64a',
56
+ 'uvicon-checkmark-circle': 'e643',
57
+ 'uvicon-checkmark-circle-fill': 'e668',
58
+ 'uvicon-setting': 'e602',
59
+ 'uvicon-setting-fill': 'e6d0',
60
+ 'uvicon-heart': 'e6a2',
61
+ 'uvicon-heart-fill': 'e68b',
62
+ 'uvicon-camera': 'e642',
63
+ 'uvicon-camera-fill': 'e650',
64
+ 'uvicon-more-circle': 'e69e',
65
+ 'uvicon-more-circle-fill': 'e684',
66
+ 'uvicon-chat': 'e656',
67
+ 'uvicon-chat-fill': 'e63f',
68
+ 'uvicon-bag': 'e647',
69
+ 'uvicon-error-circle': 'e66e',
70
+ 'uvicon-error-circle-fill': 'e655',
71
+ 'uvicon-close-circle': 'e64e',
72
+ 'uvicon-close-circle-fill': 'e666',
73
+ 'uvicon-share': 'e629',
74
+ 'uvicon-share-fill': 'e6bb',
75
+ 'uvicon-share-square': 'e6c4',
76
+ 'uvicon-shopping-cart': 'e6cb',
77
+ 'uvicon-shopping-cart-fill': 'e630',
78
+ 'uvicon-bell': 'e651',
79
+ 'uvicon-bell-fill': 'e604',
80
+ 'uvicon-list': 'e690',
81
+ 'uvicon-list-dot': 'e6a9',
82
+ 'uvicon-zhifubao-circle-fill': 'e617',
83
+ 'uvicon-weixin-circle-fill': 'e6cd',
84
+ 'uvicon-weixin-fill': 'e620',
85
+ 'uvicon-qq-fill': 'e608',
86
+ 'uvicon-qq-circle-fill': 'e6b9',
87
+ 'uvicon-moments-circel-fill': 'e6c2',
88
+ 'uvicon-moments': 'e6a0',
89
+ 'uvicon-car': 'e64f',
90
+ 'uvicon-car-fill': 'e648',
91
+ 'uvicon-warning-fill': 'e6c7',
92
+ 'uvicon-warning': 'e6c1',
93
+ 'uvicon-clock-fill': 'e64b',
94
+ 'uvicon-clock': 'e66c',
95
+ 'uvicon-edit-pen': 'e65d',
96
+ 'uvicon-edit-pen-fill': 'e679',
97
+ 'uvicon-email': 'e673',
98
+ 'uvicon-email-fill': 'e683',
99
+ 'uvicon-minus-circle': 'e6a5',
100
+ 'uvicon-plus-circle': 'e603',
101
+ 'uvicon-plus-circle-fill': 'e611',
102
+ 'uvicon-file-text': 'e687',
103
+ 'uvicon-file-text-fill': 'e67f',
104
+ 'uvicon-pushpin': 'e6d1',
105
+ 'uvicon-pushpin-fill': 'e6b6',
106
+ 'uvicon-grid': 'e68c',
107
+ 'uvicon-grid-fill': 'e698',
108
+ 'uvicon-play-circle': 'e6af',
109
+ 'uvicon-play-circle-fill': 'e62a',
110
+ 'uvicon-pause-circle-fill': 'e60c',
111
+ 'uvicon-pause': 'e61c',
112
+ 'uvicon-pause-circle': 'e696',
113
+ 'uvicon-gift-fill': 'e6b0',
114
+ 'uvicon-gift': 'e680',
115
+ 'uvicon-kefu-ermai': 'e660',
116
+ 'uvicon-server-fill': 'e610',
117
+ 'uvicon-coupon-fill': 'e64c',
118
+ 'uvicon-coupon': 'e65f',
119
+ 'uvicon-integral': 'e693',
120
+ 'uvicon-integral-fill': 'e6b1',
121
+ 'uvicon-home-fill': 'e68e',
122
+ 'uvicon-home': 'e67b',
123
+ 'uvicon-account': 'e63a',
124
+ 'uvicon-account-fill': 'e653',
125
+ 'uvicon-thumb-down-fill': 'e628',
126
+ 'uvicon-thumb-down': 'e60a',
127
+ 'uvicon-thumb-up': 'e612',
128
+ 'uvicon-thumb-up-fill': 'e62c',
129
+ 'uvicon-lock-fill': 'e6a6',
130
+ 'uvicon-lock-open': 'e68d',
131
+ 'uvicon-lock-opened-fill': 'e6a1',
132
+ 'uvicon-lock': 'e69d',
133
+ 'uvicon-red-packet': 'e6c3',
134
+ 'uvicon-photo-fill': 'e6b4',
135
+ 'uvicon-photo': 'e60d',
136
+ 'uvicon-volume-off-fill': 'e6c8',
137
+ 'uvicon-volume-off': 'e6bd',
138
+ 'uvicon-volume-fill': 'e624',
139
+ 'uvicon-volume': 'e605',
140
+ 'uvicon-download': 'e670',
141
+ 'uvicon-arrow-up-fill': 'e636',
142
+ 'uvicon-arrow-down-fill': 'e638',
143
+ 'uvicon-play-left-fill': 'e6ae',
144
+ 'uvicon-play-right-fill': 'e6ad',
145
+ 'uvicon-arrow-downward': 'e634',
146
+ 'uvicon-arrow-leftward': 'e63b',
147
+ 'uvicon-arrow-rightward': 'e644',
148
+ 'uvicon-arrow-upward': 'e641',
149
+ 'uvicon-arrow-down': 'e63e',
150
+ 'uvicon-arrow-right': 'e63c',
151
+ 'uvicon-arrow-left': 'e646',
152
+ 'uvicon-arrow-up': 'e633',
153
+ 'uvicon-skip-back-left': 'e6c5',
154
+ 'uvicon-skip-forward-right': 'e61f',
155
+ 'uvicon-arrow-left-double': 'e637',
156
+ 'uvicon-man': 'e675',
157
+ 'uvicon-woman': 'e626',
158
+ 'uvicon-en': 'e6b8',
159
+ 'uvicon-twitte': 'e607',
160
+ 'uvicon-twitter-circle-fill': 'e6cf'
161
+ }
@@ -0,0 +1,91 @@
1
+ // @ts-nocheck
2
+
3
+ import icons from './icons';
4
+ import config from '../../utils/config';
5
+
6
+ const props = {
7
+ icons: {
8
+ type: Object,
9
+ default: () => icons,
10
+ },
11
+ name: {
12
+ type: String,
13
+ default: '',
14
+ },
15
+ color: {
16
+ type: String,
17
+ default: '',
18
+ },
19
+ size: {
20
+ type: [String, Number],
21
+ default: '16px',
22
+ },
23
+ bold: {
24
+ type: Boolean,
25
+ default: false,
26
+ },
27
+ index: {
28
+ type: [String, Number],
29
+ default: null,
30
+ },
31
+ hoverClass: {
32
+ type: String,
33
+ default: '',
34
+ },
35
+ customPrefix: {
36
+ type: String,
37
+ default: 'uvicon',
38
+ },
39
+ label: {
40
+ type: [String, Number],
41
+ default: '',
42
+ },
43
+ labelPos: {
44
+ type: String,
45
+ default: 'right',
46
+ },
47
+ labelSize: {
48
+ type: [String, Number],
49
+ default: '15px',
50
+ },
51
+ labelColor: {
52
+ type: String,
53
+ default: '#606266',
54
+ },
55
+ space: {
56
+ type: [String, Number],
57
+ default: '3px',
58
+ },
59
+ imgMode: {
60
+ type: String,
61
+ default: 'aspectFit',
62
+ },
63
+ width: {
64
+ type: [String, Number],
65
+ default: '',
66
+ },
67
+ height: {
68
+ type: [String, Number],
69
+ default: '',
70
+ },
71
+ top: {
72
+ type: [String, Number],
73
+ default: 0,
74
+ },
75
+ stop: {
76
+ type: Boolean,
77
+ default: false,
78
+ },
79
+ customStyle: {
80
+ type: [Object, String],
81
+ default: () => ({}),
82
+ },
83
+ customClass: {
84
+ type: String,
85
+ default: '',
86
+ },
87
+
88
+ ...config.props.icon,
89
+ };
90
+
91
+ export default props;