fusions-ui 1.2.6 → 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.css → 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 -107
  440. package/components/fu-icon/icon.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 -728
  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.ttf → 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 @@
1
+ export * from './src/swipe-action-item'
@@ -1,13 +1,11 @@
1
- let mpMixins = {}
2
- let is_pc = null
1
+ let mpMixins = {};
2
+ let is_pc = null;
3
3
  // #ifdef H5
4
- import {
5
- isPC
6
- } from "./isPC"
4
+ import { isPC } from "../../../utils/isPC";
7
5
  is_pc = isPC()
8
6
  // #endif
9
- // #ifdef APP-VUE|| MP-WEIXIN || H5
10
7
 
8
+ // #ifdef APP-VUE|| MP-WEIXIN || H5
11
9
  mpMixins = {
12
10
  data() {
13
11
  return {
@@ -15,8 +13,8 @@ mpMixins = {
15
13
  }
16
14
  },
17
15
  watch: {
18
- show(newVal) {
19
- this.is_show = this.show
16
+ show() {
17
+ this.is_show = this.show;
20
18
  }
21
19
  },
22
20
  created() {
@@ -26,39 +24,36 @@ mpMixins = {
26
24
  }
27
25
  },
28
26
  mounted() {
29
- this.is_show = this.show
27
+ this.is_show = this.show;
30
28
  },
31
29
  methods: {
32
30
  // wxs 中调用
33
- closeSwipe(e) {
31
+ closeSwipe() {
34
32
  if (this.autoClose && this.swipeaction) {
35
33
  this.swipeaction.closeOther(this)
36
34
  }
37
35
  },
38
36
 
39
- change(e) {
37
+ change(e: any) {
40
38
  this.$emit('change', e.open)
41
39
  if (this.is_show !== e.open) {
42
- this.is_show = e.open
40
+ this.is_show = e.open;
43
41
  }
44
42
  },
45
43
 
46
- appTouchStart(e) {
47
- if (is_pc) return
48
- const {
49
- clientX
50
- } = e.changedTouches[0]
51
- this.clientX = clientX
52
- this.timestamp = new Date().getTime()
44
+ appTouchStart(e: any) {
45
+ if(is_pc) return
46
+ const { clientX } = e.changedTouches[0];
47
+ this.clientX = clientX;
48
+ this.timestamp = new Date().getTime();
53
49
  },
54
- appTouchEnd(e, index, item, position) {
55
- if (is_pc) return
56
- const {
57
- clientX
58
- } = e.changedTouches[0]
50
+
51
+ appTouchEnd(e: any, index: number, item: any, position: string) {
52
+ if(is_pc) return
53
+ const { clientX } = e.changedTouches[0];
59
54
  // fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
60
- let diff = Math.abs(this.clientX - clientX)
61
- let time = (new Date().getTime()) - this.timestamp
55
+ let diff = Math.abs(this.clientX - clientX);
56
+ let time = (new Date().getTime()) - this.timestamp;
62
57
  if (diff < 40 && time < 300) {
63
58
  this.$emit('click', {
64
59
  content: item,
@@ -67,7 +62,7 @@ mpMixins = {
67
62
  })
68
63
  }
69
64
  },
70
- handleClickForPC(index, item, position) {
65
+ handleClickForPC(index: number, item: any, position: string) {
71
66
  if (!is_pc) return
72
67
  // #ifdef H5
73
68
  this.$emit('click', {
@@ -0,0 +1,68 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+
3
+ export const swipeActionItemProps = {
4
+ /**
5
+ * @description 控制开关
6
+ * @default 'none'
7
+ */
8
+ show: {
9
+ type: String,
10
+ default: 'none'
11
+ },
12
+ /**
13
+ * @description 是否禁用
14
+ * @default false
15
+ */
16
+ disabled: {
17
+ type: Boolean,
18
+ default: false
19
+ },
20
+ /**
21
+ * @description 是否自动关闭
22
+ * @default true
23
+ */
24
+ autoClose: {
25
+ type: Boolean,
26
+ default: true
27
+ },
28
+ /**
29
+ * @description 滑动缺省距离
30
+ * @default 20
31
+ */
32
+ threshold: {
33
+ type: Number,
34
+ default: 20
35
+ },
36
+ /**
37
+ * @description 左侧按钮内容
38
+ */
39
+ leftOptions: {
40
+ type: Array,
41
+ default () {
42
+ return []
43
+ }
44
+ },
45
+ /**
46
+ * @description 右侧按钮内容
47
+ */
48
+ rightOptions: {
49
+ type: Array,
50
+ default () {
51
+ return []
52
+ }
53
+ }
54
+ };
55
+
56
+ export const swipeActionItemEmits = {
57
+ /**
58
+ * @description 点击选项按钮时触发事件
59
+ */
60
+ click: (_e: any): boolean => true,
61
+ /**
62
+ * @description 组件打开或关闭时触发
63
+ */
64
+ change: (_e: any): boolean => true
65
+ };
66
+
67
+ export type SwipeActionItemProps = ExtractPropTypes<typeof swipeActionItemProps>;
68
+ export type SwipeActionItemEmits = typeof swipeActionItemEmits;
@@ -57,6 +57,7 @@
57
57
  </view>
58
58
  </view>
59
59
  <!-- #endif -->
60
+
60
61
  <!-- app nvue端 使用 bindingx -->
61
62
  <!-- #ifdef APP-NVUE -->
62
63
  <view ref="selector-box--hock" class="fu-swipe" @horizontalpan="touchstart" @touchend="touchend">
@@ -93,8 +94,8 @@
93
94
  <view class="fu-swipe">
94
95
  <view
95
96
  class="fu-swipe_box"
96
- :class="{ani:ani}"
97
- :style="{transform:moveLeft}"
97
+ :class="{ani: ani}"
98
+ :style="{transform: moveLeft}"
98
99
  @touchstart="touchstart"
99
100
  @touchmove="touchmove"
100
101
  @touchend="touchend">
@@ -102,11 +103,11 @@
102
103
  <slot name="left">
103
104
  <view
104
105
  class="fu-swipe_button button-hock"
105
- :style="{ backgroundColor: item.style && item.style.backgroundColor? item.style.backgroundColor: '#C7C6CD', fontSize: item.style && item.style.fontSize? item.style.fontSize: '16px'}"
106
+ :style="{backgroundColor: item.style && item.style.backgroundColor? item.style.backgroundColor: '#C7C6CD', fontSize: item.style && item.style.fontSize? item.style.fontSize: '16px'}"
106
107
  v-for="(item,index) in leftOptions" :key="index"
107
108
  @touchstart="appTouchStart"
108
109
  @touchend="appTouchEnd($event,index,item,'left')">
109
- <text class="fu-swipe_button-text" :style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF'}">{{ item.text }}</text>
110
+ <text class="fu-swipe_button-text" :style="{color: item.style && item.style.color? item.style.color : '#FFFFFF'}">{{ item.text }}</text>
110
111
  </view>
111
112
  </slot>
112
113
  </view>
@@ -131,7 +132,7 @@
131
132
  <script src="./wx.wxs" module="wxsswipe" lang="wxs"></script>
132
133
 
133
134
  <script module="renderswipe" lang="renderjs">
134
- import render from './render.js'
135
+ import render from './render.js';
135
136
  export default {
136
137
  mounted(e, ins, owner) {
137
138
  this.state = {}
@@ -152,12 +153,12 @@
152
153
  }
153
154
  }
154
155
  </script>
156
+
155
157
  <script>
156
- import mpMixin from '../../libs/mixin/mpMixin.js'
157
- import mpwxs from './mpwxs'
158
- import bindingx from './bindingx.js'
159
- import mpother from './mpother'
160
- import props from './props.js'
158
+ import mpwxs from './mpwxs';
159
+ import bindingx from './bindingx.js';
160
+ import mpother from './mpother';
161
+ import { swipeActionItemProps } from './swipe-action-item';
161
162
  /**
162
163
  * SwipeActionItem 滑动操作子组件
163
164
  * @description 通过滑动触发选项的容器
@@ -167,12 +168,16 @@
167
168
  * @property {Number} threshold 滑动缺省值
168
169
  * @property {Array} leftOptions 左侧选项内容及样式
169
170
  * @property {Array} rgihtOptions 右侧选项内容及样式
171
+ *
170
172
  * @event {Function} click 点击选项按钮时触发事件,e = {content,index} ,content(点击内容)、index(下标)
171
173
  * @event {Function} change 组件打开或关闭时触发,left\right\none
172
174
  */
175
+ const propsMixin = {
176
+ props: swipeActionItemProps
177
+ };
173
178
  export default {
174
179
  name:"FuSwipeActionItem",
175
- mixins: [mpMixin, mpwxs, bindingx, mpother, props],
180
+ mixins: [mpwxs, bindingx, mpother, propsMixin],
176
181
  emits: ['click', 'change'],
177
182
  methods: {
178
183
  uninstall() {
@@ -184,6 +189,7 @@
184
189
  })
185
190
  }
186
191
  },
192
+
187
193
  /**
188
194
  * 获取父元素实例
189
195
  */
@@ -212,8 +218,9 @@
212
218
  // #endif
213
219
  }
214
220
  </script>
221
+
215
222
  <style lang="scss" scoped>
216
- @import '../../libs/style/components.scss';
223
+ @use '../../../style/components.scss';
217
224
 
218
225
  .fu-swipe {
219
226
  position: relative;
@@ -223,7 +230,7 @@
223
230
  }
224
231
 
225
232
  .fu-swipe_box {
226
- @include flex;
233
+ @include components.flex;
227
234
  /* #ifndef APP-NVUE */
228
235
  flex: 0 0 auto;
229
236
  touch-action: none;
@@ -239,7 +246,7 @@
239
246
  }
240
247
 
241
248
  .fu-swipe_button-group {
242
- @include flex(row);
249
+ @include components.flex(row);
243
250
  /* #ifndef APP-NVUE */
244
251
  box-sizing: border-box;
245
252
  /* #endif */
@@ -265,7 +272,7 @@
265
272
  /* #ifdef APP-NVUE */
266
273
  flex: 1;
267
274
  /* #endif */
268
- @include flex(row);
275
+ @include components.flex(row);
269
276
  justify-content: center;
270
277
  align-items: center;
271
278
  padding: 0 20px;
@@ -291,7 +298,7 @@
291
298
  }
292
299
 
293
300
  .movable-view {
294
- @include flex;
301
+ @include components.flex;
295
302
  justify-content: center;
296
303
  position: relative;
297
304
  flex: 1;
@@ -300,7 +307,7 @@
300
307
  }
301
308
 
302
309
  .movable-view-button {
303
- @include flex(row);
310
+ @include components.flex(row);
304
311
  /* #ifndef APP-NVUE */
305
312
  flex: 0 0 auto;
306
313
  /* #endif */
@@ -69,7 +69,7 @@ function touchmove(e, ownerInstance) {
69
69
  if (state.direction !== 'horizontal') {
70
70
  return;
71
71
  }
72
-
72
+
73
73
  if (e.preventDefault) {
74
74
  // 阻止页面滚动
75
75
  e.preventDefault()
@@ -289,7 +289,7 @@ function stopTouchMove(event) {
289
289
 
290
290
  function isPC() {
291
291
  var userAgentInfo = navigator.userAgent;
292
- var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
292
+ var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod", "HarmonyOS"];
293
293
  var flag = true;
294
294
  for (var v = 0; v < Agents.length - 1; v++) {
295
295
  if (userAgentInfo.indexOf(Agents[v]) > 0) {
@@ -0,0 +1 @@
1
+ export * from './src/swiper'
@@ -0,0 +1,2 @@
1
+ export * from './swiper-custom'
2
+ export * from './use-swiper'
@@ -0,0 +1,40 @@
1
+ import { computed, type CSSProperties } from 'vue';
2
+ import type { SwiperProps } from '../swiper';
3
+
4
+ export const useSwiperCustomStyle = (props: SwiperProps) => {
5
+ const indicatorStyle = computed<CSSProperties>(() => {
6
+ let style: Record<string, any> = {}
7
+ if (props.indicatorPosition === 'topLeft' || props.indicatorPosition === 'bottomLeft') style.justifyContent = 'flex-start'
8
+ if (props.indicatorPosition === 'topCenter' || props.indicatorPosition === 'bottomCenter') style.justifyContent = 'center'
9
+ if (props.indicatorPosition === 'topRight' || props.indicatorPosition === 'bottomRight') style.justifyContent = 'flex-end'
10
+ if (['topLeft', 'topCenter', 'topRight'].indexOf(props.indicatorPosition) >= 0) {
11
+ style.top = '12rpx';
12
+ style.bottom = 'auto';
13
+ } else {
14
+ style.top = 'auto';
15
+ style.bottom = '12rpx';
16
+ }
17
+ style.padding = `0 ${props.effect3D? '74rpx': '24rpx'}`;
18
+
19
+ return style
20
+ });
21
+
22
+ const swiperTitleStyle = computed<CSSProperties>(() => {
23
+ let style: Record<string, any> = {}
24
+ if (props.mode === 'none' || props.mode === '') style.paddingBottom = '12rpx'
25
+ if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(props.indicatorPosition) >= 0 && props.mode === 'number') {
26
+ style.paddingBottom = '60rpx';
27
+ } else if (['bottomLeft', 'bottomCenter', 'bottomRight'].indexOf(props.indicatorPosition) >= 0 && props.mode !== 'number') {
28
+ style.paddingBottom = '40rpx';
29
+ } else {
30
+ style.paddingBottom = '12rpx';
31
+ }
32
+
33
+ return Object.assign(style, props.titleStyle)
34
+ });
35
+
36
+ return {
37
+ indicatorStyle,
38
+ swiperTitleStyle
39
+ }
40
+ }
@@ -0,0 +1,75 @@
1
+ import { getCurrentInstance, ref, watch, type SetupContext } from 'vue';
2
+ import type { SwiperProps, SwiperEmits } from '../swiper';
3
+
4
+ export const useSwiper = (props: SwiperProps, $emit: SetupContext<SwiperEmits>['emit']) => {
5
+ const instance = getCurrentInstance();
6
+ const swiperIndex = ref(props.current);
7
+
8
+ const getItemType = (e: any): 'image' | 'video' => {
9
+ if (typeof e === 'string') return uni.$fu.isVideo(getSource(e)) ? 'video' : 'image'
10
+ if (typeof e === 'object' && props.keyName) {
11
+ if (!e.type) return uni.$fu.isVideo(getSource(e))? 'video': 'image'
12
+ if (e.type === 'image') return 'image'
13
+ if (e.type === 'video') return 'video'
14
+ return 'image'
15
+ }
16
+ };
17
+
18
+ const getSource = (e: any): string => {
19
+ if (typeof e === 'string') return e
20
+ if (typeof e === 'object' && props.keyName) return e[props.keyName]
21
+ else uni.$fu.error('请按格式传递列表参数')
22
+ return ''
23
+ };
24
+
25
+ // 点击某个item
26
+ const handleClick = (item: any, index: number) => {
27
+ $emit('click', {
28
+ detail: item,
29
+ index
30
+ })
31
+ };
32
+
33
+ // 轮播切换时触发
34
+ const handleChange = (event: any) => {
35
+ const current = event.detail.current;
36
+ pauseVideo(swiperIndex.value)
37
+ swiperIndex.value = current
38
+ $emit('change', current)
39
+ };
40
+
41
+ // 切换轮播时,暂停视频播放
42
+ const pauseVideo = (index: number) => {
43
+ const lastItem = getSource(props.list[index])
44
+ if (uni.$fu.isVideo(lastItem)) {
45
+ // 当视频隐藏时,暂停播放
46
+ const video = uni.createVideoContext(`video-${index}`, instance)
47
+ video.pause()
48
+ }
49
+ };
50
+
51
+ // 当一个轮播item为视频时,获取它的视频海报
52
+ const getPoster = (item: any): string => {
53
+ return typeof item === 'object' && item.poster ? item.poster : ''
54
+ };
55
+
56
+ // watch监听事件
57
+ watch(() => props.list, (newVal, oldVal) => {
58
+ // 如果修改了list的数据,重置current的值
59
+ if (newVal.length !== oldVal.length) swiperIndex.value = 0;
60
+ });
61
+ watch(() => props.current, (newVal) => {
62
+ // 监听外部current的变化,实时修改内部依赖于此测swiperIndex值,如果更新了current,而不是更新swiperIndex,就会错乱,因为指示器是依赖于swiperIndex的
63
+ swiperIndex.value = newVal;
64
+ });
65
+
66
+ return {
67
+ swiperIndex,
68
+ getItemType,
69
+ getSource,
70
+ handleClick,
71
+ handleChange,
72
+ pauseVideo,
73
+ getPoster
74
+ }
75
+ }
@@ -0,0 +1,189 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+
3
+ /**
4
+ * 轮播图 mode 有效值
5
+ */
6
+ export const swiperModes = ['rect', 'round', 'dot', 'number'] as const;
7
+
8
+ /**
9
+ * 轮播图 indicatorPosition 有效值
10
+ */
11
+ export const swiperIndicatorPositions = ['topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight'] as const;
12
+
13
+ export const swiperProps = {
14
+ /**
15
+ * @description 轮播图列表数据 如:[{image: xxx.jpg, title: 'xxxx'}] ['xxxx', 'xxxx', 'xxxx']
16
+ */
17
+ list: {
18
+ type: Array,
19
+ default: () => []
20
+ },
21
+ /**
22
+ * @description 设置圆角
23
+ * @default 5
24
+ */
25
+ radius: {
26
+ type: [String, Number],
27
+ default: 5
28
+ },
29
+ /**
30
+ * @description 初始化时,默认显示第几项
31
+ */
32
+ current: {
33
+ type: Number,
34
+ default: 0
35
+ },
36
+ /**
37
+ * @description 设置高度
38
+ * @default 160
39
+ */
40
+ height: {
41
+ type: [String, Number],
42
+ default: 160
43
+ },
44
+ /**
45
+ * @description 背景颜色
46
+ * @default '#f2f3f4'
47
+ */
48
+ bgColor: {
49
+ type: String,
50
+ default: '#f2f3f4'
51
+ },
52
+ /**
53
+ * @description 图片的属性名
54
+ * @default 'image'
55
+ */
56
+ keyName: {
57
+ type: String,
58
+ default: 'image'
59
+ },
60
+ /**
61
+ * @description 是否显示标题
62
+ * @default false
63
+ */
64
+ showTitle: {
65
+ type: Boolean,
66
+ default: false
67
+ },
68
+ /**
69
+ * @description 是否显示标题
70
+ * @default 'title'
71
+ */
72
+ keyTitle: {
73
+ type: String,
74
+ default: 'title'
75
+ },
76
+ /**
77
+ * @description 定义需要用到的外部标题样式
78
+ */
79
+ titleStyle: {
80
+ type: Object,
81
+ default: () => {}
82
+ },
83
+ /**
84
+ * @description 指示器模式
85
+ * @values 'rect' - 方形, 'round' - 圆角方形, 'dot' - 点, 'number' - 轮播图下标
86
+ * @default 'round'
87
+ */
88
+ mode: {
89
+ type: String,
90
+ values: swiperModes,
91
+ default: 'round'
92
+ },
93
+ /**
94
+ * @description 是否显示指示灯
95
+ * @default true
96
+ */
97
+ indicator: {
98
+ type: Boolean,
99
+ default: true
100
+ },
101
+ /**
102
+ * @description 指示器位置
103
+ * @values 'topLeft' - 指示器位于左上角, 'topCenter' - 指示器位于上方中间位置, 'topRight' - 指示器位于右上角, 'bottomLeft' - 指示器位于左下角, 'bottomCenter' - 指示器位于底部中间位置, 'bottomRight' - 指示器位于右下角
104
+ * @default 'bottomCenter'
105
+ */
106
+ indicatorPosition: {
107
+ type: String,
108
+ values: swiperIndicatorPositions,
109
+ default: 'bottomCenter'
110
+ },
111
+ /**
112
+ * @description 开启3D缩放效果
113
+ * @default false
114
+ */
115
+ effect3D: {
116
+ type: Boolean,
117
+ default: false
118
+ },
119
+ /**
120
+ * @description 在3D缩放模式下,item之间的间隔
121
+ * @default 25
122
+ */
123
+ effect3DPreviousSpacing: {
124
+ type: [String, Number],
125
+ default: 25
126
+ },
127
+ /**
128
+ * @description 自动播放
129
+ * @default true
130
+ */
131
+ autoplay: {
132
+ type: Boolean,
133
+ default: true
134
+ },
135
+ /**
136
+ * @description 图片之间播放间隔多久
137
+ * @default 3000
138
+ */
139
+ interval: {
140
+ type: Number,
141
+ default: 3000
142
+ },
143
+ /**
144
+ * @description 轮播间隔时间
145
+ * @default 500
146
+ */
147
+ duration: {
148
+ type: Number,
149
+ default: 500
150
+ },
151
+ /**
152
+ * @description 是否衔接滑动
153
+ * @default true
154
+ */
155
+ circular: {
156
+ type: Boolean,
157
+ default: true
158
+ },
159
+ /**
160
+ * @description 图片裁剪模式
161
+ * @default 'aspectFill'
162
+ */
163
+ imgMode: {
164
+ type: String,
165
+ default: 'aspectFill'
166
+ },
167
+ /**
168
+ * @description 是否加载中
169
+ * @default false
170
+ */
171
+ loading: {
172
+ type: Boolean,
173
+ default: false
174
+ }
175
+ };
176
+
177
+ export const swiperEmits = {
178
+ /**
179
+ * @description 点击轮播图时触发
180
+ */
181
+ click: (_e: any) => true,
182
+ /**
183
+ * @description 轮播图切换时触发
184
+ */
185
+ change: (_e: any) => true
186
+ };
187
+
188
+ export type SwiperProps = ExtractPropTypes<typeof swiperProps>;
189
+ export type SwiperEmits = typeof swiperEmits;