@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
@@ -0,0 +1,429 @@
1
+ <template>
2
+ <view
3
+ v-if="showPopup"
4
+ class="uni-popup"
5
+ :class="[popupstyle, isDesktop ? 'fixforpc-z-index' : '']"
6
+ @touchmove.stop.prevent="clear"
7
+ >
8
+ <view @touchstart="touchstart">
9
+ <cv-transition
10
+ key="1"
11
+ v-if="maskShow"
12
+ name="mask"
13
+ mode-class="fade"
14
+ :styles="maskClass"
15
+ :duration="duration"
16
+ :show="showTrans"
17
+ @click="onTap"
18
+ />
19
+ <cv-transition
20
+ key="2"
21
+ :mode-class="ani"
22
+ name="content"
23
+ :styles="transClass"
24
+ :duration="duration"
25
+ :show="showTrans"
26
+ @click="onTap"
27
+ >
28
+ <view class="uni-popup__wrapper" :style="{ backgroundColor: bg }" :class="[popupstyle]" @click="clear">
29
+ <slot />
30
+ </view>
31
+ </cv-transition>
32
+ </view>
33
+ <!-- #ifdef H5 -->
34
+ <keypress v-if="maskShow" @esc="onTap" />
35
+ <!-- #endif -->
36
+ </view>
37
+ </template>
38
+
39
+ <script>
40
+ // #ifdef H5
41
+ import keypress from './keypress.js';
42
+ // #endif
43
+
44
+ /**
45
+ * PopUp 弹出层
46
+ * @description 弹出层组件,为了解决遮罩弹层的问题
47
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=329
48
+ * @property {String} type = [top|center|bottom|left|right|message|dialog|share] 弹出方式
49
+ * @value top 顶部弹出
50
+ * @value center 中间弹出
51
+ * @value bottom 底部弹出
52
+ * @value left 左侧弹出
53
+ * @value right 右侧弹出
54
+ * @value message 消息提示
55
+ * @value dialog 对话框
56
+ * @value share 底部分享示例
57
+ * @property {Boolean} animation = [ture|false] 是否开启动画
58
+ * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
59
+ * @property {String} backgroundColor 主窗口背景色
60
+ * @property {Boolean} safeArea 是否适配底部安全区
61
+ * @event {Function} change 打开关闭弹窗触发,e={show: false}
62
+ */
63
+
64
+ export default {
65
+ name: 'cvPopup',
66
+ components: {
67
+ // #ifdef H5
68
+ keypress
69
+ // #endif
70
+ },
71
+ emits: ['change', 'maskClick'],
72
+ props: {
73
+ // 开启动画
74
+ animation: {
75
+ type: Boolean,
76
+ default: true
77
+ },
78
+ // 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
79
+ // message: 消息提示 ; dialog : 对话框
80
+ type: {
81
+ type: String,
82
+ default: 'center'
83
+ },
84
+ // maskClick
85
+ maskClick: {
86
+ type: Boolean,
87
+ default: true
88
+ },
89
+ backgroundColor: {
90
+ type: String,
91
+ default: 'none'
92
+ },
93
+ safeArea: {
94
+ type: Boolean,
95
+ default: true
96
+ }
97
+ },
98
+
99
+ watch: {
100
+ /**
101
+ * 监听type类型
102
+ */
103
+ type: {
104
+ handler: function (type) {
105
+ if (!this.config[type]) return;
106
+ this[this.config[type]](true);
107
+ },
108
+ immediate: true
109
+ },
110
+ isDesktop: {
111
+ handler: function (newVal) {
112
+ if (!this.config[newVal]) return;
113
+ this[this.config[this.type]](true);
114
+ },
115
+ immediate: true
116
+ },
117
+ /**
118
+ * 监听遮罩是否可点击
119
+ * @param {Object} val
120
+ */
121
+ maskClick: {
122
+ handler: function (val) {
123
+ this.mkclick = val;
124
+ },
125
+ immediate: true
126
+ }
127
+ },
128
+ data() {
129
+ return {
130
+ duration: 300,
131
+ ani: [],
132
+ showPopup: false,
133
+ showTrans: false,
134
+ popupWidth: 0,
135
+ popupHeight: 0,
136
+ config: {
137
+ top: 'top',
138
+ bottom: 'bottom',
139
+ center: 'center',
140
+ left: 'left',
141
+ right: 'right',
142
+ message: 'top',
143
+ dialog: 'center',
144
+ share: 'bottom'
145
+ },
146
+ maskClass: {
147
+ position: 'fixed',
148
+ bottom: 0,
149
+ top: 0,
150
+ left: 0,
151
+ right: 0,
152
+ backgroundColor: 'rgba(0, 0, 0, 0.4)'
153
+ },
154
+ transClass: {
155
+ position: 'fixed',
156
+ left: 0,
157
+ right: 0
158
+ },
159
+ maskShow: true,
160
+ mkclick: true,
161
+ popupstyle: this.isDesktop ? 'fixforpc-top' : 'top'
162
+ };
163
+ },
164
+ computed: {
165
+ isDesktop() {
166
+ return this.popupWidth >= 500 && this.popupHeight >= 500;
167
+ },
168
+ bg() {
169
+ if (this.backgroundColor === '' || this.backgroundColor === 'none') {
170
+ return 'transparent';
171
+ }
172
+ return this.backgroundColor;
173
+ }
174
+ },
175
+ mounted() {
176
+ const fixSize = () => {
177
+ const { windowWidth, windowHeight, windowTop, safeAreaInsets } = uni.getSystemInfoSync();
178
+ this.popupWidth = windowWidth;
179
+ this.popupHeight = windowHeight + windowTop;
180
+ // 是否适配底部安全区
181
+ if (this.safeArea) {
182
+ this.safeAreaInsets = safeAreaInsets;
183
+ } else {
184
+ this.safeAreaInsets = 0;
185
+ }
186
+ };
187
+ fixSize();
188
+ // #ifdef H5
189
+ // window.addEventListener('resize', fixSize)
190
+ // this.$once('hook:beforeDestroy', () => {
191
+ // window.removeEventListener('resize', fixSize)
192
+ // })
193
+ // #endif
194
+ },
195
+ created() {
196
+ this.mkclick = this.maskClick;
197
+ if (this.animation) {
198
+ this.duration = 300;
199
+ } else {
200
+ this.duration = 0;
201
+ }
202
+ // TODO 处理 message 组件生命周期异常的问题
203
+ this.messageChild = null;
204
+ // TODO 解决头条冒泡的问题
205
+ this.clearPropagation = false;
206
+ },
207
+ methods: {
208
+ /**
209
+ * 公用方法,不显示遮罩层
210
+ */
211
+ closeMask() {
212
+ this.maskShow = false;
213
+ },
214
+ /**
215
+ * 公用方法,遮罩层禁止点击
216
+ */
217
+ disableMask() {
218
+ this.mkclick = false;
219
+ },
220
+ // TODO nvue 取消冒泡
221
+ clear(e) {
222
+ // #ifndef APP-NVUE
223
+ e.stopPropagation();
224
+ // #endif
225
+ this.clearPropagation = true;
226
+ },
227
+
228
+ open(direction) {
229
+ let innerType = ['top', 'center', 'bottom', 'left', 'right', 'message', 'dialog', 'share'];
230
+ if (!(direction && innerType.indexOf(direction) !== -1)) {
231
+ direction = this.type;
232
+ }
233
+ if (!this.config[direction]) {
234
+ console.error('缺少类型:', direction);
235
+ return;
236
+ }
237
+ this[this.config[direction]]();
238
+ this.$emit('change', {
239
+ show: true,
240
+ type: direction
241
+ });
242
+ },
243
+ close(type) {
244
+ this.showTrans = false;
245
+ this.$emit('change', {
246
+ show: false,
247
+ type: this.type
248
+ });
249
+ clearTimeout(this.timer);
250
+ // // 自定义关闭事件
251
+ // this.customOpen && this.customClose()
252
+ this.timer = setTimeout(() => {
253
+ this.showPopup = false;
254
+ }, 300);
255
+ },
256
+ // TODO 处理冒泡事件,头条的冒泡事件有问题 ,先这样兼容
257
+ touchstart() {
258
+ this.clearPropagation = false;
259
+ },
260
+
261
+ onTap() {
262
+ if (this.clearPropagation) {
263
+ // fix by mehaotian 兼容 nvue
264
+ this.clearPropagation = false;
265
+ return;
266
+ }
267
+ this.$emit('maskClick');
268
+ if (!this.mkclick) return;
269
+ this.close();
270
+ },
271
+ /**
272
+ * 顶部弹出样式处理
273
+ */
274
+ top(type) {
275
+ this.popupstyle = this.isDesktop ? 'fixforpc-top' : 'top';
276
+ this.ani = ['slide-top'];
277
+ this.transClass = {
278
+ position: 'fixed',
279
+ left: 0,
280
+ right: 0,
281
+ backgroundColor: this.bg
282
+ };
283
+ // TODO 兼容 type 属性 ,后续会废弃
284
+ if (type) return;
285
+ this.showPopup = true;
286
+ this.showTrans = true;
287
+ this.$nextTick(() => {
288
+ if (this.messageChild && this.type === 'message') {
289
+ this.messageChild.timerClose();
290
+ }
291
+ });
292
+ },
293
+ /**
294
+ * 底部弹出样式处理
295
+ */
296
+ bottom(type) {
297
+ this.popupstyle = 'bottom';
298
+ this.ani = ['slide-bottom'];
299
+
300
+ this.transClass = {
301
+ position: 'fixed',
302
+ left: 0,
303
+ right: 0,
304
+ bottom: 0,
305
+ paddingBottom: (this.safeAreaInsets && this.safeAreaInsets.bottom) || 0,
306
+ backgroundColor: this.bg
307
+ };
308
+ // TODO 兼容 type 属性 ,后续会废弃
309
+ if (type) return;
310
+ this.showPopup = true;
311
+ this.showTrans = true;
312
+ },
313
+ /**
314
+ * 中间弹出样式处理
315
+ */
316
+ center(type) {
317
+ this.popupstyle = 'center';
318
+ this.ani = ['zoom-out', 'fade'];
319
+ this.transClass = {
320
+ position: 'fixed',
321
+ /* #ifndef APP-NVUE */
322
+ display: 'flex',
323
+ flexDirection: 'column',
324
+ /* #endif */
325
+ bottom: 0,
326
+ left: 0,
327
+ right: 0,
328
+ top: 0,
329
+ justifyContent: 'center',
330
+ alignItems: 'center'
331
+ };
332
+ // TODO 兼容 type 属性 ,后续会废弃
333
+ if (type) return;
334
+ this.showPopup = true;
335
+ this.showTrans = true;
336
+ },
337
+ left(type) {
338
+ this.popupstyle = 'left';
339
+ this.ani = ['slide-left'];
340
+ this.transClass = {
341
+ position: 'fixed',
342
+ left: 0,
343
+ bottom: 0,
344
+ top: 0,
345
+ backgroundColor: this.bg,
346
+ /* #ifndef APP-NVUE */
347
+ display: 'flex',
348
+ flexDirection: 'column'
349
+ /* #endif */
350
+ };
351
+ // TODO 兼容 type 属性 ,后续会废弃
352
+ if (type) return;
353
+ this.showPopup = true;
354
+ this.showTrans = true;
355
+ },
356
+ right(type) {
357
+ this.popupstyle = 'right';
358
+ this.ani = ['slide-right'];
359
+ this.transClass = {
360
+ position: 'fixed',
361
+ bottom: 0,
362
+ right: 0,
363
+ top: 0,
364
+ backgroundColor: this.bg,
365
+ /* #ifndef APP-NVUE */
366
+ display: 'flex',
367
+ flexDirection: 'column'
368
+ /* #endif */
369
+ };
370
+ // TODO 兼容 type 属性 ,后续会废弃
371
+ if (type) return;
372
+ this.showPopup = true;
373
+ this.showTrans = true;
374
+ }
375
+ }
376
+ };
377
+ </script>
378
+ <style scoped>
379
+ @charset "UTF-8";
380
+
381
+ .uni-popup {
382
+ position: fixed;
383
+ /* #ifndef APP-NVUE */
384
+ z-index: 99;
385
+ /* #endif */
386
+ }
387
+
388
+ .uni-popup.top,
389
+ .uni-popup.left,
390
+ .uni-popup.right {
391
+ /* #ifdef H5 */
392
+ top: var(--window-top);
393
+ /* #endif */
394
+ /* #ifndef H5 */
395
+ top: 0;
396
+ /* #endif */
397
+ }
398
+
399
+ .uni-popup .uni-popup__wrapper {
400
+ /* #ifndef APP-NVUE */
401
+ display: block;
402
+ /* #endif */
403
+ position: relative;
404
+ /* iphonex 等安全区设置,底部安全区适配 */
405
+ /* #ifndef APP-NVUE */
406
+ /* #endif */
407
+ }
408
+
409
+ .uni-popup .uni-popup__wrapper.left,
410
+ .uni-popup .uni-popup__wrapper.right {
411
+ /* #ifdef H5 */
412
+ padding-top: var(--window-top);
413
+ /* #endif */
414
+ /* #ifndef H5 */
415
+ padding-top: 0;
416
+ /* #endif */
417
+ flex: 1;
418
+ }
419
+
420
+ .fixforpc-z-index {
421
+ /* #ifndef APP-NVUE */
422
+ z-index: 999;
423
+ /* #endif */
424
+ }
425
+
426
+ .fixforpc-top {
427
+ top: 0;
428
+ }
429
+ </style>
@@ -0,0 +1,143 @@
1
+ <template>
2
+ <view class="uni-popup-message">
3
+ <view class="uni-popup-message__box fixforpc-width" :class="'uni-popup__' + type">
4
+ <slot>
5
+ <text class="uni-popup-message-text" :class="'uni-popup__' + type + '-text'">{{ message }}</text>
6
+ </slot>
7
+ </view>
8
+ </view>
9
+ </template>
10
+
11
+ <script>
12
+ import popup from '../uni-popup/popup.js';
13
+ /**
14
+ * PopUp 弹出层-消息提示
15
+ * @description 弹出层-消息提示
16
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=329
17
+ * @property {String} type = [success|warning|info|error] 主题样式
18
+ * @value success 成功
19
+ * @value warning 提示
20
+ * @value info 消息
21
+ * @value error 错误
22
+ * @property {String} message 消息提示文字
23
+ * @property {String} duration 显示时间,设置为 0 则不会自动关闭
24
+ */
25
+
26
+ export default {
27
+ name: 'cvPopupMessage',
28
+ mixins: [popup],
29
+ props: {
30
+ /**
31
+ * 主题 success/warning/info/error 默认 success
32
+ */
33
+ type: {
34
+ type: String,
35
+ default: 'success'
36
+ },
37
+ /**
38
+ * 消息文字
39
+ */
40
+ message: {
41
+ type: String,
42
+ default: ''
43
+ },
44
+ /**
45
+ * 显示时间,设置为 0 则不会自动关闭
46
+ */
47
+ duration: {
48
+ type: Number,
49
+ default: 3000
50
+ },
51
+ maskShow: {
52
+ type: Boolean,
53
+ default: false
54
+ }
55
+ },
56
+ data() {
57
+ return {};
58
+ },
59
+ created() {
60
+ this.popup.maskShow = this.maskShow;
61
+ this.popup.messageChild = this;
62
+ },
63
+ methods: {
64
+ timerClose() {
65
+ if (this.duration === 0) return;
66
+ clearTimeout(this.timer);
67
+ this.timer = setTimeout(() => {
68
+ this.popup.close();
69
+ }, this.duration);
70
+ }
71
+ }
72
+ };
73
+ </script>
74
+ <style scoped>
75
+ .uni-popup-message {
76
+ /* #ifndef APP-NVUE */
77
+ display: flex;
78
+ /* #endif */
79
+ flex-direction: row;
80
+ justify-content: center;
81
+ }
82
+
83
+ .uni-popup-message__box {
84
+ background-color: #e1f3d8;
85
+ padding: 10px 15px;
86
+ border-color: #eee;
87
+ border-style: solid;
88
+ border-width: 1px;
89
+ flex: 1;
90
+ }
91
+
92
+ @media screen and (min-width: 500px) {
93
+ .fixforpc-width {
94
+ margin-top: 20px;
95
+ border-radius: 4px;
96
+ flex: none;
97
+ min-width: 380px;
98
+ /* #ifndef APP-NVUE */
99
+ max-width: 50%;
100
+ /* #endif */
101
+ /* #ifdef APP-NVUE */
102
+ max-width: 500px;
103
+ /* #endif */
104
+ }
105
+ }
106
+
107
+ .uni-popup-message-text {
108
+ font-size: 14px;
109
+ padding: 0;
110
+ }
111
+
112
+ .uni-popup__success {
113
+ background-color: #e1f3d8;
114
+ }
115
+
116
+ .uni-popup__success-text {
117
+ color: #67c23a;
118
+ }
119
+
120
+ .uni-popup__warn {
121
+ background-color: #faecd8;
122
+ }
123
+
124
+ .uni-popup__warn-text {
125
+ color: #e6a23c;
126
+ }
127
+
128
+ .uni-popup__error {
129
+ background-color: #fde2e2;
130
+ }
131
+
132
+ .uni-popup__error-text {
133
+ color: #f56c6c;
134
+ }
135
+
136
+ .uni-popup__info {
137
+ background-color: #f2f6fc;
138
+ }
139
+
140
+ .uni-popup__info-text {
141
+ color: #909399;
142
+ }
143
+ </style>
@@ -30,7 +30,7 @@ const modifierSeparator = '--';
30
30
  */
31
31
 
32
32
  export default {
33
- name: 'uniRow',
33
+ name: 'cvRow',
34
34
  componentName: 'uniRow',
35
35
  // #ifdef MP-WEIXIN
36
36
  options: {