@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,371 @@
1
+ <template>
2
+ <view class="uni-indexed-list" ref="list" id="list">
3
+ <!-- #ifdef APP-NVUE -->
4
+ <list class="uni-indexed-list__scroll" scrollable="true" show-scrollbar="false">
5
+ <cell v-for="(list, idx) in lists" :key="idx" :ref="'uni-indexed-list-' + idx">
6
+ <!-- #endif -->
7
+ <!-- #ifndef APP-NVUE -->
8
+ <scroll-view :scroll-into-view="scrollViewId" class="uni-indexed-list__scroll" scroll-y>
9
+ <view v-for="(list, idx) in lists" :key="idx" :id="'uni-indexed-list-' + idx">
10
+ <!-- #endif -->
11
+ <indexed-list-item
12
+ :list="list"
13
+ :loaded="loaded"
14
+ :idx="idx"
15
+ :showSelect="showSelect"
16
+ @itemClick="onClick"
17
+ ></indexed-list-item>
18
+ <!-- #ifndef APP-NVUE -->
19
+ </view>
20
+ </scroll-view>
21
+ <!-- #endif -->
22
+ <!-- #ifdef APP-NVUE -->
23
+ </cell>
24
+ </list>
25
+ <!-- #endif -->
26
+ <view
27
+ class="uni-indexed-list__menu"
28
+ :class="touchmove ? 'uni-indexed-list__menu--active' : ''"
29
+ @touchstart="touchStart"
30
+ @touchmove.stop.prevent="touchMove"
31
+ @touchend="touchEnd"
32
+ @mousedown.stop="mousedown"
33
+ @mousemove.stop.prevent="mousemove"
34
+ @mouseleave.stop="mouseleave"
35
+ >
36
+ <view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item">
37
+ <text class="uni-indexed-list__menu-text" :class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">
38
+ {{ list.key }}
39
+ </text>
40
+ </view>
41
+ </view>
42
+ <view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
43
+ <text class="uni-indexed-list__alert">{{ lists[touchmoveIndex].key }}</text>
44
+ </view>
45
+ </view>
46
+ </template>
47
+ <script>
48
+ import indexedListItem from './uni-indexed-list-item.vue';
49
+ // #ifdef APP-NVUE
50
+ const dom = weex.requireModule('dom');
51
+ // #endif
52
+ // #ifdef APP-PLUS
53
+ function throttle(func, delay) {
54
+ var prev = Date.now();
55
+ return function () {
56
+ var context = this;
57
+ var args = arguments;
58
+ var now = Date.now();
59
+ if (now - prev >= delay) {
60
+ func.apply(context, args);
61
+ prev = Date.now();
62
+ }
63
+ };
64
+ }
65
+
66
+ function touchMove(e) {
67
+ let pageY = e.touches[0].pageY;
68
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
69
+ if (this.touchmoveIndex === index) {
70
+ return false;
71
+ }
72
+ let item = this.lists[index];
73
+ if (item) {
74
+ // #ifndef APP-NVUE
75
+ this.scrollViewId = 'uni-indexed-list-' + index;
76
+ this.touchmoveIndex = index;
77
+ // #endif
78
+ // #ifdef APP-NVUE
79
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
80
+ animated: false
81
+ });
82
+ this.touchmoveIndex = index;
83
+ // #endif
84
+ }
85
+ }
86
+ const throttleTouchMove = throttle(touchMove, 40);
87
+ // #endif
88
+
89
+ /**
90
+ * IndexedList 索引列表
91
+ * @description 用于展示索引列表
92
+ * @tutorial https://ext.dcloud.net.cn/plugin?id=375
93
+ * @property {Boolean} showSelect = [true|false] 展示模式
94
+ * @value true 展示模式
95
+ * @value false 选择模式
96
+ * @property {Object} options 索引列表需要的数据对象
97
+ * @event {Function} click 点击列表事件 ,返回当前选择项的事件对象
98
+ * @example <uni-indexed-list options="" showSelect="false" @click=""></uni-indexed-list>
99
+ */
100
+ export default {
101
+ name: 'UniIndexedList',
102
+ components: {
103
+ indexedListItem
104
+ },
105
+ emits: ['click'],
106
+ props: {
107
+ options: {
108
+ type: Array,
109
+ default() {
110
+ return [];
111
+ }
112
+ },
113
+ showSelect: {
114
+ type: Boolean,
115
+ default: false
116
+ }
117
+ },
118
+ data() {
119
+ return {
120
+ lists: [],
121
+ winHeight: 0,
122
+ itemHeight: 0,
123
+ winOffsetY: 0,
124
+ touchmove: false,
125
+ touchmoveIndex: -1,
126
+ scrollViewId: '',
127
+ touchmovable: true,
128
+ loaded: false,
129
+ isPC: false
130
+ };
131
+ },
132
+ watch: {
133
+ options: {
134
+ handler: function () {
135
+ this.setList();
136
+ },
137
+ deep: true
138
+ }
139
+ },
140
+ mounted() {
141
+ // #ifdef H5
142
+ this.isPC = this.IsPC();
143
+ // #endif
144
+ setTimeout(() => {
145
+ this.setList();
146
+ }, 50);
147
+ setTimeout(() => {
148
+ this.loaded = true;
149
+ }, 300);
150
+ },
151
+ methods: {
152
+ setList() {
153
+ let index = 0;
154
+ this.lists = [];
155
+ this.options.forEach((value, index) => {
156
+ if (value.data.length === 0) {
157
+ return;
158
+ }
159
+ let indexBefore = index;
160
+ let items = value.data.map((item) => {
161
+ let obj = {};
162
+ obj['key'] = value.letter;
163
+ obj['name'] = item;
164
+ obj['itemIndex'] = index;
165
+ index++;
166
+ obj.checked = item.checked ? item.checked : false;
167
+ return obj;
168
+ });
169
+ this.lists.push({
170
+ title: value.letter,
171
+ key: value.letter,
172
+ items: items,
173
+ itemIndex: indexBefore
174
+ });
175
+ });
176
+ // #ifndef APP-NVUE
177
+ uni
178
+ .createSelectorQuery()
179
+ .in(this)
180
+ .select('#list')
181
+ .boundingClientRect()
182
+ .exec((ret) => {
183
+ this.winOffsetY = ret[0].top;
184
+ this.winHeight = ret[0].height;
185
+ this.itemHeight = this.winHeight / this.lists.length;
186
+ });
187
+ // #endif
188
+ // #ifdef APP-NVUE
189
+ dom.getComponentRect(this.$refs['list'], (res) => {
190
+ this.winOffsetY = res.size.top;
191
+ this.winHeight = res.size.height;
192
+ this.itemHeight = this.winHeight / this.lists.length;
193
+ });
194
+ // #endif
195
+ },
196
+ touchStart(e) {
197
+ this.touchmove = true;
198
+ let pageY = this.isPC ? e.pageY : e.touches[0].pageY;
199
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
200
+ let item = this.lists[index];
201
+ if (item) {
202
+ this.scrollViewId = 'uni-indexed-list-' + index;
203
+ this.touchmoveIndex = index;
204
+ // #ifdef APP-NVUE
205
+ dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
206
+ animated: false
207
+ });
208
+ // #endif
209
+ }
210
+ },
211
+ touchMove(e) {
212
+ // #ifndef APP-PLUS
213
+ let pageY = this.isPC ? e.pageY : e.touches[0].pageY;
214
+ let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight);
215
+ if (this.touchmoveIndex === index) {
216
+ return false;
217
+ }
218
+ let item = this.lists[index];
219
+ if (item) {
220
+ this.scrollViewId = 'uni-indexed-list-' + index;
221
+ this.touchmoveIndex = index;
222
+ }
223
+ // #endif
224
+ // #ifdef APP-PLUS
225
+ throttleTouchMove.call(this, e);
226
+ // #endif
227
+ },
228
+ touchEnd() {
229
+ this.touchmove = false;
230
+ this.touchmoveIndex = -1;
231
+ },
232
+
233
+ /**
234
+ * 兼容 PC @tian
235
+ */
236
+
237
+ mousedown(e) {
238
+ if (!this.isPC) return;
239
+ this.touchStart(e);
240
+ },
241
+ mousemove(e) {
242
+ if (!this.isPC) return;
243
+ this.touchMove(e);
244
+ },
245
+ mouseleave(e) {
246
+ if (!this.isPC) return;
247
+ this.touchEnd(e);
248
+ },
249
+
250
+ // #ifdef H5
251
+ IsPC() {
252
+ var userAgentInfo = navigator.userAgent;
253
+ var Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'];
254
+ var flag = true;
255
+ for (let v = 0; v < Agents.length - 1; v++) {
256
+ if (userAgentInfo.indexOf(Agents[v]) > 0) {
257
+ flag = false;
258
+ break;
259
+ }
260
+ }
261
+ return flag;
262
+ },
263
+ // #endif
264
+
265
+ onClick(e) {
266
+ let { idx, index } = e;
267
+ let obj = {};
268
+ for (let key in this.lists[idx].items[index]) {
269
+ obj[key] = this.lists[idx].items[index][key];
270
+ }
271
+ let select = [];
272
+ if (this.showSelect) {
273
+ this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked;
274
+ this.lists.forEach((value, idx) => {
275
+ value.items.forEach((item, index) => {
276
+ if (item.checked) {
277
+ let obj = {};
278
+ for (let key in this.lists[idx].items[index]) {
279
+ obj[key] = this.lists[idx].items[index][key];
280
+ }
281
+ select.push(obj);
282
+ }
283
+ });
284
+ });
285
+ }
286
+ this.$emit('click', {
287
+ item: obj,
288
+ select: select
289
+ });
290
+ }
291
+ }
292
+ };
293
+ </script>
294
+ <style scoped>
295
+ .uni-indexed-list {
296
+ position: absolute;
297
+ left: 0;
298
+ top: 0;
299
+ right: 0;
300
+ bottom: 0;
301
+ /* #ifndef APP-NVUE */
302
+ display: flex;
303
+ /* #endif */
304
+ flex-direction: row;
305
+ }
306
+
307
+ .uni-indexed-list__scroll {
308
+ flex: 1;
309
+ }
310
+
311
+ .uni-indexed-list__menu {
312
+ width: 24px;
313
+ background-color: lightgrey;
314
+ /* #ifndef APP-NVUE */
315
+ display: flex;
316
+ /* #endif */
317
+ flex-direction: column;
318
+ }
319
+
320
+ .uni-indexed-list__menu-item {
321
+ /* #ifndef APP-NVUE */
322
+ display: flex;
323
+ /* #endif */
324
+ flex: 1;
325
+ align-items: center;
326
+ justify-content: center;
327
+ /* #ifdef H5 */
328
+ cursor: pointer;
329
+ /* #endif */
330
+ }
331
+
332
+ .uni-indexed-list__menu-text {
333
+ line-height: 20px;
334
+ font-size: 12px;
335
+ text-align: center;
336
+ color: #aaa;
337
+ }
338
+
339
+ .uni-indexed-list__menu--active {
340
+ background-color: #c8c8c8;
341
+ }
342
+
343
+ .uni-indexed-list__menu-text--active {
344
+ color: #007aff;
345
+ }
346
+
347
+ .uni-indexed-list__alert-wrapper {
348
+ position: absolute;
349
+ left: 0;
350
+ top: 0;
351
+ right: 0;
352
+ bottom: 0;
353
+ /* #ifndef APP-NVUE */
354
+ display: flex;
355
+ /* #endif */
356
+ flex-direction: row;
357
+ align-items: center;
358
+ justify-content: center;
359
+ }
360
+
361
+ .uni-indexed-list__alert {
362
+ width: 80px;
363
+ height: 80px;
364
+ border-radius: 80px;
365
+ text-align: center;
366
+ line-height: 80px;
367
+ font-size: 35px;
368
+ color: #fff;
369
+ background-color: rgba(0, 0, 0, 0.5);
370
+ }
371
+ </style>
@@ -1,34 +1,19 @@
1
1
  <template>
2
- <cv-form-item :label="label" :labelWidth="localLabelWidth" :layout="localLayout" :rtip="rtip">
3
- <view class="cv-info-area" ref="onEmpty" v-bind:style="cvInfoArea">
4
- <view class="cv-info-item">
5
- <text>{{ info }}</text>
6
- </view>
2
+ <view class="cv-info-area" ref="onEmpty" v-bind:style="cvInfoArea">
3
+ <view class="cv-info-item">
4
+ <text>{{ info }}</text>
7
5
  </view>
8
- </cv-form-item>
6
+ </view>
9
7
  </template>
10
8
 
11
9
  <script>
12
- import MixinsCommon from '../mixins/mixins-common';
13
10
  export default {
14
- mixins: [MixinsCommon],
15
11
  name: 'cvInfo',
16
- inject: {
17
- cvFormGroup: {
18
- default() {
19
- return null;
20
- }
21
- }
22
- },
23
12
  props: {
24
13
  info: {
25
14
  type: [Number, String],
26
15
  default: ''
27
16
  },
28
- rtip: {
29
- type: String,
30
- default: ''
31
- },
32
17
  infoAlign: {
33
18
  type: String,
34
19
  default: 'right'
@@ -42,7 +27,7 @@ export default {
42
27
  watch: {
43
28
  value(newVal) {}
44
29
  },
45
- created: function () {
30
+ created() {
46
31
  this._dealStyle();
47
32
  },
48
33
  methods: {
@@ -1,41 +1,31 @@
1
1
  <template>
2
- <cv-form-item
3
- :tip="tip"
4
- :label="label"
5
- :message="message"
6
- :messageDisplay="messageDisplay"
7
- :labelWidth="localLabelWidth"
8
- :layout="localLayout"
9
- >
10
- <view class="cv-code-area">
11
- <view class="cv-code-input-area" v-bind:style="inputAreaStyle">
12
- <input
13
- class="cv-code-input-item"
14
- placeholder-class="cv-code-input-item-placeholder"
15
- v-model="localVal"
16
- :maxlength="maxlength"
17
- :placeholder="placeholder"
18
- @input="updateInput"
19
- @blur="onBlur"
20
- />
21
- </view>
22
- <view class="cv-code-button-area" v-bind:style="buttonAreaStyle">
23
- <button
24
- class="cv-code-button-item"
25
- :class="btnDisabled ? 'cv-code-button-wait' : ''"
26
- :disabled="btnDisabled"
27
- @tap="click"
28
- >
29
- {{ btnText }}
30
- </button>
31
- </view>
2
+ <view class="cv-code-area">
3
+ <view class="cv-code-input-area" v-bind:style="inputAreaStyle">
4
+ <input
5
+ class="cv-code-input-item"
6
+ placeholder-class="cv-code-input-item-placeholder"
7
+ v-model="localVal"
8
+ :maxlength="maxlength"
9
+ :placeholder="placeholder"
10
+ @input="funcOnInput"
11
+ @blur="onBlur"
12
+ />
32
13
  </view>
33
- </cv-form-item>
14
+ <view class="cv-code-button-area" v-bind:style="buttonAreaStyle">
15
+ <button
16
+ size="mini"
17
+ class="cv-code-button-item"
18
+ :class="btnDisabled ? 'cv-code-button-wait' : ''"
19
+ :disabled="btnDisabled"
20
+ @tap="click"
21
+ >
22
+ {{ btnText }}
23
+ </button>
24
+ </view>
25
+ </view>
34
26
  </template>
35
27
  <script>
36
- import MixinsCommon from '../mixins/mixins-common.js';
37
28
  export default {
38
- mixins: [MixinsCommon],
39
29
  name: 'cvInputBtn',
40
30
  inject: {
41
31
  cvFormGroup: {
@@ -65,14 +55,6 @@ export default {
65
55
  type: Number,
66
56
  default: 80
67
57
  },
68
- message: {
69
- type: String,
70
- default: ''
71
- },
72
- messageDisplay: {
73
- type: Boolean,
74
- default: false
75
- },
76
58
  btnDisabled: {
77
59
  type: Boolean,
78
60
  default: false
@@ -101,7 +83,7 @@ export default {
101
83
  }
102
84
  this.$emit('click', e);
103
85
  },
104
- updateInput(e) {
86
+ funcOnInput(e) {
105
87
  this.$emit('input', this.localVal);
106
88
  },
107
89
  _initStyle() {
@@ -137,7 +119,7 @@ export default {
137
119
  .cv-code-button-item {
138
120
  height: 35px;
139
121
  line-height: 35px;
140
- font-size: 14px;
122
+ font-size: 12px;
141
123
  background-color: #007aff;
142
124
  color: #ffffff;
143
125
  }
@@ -1,30 +1,26 @@
1
1
  <template>
2
- <cv-form-item
3
- :label="label"
4
- :message="message"
5
- :messageDisplay="messageDisplay"
6
- :labelWidth="localLabelWidth"
7
- :layout="localLayout"
8
- :onQClear="onQClear"
9
- :tip="tip"
10
- :rtip="rtip"
11
- :must="must"
12
- :input-value="localVal"
13
- >
14
- <view class="cv-input-text">
15
- <input
16
- class="cv-input-text-item"
17
- placeholder-class="cv-input-text-item-placeholder"
18
- v-model="localVal"
19
- type="digit"
20
- :placeholder="placeholder"
21
- :maxlength="maxlength"
22
- :disabled="disabled"
23
- @input="updateInput"
24
- @blur="onBlur"
25
- />
2
+ <view class="cv-input-text">
3
+ <input
4
+ class="cv-input__content"
5
+ placeholder-class="cv-input__placeholder"
6
+ v-model="localVal"
7
+ type="digit"
8
+ :placeholder="placeholder"
9
+ :maxlength="maxlength"
10
+ :disabled="disabled"
11
+ @input="funcOnInput"
12
+ @blur="onBlur"
13
+ />
14
+ <!-- 输入框右侧信息 -->
15
+ <view class="cv-input__right">
16
+ <!-- 清空 -->
17
+ <view class="cv-input__clear" @click="onEmpty" v-if="clearable == true && localVal != ''">X</view>
18
+ <!-- 追加-->
19
+ <view class="cv-input__append" v-if="$slots['append']">
20
+ <slot name="append"></slot>
21
+ </view>
26
22
  </view>
27
- </cv-form-item>
23
+ </view>
28
24
  </template>
29
25
 
30
26
  <script>
@@ -39,20 +35,57 @@ export default {
39
35
  }
40
36
  }
41
37
  },
42
- props: {},
38
+ props: {
39
+ placeholder: {
40
+ type: [String],
41
+ default: '请输入数字'
42
+ }
43
+ },
43
44
  // 监听动态数据变化
44
45
  watch: {},
45
46
  data() {
46
47
  return {};
47
48
  },
48
- created: function () {},
49
+ created() {},
49
50
  methods: {}
50
51
  };
51
52
  </script>
52
53
  <style>
53
- .cv-input-text-item {
54
+ .cv-input__content {
54
55
  height: 35px;
55
56
  line-height: 35px;
56
57
  font-size: 14px;
57
58
  }
59
+
60
+ .cv-input__placeholder {
61
+ font-size: 14px;
62
+ }
63
+ .cv-input__right {
64
+ height: 16px;
65
+ position: absolute;
66
+ bottom: 10px;
67
+ right: 0px;
68
+ z-index: 2;
69
+ }
70
+ .cv-input__clear {
71
+ width: 16px;
72
+ height: 16px;
73
+ border-radius: 50%;
74
+ background-color: rgba(0, 0, 0, 0.4);
75
+ font-size: 8px;
76
+ line-height: 16px;
77
+ text-align: center;
78
+ color: #fff;
79
+ float: left;
80
+ margin-left: 10px;
81
+ }
82
+ .cv-input__append {
83
+ color: rgba(0, 0, 0, 0.4);
84
+ width: 25px;
85
+ text-align: center;
86
+ overflow: hidden;
87
+ height: 16px;
88
+ font-size: 12px;
89
+ line-height: 16px;
90
+ }
58
91
  </style>