@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
@@ -1,142 +0,0 @@
1
- <template>
2
- <view>
3
- <view v-if="loaded || list.itemIndex < 15" class="uni-indexed-list__title-wrapper">
4
- <text v-if="list.items && list.items.length > 0" class="uni-indexed-list__title">{{ list.title }}</text>
5
- </view>
6
- <view v-if="(loaded || list.itemIndex < 15) && list.items && list.items.length > 0" class="uni-indexed-list__list">
7
- <view v-for="(item, index) in list.items" :key="index" class="uni-indexed-list__item" hover-class="uni-indexed-list__item--hover">
8
- <view class="uni-indexed-list__item-container" @click="onClick(idx, index)">
9
- <view class="uni-indexed-list__item-border" :class="{'uni-indexed-list__item-border--last':index===list.items.length-1}">
10
- <view v-if="showSelect" style="margin-right: 20rpx;">
11
- <uni-icons :type="item.checked ? 'checkbox-filled' : 'circle'" :color="item.checked ? '#007aff' : '#aaa'" size="24" />
12
- </view>
13
- <text class="uni-indexed-list__item-content">{{ item.text }}</text>
14
- </view>
15
- </view>
16
- </view>
17
- </view>
18
- </view>
19
- </template>
20
-
21
- <script>
22
- import uniIcons from '../uni-icons/uni-icons.vue'
23
- export default {
24
- name: 'UniIndexedList',
25
- components: {
26
- uniIcons
27
- },
28
- props: {
29
- loaded: {
30
- type: Boolean,
31
- default: false
32
- },
33
- idx: {
34
- type: Number,
35
- default: 0
36
- },
37
- list: {
38
- type: Object,
39
- default () {
40
- return {}
41
- }
42
- },
43
- showSelect: {
44
- type: Boolean,
45
- default: false
46
- }
47
- },
48
- methods: {
49
- onClick(idx, index) {
50
- this.$emit("itemClick", {
51
- idx,
52
- index
53
- })
54
- }
55
- }
56
- }
57
- </script>
58
-
59
- <style scoped>
60
- .uni-indexed-list__list {
61
- background-color: #ffffff;
62
- /* #ifndef APP-NVUE */
63
- display: flex;
64
- /* #endif */
65
- flex-direction: column;
66
- border-top-style: solid;
67
- border-top-width: 1px;
68
- border-top-color: #e5e5e5;
69
- }
70
-
71
- .uni-indexed-list__item {
72
- font-size: 16px;
73
- /* #ifndef APP-NVUE */
74
- display: flex;
75
- /* #endif */
76
- flex: 1;
77
- flex-direction: row;
78
- justify-content: space-between;
79
- align-items: center;
80
- }
81
-
82
- .uni-indexed-list__item-container {
83
- padding-left: 15px;
84
- flex: 1;
85
- position: relative;
86
- /* #ifndef APP-NVUE */
87
- display: flex;
88
- box-sizing: border-box;
89
- /* #endif */
90
- flex-direction: row;
91
- justify-content: space-between;
92
- align-items: center;
93
- }
94
-
95
- .uni-indexed-list__item-border {
96
- flex: 1;
97
- position: relative;
98
- /* #ifndef APP-NVUE */
99
- display: flex;
100
- box-sizing: border-box;
101
- /* #endif */
102
- flex-direction: row;
103
- justify-content: space-between;
104
- align-items: center;
105
- height: 50px;
106
- padding: 15px;
107
- padding-left: 0;
108
- border-bottom-style: solid;
109
- border-bottom-width: 1px;
110
- border-bottom-color: #e5e5e5;
111
- }
112
-
113
- .uni-indexed-list__item-border--last {
114
- border-bottom-width: 0px;
115
- }
116
-
117
- .uni-indexed-list__item-content {
118
- flex: 1;
119
- font-size: 14px;
120
- }
121
-
122
- .uni-indexed-list {
123
- /* #ifndef APP-NVUE */
124
- display: flex;
125
- /* #endif */
126
- flex-direction: row;
127
- }
128
-
129
- .uni-indexed-list__title-wrapper {
130
- /* #ifndef APP-NVUE */
131
- display: flex;
132
- width: 100%;
133
- /* #endif */
134
- background-color: #f7f7f7;
135
- }
136
-
137
- .uni-indexed-list__title {
138
- padding: 6px 12px;
139
- line-height: 24px;
140
- font-size: 12px;
141
- }
142
- </style>
@@ -1,364 +0,0 @@
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
- <uni-indexed-list-item :list="list" :loaded="loaded" :idx="idx" :showSelect="showSelect" @itemClick="onClick"></uni-indexed-list-item>
12
- <!-- #ifndef APP-NVUE -->
13
- </view>
14
- </scroll-view>
15
- <!-- #endif -->
16
- <!-- #ifdef APP-NVUE -->
17
- </cell>
18
- </list>
19
- <!-- #endif -->
20
- <view :class="touchmove ? 'uni-indexed-list__menu--active' : ''" @touchstart="touchStart" @touchmove.stop.prevent="touchMove" @touchend="touchEnd" class="uni-indexed-list__menu">
21
- <view v-for="(list, key) in lists" :key="key" class="uni-indexed-list__menu-item">
22
- <text class="uni-indexed-list__menu-text" :class="touchmoveIndex == key ? 'uni-indexed-list__menu-text--active' : ''">{{ list.value }}</text>
23
- </view>
24
- </view>
25
- <view v-if="touchmove" class="uni-indexed-list__alert-wrapper">
26
- <text class="uni-indexed-list__alert">{{ lists[touchmoveIndex] }}</text>
27
- </view>
28
- </view>
29
- </template>
30
- <script>
31
- import uniIcons from '../uni-icons/uni-icons.vue'
32
- import uniIndexedListItem from './uni-data-indexed-list-item.vue'
33
- import clientdb from './clientdb.js'
34
- // #ifdef APP-NVUE
35
- const dom = weex.requireModule('dom');
36
- // #endif
37
- // #ifdef APP-PLUS
38
- function throttle(func, delay) {
39
- var prev = Date.now();
40
- return function() {
41
- var context = this;
42
- var args = arguments;
43
- var now = Date.now();
44
- if (now - prev >= delay) {
45
- func.apply(context, args);
46
- prev = Date.now();
47
- }
48
- }
49
- }
50
-
51
- function touchMove(e) {
52
- let pageY = e.touches[0].pageY
53
- let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
54
- if (this.touchmoveIndex === index) {
55
- return false
56
- }
57
- let item = this.lists[index]
58
- if (item) {
59
- // #ifndef APP-NVUE
60
- this.scrollViewId = 'uni-indexed-list-' + index
61
- this.touchmoveIndex = index
62
- // #endif
63
- // #ifdef APP-NVUE
64
- dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
65
- animated: false
66
- })
67
- this.touchmoveIndex = index
68
- // #endif
69
- }
70
- }
71
- const throttleTouchMove = throttle(touchMove, 40)
72
- // #endif
73
-
74
- /**
75
- * IndexedList 索引列表
76
- * @description 用于展示索引列表
77
- * @tutorial https://ext.dcloud.net.cn/plugin?id=375
78
- * @property {Boolean} showSelect = [true|false] 展示模式
79
- * @value true 展示模式
80
- * @value false 选择模式
81
- * @property {Object} options 索引列表需要的数据对象
82
- * @property {String|DBCollectionString} collection 表名
83
- * @property {String|ClientDBActionString} action 云端执行数据库查询的前或后,触发某个action函数操作,进行预处理或后处理
84
- * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
85
- * @property {String} orderby 排序字段及正序倒叙设置
86
- * @property {String|JQLString} where 查询条件
87
- * @event {Function} click 点击列表事件 ,返回当前选择项的事件对象
88
- * @example <uni-indexed-list options="" showSelect="false" @click=""></uni-indexed-list>
89
- */
90
- export default {
91
- name: 'UniDataIndexedList',
92
- mixins: [clientdb],
93
- components: {
94
- uniIcons,
95
- uniIndexedListItem
96
- },
97
- props: {
98
- options: {
99
- type: Array,
100
- default () {
101
- return []
102
- }
103
- },
104
- localdata: {
105
- type: Array,
106
- default () {
107
- return []
108
- }
109
- },
110
- showSelect: {
111
- type: Boolean,
112
- default: false
113
- }
114
- },
115
- data() {
116
- return {
117
- lists: [],
118
- winHeight: 0,
119
- itemHeight: 0,
120
- winOffsetY: 0,
121
- touchmove: false,
122
- touchmoveIndex: -1,
123
- scrollViewId: '',
124
- touchmoveTimeout: '',
125
- loaded: false
126
- }
127
- },
128
- watch: {
129
- options: {
130
- handler: function() {
131
- this.setList()
132
- },
133
- deep: true
134
- }
135
- },
136
- mounted() {
137
- if (this.localdata.length || this.options.length) {
138
- setTimeout(() => {
139
- this.setList()
140
- }, 50)
141
- setTimeout(() => {
142
- this.loaded = true
143
- }, 300);
144
- } else if (this.collection) {
145
- if (!this.manual) {
146
- this._execLoadData((data) => {
147
- this.lists = this.groupData(data);
148
- })
149
- }
150
- }
151
- },
152
- methods: {
153
- groupData(data) {
154
- let groups = {};
155
- for (let i = 0; i < data.length; i++) {
156
- let item = data[i];
157
- let group = item.group;
158
- if (!groups[group]) {
159
- groups[group] = {
160
- "title": group,
161
- "value": group,
162
- "itemIndex": i,
163
- "items": []
164
- }
165
- }
166
- groups[group].items.push(item);
167
- }
168
- let result = []
169
- for (let g in groups) {
170
- let group = groups[g];
171
- let items = group.items;
172
- for (let j = 0; j < items.length; j++) {
173
- items[j].itemIndex = j;
174
- }
175
- result.push(group);
176
- }
177
- return result;
178
- },
179
- setList(data) {
180
- let index = 0;
181
- this.lists = []
182
- this.options.forEach((value, index) => {
183
- if (value.data.length === 0) {
184
- return
185
- }
186
- let indexBefore = index
187
- let items = value.data.map(item => {
188
- let obj = {}
189
- obj['value'] = value.letter
190
- obj['text'] = item
191
- obj['itemIndex'] = index
192
- index++
193
- obj.checked = item.checked ? item.checked : false
194
- return obj
195
- })
196
- this.lists.push({
197
- title: value.letter,
198
- value: value.letter,
199
- items: items,
200
- itemIndex: indexBefore
201
- })
202
- })
203
- // #ifndef APP-NVUE
204
- uni.createSelectorQuery()
205
- .in(this)
206
- .select('#list')
207
- .boundingClientRect()
208
- .exec(ret => {
209
- this.winOffsetY = ret[0].top
210
- this.winHeight = ret[0].height
211
- this.itemHeight = this.winHeight / this.lists.length
212
- })
213
- // #endif
214
- // #ifdef APP-NVUE
215
- dom.getComponentRect(this.$refs['list'], (res) => {
216
- this.winOffsetY = res.size.top
217
- this.winHeight = res.size.height
218
- this.itemHeight = this.winHeight / this.lists.length
219
- })
220
- // #endif
221
- },
222
- touchStart(e) {
223
- this.touchmove = true
224
- let pageY = e.touches[0].pageY
225
- let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
226
- let item = this.lists[index]
227
- if (item) {
228
- this.scrollViewId = 'uni-indexed-list-' + index
229
- this.touchmoveIndex = index
230
- // #ifdef APP-NVUE
231
- dom.scrollToElement(this.$refs['uni-indexed-list-' + index][0], {
232
- animated: false
233
- })
234
- // #endif
235
- }
236
- },
237
- touchMove(e) {
238
- // #ifndef APP-PLUS
239
- let pageY = e.touches[0].pageY
240
- let index = Math.floor((pageY - this.winOffsetY) / this.itemHeight)
241
- if (this.touchmoveIndex === index) {
242
- return false
243
- }
244
- let item = this.lists[index]
245
- if (item) {
246
- this.scrollViewId = 'uni-indexed-list-' + index
247
- this.touchmoveIndex = index
248
- }
249
- // #endif
250
- // #ifdef APP-PLUS
251
- throttleTouchMove.call(this, e)
252
- // #endif
253
- },
254
- touchEnd() {
255
- this.touchmove = false
256
- this.touchmoveIndex = -1
257
- },
258
- onClick(e) {
259
- let {
260
- idx,
261
- index
262
- } = e
263
- let obj = {}
264
- for (let key in this.lists[idx].items[index]) {
265
- obj[key] = this.lists[idx].items[index][key]
266
- }
267
- let select = []
268
- if (this.showSelect) {
269
- this.lists[idx].items[index].checked = !this.lists[idx].items[index].checked
270
- this.lists.forEach((value, idx) => {
271
- value.items.forEach((item, index) => {
272
- if (item.checked) {
273
- let obj = {}
274
- for (let key in this.lists[idx].items[index]) {
275
- obj[key] = this.lists[idx].items[index][key]
276
- }
277
- select.push(obj)
278
- }
279
- })
280
- })
281
- }
282
- this.$emit('click', {
283
- item: obj,
284
- select: select
285
- })
286
- }
287
- }
288
- }
289
- </script>
290
- <style scoped>
291
- .uni-indexed-list {
292
- position: absolute;
293
- left: 0;
294
- top: 0;
295
- right: 0;
296
- bottom: 0;
297
- /* #ifndef APP-NVUE */
298
- display: flex;
299
- /* #endif */
300
- flex-direction: row;
301
- }
302
-
303
- .uni-indexed-list__scroll {
304
- flex: 1;
305
- }
306
-
307
- .uni-indexed-list__menu {
308
- width: 24px;
309
- background-color: lightgrey;
310
- /* #ifndef APP-NVUE */
311
- display: flex;
312
- /* #endif */
313
- flex-direction: column;
314
- }
315
-
316
- .uni-indexed-list__menu-item {
317
- /* #ifndef APP-NVUE */
318
- display: flex;
319
- /* #endif */
320
- flex: 1;
321
- align-items: center;
322
- justify-content: center;
323
- }
324
-
325
- .uni-indexed-list__menu-text {
326
- line-height: 20px;
327
- font-size: 12px;
328
- text-align: center;
329
- color: #aaa;
330
- }
331
-
332
- .uni-indexed-list__menu--active {
333
- background-color: #c8c8c8;
334
- }
335
-
336
- .uni-indexed-list__menu-text--active {
337
- color: #007aff;
338
- }
339
-
340
- .uni-indexed-list__alert-wrapper {
341
- position: absolute;
342
- left: 0;
343
- top: 0;
344
- right: 0;
345
- bottom: 0;
346
- /* #ifndef APP-NVUE */
347
- display: flex;
348
- /* #endif */
349
- flex-direction: row;
350
- align-items: center;
351
- justify-content: center;
352
- }
353
-
354
- .uni-indexed-list__alert {
355
- width: 80px;
356
- height: 80px;
357
- border-radius: 80px;
358
- text-align: center;
359
- line-height: 80px;
360
- font-size: 35px;
361
- color: #fff;
362
- background-color: rgba(0, 0, 0, 0.5);
363
- }
364
- </style>