@10yun/cv-mobile-ui 0.4.1 → 0.4.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 (112) hide show
  1. package/package.json +1 -1
  2. package/ui-cv/cv-badge/{uni-badge.vue → cv-badge.vue} +2 -2
  3. package/ui-cv/cv-calendar/calendar.js +762 -345
  4. package/ui-cv/cv-calendar/cv-calendar-item.vue +198 -0
  5. package/ui-cv/cv-calendar/cv-calendar.vue +508 -0
  6. package/ui-cv/cv-card/cv-card.vue +427 -0
  7. package/ui-cv/cv-col/cv-col.vue +2965 -0
  8. package/ui-cv/cv-collapse/cv-collapse.vue +146 -0
  9. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +395 -0
  10. package/ui-cv/cv-combox/cv-combox.vue +250 -0
  11. package/ui-cv/cv-countdown/cv-countdown.vue +245 -0
  12. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +841 -0
  13. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +154 -0
  14. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +376 -0
  15. package/ui-cv/cv-data-picker/cv-data-picker.vue +486 -0
  16. package/ui-cv/cv-data-pickerview/{uni-data-picker.js → cv-data-picker.js} +0 -0
  17. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +304 -0
  18. package/ui-cv/cv-dateformat/cv-dateformat.vue +86 -0
  19. package/ui-cv/cv-datetime-picker/calendar.vue +752 -738
  20. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +958 -0
  21. package/ui-cv/cv-datetime-picker/time-picker.vue +900 -892
  22. package/ui-cv/cv-easyinput/cv-easyinput.vue +514 -0
  23. package/ui-cv/cv-fab/cv-fab.vue +465 -0
  24. package/ui-cv/cv-fab/{uni-fab.vue.bak → cv-fab.vue.bak} +2 -2
  25. package/ui-cv/cv-fav/cv-fav.vue +150 -0
  26. package/ui-cv/cv-file-picker/cv-file-picker.vue +619 -0
  27. package/ui-cv/cv-form-item/cv-form-item.vue +1 -1
  28. package/ui-cv/cv-goods-nav/{uni-goods-nav.vue → cv-goods-nav.vue} +1 -1
  29. package/ui-cv/{cv-icons2/cv-icons2.vue → cv-icon2/cv-icon2.vue} +3 -3
  30. package/ui-cv/{cv-icons2 → cv-icon2}/icons.js +0 -0
  31. package/ui-cv/{cv-icons2 → cv-icon2}/uni.ttf +0 -0
  32. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +154 -0
  33. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +371 -0
  34. package/ui-cv/cv-input-password/cv-input-password.vue +2 -2
  35. package/ui-cv/{cv-link/uni-link.vue → cv-link2/cv-link2.vue} +1 -1
  36. package/ui-cv/cv-list/cv-list.vue +107 -0
  37. package/ui-cv/cv-list/cv-refresh.vue +65 -0
  38. package/ui-cv/cv-list-ad/cv-list-ad.vue +113 -0
  39. package/ui-cv/cv-list-chat/{uni-list-chat.scss → cv-list-chat.scss} +0 -0
  40. package/ui-cv/cv-list-chat/{uni-list-chat.vue → cv-list-chat.vue} +0 -0
  41. package/ui-cv/cv-list-item/cv-list-item.vue +449 -0
  42. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +256 -0
  43. package/ui-cv/cv-nav-bar/{uni-status-bar.vue → cv-status-bar.vue} +0 -0
  44. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +453 -0
  45. package/ui-cv/cv-number-box/cv-number-box.vue +223 -0
  46. package/ui-cv/cv-pagination/cv-pagination.vue +397 -0
  47. package/ui-cv/cv-popup/cv-popup.vue +429 -0
  48. package/ui-cv/cv-popup-dialog/{uni-popup-dialog.vue → cv-popup-dialog.vue} +0 -0
  49. package/ui-cv/cv-popup-message/cv-popup-message.vue +143 -0
  50. package/ui-cv/cv-popup-share/{uni-popup-share.vue → cv-popup-share.vue} +0 -0
  51. package/ui-cv/cv-row/{uni-row.vue → cv-row.vue} +1 -1
  52. package/ui-cv/cv-search-bar/cv-search-bar.vue +280 -0
  53. package/ui-cv/cv-section/{uni-section.vue → cv-section.vue} +0 -0
  54. package/ui-cv/cv-segmented-control/{uni-segmented-control.vue → cv-segmented-control.vue} +0 -0
  55. package/ui-cv/cv-status-bar/{uni-status-bar.vue → cv-status-bar.vue} +0 -0
  56. package/ui-cv/cv-steps/cv-steps.vue +293 -0
  57. package/ui-cv/cv-swipe-action/{uni-swipe-action.vue → cv-swipe-action.vue} +0 -0
  58. package/ui-cv/cv-swipe-action-item/{uni-swipe-action-item.vue → cv-swipe-action-item.vue} +0 -0
  59. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +255 -0
  60. package/ui-cv/cv-table/cv-table.vue +460 -0
  61. package/ui-cv/cv-tag/cv-tag.vue +276 -0
  62. package/ui-cv/cv-tbody/cv-tbody.vue +28 -0
  63. package/ui-cv/cv-td/cv-td.vue +93 -0
  64. package/ui-cv/cv-test/{uni-test.vue → cv-test.vue} +0 -0
  65. package/ui-cv/cv-th/cv-th.vue +270 -0
  66. package/ui-cv/cv-thead/cv-thead.vue +114 -0
  67. package/ui-cv/cv-title/cv-title.vue +168 -0
  68. package/ui-cv/cv-tr/cv-tr.vue +166 -0
  69. package/ui-cv/cv-transition/cv-transition.vue +279 -0
  70. package/ui-cv/cv-calendar/uni-calendar-item.vue +0 -171
  71. package/ui-cv/cv-calendar/uni-calendar.vue +0 -504
  72. package/ui-cv/cv-card/uni-card.vue +0 -420
  73. package/ui-cv/cv-col/uni-col.vue +0 -2968
  74. package/ui-cv/cv-collapse/uni-collapse.vue +0 -146
  75. package/ui-cv/cv-collapse-item/uni-collapse-item.vue +0 -378
  76. package/ui-cv/cv-combox/uni-combox.vue +0 -237
  77. package/ui-cv/cv-countdown/uni-countdown.vue +0 -234
  78. package/ui-cv/cv-data-checkbox/uni-data-checkbox.vue +0 -792
  79. package/ui-cv/cv-data-indexed-list/uni-data-indexed-list-item.vue +0 -142
  80. package/ui-cv/cv-data-indexed-list/uni-data-indexed-list.vue +0 -364
  81. package/ui-cv/cv-data-picker/uni-data-picker.vue +0 -468
  82. package/ui-cv/cv-data-pickerview/uni-data-pickerview.vue +0 -298
  83. package/ui-cv/cv-dateformat/uni-dateformat.vue +0 -88
  84. package/ui-cv/cv-datetime-picker/uni-datetime-picker.vue +0 -874
  85. package/ui-cv/cv-easyinput/uni-easyinput.vue +0 -438
  86. package/ui-cv/cv-fab/uni-fab.vue +0 -443
  87. package/ui-cv/cv-fav/uni-fav.vue +0 -136
  88. package/ui-cv/cv-file-picker/uni-file-picker.vue +0 -614
  89. package/ui-cv/cv-indexed-list/uni-indexed-list-item.vue +0 -142
  90. package/ui-cv/cv-indexed-list/uni-indexed-list.vue +0 -357
  91. package/ui-cv/cv-list/uni-list.vue +0 -107
  92. package/ui-cv/cv-list/uni-refresh.vue +0 -65
  93. package/ui-cv/cv-list-ad/uni-list-ad.vue +0 -106
  94. package/ui-cv/cv-list-item/uni-list-item.vue +0 -428
  95. package/ui-cv/cv-nav-bar/uni-nav-bar.vue +0 -244
  96. package/ui-cv/cv-notice-bar/uni-notice-bar.vue +0 -394
  97. package/ui-cv/cv-number-box/uni-number-box.vue +0 -224
  98. package/ui-cv/cv-pagination/uni-pagination.vue +0 -376
  99. package/ui-cv/cv-popup/uni-popup.vue +0 -412
  100. package/ui-cv/cv-popup-message/uni-popup-message.vue +0 -143
  101. package/ui-cv/cv-search-bar/uni-search-bar.vue +0 -262
  102. package/ui-cv/cv-steps/uni-steps.vue +0 -250
  103. package/ui-cv/cv-swiper-dot/uni-swiper-dot.vue +0 -205
  104. package/ui-cv/cv-table/uni-table.vue +0 -455
  105. package/ui-cv/cv-tag/uni-tag.vue +0 -283
  106. package/ui-cv/cv-tbody/uni-tbody.vue +0 -30
  107. package/ui-cv/cv-td/uni-td.vue +0 -88
  108. package/ui-cv/cv-th/uni-th.vue +0 -259
  109. package/ui-cv/cv-thead/uni-thead.vue +0 -114
  110. package/ui-cv/cv-title/uni-title.vue +0 -171
  111. package/ui-cv/cv-tr/uni-tr.vue +0 -156
  112. package/ui-cv/cv-transition/uni-transition.vue +0 -287
@@ -1,455 +0,0 @@
1
- <template>
2
- <view class="uni-table-scroll" :class="{ 'table--border': border, 'border-none': !noData }">
3
- <!-- #ifdef H5 -->
4
- <table class="uni-table" border="0" cellpadding="0" cellspacing="0" :class="{ 'table--stripe': stripe }" :style="{ 'min-width': minWidth + 'px' }">
5
- <slot></slot>
6
- <view v-if="noData" class="uni-table-loading">
7
- <view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
8
- </view>
9
- <view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }">
10
- <div class="uni-table--loader"></div>
11
- </view>
12
- </table>
13
- <!-- #endif -->
14
- <!-- #ifndef H5 -->
15
- <view class="uni-table" :style="{ 'min-width': minWidth + 'px' }" :class="{ 'table--stripe': stripe }">
16
- <slot></slot>
17
- <view v-if="noData" class="uni-table-loading">
18
- <view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
19
- </view>
20
- <view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }">
21
- <div class="uni-table--loader"></div>
22
- </view>
23
- </view>
24
- <!-- #endif -->
25
- </view>
26
- </template>
27
-
28
- <script>
29
- /**
30
- * Table 表格
31
- * @description 用于展示多条结构类似的数据
32
- * @tutorial https://ext.dcloud.net.cn/plugin?id=3270
33
- * @property {Boolean} border 是否带有纵向边框
34
- * @property {Boolean} stripe 是否显示斑马线
35
- * @property {Boolean} type 是否开启多选
36
- * @property {String} emptyText 空数据时显示的文本内容
37
- * @property {Boolean} loading 显示加载中
38
- * @event {Function} selection-change 开启多选时,当选择项发生变化时会触发该事件
39
- */
40
- export default {
41
- name: 'uniTable',
42
- options: {
43
- virtualHost: true
44
- },
45
- emits: ['selection-change'],
46
- props: {
47
- data: {
48
- type: Array,
49
- default () {
50
- return []
51
- }
52
- },
53
- // 是否有竖线
54
- border: {
55
- type: Boolean,
56
- default: false
57
- },
58
- // 是否显示斑马线
59
- stripe: {
60
- type: Boolean,
61
- default: false
62
- },
63
- // 多选
64
- type: {
65
- type: String,
66
- default: ''
67
- },
68
- // 没有更多数据
69
- emptyText: {
70
- type: String,
71
- default: '没有更多数据'
72
- },
73
- loading: {
74
- type: Boolean,
75
- default: false
76
- },
77
- rowKey: {
78
- type: String,
79
- default: ''
80
- }
81
- },
82
- data() {
83
- return {
84
- noData: true,
85
- minWidth: 0,
86
- multiTableHeads: []
87
- }
88
- },
89
- watch: {
90
- loading(val) {},
91
- data(newVal) {
92
- let theadChildren = this.theadChildren
93
- let rowspan = 1
94
- if (this.theadChildren) {
95
- rowspan = this.theadChildren.rowspan
96
- }
97
-
98
- // this.trChildren.length - rowspan
99
- this.noData = false
100
- // this.noData = newVal.length === 0
101
- }
102
- },
103
- created() {
104
- // 定义tr的实例数组
105
- this.trChildren = []
106
- this.thChildren = []
107
- this.theadChildren = null
108
- this.backData = []
109
- this.backIndexData = []
110
- },
111
-
112
- methods: {
113
- isNodata() {
114
- let theadChildren = this.theadChildren
115
- let rowspan = 1
116
- if (this.theadChildren) {
117
- rowspan = this.theadChildren.rowspan
118
- }
119
- this.noData = this.trChildren.length - rowspan <= 0
120
- },
121
- /**
122
- * 选中所有
123
- */
124
- selectionAll() {
125
- let startIndex = 1
126
- let theadChildren = this.theadChildren
127
- if (!this.theadChildren) {
128
- theadChildren = this.trChildren[0]
129
- } else {
130
- startIndex = theadChildren.rowspan - 1
131
- }
132
- let isHaveData = this.data && this.data.length.length > 0
133
- theadChildren.checked = true
134
- theadChildren.indeterminate = false
135
- this.trChildren.forEach((item, index) => {
136
- if (!item.disabled) {
137
- item.checked = true
138
- if (isHaveData && item.keyValue) {
139
- const row = this.data.find(v => v[this.rowKey] === item.keyValue)
140
- if (!this.backData.find(v => v[this.rowKey] === row[this.rowKey])) {
141
- this.backData.push(row)
142
- }
143
- }
144
- if (index > (startIndex - 1) && this.backIndexData.indexOf(index - startIndex) === -1) {
145
- this.backIndexData.push(index - startIndex)
146
- }
147
- }
148
- })
149
- // this.backData = JSON.parse(JSON.stringify(this.data))
150
- this.$emit('selection-change', {
151
- detail: {
152
- value: this.backData,
153
- index: this.backIndexData
154
- }
155
- })
156
- },
157
- /**
158
- * 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
159
- */
160
- toggleRowSelection(row, selected) {
161
- // if (!this.theadChildren) return
162
- row = [].concat(row)
163
-
164
- this.trChildren.forEach((item, index) => {
165
- // if (item.keyValue) {
166
-
167
- const select = row.findIndex(v => {
168
- //
169
- if (typeof v === 'number') {
170
- return v === index - 1
171
- } else {
172
- return v[this.rowKey] === item.keyValue
173
- }
174
- })
175
- let ischeck = item.checked
176
- if (select !== -1) {
177
- if (typeof selected === 'boolean') {
178
- item.checked = selected
179
- } else {
180
- item.checked = !item.checked
181
- }
182
- if (ischeck !== item.checked) {
183
- this.check(item.rowData || item, item.checked, item.rowData ? item.keyValue : null, true)
184
- }
185
- }
186
- // }
187
- })
188
- this.$emit('selection-change', {
189
- detail: {
190
- value: this.backData,
191
- index: this.backIndexData
192
- }
193
- })
194
- },
195
-
196
- /**
197
- * 用于多选表格,清空用户的选择
198
- */
199
- clearSelection() {
200
- let theadChildren = this.theadChildren
201
- if (!this.theadChildren) {
202
- theadChildren = this.trChildren[0]
203
- }
204
- // if (!this.theadChildren) return
205
- theadChildren.checked = false
206
- theadChildren.indeterminate = false
207
- this.trChildren.forEach(item => {
208
- // if (item.keyValue) {
209
- item.checked = false
210
- // }
211
- })
212
- this.backData = []
213
- this.backIndexData = []
214
- this.$emit('selection-change', {
215
- detail: {
216
- value: [],
217
- index: []
218
- }
219
- })
220
- },
221
- /**
222
- * 用于多选表格,切换所有行的选中状态
223
- */
224
- toggleAllSelection() {
225
- let list = []
226
- let startIndex = 1
227
- let theadChildren = this.theadChildren
228
- if (!this.theadChildren) {
229
- theadChildren = this.trChildren[0]
230
- } else {
231
- startIndex = theadChildren.rowspan - 1
232
- }
233
- this.trChildren.forEach((item, index) => {
234
- if (!item.disabled) {
235
- if (index > (startIndex - 1)) {
236
- list.push(index - startIndex)
237
- }
238
- }
239
- })
240
- this.toggleRowSelection(list)
241
- },
242
-
243
- /**
244
- * 选中\取消选中
245
- * @param {Object} child
246
- * @param {Object} check
247
- * @param {Object} rowValue
248
- */
249
- check(child, check, keyValue, emit) {
250
- let theadChildren = this.theadChildren
251
- if (!this.theadChildren) {
252
- theadChildren = this.trChildren[0]
253
- }
254
-
255
-
256
-
257
- let childDomIndex = this.trChildren.findIndex((item, index) => child === item)
258
- if (childDomIndex < 0) {
259
- childDomIndex = this.data.findIndex(v => v[this.rowKey] === keyValue) + 1
260
- }
261
- const dataLen = this.trChildren.filter(v => !v.disabled && v.keyValue).length
262
- if (childDomIndex === 0) {
263
- check ? this.selectionAll() : this.clearSelection()
264
- return
265
- }
266
-
267
- if (check) {
268
- if (keyValue) {
269
- this.backData.push(child)
270
- }
271
- this.backIndexData.push(childDomIndex - 1)
272
- } else {
273
- const index = this.backData.findIndex(v => v[this.rowKey] === keyValue)
274
- const idx = this.backIndexData.findIndex(item => item === childDomIndex - 1)
275
- if (keyValue) {
276
- this.backData.splice(index, 1)
277
- }
278
- this.backIndexData.splice(idx, 1)
279
- }
280
-
281
- const domCheckAll = this.trChildren.find((item, index) => index > 0 && !item.checked && !item.disabled)
282
- if (!domCheckAll) {
283
- theadChildren.indeterminate = false
284
- theadChildren.checked = true
285
- } else {
286
- theadChildren.indeterminate = true
287
- theadChildren.checked = false
288
- }
289
-
290
- if (this.backIndexData.length === 0) {
291
- theadChildren.indeterminate = false
292
- }
293
-
294
- if (!emit) {
295
- this.$emit('selection-change', {
296
- detail: {
297
- value: this.backData,
298
- index: this.backIndexData
299
- }
300
- })
301
- }
302
- }
303
- }
304
- }
305
- </script>
306
-
307
- <style scoped>
308
- @charset "UTF-8";
309
-
310
- .uni-table-scroll {
311
- width: 100%;
312
- /* #ifndef APP-NVUE */
313
- overflow-x: auto;
314
- /* #endif */
315
- }
316
-
317
- .uni-table {
318
- position: relative;
319
- width: 100%;
320
- border-radius: 5px;
321
- background-color: #fff;
322
- /* #ifndef APP-NVUE */
323
- box-sizing: border-box;
324
- display: table;
325
- overflow-x: auto;
326
- /* #endif */
327
- }
328
-
329
- .uni-table ::v-deep .uni-table-tr:nth-child(n+2):hover {
330
- background-color: #f5f7fa;
331
- }
332
-
333
- .uni-table ::v-deep .uni-table-thead .uni-table-tr:hover {
334
- background-color: #fafafa;
335
- }
336
-
337
- .table--border {
338
- border: 1px #ebeef5 solid;
339
- border-right: none;
340
- }
341
-
342
- .border-none {
343
- /* #ifndef APP-NVUE */
344
- border-bottom: none;
345
- /* #endif */
346
- }
347
-
348
- .table--stripe {
349
- /* #ifndef APP-NVUE */
350
- /* #endif */
351
- }
352
-
353
- .table--stripe ::v-deep .uni-table-tr:nth-child(2n+3) {
354
- background-color: #fafafa;
355
- }
356
-
357
- /* 表格加载、无数据样式 */
358
- .uni-table-loading {
359
- position: relative;
360
- /* #ifndef APP-NVUE */
361
- display: table-row;
362
- /* #endif */
363
- height: 50px;
364
- line-height: 50px;
365
- overflow: hidden;
366
- box-sizing: border-box;
367
- }
368
-
369
- .empty-border {
370
- border-right: 1px #ebeef5 solid;
371
- }
372
-
373
- .uni-table-text {
374
- position: absolute;
375
- right: 0;
376
- left: 0;
377
- text-align: center;
378
- font-size: 14px;
379
- color: #999;
380
- }
381
-
382
- .uni-table-mask {
383
- position: absolute;
384
- top: 0;
385
- bottom: 0;
386
- left: 0;
387
- right: 0;
388
- background-color: rgba(255, 255, 255, 0.8);
389
- z-index: 99;
390
- /* #ifndef APP-NVUE */
391
- display: flex;
392
- margin: auto;
393
- transition: all 0.5s;
394
- /* #endif */
395
- justify-content: center;
396
- align-items: center;
397
- }
398
-
399
- .uni-table--loader {
400
- width: 30px;
401
- height: 30px;
402
- border: 2px solid #aaa;
403
- border-radius: 50%;
404
- /* #ifndef APP-NVUE */
405
- animation: 2s uni-table--loader linear infinite;
406
- /* #endif */
407
- position: relative;
408
- }
409
-
410
- @keyframes uni-table--loader {
411
- 0% {
412
- transform: rotate(360deg);
413
- }
414
-
415
- 10% {
416
- border-left-color: transparent;
417
- }
418
-
419
- 20% {
420
- border-bottom-color: transparent;
421
- }
422
-
423
- 30% {
424
- border-right-color: transparent;
425
- }
426
-
427
- 40% {
428
- border-top-color: transparent;
429
- }
430
-
431
- 50% {
432
- transform: rotate(0deg);
433
- }
434
-
435
- 60% {
436
- border-top-color: transparent;
437
- }
438
-
439
- 70% {
440
- border-left-color: transparent;
441
- }
442
-
443
- 80% {
444
- border-bottom-color: transparent;
445
- }
446
-
447
- 90% {
448
- border-right-color: transparent;
449
- }
450
-
451
- 100% {
452
- transform: rotate(-360deg);
453
- }
454
- }
455
- </style>
@@ -1,283 +0,0 @@
1
- <template>
2
- <text class="uni-tag" v-if="text" :class="classes" :style="customStyle" @click="onClick">
3
- <slot />{{text}}
4
- <slot name="right" />
5
- </text>
6
- </template>
7
-
8
- <script>
9
- /**
10
- * Tag 标签
11
- * @description 用于展示1个或多个文字标签,可点击切换选中、不选中的状态
12
- * @tutorial https://ext.dcloud.net.cn/plugin?id=35
13
- * @property {String} text 标签内容
14
- * @property {String} size = [normal|small] 大小尺寸
15
- * @value normal 正常
16
- * @value small 小尺寸
17
- * @property {String} type = [default|primary|success|warning|error|royal] 颜色类型
18
- * @value default 灰色
19
- * @value primary 蓝色
20
- * @value success 绿色
21
- * @value warning 黄色
22
- * @value error 红色
23
- * @value royal 紫色
24
- * @property {Boolean} disabled = [true|false] 是否为禁用状态
25
- * @property {Boolean} inverted = [true|false] 是否无需背景颜色(空心标签)
26
- * @property {Boolean} circle = [true|false] 是否为圆角
27
- * @event {Function} click 点击 Tag 触发事件
28
- */
29
-
30
- export default {
31
- name: "UniTag",
32
- emits: ['click'],
33
- props: {
34
- type: {
35
- // 标签类型default、primary、success、warning、error、royal
36
- type: String,
37
- default: "default"
38
- },
39
- size: {
40
- // 标签大小 normal, small
41
- type: String,
42
- default: "normal"
43
- },
44
- // 标签内容
45
- text: {
46
- type: String,
47
- default: ""
48
- },
49
- disabled: {
50
- // 是否为禁用状态
51
- type: [Boolean, String],
52
- default: false
53
- },
54
- inverted: {
55
- // 是否为空心
56
- type: [Boolean, String],
57
- default: false
58
- },
59
- circle: {
60
- // 是否为圆角样式
61
- type: [Boolean, String],
62
- default: false
63
- },
64
- mark: {
65
- // 是否为标记样式
66
- type: [Boolean, String],
67
- default: false
68
- },
69
- customStyle: {
70
- type: String,
71
- default: ''
72
- }
73
- },
74
- computed: {
75
- classes() {
76
- const {
77
- type,
78
- disabled,
79
- inverted,
80
- circle,
81
- mark,
82
- size,
83
- isTrue
84
- } = this
85
- const classArr = [
86
- 'uni-tag--' + type,
87
- isTrue(disabled) ? 'uni-tag--disabled' : '',
88
- isTrue(inverted) ? type + '-uni-tag--inverted' : '',
89
- isTrue(circle) ? 'uni-tag--circle' : '',
90
- isTrue(mark) ? 'uni-tag--mark' : '',
91
- 'uni-tag--' + size,
92
- type === 'default' ? 'uni-tag--default' : 'uni-tag-text',
93
- isTrue(inverted) ? 'uni-tag-text--' + type : '',
94
- size === 'small' ? 'uni-tag-text--small' : ''
95
- ]
96
- return classArr.join(' ')
97
- }
98
- },
99
- methods: {
100
- isTrue(value) {
101
- return value === true || value === 'true'
102
- },
103
- onClick() {
104
- if (this.isTrue(this.disabled)) return
105
- this.$emit("click");
106
- }
107
- }
108
- };
109
- </script>
110
-
111
- <style scoped>
112
- .uni-tag {
113
- /* #ifndef APP-NVUE */
114
- display: inline-block;
115
- /* #endif */
116
- /* #ifdef APP-NVUE */
117
- align-self: flex-start;
118
- /* #endif */
119
- padding: 0px 16px;
120
- line-height: 30px;
121
- color: #333;
122
- border-radius: 3px;
123
- background-color: #f8f8f8;
124
- border-width: 1rpx;
125
- border-style: solid;
126
- border-color: #f8f8f8;
127
- /* #ifdef H5 */
128
- cursor: pointer;
129
- /* #endif */
130
- }
131
-
132
- .uni-tag--circle {
133
- border-radius: 15px;
134
- }
135
-
136
- .uni-tag--mark {
137
- border-top-left-radius: 0;
138
- border-bottom-left-radius: 0;
139
- border-top-right-radius: 15px;
140
- border-bottom-right-radius: 15px;
141
- }
142
-
143
- .uni-tag--disabled {
144
- opacity: 0.5;
145
- /* #ifdef H5 */
146
- cursor: not-allowed;
147
- /* #endif */
148
- }
149
-
150
- .uni-tag--small {
151
- height: 20px;
152
- padding: 0px 8px;
153
- line-height: 20px;
154
- font-size: 12px;
155
- }
156
-
157
- .uni-tag--default {
158
- color: #333;
159
- font-size: 14px;
160
- }
161
-
162
- .uni-tag--royal {
163
- color: #333;
164
- font-size: 14px;
165
- }
166
-
167
- .uni-tag-text--small {
168
- font-size: 12px;
169
- }
170
-
171
- .uni-tag-text {
172
- color: #fff;
173
- font-size: 14px;
174
- }
175
-
176
- .uni-tag-text--primary {
177
- color: #007aff;
178
- }
179
-
180
- .uni-tag-text--success {
181
- color: #4cd964;
182
- }
183
-
184
- .uni-tag-text--warning {
185
- color: #f0ad4e;
186
- }
187
-
188
- .uni-tag-text--error {
189
- color: #dd524d;
190
- }
191
-
192
- .uni-tag-text--royal {
193
- color: #4335d6;
194
- }
195
-
196
- .uni-tag--primary {
197
- color: #fff;
198
- background-color: #007aff;
199
- border-width: 1rpx;
200
- border-style: solid;
201
- border-color: #007aff;
202
- }
203
-
204
- .primary-uni-tag--inverted {
205
- color: #007aff;
206
- background-color: #ffffff;
207
- border-width: 1rpx;
208
- border-style: solid;
209
- border-color: #007aff;
210
- }
211
-
212
- .uni-tag--success {
213
- color: #fff;
214
- background-color: #4cd964;
215
- border-width: 1rpx;
216
- border-style: solid;
217
- border-color: #4cd964;
218
- }
219
-
220
- .success-uni-tag--inverted {
221
- color: #4cd964;
222
- background-color: #ffffff;
223
- border-width: 1rpx;
224
- border-style: solid;
225
- border-color: #4cd964;
226
- }
227
-
228
- .uni-tag--warning {
229
- color: #fff;
230
- background-color: #f0ad4e;
231
- border-width: 1rpx;
232
- border-style: solid;
233
- border-color: #f0ad4e;
234
- }
235
-
236
- .warning-uni-tag--inverted {
237
- color: #f0ad4e;
238
- background-color: #ffffff;
239
- border-width: 1rpx;
240
- border-style: solid;
241
- border-color: #f0ad4e;
242
- }
243
-
244
- .uni-tag--error {
245
- color: #fff;
246
- background-color: #dd524d;
247
- border-width: 1rpx;
248
- border-style: solid;
249
- border-color: #dd524d;
250
- }
251
-
252
- .error-uni-tag--inverted {
253
- color: #dd524d;
254
- background-color: #ffffff;
255
- border-width: 1rpx;
256
- border-style: solid;
257
- border-color: #dd524d;
258
- }
259
-
260
- .uni-tag--royal {
261
- color: #fff;
262
- background-color: #4335d6;
263
- border-width: 1rpx;
264
- border-style: solid;
265
- border-color: #4335d6;
266
- }
267
-
268
- .royal-uni-tag--inverted {
269
- color: #4335d6;
270
- background-color: #ffffff;
271
- border-width: 1rpx;
272
- border-style: solid;
273
- border-color: #4335d6;
274
- }
275
-
276
- .uni-tag--inverted {
277
- color: #333;
278
- background-color: #ffffff;
279
- border-width: 1rpx;
280
- border-style: solid;
281
- border-color: #f8f8f8;
282
- }
283
- </style>