@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,443 +0,0 @@
1
- <template>
2
- <view class="uni-cursor-point">
3
- <view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0" :class="{
4
- 'uni-fab--leftBottom': leftBottom,
5
- 'uni-fab--rightBottom': rightBottom,
6
- 'uni-fab--leftTop': leftTop,
7
- 'uni-fab--rightTop': rightTop
8
- }" class="uni-fab">
9
- <view :class="{
10
- 'uni-fab__content--left': horizontal === 'left',
11
- 'uni-fab__content--right': horizontal === 'right',
12
- 'uni-fab__content--flexDirection': direction === 'vertical',
13
- 'uni-fab__content--flexDirectionStart': flexDirectionStart,
14
- 'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
15
- 'uni-fab__content--other-platform': !isAndroidNvue
16
- }" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }" class="uni-fab__content" elevation="5">
17
- <view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
18
- <view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }" class="uni-fab__item" @click="_onItemClick(index, item)">
19
- <image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image" mode="widthFix" />
20
- <text class="uni-fab__item-text" :style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
21
- </view>
22
- <view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
23
- </view>
24
- </view>
25
- <view :class="{
26
- 'uni-fab__circle--leftBottom': leftBottom,
27
- 'uni-fab__circle--rightBottom': rightBottom,
28
- 'uni-fab__circle--leftTop': leftTop,
29
- 'uni-fab__circle--rightTop': rightTop,
30
- 'uni-fab__content--other-platform': !isAndroidNvue
31
- }" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor }" @click="_onClick">
32
- <view class="fab-circle-v" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
33
- <view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
34
- </view>
35
- </view>
36
- </template>
37
-
38
- <script>
39
- let platform = 'other'
40
- // #ifdef APP-NVUE
41
- platform = uni.getSystemInfoSync().platform
42
- // #endif
43
-
44
- /**
45
- * Fab 悬浮按钮
46
- * @description 点击可展开一个图形按钮菜单
47
- * @tutorial https://ext.dcloud.net.cn/plugin?id=144
48
- * @property {Object} pattern 可选样式配置项
49
- * @property {Object} horizontal = [left | right] 水平对齐方式
50
- * @value left 左对齐
51
- * @value right 右对齐
52
- * @property {Object} vertical = [bottom | top] 垂直对齐方式
53
- * @value bottom 下对齐
54
- * @value top 上对齐
55
- * @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
56
- * @value horizontal 水平显示
57
- * @value vertical 垂直显示
58
- * @property {Array} content 展开菜单内容配置项
59
- * @property {Boolean} popMenu 是否使用弹出菜单
60
- * @event {Function} trigger 展开菜单点击事件,返回点击信息
61
- * @event {Function} fabClick 悬浮按钮点击事件
62
- */
63
- export default {
64
- name: 'UniFab',
65
- emits: ['fabClick', 'trigger'],
66
- props: {
67
- pattern: {
68
- type: Object,
69
- default () {
70
- return {}
71
- }
72
- },
73
- horizontal: {
74
- type: String,
75
- default: 'left'
76
- },
77
- vertical: {
78
- type: String,
79
- default: 'bottom'
80
- },
81
- direction: {
82
- type: String,
83
- default: 'horizontal'
84
- },
85
- content: {
86
- type: Array,
87
- default () {
88
- return []
89
- }
90
- },
91
- show: {
92
- type: Boolean,
93
- default: false
94
- },
95
- popMenu: {
96
- type: Boolean,
97
- default: true
98
- }
99
- },
100
- data() {
101
- return {
102
- fabShow: false,
103
- isShow: false,
104
- isAndroidNvue: platform === 'android',
105
- styles: {
106
- color: '#3c3e49',
107
- selectedColor: '#007AFF',
108
- backgroundColor: '#fff',
109
- buttonColor: '#007AFF'
110
- }
111
- }
112
- },
113
- computed: {
114
- contentWidth(e) {
115
- return (this.content.length + 1) * 55 + 10 + 'px'
116
- },
117
- contentWidthMin() {
118
- return 55 + 'px'
119
- },
120
- // 动态计算宽度
121
- boxWidth() {
122
- return this.getPosition(3, 'horizontal')
123
- },
124
- // 动态计算高度
125
- boxHeight() {
126
- return this.getPosition(3, 'vertical')
127
- },
128
- // 计算左下位置
129
- leftBottom() {
130
- return this.getPosition(0, 'left', 'bottom')
131
- },
132
- // 计算右下位置
133
- rightBottom() {
134
- return this.getPosition(0, 'right', 'bottom')
135
- },
136
- // 计算左上位置
137
- leftTop() {
138
- return this.getPosition(0, 'left', 'top')
139
- },
140
- rightTop() {
141
- return this.getPosition(0, 'right', 'top')
142
- },
143
- flexDirectionStart() {
144
- return this.getPosition(1, 'vertical', 'top')
145
- },
146
- flexDirectionEnd() {
147
- return this.getPosition(1, 'vertical', 'bottom')
148
- },
149
- horizontalLeft() {
150
- return this.getPosition(2, 'horizontal', 'left')
151
- },
152
- horizontalRight() {
153
- return this.getPosition(2, 'horizontal', 'right')
154
- }
155
- },
156
- watch: {
157
- pattern(newValue, oldValue) {
158
- //console.log(JSON.stringify(newValue))
159
- this.styles = Object.assign({}, this.styles, newValue)
160
- }
161
- },
162
- created() {
163
- this.isShow = this.show
164
- if (this.top === 0) {
165
- this.fabShow = true
166
- }
167
- // 初始化样式
168
- this.styles = Object.assign({}, this.styles, this.pattern)
169
- },
170
- methods: {
171
- _onClick() {
172
- this.$emit('fabClick')
173
- if (!this.popMenu) {
174
- return
175
- }
176
- this.isShow = !this.isShow
177
- },
178
- open() {
179
- this.isShow = true
180
- },
181
- close() {
182
- this.isShow = false
183
- },
184
- /**
185
- * 按钮点击事件
186
- */
187
- _onItemClick(index, item) {
188
- this.$emit('trigger', {
189
- index,
190
- item
191
- })
192
- },
193
- /**
194
- * 获取 位置信息
195
- */
196
- getPosition(types, paramA, paramB) {
197
- if (types === 0) {
198
- return this.horizontal === paramA && this.vertical === paramB
199
- } else if (types === 1) {
200
- return this.direction === paramA && this.vertical === paramB
201
- } else if (types === 2) {
202
- return this.direction === paramA && this.horizontal === paramB
203
- } else {
204
- return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
205
- }
206
- }
207
- }
208
- }
209
- </script>
210
-
211
- <style scoped>
212
- .uni-fab {
213
- position: fixed;
214
- /* #ifndef APP-NVUE */
215
- display: flex;
216
- /* #endif */
217
- justify-content: center;
218
- align-items: center;
219
- z-index: 10;
220
- }
221
-
222
- .uni-cursor-point {
223
- /* #ifdef H5 */
224
- cursor: pointer;
225
- /* #endif */
226
- }
227
-
228
- .uni-fab--active {
229
- opacity: 1;
230
- }
231
-
232
- .uni-fab--leftBottom {
233
- left: 5px;
234
- bottom: 20px;
235
- /* #ifdef H5 */
236
- left: calc(5px + var(--window-left));
237
- bottom: calc(20px + var(--window-bottom));
238
- /* #endif */
239
- padding: 10px;
240
- }
241
-
242
- .uni-fab--leftTop {
243
- left: 5px;
244
- top: 30px;
245
- /* #ifdef H5 */
246
- left: calc(5px + var(--window-left));
247
- top: calc(30px + var(--window-top));
248
- /* #endif */
249
- padding: 10px;
250
- }
251
-
252
- .uni-fab--rightBottom {
253
- right: 5px;
254
- bottom: 20px;
255
- /* #ifdef H5 */
256
- right: calc(5px + var(--window-right));
257
- bottom: calc(20px + var(--window-bottom));
258
- /* #endif */
259
- padding: 10px;
260
- }
261
-
262
- .uni-fab--rightTop {
263
- right: 5px;
264
- top: 30px;
265
- /* #ifdef H5 */
266
- right: calc(5px + var(--window-right));
267
- top: calc(30px + var(--window-top));
268
- /* #endif */
269
- padding: 10px;
270
- }
271
-
272
- .uni-fab__circle {
273
- position: fixed;
274
- /* #ifndef APP-NVUE */
275
- display: flex;
276
- /* #endif */
277
- justify-content: center;
278
- align-items: center;
279
- width: 55px;
280
- height: 55px;
281
- background-color: #3c3e49;
282
- border-radius: 55px;
283
- z-index: 11;
284
- }
285
-
286
- .uni-fab__circle--leftBottom {
287
- left: 15px;
288
- bottom: 30px;
289
- /* #ifdef H5 */
290
- left: calc(15px + var(--window-left));
291
- bottom: calc(30px + var(--window-bottom));
292
- /* #endif */
293
- }
294
-
295
- .uni-fab__circle--leftTop {
296
- left: 15px;
297
- top: 40px;
298
- /* #ifdef H5 */
299
- left: calc(15px + var(--window-left));
300
- top: calc(40px + var(--window-top));
301
- /* #endif */
302
- }
303
-
304
- .uni-fab__circle--rightBottom {
305
- right: 15px;
306
- bottom: 30px;
307
- /* #ifdef H5 */
308
- right: calc(15px + var(--window-right));
309
- bottom: calc(30px + var(--window-bottom));
310
- /* #endif */
311
- }
312
-
313
- .uni-fab__circle--rightTop {
314
- right: 15px;
315
- top: 40px;
316
- /* #ifdef H5 */
317
- right: calc(15px + var(--window-right));
318
- top: calc(40px + var(--window-top));
319
- /* #endif */
320
- }
321
-
322
- .uni-fab__circle--left {
323
- left: 0;
324
- }
325
-
326
- .uni-fab__circle--right {
327
- right: 0;
328
- }
329
-
330
- .uni-fab__circle--top {
331
- top: 0;
332
- }
333
-
334
- .uni-fab__circle--bottom {
335
- bottom: 0;
336
- }
337
-
338
- .uni-fab__plus {
339
- font-weight: bold;
340
- }
341
-
342
- .fab-circle-v {
343
- position: absolute;
344
- width: 3px;
345
- height: 31px;
346
- left: 26px;
347
- top: 12px;
348
- background-color: white;
349
- transform: rotate(0deg);
350
- transition: transform 0.3s;
351
- }
352
-
353
- .fab-circle-h {
354
- position: absolute;
355
- width: 31px;
356
- height: 3px;
357
- left: 12px;
358
- top: 26px;
359
- background-color: white;
360
- transform: rotate(0deg);
361
- transition: transform 0.3s;
362
- }
363
-
364
- .uni-fab__plus--active {
365
- transform: rotate(135deg);
366
- }
367
-
368
- .uni-fab__content {
369
- /* #ifndef APP-NVUE */
370
- box-sizing: border-box;
371
- display: flex;
372
- /* #endif */
373
- flex-direction: row;
374
- border-radius: 55px;
375
- overflow: hidden;
376
- transition-property: width, height;
377
- transition-duration: 0.2s;
378
- width: 55px;
379
- border-color: #DDDDDD;
380
- border-width: 1rpx;
381
- border-style: solid;
382
- }
383
-
384
- .uni-fab__content--other-platform {
385
- border-width: 0px;
386
- box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
387
- }
388
-
389
- .uni-fab__content--left {
390
- justify-content: flex-start;
391
- }
392
-
393
- .uni-fab__content--right {
394
- justify-content: flex-end;
395
- }
396
-
397
- .uni-fab__content--flexDirection {
398
- flex-direction: column;
399
- justify-content: flex-end;
400
- }
401
-
402
- .uni-fab__content--flexDirectionStart {
403
- flex-direction: column;
404
- justify-content: flex-start;
405
- }
406
-
407
- .uni-fab__content--flexDirectionEnd {
408
- flex-direction: column;
409
- justify-content: flex-end;
410
- }
411
-
412
- .uni-fab__item {
413
- /* #ifndef APP-NVUE */
414
- display: flex;
415
- /* #endif */
416
- flex-direction: column;
417
- justify-content: center;
418
- align-items: center;
419
- width: 55px;
420
- height: 55px;
421
- opacity: 0;
422
- transition: opacity 0.2s;
423
- }
424
-
425
- .uni-fab__item--active {
426
- opacity: 1;
427
- }
428
-
429
- .uni-fab__item-image {
430
- width: 25px;
431
- height: 25px;
432
- margin-bottom: 3px;
433
- }
434
-
435
- .uni-fab__item-text {
436
- color: #FFFFFF;
437
- font-size: 12px;
438
- }
439
-
440
- .uni-fab__item--first {
441
- width: 55px;
442
- }
443
- </style>
@@ -1,136 +0,0 @@
1
- <template>
2
- <view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]" @click="onClick" class="uni-fav">
3
- <!-- #ifdef MP-ALIPAY -->
4
- <view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
5
- <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
6
- </view>
7
- <!-- #endif -->
8
- <!-- #ifndef MP-ALIPAY -->
9
- <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled" v-if="!checked && (star === true || star === 'true')" />
10
- <!-- #endif -->
11
- <text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentText.contentFav : contentText.contentDefault }}</text>
12
- </view>
13
- </template>
14
-
15
- <script>
16
- /**
17
- * Fav 收藏按钮
18
- * @description 用于收藏功能,可点击切换选中、不选中的状态
19
- * @tutorial https://ext.dcloud.net.cn/plugin?id=864
20
- * @property {Boolean} star = [true|false] 按钮是否带星星
21
- * @property {String} bgColor 未收藏时的背景色
22
- * @property {String} bgColorChecked 已收藏时的背景色
23
- * @property {String} fgColor 未收藏时的文字颜色
24
- * @property {String} fgColorChecked 已收藏时的文字颜色
25
- * @property {Boolean} circle = [true|false] 是否为圆角
26
- * @property {Boolean} checked = [true|false] 是否为已收藏
27
- * @property {Object} contentText = [true|false] 收藏按钮文字
28
- * @event {Function} click 点击 fav按钮触发事件
29
- * @example <uni-fav :checked="true"/>
30
- */
31
- export default {
32
- name: "UniFav",
33
- // TODO 兼容 vue3,需要注册事件
34
- emits: ['click'],
35
- props: {
36
- star: {
37
- type: [Boolean, String],
38
- default: true
39
- },
40
- bgColor: {
41
- type: String,
42
- default: "#eeeeee"
43
- },
44
- fgColor: {
45
- type: String,
46
- default: "#666666"
47
- },
48
- bgColorChecked: {
49
- type: String,
50
- default: "#007aff"
51
- },
52
- fgColorChecked: {
53
- type: String,
54
- default: "#FFFFFF"
55
- },
56
- circle: {
57
- type: [Boolean, String],
58
- default: false
59
- },
60
- checked: {
61
- type: Boolean,
62
- default: false
63
- },
64
- contentText: {
65
- type: Object,
66
- default () {
67
- return {
68
- contentDefault: "收藏",
69
- contentFav: "已收藏"
70
- };
71
- }
72
- }
73
- },
74
- watch: {
75
- checked() {
76
- if (uni.report) {
77
- if (this.checked) {
78
- uni.report("收藏", "收藏");
79
- } else {
80
- uni.report("取消收藏", "取消收藏");
81
- }
82
- }
83
- }
84
- },
85
- methods: {
86
- onClick() {
87
- this.$emit("click");
88
- }
89
- }
90
- };
91
- </script>
92
-
93
- <style scoped>
94
- .uni-fav {
95
- /* #ifndef APP-NVUE */
96
- display: flex;
97
- /* #endif */
98
- flex-direction: row;
99
- align-items: center;
100
- justify-content: center;
101
- width: 60px;
102
- height: 25px;
103
- line-height: 25px;
104
- text-align: center;
105
- border-radius: 3px;
106
- /* #ifdef H5 */
107
- cursor: pointer;
108
- /* #endif */
109
- }
110
-
111
- .uni-fav--circle {
112
- border-radius: 30px;
113
- }
114
-
115
- .uni-fav-star {
116
- /* #ifndef APP-NVUE */
117
- display: flex;
118
- /* #endif */
119
- height: 25px;
120
- line-height: 24px;
121
- margin-right: 3px;
122
- align-items: center;
123
- justify-content: center;
124
- }
125
-
126
- .uni-fav-text {
127
- /* #ifndef APP-NVUE */
128
- display: flex;
129
- /* #endif */
130
- height: 25px;
131
- line-height: 25px;
132
- align-items: center;
133
- justify-content: center;
134
- font-size: 14px;
135
- }
136
- </style>