@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,146 +0,0 @@
1
- <template>
2
- <view class="uni-collapse">
3
- <slot />
4
- </view>
5
- </template>
6
- <script>
7
- /**
8
- * Collapse 折叠面板
9
- * @description 展示可以折叠 / 展开的内容区域
10
- * @tutorial https://ext.dcloud.net.cn/plugin?id=23
11
- * @property {String|Array} value 当前激活面板改变时触发(如果是手风琴模式,参数类型为string,否则为array)
12
- * @property {Boolean} accordion = [true|false] 是否开启手风琴效果是否开启手风琴效果
13
- * @event {Function} change 切换面板时触发,如果是手风琴模式,返回类型为string,否则为array
14
- */
15
- export default {
16
- name: 'uniCollapse',
17
- emits: ['change', 'activeItem', 'input', 'update:modelValue'],
18
- props: {
19
- value: {
20
- type: [String, Array],
21
- default: ''
22
- },
23
- modelValue: {
24
- type: [String, Array],
25
- default: ''
26
- },
27
- accordion: {
28
- // 是否开启手风琴效果
29
- type: [Boolean, String],
30
- default: false
31
- },
32
- },
33
- data() {
34
- return {}
35
- },
36
- computed: {
37
- // TODO 兼容 vue2 和 vue3
38
- dataValue() {
39
- let value = (typeof this.value === 'string' && this.value === '') ||
40
- (Array.isArray(this.value) && this.value.length === 0)
41
- let modelValue = (typeof this.modelValue === 'string' && this.modelValue === '') ||
42
- (Array.isArray(this.modelValue) && this.modelValue.length === 0)
43
- if (value) {
44
- return this.modelValue
45
- }
46
- if (modelValue) {
47
- return this.value
48
- }
49
-
50
- return this.value
51
- }
52
- },
53
- watch: {
54
- dataValue(val) {
55
- this.setOpen(val)
56
- }
57
- },
58
- created() {
59
- this.childrens = []
60
- this.names = []
61
- },
62
- mounted() {
63
- this.setOpen(this.dataValue)
64
- },
65
- methods: {
66
- setOpen(val) {
67
- let str = typeof val === 'string'
68
- let arr = Array.isArray(val)
69
-
70
- this.childrens.forEach((vm, index) => {
71
- if (str) {
72
- if (val === vm.nameSync) {
73
- if (!this.accordion) {
74
- console.warn('accordion 属性为 false ,v-model 类型应该为 array')
75
- return
76
- }
77
- vm.isOpen = true
78
- }
79
- }
80
- if (arr) {
81
- val.forEach(v => {
82
- if (v === vm.nameSync) {
83
- if (this.accordion) {
84
- console.warn('accordion 属性为 true ,v-model 类型应该为 string')
85
- return
86
- }
87
- vm.isOpen = true
88
- }
89
- })
90
- }
91
- })
92
- this.emit(val)
93
- },
94
- setAccordion(self) {
95
- if (!this.accordion) return
96
- this.childrens.forEach((vm, index) => {
97
- if (self !== vm) {
98
- vm.isOpen = false
99
- }
100
- })
101
- },
102
- resize() {
103
- this.childrens.forEach((vm, index) => {
104
- // #ifndef APP-NVUE
105
- vm.getCollapseHeight()
106
- // #endif
107
- // #ifdef APP-NVUE
108
- vm.getNvueHwight()
109
- // #endif
110
- })
111
- },
112
- onChange(isOpen, self) {
113
- let activeItem = []
114
-
115
- if (this.accordion) {
116
- activeItem = isOpen ? self.nameSync : ''
117
- } else {
118
- this.childrens.forEach((vm, index) => {
119
- if (vm.isOpen) {
120
- activeItem.push(vm.nameSync)
121
- }
122
- })
123
- }
124
- this.$emit('change', activeItem)
125
- this.emit(activeItem)
126
- },
127
- emit(val) {
128
- this.$emit('input', val)
129
- this.$emit('update:modelValue', val)
130
- }
131
- }
132
- }
133
- </script>
134
- <style scoped>
135
- .uni-collapse {
136
- /* #ifndef APP-NVUE */
137
- width: 100%;
138
- display: flex;
139
- /* #endif */
140
- /* #ifdef APP-NVUE */
141
- flex: 1;
142
- /* #endif */
143
- flex-direction: column;
144
- background-color: #ffffff;
145
- }
146
- </style>
@@ -1,378 +0,0 @@
1
- <template>
2
- <view class="uni-collapse-item">
3
- <!-- onClick(!isOpen) -->
4
- <view @click="onClick(!isOpen)" class="uni-collapse-item__title" :class="{'is-open':isOpen &&titleBorder === 'auto' ,'uni-collapse-item-border':titleBorder !== 'none'}">
5
- <view class="uni-collapse-item__title-wrap">
6
- <slot name="title">
7
- <view class="uni-collapse-item__title-box" :class="{'is-disabled':disabled}">
8
- <image v-if="thumb" :src="thumb" class="uni-collapse-item__title-img" />
9
- <text class="uni-collapse-item__title-text">{{ title }}</text>
10
- </view>
11
- </slot>
12
- </view>
13
- <view :class="{ 'uni-collapse-item__title-arrow-active': isOpen, 'uni-collapse-item--animation': showAnimation === true }" class="uni-collapse-item__title-arrow">
14
- <uni-icons :color="disabled?'#ddd':'#bbb'" size="14" type="arrowdown" />
15
- </view>
16
- </view>
17
- <view class="uni-collapse-item__wrap" :class="{'is--transition':showAnimation}" :style="{height: (isOpen?height:0) +'px'}">
18
- <view :id="elId" ref="collapse--hook" class="uni-collapse-item__wrap-content" :class="{open:isheight,'uni-collapse-item--border':border&&isOpen}">
19
- <slot></slot>
20
- </view>
21
- </view>
22
-
23
- </view>
24
- </template>
25
-
26
- <script>
27
- // #ifdef APP-NVUE
28
- const dom = weex.requireModule('dom')
29
- // #endif
30
- /**
31
- * CollapseItem 折叠面板子组件
32
- * @description 折叠面板子组件
33
- * @property {String} title 标题文字
34
- * @property {String} thumb 标题左侧缩略图
35
- * @property {String} name 唯一标志符
36
- * @property {Boolean} disabled = [true|false] 是否展开面板
37
- * @property {Boolean} showAnimation = [true|false] 开启动画
38
- */
39
- export default {
40
- name: 'uniCollapseItem',
41
- props: {
42
- // 列表标题
43
- title: {
44
- type: String,
45
- default: ''
46
- },
47
- name: {
48
- type: [Number, String],
49
- default: ''
50
- },
51
- // 是否禁用
52
- disabled: {
53
- type: Boolean,
54
- default: false
55
- },
56
- // #ifdef APP-PLUS
57
- // 是否显示动画,app 端默认不开启动画,卡顿严重
58
- showAnimation: {
59
- type: Boolean,
60
- default: false
61
- },
62
- // #endif
63
- // #ifndef APP-PLUS
64
- // 是否显示动画
65
- showAnimation: {
66
- type: Boolean,
67
- default: true
68
- },
69
- // #endif
70
- // 是否展开
71
- open: {
72
- type: Boolean,
73
- default: false
74
- },
75
- // 缩略图
76
- thumb: {
77
- type: String,
78
- default: ''
79
- },
80
- // 标题分隔线显示类型
81
- titleBorder: {
82
- type: String,
83
- default: 'auto'
84
- },
85
- // 是否显示分隔线
86
- border: {
87
- type: Boolean,
88
- default: true
89
- }
90
- },
91
- data() {
92
- // TODO 随机生生元素ID,解决百度小程序获取同一个元素位置信息的bug
93
- const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
94
- return {
95
- isOpen: false,
96
- isheight: null,
97
- height: 0,
98
- elId,
99
- nameSync: 0
100
- }
101
- },
102
- watch: {
103
- open(val) {
104
- this.isOpen = val
105
- this.onClick(val, 'init')
106
- }
107
- },
108
- updated(e) {
109
- this.$nextTick(() => {
110
- this.init(true)
111
- })
112
- },
113
- created() {
114
- this.collapse = this.getCollapse()
115
- this.oldHeight = 0
116
- },
117
- // #ifndef VUE3
118
- // TODO vue2
119
- destroyed() {
120
- if (this.__isUnmounted) return
121
- this.uninstall()
122
- },
123
- // #endif
124
- // #ifdef VUE3
125
- // TODO vue3
126
- unmounted() {
127
- this.__isUnmounted = true
128
- this.uninstall()
129
- },
130
- // #endif
131
-
132
- mounted() {
133
-
134
- if (!this.collapse) return
135
- if (this.name !== '') {
136
- this.nameSync = this.name
137
- } else {
138
- this.nameSync = this.collapse.childrens.length + ''
139
- }
140
- if (this.collapse.names.indexOf(this.nameSync) === -1) {
141
- this.collapse.names.push(this.nameSync)
142
- } else {
143
- console.warn(`name 值 ${this.nameSync} 重复`);
144
- }
145
- if (this.collapse.childrens.indexOf(this) === -1) {
146
- this.collapse.childrens.push(this)
147
- }
148
- this.init()
149
- },
150
- methods: {
151
- init(type) {
152
- // #ifndef APP-NVUE
153
- this.getCollapseHeight(type)
154
- // #endif
155
- // #ifdef APP-NVUE
156
- this.getNvueHwight(type)
157
- // #endif
158
- },
159
- uninstall() {
160
- if (this.collapse) {
161
- this.collapse.childrens.forEach((item, index) => {
162
- if (item === this) {
163
- this.collapse.childrens.splice(index, 1)
164
- }
165
- })
166
- this.collapse.names.forEach((item, index) => {
167
- if (item === this.nameSync) {
168
- this.collapse.names.splice(index, 1)
169
- }
170
- })
171
- }
172
- },
173
- onClick(isOpen, type) {
174
- if (this.disabled) return
175
- this.isOpen = isOpen
176
- if (this.isOpen && this.collapse) {
177
- this.collapse.setAccordion(this)
178
- }
179
- if (type !== 'init') {
180
- this.collapse.onChange(isOpen, this)
181
- }
182
- },
183
- getCollapseHeight(type, index = 0) {
184
- const views = uni.createSelectorQuery().in(this)
185
- views
186
- .select(`#${this.elId}`)
187
- .fields({
188
- size: true
189
- }, data => {
190
- // TODO 百度中可能获取不到节点信息 ,需要循环获取
191
- if (index >= 10) return
192
- if (!data) {
193
- index++
194
- this.getCollapseHeight(false, index)
195
- return
196
- }
197
- // #ifdef APP-NVUE
198
- this.height = data.height + 1
199
- // #endif
200
- // #ifndef APP-NVUE
201
- this.height = data.height
202
- // #endif
203
- this.isheight = true
204
- if (type) return
205
- this.onClick(this.open, 'init')
206
- })
207
- .exec()
208
- },
209
- getNvueHwight(type) {
210
- const result = dom.getComponentRect(this.$refs['collapse--hook'], option => {
211
- if (option && option.result && option.size) {
212
- // #ifdef APP-NVUE
213
- this.height = option.size.height + 1
214
- // #endif
215
- // #ifndef APP-NVUE
216
- this.height = option.size.height
217
- // #endif
218
- this.isheight = true
219
- if (type) return
220
- this.onClick(this.open, 'init')
221
- }
222
- })
223
- },
224
- /**
225
- * 获取父元素实例
226
- */
227
- getCollapse(name = 'uniCollapse') {
228
- let parent = this.$parent;
229
- let parentName = parent.$options.name;
230
- while (parentName !== name) {
231
- parent = parent.$parent;
232
- if (!parent) return false;
233
- parentName = parent.$options.name;
234
- }
235
- return parent;
236
- }
237
- }
238
- }
239
- </script>
240
-
241
- <style scoped>
242
- .uni-collapse-item {
243
- /* #ifndef APP-NVUE */
244
- box-sizing: border-box;
245
- /* #endif */
246
- }
247
-
248
- .uni-collapse-item__title {
249
- /* #ifndef APP-NVUE */
250
- display: flex;
251
- width: 100%;
252
- box-sizing: border-box;
253
- /* #endif */
254
- flex-direction: row;
255
- align-items: center;
256
- transition: border-bottom-color 0.3s;
257
- }
258
-
259
- .uni-collapse-item__title-wrap {
260
- width: 100%;
261
- flex: 1;
262
- }
263
-
264
- .uni-collapse-item__title-box {
265
- padding: 0 15px;
266
- /* #ifndef APP-NVUE */
267
- display: flex;
268
- width: 100%;
269
- box-sizing: border-box;
270
- /* #endif */
271
- flex-direction: row;
272
- justify-content: space-between;
273
- align-items: center;
274
- height: 48px;
275
- line-height: 48px;
276
- background-color: #fff;
277
- color: #303133;
278
- font-size: 13px;
279
- font-weight: 500;
280
- /* #ifdef H5 */
281
- cursor: pointer;
282
- outline: none;
283
- /* #endif */
284
- }
285
-
286
- .uni-collapse-item__title-box.is-disabled .uni-collapse-item__title-text {
287
- color: #c0c0c0;
288
- }
289
-
290
- .uni-collapse-item__title.uni-collapse-item-border {
291
- border-bottom: 1px solid #ebeef5;
292
- }
293
-
294
- .uni-collapse-item__title.is-open {
295
- border-bottom-color: transparent;
296
- }
297
-
298
- .uni-collapse-item__title-img {
299
- height: 26px;
300
- width: 26px;
301
- margin-right: 10px;
302
- }
303
-
304
- .uni-collapse-item__title-text {
305
- flex: 1;
306
- font-size: 14px;
307
- /* #ifndef APP-NVUE */
308
- white-space: nowrap;
309
- color: inherit;
310
- /* #endif */
311
- /* #ifdef APP-NVUE */
312
- lines: 1;
313
- /* #endif */
314
- overflow: hidden;
315
- text-overflow: ellipsis;
316
- }
317
-
318
- .uni-collapse-item__title-arrow {
319
- /* #ifndef APP-NVUE */
320
- display: flex;
321
- box-sizing: border-box;
322
- /* #endif */
323
- align-items: center;
324
- justify-content: center;
325
- width: 20px;
326
- height: 20px;
327
- margin-right: 10px;
328
- transform: rotate(0deg);
329
- }
330
-
331
- .uni-collapse-item__title-arrow-active {
332
- transform: rotate(180deg);
333
- }
334
-
335
- .uni-collapse-item__wrap {
336
- /* #ifndef APP-NVUE */
337
- will-change: height;
338
- box-sizing: border-box;
339
- /* #endif */
340
- background-color: #fff;
341
- overflow: hidden;
342
- position: relative;
343
- height: 0;
344
- }
345
-
346
- .uni-collapse-item__wrap.is--transition {
347
- transition-property: height, border-bottom-width;
348
- transition-duration: 0.3s;
349
- /* #ifndef APP-NVUE */
350
- will-change: height;
351
- /* #endif */
352
- }
353
-
354
- .uni-collapse-item__wrap-content {
355
- position: absolute;
356
- font-size: 13px;
357
- color: #303133;
358
- border-bottom-color: transparent;
359
- border-bottom-style: solid;
360
- border-bottom-width: 0;
361
- }
362
-
363
- .uni-collapse-item__wrap-content.uni-collapse-item--border {
364
- border-bottom-width: 1px;
365
- border-bottom-color: red;
366
- border-bottom-color: #ebeef5;
367
- }
368
-
369
- .uni-collapse-item__wrap-content.open {
370
- position: relative;
371
- }
372
-
373
- .uni-collapse-item--animation {
374
- transition-property: transform;
375
- transition-duration: 0.3s;
376
- transition-timing-function: ease;
377
- }
378
- </style>