@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,443 +0,0 @@
1
- <template>
2
- <view class="uni-cursor-point">
3
- <view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop) && content.length > 0" :class="{
4
- 'uni-fab--leftBottom': leftBottom,
5
- 'uni-fab--rightBottom': rightBottom,
6
- 'uni-fab--leftTop': leftTop,
7
- 'uni-fab--rightTop': rightTop
8
- }" class="uni-fab">
9
- <view :class="{
10
- 'uni-fab__content--left': horizontal === 'left',
11
- 'uni-fab__content--right': horizontal === 'right',
12
- 'uni-fab__content--flexDirection': direction === 'vertical',
13
- 'uni-fab__content--flexDirectionStart': flexDirectionStart,
14
- 'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
15
- 'uni-fab__content--other-platform': !isAndroidNvue
16
- }" :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }" class="uni-fab__content" elevation="5">
17
- <view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
18
- <view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }" class="uni-fab__item" @click="_onItemClick(index, item)">
19
- <image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image" mode="widthFix" />
20
- <text class="uni-fab__item-text" :style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
21
- </view>
22
- <view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
23
- </view>
24
- </view>
25
- <view :class="{
26
- 'uni-fab__circle--leftBottom': leftBottom,
27
- 'uni-fab__circle--rightBottom': rightBottom,
28
- 'uni-fab__circle--leftTop': leftTop,
29
- 'uni-fab__circle--rightTop': rightTop,
30
- 'uni-fab__content--other-platform': !isAndroidNvue
31
- }" class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor }" @click="_onClick">
32
- <view class="fab-circle-v" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
33
- <view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow && content.length > 0}"></view>
34
- </view>
35
- </view>
36
- </template>
37
-
38
- <script>
39
- let platform = 'other'
40
- // #ifdef APP-NVUE
41
- platform = uni.getSystemInfoSync().platform
42
- // #endif
43
-
44
- /**
45
- * Fab 悬浮按钮
46
- * @description 点击可展开一个图形按钮菜单
47
- * @tutorial https://ext.dcloud.net.cn/plugin?id=144
48
- * @property {Object} pattern 可选样式配置项
49
- * @property {Object} horizontal = [left | right] 水平对齐方式
50
- * @value left 左对齐
51
- * @value right 右对齐
52
- * @property {Object} vertical = [bottom | top] 垂直对齐方式
53
- * @value bottom 下对齐
54
- * @value top 上对齐
55
- * @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
56
- * @value horizontal 水平显示
57
- * @value vertical 垂直显示
58
- * @property {Array} content 展开菜单内容配置项
59
- * @property {Boolean} popMenu 是否使用弹出菜单
60
- * @event {Function} trigger 展开菜单点击事件,返回点击信息
61
- * @event {Function} fabClick 悬浮按钮点击事件
62
- */
63
- export default {
64
- name: 'UniFab',
65
- emits: ['fabClick', 'trigger'],
66
- props: {
67
- pattern: {
68
- type: Object,
69
- default () {
70
- return {}
71
- }
72
- },
73
- horizontal: {
74
- type: String,
75
- default: 'left'
76
- },
77
- vertical: {
78
- type: String,
79
- default: 'bottom'
80
- },
81
- direction: {
82
- type: String,
83
- default: 'horizontal'
84
- },
85
- content: {
86
- type: Array,
87
- default () {
88
- return []
89
- }
90
- },
91
- show: {
92
- type: Boolean,
93
- default: false
94
- },
95
- popMenu: {
96
- type: Boolean,
97
- default: true
98
- }
99
- },
100
- data() {
101
- return {
102
- fabShow: false,
103
- isShow: false,
104
- isAndroidNvue: platform === 'android',
105
- styles: {
106
- color: '#3c3e49',
107
- selectedColor: '#007AFF',
108
- backgroundColor: '#fff',
109
- buttonColor: '#007AFF'
110
- }
111
- }
112
- },
113
- computed: {
114
- contentWidth(e) {
115
- return (this.content.length + 1) * 55 + 10 + 'px'
116
- },
117
- contentWidthMin() {
118
- return 55 + 'px'
119
- },
120
- // 动态计算宽度
121
- boxWidth() {
122
- return this.getPosition(3, 'horizontal')
123
- },
124
- // 动态计算高度
125
- boxHeight() {
126
- return this.getPosition(3, 'vertical')
127
- },
128
- // 计算左下位置
129
- leftBottom() {
130
- return this.getPosition(0, 'left', 'bottom')
131
- },
132
- // 计算右下位置
133
- rightBottom() {
134
- return this.getPosition(0, 'right', 'bottom')
135
- },
136
- // 计算左上位置
137
- leftTop() {
138
- return this.getPosition(0, 'left', 'top')
139
- },
140
- rightTop() {
141
- return this.getPosition(0, 'right', 'top')
142
- },
143
- flexDirectionStart() {
144
- return this.getPosition(1, 'vertical', 'top')
145
- },
146
- flexDirectionEnd() {
147
- return this.getPosition(1, 'vertical', 'bottom')
148
- },
149
- horizontalLeft() {
150
- return this.getPosition(2, 'horizontal', 'left')
151
- },
152
- horizontalRight() {
153
- return this.getPosition(2, 'horizontal', 'right')
154
- }
155
- },
156
- watch: {
157
- pattern(newValue, oldValue) {
158
- //console.log(JSON.stringify(newValue))
159
- this.styles = Object.assign({}, this.styles, newValue)
160
- }
161
- },
162
- created() {
163
- this.isShow = this.show
164
- if (this.top === 0) {
165
- this.fabShow = true
166
- }
167
- // 初始化样式
168
- this.styles = Object.assign({}, this.styles, this.pattern)
169
- },
170
- methods: {
171
- _onClick() {
172
- this.$emit('fabClick')
173
- if (!this.popMenu) {
174
- return
175
- }
176
- this.isShow = !this.isShow
177
- },
178
- open() {
179
- this.isShow = true
180
- },
181
- close() {
182
- this.isShow = false
183
- },
184
- /**
185
- * 按钮点击事件
186
- */
187
- _onItemClick(index, item) {
188
- this.$emit('trigger', {
189
- index,
190
- item
191
- })
192
- },
193
- /**
194
- * 获取 位置信息
195
- */
196
- getPosition(types, paramA, paramB) {
197
- if (types === 0) {
198
- return this.horizontal === paramA && this.vertical === paramB
199
- } else if (types === 1) {
200
- return this.direction === paramA && this.vertical === paramB
201
- } else if (types === 2) {
202
- return this.direction === paramA && this.horizontal === paramB
203
- } else {
204
- return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
205
- }
206
- }
207
- }
208
- }
209
- </script>
210
-
211
- <style scoped>
212
- .uni-fab {
213
- position: fixed;
214
- /* #ifndef APP-NVUE */
215
- display: flex;
216
- /* #endif */
217
- justify-content: center;
218
- align-items: center;
219
- z-index: 10;
220
- }
221
-
222
- .uni-cursor-point {
223
- /* #ifdef H5 */
224
- cursor: pointer;
225
- /* #endif */
226
- }
227
-
228
- .uni-fab--active {
229
- opacity: 1;
230
- }
231
-
232
- .uni-fab--leftBottom {
233
- left: 5px;
234
- bottom: 20px;
235
- /* #ifdef H5 */
236
- left: calc(5px + var(--window-left));
237
- bottom: calc(20px + var(--window-bottom));
238
- /* #endif */
239
- padding: 10px;
240
- }
241
-
242
- .uni-fab--leftTop {
243
- left: 5px;
244
- top: 30px;
245
- /* #ifdef H5 */
246
- left: calc(5px + var(--window-left));
247
- top: calc(30px + var(--window-top));
248
- /* #endif */
249
- padding: 10px;
250
- }
251
-
252
- .uni-fab--rightBottom {
253
- right: 5px;
254
- bottom: 20px;
255
- /* #ifdef H5 */
256
- right: calc(5px + var(--window-right));
257
- bottom: calc(20px + var(--window-bottom));
258
- /* #endif */
259
- padding: 10px;
260
- }
261
-
262
- .uni-fab--rightTop {
263
- right: 5px;
264
- top: 30px;
265
- /* #ifdef H5 */
266
- right: calc(5px + var(--window-right));
267
- top: calc(30px + var(--window-top));
268
- /* #endif */
269
- padding: 10px;
270
- }
271
-
272
- .uni-fab__circle {
273
- position: fixed;
274
- /* #ifndef APP-NVUE */
275
- display: flex;
276
- /* #endif */
277
- justify-content: center;
278
- align-items: center;
279
- width: 55px;
280
- height: 55px;
281
- background-color: #3c3e49;
282
- border-radius: 55px;
283
- z-index: 11;
284
- }
285
-
286
- .uni-fab__circle--leftBottom {
287
- left: 15px;
288
- bottom: 30px;
289
- /* #ifdef H5 */
290
- left: calc(15px + var(--window-left));
291
- bottom: calc(30px + var(--window-bottom));
292
- /* #endif */
293
- }
294
-
295
- .uni-fab__circle--leftTop {
296
- left: 15px;
297
- top: 40px;
298
- /* #ifdef H5 */
299
- left: calc(15px + var(--window-left));
300
- top: calc(40px + var(--window-top));
301
- /* #endif */
302
- }
303
-
304
- .uni-fab__circle--rightBottom {
305
- right: 15px;
306
- bottom: 30px;
307
- /* #ifdef H5 */
308
- right: calc(15px + var(--window-right));
309
- bottom: calc(30px + var(--window-bottom));
310
- /* #endif */
311
- }
312
-
313
- .uni-fab__circle--rightTop {
314
- right: 15px;
315
- top: 40px;
316
- /* #ifdef H5 */
317
- right: calc(15px + var(--window-right));
318
- top: calc(40px + var(--window-top));
319
- /* #endif */
320
- }
321
-
322
- .uni-fab__circle--left {
323
- left: 0;
324
- }
325
-
326
- .uni-fab__circle--right {
327
- right: 0;
328
- }
329
-
330
- .uni-fab__circle--top {
331
- top: 0;
332
- }
333
-
334
- .uni-fab__circle--bottom {
335
- bottom: 0;
336
- }
337
-
338
- .uni-fab__plus {
339
- font-weight: bold;
340
- }
341
-
342
- .fab-circle-v {
343
- position: absolute;
344
- width: 3px;
345
- height: 31px;
346
- left: 26px;
347
- top: 12px;
348
- background-color: white;
349
- transform: rotate(0deg);
350
- transition: transform 0.3s;
351
- }
352
-
353
- .fab-circle-h {
354
- position: absolute;
355
- width: 31px;
356
- height: 3px;
357
- left: 12px;
358
- top: 26px;
359
- background-color: white;
360
- transform: rotate(0deg);
361
- transition: transform 0.3s;
362
- }
363
-
364
- .uni-fab__plus--active {
365
- transform: rotate(135deg);
366
- }
367
-
368
- .uni-fab__content {
369
- /* #ifndef APP-NVUE */
370
- box-sizing: border-box;
371
- display: flex;
372
- /* #endif */
373
- flex-direction: row;
374
- border-radius: 55px;
375
- overflow: hidden;
376
- transition-property: width, height;
377
- transition-duration: 0.2s;
378
- width: 55px;
379
- border-color: #DDDDDD;
380
- border-width: 1rpx;
381
- border-style: solid;
382
- }
383
-
384
- .uni-fab__content--other-platform {
385
- border-width: 0px;
386
- box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
387
- }
388
-
389
- .uni-fab__content--left {
390
- justify-content: flex-start;
391
- }
392
-
393
- .uni-fab__content--right {
394
- justify-content: flex-end;
395
- }
396
-
397
- .uni-fab__content--flexDirection {
398
- flex-direction: column;
399
- justify-content: flex-end;
400
- }
401
-
402
- .uni-fab__content--flexDirectionStart {
403
- flex-direction: column;
404
- justify-content: flex-start;
405
- }
406
-
407
- .uni-fab__content--flexDirectionEnd {
408
- flex-direction: column;
409
- justify-content: flex-end;
410
- }
411
-
412
- .uni-fab__item {
413
- /* #ifndef APP-NVUE */
414
- display: flex;
415
- /* #endif */
416
- flex-direction: column;
417
- justify-content: center;
418
- align-items: center;
419
- width: 55px;
420
- height: 55px;
421
- opacity: 0;
422
- transition: opacity 0.2s;
423
- }
424
-
425
- .uni-fab__item--active {
426
- opacity: 1;
427
- }
428
-
429
- .uni-fab__item-image {
430
- width: 25px;
431
- height: 25px;
432
- margin-bottom: 3px;
433
- }
434
-
435
- .uni-fab__item-text {
436
- color: #FFFFFF;
437
- font-size: 12px;
438
- }
439
-
440
- .uni-fab__item--first {
441
- width: 55px;
442
- }
443
- </style>
@@ -1,136 +0,0 @@
1
- <template>
2
- <view :class="[circle === true || circle === 'true' ? 'uni-fav--circle' : '']" :style="[{ backgroundColor: checked ? bgColorChecked : bgColor }]" @click="onClick" class="uni-fav">
3
- <!-- #ifdef MP-ALIPAY -->
4
- <view class="uni-fav-star" v-if="!checked && (star === true || star === 'true')">
5
- <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" size="14" type="star-filled" />
6
- </view>
7
- <!-- #endif -->
8
- <!-- #ifndef MP-ALIPAY -->
9
- <uni-icons :color="fgColor" :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-star" size="14" type="star-filled" v-if="!checked && (star === true || star === 'true')" />
10
- <!-- #endif -->
11
- <text :style="{color: checked ? fgColorChecked : fgColor}" class="uni-fav-text">{{ checked ? contentText.contentFav : contentText.contentDefault }}</text>
12
- </view>
13
- </template>
14
-
15
- <script>
16
- /**
17
- * Fav 收藏按钮
18
- * @description 用于收藏功能,可点击切换选中、不选中的状态
19
- * @tutorial https://ext.dcloud.net.cn/plugin?id=864
20
- * @property {Boolean} star = [true|false] 按钮是否带星星
21
- * @property {String} bgColor 未收藏时的背景色
22
- * @property {String} bgColorChecked 已收藏时的背景色
23
- * @property {String} fgColor 未收藏时的文字颜色
24
- * @property {String} fgColorChecked 已收藏时的文字颜色
25
- * @property {Boolean} circle = [true|false] 是否为圆角
26
- * @property {Boolean} checked = [true|false] 是否为已收藏
27
- * @property {Object} contentText = [true|false] 收藏按钮文字
28
- * @event {Function} click 点击 fav按钮触发事件
29
- * @example <uni-fav :checked="true"/>
30
- */
31
- export default {
32
- name: "UniFav",
33
- // TODO 兼容 vue3,需要注册事件
34
- emits: ['click'],
35
- props: {
36
- star: {
37
- type: [Boolean, String],
38
- default: true
39
- },
40
- bgColor: {
41
- type: String,
42
- default: "#eeeeee"
43
- },
44
- fgColor: {
45
- type: String,
46
- default: "#666666"
47
- },
48
- bgColorChecked: {
49
- type: String,
50
- default: "#007aff"
51
- },
52
- fgColorChecked: {
53
- type: String,
54
- default: "#FFFFFF"
55
- },
56
- circle: {
57
- type: [Boolean, String],
58
- default: false
59
- },
60
- checked: {
61
- type: Boolean,
62
- default: false
63
- },
64
- contentText: {
65
- type: Object,
66
- default () {
67
- return {
68
- contentDefault: "收藏",
69
- contentFav: "已收藏"
70
- };
71
- }
72
- }
73
- },
74
- watch: {
75
- checked() {
76
- if (uni.report) {
77
- if (this.checked) {
78
- uni.report("收藏", "收藏");
79
- } else {
80
- uni.report("取消收藏", "取消收藏");
81
- }
82
- }
83
- }
84
- },
85
- methods: {
86
- onClick() {
87
- this.$emit("click");
88
- }
89
- }
90
- };
91
- </script>
92
-
93
- <style scoped>
94
- .uni-fav {
95
- /* #ifndef APP-NVUE */
96
- display: flex;
97
- /* #endif */
98
- flex-direction: row;
99
- align-items: center;
100
- justify-content: center;
101
- width: 60px;
102
- height: 25px;
103
- line-height: 25px;
104
- text-align: center;
105
- border-radius: 3px;
106
- /* #ifdef H5 */
107
- cursor: pointer;
108
- /* #endif */
109
- }
110
-
111
- .uni-fav--circle {
112
- border-radius: 30px;
113
- }
114
-
115
- .uni-fav-star {
116
- /* #ifndef APP-NVUE */
117
- display: flex;
118
- /* #endif */
119
- height: 25px;
120
- line-height: 24px;
121
- margin-right: 3px;
122
- align-items: center;
123
- justify-content: center;
124
- }
125
-
126
- .uni-fav-text {
127
- /* #ifndef APP-NVUE */
128
- display: flex;
129
- /* #endif */
130
- height: 25px;
131
- line-height: 25px;
132
- align-items: center;
133
- justify-content: center;
134
- font-size: 14px;
135
- }
136
- </style>