@10yun/cv-mobile-ui 0.4.2 → 0.4.3

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 (166) hide show
  1. package/package.json +1 -1
  2. package/ui-uni/amap-wx/js/util.js +166 -158
  3. package/ui-uni/page-foot/page-foot.vue +38 -0
  4. package/ui-uni/page-head/page-head.vue +16 -0
  5. package/ui-uni/product.vue +52 -52
  6. package/ui-uni/u-charts/u-charts.js +743 -1092
  7. package/ui-uni/u-link/u-link.vue +59 -0
  8. package/ui-uni/uni-badge/uni-badge.vue +250 -0
  9. package/ui-uni/uni-calendar/calendar.js +546 -0
  10. package/ui-uni/uni-calendar/uni-calendar-item.vue +171 -0
  11. package/ui-uni/uni-calendar/uni-calendar.vue +504 -0
  12. package/{ui-cv/cv-calendar → ui-uni/uni-calendar}/util.js +0 -0
  13. package/ui-uni/uni-card/uni-card.vue +420 -0
  14. package/ui-uni/uni-col/uni-col.vue +2968 -0
  15. package/ui-uni/uni-collapse/uni-collapse.vue +146 -0
  16. package/ui-uni/uni-collapse-item/uni-collapse-item.vue +378 -0
  17. package/ui-uni/uni-combox/uni-combox.vue +237 -0
  18. package/ui-uni/uni-countdown/uni-countdown.vue +234 -0
  19. package/ui-uni/uni-data-checkbox/uni-data-checkbox.vue +792 -0
  20. package/{ui-cv/cv-data-indexed-list → ui-uni/uni-data-indexed-list}/clientdb.js +0 -0
  21. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list-item.vue +142 -0
  22. package/ui-uni/uni-data-indexed-list/uni-data-indexed-list.vue +364 -0
  23. package/{ui-cv/cv-data-picker → ui-uni/uni-data-picker}/keypress.js +0 -0
  24. package/ui-uni/uni-data-picker/uni-data-picker.vue +468 -0
  25. package/{ui-cv/cv-data-pickerview/cv-data-picker.js → ui-uni/uni-data-pickerview/uni-data-picker.js} +0 -0
  26. package/ui-uni/uni-data-pickerview/uni-data-pickerview.vue +298 -0
  27. package/{ui-cv/cv-dateformat → ui-uni/uni-dateformat}/date-format.js +0 -0
  28. package/ui-uni/uni-dateformat/uni-dateformat.vue +88 -0
  29. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/calendar-item.vue +0 -0
  30. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/calendar.js +0 -0
  31. package/ui-uni/uni-datetime-picker/calendar.vue +747 -0
  32. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/keypress.js +0 -0
  33. package/ui-uni/uni-datetime-picker/time-picker.vue +899 -0
  34. package/ui-uni/uni-datetime-picker/uni-datetime-picker.vue +874 -0
  35. package/{ui-cv/cv-datetime-picker → ui-uni/uni-datetime-picker}/util.js +0 -0
  36. package/ui-uni/uni-drawer/keypress.js +45 -0
  37. package/ui-uni/uni-drawer/uni-drawer.vue +178 -0
  38. package/{ui-cv/cv-easyinput → ui-uni/uni-easyinput}/common.js +0 -0
  39. package/ui-uni/uni-easyinput/uni-easyinput.vue +438 -0
  40. package/ui-uni/uni-fab/uni-fab.vue +443 -0
  41. package/{ui-cv/cv-fab/cv-fab.vue.bak → ui-uni/uni-fab/uni-fab.vue.bak} +2 -2
  42. package/ui-uni/uni-fav/uni-fav.vue +136 -0
  43. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/choose-and-upload-file.js +0 -0
  44. package/ui-uni/uni-file-picker/uni-file-picker.vue +614 -0
  45. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/upload-file.vue +0 -0
  46. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/upload-image.vue +0 -0
  47. package/{ui-cv/cv-file-picker → ui-uni/uni-file-picker}/utils.js +0 -0
  48. package/ui-uni/uni-forms/uni-forms.vue +467 -0
  49. package/ui-uni/uni-forms/validate.js +486 -0
  50. package/ui-uni/uni-forms-item/uni-forms-item.vue +500 -0
  51. package/{ui-cv/cv-goods-nav/cv-goods-nav.vue → ui-uni/uni-goods-nav/uni-goods-nav.vue} +1 -1
  52. package/ui-uni/uni-grid/uni-grid.vue +141 -0
  53. package/ui-uni/uni-grid-item/uni-grid-item.vue +123 -0
  54. package/ui-uni/uni-group/uni-group.vue +123 -0
  55. package/ui-uni/uni-icons/icons.js +132 -0
  56. package/ui-uni/uni-icons/uni-icons.vue +72 -0
  57. package/{ui-cv/cv-icon2 → ui-uni/uni-icons}/uni.ttf +0 -0
  58. package/ui-uni/uni-indexed-list/uni-indexed-list-item.vue +142 -0
  59. package/ui-uni/uni-indexed-list/uni-indexed-list.vue +357 -0
  60. package/ui-uni/uni-link/uni-link.vue +117 -0
  61. package/ui-uni/uni-list/uni-list.vue +107 -0
  62. package/ui-uni/uni-list/uni-refresh.vue +65 -0
  63. package/{ui-cv/cv-list → ui-uni/uni-list}/uni-refresh.wxs +0 -0
  64. package/ui-uni/uni-list-ad/uni-list-ad.vue +106 -0
  65. package/{ui-cv/cv-list-chat/cv-list-chat.scss → ui-uni/uni-list-chat/uni-list-chat.scss} +0 -0
  66. package/{ui-cv/cv-list-chat/cv-list-chat.vue → ui-uni/uni-list-chat/uni-list-chat.vue} +0 -0
  67. package/ui-uni/uni-list-item/uni-list-item.vue +428 -0
  68. package/ui-uni/uni-load-more/uni-load-more.vue +366 -0
  69. package/ui-uni/uni-nav-bar/uni-nav-bar.vue +244 -0
  70. package/{ui-cv/cv-nav-bar/cv-status-bar.vue → ui-uni/uni-nav-bar/uni-status-bar.vue} +0 -0
  71. package/ui-uni/uni-notice-bar/uni-notice-bar.vue +394 -0
  72. package/ui-uni/uni-number-box/uni-number-box.vue +224 -0
  73. package/ui-uni/uni-pagination/uni-pagination.vue +376 -0
  74. package/{ui-cv/cv-popup → ui-uni/uni-popup}/keypress.js +0 -0
  75. package/{ui-cv/cv-popup → ui-uni/uni-popup}/popup.js +0 -0
  76. package/ui-uni/uni-popup/uni-popup.vue +412 -0
  77. package/{ui-cv/cv-popup-dialog → ui-uni/uni-popup-dialog}/keypress.js +0 -0
  78. package/{ui-cv/cv-popup-dialog/cv-popup-dialog.vue → ui-uni/uni-popup-dialog/uni-popup-dialog.vue} +0 -0
  79. package/ui-uni/uni-popup-message/uni-popup-message.vue +143 -0
  80. package/{ui-cv/cv-popup-share/cv-popup-share.vue → ui-uni/uni-popup-share/uni-popup-share.vue} +0 -0
  81. package/ui-uni/uni-rate/uni-rate.vue +357 -0
  82. package/ui-uni/uni-row/uni-row.vue +155 -0
  83. package/ui-uni/uni-search-bar/uni-search-bar.vue +262 -0
  84. package/{ui-cv/cv-section/cv-section.vue → ui-uni/uni-section/uni-section.vue} +0 -0
  85. package/{ui-cv/cv-segmented-control/cv-segmented-control.vue → ui-uni/uni-segmented-control/uni-segmented-control.vue} +0 -0
  86. package/{ui-cv/cv-status-bar/cv-status-bar.vue → ui-uni/uni-status-bar/uni-status-bar.vue} +0 -0
  87. package/ui-uni/uni-steps/uni-steps.vue +250 -0
  88. package/{ui-cv/cv-swipe-action/cv-swipe-action.vue → ui-uni/uni-swipe-action/uni-swipe-action.vue} +0 -0
  89. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/bindingx.js +0 -0
  90. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/index.wxs +0 -0
  91. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/isPC.js +0 -0
  92. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpalipay.js +0 -0
  93. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpother.js +0 -0
  94. package/{ui-cv/cv-swipe-action-item → ui-uni/uni-swipe-action-item}/mpwxs.js +0 -0
  95. package/{ui-cv/cv-swipe-action-item/cv-swipe-action-item.vue → ui-uni/uni-swipe-action-item/uni-swipe-action-item.vue} +0 -0
  96. package/ui-uni/uni-swiper-dot/uni-swiper-dot.vue +205 -0
  97. package/ui-uni/uni-table/uni-table.vue +455 -0
  98. package/ui-uni/uni-tag/uni-tag.vue +283 -0
  99. package/ui-uni/uni-tbody/uni-tbody.vue +30 -0
  100. package/ui-uni/uni-td/uni-td.vue +88 -0
  101. package/{ui-cv/cv-test/cv-test.vue → ui-uni/uni-test/uni-test.vue} +0 -0
  102. package/{ui-cv/cv-th → ui-uni/uni-th}/filter-dropdown.vue +0 -0
  103. package/ui-uni/uni-th/uni-th.vue +259 -0
  104. package/ui-uni/uni-thead/uni-thead.vue +114 -0
  105. package/ui-uni/uni-title/uni-title.vue +171 -0
  106. package/{ui-cv/cv-tr → ui-uni/uni-tr}/table-checkbox.vue +0 -0
  107. package/ui-uni/uni-tr/uni-tr.vue +156 -0
  108. package/{ui-cv/cv-transition → ui-uni/uni-transition}/createAnimation.js +0 -0
  109. package/ui-uni/uni-transition/uni-transition.vue +287 -0
  110. package/ui-cv/cv-badge/cv-badge.vue +0 -249
  111. package/ui-cv/cv-calendar/calendar.js +0 -963
  112. package/ui-cv/cv-calendar/cv-calendar-item.vue +0 -198
  113. package/ui-cv/cv-calendar/cv-calendar.vue +0 -508
  114. package/ui-cv/cv-card/cv-card.vue +0 -427
  115. package/ui-cv/cv-col/cv-col.vue +0 -2965
  116. package/ui-cv/cv-collapse/cv-collapse.vue +0 -146
  117. package/ui-cv/cv-collapse-item/cv-collapse-item.vue +0 -395
  118. package/ui-cv/cv-combox/cv-combox.vue +0 -250
  119. package/ui-cv/cv-countdown/cv-countdown.vue +0 -245
  120. package/ui-cv/cv-data-checkbox/cv-data-checkbox.vue +0 -841
  121. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list-item.vue +0 -154
  122. package/ui-cv/cv-data-indexed-list/cv-data-indexed-list.vue +0 -376
  123. package/ui-cv/cv-data-picker/cv-data-picker.vue +0 -486
  124. package/ui-cv/cv-data-pickerview/cv-data-pickerview.vue +0 -304
  125. package/ui-cv/cv-dateformat/cv-dateformat.vue +0 -86
  126. package/ui-cv/cv-datetime-picker/calendar.vue +0 -761
  127. package/ui-cv/cv-datetime-picker/cv-datetime-picker.vue +0 -958
  128. package/ui-cv/cv-datetime-picker/time-picker.vue +0 -907
  129. package/ui-cv/cv-drawer/cv-drawer.vue +0 -185
  130. package/ui-cv/cv-drawer/keypress.js +0 -45
  131. package/ui-cv/cv-easyinput/cv-easyinput.vue +0 -514
  132. package/ui-cv/cv-fab/cv-fab.vue +0 -465
  133. package/ui-cv/cv-fav/cv-fav.vue +0 -150
  134. package/ui-cv/cv-file-picker/cv-file-picker.vue +0 -619
  135. package/ui-cv/cv-form-base/cv-form-base.vue +0 -470
  136. package/ui-cv/cv-form-base/validate.js +0 -477
  137. package/ui-cv/cv-grid-group/cv-grid-group.vue +0 -148
  138. package/ui-cv/cv-grid-item/cv-grid-item.vue +0 -132
  139. package/ui-cv/cv-icon2/cv-icon2.vue +0 -78
  140. package/ui-cv/cv-icon2/icons.js +0 -132
  141. package/ui-cv/cv-indexed-list/cv-indexed-list-item.vue +0 -154
  142. package/ui-cv/cv-indexed-list/cv-indexed-list.vue +0 -371
  143. package/ui-cv/cv-link2/cv-link2.vue +0 -130
  144. package/ui-cv/cv-list/cv-list.vue +0 -107
  145. package/ui-cv/cv-list/cv-refresh.vue +0 -65
  146. package/ui-cv/cv-list-ad/cv-list-ad.vue +0 -113
  147. package/ui-cv/cv-list-item/cv-list-item.vue +0 -449
  148. package/ui-cv/cv-nav-bar/cv-nav-bar.vue +0 -256
  149. package/ui-cv/cv-notice-bar/cv-notice-bar.vue +0 -453
  150. package/ui-cv/cv-number-box/cv-number-box.vue +0 -223
  151. package/ui-cv/cv-pagination/cv-pagination.vue +0 -397
  152. package/ui-cv/cv-popup/cv-popup.vue +0 -429
  153. package/ui-cv/cv-popup-message/cv-popup-message.vue +0 -143
  154. package/ui-cv/cv-row/cv-row.vue +0 -157
  155. package/ui-cv/cv-search-bar/cv-search-bar.vue +0 -280
  156. package/ui-cv/cv-steps/cv-steps.vue +0 -293
  157. package/ui-cv/cv-swiper-dot/cv-swiper-dot.vue +0 -255
  158. package/ui-cv/cv-table/cv-table.vue +0 -460
  159. package/ui-cv/cv-tag/cv-tag.vue +0 -276
  160. package/ui-cv/cv-tbody/cv-tbody.vue +0 -28
  161. package/ui-cv/cv-td/cv-td.vue +0 -93
  162. package/ui-cv/cv-th/cv-th.vue +0 -270
  163. package/ui-cv/cv-thead/cv-thead.vue +0 -114
  164. package/ui-cv/cv-title/cv-title.vue +0 -168
  165. package/ui-cv/cv-tr/cv-tr.vue +0 -166
  166. package/ui-cv/cv-transition/cv-transition.vue +0 -279
@@ -1,256 +0,0 @@
1
- <template>
2
- <view class="uni-navbar">
3
- <view
4
- :class="{ 'uni-navbar--fixed': fixed, 'uni-navbar--shadow': shadow, 'uni-navbar--border': border }"
5
- :style="{ 'background-color': backgroundColor }"
6
- class="uni-navbar__content"
7
- >
8
- <status-bar v-if="statusBar" />
9
- <view :style="{ color: color, backgroundColor: backgroundColor }" class="uni-navbar__header uni-navbar__content_view">
10
- <view @tap="onClickLeft" class="uni-navbar__header-btns uni-navbar__header-btns-left uni-navbar__content_view">
11
- <view class="uni-navbar__content_view" v-if="leftIcon.length">
12
- <cv-icon2 :color="color" :type="leftIcon" size="24" />
13
- </view>
14
- <view
15
- :class="{ 'uni-navbar-btn-icon-left': !leftIcon.length }"
16
- class="uni-navbar-btn-text uni-navbar__content_view"
17
- v-if="leftText.length"
18
- >
19
- <text :style="{ color: color, fontSize: '14px' }">{{ leftText }}</text>
20
- </view>
21
- <slot name="left" />
22
- </view>
23
- <view class="uni-navbar__header-container uni-navbar__content_view" @tap="onClickTitle">
24
- <view class="uni-navbar__header-container-inner uni-navbar__content_view" v-if="title.length">
25
- <text class="uni-nav-bar-text" :style="{ color: color }">{{ title }}</text>
26
- </view>
27
- <!-- 标题插槽 -->
28
- <slot />
29
- </view>
30
- <view
31
- :class="title.length ? 'uni-navbar__header-btns-right' : ''"
32
- @tap="onClickRight"
33
- class="uni-navbar__header-btns uni-navbar__content_view"
34
- >
35
- <view class="uni-navbar__content_view" v-if="rightIcon.length">
36
- <cv-icon2 :color="color" :type="rightIcon" size="24" />
37
- </view>
38
- <!-- 优先显示图标 -->
39
- <view class="uni-navbar-btn-text uni-navbar__content_view" v-if="rightText.length && !rightIcon.length">
40
- <text class="uni-nav-bar-right-text">{{ rightText }}</text>
41
- </view>
42
- <slot name="right" />
43
- </view>
44
- </view>
45
- </view>
46
- <view class="uni-navbar__placeholder" v-if="fixed">
47
- <status-bar v-if="statusBar" />
48
- <view class="uni-navbar__placeholder-view" />
49
- </view>
50
- </view>
51
- </template>
52
-
53
- <script>
54
- import statusBar from './cv-status-bar.vue';
55
-
56
- /**
57
- * NavBar 自定义导航栏
58
- * @description 导航栏组件,主要用于头部导航
59
- * @tutorial https://ext.dcloud.net.cn/plugin?id=52
60
- * @property {String} title 标题文字
61
- * @property {String} leftText 左侧按钮文本
62
- * @property {String} rightText 右侧按钮文本
63
- * @property {String} leftIcon 左侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
64
- * @property {String} rightIcon 右侧按钮图标(图标类型参考 [Icon 图标](http://ext.dcloud.net.cn/plugin?id=28) type 属性)
65
- * @property {String} color 图标和文字颜色
66
- * @property {String} backgroundColor 导航栏背景颜色
67
- * @property {Boolean} fixed = [true|false] 是否固定顶部
68
- * @property {Boolean} statusBar = [true|false] 是否包含状态栏
69
- * @property {Boolean} shadow = [true|false] 导航栏下是否有阴影
70
- * @event {Function} clickLeft 左侧按钮点击时触发
71
- * @event {Function} clickRight 右侧按钮点击时触发
72
- * @event {Function} clickTitle 中间标题点击时触发
73
- */
74
- export default {
75
- name: 'cvNavBar',
76
- components: {
77
- statusBar
78
- },
79
- emits: ['clickLeft', 'clickRight', 'clickTitle'],
80
- props: {
81
- title: {
82
- type: String,
83
- default: ''
84
- },
85
- leftText: {
86
- type: String,
87
- default: ''
88
- },
89
- rightText: {
90
- type: String,
91
- default: ''
92
- },
93
- leftIcon: {
94
- type: String,
95
- default: ''
96
- },
97
- rightIcon: {
98
- type: String,
99
- default: ''
100
- },
101
- fixed: {
102
- type: [Boolean, String],
103
- default: false
104
- },
105
- color: {
106
- type: String,
107
- default: '#000000'
108
- },
109
- backgroundColor: {
110
- type: String,
111
- default: '#FFFFFF'
112
- },
113
- statusBar: {
114
- type: [Boolean, String],
115
- default: false
116
- },
117
- shadow: {
118
- type: [Boolean, String],
119
- default: false
120
- },
121
- border: {
122
- type: [Boolean, String],
123
- default: true
124
- }
125
- },
126
- mounted() {
127
- if (uni.report && this.title !== '') {
128
- uni.report('title', this.title);
129
- }
130
- },
131
- methods: {
132
- onClickLeft() {
133
- this.$emit('clickLeft');
134
- },
135
- onClickRight() {
136
- this.$emit('clickRight');
137
- },
138
- onClickTitle() {
139
- this.$emit('clickTitle');
140
- }
141
- }
142
- };
143
- </script>
144
-
145
- <style scoped>
146
- .uni-nav-bar-text {
147
- /* #ifdef APP-PLUS */
148
- font-size: 34rpx;
149
- /* #endif */
150
- /* #ifndef APP-PLUS */
151
- font-size: 16px;
152
- /* #endif */
153
- }
154
-
155
- .uni-nav-bar-right-text {
156
- font-size: 14px;
157
- }
158
-
159
- .uni-navbar__content {
160
- position: relative;
161
- background-color: #ffffff;
162
- overflow: hidden;
163
- }
164
-
165
- .uni-navbar__content_view {
166
- /* #ifndef APP-NVUE */
167
- display: flex;
168
- /* #endif */
169
- align-items: center;
170
- flex-direction: row;
171
- }
172
-
173
- .uni-navbar__header {
174
- /* #ifndef APP-NVUE */
175
- display: flex;
176
- /* #endif */
177
- flex-direction: row;
178
- height: 44px;
179
- line-height: 44px;
180
- font-size: 16px;
181
- }
182
-
183
- .uni-navbar__header-btns {
184
- /* #ifndef APP-NVUE */
185
- display: flex;
186
- /* #endif */
187
- flex-wrap: nowrap;
188
- width: 120rpx;
189
- padding: 0 6px;
190
- justify-content: center;
191
- align-items: center;
192
- /* #ifdef H5 */
193
- cursor: pointer;
194
- /* #endif */
195
- }
196
-
197
- .uni-navbar__header-btns-left {
198
- /* #ifndef APP-NVUE */
199
- display: flex;
200
- /* #endif */
201
- width: 150rpx;
202
- justify-content: flex-start;
203
- }
204
-
205
- .uni-navbar__header-btns-right {
206
- /* #ifndef APP-NVUE */
207
- display: flex;
208
- /* #endif */
209
- width: 150rpx;
210
- padding-right: 30rpx;
211
- justify-content: flex-end;
212
- }
213
-
214
- .uni-navbar__header-container {
215
- flex: 1;
216
- }
217
-
218
- .uni-navbar__header-container-inner {
219
- /* #ifndef APP-NVUE */
220
- display: flex;
221
- /* #endif */
222
- flex: 1;
223
- align-items: center;
224
- justify-content: center;
225
- font-size: 14px;
226
- }
227
-
228
- .uni-navbar__placeholder-view {
229
- height: 44px;
230
- }
231
-
232
- .uni-navbar--fixed {
233
- position: fixed;
234
- z-index: 998;
235
- /* #ifdef H5 */
236
- left: var(--window-left);
237
- right: var(--window-right);
238
- /* #endif */
239
- /* #ifndef H5 */
240
- left: 0;
241
- right: 0;
242
- /* #endif */
243
- }
244
-
245
- .uni-navbar--shadow {
246
- /* #ifndef APP-NVUE */
247
- box-shadow: 0 1px 6px #ccc;
248
- /* #endif */
249
- }
250
-
251
- .uni-navbar--border {
252
- border-bottom-width: 1rpx;
253
- border-bottom-style: solid;
254
- border-bottom-color: #e5e5e5;
255
- }
256
- </style>
@@ -1,453 +0,0 @@
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>