fusions-ui 1.2.7 → 1.2.8

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 (547) hide show
  1. package/LICENSE +1 -1
  2. package/changelog.md +2 -0
  3. package/components/avatar/index.ts +1 -0
  4. package/components/avatar/src/avatar.ts +131 -0
  5. package/components/avatar/src/avatar.vue +104 -0
  6. package/components/avatar/src/composables/index.ts +1 -0
  7. package/components/avatar/src/composables/use-avatar.ts +61 -0
  8. package/components/avatar-group/index.ts +1 -0
  9. package/components/avatar-group/src/avatar-group.ts +86 -0
  10. package/components/{fu-avatar-group/fu-avatar-group.vue → avatar-group/src/avatar-group.vue} +27 -34
  11. package/components/avatar-group/src/composables/index.ts +1 -0
  12. package/components/avatar-group/src/composables/use-avatar-group.ts +17 -0
  13. package/components/badge/index.ts +1 -0
  14. package/components/badge/src/badge.ts +126 -0
  15. package/components/{fu-badge/fu-badge.vue → badge/src/badge.vue} +26 -62
  16. package/components/badge/src/composables/badge-custom.ts +51 -0
  17. package/components/badge/src/composables/index.ts +1 -0
  18. package/components/banner-arc/index.ts +1 -0
  19. package/components/banner-arc/src/banner-arc.ts +41 -0
  20. package/components/banner-arc/src/banner-arc.vue +49 -0
  21. package/components/banner-arc/src/composables/banner-arc-custom.ts +19 -0
  22. package/components/banner-arc/src/composables/index.ts +1 -0
  23. package/components/button/index.ts +1 -0
  24. package/components/button/src/button.ts +332 -0
  25. package/components/{fu-button/fu-button.vue → button/src/button.vue} +57 -163
  26. package/components/button/src/composables/button-custom.ts +90 -0
  27. package/components/button/src/composables/index.ts +2 -0
  28. package/components/button/src/composables/use-button.ts +137 -0
  29. package/components/cell/index.ts +1 -0
  30. package/components/cell/src/cell.ts +167 -0
  31. package/components/{fu-cell/fu-cell.vue → cell/src/cell.vue} +29 -38
  32. package/components/cell/src/composables/index.ts +1 -0
  33. package/components/cell/src/composables/use-cell.ts +20 -0
  34. package/components/cell-group/index.ts +1 -0
  35. package/components/cell-group/src/cell-group.ts +23 -0
  36. package/components/{fu-cell-group/fu-cell-group.vue → cell-group/src/cell-group.vue} +8 -13
  37. package/components/checkbox/index.ts +1 -0
  38. package/components/checkbox/src/checkbox.ts +144 -0
  39. package/components/checkbox/src/checkbox.vue +270 -0
  40. package/components/checkbox/src/composables/checkbox-custom.ts +15 -0
  41. package/components/checkbox/src/composables/index.ts +2 -0
  42. package/components/checkbox/src/composables/use-checkbox.ts +200 -0
  43. package/components/code-input/index.ts +1 -0
  44. package/components/code-input/src/code-input.ts +157 -0
  45. package/components/code-input/src/code-input.vue +158 -0
  46. package/components/code-input/src/composables/code-input-custom.ts +74 -0
  47. package/components/code-input/src/composables/index.ts +2 -0
  48. package/components/code-input/src/composables/use-code-input.ts +67 -0
  49. package/components/code-verify/index.ts +1 -0
  50. package/components/code-verify/src/code-verify.ts +160 -0
  51. package/components/code-verify/src/code-verify.vue +87 -0
  52. package/components/code-verify/src/composables/code-verify-custom.ts +23 -0
  53. package/components/code-verify/src/composables/index.ts +2 -0
  54. package/components/code-verify/src/composables/use-code-verify.ts +132 -0
  55. package/components/collapse/index.ts +1 -0
  56. package/components/collapse/src/collapse.ts +41 -0
  57. package/components/collapse/src/collapse.vue +48 -0
  58. package/components/collapse/src/composables/index.ts +1 -0
  59. package/components/collapse/src/composables/use-collapse.ts +150 -0
  60. package/components/collapse-item/index.ts +1 -0
  61. package/components/collapse-item/src/collapse-item.ts +102 -0
  62. package/components/{fu-collapse-item/fu-collapse-item.vue → collapse-item/src/collapse-item.vue} +20 -159
  63. package/components/collapse-item/src/composables/index.ts +1 -0
  64. package/components/collapse-item/src/composables/use-collapse-item.ts +139 -0
  65. package/components/countdown/index.ts +1 -0
  66. package/components/countdown/src/composables/index.ts +1 -0
  67. package/components/countdown/src/composables/use-countdown.ts +133 -0
  68. package/components/countdown/src/countdown.ts +63 -0
  69. package/components/countdown/src/countdown.vue +60 -0
  70. package/components/{fu-countdown/util.js → countdown/src/util.ts} +5 -5
  71. package/components/datetime-picker/index.ts +1 -0
  72. package/components/datetime-picker/src/composables/index.ts +1 -0
  73. package/components/datetime-picker/src/composables/use-datetime-picker.ts +325 -0
  74. package/components/datetime-picker/src/datetime-picker.ts +223 -0
  75. package/components/datetime-picker/src/datetime-picker.vue +96 -0
  76. package/components/form/index.ts +1 -0
  77. package/components/form/src/composables/index.ts +1 -0
  78. package/components/form/src/composables/use-form.ts +256 -0
  79. package/components/form/src/form.ts +108 -0
  80. package/components/form/src/form.vue +64 -0
  81. package/components/{fu-form/utils.js → form/src/utils.ts} +49 -42
  82. package/components/{fu-form/validate.js → form/src/validate.ts} +58 -49
  83. package/components/form-item/index.ts +1 -0
  84. package/components/form-item/src/composables/index.ts +1 -0
  85. package/components/form-item/src/composables/use-form-item.ts +292 -0
  86. package/components/form-item/src/form-item.ts +81 -0
  87. package/components/form-item/src/form-item.vue +229 -0
  88. package/components/fusions-ui/src/fusions-ui.vue +8 -0
  89. package/components/grid/index.ts +1 -0
  90. package/components/grid/src/composables/index.ts +1 -0
  91. package/components/grid/src/composables/use-grid.ts +67 -0
  92. package/components/grid/src/grid.ts +54 -0
  93. package/components/grid/src/grid.vue +69 -0
  94. package/components/grid-item/index.ts +1 -0
  95. package/components/grid-item/src/composables/grid-item-custom.ts +16 -0
  96. package/components/grid-item/src/composables/index.ts +2 -0
  97. package/components/grid-item/src/composables/use-grid-item.ts +55 -0
  98. package/components/grid-item/src/grid-item.ts +15 -0
  99. package/components/grid-item/src/grid-item.vue +102 -0
  100. package/components/icon/index.ts +1 -0
  101. package/components/icon/src/composables/icon-custom.ts +41 -0
  102. package/components/icon/src/composables/index.ts +2 -0
  103. package/components/icon/src/composables/use-icon.ts +14 -0
  104. package/components/{fu-icon → icon/src}/fuicon.css +584 -584
  105. package/components/icon/src/fuicon.ts +1023 -0
  106. package/components/icon/src/icon.ts +84 -0
  107. package/components/icon/src/icon.vue +92 -0
  108. package/components/image/index.ts +1 -0
  109. package/components/image/src/composables/image-custom.ts +36 -0
  110. package/components/image/src/composables/index.ts +2 -0
  111. package/components/image/src/composables/use-image.ts +135 -0
  112. package/components/image/src/image.ts +185 -0
  113. package/components/image/src/image.vue +152 -0
  114. package/components/index-anchor/index.ts +1 -0
  115. package/components/index-anchor/src/composables/index.ts +1 -0
  116. package/components/index-anchor/src/composables/use-index-anchor.ts +44 -0
  117. package/components/index-anchor/src/index-anchor.ts +45 -0
  118. package/components/index-anchor/src/index-anchor.vue +60 -0
  119. package/components/index-item/index.ts +1 -0
  120. package/components/index-item/src/composables/index.ts +1 -0
  121. package/components/index-item/src/composables/use-index-item.ts +75 -0
  122. package/components/index-item/src/index-item.ts +13 -0
  123. package/components/index-item/src/index-item.vue +32 -0
  124. package/components/index-list/index.ts +1 -0
  125. package/components/index-list/src/composables/index.ts +1 -0
  126. package/components/index-list/src/composables/use-index-list.ts +297 -0
  127. package/components/index-list/src/index-list.ts +52 -0
  128. package/components/index-list/src/index-list.vue +178 -0
  129. package/components/index.ts +62 -0
  130. package/components/input/index.ts +1 -0
  131. package/components/input/src/composables/index.ts +2 -0
  132. package/components/input/src/composables/input-custom.ts +69 -0
  133. package/components/input/src/composables/use-input.ts +117 -0
  134. package/components/input/src/input.ts +360 -0
  135. package/components/input/src/input.vue +241 -0
  136. package/components/keyboard/index.ts +1 -0
  137. package/components/keyboard/src/composables/index.ts +3 -0
  138. package/components/keyboard/src/composables/use-keyboard-car.ts +99 -0
  139. package/components/keyboard/src/composables/use-keyboard-number.ts +81 -0
  140. package/components/keyboard/src/composables/use-keyboard.ts +61 -0
  141. package/components/keyboard/src/keyboard-car.ts +53 -0
  142. package/components/{fu-keyboard → keyboard/src}/keyboard-car.vue +37 -199
  143. package/components/keyboard/src/keyboard-number.ts +44 -0
  144. package/components/keyboard/src/keyboard-number.vue +108 -0
  145. package/components/keyboard/src/keyboard.ts +174 -0
  146. package/components/{fu-keyboard/fu-keyboard.vue → keyboard/src/keyboard.vue} +38 -63
  147. package/components/line/index.ts +1 -0
  148. package/components/line/src/composables/index.ts +1 -0
  149. package/components/line/src/composables/line-custom.ts +30 -0
  150. package/components/line/src/line.ts +82 -0
  151. package/components/line/src/line.vue +44 -0
  152. package/components/link/index.ts +1 -0
  153. package/components/link/src/composables/index.ts +2 -0
  154. package/components/link/src/composables/link-custom.ts +19 -0
  155. package/components/link/src/composables/use-link.ts +33 -0
  156. package/components/link/src/link.ts +61 -0
  157. package/components/link/src/link.vue +62 -0
  158. package/components/loading/index.ts +1 -0
  159. package/{libs/function/colorGradient.js → components/loading/src/composables/colorGradient.ts} +4 -4
  160. package/components/loading/src/composables/index.ts +2 -0
  161. package/components/loading/src/composables/loading-custom.ts +21 -0
  162. package/components/loading/src/composables/use-loading.ts +100 -0
  163. package/components/loading/src/loading.ts +77 -0
  164. package/components/{fu-loading/fu-loading.vue → loading/src/loading.vue} +23 -119
  165. package/components/loading-more/index.ts +1 -0
  166. package/components/loading-more/src/loading-more.ts +75 -0
  167. package/components/{fu-loading-more/fu-loading-more.vue → loading-more/src/loading-more.vue} +18 -19
  168. package/components/modal/index.ts +1 -0
  169. package/components/modal/src/composables/index.ts +2 -0
  170. package/components/modal/src/composables/modal-custom.ts +17 -0
  171. package/components/modal/src/composables/use-modal.ts +56 -0
  172. package/components/modal/src/modal.ts +152 -0
  173. package/components/{fu-modal/fu-modal.vue → modal/src/modal.vue} +41 -69
  174. package/components/navbar/index.ts +1 -0
  175. package/components/navbar/src/composables/index.ts +2 -0
  176. package/components/navbar/src/composables/navbar-custom.ts +62 -0
  177. package/components/navbar/src/composables/use-navbar.ts +42 -0
  178. package/components/navbar/src/navbar.ts +151 -0
  179. package/components/navbar/src/navbar.vue +249 -0
  180. package/components/notice-bar/index.ts +3 -0
  181. package/components/notice-bar/src/composables/index.ts +5 -0
  182. package/components/notice-bar/src/composables/notice-column-custom.ts +43 -0
  183. package/components/notice-bar/src/composables/notice-row-custom.ts +26 -0
  184. package/components/notice-bar/src/composables/use-notice-bar.ts +34 -0
  185. package/components/notice-bar/src/composables/use-notice-column.ts +31 -0
  186. package/components/notice-bar/src/composables/use-notice-row.ts +88 -0
  187. package/components/notice-bar/src/notice-bar.ts +197 -0
  188. package/components/{fu-notice-bar/fu-notice-bar.vue → notice-bar/src/notice-bar.vue} +28 -41
  189. package/components/notice-bar/src/notice-column.ts +172 -0
  190. package/components/notice-bar/src/notice-column.vue +129 -0
  191. package/components/notice-bar/src/notice-row.ts +155 -0
  192. package/components/notice-bar/src/notice-row.vue +135 -0
  193. package/components/number-box/index.ts +1 -0
  194. package/components/number-box/src/composables/index.ts +2 -0
  195. package/components/number-box/src/composables/number-box-custom.ts +16 -0
  196. package/components/number-box/src/composables/use-number-box.ts +84 -0
  197. package/components/number-box/src/number-box.ts +98 -0
  198. package/components/number-box/src/number-box.vue +123 -0
  199. package/components/parse/index.ts +1 -0
  200. package/components/parse/src/app-plus/html/js/handler.js +254 -0
  201. package/components/parse/src/app-plus/html/js/uni.webview.min.js +188 -0
  202. package/components/parse/src/app-plus/html/local.html +32 -0
  203. package/components/parse/src/composables/index.ts +1 -0
  204. package/components/parse/src/composables/use-parse.ts +428 -0
  205. package/components/parse/src/node/node.vue +635 -0
  206. package/components/parse/src/parse.ts +156 -0
  207. package/components/parse/src/parse.vue +131 -0
  208. package/components/parse/src/parser.ts +1402 -0
  209. package/components/picker/index.ts +1 -0
  210. package/components/picker/src/composables/index.ts +2 -0
  211. package/components/picker/src/composables/picker-custom.ts +40 -0
  212. package/components/picker/src/composables/use-picker.ts +179 -0
  213. package/components/picker/src/picker.ts +172 -0
  214. package/components/picker/src/picker.vue +197 -0
  215. package/components/popup/index.ts +1 -0
  216. package/components/popup/src/composables/index.ts +1 -0
  217. package/components/popup/src/composables/use-popup.ts +346 -0
  218. package/components/popup/src/keypress.ts +55 -0
  219. package/components/popup/src/popup.ts +101 -0
  220. package/components/popup/src/popup.vue +204 -0
  221. package/components/progress/index.ts +1 -0
  222. package/components/progress/src/composables/index.ts +2 -0
  223. package/components/progress/src/composables/progress-custom.ts +24 -0
  224. package/components/progress/src/composables/use-progress.ts +159 -0
  225. package/components/progress/src/progress.ts +84 -0
  226. package/components/progress/src/progress.vue +150 -0
  227. package/components/rate/index.ts +1 -0
  228. package/components/rate/src/composables/index.ts +1 -0
  229. package/components/rate/src/composables/use-rate.ts +196 -0
  230. package/components/rate/src/rate.ts +114 -0
  231. package/components/rate/src/rate.vue +113 -0
  232. package/components/read-more/index.ts +1 -0
  233. package/components/read-more/src/composables/index.ts +2 -0
  234. package/components/read-more/src/composables/read-more-custom.ts +46 -0
  235. package/components/read-more/src/composables/use-read-more.ts +72 -0
  236. package/components/read-more/src/read-more.ts +102 -0
  237. package/components/read-more/src/read-more.vue +104 -0
  238. package/components/safe-bottom/index.ts +1 -0
  239. package/components/safe-bottom/src/composables/index.ts +2 -0
  240. package/components/safe-bottom/src/composables/safe-bottom-custom.ts +18 -0
  241. package/components/safe-bottom/src/composables/use-safe-bottom.ts +17 -0
  242. package/components/safe-bottom/src/safe-bottom.ts +8 -0
  243. package/components/safe-bottom/src/safe-bottom.vue +43 -0
  244. package/components/scroll-list/index.ts +1 -0
  245. package/components/scroll-list/src/composables/index.ts +2 -0
  246. package/components/scroll-list/src/composables/scroll-list-custom.ts +41 -0
  247. package/components/scroll-list/src/composables/use-scroll-list.ts +126 -0
  248. package/components/scroll-list/src/scroll-list.ts +57 -0
  249. package/components/scroll-list/src/scroll-list.vue +143 -0
  250. package/components/{fu-scroll-list/scrollWxs.wxs → scroll-list/src/scroll-wxs.wxs} +2 -2
  251. package/components/search/index.ts +1 -0
  252. package/components/search/src/composables/index.ts +2 -0
  253. package/components/search/src/composables/search-custom.ts +25 -0
  254. package/components/search/src/composables/use-search.ts +106 -0
  255. package/components/search/src/search.ts +186 -0
  256. package/components/{fu-search/fu-search.vue → search/src/search.vue} +42 -154
  257. package/components/section/index.ts +1 -0
  258. package/components/section/src/composables/index.ts +1 -0
  259. package/components/section/src/composables/use-section.ts +19 -0
  260. package/components/section/src/section.ts +83 -0
  261. package/components/{fu-section/fu-section.vue → section/src/section.vue} +36 -35
  262. package/components/sign-board/index.ts +1 -0
  263. package/components/sign-board/src/composables/index.ts +1 -0
  264. package/components/sign-board/src/composables/use-sign-board.ts +552 -0
  265. package/components/sign-board/src/sign-board.ts +48 -0
  266. package/components/sign-board/src/sign-board.vue +191 -0
  267. package/components/skeleton/index.ts +1 -0
  268. package/components/skeleton/src/composables/index.ts +2 -0
  269. package/components/skeleton/src/composables/skeleton-custom.ts +23 -0
  270. package/components/skeleton/src/composables/use-skeleton.ts +102 -0
  271. package/components/skeleton/src/skeleton.ts +37 -0
  272. package/components/skeleton/src/skeleton.vue +147 -0
  273. package/components/status-bar/src/composables/index.ts +1 -0
  274. package/components/status-bar/src/composables/use-status-bar.ts +29 -0
  275. package/components/status-bar/src/status-bar.vue +21 -0
  276. package/components/steps/index.ts +1 -0
  277. package/components/steps/src/composables/index.ts +1 -0
  278. package/components/steps/src/composables/use-steps.ts +27 -0
  279. package/components/steps/src/steps.ts +65 -0
  280. package/components/steps/src/steps.vue +46 -0
  281. package/components/steps-item/index.ts +1 -0
  282. package/components/steps-item/src/composables/index.ts +2 -0
  283. package/components/steps-item/src/composables/steps-item-custom.ts +81 -0
  284. package/components/steps-item/src/composables/use-steps-item.ts +87 -0
  285. package/components/steps-item/src/steps-item.ts +38 -0
  286. package/components/steps-item/src/steps-item.vue +224 -0
  287. package/components/sticky/index.ts +1 -0
  288. package/components/sticky/src/composables/index.ts +2 -0
  289. package/components/sticky/src/composables/sticky-custom.ts +57 -0
  290. package/components/sticky/src/composables/use-sticky.ts +152 -0
  291. package/components/sticky/src/sticky.ts +62 -0
  292. package/components/sticky/src/sticky.vue +65 -0
  293. package/components/subsection/index.ts +1 -0
  294. package/components/subsection/src/composables/index.ts +2 -0
  295. package/components/subsection/src/composables/subsection-custom.ts +71 -0
  296. package/components/subsection/src/composables/use-subsection.ts +85 -0
  297. package/components/subsection/src/subsection.ts +107 -0
  298. package/components/subsection/src/subsection.vue +165 -0
  299. package/components/swipe-action/src/composables/index.ts +1 -0
  300. package/components/swipe-action/src/composables/use-swipe-action.ts +58 -0
  301. package/components/swipe-action/src/swipe-action.vue +81 -0
  302. package/components/swipe-action-item/index.ts +1 -0
  303. package/components/{fu-swipe-action-item/mpwxs.js → swipe-action-item/src/mpwxs.ts} +22 -27
  304. package/components/swipe-action-item/src/swipe-action-item.ts +68 -0
  305. package/components/{fu-swipe-action-item/fu-swipe-action-item.vue → swipe-action-item/src/swipe-action-item.vue} +24 -17
  306. package/components/{fu-swipe-action-item → swipe-action-item/src}/wx.wxs +2 -2
  307. package/components/swiper/index.ts +1 -0
  308. package/components/swiper/src/composables/index.ts +2 -0
  309. package/components/swiper/src/composables/swiper-custom.ts +40 -0
  310. package/components/swiper/src/composables/use-swiper.ts +75 -0
  311. package/components/swiper/src/swiper.ts +189 -0
  312. package/components/{fu-swiper/fu-swiper.vue → swiper/src/swiper.vue} +49 -118
  313. package/components/switch/index.ts +1 -0
  314. package/components/switch/src/composables/index.ts +2 -0
  315. package/components/switch/src/composables/switch-custom.ts +32 -0
  316. package/components/switch/src/composables/use-switch.ts +38 -0
  317. package/components/switch/src/switch.ts +115 -0
  318. package/components/{fu-switch/fu-switch.vue → switch/src/switch.vue} +25 -73
  319. package/components/tabs/index.ts +1 -0
  320. package/components/tabs/src/composables/index.ts +2 -0
  321. package/components/tabs/src/composables/tabs-custom.ts +43 -0
  322. package/components/tabs/src/composables/use-tabs.ts +210 -0
  323. package/components/tabs/src/tabs.ts +123 -0
  324. package/components/tabs/src/tabs.vue +153 -0
  325. package/components/tag/index.ts +1 -0
  326. package/components/tag/src/composables/index.ts +2 -0
  327. package/components/tag/src/composables/tag-custom.ts +61 -0
  328. package/components/tag/src/composables/use-tag.ts +23 -0
  329. package/components/tag/src/tag.ts +159 -0
  330. package/components/{fu-tag/fu-tag.vue → tag/src/tag.vue} +53 -93
  331. package/components/text/index.ts +1 -0
  332. package/components/text/src/composables/index.ts +2 -0
  333. package/components/text/src/composables/text-custom.ts +120 -0
  334. package/components/text/src/composables/use-text.ts +83 -0
  335. package/components/text/src/text.ts +261 -0
  336. package/components/text/src/text.vue +186 -0
  337. package/components/textarea/index.ts +1 -0
  338. package/components/textarea/src/composables/index.ts +2 -0
  339. package/components/textarea/src/composables/textarea-custom.ts +50 -0
  340. package/components/textarea/src/composables/use-textarea.ts +88 -0
  341. package/components/textarea/src/textarea.ts +250 -0
  342. package/components/textarea/src/textarea.vue +162 -0
  343. package/components/{fu-timeaxis/fu-timeaxis.vue → timeaxis/src/timeaxis.vue} +3 -9
  344. package/components/timeaxis-item/index.ts +1 -0
  345. package/components/timeaxis-item/src/timeaxis-item.ts +20 -0
  346. package/components/timeaxis-item/src/timeaxis-item.vue +50 -0
  347. package/components/transition/index.ts +1 -0
  348. package/components/transition/src/composables/createAnimation.ts +171 -0
  349. package/components/transition/src/composables/index.ts +2 -0
  350. package/components/transition/src/composables/transform-custom.ts +18 -0
  351. package/components/transition/src/composables/use-transition.ts +251 -0
  352. package/components/transition/src/transition.ts +64 -0
  353. package/components/transition/src/transition.vue +70 -0
  354. package/components/upload/index.ts +1 -0
  355. package/components/upload/src/composables/index.ts +5 -0
  356. package/components/upload/src/composables/upload-file-custom.ts +68 -0
  357. package/components/upload/src/composables/upload-image-custom.ts +76 -0
  358. package/components/upload/src/composables/use-upload-file.ts +27 -0
  359. package/components/upload/src/composables/use-upload-image.ts +38 -0
  360. package/components/upload/src/composables/use-upload.ts +388 -0
  361. package/components/upload/src/upload-file.ts +84 -0
  362. package/components/upload/src/upload-file.vue +193 -0
  363. package/components/upload/src/upload-image.ts +90 -0
  364. package/components/upload/src/upload-image.vue +158 -0
  365. package/components/upload/src/upload.ts +196 -0
  366. package/components/upload/src/upload.vue +151 -0
  367. package/components/{fu-upload/utils.js → upload/src/utils.ts} +12 -12
  368. package/components/vtabs/index.ts +1 -0
  369. package/components/vtabs/src/composables/index.ts +2 -0
  370. package/components/vtabs/src/composables/use-vtabs.ts +276 -0
  371. package/components/vtabs/src/composables/vtabs-custom.ts +54 -0
  372. package/components/vtabs/src/vtabs.ts +130 -0
  373. package/components/vtabs/src/vtabs.vue +189 -0
  374. package/components/vtabs-item/index.ts +1 -0
  375. package/components/vtabs-item/src/composables/index.ts +1 -0
  376. package/components/vtabs-item/src/composables/use-vtabs-item.ts +60 -0
  377. package/components/vtabs-item/src/vtabs-item.ts +10 -0
  378. package/components/vtabs-item/src/vtabs-item.vue +20 -0
  379. package/components/waterfall/index.ts +1 -0
  380. package/components/waterfall/src/composables/index.ts +2 -0
  381. package/components/waterfall/src/composables/use-waterfall.ts +139 -0
  382. package/components/waterfall/src/composables/waterfall-custom.ts +18 -0
  383. package/components/waterfall/src/waterfall.ts +114 -0
  384. package/components/waterfall/src/waterfall.vue +104 -0
  385. package/{libs/config/config.js → config/config.ts} +13 -7
  386. package/constants/images.ts +18 -0
  387. package/constants/index.ts +6 -0
  388. package/constants/open-types.ts +33 -0
  389. package/constants/props.ts +18 -0
  390. package/constants/shapes.ts +6 -0
  391. package/constants/types.ts +10 -0
  392. package/constants/z-index.ts +27 -0
  393. package/global.d.ts +103 -0
  394. package/hooks/index.ts +25 -0
  395. package/index.scss +3 -5
  396. package/index.ts +56 -0
  397. package/package.json +1 -1
  398. package/{libs/route/min.route.config.js → route/min.route.config.ts} +62 -23
  399. package/route/route.config.ts +93 -0
  400. package/style/color.scss +26 -0
  401. package/{libs/style → style}/common.scss +1 -14
  402. package/{libs/function/applyEven.js → utils/applyEven.ts} +21 -12
  403. package/utils/check.ts +276 -0
  404. package/{libs/function/chooseUploadFile.js → utils/chooseUploadFile.ts} +22 -26
  405. package/utils/common.ts +609 -0
  406. package/{libs/function/digit.js → utils/digit.ts} +63 -33
  407. package/{components/fu-swipe-action-item/isPC.js → utils/isPC.ts} +1 -1
  408. package/utils/toast.ts +42 -0
  409. package/components/fu-avatar/fu-avatar.vue +0 -157
  410. package/components/fu-avatar/props.js +0 -117
  411. package/components/fu-avatar-group/props.js +0 -74
  412. package/components/fu-badge/props.js +0 -112
  413. package/components/fu-banner-arc/fu-banner-arc.vue +0 -58
  414. package/components/fu-banner-arc/props.js +0 -35
  415. package/components/fu-button/props.js +0 -228
  416. package/components/fu-cell/props.js +0 -108
  417. package/components/fu-cell-group/props.js +0 -19
  418. package/components/fu-checkbox/fu-checkbox.vue +0 -469
  419. package/components/fu-checkbox/props.js +0 -126
  420. package/components/fu-code-input/fu-code-input.vue +0 -269
  421. package/components/fu-code-input/props.js +0 -136
  422. package/components/fu-code-verify/fu-code-verify.vue +0 -221
  423. package/components/fu-code-verify/props.js +0 -136
  424. package/components/fu-collapse/fu-collapse.vue +0 -143
  425. package/components/fu-collapse/props.js +0 -29
  426. package/components/fu-collapse-item/props.js +0 -101
  427. package/components/fu-countdown/fu-countdown.vue +0 -164
  428. package/components/fu-countdown/props.js +0 -35
  429. package/components/fu-datetime-picker/fu-datetime-picker.vue +0 -375
  430. package/components/fu-datetime-picker/props.js +0 -194
  431. package/components/fu-form/fu-form.vue +0 -284
  432. package/components/fu-form/props.js +0 -74
  433. package/components/fu-form-item/fu-form-item.vue +0 -535
  434. package/components/fu-form-item/props.js +0 -66
  435. package/components/fu-grid/fu-grid.vue +0 -113
  436. package/components/fu-grid/props.js +0 -44
  437. package/components/fu-grid-item/fu-grid-item.vue +0 -136
  438. package/components/fu-grid-item/props.js +0 -27
  439. package/components/fu-icon/fu-icon.vue +0 -110
  440. package/components/fu-icon/fuicon.js +0 -1031
  441. package/components/fu-icon/props.js +0 -55
  442. package/components/fu-image/fu-image.vue +0 -268
  443. package/components/fu-image/props.js +0 -145
  444. package/components/fu-index-anchor/fu-index-anchor.vue +0 -91
  445. package/components/fu-index-anchor/props.js +0 -43
  446. package/components/fu-index-item/fu-index-item.vue +0 -79
  447. package/components/fu-index-list/fu-index-list.vue +0 -426
  448. package/components/fu-index-list/props.js +0 -42
  449. package/components/fu-input/fu-input.vue +0 -393
  450. package/components/fu-input/props.js +0 -291
  451. package/components/fu-keyboard/keyboard-number.vue +0 -195
  452. package/components/fu-keyboard/props.js +0 -138
  453. package/components/fu-line/fu-line.vue +0 -64
  454. package/components/fu-line/props.js +0 -58
  455. package/components/fu-link/fu-link.vue +0 -91
  456. package/components/fu-link/props.js +0 -49
  457. package/components/fu-loading/props.js +0 -60
  458. package/components/fu-loading-more/props.js +0 -59
  459. package/components/fu-modal/props.js +0 -128
  460. package/components/fu-navbar/fu-navbar.vue +0 -271
  461. package/components/fu-navbar/props.js +0 -72
  462. package/components/fu-navbar/status-bar.vue +0 -27
  463. package/components/fu-notice-bar/notice-column.vue +0 -313
  464. package/components/fu-notice-bar/notice-row.vue +0 -363
  465. package/components/fu-notice-bar/props.js +0 -173
  466. package/components/fu-number-box/fu-number-box.vue +0 -210
  467. package/components/fu-number-box/props.js +0 -79
  468. package/components/fu-parse/fu-parse.vue +0 -508
  469. package/components/fu-parse/node/node.vue +0 -576
  470. package/components/fu-parse/parser.js +0 -1335
  471. package/components/fu-picker/fu-picker.vue +0 -347
  472. package/components/fu-picker/props.js +0 -150
  473. package/components/fu-popup/fu-popup.vue +0 -475
  474. package/components/fu-popup/keypress.js +0 -45
  475. package/components/fu-popup/props.js +0 -83
  476. package/components/fu-progress/fu-progress.vue +0 -292
  477. package/components/fu-progress/props.js +0 -76
  478. package/components/fu-rate/fu-rate.vue +0 -301
  479. package/components/fu-rate/props.js +0 -103
  480. package/components/fu-read-more/fu-read-more.vue +0 -191
  481. package/components/fu-read-more/props.js +0 -72
  482. package/components/fu-ribbon/fu-ribbon.vue +0 -106
  483. package/components/fu-ribbon/props.js +0 -35
  484. package/components/fu-safe-area/fu-safe-area.vue +0 -61
  485. package/components/fu-scroll-list/fu-scroll-list.vue +0 -196
  486. package/components/fu-scroll-list/nvue.js +0 -28
  487. package/components/fu-scroll-list/props.js +0 -43
  488. package/components/fu-search/props.js +0 -149
  489. package/components/fu-section/props.js +0 -59
  490. package/components/fu-sign-board/fu-sign-board.vue +0 -730
  491. package/components/fu-sign-board/props.js +0 -34
  492. package/components/fu-skeleton/fu-skeleton.vue +0 -238
  493. package/components/fu-skeleton/props.js +0 -35
  494. package/components/fu-steps/fu-steps.vue +0 -81
  495. package/components/fu-steps/props.js +0 -55
  496. package/components/fu-steps-item/fu-steps-item.vue +0 -274
  497. package/components/fu-steps-item/props.js +0 -34
  498. package/components/fu-sticky/fu-sticky.vue +0 -232
  499. package/components/fu-sticky/props.js +0 -54
  500. package/components/fu-subsection/fu-subsection.vue +0 -288
  501. package/components/fu-subsection/props.js +0 -88
  502. package/components/fu-swipe-action/fu-swipe-action.vue +0 -64
  503. package/components/fu-swipe-action-item/props.js +0 -54
  504. package/components/fu-swiper/props.js +0 -163
  505. package/components/fu-switch/props.js +0 -102
  506. package/components/fu-tabs/fu-tabs.vue +0 -361
  507. package/components/fu-tabs/props.js +0 -109
  508. package/components/fu-tag/props.js +0 -135
  509. package/components/fu-text/button.js +0 -13
  510. package/components/fu-text/fu-text.vue +0 -254
  511. package/components/fu-text/openType.js +0 -47
  512. package/components/fu-text/props.js +0 -173
  513. package/components/fu-text/value.js +0 -88
  514. package/components/fu-textarea/fu-textarea.vue +0 -288
  515. package/components/fu-textarea/props.js +0 -206
  516. package/components/fu-timeaxis-item/fu-timeaxis-item.vue +0 -68
  517. package/components/fu-transition/createAnimation.js +0 -131
  518. package/components/fu-transition/fu-transition.vue +0 -292
  519. package/components/fu-transition/props.js +0 -21
  520. package/components/fu-upload/fu-upload.vue +0 -563
  521. package/components/fu-upload/props.js +0 -171
  522. package/components/fu-upload/upload-file.vue +0 -332
  523. package/components/fu-upload/upload-image.vue +0 -304
  524. package/components/fu-vtabs/fu-vtabs.vue +0 -443
  525. package/components/fu-vtabs/props.js +0 -114
  526. package/components/fu-vtabs-item/fu-vtabs-item.vue +0 -71
  527. package/components/fu-waterfall/fu-waterfall.vue +0 -238
  528. package/components/fu-waterfall/props.js +0 -85
  529. package/index.js +0 -71
  530. package/libs/function/check.js +0 -215
  531. package/libs/function/common.js +0 -527
  532. package/libs/function/message.js +0 -47
  533. package/libs/mixin/button.js +0 -85
  534. package/libs/mixin/mixin.js +0 -94
  535. package/libs/mixin/mpMixin.js +0 -8
  536. package/libs/mixin/mpShare.js +0 -15
  537. package/libs/route/route.config.js +0 -66
  538. package/libs/style/color.scss +0 -24
  539. /package/components/{fu-icon → icon/src}/fuicon.ttf +0 -0
  540. /package/components/{fu-swipe-action-item → swipe-action-item/src}/bindingx.js +0 -0
  541. /package/components/{fu-swipe-action-item → swipe-action-item/src}/mpalipay.js +0 -0
  542. /package/components/{fu-swipe-action-item → swipe-action-item/src}/mpother.js +0 -0
  543. /package/components/{fu-swipe-action-item → swipe-action-item/src}/render.js +0 -0
  544. /package/{libs/style → style}/components.scss +0 -0
  545. /package/{libs/style → style}/style.h5.scss +0 -0
  546. /package/{libs/style → style}/style.mp.scss +0 -0
  547. /package/{libs/function → utils}/dayjs.js +0 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 www.fusions.com
3
+ Copyright (c) 2025 www.fusions.top
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/changelog.md ADDED
@@ -0,0 +1,2 @@
1
+ ## 1.3.0(2026-05-01)
2
+ - 升级vue3,后续不再兼容vue2版本,与npm版本同步,如需vue2版本,请指定安装1.2.7版本
@@ -0,0 +1 @@
1
+ export * from './src/avatar'
@@ -0,0 +1,131 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+ import check from '../../../utils/check';
3
+ import { componentProps, componentShapes, componentImages } from '../../../constants';
4
+
5
+ export const avatarProps = {
6
+ /**
7
+ * @description 头像图片路径(不能为相对路径)
8
+ */
9
+ src: {
10
+ type: String,
11
+ default: ''
12
+ },
13
+ /**
14
+ * @description 头像形状
15
+ * @values 'circle' - 圆形, 'square' - 方形
16
+ * @default 'circle'
17
+ */
18
+ shape: {
19
+ type: String,
20
+ values: componentShapes,
21
+ default: 'circle'
22
+ },
23
+ /**
24
+ * @description 头像尺寸
25
+ * @default 40
26
+ */
27
+ size: {
28
+ type: [String, Number],
29
+ default: 40
30
+ },
31
+ /**
32
+ * @description 裁剪模式
33
+ * @default 'aspectFill'
34
+ */
35
+ mode: {
36
+ type: String,
37
+ values: componentImages,
38
+ default: 'aspectFill'
39
+ },
40
+ /**
41
+ * @description 显示的文字
42
+ */
43
+ text: {
44
+ type: String,
45
+ default: ''
46
+ },
47
+ /**
48
+ * @description 背景颜色
49
+ * @default '#c4c8d0'
50
+ */
51
+ bgColor: {
52
+ type: String,
53
+ default: '#c4c8d0'
54
+ },
55
+ /**
56
+ * @description 文字颜色
57
+ * @default '#ffffff'
58
+ */
59
+ color: {
60
+ type: String,
61
+ default: '#ffffff'
62
+ },
63
+ /**
64
+ * @description 文字大小
65
+ * @default 18
66
+ */
67
+ fontSize: {
68
+ type: [String, Number],
69
+ default: 18
70
+ },
71
+ /**
72
+ * @description 显示的图标
73
+ */
74
+ icon: {
75
+ type: String,
76
+ default: ''
77
+ },
78
+ /**
79
+ * @description 显示小程序头像,只对百度,微信,QQ小程序有效
80
+ * @default false
81
+ */
82
+ mpAvatar: {
83
+ type: Boolean,
84
+ default: false
85
+ },
86
+ /**
87
+ * @description 是否使用随机背景色
88
+ * @default false
89
+ */
90
+ randomBgColor: {
91
+ type: Boolean,
92
+ default: false
93
+ },
94
+ /**
95
+ * @description 加载失败的默认头像(组件有内置默认图片)
96
+ */
97
+ defaultUrl: {
98
+ type: String,
99
+ default: ''
100
+ },
101
+ /**
102
+ * @description 如果配置了randomBgColor=true时,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
103
+ */
104
+ colorIndex: {
105
+ type: [String, Number],
106
+ // 校验参数规则,索引在0-19之间
107
+ validator(n: string | number) {
108
+ if (n === '') return true
109
+ return check.checkRange(n, [0, 19])
110
+ },
111
+ default: ''
112
+ },
113
+ /**
114
+ * @description 组件标识符
115
+ */
116
+ name: {
117
+ type: String,
118
+ default: ''
119
+ },
120
+ ...componentProps
121
+ };
122
+
123
+ export const avatarEmits = {
124
+ /**
125
+ * @description 点击组件时触发
126
+ */
127
+ click: (_e: any) => true
128
+ };
129
+
130
+ export type AvatarProps = ExtractPropTypes<typeof avatarProps>;
131
+ export type AvatarEmits = typeof avatarEmits;
@@ -0,0 +1,104 @@
1
+ <template>
2
+ <view
3
+ class="fu-avatar"
4
+ :class="[`fu-avatar--${shape}`]"
5
+ :style="[{
6
+ backgroundColor: (text || icon) ? (randomBgColor ? colors[colorIndex !== '' ? colorIndex : $fu.random(0, 19)] : bgColor) : 'transparent',
7
+ width: $fu.addUnit(size),
8
+ height: $fu.addUnit(size),
9
+ }, $fu.addStyle(customStyle)]"
10
+ @tap="handleClick">
11
+ <slot>
12
+ <!-- #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU -->
13
+ <open-data type="userAvatarUrl" :style="[{width: $fu.addUnit(size), height: $fu.addUnit(size)}]" v-if="mpAvatar && allowMp" />
14
+ <!-- #endif -->
15
+ <!-- #ifndef MP-WEIXIN && MP-QQ && MP-BAIDU -->
16
+ <template v-if="mpAvatar && allowMp"></template>
17
+ <!-- #endif -->
18
+ <fu-icon :name="icon" :size="fontSize" :color="color" v-else-if="icon"></fu-icon>
19
+ <fu-text :text="text" :size="fontSize" :color="color" align="center" v-else-if="text"></fu-text>
20
+ <image
21
+ class="fu-avatar__image"
22
+ :class="[`fu-avatar__image--${shape}`]"
23
+ :src="avatarUrl || defaultUrl"
24
+ :mode="mode"
25
+ @error="errorHandler"
26
+ :style="[{
27
+ width: $fu.addUnit(size),
28
+ height: $fu.addUnit(size)
29
+ }]" v-else></image>
30
+ </slot>
31
+ </view>
32
+ </template>
33
+
34
+ <script lang="ts" setup>
35
+ /**
36
+ * Avatar 头像
37
+ * @description 此组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
38
+ * @tutorial http://www.fusions.top/components/avatar.html
39
+ * @property {String} src 头像路径,如加载失败,将会显示默认头像(不能为相对路径)
40
+ * @property {String} shape = [circle|square] 头像形状(默认circle)
41
+ * @value circle 圆形
42
+ * @value square 圆角方形
43
+ * @property {String | Number} size = [large|default|mini] 头像尺寸,可以为指定字符串(large, default, mini),或者数值(默认 40 )
44
+ * @property {String} mode 头像图片的裁剪类型,与uni的image组件的mode参数一致,如效果达不到需求,可尝试传widthFix值(默认 'aspectFill' )
45
+ * @property {String} text 用文字替代图片,级别优先于src
46
+ * @property {String} bgColor 背景颜色,一般显示文字时用(默认 '#c4c8d0' )
47
+ * @property {String} color 文字颜色 (默认 '#ffffff' )
48
+ * @property {String | Number} fontSize 文字大小(默认 18 )
49
+ * @property {String} icon 显示的图标
50
+ * @property {Boolean} mpAvatar = [true|false] 显示小程序头像,只对百度,微信,QQ小程序有效(默认 false )
51
+ * @property {Boolean} randomBgColor = [true|false] 是否使用随机背景色(默认 false )
52
+ * @property {String} defaultUrl 加载失败的默认头像(组件有内置默认图片)
53
+ * @property {String | Number} colorIndex 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
54
+ * @property {String} name 组件标识符(默认 'level' )
55
+ * @property {Object | String} customStyle 定义需要用到的外部样式
56
+ *
57
+ * @event {Function} click 点击组件时触发 index: 用户传递的标识符
58
+ * @example <fu-avatar :src="src" mode="square"></fu-avatar>
59
+ */
60
+ import { avatarEmits, avatarProps } from './avatar';
61
+ import { useAvatar } from './composables';
62
+
63
+ defineOptions({ name: 'FuAvatar', options: { virtualHost: true } });
64
+
65
+ const props = defineProps(avatarProps);
66
+ const $emit = defineEmits(avatarEmits);
67
+
68
+ const {
69
+ colors,
70
+ avatarUrl,
71
+ handleClick,
72
+ allowMp,
73
+ errorHandler
74
+ } = useAvatar(props, $emit);
75
+ </script>
76
+
77
+ <style lang="scss" scoped>
78
+ @use '../../../style/components.scss';
79
+
80
+ .fu-avatar {
81
+ @include components.flex;
82
+ align-items: center;
83
+ justify-content: center;
84
+ flex: 0 0 auto;
85
+
86
+ &--circle {
87
+ border-radius: 100px;
88
+ }
89
+
90
+ &--square {
91
+ border-radius: 4px;
92
+ }
93
+
94
+ &__image {
95
+ &--circle {
96
+ border-radius: 100px;
97
+ }
98
+
99
+ &--square {
100
+ border-radius: 4px;
101
+ }
102
+ }
103
+ }
104
+ </style>
@@ -0,0 +1 @@
1
+ export * from './use-avatar'
@@ -0,0 +1,61 @@
1
+ import { ref, watch, type SetupContext, onMounted } from 'vue';
2
+ import type { AvatarProps, AvatarEmits } from '../avatar';
3
+
4
+ export const useAvatar = (props: AvatarProps, $emit: SetupContext<AvatarEmits>['emit']) => {
5
+ const base64Avatar = "data:image/png;base64,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";
6
+ // 如果配置randomBgColor参数为true,在图标或者文字的模式下,会随机从中取出一个颜色值当做背景色
7
+ const colors = [
8
+ '#FF6B6B', '#FF9E9E', '#FFD6A5', '#FDFFB6', '#CAFFBF',
9
+ '#9BF6FF', '#A0C4FF', '#BDB2FF', '#FFADAD', '#F9C74F',
10
+ '#90BE6D', '#43AA8B', '#4D908E', '#577590', '#277DA1',
11
+ '#F8961E', '#E76F51', '#2A9D8F', '#264653', '#6A4C93'
12
+ ];
13
+ const avatarUrl = ref(props.src);
14
+ const allowMp = ref(false);
15
+
16
+ const init = () => {
17
+ // 目前只有这几个小程序平台具有open-data标签
18
+ // 其他平台可以通过uni.getUserInfo类似接口获取信息,但是需要弹窗授权(首次),不合符组件逻辑
19
+ // 故目前自动获取小程序头像只支持这几个平台
20
+ // #ifdef MP-WEIXIN || MP-QQ || MP-BAIDU
21
+ allowMp.value = true
22
+ // #endif
23
+ };
24
+
25
+ // 判断传入的name属性,是否图片路径,只要带有"/"均认为是图片形式
26
+ const isImg = () => {
27
+ return props.src.indexOf('/') !== -1
28
+ };
29
+
30
+ // 图片加载时失败时触发
31
+ const errorHandler = () => {
32
+ avatarUrl.value = props.defaultUrl || base64Avatar
33
+ };
34
+
35
+ const handleClick = () => {
36
+ $emit('click', props.name)
37
+ };
38
+
39
+ // 生命周期
40
+ onMounted(() => {
41
+ init()
42
+ });
43
+
44
+ // watch监听事件
45
+ // 监听头像src的变化,赋值给内部的avatarUrl变量,因为图片加载失败时,需要修改图片的src为默认值
46
+ watch(() => props.src, (newVal) => {
47
+ avatarUrl.value = newVal
48
+ // 如果没有传src,则主动触发error事件,用于显示默认的头像,否则src为''空字符等的时候,会无内容展示
49
+ if(!newVal) {
50
+ errorHandler()
51
+ }
52
+ }, { immediate: true })
53
+
54
+ return {
55
+ colors,
56
+ avatarUrl,
57
+ handleClick,
58
+ allowMp,
59
+ errorHandler
60
+ }
61
+ }
@@ -0,0 +1 @@
1
+ export * from './src/avatar-group';
@@ -0,0 +1,86 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+ import { componentProps } from '../../../constants';
3
+
4
+ export const avatarGroupProps = {
5
+ /**
6
+ * @description 头像图片组
7
+ */
8
+ urls: {
9
+ type: Array,
10
+ default: () => []
11
+ },
12
+ /**
13
+ * @description 最多展示的头像数量
14
+ */
15
+ maxCount: {
16
+ type: [String, Number],
17
+ default: 5
18
+ },
19
+ /**
20
+ * @description 头像形状
21
+ */
22
+ shape: {
23
+ type: String,
24
+ default: 'circle'
25
+ },
26
+ /**
27
+ * @description 图片裁剪模式
28
+ * @default 'aspectFill'
29
+ */
30
+ mode: {
31
+ type: String,
32
+ default: 'aspectFill'
33
+ },
34
+ /**
35
+ * @description 超出maxCount时是否显示查看更多的提示
36
+ * @default true
37
+ */
38
+ showMore: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ /**
43
+ * @description 头像大小
44
+ * @default 40
45
+ */
46
+ size: {
47
+ type: [String, Number],
48
+ default: 40
49
+ },
50
+ /**
51
+ * @description 指定从数组的对象元素中读取哪个属性作为图片地址
52
+ */
53
+ keyName: {
54
+ type: String,
55
+ default: ''
56
+ },
57
+ /**
58
+ * @description 头像之间的遮挡比例
59
+ * @default 0.5
60
+ */
61
+ gap: {
62
+ type: [String, Number],
63
+ validator(value : string | number) {
64
+ return Number(value) >= 0 && Number(value) <= 1
65
+ },
66
+ default: 0.5
67
+ },
68
+ /**
69
+ * @description 需额外显示的值
70
+ */
71
+ extraValue: {
72
+ type: [String, Number],
73
+ default: 0
74
+ },
75
+ ...componentProps
76
+ };
77
+
78
+ export const avatarGroupEmits = {
79
+ /**
80
+ * @description 头像组更多点击
81
+ */
82
+ showMore: () => true
83
+ };
84
+
85
+ export type AvatarGroupProps = ExtractPropTypes<typeof avatarGroupProps>;
86
+ export type AvatarGroupEmits = typeof avatarGroupEmits;
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <view class="fu-avatar-group">
2
+ <view class="fu-avatar-group" :class="customClass" :style="$fu.addStyle(customStyle)">
3
3
  <view
4
4
  class="fu-avatar-group__item"
5
5
  :style="{ marginLeft: index === 0 ? 0 : $fu.addUnit(-size * gap) }"
@@ -8,7 +8,7 @@
8
8
  :size="size"
9
9
  :shape="shape"
10
10
  :mode="mode"
11
- :src="$fu.isObject(item) ? keyName && item[keyName] || item.url : item">
11
+ :src="$fu.isObject(item)? keyName && item[keyName] || (item as any).url: item">
12
12
  </fu-avatar>
13
13
  <view
14
14
  class="fu-avatar-group__item__show-more"
@@ -25,53 +25,46 @@
25
25
  </view>
26
26
  </template>
27
27
 
28
- <script>
29
- import mpMixin from '../../libs/mixin/mpMixin.js'
30
- import mixin from '../../libs/mixin/mixin.js'
31
- import props from './props.js';
28
+ <script lang="ts" setup>
32
29
  /**
33
30
  * AvatarGroup 头像组
34
31
  * @description 此组件一般用于展示头像的地方,如个人中心,或者评论列表页的用户头像展示等场所。
35
- * @property {Array} urls 头像图片组(默认 []
36
- * @property {String,Number} maxCount 最多展示的头像数量( 默认 5
32
+ * @property {Array} urls 头像图片组(默认 [])
33
+ * @property {String | Number} maxCount 最多展示的头像数量(默认 5)
37
34
  * @property {String} shape = [circle|square] 头像形状(默认circle)
38
35
  * @value circle 圆形
39
36
  * @value square 圆角方形
40
- * @property {String} mode 图片裁剪模式(默认 'aspectFill'
41
- * @property {Boolean} showMore = [true|false] 超出maxCount时是否显示查看更多的提示 (默认 true
42
- * @property {String,Number} size 头像大小(默认 40
37
+ * @property {String} mode 图片裁剪模式(默认 'aspectFill')
38
+ * @property {Boolean} showMore = [true|false] 超出maxCount时是否显示查看更多的提示 (默认 true)
39
+ * @property {String | Number} size 头像大小(默认 40)
43
40
  * @property {String} keyName 指定从数组的对象元素中读取哪个属性作为图片地址
44
- * @property {String,Number} gap 头像之间的遮挡比例(0.4代表遮挡40%)(默认 0.5
45
- * @property {String,Number} extraValue 需额外显示的值
41
+ * @property {String | Number} gap 头像之间的遮挡比例(0.4代表遮挡40%)(默认 0.5)
42
+ * @property {String | Number} extraValue 需额外显示的值
43
+ * @property {String} customClass 定义需要用到的外部样式类
44
+ * @property {String | Object} customStyle 定义需要用到的外部样式
46
45
  *
47
46
  * @event {Function} showMore 头像组更多点击
48
47
  * @example <fu-avatar-group:urls="urls" size="35" gap="0.4" ></fu-avatar-group:urls=>
49
48
  */
50
- export default {
51
- name: 'fu-avatar-group',
52
- emits: ['showMore'],
53
- mixins: [mpMixin, mixin, props],
54
- data() {
55
- return {}
56
- },
57
- computed: {
58
- showUrl() {
59
- return this.urls.slice(0, this.maxCount)
60
- }
61
- },
62
- methods: {
63
- handleClick() {
64
- this.$emit('showMore')
65
- }
66
- }
67
- }
49
+ import { avatarGroupEmits, avatarGroupProps } from './avatar-group';
50
+ import { useAvatarGroup } from './composables';
51
+
52
+ defineOptions({ name: 'FuAvatarGroup', options: { virtualHost: true } });
53
+
54
+ const props = defineProps(avatarGroupProps);
55
+ const $emit = defineEmits(avatarGroupEmits);
56
+
57
+ const {
58
+ showUrl,
59
+ handleClick
60
+ } = useAvatarGroup(props, $emit);
68
61
  </script>
69
62
 
70
63
  <style lang="scss" scoped>
71
- @import '../../libs/style/components.scss';
64
+ @use '../../../style/components.scss';
72
65
 
73
66
  .fu-avatar-group {
74
- @include flex;
67
+ @include components.flex;
75
68
 
76
69
  &__item {
77
70
  margin-left: -10px;
@@ -89,7 +82,7 @@
89
82
  left: 0;
90
83
  right: 0;
91
84
  background-color: rgba(0, 0, 0, 0.3);
92
- @include flex;
85
+ @include components.flex;
93
86
  align-items: center;
94
87
  justify-content: center;
95
88
  border-radius: 100px;
@@ -0,0 +1 @@
1
+ export * from './use-avatar-group'
@@ -0,0 +1,17 @@
1
+ import { computed, type SetupContext } from 'vue';
2
+ import type { AvatarGroupProps, AvatarGroupEmits } from '../avatar-group';
3
+
4
+ export const useAvatarGroup = (props: AvatarGroupProps, $emit: SetupContext<AvatarGroupEmits>['emit']) => {
5
+ const showUrl = computed(() => {
6
+ return props.urls.slice(0, Number(props.maxCount))
7
+ });
8
+
9
+ const handleClick = () => {
10
+ $emit('showMore')
11
+ }
12
+
13
+ return {
14
+ showUrl,
15
+ handleClick
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ export * from './src/badge'
@@ -0,0 +1,126 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+ import { componentTypes, componentProps } from '../../../constants';
3
+
4
+ /**
5
+ * 徽标 shape 有效值
6
+ */
7
+ export const badgeShapes = ['circle', 'horn'] as const;
8
+
9
+ /**
10
+ * 徽标 numberType 有效值
11
+ */
12
+ export const badgeNumberType = ['overflow', 'ellipsis', 'limit'] as const;
13
+
14
+ export const badgeProps = {
15
+ /**
16
+ * @description 是否显示
17
+ * @default true
18
+ */
19
+ show: {
20
+ type: Boolean,
21
+ default: true
22
+ },
23
+ /**
24
+ * @description 是否显示圆点
25
+ * @default false
26
+ */
27
+ isDot: {
28
+ type: Boolean,
29
+ default: false
30
+ },
31
+ /**
32
+ * @description 显示的内容
33
+ */
34
+ value: {
35
+ type: [Number, String],
36
+ default: ''
37
+ },
38
+ /**
39
+ * @description 最大值,超过最大值会显示 '{max}+'
40
+ * @default 999
41
+ */
42
+ max: {
43
+ type: [Number, String],
44
+ default: 999
45
+ },
46
+ /**
47
+ * @description 主题类型
48
+ * @values 'primary' - 主色, 'error' - 错误, 'success' - 成功, 'warning' - 警告, 'info' - 信息
49
+ * @default 'error'
50
+ */
51
+ type: {
52
+ type: [String, undefined, null],
53
+ values: componentTypes,
54
+ default: 'error'
55
+ },
56
+ /**
57
+ * @description 当数值为 0 时,是否展示 Badge
58
+ * @default false
59
+ */
60
+ showZero: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ /**
65
+ * @description 背景颜色,优先级比type高,如设置,type参数会失效
66
+ * @default null
67
+ */
68
+ bgColor: {
69
+ type: [String, null],
70
+ default: null
71
+ },
72
+ /**
73
+ * @description 字体颜色
74
+ * @default null
75
+ */
76
+ color: {
77
+ type: [String, null],
78
+ default: null
79
+ },
80
+ /**
81
+ * @description 徽标形状
82
+ * @values 'circle' - 四角均为圆角,'horn' - 左下角为直角
83
+ * @default 'circle'
84
+ */
85
+ shape: {
86
+ type: [String, undefined, null],
87
+ values: badgeShapes,
88
+ default: 'circle'
89
+ },
90
+ /**
91
+ * @description 设置数字的显示方式
92
+ * @values overflow - 会根据max字段判断,超出显示`${max}+`, ellipsis - 会根据max判断,超出显示`${max}...`, limit - 会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数
93
+ * @default 'overflow'
94
+ */
95
+ numberType: {
96
+ type: [String, undefined, null],
97
+ values: badgeNumberType,
98
+ default: 'overflow'
99
+ },
100
+ /**
101
+ * @description 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值(仅absolute=true时有效)
102
+ */
103
+ offset: {
104
+ type: Array,
105
+ default: () => []
106
+ },
107
+ /**
108
+ * @description 是否反转背景和字体颜色
109
+ * @default false
110
+ */
111
+ inverted: {
112
+ type: Boolean,
113
+ default: false
114
+ },
115
+ /**
116
+ * @description 是否绝对定位
117
+ * @default false
118
+ */
119
+ absolute: {
120
+ type: Boolean,
121
+ default: false
122
+ },
123
+ ...componentProps
124
+ };
125
+
126
+ export type BadgeProps = ExtractPropTypes<typeof badgeProps>;