@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,453 @@
1
+ <template>
2
+ <view v-if="show" class="uni-noticebar" :style="{ backgroundColor: backgroundColor }" @click="onClick">
3
+ <!-- #ifdef MP-ALIPAY -->
4
+ <view v-if="showClose === true || showClose === 'true'" class="uni-noticebar-close uni-cursor-point" @click="close">
5
+ <cv-icon2 type="closeempty" :color="color" size="12" />
6
+ </view>
7
+ <view v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon">
8
+ <cv-icon2 type="sound" :color="color" size="14" />
9
+ </view>
10
+ <!-- #endif -->
11
+ <!-- #ifndef MP-ALIPAY -->
12
+ <cv-icon2
13
+ v-if="showClose === true || showClose === 'true'"
14
+ class="uni-noticebar-close uni-cursor-point"
15
+ type="closeempty"
16
+ :color="color"
17
+ size="12"
18
+ @click="close"
19
+ />
20
+ <cv-icon2 v-if="showIcon === true || showIcon === 'true'" class="uni-noticebar-icon" type="sound" :color="color" size="14" />
21
+ <!-- #endif -->
22
+ <view
23
+ ref="textBox"
24
+ class="uni-noticebar__content-wrapper"
25
+ :class="{
26
+ 'uni-noticebar__content-wrapper--scrollable': scrollable,
27
+ 'uni-noticebar__content-wrapper--single': !scrollable && (single || moreText)
28
+ }"
29
+ >
30
+ <view
31
+ :id="elIdBox"
32
+ class="uni-noticebar__content"
33
+ :class="{
34
+ 'uni-noticebar__content--scrollable': scrollable,
35
+ 'uni-noticebar__content--single': !scrollable && (single || moreText)
36
+ }"
37
+ >
38
+ <text
39
+ :id="elId"
40
+ ref="animationEle"
41
+ class="uni-noticebar__content-text"
42
+ :class="{
43
+ 'uni-noticebar__content-text--scrollable': scrollable,
44
+ 'uni-noticebar__content-text--single': !scrollable && (single || moreText)
45
+ }"
46
+ :style="{
47
+ color: color,
48
+ width: wrapWidth + 'px',
49
+ animationDuration: animationDuration,
50
+ '-webkit-animationDuration': animationDuration,
51
+ animationPlayState: webviewHide ? 'paused' : animationPlayState,
52
+ '-webkit-animationPlayState': webviewHide ? 'paused' : animationPlayState,
53
+ animationDelay: animationDelay,
54
+ '-webkit-animationDelay': animationDelay
55
+ }"
56
+ >
57
+ {{ text }}
58
+ </text>
59
+ </view>
60
+ </view>
61
+ <view v-if="showGetMore === true || showGetMore === 'true'" class="uni-noticebar__more uni-cursor-point" @click="clickMore">
62
+ <text v-if="moreText" :style="{ color: moreColor }" class="uni-noticebar__more-text">{{ moreText }}</text>
63
+ <cv-icon2 type="arrowright" :color="moreColor" size="14" />
64
+ </view>
65
+ </view>
66
+ </template>
67
+
68
+ <script>
69
+ // #ifdef APP-NVUE
70
+ const dom = weex.requireModule('dom');
71
+ const animation = weex.requireModule('animation');
72
+ // #endif
73
+
74
+ /**
75
+ * NoticeBar 自定义导航栏
76
+ * @description 通告栏组件
77
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=30
78
+ * @property {Number} speed 文字滚动的速度,默认100px/秒
79
+ * @property {String} text 显示文字
80
+ * @property {String} backgroundColor 背景颜色
81
+ * @property {String} color 文字颜色
82
+ * @property {String} moreColor 查看更多文字的颜色
83
+ * @property {String} moreText 设置“查看更多”的文本
84
+ * @property {Boolean} single = [true|false] 是否单行
85
+ * @property {Boolean} scrollable = [true|false] 是否滚动,为true时,NoticeBar为单行
86
+ * @property {Boolean} showIcon = [true|false] 是否显示左侧喇叭图标
87
+ * @property {Boolean} showClose = [true|false] 是否显示左侧关闭按钮
88
+ * @property {Boolean} showGetMore = [true|false] 是否显示右侧查看更多图标,为true时,NoticeBar为单行
89
+ * @event {Function} click 点击 NoticeBar 触发事件
90
+ * @event {Function} close 关闭 NoticeBar 触发事件
91
+ * @event {Function} getmore 点击”查看更多“时触发事件
92
+ */
93
+
94
+ export default {
95
+ name: 'UniNoticeBar',
96
+ emits: ['click', 'getmore', 'close'],
97
+ props: {
98
+ text: {
99
+ type: String,
100
+ default: ''
101
+ },
102
+ moreText: {
103
+ type: String,
104
+ default: ''
105
+ },
106
+ backgroundColor: {
107
+ type: String,
108
+ default: '#fffbe8'
109
+ },
110
+ speed: {
111
+ // 默认1s滚动100px
112
+ type: Number,
113
+ default: 100
114
+ },
115
+ color: {
116
+ type: String,
117
+ default: '#de8c17'
118
+ },
119
+ moreColor: {
120
+ type: String,
121
+ default: '#999999'
122
+ },
123
+ single: {
124
+ // 是否单行
125
+ type: [Boolean, String],
126
+ default: false
127
+ },
128
+ scrollable: {
129
+ // 是否滚动,添加后控制单行效果取消
130
+ type: [Boolean, String],
131
+ default: false
132
+ },
133
+ showIcon: {
134
+ // 是否显示左侧icon
135
+ type: [Boolean, String],
136
+ default: false
137
+ },
138
+ showGetMore: {
139
+ // 是否显示右侧查看更多
140
+ type: [Boolean, String],
141
+ default: false
142
+ },
143
+ showClose: {
144
+ // 是否显示左侧关闭按钮
145
+ type: [Boolean, String],
146
+ default: false
147
+ }
148
+ },
149
+ data() {
150
+ const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`;
151
+ const elIdBox = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`;
152
+ return {
153
+ textWidth: 0,
154
+ boxWidth: 0,
155
+ wrapWidth: '',
156
+ webviewHide: false,
157
+ // #ifdef APP-NVUE
158
+ stopAnimation: false,
159
+ // #endif
160
+ elId: elId,
161
+ elIdBox: elIdBox,
162
+ show: true,
163
+ animationDuration: 'none',
164
+ animationPlayState: 'paused',
165
+ animationDelay: '0s'
166
+ };
167
+ },
168
+ mounted() {
169
+ // #ifdef APP-PLUS
170
+ var pages = getCurrentPages();
171
+ var page = pages[pages.length - 1];
172
+ var currentWebview = page.$getAppWebview();
173
+ currentWebview.addEventListener('hide', () => {
174
+ this.webviewHide = true;
175
+ });
176
+ currentWebview.addEventListener('show', () => {
177
+ this.webviewHide = false;
178
+ });
179
+ // #endif
180
+ this.$nextTick(() => {
181
+ this.initSize();
182
+ });
183
+ },
184
+ // #ifdef APP-NVUE
185
+ beforeDestroy() {
186
+ this.stopAnimation = true;
187
+ },
188
+ // #endif
189
+ methods: {
190
+ initSize() {
191
+ if (this.scrollable) {
192
+ // #ifndef APP-NVUE
193
+ let query = [],
194
+ boxWidth = 0,
195
+ textWidth = 0;
196
+ let textQuery = new Promise((resolve, reject) => {
197
+ uni
198
+ .createSelectorQuery()
199
+ // #ifndef MP-ALIPAY
200
+ .in(this)
201
+ // #endif
202
+ .select(`#${this.elId}`)
203
+ .boundingClientRect()
204
+ .exec((ret) => {
205
+ this.textWidth = ret[0].width;
206
+ resolve();
207
+ });
208
+ });
209
+ let boxQuery = new Promise((resolve, reject) => {
210
+ uni
211
+ .createSelectorQuery()
212
+ // #ifndef MP-ALIPAY
213
+ .in(this)
214
+ // #endif
215
+ .select(`#${this.elIdBox}`)
216
+ .boundingClientRect()
217
+ .exec((ret) => {
218
+ this.boxWidth = ret[0].width;
219
+ resolve();
220
+ });
221
+ });
222
+ query.push(textQuery);
223
+ query.push(boxQuery);
224
+ Promise.all(query).then(() => {
225
+ this.animationDuration = `${this.textWidth / this.speed}s`;
226
+ this.animationDelay = `-${this.boxWidth / this.speed}s`;
227
+ setTimeout(() => {
228
+ this.animationPlayState = 'running';
229
+ }, 1000);
230
+ });
231
+ // #endif
232
+ // #ifdef APP-NVUE
233
+ dom.getComponentRect(this.$refs['animationEle'], (res) => {
234
+ let winWidth = uni.getSystemInfoSync().windowWidth;
235
+ this.textWidth = res.size.width;
236
+ animation.transition(
237
+ this.$refs['animationEle'],
238
+ {
239
+ styles: {
240
+ transform: `translateX(-${winWidth}px)`
241
+ },
242
+ duration: 0,
243
+ timingFunction: 'linear',
244
+ delay: 0
245
+ },
246
+ () => {
247
+ if (!this.stopAnimation) {
248
+ animation.transition(
249
+ this.$refs['animationEle'],
250
+ {
251
+ styles: {
252
+ transform: `translateX(-${this.textWidth}px)`
253
+ },
254
+ timingFunction: 'linear',
255
+ duration: ((this.textWidth - winWidth) / this.speed) * 1000,
256
+ delay: 1000
257
+ },
258
+ () => {
259
+ if (!this.stopAnimation) {
260
+ this.loopAnimation();
261
+ }
262
+ }
263
+ );
264
+ }
265
+ }
266
+ );
267
+ });
268
+ // #endif
269
+ }
270
+ // #ifdef APP-NVUE
271
+ if (!this.scrollable && (this.single || this.moreText)) {
272
+ dom.getComponentRect(this.$refs['textBox'], (res) => {
273
+ this.wrapWidth = res.size.width;
274
+ });
275
+ }
276
+ // #endif
277
+ },
278
+ loopAnimation() {
279
+ // #ifdef APP-NVUE
280
+ animation.transition(
281
+ this.$refs['animationEle'],
282
+ {
283
+ styles: {
284
+ transform: `translateX(0px)`
285
+ },
286
+ duration: 0
287
+ },
288
+ () => {
289
+ if (!this.stopAnimation) {
290
+ animation.transition(
291
+ this.$refs['animationEle'],
292
+ {
293
+ styles: {
294
+ transform: `translateX(-${this.textWidth}px)`
295
+ },
296
+ duration: (this.textWidth / this.speed) * 1000,
297
+ timingFunction: 'linear',
298
+ delay: 0
299
+ },
300
+ () => {
301
+ if (!this.stopAnimation) {
302
+ this.loopAnimation();
303
+ }
304
+ }
305
+ );
306
+ }
307
+ }
308
+ );
309
+ // #endif
310
+ },
311
+ clickMore() {
312
+ this.$emit('getmore');
313
+ },
314
+ close() {
315
+ this.show = false;
316
+ this.$emit('close');
317
+ },
318
+ onClick() {
319
+ this.$emit('click');
320
+ }
321
+ }
322
+ };
323
+ </script>
324
+
325
+ <style scoped>
326
+ .uni-noticebar {
327
+ /* #ifndef APP-NVUE */
328
+ display: flex;
329
+ width: 100%;
330
+ box-sizing: border-box;
331
+ /* #endif */
332
+ flex-direction: row;
333
+ align-items: center;
334
+ padding: 6px 12px;
335
+ margin-bottom: 10px;
336
+ }
337
+
338
+ .uni-cursor-point {
339
+ /* #ifdef H5 */
340
+ cursor: pointer;
341
+ /* #endif */
342
+ }
343
+
344
+ .uni-noticebar-close {
345
+ margin-right: 5px;
346
+ }
347
+
348
+ .uni-noticebar-icon {
349
+ margin-right: 5px;
350
+ }
351
+
352
+ .uni-noticebar__content-wrapper {
353
+ flex: 1;
354
+ flex-direction: column;
355
+ overflow: hidden;
356
+ }
357
+
358
+ .uni-noticebar__content-wrapper--single {
359
+ /* #ifndef APP-NVUE */
360
+ line-height: 18px;
361
+ /* #endif */
362
+ }
363
+
364
+ .uni-noticebar__content-wrapper--single,
365
+ .uni-noticebar__content-wrapper--scrollable {
366
+ flex-direction: row;
367
+ }
368
+
369
+ /* #ifndef APP-NVUE */
370
+ .uni-noticebar__content-wrapper--scrollable {
371
+ position: relative;
372
+ height: 18px;
373
+ }
374
+
375
+ /* #endif */
376
+ .uni-noticebar__content--scrollable {
377
+ /* #ifdef APP-NVUE */
378
+ flex: 0;
379
+ /* #endif */
380
+ /* #ifndef APP-NVUE */
381
+ flex: 1;
382
+ display: block;
383
+ overflow: hidden;
384
+ /* #endif */
385
+ }
386
+
387
+ .uni-noticebar__content--single {
388
+ /* #ifndef APP-NVUE */
389
+ display: flex;
390
+ flex: none;
391
+ width: 100%;
392
+ justify-content: center;
393
+ /* #endif */
394
+ }
395
+
396
+ .uni-noticebar__content-text {
397
+ font-size: 14px;
398
+ line-height: 18px;
399
+ /* #ifndef APP-NVUE */
400
+ word-break: break-all;
401
+ /* #endif */
402
+ }
403
+
404
+ .uni-noticebar__content-text--single {
405
+ /* #ifdef APP-NVUE */
406
+ lines: 1;
407
+ /* #endif */
408
+ /* #ifndef APP-NVUE */
409
+ display: block;
410
+ width: 100%;
411
+ white-space: nowrap;
412
+ /* #endif */
413
+ overflow: hidden;
414
+ text-overflow: ellipsis;
415
+ }
416
+
417
+ .uni-noticebar__content-text--scrollable {
418
+ /* #ifdef APP-NVUE */
419
+ lines: 1;
420
+ padding-left: 750rpx;
421
+ /* #endif */
422
+ /* #ifndef APP-NVUE */
423
+ position: absolute;
424
+ display: block;
425
+ height: 18px;
426
+ line-height: 18px;
427
+ white-space: nowrap;
428
+ padding-left: 100%;
429
+ animation: notice 10s 0s linear infinite both;
430
+ animation-play-state: paused;
431
+ /* #endif */
432
+ }
433
+
434
+ .uni-noticebar__more {
435
+ /* #ifndef APP-NVUE */
436
+ display: inline-flex;
437
+ /* #endif */
438
+ flex-direction: row;
439
+ flex-wrap: nowrap;
440
+ align-items: center;
441
+ padding-left: 5px;
442
+ }
443
+
444
+ .uni-noticebar__more-text {
445
+ font-size: 14px;
446
+ }
447
+
448
+ @keyframes notice {
449
+ 100% {
450
+ transform: translate3d(-100%, 0, 0);
451
+ }
452
+ }
453
+ </style>
@@ -0,0 +1,223 @@
1
+ <template>
2
+ <view class="uni-numbox">
3
+ <view @click="_calcValue('minus')" class="uni-numbox__minus uni-cursor-point">
4
+ <text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue <= min || disabled }">-</text>
5
+ </view>
6
+ <input :disabled="disabled" @focus="_onFocus" @blur="_onBlur" class="uni-numbox__value" type="number" v-model="inputValue" />
7
+ <view @click="_calcValue('plus')" class="uni-numbox__plus uni-cursor-point">
8
+ <text class="uni-numbox--text" :class="{ 'uni-numbox--disabled': inputValue >= max || disabled }">+</text>
9
+ </view>
10
+ </view>
11
+ </template>
12
+ <script>
13
+ /**
14
+ * NumberBox 数字输入框
15
+ * @description 带加减按钮的数字输入框
16
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=31
17
+ * @property {Number} value 输入框当前值
18
+ * @property {Number} min 最小值
19
+ * @property {Number} max 最大值
20
+ * @property {Number} step 每次点击改变的间隔大小
21
+ * @property {Boolean} disabled = [true|false] 是否为禁用状态
22
+ * @event {Function} change 输入框值改变时触发的事件,参数为输入框当前的 value
23
+ */
24
+
25
+ export default {
26
+ name: 'cvNumberBox',
27
+ emits: ['change', 'input', 'update:modelValue', 'blur', 'focus'],
28
+ props: {
29
+ value: {
30
+ type: [Number, String],
31
+ default: 1
32
+ },
33
+ modelValue: {
34
+ type: [Number, String],
35
+ default: 1
36
+ },
37
+ min: {
38
+ type: Number,
39
+ default: 0
40
+ },
41
+ max: {
42
+ type: Number,
43
+ default: 100
44
+ },
45
+ step: {
46
+ type: Number,
47
+ default: 1
48
+ },
49
+ disabled: {
50
+ type: Boolean,
51
+ default: false
52
+ }
53
+ },
54
+ data() {
55
+ return {
56
+ inputValue: 0
57
+ };
58
+ },
59
+ watch: {
60
+ value(val) {
61
+ this.inputValue = +val;
62
+ },
63
+ modelValue(val) {
64
+ this.inputValue = +val;
65
+ }
66
+ },
67
+ created() {
68
+ if (this.value === 1) {
69
+ this.inputValue = +this.modelValue;
70
+ }
71
+ if (this.modelValue === 1) {
72
+ this.inputValue = +this.value;
73
+ }
74
+ },
75
+ methods: {
76
+ _calcValue(type) {
77
+ if (this.disabled) {
78
+ return;
79
+ }
80
+ const scale = this._getDecimalScale();
81
+ let value = this.inputValue * scale;
82
+ let step = this.step * scale;
83
+ if (type === 'minus') {
84
+ value -= step;
85
+ if (value < this.min * scale) {
86
+ return;
87
+ }
88
+ if (value > this.max * scale) {
89
+ value = this.max * scale;
90
+ }
91
+ }
92
+
93
+ if (type === 'plus') {
94
+ value += step;
95
+ if (value > this.max * scale) {
96
+ return;
97
+ }
98
+ if (value < this.min * scale) {
99
+ value = this.min * scale;
100
+ }
101
+ }
102
+
103
+ this.inputValue = (value / scale).toFixed(String(scale).length - 1);
104
+ this.$emit('change', +this.inputValue);
105
+ // TODO vue2 兼容
106
+ this.$emit('input', +this.inputValue);
107
+ // TODO vue3 兼容
108
+ this.$emit('update:modelValue', +this.inputValue);
109
+ },
110
+ _getDecimalScale() {
111
+ let scale = 1;
112
+ // 浮点型
113
+ if (~~this.step !== this.step) {
114
+ scale = Math.pow(10, String(this.step).split('.')[1].length);
115
+ }
116
+ return scale;
117
+ },
118
+ _onBlur(event) {
119
+ this.$emit('blur', event);
120
+ let value = event.detail.value;
121
+ if (!value) {
122
+ // this.inputValue = 0;
123
+ return;
124
+ }
125
+ value = +value;
126
+ if (value > this.max) {
127
+ value = this.max;
128
+ } else if (value < this.min) {
129
+ value = this.min;
130
+ }
131
+ const scale = this._getDecimalScale();
132
+ this.inputValue = value.toFixed(String(scale).length - 1);
133
+ this.$emit('change', +this.inputValue);
134
+ this.$emit('input', +this.inputValue);
135
+ },
136
+ _onFocus(event) {
137
+ this.$emit('focus', event);
138
+ }
139
+ }
140
+ };
141
+ </script>
142
+ <style scoped>
143
+ /* #ifdef APP-NVUE */
144
+ /* #endif */
145
+ .uni-numbox {
146
+ /* #ifndef APP-NVUE */
147
+ display: flex;
148
+ /* #endif */
149
+ flex-direction: row;
150
+ height: 35px;
151
+ line-height: 35px;
152
+ width: 120px;
153
+ }
154
+
155
+ .uni-cursor-point {
156
+ /* #ifdef H5 */
157
+ cursor: pointer;
158
+ /* #endif */
159
+ }
160
+
161
+ .uni-numbox__value {
162
+ background-color: #ffffff;
163
+ width: 50px;
164
+ height: 35px;
165
+ text-align: center;
166
+ font-size: 16px;
167
+ border-width: 1rpx;
168
+ border-style: solid;
169
+ border-color: #e5e5e5;
170
+ border-left-width: 0;
171
+ border-right-width: 0;
172
+ }
173
+
174
+ .uni-numbox__minus {
175
+ /* #ifndef APP-NVUE */
176
+ display: flex;
177
+ /* #endif */
178
+ flex-direction: row;
179
+ align-items: center;
180
+ justify-content: center;
181
+ width: 35px;
182
+ height: 35px;
183
+ font-size: 20px;
184
+ color: #333;
185
+ background-color: #f8f8f8;
186
+ border-width: 1rpx;
187
+ border-style: solid;
188
+ border-color: #e5e5e5;
189
+ border-top-left-radius: 3px;
190
+ border-bottom-left-radius: 3px;
191
+ border-right-width: 0;
192
+ }
193
+
194
+ .uni-numbox__plus {
195
+ /* #ifndef APP-NVUE */
196
+ display: flex;
197
+ /* #endif */
198
+ flex-direction: row;
199
+ align-items: center;
200
+ justify-content: center;
201
+ width: 35px;
202
+ height: 35px;
203
+ border-width: 1rpx;
204
+ border-style: solid;
205
+ border-color: #e5e5e5;
206
+ border-top-right-radius: 3px;
207
+ border-bottom-right-radius: 3px;
208
+ background-color: #f8f8f8;
209
+ border-left-width: 0;
210
+ }
211
+
212
+ .uni-numbox--text {
213
+ font-size: 20px;
214
+ color: #333;
215
+ }
216
+
217
+ .uni-numbox--disabled {
218
+ color: #c0c0c0;
219
+ /* #ifdef H5 */
220
+ cursor: not-allowed;
221
+ /* #endif */
222
+ }
223
+ </style>