@10yun/cv-mobile-ui 0.3.26 → 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 (235) hide show
  1. package/build/parse-pages.js +2 -2
  2. package/package.json +1 -1
  3. package/ui-cv/README.md +3 -0
  4. package/ui-cv/cv-badge/cv-badge.vue +249 -0
  5. package/ui-cv/cv-banner/cv-banner.vue +1 -1
  6. package/ui-cv/cv-banner-card/cv-banner-card.vue +1 -1
  7. package/ui-cv/cv-block/cv-block.vue +1 -1
  8. package/ui-cv/cv-box/cv-box.vue +1 -1
  9. package/ui-cv/cv-calendar/calendar.js +963 -0
  10. package/ui-cv/cv-calendar/cv-calendar-item.vue +198 -0
  11. package/ui-cv/cv-calendar/cv-calendar.vue +508 -0
  12. package/{ui-uni/uni-calendar → ui-cv/cv-calendar}/util.js +0 -0
  13. package/ui-cv/cv-card/cv-card.vue +427 -0
  14. package/ui-cv/cv-cell/cv-cell.vue +1 -1
  15. package/ui-cv/cv-checkbox-group/cv-checkbox-group.vue +227 -0
  16. package/ui-cv/cv-checkbox-opt-base/cv-checkbox-opt-base.vue +57 -0
  17. package/ui-cv/cv-checkbox-opt-tag/cv-checkbox-opt-tag.vue +107 -0
  18. package/ui-cv/cv-code-sms/cv-code-sms.vue +23 -42
  19. package/ui-cv/cv-col/cv-col.vue +2965 -0
  20. package/ui-cv/cv-collapse/cv-collapse.vue +146 -0
  21. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +395 -0
  22. package/ui-cv/cv-combox/cv-combox.vue +250 -0
  23. package/ui-cv/cv-countdown/cv-countdown.vue +245 -0
  24. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +841 -0
  25. package/{ui-uni/uni-data-indexed-list → ui-cv/cv-data-indexed-list}/clientdb.js +0 -0
  26. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +154 -0
  27. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +376 -0
  28. package/ui-cv/cv-data-picker/cv-data-picker.vue +486 -0
  29. package/{ui-uni/uni-data-picker → ui-cv/cv-data-picker}/keypress.js +0 -0
  30. package/{ui-uni/uni-data-pickerview/uni-data-picker.js → ui-cv/cv-data-pickerview/cv-data-picker.js} +0 -0
  31. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +304 -0
  32. package/ui-cv/cv-dateformat/cv-dateformat.vue +86 -0
  33. package/{ui-uni/uni-dateformat → ui-cv/cv-dateformat}/date-format.js +0 -0
  34. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar-item.vue +0 -0
  35. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/calendar.js +0 -0
  36. package/ui-cv/cv-datetime-picker/calendar.vue +761 -0
  37. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +958 -0
  38. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/keypress.js +0 -0
  39. package/ui-cv/cv-datetime-picker/time-picker.vue +907 -0
  40. package/{ui-uni/uni-datetime-picker → ui-cv/cv-datetime-picker}/util.js +0 -0
  41. package/ui-cv/cv-dialog-bottom/cv-dialog-bottom.vue +1 -1
  42. package/ui-cv/cv-dialog-full/cv-dialog-full.vue +1 -1
  43. package/ui-cv/cv-dialog-loading/cv-dialog-loading.vue +3 -3
  44. package/ui-cv/cv-drawer/cv-drawer.vue +185 -0
  45. package/{ui-uni/uni-drawer → ui-cv/cv-drawer}/keypress.js +14 -14
  46. package/{ui-uni/uni-easyinput → ui-cv/cv-easyinput}/common.js +0 -0
  47. package/ui-cv/cv-easyinput/cv-easyinput.vue +514 -0
  48. package/ui-cv/cv-editor-parse/readme.md +2 -3
  49. package/ui-cv/{cv-editor → cv-editor-quill}/compressImage.vue +0 -0
  50. package/ui-cv/{cv-editor/cv-editor.vue → cv-editor-quill/cv-editor-quill.vue} +3 -23
  51. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.css +0 -0
  52. package/ui-cv/{cv-editor → cv-editor-quill}/editor-icon.ttf +0 -0
  53. package/ui-cv/{cv-editor → cv-editor-quill}/index.js +0 -0
  54. package/ui-cv/cv-fab/cv-fab.vue +465 -0
  55. package/{ui-uni/uni-fab/uni-fab.vue.bak → ui-cv/cv-fab/cv-fab.vue.bak} +2 -2
  56. package/ui-cv/cv-fav/cv-fav.vue +150 -0
  57. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/choose-and-upload-file.js +0 -0
  58. package/ui-cv/cv-file-picker/cv-file-picker.vue +619 -0
  59. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-file.vue +0 -0
  60. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/upload-image.vue +0 -0
  61. package/{ui-uni/uni-file-picker → ui-cv/cv-file-picker}/utils.js +0 -0
  62. package/ui-cv/cv-form-base/cv-form-base.vue +470 -0
  63. package/ui-cv/cv-form-base/validate.js +477 -0
  64. package/ui-cv/cv-form-group/cv-form-group.vue +123 -80
  65. package/ui-cv/cv-form-group/cv-form-group2.vue +80 -0
  66. package/ui-cv/cv-form-item/cv-form-item.vue +482 -174
  67. package/ui-cv/cv-form-item/cv-form-item2.vue +215 -0
  68. package/ui-cv/cv-form-merge/cv-form-merge.vue +1 -1
  69. package/ui-cv/cv-geo-local/cv-geo-local.vue +14 -26
  70. package/{ui-uni/uni-goods-nav/uni-goods-nav.vue → ui-cv/cv-goods-nav/cv-goods-nav.vue} +1 -1
  71. package/ui-cv/cv-grid-group/cv-grid-group.vue +148 -0
  72. package/ui-cv/cv-grid-item/cv-grid-item.vue +132 -0
  73. package/ui-cv/cv-icon2/cv-icon2.vue +78 -0
  74. package/ui-cv/cv-icon2/icons.js +132 -0
  75. package/{ui-uni/uni-icons → ui-cv/cv-icon2}/uni.ttf +0 -0
  76. package/ui-cv/cv-icons/cv-icons.vue +1 -1
  77. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +154 -0
  78. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +371 -0
  79. package/ui-cv/cv-info/cv-info.vue +5 -20
  80. package/ui-cv/cv-input-btn/cv-input-btn.vue +25 -43
  81. package/ui-cv/cv-input-digit/cv-input-digit.vue +61 -28
  82. package/ui-cv/cv-input-idcard/cv-input-idcard.vue +47 -29
  83. package/ui-cv/cv-input-number/cv-input-number.vue +60 -28
  84. package/ui-cv/cv-input-password/cv-input-password.vue +80 -30
  85. package/ui-cv/cv-input-text/cv-input-text.vue +55 -37
  86. package/ui-cv/cv-link2/cv-link2.vue +130 -0
  87. package/ui-cv/cv-list/cv-list.vue +107 -0
  88. package/ui-cv/cv-list/cv-refresh.vue +65 -0
  89. package/{ui-uni/uni-list → ui-cv/cv-list}/uni-refresh.wxs +0 -0
  90. package/ui-cv/cv-list-ad/cv-list-ad.vue +113 -0
  91. package/{ui-uni/uni-list-chat/uni-list-chat.scss → ui-cv/cv-list-chat/cv-list-chat.scss} +0 -0
  92. package/{ui-uni/uni-list-chat/uni-list-chat.vue → ui-cv/cv-list-chat/cv-list-chat.vue} +0 -0
  93. package/ui-cv/cv-list-item/cv-list-item.vue +449 -0
  94. package/ui-cv/cv-load-more/config.json +9 -9
  95. package/ui-cv/cv-load-more/cv-load-more.vue +34 -5
  96. package/ui-cv/cv-message/cv-message.vue +1 -1
  97. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +256 -0
  98. package/{ui-uni/uni-nav-bar/uni-status-bar.vue → ui-cv/cv-nav-bar/cv-status-bar.vue} +0 -0
  99. package/ui-cv/cv-nav-col/cv-nav-col.vue +1 -1
  100. package/ui-cv/cv-nav-row/cv-nav-row.vue +1 -1
  101. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +453 -0
  102. package/ui-cv/cv-number-box/cv-number-box.vue +223 -0
  103. package/ui-cv/cv-pagination/cv-pagination.vue +397 -0
  104. package/ui-cv/cv-picker-date/cv-picker-date.vue +17 -27
  105. package/ui-cv/cv-picker-datetime/cv-picker-datetime.vue +31 -41
  106. package/ui-cv/cv-picker-datetime5/cv-picker-datetime5.vue +19 -29
  107. package/ui-cv/cv-picker-region/cv-picker-region.vue +23 -33
  108. package/ui-cv/cv-picker-time/cv-picker-time.vue +16 -26
  109. package/ui-cv/cv-picker1/cv-picker1.vue +16 -28
  110. package/ui-cv/cv-picker2/cv-picker2.vue +22 -32
  111. package/ui-cv/cv-picker3/cv-picker3.vue +34 -44
  112. package/ui-cv/cv-popup/cv-popup.vue +429 -0
  113. package/{ui-uni/uni-popup → ui-cv/cv-popup}/keypress.js +0 -0
  114. package/{ui-uni/uni-popup → ui-cv/cv-popup}/popup.js +0 -0
  115. package/{ui-uni/uni-popup-dialog/uni-popup-dialog.vue → ui-cv/cv-popup-dialog/cv-popup-dialog.vue} +0 -0
  116. package/{ui-uni/uni-popup-dialog → ui-cv/cv-popup-dialog}/keypress.js +0 -0
  117. package/ui-cv/cv-popup-message/cv-popup-message.vue +143 -0
  118. package/{ui-uni/uni-popup-share/uni-popup-share.vue → ui-cv/cv-popup-share/cv-popup-share.vue} +0 -0
  119. package/ui-cv/cv-radio-group/cv-radio-group.vue +185 -0
  120. package/ui-cv/cv-radio-opt-base/cv-radio-opt-base.vue +57 -0
  121. package/ui-cv/cv-radio-opt-tag/cv-radio-opt-tag.vue +107 -0
  122. package/ui-cv/cv-rate/cv-rate.vue +13 -17
  123. package/ui-cv/cv-rate/uni-rate.vue +358 -0
  124. package/ui-cv/cv-row/cv-row.vue +157 -0
  125. package/ui-cv/cv-search/cv-search.vue +4 -4
  126. package/ui-cv/cv-search-bar/cv-search-bar.vue +280 -0
  127. package/{ui-uni/uni-section/uni-section.vue → ui-cv/cv-section/cv-section.vue} +0 -0
  128. package/{ui-uni/uni-segmented-control/uni-segmented-control.vue → ui-cv/cv-segmented-control/cv-segmented-control.vue} +0 -0
  129. package/ui-cv/cv-skeleton/cv-skeleton2.vue +5 -5
  130. package/ui-cv/cv-specs/cv-specs.vue +1 -1
  131. package/{ui-uni/uni-status-bar/uni-status-bar.vue → ui-cv/cv-status-bar/cv-status-bar.vue} +0 -0
  132. package/ui-cv/cv-steps/cv-steps.vue +293 -0
  133. package/{ui-uni/uni-swipe-action/uni-swipe-action.vue → ui-cv/cv-swipe-action/cv-swipe-action.vue} +0 -0
  134. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/bindingx.js +0 -0
  135. package/{ui-uni/uni-swipe-action-item/uni-swipe-action-item.vue → ui-cv/cv-swipe-action-item/cv-swipe-action-item.vue} +0 -0
  136. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/index.wxs +0 -0
  137. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/isPC.js +0 -0
  138. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpalipay.js +0 -0
  139. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpother.js +0 -0
  140. package/{ui-uni/uni-swipe-action-item → ui-cv/cv-swipe-action-item}/mpwxs.js +0 -0
  141. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +255 -0
  142. package/ui-cv/cv-switch/cv-switch.vue +5 -9
  143. package/ui-cv/cv-table/cv-table.vue +460 -0
  144. package/ui-cv/cv-tag/cv-tag.vue +276 -0
  145. package/ui-cv/cv-tbody/cv-tbody.vue +28 -0
  146. package/ui-cv/cv-td/cv-td.vue +93 -0
  147. package/{ui-uni/uni-test/uni-test.vue → ui-cv/cv-test/cv-test.vue} +0 -0
  148. package/ui-cv/cv-textarea/cv-textarea.vue +56 -41
  149. package/ui-cv/cv-th/cv-th.vue +270 -0
  150. package/{ui-uni/uni-th → ui-cv/cv-th}/filter-dropdown.vue +0 -0
  151. package/ui-cv/cv-thead/cv-thead.vue +114 -0
  152. package/ui-cv/cv-title/cv-title.vue +168 -0
  153. package/ui-cv/cv-tr/cv-tr.vue +166 -0
  154. package/{ui-uni/uni-tr → ui-cv/cv-tr}/table-checkbox.vue +0 -0
  155. package/{ui-uni/uni-transition → ui-cv/cv-transition}/createAnimation.js +0 -0
  156. package/ui-cv/cv-transition/cv-transition.vue +279 -0
  157. package/ui-cv/cv-upload-avatar/cv-upload-avatar.vue +24 -22
  158. package/ui-cv/cv-upload-img/cv-upload-img.vue +1 -1
  159. package/ui-cv/mixins/mixins-input.js +20 -29
  160. package/ui-cv/mixins/mixins-picker.js +1 -13
  161. package/ui-uni/amap-wx/js/util.js +158 -166
  162. package/ui-uni/product.vue +52 -52
  163. package/ui-uni/u-charts/u-charts.js +1092 -743
  164. package/ui-cv/cv-checkbox/cv-checkbox.vue +0 -140
  165. package/ui-cv/cv-checkbox-tag/cv-checkbox-tag.vue +0 -164
  166. package/ui-cv/cv-nav-group/cv-nav-group.vue +0 -33
  167. package/ui-cv/cv-radio/cv-radio.vue +0 -111
  168. package/ui-cv/cv-radio-sex/cv-radio-sex.vue +0 -80
  169. package/ui-cv/cv-radio-tag/cv-radio-tag.vue +0 -133
  170. package/ui-cv/mixins/mixins-checkbox.js +0 -71
  171. package/ui-cv/mixins/mixins-common.js +0 -53
  172. package/ui-cv/mixins/mixins-radio.js +0 -84
  173. package/ui-uni/page-foot/page-foot.vue +0 -38
  174. package/ui-uni/page-head/page-head.vue +0 -16
  175. package/ui-uni/u-link/u-link.vue +0 -59
  176. package/ui-uni/uni-badge/uni-badge.vue +0 -250
  177. package/ui-uni/uni-calendar/calendar.js +0 -546
  178. package/ui-uni/uni-calendar/uni-calendar-item.vue +0 -171
  179. package/ui-uni/uni-calendar/uni-calendar.vue +0 -504
  180. package/ui-uni/uni-card/uni-card.vue +0 -420
  181. package/ui-uni/uni-col/uni-col.vue +0 -2968
  182. package/ui-uni/uni-collapse/uni-collapse.vue +0 -146
  183. package/ui-uni/uni-collapse-item/uni-collapse-item.vue +0 -378
  184. package/ui-uni/uni-combox/uni-combox.vue +0 -237
  185. package/ui-uni/uni-countdown/uni-countdown.vue +0 -234
  186. package/ui-uni/uni-data-checkbox/uni-data-checkbox.vue +0 -792
  187. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list-item.vue +0 -142
  188. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list.vue +0 -364
  189. package/ui-uni/uni-data-picker/uni-data-picker.vue +0 -468
  190. package/ui-uni/uni-data-pickerview/uni-data-pickerview.vue +0 -298
  191. package/ui-uni/uni-dateformat/uni-dateformat.vue +0 -88
  192. package/ui-uni/uni-datetime-picker/calendar.vue +0 -747
  193. package/ui-uni/uni-datetime-picker/time-picker.vue +0 -899
  194. package/ui-uni/uni-datetime-picker/uni-datetime-picker.vue +0 -874
  195. package/ui-uni/uni-drawer/uni-drawer.vue +0 -178
  196. package/ui-uni/uni-easyinput/uni-easyinput.vue +0 -438
  197. package/ui-uni/uni-fab/uni-fab.vue +0 -443
  198. package/ui-uni/uni-fav/uni-fav.vue +0 -136
  199. package/ui-uni/uni-file-picker/uni-file-picker.vue +0 -614
  200. package/ui-uni/uni-forms/uni-forms.vue +0 -467
  201. package/ui-uni/uni-forms/validate.js +0 -486
  202. package/ui-uni/uni-forms-item/uni-forms-item.vue +0 -500
  203. package/ui-uni/uni-grid/uni-grid.vue +0 -141
  204. package/ui-uni/uni-grid-item/uni-grid-item.vue +0 -123
  205. package/ui-uni/uni-group/uni-group.vue +0 -123
  206. package/ui-uni/uni-icons/icons.js +0 -132
  207. package/ui-uni/uni-icons/uni-icons.vue +0 -72
  208. package/ui-uni/uni-indexed-list/uni-indexed-list-item.vue +0 -142
  209. package/ui-uni/uni-indexed-list/uni-indexed-list.vue +0 -357
  210. package/ui-uni/uni-link/uni-link.vue +0 -117
  211. package/ui-uni/uni-list/uni-list.vue +0 -107
  212. package/ui-uni/uni-list/uni-refresh.vue +0 -65
  213. package/ui-uni/uni-list-ad/uni-list-ad.vue +0 -106
  214. package/ui-uni/uni-list-item/uni-list-item.vue +0 -428
  215. package/ui-uni/uni-load-more/uni-load-more.vue +0 -366
  216. package/ui-uni/uni-nav-bar/uni-nav-bar.vue +0 -244
  217. package/ui-uni/uni-notice-bar/uni-notice-bar.vue +0 -394
  218. package/ui-uni/uni-number-box/uni-number-box.vue +0 -224
  219. package/ui-uni/uni-pagination/uni-pagination.vue +0 -376
  220. package/ui-uni/uni-popup/uni-popup.vue +0 -412
  221. package/ui-uni/uni-popup-message/uni-popup-message.vue +0 -143
  222. package/ui-uni/uni-rate/uni-rate.vue +0 -357
  223. package/ui-uni/uni-row/uni-row.vue +0 -155
  224. package/ui-uni/uni-search-bar/uni-search-bar.vue +0 -262
  225. package/ui-uni/uni-steps/uni-steps.vue +0 -250
  226. package/ui-uni/uni-swiper-dot/uni-swiper-dot.vue +0 -205
  227. package/ui-uni/uni-table/uni-table.vue +0 -455
  228. package/ui-uni/uni-tag/uni-tag.vue +0 -283
  229. package/ui-uni/uni-tbody/uni-tbody.vue +0 -30
  230. package/ui-uni/uni-td/uni-td.vue +0 -88
  231. package/ui-uni/uni-th/uni-th.vue +0 -259
  232. package/ui-uni/uni-thead/uni-thead.vue +0 -114
  233. package/ui-uni/uni-title/uni-title.vue +0 -171
  234. package/ui-uni/uni-tr/uni-tr.vue +0 -156
  235. package/ui-uni/uni-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>
File without changes
File without changes
@@ -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>