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,249 @@
1
+ <template>
2
+ <view class="fu-navbar" :class="{'fu-dark': dark, 'fu-nvue-fixed': fixed}">
3
+ <view
4
+ class="fu-navbar__content"
5
+ :class="{'fu-navbar--fixed': fixed, 'fu-navbar--shadow': shadow, 'fu-navbar--border': border}"
6
+ :style="{backgroundColor: themeBgColor}">
7
+ <fu-status-bar mode="top" v-if="statusBar" />
8
+ <view
9
+ class="fu-navbar__header"
10
+ :style="{
11
+ color: themeColor,
12
+ backgroundColor: themeBgColor,
13
+ height: navbarHeight,
14
+ width: showMenuButtonWidth? navWidth+'px':'100%'
15
+ }">
16
+ <view
17
+ class="fu-navbar__header-btns fu-navbar__header-btns-left"
18
+ :style="{width: leftIconWidth}"
19
+ @tap="handleClickLeft">
20
+ <slot name="left">
21
+ <view class="fu-navbar__content_view" v-if="leftIcon.length > 0">
22
+ <fu-icon :name="leftIcon" size="22" :color="themeColor" />
23
+ </view>
24
+ <view
25
+ class="fu-navbar-btn-text"
26
+ :class="{'fu-navbar-btn-icon-left': !leftIcon.length > 0}"
27
+ v-if="leftText.length">
28
+ <text :style="{ color: themeColor, fontSize: '12px' }">{{ leftText }}</text>
29
+ </view>
30
+ </slot>
31
+ </view>
32
+ <view class="fu-navbar__header-container" @tap="handleClickTitle">
33
+ <slot>
34
+ <view class="fu-navbar__header-container-inner" v-if="title.length > 0">
35
+ <text class="fu-nav-bar-text fu-ellipsis-1" :style="{color: themeColor}">{{ title }}</text>
36
+ </view>
37
+ </slot>
38
+ </view>
39
+ <view
40
+ class="fu-navbar__header-btns fu-navbar__header-btns-right"
41
+ :style="{width:rightIconWidth}"
42
+ @click="handleClickRight">
43
+ <slot name="right">
44
+ <view v-if="rightIcon.length">
45
+ <fu-icon :name="rightIcon" size="22" :color="themeColor" />
46
+ </view>
47
+ <view class="fu-navbar-btn-text" v-if="rightText.length && !rightIcon.length">
48
+ <text class="fu-nav-bar-right-text" :style="{color: themeColor}">{{ rightText }}</text>
49
+ </view>
50
+ </slot>
51
+ </view>
52
+ </view>
53
+ </view>
54
+ <view class="fu-navbar__placeholder" v-if="fixed">
55
+ <fu-status-bar mode="top" v-if="statusBar" />
56
+ <view class="fu-navbar__placeholder-view" :style="{height: navbarHeight}" />
57
+ </view>
58
+ </view>
59
+ </template>
60
+
61
+ <script lang="ts" setup>
62
+ /**
63
+ * NavBar 自定义导航栏
64
+ * @description 导航栏组件,主要用于头部导航
65
+ * @tutorial http://www.fusions.top/components/navbar.html
66
+ * @property {Boolean} dark 开启黑暗模式
67
+ * @property {String} title 标题文字
68
+ * @property {String} leftText 左侧按钮文本
69
+ * @property {String} rightText 右侧按钮文本
70
+ * @property {String} leftIcon 左侧按钮图标
71
+ * @property {String} rightIcon 右侧按钮图标
72
+ * @property {String} color 图标和文字颜色
73
+ * @property {String} bgColor = [transparent] 导航栏背景颜色
74
+ * @property {Boolean | String} fixed = [true|false] 是否固定顶部
75
+ * @property {Boolean | String} statusBar = [true|false] 是否包含状态栏
76
+ * @property {Boolean | String} shadow = [true|false] 导航栏下是否有阴影
77
+ * @property {Boolean | String} border = [true|false] 导航栏下是否有边框
78
+ * @property {Number | String} height 导航栏高度(默认 44)
79
+ * @property {Number | String} leftWidth 导航栏左侧宽度(默认 60)
80
+ * @property {Number | String} rightWidth 导航栏右侧宽度(默认 60)
81
+ * @property {Boolean | String} stat = [true|false] 是否开启统计标题上报
82
+ * @property {Boolean | String} showMenuButtonWidth 是否开启胶囊避让(默认 false)
83
+ *
84
+ * @event {Function} clickLeft 左侧按钮点击时触发
85
+ * @event {Function} clickRight 右侧按钮点击时触发
86
+ * @event {Function} clickTitle 中间标题点击时触发
87
+ */
88
+ import { navbarEmits, navbarProps } from './navbar';
89
+ import { useNavbar, useNavbarCustomStyle } from './composables';
90
+
91
+ defineOptions({ name: 'FuNavbar', options: { virtualHost: true } });
92
+
93
+ const props = defineProps(navbarProps);
94
+ const $emit = defineEmits(navbarEmits);
95
+
96
+ const {
97
+ navWidth,
98
+ handleClickLeft,
99
+ handleClickRight,
100
+ handleClickTitle
101
+ } = useNavbar(props, $emit);
102
+
103
+ const {
104
+ themeBgColor,
105
+ themeColor,
106
+ navbarHeight,
107
+ leftIconWidth,
108
+ rightIconWidth
109
+ } = useNavbarCustomStyle(props);
110
+ </script>
111
+
112
+ <style lang="scss" scoped>
113
+ @use '../../../style/components.scss';
114
+ $nav-height: 44px;
115
+
116
+ .fu-nvue-fixed {
117
+ /* #ifdef APP-NVUE */
118
+ position: sticky;
119
+ /* #endif */
120
+ }
121
+
122
+ .fu-navbar {
123
+ box-sizing: border-box;
124
+ }
125
+
126
+ .fu-nav-bar-text {
127
+ /* #ifdef APP-PLUS */
128
+ font-size: 34rpx;
129
+ /* #endif */
130
+ /* #ifndef APP-PLUS */
131
+ font-size: 16px;
132
+ /* #endif */
133
+ }
134
+
135
+ .fu-nav-bar-right-text {
136
+ font-size: 12px;
137
+ }
138
+
139
+ .fu-navbar__content {
140
+ position: relative;
141
+ box-sizing: border-box;
142
+ background-color: transparent;
143
+ }
144
+
145
+ .fu-navbar__content_view {
146
+ box-sizing: border-box;
147
+ }
148
+
149
+ .fu-navbar-btn-text {
150
+ @include components.flex(column);
151
+ justify-content: flex-start;
152
+ align-items: center;
153
+ line-height: 12px;
154
+ }
155
+
156
+ .fu-navbar__header {
157
+ padding: 0 10px;
158
+ @include components.flex(row);
159
+ height: $nav-height;
160
+ font-size: 12px;
161
+ box-sizing: border-box;
162
+ }
163
+
164
+ .fu-navbar__header-btns {
165
+ @include components.flex(row);
166
+ /* #ifndef APP-NVUE */
167
+ overflow: hidden;
168
+ /* #endif */
169
+ flex-wrap: nowrap;
170
+ width: 120rpx;
171
+ justify-content: center;
172
+ align-items: center;
173
+ /* #ifdef H5 */
174
+ cursor: pointer;
175
+ /* #endif */
176
+ }
177
+
178
+ .fu-navbar__header-btns-left {
179
+ @include components.flex;
180
+ width: 120rpx;
181
+ justify-content: flex-start;
182
+ align-items: center;
183
+ }
184
+
185
+ .fu-navbar__header-btns-right {
186
+ @include components.flex(row);
187
+ justify-content: flex-end;
188
+ align-items: center;
189
+ }
190
+
191
+ .fu-navbar__header-container {
192
+ @include components.flex;
193
+ flex: 1;
194
+ padding: 0 10px;
195
+ overflow: hidden;
196
+ }
197
+
198
+ .fu-navbar__header-container-inner {
199
+ @include components.flex(row);
200
+ flex: 1;
201
+ align-items: center;
202
+ justify-content: center;
203
+ font-size: 12px;
204
+ overflow: hidden;
205
+ box-sizing: border-box;
206
+ }
207
+
208
+ .fu-navbar__placeholder-view {
209
+ height: $nav-height;
210
+ }
211
+
212
+ .fu-navbar--fixed {
213
+ position: fixed;
214
+ z-index: 998;
215
+ /* #ifdef H5 */
216
+ left: var(--window-left);
217
+ right: var(--window-right);
218
+ /* #endif */
219
+ /* #ifndef H5 */
220
+ left: 0;
221
+ right: 0;
222
+ /* #endif */
223
+ }
224
+
225
+ .fu-navbar--shadow {
226
+ box-shadow: 0 1px 6px #ccc;
227
+ }
228
+
229
+ .fu-navbar--border {
230
+ border-bottom-width: 1rpx;
231
+ border-bottom-style: solid;
232
+ border-bottom-color: #eeeeee;
233
+ }
234
+
235
+ .fu-ellipsis-1 {
236
+ overflow: hidden;
237
+ /* #ifndef APP-NVUE */
238
+ white-space: nowrap;
239
+ text-overflow: ellipsis;
240
+ /* #endif */
241
+ /* #ifdef APP-NVUE */
242
+ lines: 1;
243
+ text-overflow: ellipsis;
244
+ /* #endif */
245
+ }
246
+
247
+ // 暗主题配置
248
+ .fu-dark {}
249
+ </style>
@@ -0,0 +1,3 @@
1
+ export * from './src/notice-bar'
2
+ export * from './src/notice-row'
3
+ export * from './src/notice-column'
@@ -0,0 +1,5 @@
1
+ export * from './notice-row-custom'
2
+ export * from './use-notice-row'
3
+ export * from './notice-column-custom'
4
+ export * from './use-notice-column'
5
+ export * from './use-notice-bar'
@@ -0,0 +1,43 @@
1
+ import { computed, type CSSProperties } from 'vue';
2
+ import type { NoticeColumnProps } from '../notice-column';
3
+
4
+ export const useNoticeColumnCustomStyle = (props: NoticeColumnProps) => {
5
+ const textStyle = computed<CSSProperties>(() => {
6
+ let style = {
7
+ color: props.fontColor || '',
8
+ fontSize: uni.$fu.addUnit(props.fontSize)
9
+ };
10
+
11
+ return style
12
+ });
13
+
14
+ const noticeStyle = computed<CSSProperties>(() => {
15
+ let style: Record<string, any> = {
16
+ background: props.bgColor || 'transparent'
17
+ };
18
+ if (props.padding) style.padding = props.padding;
19
+
20
+ return style
21
+ });
22
+
23
+ const swiperStyle = computed<CSSProperties>(() => {
24
+ let style: Record<string, any> = {};
25
+ style.height = props.fontSize ? uni.$fu.addUnit(props.fontSize as number + 6) : '16px';
26
+ style.lineHeight = style.height;
27
+
28
+ return style
29
+ });
30
+
31
+ // 标记是否为垂直
32
+ const vertical = computed(() => {
33
+ if (props.mode === 'row') return false
34
+ else return true
35
+ });
36
+
37
+ return {
38
+ textStyle,
39
+ noticeStyle,
40
+ swiperStyle,
41
+ vertical
42
+ }
43
+ }
@@ -0,0 +1,26 @@
1
+ import { computed, type CSSProperties } from 'vue';
2
+ import type { NoticeRowProps } from '../notice-row';
3
+
4
+ export const useNoticeRowCustomStyle = (props: NoticeRowProps) => {
5
+ const textStyle = computed<CSSProperties>(() => {
6
+ let style = {
7
+ color: props.fontColor || '',
8
+ fontSize: uni.$fu.addUnit(props.fontSize)
9
+ };
10
+
11
+ return style
12
+ });
13
+
14
+ const noticeStyle = computed(() => {
15
+ let style: Record<string, any> = {};
16
+ style.background = props.bgColor || 'transparent';
17
+ if (props.padding) style.padding = props.padding;
18
+
19
+ return style
20
+ });
21
+
22
+ return {
23
+ textStyle,
24
+ noticeStyle
25
+ }
26
+ }
@@ -0,0 +1,34 @@
1
+ import { computed, type SetupContext } from 'vue';
2
+ import type { NoticeBarProps, NoticeBarEmits } from '../notice-bar';
3
+
4
+ export const useNoticeBar = (props: NoticeBarProps, $emit: SetupContext<NoticeBarEmits>['emit']) => {
5
+ // 当设置了show为false,或者autoHidden为true且list为空时,不显示通知
6
+ const showNotice = computed(() => {
7
+ if (props.show === false || (props.autoHidden && props.list.length === 0)) {
8
+ return false
9
+ }
10
+ return true
11
+ });
12
+
13
+ // 点击通知栏
14
+ const handleClick = (index: any) => {
15
+ $emit('click', index)
16
+ };
17
+
18
+ // 点击右边图标
19
+ const handleClickRight = (e: any) => {
20
+ $emit('clickRight', e)
21
+ };
22
+
23
+ // 一个周期滚动结束
24
+ const handleEnd = () => {
25
+ $emit('end')
26
+ };
27
+
28
+ return {
29
+ showNotice,
30
+ handleClick,
31
+ handleClickRight,
32
+ handleEnd
33
+ }
34
+ }
@@ -0,0 +1,31 @@
1
+ import { ref, type SetupContext } from 'vue';
2
+ import type { NoticeColumnProps, NoticeColumnEmits } from '../notice-column';
3
+
4
+ export const useNoticeColumn = (props: NoticeColumnProps, $emit: SetupContext<NoticeColumnEmits>['emit']) => {
5
+ const index = ref(0);
6
+
7
+ // 点击通知栏
8
+ const handleClick = () => {
9
+ $emit('click', index.value)
10
+ };
11
+
12
+ // 点击右边图标
13
+ const handleClickRight = () => {
14
+ $emit('clickRight', index.value)
15
+ };
16
+
17
+ // 切换事件
18
+ const change = (e: any) => {
19
+ const _index = e.detail.current;
20
+ index.value = _index;
21
+ if (_index === props.list.length - 1) {
22
+ $emit('end')
23
+ }
24
+ };
25
+
26
+ return {
27
+ handleClick,
28
+ handleClickRight,
29
+ change
30
+ }
31
+ };
@@ -0,0 +1,88 @@
1
+ import { ref, watch, nextTick, getCurrentInstance, type SetupContext } from 'vue';
2
+ import type { NoticeRowProps, NoticeRowEmits } from '../notice-row';
3
+
4
+ export const useNoticeRow = (props: NoticeRowProps, $emit: SetupContext<NoticeRowEmits>['emit']) => {
5
+ const instance = getCurrentInstance();
6
+ const elIdBox = uni.$fu.uuid();
7
+ const elId = uni.$fu.uuid();
8
+ const textWidth = ref(0); // 滚动文字的宽度
9
+ const textBoxWidth = ref(0); // 存放滚动文字的盒子的宽度
10
+ const animationDuration = ref('10s'); // 动画执行的时间
11
+ const animationPlayState = ref('paused'); // 动画执行状态
12
+ const animationDelay = ref('0s'); // 动画执行延迟的时间
13
+ const showText = ref(''); // 当前显示的文本
14
+
15
+ // 初始化通知栏
16
+ const initNotice = () => {
17
+ let query = []
18
+ let textQuery = new Promise<void>((resolve, reject) => {
19
+ uni.createSelectorQuery()
20
+ // #ifndef MP-ALIPAY
21
+ .in(instance)
22
+ // #endif
23
+ .select(`#${elId}`)
24
+ .boundingClientRect().exec(ret => {
25
+ textWidth.value = ret[0].width;
26
+ resolve()
27
+ })
28
+ })
29
+ let boxQuery = new Promise<void>((resolve, reject) => {
30
+ uni.createSelectorQuery()
31
+ // #ifndef MP-ALIPAY
32
+ .in(instance)
33
+ // #endif
34
+ .select(`#${elIdBox}`)
35
+ .boundingClientRect()
36
+ .exec(ret => {
37
+ textBoxWidth.value = ret[0].width;
38
+ resolve()
39
+ })
40
+ })
41
+ query.push(textQuery)
42
+ query.push(boxQuery)
43
+ Promise.all(query).then(() => {
44
+ // 根据t=s/v(时间=路程/速度),这里为何不需要加上#fu-row-notice__content--box的宽度,因为设置了.fu-row-notice__content样式中设置了padding-left: 100%
45
+ animationDuration.value = `${textWidth.value / props.speed}s`;
46
+ animationDelay.value = `-${textBoxWidth.value / props.speed}s`;
47
+ // 这里必须这样开始动画,否则在APP上动画速度不会改变(HX版本2.4.6,IOS13)
48
+ animationPlayState.value = 'paused';
49
+ setTimeout(() => {
50
+ if (props.autoPlay) {
51
+ animationPlayState.value = 'running';
52
+ }
53
+ }, 1000)
54
+ })
55
+ };
56
+
57
+ // 点击通知栏
58
+ const handleClick = () => {
59
+ $emit('click')
60
+ };
61
+
62
+ // 点击右边图标
63
+ const handleClickRight = () => {
64
+ $emit('clickRight')
65
+ };
66
+
67
+ watch(() => props.list, (newVal) => {
68
+ showText.value = newVal.join(',')
69
+ nextTick(() => {
70
+ initNotice()
71
+ })
72
+ }, { immediate: true });
73
+
74
+ watch(() => props.speed, () => {
75
+ initNotice()
76
+ })
77
+
78
+ return {
79
+ elIdBox,
80
+ elId,
81
+ animationDuration,
82
+ animationPlayState,
83
+ animationDelay,
84
+ showText,
85
+ handleClick,
86
+ handleClickRight
87
+ }
88
+ }
@@ -0,0 +1,197 @@
1
+ import type { ExtractPropTypes } from 'vue';
2
+
3
+ /**
4
+ * 通知栏 mode 有效值
5
+ */
6
+ export const noticeBarModes = ['row', 'column'] as const;
7
+
8
+ export const noticeBarProps = {
9
+ /**
10
+ * @description 显示的内容
11
+ */
12
+ list: {
13
+ type: Array,
14
+ default() {
15
+ return []
16
+ }
17
+ },
18
+ /**
19
+ * @description 是否显示
20
+ * @default true
21
+ */
22
+ show: {
23
+ type: Boolean,
24
+ default: true
25
+ },
26
+ /**
27
+ * @description 设置圆角
28
+ */
29
+ radius: {
30
+ type: [Number, String],
31
+ default: 0
32
+ },
33
+ /**
34
+ * @description 滚动方向
35
+ * @values 'row' - 水平滚动, 'column' - 垂直滚动
36
+ * @default 'row'
37
+ */
38
+ mode: {
39
+ type: String,
40
+ values: noticeBarModes,
41
+ default: 'row'
42
+ },
43
+ /**
44
+ * @description 是否显示左边图标
45
+ * @default true
46
+ */
47
+ leftIcon: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ /**
52
+ * @description 左边图标的名称
53
+ * @default 'volume'
54
+ */
55
+ leftIconName: {
56
+ type: String,
57
+ default: 'volume'
58
+ },
59
+ /**
60
+ * @description 左边图标的大小
61
+ * @default 20
62
+ */
63
+ leftIconSize: {
64
+ type: [String, Number],
65
+ default: 20
66
+ },
67
+ /**
68
+ * @description 左边图标的颜色
69
+ * @default '#333333'
70
+ */
71
+ leftIconColor: {
72
+ type: String,
73
+ default: '#333333'
74
+ },
75
+ /**
76
+ * @description 是否显示右边的图标
77
+ * @default false
78
+ */
79
+ rightIcon: {
80
+ type: Boolean,
81
+ default: false
82
+ },
83
+ /**
84
+ * @description 右边图标的名称
85
+ * @default 'right'
86
+ */
87
+ rightIconName: {
88
+ type: String,
89
+ default: 'right'
90
+ },
91
+ /**
92
+ * @description 右边图标的大小
93
+ * @default 20
94
+ */
95
+ rightIconSize: {
96
+ type: [String, Number],
97
+ default: 20
98
+ },
99
+ /**
100
+ * @description 右边图标的颜色
101
+ * @default '#333333'
102
+ */
103
+ rightIconColor: {
104
+ type: String,
105
+ default: '#333333'
106
+ },
107
+ /**
108
+ * @description 内边距
109
+ * @default '9px 12px'
110
+ */
111
+ padding: {
112
+ type: String,
113
+ default: '9px 12px'
114
+ },
115
+ /**
116
+ * @description 自动播放
117
+ * @default true
118
+ */
119
+ autoPlay: {
120
+ type: Boolean,
121
+ default: true
122
+ },
123
+ /**
124
+ * @description 滚动周期
125
+ * @default 2000
126
+ */
127
+ duration: {
128
+ type: Number,
129
+ default: 2000
130
+ },
131
+ /**
132
+ * @description 水平滚动时的速度,即每秒滚动多少px
133
+ * @default 80
134
+ */
135
+ speed: {
136
+ type: Number,
137
+ default: 80
138
+ },
139
+ /**
140
+ * @description 水平滚动的时候是否采用衔接的模式
141
+ * @default true
142
+ */
143
+ circular: {
144
+ type: Boolean,
145
+ default: true
146
+ },
147
+ /**
148
+ * @description 没有数据时是否显示通知
149
+ * @default true
150
+ */
151
+ autoHidden: {
152
+ type: Boolean,
153
+ default: true
154
+ },
155
+ /**
156
+ * @description 背景颜色
157
+ * @default '#f9f9f9'
158
+ */
159
+ bgColor: {
160
+ type: String,
161
+ default: '#f9f9f9'
162
+ },
163
+ /**
164
+ * @description 字体颜色
165
+ * @default '#333333'
166
+ */
167
+ color: {
168
+ type: String,
169
+ default: '#333333'
170
+ },
171
+ /**
172
+ * @description 字体大小
173
+ * @default 14
174
+ */
175
+ size: {
176
+ type: [String, Number],
177
+ default: 14
178
+ }
179
+ };
180
+
181
+ export const noticeBarEmits = {
182
+ /**
183
+ * @description 点击通知栏文字触发
184
+ */
185
+ click: (_e: any) => true,
186
+ /**
187
+ * @description 点击右侧图标触发
188
+ */
189
+ clickRight: (_e: any) => true,
190
+ /**
191
+ * @description 一个周期滚动结束触发(仅mode=column时生效)
192
+ */
193
+ end: () => true
194
+ };
195
+
196
+ export type NoticeBarProps = ExtractPropTypes<typeof noticeBarProps>;
197
+ export type NoticeBarEmits = typeof noticeBarEmits;