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
@@ -0,0 +1,90 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+
3
+ export const uploadImageProps = {
4
+ /**
5
+ * @description 数组
6
+ */
7
+ list: {
8
+ type: Array,
9
+ default: () => []
10
+ },
11
+ /**
12
+ * @description 是否禁用
13
+ * @default false
14
+ */
15
+ disabled: {
16
+ type: Boolean,
17
+ default: false
18
+ },
19
+ /**
20
+ * @description 是否禁用预览
21
+ * @default false
22
+ */
23
+ disablePreview: {
24
+ type: Boolean,
25
+ default: false
26
+ },
27
+ /**
28
+ * @description 最大限制数量
29
+ * @default 9
30
+ */
31
+ maxCount: {
32
+ type: [Number, String],
33
+ default: 9
34
+ },
35
+ /**
36
+ * @description 自定义样式
37
+ */
38
+ imageStyles: {
39
+ type: Object,
40
+ default() {
41
+ return {
42
+ width: 'auto',
43
+ height: 'auto',
44
+ border: {}
45
+ }
46
+ }
47
+ },
48
+ /**
49
+ * @description 是否显示删除图标
50
+ * @default true
51
+ */
52
+ delIcon: {
53
+ type: Boolean,
54
+ default: true
55
+ },
56
+ /**
57
+ * @description 是否只读
58
+ * @default false
59
+ */
60
+ readonly: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ /**
65
+ * @description 是否显示已上传的文件列表
66
+ * @default true
67
+ */
68
+ showFileList: {
69
+ type: Boolean,
70
+ default: true
71
+ }
72
+ };
73
+
74
+ export const uploadImageEmits = {
75
+ /**
76
+ * @description 选择图片
77
+ */
78
+ choose: () => true,
79
+ /**
80
+ * @description 上传文件
81
+ */
82
+ uploadFiles: (_e: any) => true,
83
+ /**
84
+ * @description 删除文件
85
+ */
86
+ delFile: (_e: any) => true
87
+ };
88
+
89
+ export type UploadImageProps = ExtractPropTypes<typeof uploadImageProps>;
90
+ export type UploadImageEmits = typeof uploadImageEmits;
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <view class="fu-upload-image">
3
+ <block v-if="showFileList">
4
+ <view class="fu-upload-image__box" v-for="(item, index) in list" :key="index" :style="boxStyle">
5
+ <view class="fu-upload-image__box-content" :style="borderStyle">
6
+ <image class="fu-upload-image__image" :src="(item as any).url" mode="aspectFill" @click.stop="choosePrviewImage(item,index)"></image>
7
+ <view v-if="delIcon && !readonly" class="icon-del-box" @click.stop="chooseDelFile(index)">
8
+ <view class="icon-del"></view>
9
+ <view class="icon-del rotate"></view>
10
+ </view>
11
+ <view v-if="((item as any).progress && (item as any).progress !== 100) || (item as any).progress === 0 " class="fu-upload-image__progress">
12
+ <progress class="fu-upload-image__progress-item" :percent="(item as any).progress === -1? 0: (item as any).progress" stroke-width="4"
13
+ :backgroundColor="(item as any).errMsg?'#fd595f':'#ececec'" />
14
+ </view>
15
+ <view v-if="(item as any).errMsg" class="fu-upload-image__mask" @click.stop="uploadFiles(item)">
16
+ 点击重试
17
+ </view>
18
+ </view>
19
+ </view>
20
+ </block>
21
+ <view v-if="list.length < maxCount && !readonly" class="fu-upload-image__box" :style="boxStyle">
22
+ <view class="fu-upload-image__box-content add-wrap" :style="borderStyle" @click="chooseImage">
23
+ <slot></slot>
24
+ </view>
25
+ </view>
26
+ </view>
27
+ </template>
28
+
29
+ <script lang="ts" setup>
30
+ /**
31
+ * @property {Array} list 数组
32
+ * @property {Boolean} disabled 是否禁用(默认 false)
33
+ * @property {Boolean} disablePreview 是否禁用预览(默认 false)
34
+ * @property {String | Number} maxCount 最大限制数量(默认 9)
35
+ * @property {Object} imageStyles 自定义样式(默认 { width: 'auto', height: 'auto', border: {} })
36
+ * @property {Boolean} delIcon 是否显示删除图标(默认 true)
37
+ * @property {Boolean} readonly 是否只读(默认 false)
38
+ * @property {Boolean} showFileList 是否显示已上传的文件列表(默认 true)
39
+ */
40
+ import { uploadImageEmits, uploadImageProps } from './upload-image';
41
+ import { useUploadImage, useUploadImageCustomStyle } from './composables';
42
+
43
+ defineOptions({ name: 'UploadImage', options: { virtualHost: true } });
44
+
45
+ const props = defineProps(uploadImageProps);
46
+ const $emit = defineEmits(uploadImageEmits);
47
+
48
+ const {
49
+ uploadFiles,
50
+ chooseImage,
51
+ chooseDelFile,
52
+ choosePrviewImage
53
+ } = useUploadImage(props, $emit);
54
+
55
+ const {
56
+ boxStyle,
57
+ borderStyle
58
+ } = useUploadImageCustomStyle(props);
59
+ </script>
60
+
61
+ <style lang="scss" scoped>
62
+ @use '../../../style/components.scss';
63
+
64
+ .fu-upload-image {
65
+ @include components.flex;
66
+ /* #ifndef APP-NVUE */
67
+ box-sizing: border-box;
68
+ /* #endif */
69
+ flex-wrap: wrap;
70
+ margin: -5px;
71
+
72
+ &__box {
73
+ position: relative;
74
+ width: 33.3%;
75
+ height: 0;
76
+ padding-top: 33.33%;
77
+ /* #ifndef APP-NVUE */
78
+ box-sizing: border-box;
79
+ /* #endif */
80
+ }
81
+
82
+ &__box-content {
83
+ position: absolute;
84
+ top: 0;
85
+ right: 0;
86
+ bottom: 0;
87
+ left: 0;
88
+ margin: 5px;
89
+ border: 1px #eeeeee solid;
90
+ border-radius: 5px;
91
+ overflow: hidden;
92
+ }
93
+
94
+ &__progress {
95
+ position: absolute;
96
+ bottom: 0;
97
+ left: 0;
98
+ right: 0;
99
+ z-index: 2;
100
+ }
101
+
102
+ &__progress-item {
103
+ width: 100%;
104
+ }
105
+
106
+ &__mask {
107
+ @include components.flex;
108
+ justify-content: center;
109
+ align-items: center;
110
+ position: absolute;
111
+ right: 0;
112
+ top: 0;
113
+ bottom: 0;
114
+ left: 0;
115
+ color: #ffffff;
116
+ font-size: 12px;
117
+ background-color: rgba(0, 0, 0, 0.4);
118
+ }
119
+
120
+ &__image {
121
+ width: 100%;
122
+ height: 100%;
123
+ }
124
+ }
125
+
126
+ .add-wrap {
127
+ @include components.flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ }
131
+
132
+ .rotate {
133
+ position: absolute;
134
+ transform: rotate(90deg);
135
+ }
136
+
137
+ .icon-del-box {
138
+ @include components.flex;
139
+ align-items: center;
140
+ justify-content: center;
141
+ position: absolute;
142
+ top: 3px;
143
+ right: 3px;
144
+ height: 26px;
145
+ width: 26px;
146
+ border-radius: 50%;
147
+ background-color: rgba(0, 0, 0, 0.5);
148
+ z-index: 2;
149
+ transform: rotate(-45deg);
150
+ }
151
+
152
+ .icon-del {
153
+ width: 15px;
154
+ height: 2px;
155
+ background-color: #ffffff;
156
+ border-radius: 2px;
157
+ }
158
+ </style>
@@ -0,0 +1,196 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+
3
+ export const uploadProps = {
4
+ /**
5
+ * @description 组件数据,通常用来回显 ,类型由return-type属性决定
6
+ */
7
+ modelValue: {
8
+ type: [Array, Object],
9
+ default() {
10
+ return []
11
+ }
12
+ },
13
+ /**
14
+ * @description 组件禁用
15
+ * @default false
16
+ */
17
+ disabled: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ /**
22
+ * @description 禁用图片预览,仅mode为grid时生效
23
+ * @default false
24
+ */
25
+ disablePreview: {
26
+ type: Boolean,
27
+ default: false
28
+ },
29
+ /**
30
+ * @description 是否显示删除按钮
31
+ * @default true
32
+ */
33
+ delIcon: {
34
+ type: Boolean,
35
+ default: true
36
+ },
37
+ /**
38
+ * @description 是否自动上传,值为true则只触发@select,可自行上传
39
+ * @default false
40
+ */
41
+ autoUpload: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ /**
46
+ * @description 最大选择个数,h5会自动忽略多选的部分
47
+ * @default 9
48
+ */
49
+ maxCount: {
50
+ type: [String, Number],
51
+ default: 9
52
+ },
53
+ /**
54
+ * @description 选择文件类型,可选值:image/video/all
55
+ * @default 'image'
56
+ */
57
+ fileType: {
58
+ type: String,
59
+ default: 'image'
60
+ },
61
+ /**
62
+ * @description 选择文件后的文件列表样式,可选值:grid/list
63
+ * @default 'grid'
64
+ */
65
+ mode: {
66
+ type: String,
67
+ default: 'grid'
68
+ },
69
+ /**
70
+ * @description 选择文件后缀,根据 fileType 属性而不同
71
+ */
72
+ fileExtname: {
73
+ type: [Array, String],
74
+ default() {
75
+ return []
76
+ }
77
+ },
78
+ /**
79
+ * @description 定义列表样式,mode为list时的样式
80
+ */
81
+ listStyles: {
82
+ type: Object,
83
+ default() {
84
+ return {
85
+ // 是否显示边框
86
+ border: true,
87
+ // 是否显示分隔线
88
+ dividline: true,
89
+ // 线条样式
90
+ borderStyle: {}
91
+ }
92
+ }
93
+ },
94
+ /**
95
+ * @description 自定义图片样式 选择文件后缀,根据 fileType 属性而不同
96
+ */
97
+ imageStyles: {
98
+ type: Object,
99
+ default() {
100
+ return {
101
+ width: 'auto',
102
+ height: 'auto'
103
+ }
104
+ }
105
+ },
106
+ /**
107
+ * @description 是否只读
108
+ * @default false
109
+ */
110
+ readonly: {
111
+ type: Boolean,
112
+ default: false
113
+ },
114
+ /**
115
+ * @description 返回类型数据格式,当为 object 时,只能单选,且会覆盖,可选值:array/object
116
+ * @default 'array'
117
+ */
118
+ returnType: {
119
+ type: String,
120
+ default: 'array'
121
+ },
122
+ /**
123
+ * @description original原图,compressed 压缩图,默认二者都有
124
+ */
125
+ sizeType: {
126
+ type: Array,
127
+ default() {
128
+ return ['original', 'compressed']
129
+ }
130
+ },
131
+ /**
132
+ * @description album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
133
+ * 注意:sourceType 值在 H5 平台根据浏览器的不同而表现不同,一般不可限制仅使用相册,部分浏览器也无法限制是否使用相机
134
+ */
135
+ sourceType: {
136
+ type: Array,
137
+ default() {
138
+ return ['album', 'camera']
139
+ }
140
+ },
141
+ /**
142
+ * @description 相机类型,仅fileType为video有效,可选值:front/back
143
+ * @default 'back'
144
+ */
145
+ camera: {
146
+ type: String,
147
+ default: 'back'
148
+ },
149
+ /**
150
+ * @description 是否压缩所选视频源文件,仅fileType为video有效
151
+ * @default true
152
+ */
153
+ compressed: {
154
+ type: Boolean,
155
+ default: true
156
+ },
157
+ /**
158
+ * @description 是否显示已上传的文件列表
159
+ * @default true
160
+ */
161
+ showFileList: {
162
+ type: Boolean,
163
+ default: true
164
+ }
165
+ };
166
+
167
+ export const uploadEmits = {
168
+ 'update:modelValue': (_e : any) => true,
169
+ /**
170
+ * @description 选择文件后触发
171
+ */
172
+ select: (_e : any) => true,
173
+ /**
174
+ * @description 文件上传时触发
175
+ */
176
+ progress: (_e : any) => true,
177
+ /**
178
+ * @description 上传成功触发
179
+ */
180
+ success: (_e : any) => true,
181
+ /**
182
+ * @description 上传失败触发
183
+ */
184
+ fail: (_e : any) => true,
185
+ /**
186
+ * @description 文件从列表移除时触发
187
+ */
188
+ delete: (_e : any) => true,
189
+ /**
190
+ * @description 输入事件
191
+ */
192
+ input: (_e : any) => true
193
+ };
194
+
195
+ export type UploadProps = ExtractPropTypes<typeof uploadProps>;
196
+ export type UploadEmits = typeof uploadEmits;
@@ -0,0 +1,151 @@
1
+ <template>
2
+ <view class="fu-upload">
3
+ <upload-image
4
+ :readonly="readonly"
5
+ :imageStyles="imageStyles"
6
+ :list="filesList"
7
+ :disabled="disabled"
8
+ :disablePreview="disablePreview"
9
+ :delIcon="delIcon"
10
+ :showFileList="showFileList"
11
+ :maxCount="countLength"
12
+ @uploadFiles="uploadFiles"
13
+ @choose="choose"
14
+ @delFile="delFile"
15
+ v-if="fileType === 'image' && showType === 'grid'">
16
+ <slot>
17
+ <view class="add-wrap">
18
+ <view class="add-wrap__icon-add"></view>
19
+ <view class="add-wrap__icon-add add-wrap__rotate"></view>
20
+ </view>
21
+ </slot>
22
+ </upload-image>
23
+
24
+ <upload-file
25
+ :readonly="readonly"
26
+ :listStyles="listStyles"
27
+ :fileList="filesList"
28
+ :delIcon="delIcon"
29
+ :maxCount="countLength"
30
+ :showFileList="showFileList"
31
+ @uploadFiles="uploadFiles"
32
+ @choose="choose"
33
+ @delFile="delFile"
34
+ v-if="fileType !== 'image' || showType !== 'grid'">
35
+ <slot>
36
+ <button type="primary" size="mini">选择文件</button>
37
+ </slot>
38
+ </upload-file>
39
+ </view>
40
+ </template>
41
+
42
+ <script lang="ts" setup>
43
+ /**
44
+ * Upload上传组件
45
+ * @description Upload文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间
46
+ * @tutorial http://www.fusions.top/components/upload.html
47
+ * @property {Array | Object} modelValue 绑定数据,通常用来回显 ,类型由returnType属性决定
48
+ * @property {Boolean} disabled = [true|false] 是否禁用(默认 false)
49
+ * @value true 禁用
50
+ * @value false 取消禁用
51
+ * @property {Boolean} disablePreview = [true|false] 是否禁用图片预览功能,仅mode:grid时生效(默认 false)
52
+ * @value true 禁用图片预览
53
+ * @value false 取消禁用图片预览
54
+ * @property {Boolean} delIcon = [true|false] 是否显示删除按钮(默认 true)
55
+ * @value true 显示删除按钮
56
+ * @value false 不显示删除按钮
57
+ * @property {Boolean} autoUpload = [true|false] 是否自动上传,值为false则只触发@select,可自行上传(默认 false)
58
+ * @value true 自动上传
59
+ * @value false 取消自动上传
60
+ * @property {String | Number} maxCount 最大选择个数,h5会自动忽略多选的部分(默认 9)
61
+ * @property {String} fileType = [image|video|all] 选择文件类型,可选值:image/video/all;(默认 image)
62
+ * @value image 只选择图片
63
+ * @value video 只选择视频
64
+ * @value all 选择所有文件
65
+ * @property {String} mode = [list|grid] 选择文件后的文件列表样式,可选值:grid/list;(默认 grid)
66
+ * @value list 列表显示
67
+ * @value grid 宫格显示
68
+ * @property {Array} fileExtname 选择文件后缀,字符串的情况下需要用逗号分隔(推荐使用字符串),根据 fileType 属性而不同
69
+ * @property {Object} listStyles 定义列表样式,mode为list时的样式
70
+ * @property {Object} imageStyles 自定义图片样式 选择文件后缀,根据 fileType 属性而不同
71
+ * @property {Boolean} readonly = [true|false] 是否只读(默认 false)
72
+ * @property {String} returnType = [array|object] 返回类型数据格式,当为 object 时,只能单选且会覆盖(默认 array)
73
+ * @value object 对象
74
+ * @value array 数组
75
+ * @property {Array} sizeType original原图,compressed 压缩图,默认二者都有
76
+ * @property {Array} sourceType album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
77
+ * @property {String} camera = [front|back] 相机类型,仅fileType为video时生效,可选值:front/back;(默认 back)
78
+ * @value front 前置
79
+ * @value back 后置
80
+ * @property {Boolean} compressed = [true|false] 是否压缩所选视频源文件,仅fileType为video时生效,(默认 true)
81
+ * @value true 需要压缩
82
+ * @value false 不需要压缩
83
+ * @property {Boolean} showFileList = [true|false] 是否显示已上传的文件列表(默认 true)
84
+ * @value true 显示列表
85
+ * @value false 隐藏列表
86
+ *
87
+ * @event {Function} select 选择文件后触发
88
+ * @event {Function} progress 文件上传时触发
89
+ * @event {Function} success 上传成功触发
90
+ * @event {Function} fail 上传失败触发
91
+ * @event {Function} delete 文件从列表移除时触发
92
+ * @example <fu-upload></fu-upload>
93
+ */
94
+ import { uploadEmits, uploadProps } from './upload';
95
+ import { useUpload } from './composables';
96
+ import uploadImage from './upload-image.vue';
97
+ import uploadFile from './upload-file.vue';
98
+
99
+ defineOptions({ name: 'FuUpload', options: { virtualHost: true } });
100
+
101
+ const props = defineProps(uploadProps);
102
+ const $emit = defineEmits(uploadEmits);
103
+
104
+ const {
105
+ filesList,
106
+ showType,
107
+ countLength,
108
+ clearFiles,
109
+ upload,
110
+ uploadFiles,
111
+ choose,
112
+ delFile
113
+ } = useUpload(props, $emit);
114
+
115
+ // 暴露方法
116
+ defineExpose({
117
+ clearFiles,
118
+ upload,
119
+ });
120
+ </script>
121
+
122
+ <style lang="scss" scoped>
123
+ @use '../../../style/components.scss';
124
+
125
+ .fu-upload {
126
+ /* #ifndef APP-NVUE */
127
+ box-sizing: border-box;
128
+ overflow: hidden;
129
+ width: 100%;
130
+ /* #endif */
131
+ flex: 1;
132
+ }
133
+
134
+ .add-wrap {
135
+ @include components.flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+
139
+ &__icon-add {
140
+ width: 45px;
141
+ height: 4px;
142
+ background-color: #efefef;
143
+ border-radius: 2px;
144
+ }
145
+
146
+ &__rotate {
147
+ position: absolute;
148
+ transform: rotate(90deg);
149
+ }
150
+ }
151
+ </style>
@@ -2,7 +2,7 @@
2
2
  * 获取文件名和后缀
3
3
  * @param {String} name
4
4
  */
5
- export const getFileExt = (name) => {
5
+ export const getFileExt = (name: string) => {
6
6
  const last_len = name.lastIndexOf('.');
7
7
  const len = name.length;
8
8
  return {
@@ -15,20 +15,20 @@ export const getFileExt = (name) => {
15
15
  * 获取扩展名
16
16
  * @param {Array} fileExtname
17
17
  */
18
- export const getExtname = (fileExtname) => {
18
+ export const getExtname = (fileExtname: string | string[]): string[] => {
19
+ if (!fileExtname) return []
20
+
19
21
  if (!Array.isArray(fileExtname)) {
20
22
  let extname = fileExtname.replace(/(\[|\])/g, '');
21
23
  return extname.split(',')
22
- } else {
23
- return fileExtname
24
24
  }
25
- return []
25
+ return fileExtname
26
26
  }
27
27
 
28
28
  /**
29
29
  * 获取文件和检测是否可选
30
30
  */
31
- export const getFilesAndIsMax = (res, _extname) => {
31
+ export const getFilesAndIsMax = (res: any, _extname: string[]) => {
32
32
  let filePaths = [];
33
33
  let files = [];
34
34
  if(!_extname || _extname.length === 0){
@@ -37,8 +37,8 @@ export const getFilesAndIsMax = (res, _extname) => {
37
37
  files
38
38
  }
39
39
  }
40
- res.tempFiles.forEach(item => {
41
- let fileFullName = get_file_ext(item.name);
40
+ res.tempFiles.forEach((item: any) => {
41
+ let fileFullName = getFileExt(item.name);
42
42
  const extname = fileFullName.ext.toLowerCase();
43
43
  if (_extname.indexOf(extname) !== -1) {
44
44
  files.push(item)
@@ -64,7 +64,7 @@ export const getFilesAndIsMax = (res, _extname) => {
64
64
  * 获取图片信息
65
65
  * @param {Object} filepath
66
66
  */
67
- export const getFileInfo = (filepath) => {
67
+ export const getFileInfo = (filepath: string) => {
68
68
  return new Promise((resolve, reject) => {
69
69
  uni.getImageInfo({
70
70
  src: filepath,
@@ -80,11 +80,11 @@ export const getFileInfo = (filepath) => {
80
80
  /**
81
81
  * 获取封装数据
82
82
  */
83
- export const getFileData = async (files, type = 'image') => {
83
+ export const getFileData = async (files: any, type: string = 'image') => {
84
84
  // 最终需要上传数据库的数据
85
85
  let fileFullName = getFileExt(files.name)
86
86
  const extname = fileFullName.ext.toLowerCase()
87
- let filedata = {
87
+ let filedata: Record<string, any> = {
88
88
  name: files.name,
89
89
  uuid: files.uuid,
90
90
  extname: extname || '',
@@ -97,7 +97,7 @@ export const getFileData = async (files, type = 'image') => {
97
97
  video: {}
98
98
  }
99
99
  if (type === 'image') {
100
- const imageinfo = await getFileInfo(files.path)
100
+ const imageinfo: any = await getFileInfo(files.path)
101
101
  delete filedata.video
102
102
  filedata.image.width = imageinfo.width
103
103
  filedata.image.height = imageinfo.height
@@ -0,0 +1 @@
1
+ export * from './src/vtabs'
@@ -0,0 +1,2 @@
1
+ export * from './vtabs-custom'
2
+ export * from './use-vtabs'