ff-ui-plus 2.0.7

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 (319) hide show
  1. package/.nvmrc +1 -0
  2. package/.prettierrc.cjs +41 -0
  3. package/.stylelintignore +5 -0
  4. package/LICENSE +21 -0
  5. package/README.md +265 -0
  6. package/commitlint.config.cjs +162 -0
  7. package/global.d.ts +27 -0
  8. package/index.html +16 -0
  9. package/lib.sh +9 -0
  10. package/lint-staged.config.cjs +8 -0
  11. package/package.json +149 -0
  12. package/packages/components/adaptive-page/index.ts +5 -0
  13. package/packages/components/adaptive-page/src/index.vue +85 -0
  14. package/packages/components/adaptive-page/src/type.ts +9 -0
  15. package/packages/components/adaptive-page/style/css.ts +1 -0
  16. package/packages/components/adaptive-page/style/index.ts +1 -0
  17. package/packages/components/button/index.ts +5 -0
  18. package/packages/components/button/src/index.vue +41 -0
  19. package/packages/components/button/src/type.ts +11 -0
  20. package/packages/components/button/style/css.ts +1 -0
  21. package/packages/components/button/style/index.ts +1 -0
  22. package/packages/components/chart/index.ts +5 -0
  23. package/packages/components/chart/src/index.vue +121 -0
  24. package/packages/components/chart/src/type.ts +7 -0
  25. package/packages/components/chart/style/css.ts +1 -0
  26. package/packages/components/chart/style/index.ts +1 -0
  27. package/packages/components/checkbox/index.ts +3 -0
  28. package/packages/components/checkbox/src/checkbox.d.ts +5 -0
  29. package/packages/components/checkbox/src/index.vue +67 -0
  30. package/packages/components/checkbox/style/css.ts +1 -0
  31. package/packages/components/checkbox/style/index.ts +1 -0
  32. package/packages/components/date-picker/index.ts +5 -0
  33. package/packages/components/date-picker/src/index.vue +228 -0
  34. package/packages/components/date-picker/src/type.ts +22 -0
  35. package/packages/components/date-picker/style/css.ts +1 -0
  36. package/packages/components/date-picker/style/index.ts +1 -0
  37. package/packages/components/detail/index.ts +5 -0
  38. package/packages/components/detail/src/index.vue +102 -0
  39. package/packages/components/detail/src/renderLabel.vue +15 -0
  40. package/packages/components/detail/src/renderTooltip.vue +15 -0
  41. package/packages/components/detail/src/type.ts +28 -0
  42. package/packages/components/detail/style/css.ts +1 -0
  43. package/packages/components/detail/style/index.ts +1 -0
  44. package/packages/components/form/index.ts +5 -0
  45. package/packages/components/form/src/index.vue +407 -0
  46. package/packages/components/form/src/renderBtn.vue +15 -0
  47. package/packages/components/form/src/renderComp.vue +15 -0
  48. package/packages/components/form/src/type.ts +26 -0
  49. package/packages/components/form/style/css.ts +1 -0
  50. package/packages/components/form/style/index.ts +1 -0
  51. package/packages/components/index.ts +20 -0
  52. package/packages/components/input/index.ts +5 -0
  53. package/packages/components/input/src/index.vue +225 -0
  54. package/packages/components/input/src/type.ts +14 -0
  55. package/packages/components/input/style/css.ts +1 -0
  56. package/packages/components/input/style/index.ts +1 -0
  57. package/packages/components/layout-page/index.ts +4 -0
  58. package/packages/components/layout-page/src/index.vue +74 -0
  59. package/packages/components/layout-page/style/css.ts +1 -0
  60. package/packages/components/layout-page/style/index.ts +1 -0
  61. package/packages/components/layout-page-item/index.ts +3 -0
  62. package/packages/components/layout-page-item/src/index.vue +16 -0
  63. package/packages/components/layout-page-item/style/css.ts +1 -0
  64. package/packages/components/layout-page-item/style/index.ts +1 -0
  65. package/packages/components/module-form/index.ts +4 -0
  66. package/packages/components/module-form/src/index.vue +243 -0
  67. package/packages/components/module-form/src/moduleDetail.vue +61 -0
  68. package/packages/components/module-form/src/moduleForm.vue +88 -0
  69. package/packages/components/module-form/src/type.ts +16 -0
  70. package/packages/components/module-form/style/css.ts +1 -0
  71. package/packages/components/module-form/style/index.ts +1 -0
  72. package/packages/components/package.json +9 -0
  73. package/packages/components/query-condition/index.ts +4 -0
  74. package/packages/components/query-condition/src/index.vue +478 -0
  75. package/packages/components/query-condition/src/moreChoose.vue +159 -0
  76. package/packages/components/query-condition/src/renderComp.vue +15 -0
  77. package/packages/components/query-condition/src/type.ts +22 -0
  78. package/packages/components/query-condition/src/useComputed.ts +94 -0
  79. package/packages/components/query-condition/style/css.ts +1 -0
  80. package/packages/components/query-condition/style/index.ts +1 -0
  81. package/packages/components/radio/index.ts +3 -0
  82. package/packages/components/radio/src/index.vue +73 -0
  83. package/packages/components/radio/src/radio.d.ts +12 -0
  84. package/packages/components/radio/style/css.ts +1 -0
  85. package/packages/components/radio/style/index.ts +1 -0
  86. package/packages/components/select/index.ts +4 -0
  87. package/packages/components/select/src/index.vue +240 -0
  88. package/packages/components/select/src/type.ts +43 -0
  89. package/packages/components/select/style/css.ts +1 -0
  90. package/packages/components/select/style/index.ts +1 -0
  91. package/packages/components/select-icon/index.ts +4 -0
  92. package/packages/components/select-icon/src/index.vue +128 -0
  93. package/packages/components/select-icon/style/css.ts +1 -0
  94. package/packages/components/select-icon/style/index.ts +1 -0
  95. package/packages/components/select-table/index.ts +4 -0
  96. package/packages/components/select-table/src/ClickOutside.ts +106 -0
  97. package/packages/components/select-table/src/index.vue +851 -0
  98. package/packages/components/select-table/src/renderCol.vue +20 -0
  99. package/packages/components/select-table/src/type.ts +56 -0
  100. package/packages/components/select-table/src/useVirtualized.ts +86 -0
  101. package/packages/components/select-table/style/css.ts +1 -0
  102. package/packages/components/select-table/style/index.ts +1 -0
  103. package/packages/components/step-wizard/index.ts +4 -0
  104. package/packages/components/step-wizard/src/index.vue +99 -0
  105. package/packages/components/step-wizard/src/type.ts +17 -0
  106. package/packages/components/step-wizard/style/css.ts +1 -0
  107. package/packages/components/step-wizard/style/index.ts +1 -0
  108. package/packages/components/table/index.ts +5 -0
  109. package/packages/components/table/src/ColumnSet.vue +176 -0
  110. package/packages/components/table/src/TTableColumn.vue +100 -0
  111. package/packages/components/table/src/densitySet.vue +91 -0
  112. package/packages/components/table/src/firstColumn.vue +132 -0
  113. package/packages/components/table/src/index.vue +926 -0
  114. package/packages/components/table/src/operator.vue +246 -0
  115. package/packages/components/table/src/renderCol.vue +20 -0
  116. package/packages/components/table/src/renderHeader.vue +18 -0
  117. package/packages/components/table/src/singleEdit.vue +354 -0
  118. package/packages/components/table/src/singleEditCell.vue +303 -0
  119. package/packages/components/table/src/tableProps.ts +162 -0
  120. package/packages/components/table/src/useExpose.ts +74 -0
  121. package/packages/components/table/src/useVirtualized.ts +70 -0
  122. package/packages/components/table/style/css.ts +1 -0
  123. package/packages/components/table/style/index.ts +1 -0
  124. package/packages/components/tabs/index.ts +4 -0
  125. package/packages/components/tabs/src/index.vue +50 -0
  126. package/packages/components/tabs/style/css.ts +1 -0
  127. package/packages/components/tabs/style/index.ts +1 -0
  128. package/packages/components/timer-btn/index.ts +4 -0
  129. package/packages/components/timer-btn/src/index.vue +57 -0
  130. package/packages/components/timer-btn/style/css.ts +1 -0
  131. package/packages/components/timer-btn/style/index.ts +1 -0
  132. package/packages/components/utils/index.ts +142 -0
  133. package/packages/components/utils/install.ts +16 -0
  134. package/packages/eslint-config/build.config.ts +16 -0
  135. package/packages/eslint-config/dist/index.cjs +122 -0
  136. package/packages/eslint-config/dist/index.d.cts +92 -0
  137. package/packages/eslint-config/dist/index.d.mts +92 -0
  138. package/packages/eslint-config/dist/index.d.ts +92 -0
  139. package/packages/eslint-config/dist/index.mjs +120 -0
  140. package/packages/eslint-config/package.json +34 -0
  141. package/packages/eslint-config/src/index.ts +121 -0
  142. package/packages/ff-ui-plus/component.ts +55 -0
  143. package/packages/ff-ui-plus/defaults.ts +4 -0
  144. package/packages/ff-ui-plus/index.ts +9 -0
  145. package/packages/ff-ui-plus/make-installer.ts +10 -0
  146. package/packages/ff-ui-plus/package.json +117 -0
  147. package/packages/ff-ui-plus/version.ts +1 -0
  148. package/packages/hooks/index.ts +1 -0
  149. package/packages/hooks/package.json +9 -0
  150. package/packages/hooks/useLocale.ts +53 -0
  151. package/packages/locale/index.ts +11 -0
  152. package/packages/locale/lang/en.ts +157 -0
  153. package/packages/locale/lang/zh-cn.ts +155 -0
  154. package/packages/locale/package.json +12 -0
  155. package/packages/resolver/package.json +23 -0
  156. package/packages/resolver/src/index.ts +99 -0
  157. package/packages/theme-chalk/build.ts +76 -0
  158. package/packages/theme-chalk/dist/index.css +1 -0
  159. package/packages/theme-chalk/dist/src/adaptive-page.scss +48 -0
  160. package/packages/theme-chalk/dist/src/button.scss +23 -0
  161. package/packages/theme-chalk/dist/src/chart.scss +10 -0
  162. package/packages/theme-chalk/dist/src/checkbox.scss +0 -0
  163. package/packages/theme-chalk/dist/src/date-picker.scss +3 -0
  164. package/packages/theme-chalk/dist/src/detail.scss +7 -0
  165. package/packages/theme-chalk/dist/src/form.scss +104 -0
  166. package/packages/theme-chalk/dist/src/index.scss +19 -0
  167. package/packages/theme-chalk/dist/src/input.scss +0 -0
  168. package/packages/theme-chalk/dist/src/layout-page-item.scss +10 -0
  169. package/packages/theme-chalk/dist/src/layout-page.scss +37 -0
  170. package/packages/theme-chalk/dist/src/module-form.scss +335 -0
  171. package/packages/theme-chalk/dist/src/query-condition.scss +132 -0
  172. package/packages/theme-chalk/dist/src/radio.scss +0 -0
  173. package/packages/theme-chalk/dist/src/select-icon.scss +61 -0
  174. package/packages/theme-chalk/dist/src/select-table.scss +71 -0
  175. package/packages/theme-chalk/dist/src/select.scss +7 -0
  176. package/packages/theme-chalk/dist/src/step-wizard.scss +51 -0
  177. package/packages/theme-chalk/dist/src/table.scss +381 -0
  178. package/packages/theme-chalk/dist/src/tabs.scss +20 -0
  179. package/packages/theme-chalk/dist/src/timer-btn.scss +21 -0
  180. package/packages/theme-chalk/dist/t-adaptive-page.css +1 -0
  181. package/packages/theme-chalk/dist/t-button.css +1 -0
  182. package/packages/theme-chalk/dist/t-chart.css +1 -0
  183. package/packages/theme-chalk/dist/t-checkbox.css +0 -0
  184. package/packages/theme-chalk/dist/t-date-picker.css +1 -0
  185. package/packages/theme-chalk/dist/t-detail.css +1 -0
  186. package/packages/theme-chalk/dist/t-form.css +1 -0
  187. package/packages/theme-chalk/dist/t-input.css +0 -0
  188. package/packages/theme-chalk/dist/t-layout-page-item.css +1 -0
  189. package/packages/theme-chalk/dist/t-layout-page.css +1 -0
  190. package/packages/theme-chalk/dist/t-module-form.css +1 -0
  191. package/packages/theme-chalk/dist/t-query-condition.css +1 -0
  192. package/packages/theme-chalk/dist/t-radio.css +0 -0
  193. package/packages/theme-chalk/dist/t-select-icon.css +1 -0
  194. package/packages/theme-chalk/dist/t-select-table.css +1 -0
  195. package/packages/theme-chalk/dist/t-select.css +1 -0
  196. package/packages/theme-chalk/dist/t-step-wizard.css +1 -0
  197. package/packages/theme-chalk/dist/t-table.css +1 -0
  198. package/packages/theme-chalk/dist/t-tabs.css +1 -0
  199. package/packages/theme-chalk/dist/t-timer-btn.css +1 -0
  200. package/packages/theme-chalk/mixins/config.scss +8 -0
  201. package/packages/theme-chalk/mixins/function.scss +71 -0
  202. package/packages/theme-chalk/mixins/mixins.scss +79 -0
  203. package/packages/theme-chalk/package.json +21 -0
  204. package/packages/theme-chalk/src/adaptive-page.scss +48 -0
  205. package/packages/theme-chalk/src/button.scss +23 -0
  206. package/packages/theme-chalk/src/chart.scss +10 -0
  207. package/packages/theme-chalk/src/checkbox.scss +0 -0
  208. package/packages/theme-chalk/src/date-picker.scss +3 -0
  209. package/packages/theme-chalk/src/detail.scss +7 -0
  210. package/packages/theme-chalk/src/form.scss +104 -0
  211. package/packages/theme-chalk/src/index.scss +19 -0
  212. package/packages/theme-chalk/src/input.scss +0 -0
  213. package/packages/theme-chalk/src/layout-page-item.scss +10 -0
  214. package/packages/theme-chalk/src/layout-page.scss +37 -0
  215. package/packages/theme-chalk/src/module-form.scss +335 -0
  216. package/packages/theme-chalk/src/query-condition.scss +132 -0
  217. package/packages/theme-chalk/src/radio.scss +0 -0
  218. package/packages/theme-chalk/src/select-icon.scss +61 -0
  219. package/packages/theme-chalk/src/select-table.scss +71 -0
  220. package/packages/theme-chalk/src/select.scss +7 -0
  221. package/packages/theme-chalk/src/step-wizard.scss +51 -0
  222. package/packages/theme-chalk/src/table.scss +381 -0
  223. package/packages/theme-chalk/src/tabs.scss +20 -0
  224. package/packages/theme-chalk/src/timer-btn.scss +21 -0
  225. package/packages/types/global.ts +34 -0
  226. package/packages/types/index.ts +1 -0
  227. package/packages/types/package.json +10 -0
  228. package/packages/utils/build.config.ts +23 -0
  229. package/packages/utils/dist/cookie.cjs +1 -0
  230. package/packages/utils/dist/cookie.d.cts +16 -0
  231. package/packages/utils/dist/cookie.d.mts +16 -0
  232. package/packages/utils/dist/cookie.d.ts +16 -0
  233. package/packages/utils/dist/cookie.mjs +1 -0
  234. package/packages/utils/dist/day.cjs +1 -0
  235. package/packages/utils/dist/day.d.cts +37 -0
  236. package/packages/utils/dist/day.d.mts +37 -0
  237. package/packages/utils/dist/day.d.ts +37 -0
  238. package/packages/utils/dist/day.mjs +1 -0
  239. package/packages/utils/dist/file.cjs +1 -0
  240. package/packages/utils/dist/file.d.cts +61 -0
  241. package/packages/utils/dist/file.d.mts +61 -0
  242. package/packages/utils/dist/file.d.ts +61 -0
  243. package/packages/utils/dist/file.mjs +1 -0
  244. package/packages/utils/dist/index.cjs +1 -0
  245. package/packages/utils/dist/index.d.cts +13 -0
  246. package/packages/utils/dist/index.d.mts +13 -0
  247. package/packages/utils/dist/index.d.ts +13 -0
  248. package/packages/utils/dist/index.mjs +1 -0
  249. package/packages/utils/dist/is.cjs +1 -0
  250. package/packages/utils/dist/is.d.cts +117 -0
  251. package/packages/utils/dist/is.d.mts +117 -0
  252. package/packages/utils/dist/is.d.ts +117 -0
  253. package/packages/utils/dist/is.mjs +1 -0
  254. package/packages/utils/dist/letter.cjs +1 -0
  255. package/packages/utils/dist/letter.d.cts +12 -0
  256. package/packages/utils/dist/letter.d.mts +12 -0
  257. package/packages/utils/dist/letter.d.ts +12 -0
  258. package/packages/utils/dist/letter.mjs +1 -0
  259. package/packages/utils/dist/number.cjs +1 -0
  260. package/packages/utils/dist/number.d.cts +23 -0
  261. package/packages/utils/dist/number.d.mts +23 -0
  262. package/packages/utils/dist/number.d.ts +23 -0
  263. package/packages/utils/dist/number.mjs +1 -0
  264. package/packages/utils/dist/openExe.cjs +1 -0
  265. package/packages/utils/dist/openExe.d.cts +9 -0
  266. package/packages/utils/dist/openExe.d.mts +9 -0
  267. package/packages/utils/dist/openExe.d.ts +9 -0
  268. package/packages/utils/dist/openExe.mjs +1 -0
  269. package/packages/utils/dist/storage.cjs +1 -0
  270. package/packages/utils/dist/storage.d.cts +46 -0
  271. package/packages/utils/dist/storage.d.mts +46 -0
  272. package/packages/utils/dist/storage.d.ts +46 -0
  273. package/packages/utils/dist/storage.mjs +1 -0
  274. package/packages/utils/dist/validate.cjs +1 -0
  275. package/packages/utils/dist/validate.d.cts +32 -0
  276. package/packages/utils/dist/validate.d.mts +32 -0
  277. package/packages/utils/dist/validate.d.ts +32 -0
  278. package/packages/utils/dist/validate.mjs +1 -0
  279. package/packages/utils/dist/ws.cjs +1 -0
  280. package/packages/utils/dist/ws.d.cts +86 -0
  281. package/packages/utils/dist/ws.d.mts +86 -0
  282. package/packages/utils/dist/ws.d.ts +86 -0
  283. package/packages/utils/dist/ws.mjs +1 -0
  284. package/packages/utils/package.json +42 -0
  285. package/packages/utils/src/cookie.ts +24 -0
  286. package/packages/utils/src/day.ts +66 -0
  287. package/packages/utils/src/file.ts +173 -0
  288. package/packages/utils/src/index.ts +10 -0
  289. package/packages/utils/src/is.ts +159 -0
  290. package/packages/utils/src/letter.ts +15 -0
  291. package/packages/utils/src/number.ts +37 -0
  292. package/packages/utils/src/openExe.ts +45 -0
  293. package/packages/utils/src/storage.ts +77 -0
  294. package/packages/utils/src/validate.ts +55 -0
  295. package/packages/utils/src/ws.ts +191 -0
  296. package/pnpm-workspace.yaml +3 -0
  297. package/publish.sh +37 -0
  298. package/resolver.sh +9 -0
  299. package/scripts/build/all.ts +152 -0
  300. package/scripts/build/build.config.ts +10 -0
  301. package/scripts/build/dist/index.cjs +7 -0
  302. package/scripts/build/dist/index.d.ts +2 -0
  303. package/scripts/build/dist/index.mjs +12 -0
  304. package/scripts/build/index.ts +63 -0
  305. package/scripts/build/modules.ts +141 -0
  306. package/scripts/build/package.json +14 -0
  307. package/scripts/release/gen-version.ts +12 -0
  308. package/scripts/release/index.ts +209 -0
  309. package/scripts/utils/excludeFiles.ts +14 -0
  310. package/scripts/utils/index.ts +88 -0
  311. package/scripts/utils/main.ts +14 -0
  312. package/scripts/utils/paths.ts +40 -0
  313. package/scripts/utils/plugin.ts +61 -0
  314. package/tsconfig.base.json +23 -0
  315. package/tsconfig.vitest.json +11 -0
  316. package/tsconfig.web.json +18 -0
  317. package/typings/env.d.ts +22 -0
  318. package/typings/index.d.ts +161 -0
  319. package/vitest.config.ts +22 -0
package/package.json ADDED
@@ -0,0 +1,149 @@
1
+ {
2
+ "name": "ff-ui-plus",
3
+ "version": "2.0.7",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
7
+ "description": "Vue3 中基于Element-plus二次封装基础组件文档",
8
+ "author": "zhangpengfeia",
9
+ "license": "MIT",
10
+ "private": false,
11
+ "workspaces": {
12
+ "packages": [
13
+ "packages/*",
14
+ "docs"
15
+ ]
16
+ },
17
+ "dependencies": {
18
+ "@element-plus/icons-vue": "^2.3.1",
19
+ "dayjs": "^1.11.7",
20
+ "element-plus": "^2.7.8",
21
+ "esbuild": "0.24.0",
22
+ "lodash-es": "^4.17.21",
23
+ "sortablejs": "^1.15.0",
24
+ "vite": "^5.2.9",
25
+ "vue": "^3.4.21",
26
+ "vue-tsc": "1.8.27",
27
+ "@ff-ui-plus/resolver": "0.0.2",
28
+ "@ff-ui-plus/components": "0.0.1",
29
+ "@ff-ui-plus/eslint-config": "0.0.2",
30
+ "@ff-ui-plus/theme-chalk": "0.0.7",
31
+ "@ff-ui-plus/hooks": "0.0.1",
32
+ "@ff-ui-plus/locale": "0.0.1",
33
+ "@ff-ui-plus/types": "1.0.0",
34
+ "@ff-ui-plus/utils": "0.0.2"
35
+ },
36
+ "devDependencies": {
37
+ "@commitlint/cli": "^17.6.3",
38
+ "@commitlint/config-conventional": "^17.6.3",
39
+ "@inquirer/prompts": "^1.2.3",
40
+ "@pnpm/find-workspace-packages": "^6.0.8",
41
+ "@pnpm/types": "^9.0.0",
42
+ "@rollup/plugin-commonjs": "^25.0.7",
43
+ "@rollup/plugin-node-resolve": "^15.2.3",
44
+ "@types/fs-extra": "^11.0.1",
45
+ "@types/jsdom": "^21.1.1",
46
+ "@types/lodash-es": "^4.17.7",
47
+ "@types/node": "^20.1.4",
48
+ "@types/sortablejs": "^1.15.1",
49
+ "@vitejs/plugin-vue": "^5.0.4",
50
+ "@vitejs/plugin-vue-jsx": "^3.1.0",
51
+ "@vitest/coverage-v8": "^1.5.0",
52
+ "@vue/test-utils": "^2.4.5",
53
+ "autoprefixer": "^10.4.14",
54
+ "chalk": "4.1.2",
55
+ "commitizen": "^4.3.0",
56
+ "compare-func": "^2.0.0",
57
+ "consola": "^3.1.0",
58
+ "conventional-changelog-cli": "^3.0.0",
59
+ "conventional-changelog-custom-config": "^0.3.1",
60
+ "cssnano": "^6.0.1",
61
+ "cz-conventional-changelog": "^3.3.0",
62
+ "cz-customizable": "^7.0.0",
63
+ "cz-git": "^1.6.1",
64
+ "enquirer": "^2.3.6",
65
+ "execa": "5.1.0",
66
+ "fast-glob": "^3.2.12",
67
+ "fs-extra": "^11.1.1",
68
+ "husky": "^8.0.3",
69
+ "jsdom": "^22.1.0",
70
+ "lint-staged": "^13.2.2",
71
+ "minimist": "^1.2.8",
72
+ "ora": "^6.3.1",
73
+ "postcss": "^8.4.24",
74
+ "prettier": "^2.8.8",
75
+ "rimraf": "^5.0.0",
76
+ "rollup": "^4.14.3",
77
+ "rollup-plugin-banner2": "^1.2.3",
78
+ "rollup-plugin-esbuild": "^6.1.1",
79
+ "rollup-plugin-postcss": "^4.0.2",
80
+ "rollup-plugin-scss": "^4.0.0",
81
+ "sass": "1.32.13",
82
+ "sass-loader": "13.1.0",
83
+ "semver": "^7.5.1",
84
+ "tsx": "^4.7.2",
85
+ "typescript": "^5.4.5",
86
+ "unbuild": "^2.0.0",
87
+ "vite-plugin-dts": "^3.8.3",
88
+ "vitest": "^1.5.0"
89
+ },
90
+ "peerDependencies": {
91
+ "element-plus": "^2.7.8",
92
+ "vue": "^3.2.0"
93
+ },
94
+ "engines": {
95
+ "node": ">= 18"
96
+ },
97
+ "config": {
98
+ "commitizen": {
99
+ "path": "node_modules/cz-git",
100
+ "useEmoji": true
101
+ }
102
+ },
103
+ "lint-staged": {
104
+ "*.{vue,js,ts,jsx,tsx}": [
105
+ "pnpm run lint"
106
+ ]
107
+ },
108
+ "repository": {
109
+ "type": "git",
110
+ "url": "https://github.com/zhangpengfeia/ff-ui-plus.git"
111
+ },
112
+ "homepage": "https://zhangpengfeia.github.io/ff-ui-plus/",
113
+ "keywords": [
114
+ "element-ui",
115
+ "element-plus",
116
+ "vite",
117
+ "vite3",
118
+ "vitepress",
119
+ "vue",
120
+ "vue3",
121
+ "ff-ui",
122
+ "ff-ui-plus",
123
+ "wocwin",
124
+ "二次封装组件",
125
+ "封装组件",
126
+ "components"
127
+ ],
128
+ "scripts": {
129
+ "preinstall": "npx only-allow pnpm",
130
+ "postinstall": "pnpm stub:build && pnpm build:utils && pnpm build:eslint-config",
131
+ "stub:build": "pnpm run -C scripts/build stub",
132
+ "build": "pnpm run clean && pnpm run build:theme && pnpm run build:main",
133
+ "build:resolver": "rimraf packages/resolver/dist && pnpm run -C packages/resolver build",
134
+ "build:utils": "pnpm run -C packages/utils build",
135
+ "build:main": "pnpm run -C scripts/build build",
136
+ "build:theme": "pnpm run -C packages/theme-chalk build",
137
+ "build:eslint-config": "pnpm run -C packages/eslint-config build",
138
+ "clean": "rimraf dist && rimraf packages/theme-chalk/dist",
139
+ "pub": "npm publish --registry=https://registry.npmjs.org/",
140
+ "deploy": "./deploy.sh",
141
+ "resolver": "resolver.sh",
142
+ "lib-pub": "lib.sh",
143
+ "prettier": "prettier --write \"packages/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
144
+ "docs:prettier": "prettier --write \"docs/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"",
145
+ "docs:dev": "pnpm run -C docs dev",
146
+ "docs:build": "pnpm run -C docs build",
147
+ "lint:lint-staged": "lint-staged"
148
+ }
149
+ }
@@ -0,0 +1,5 @@
1
+ import AdaptivePage from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TAdaptivePage = AdaptivePage
@@ -0,0 +1,85 @@
1
+ <template>
2
+ <div class="t_adaptive_page">
3
+ <div
4
+ :style="{ width: isShow('leftContent') ? `${leftWidth}px` : '0px' }"
5
+ v-if="isShow('leftContent')"
6
+ class="left_content"
7
+ >
8
+ <div class="left_tree">
9
+ <slot name="leftContent" />
10
+ </div>
11
+ </div>
12
+ <t-layout-page class="right_content" :style="pageStyle">
13
+ <t-layout-page-item class="table_search" :style="queryPageStyle" v-if="$attrs.opts">
14
+ <t-query-condition v-bind="$attrs" ref="TQueryConditionPage">
15
+ <template v-for="(_index, name) in slots" #[name]="data">
16
+ <slot :name="name" v-bind="data" />
17
+ </template>
18
+ </t-query-condition>
19
+ </t-layout-page-item>
20
+ <slot name="content" />
21
+ <t-layout-page-item
22
+ class="table_main"
23
+ :class="{ 't_table_self-filling': isTTableSelfFilling }"
24
+ :style="tablePageStyle"
25
+ >
26
+ <t-table
27
+ v-bind="{ columnSetting, name, ...$attrs }"
28
+ :isSlotToolbar="isShow('toolbar')"
29
+ :isSlotTitle="isShow('title')"
30
+ ref="TTablePage"
31
+ >
32
+ <template v-for="(_index, name) in slots" #[name]="data">
33
+ <slot :name="name" v-bind="data" />
34
+ </template>
35
+ </t-table>
36
+ </t-layout-page-item>
37
+ </t-layout-page>
38
+ <slot name="footer" />
39
+ </div>
40
+ </template>
41
+
42
+ <script setup lang="ts">
43
+ import TLayoutPage from "../../layout-page/src/index.vue"
44
+ import TLayoutPageItem from "../../layout-page-item/src/index.vue"
45
+ import TTable from "../../table/src/index.vue"
46
+ import TQueryCondition from "../../query-condition/src/index.vue"
47
+ import { getCurrentInstance, onMounted, ref, useSlots } from "vue"
48
+ import type { TAdaptivePageProps } from "./type"
49
+
50
+ defineOptions({
51
+ name: "TAdaptivePage"
52
+ })
53
+ withDefaults(defineProps<TAdaptivePageProps>(), {
54
+ leftWidth: 260,
55
+ pageStyle: () => ({}),
56
+ columnSetting: false,
57
+ name: "",
58
+ queryPageStyle: () => ({}),
59
+ tablePageStyle: () => ({}),
60
+ isTTableSelfFilling: false
61
+ })
62
+
63
+ const slots = useSlots()
64
+
65
+ const isShow = (name: string) => {
66
+ return Object.keys(slots).includes(name)
67
+ }
68
+
69
+ const instance = getCurrentInstance() as any
70
+ const TQueryConditionPage = ref<InstanceType<typeof TQueryCondition> | null>(null)
71
+ const TTablePage = ref<InstanceType<typeof TTable> | null>(null)
72
+
73
+ onMounted(() => {
74
+ const exposedObj = {
75
+ ...TQueryConditionPage.value?.$.exposed,
76
+ ...TTablePage.value?.$.exposed
77
+ }
78
+ const entries = Object.entries(exposedObj)
79
+ for (const [key, value] of entries) {
80
+ instance.exposed[key] = value
81
+ }
82
+ })
83
+
84
+ defineExpose({ ...instance.exposed, TQueryConditionPage, TTablePage })
85
+ </script>
@@ -0,0 +1,9 @@
1
+ export interface TAdaptivePageProps {
2
+ leftWidth?: number | string
3
+ pageStyle?: Record<string, string>
4
+ columnSetting?: boolean
5
+ name?: string // 表格开启columnSetting后,设置缓存数据唯一标识
6
+ queryPageStyle?: Record<string, string>
7
+ tablePageStyle?: Record<string, string>
8
+ isTTableSelfFilling?: boolean
9
+ }
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-adaptive-page.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/adaptive-page.scss"
@@ -0,0 +1,5 @@
1
+ import Button from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TButton = Button
@@ -0,0 +1,41 @@
1
+ <template>
2
+ <el-tooltip v-if="tip" :content="tip" :placement="placement" v-bind="tipProps">
3
+ <el-button v-bind="$attrs" class="t-button-tip" @click="handleClick">
4
+ <slot />
5
+ </el-button>
6
+ </el-tooltip>
7
+ <el-button v-else v-bind="$attrs" @click="handleClick">
8
+ <slot />
9
+ </el-button>
10
+ </template>
11
+
12
+ <script setup lang="ts">
13
+ import { ref } from "vue"
14
+ import type { TButtonSelfProps as TButtonProps } from "./type"
15
+
16
+ defineOptions({
17
+ name: "TButton"
18
+ })
19
+
20
+ const props = withDefaults(defineProps<TButtonProps>(), {
21
+ time: 1000,
22
+ tip: "",
23
+ placement: "top",
24
+ tipProps: () => ({}),
25
+ isDebounce: true
26
+ })
27
+
28
+ // 抛出事件
29
+ const emits = defineEmits(["click"])
30
+
31
+ const record = ref(0)
32
+
33
+ const handleClick = () => {
34
+ if (!props.isDebounce) return emits("click")
35
+ const newTime = new Date()
36
+ if (newTime.getTime() - record.value > props.time) {
37
+ emits("click")
38
+ }
39
+ record.value = newTime.getTime()
40
+ }
41
+ </script>
@@ -0,0 +1,11 @@
1
+ import type { ButtonProps } from "element-plus"
2
+ import type { Mutable } from "element-plus/es/utils"
3
+
4
+ export interface TButtonSelfProps {
5
+ time?: number
6
+ tip?: string
7
+ placement?: string
8
+ tipProps?: Record<string, any>
9
+ isDebounce?: boolean
10
+ }
11
+ export type TButtonProps = TButtonSelfProps & Partial<Mutable<ButtonProps>>
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-button.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/button.scss"
@@ -0,0 +1,5 @@
1
+ import Chart from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TChart = Chart
@@ -0,0 +1,121 @@
1
+ <template>
2
+ <div class="t-chart" v-bind="$attrs">
3
+ <div v-show="!formatEmpty" class="t-chart-container" :id="id" ref="echartRef" />
4
+ <slot v-if="formatEmpty" name="empty">
5
+ <el-empty v-bind="$attrs" :description="description" />
6
+ </slot>
7
+ <slot></slot>
8
+ </div>
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import {
13
+ onMounted,
14
+ getCurrentInstance,
15
+ ref,
16
+ watch,
17
+ nextTick,
18
+ onBeforeUnmount,
19
+ markRaw,
20
+ useAttrs,
21
+ computed
22
+ } from "vue"
23
+ import { useResizeObserver } from "@vueuse/core"
24
+ import { debounce, toLine } from "../../utils"
25
+ import type { TChartProps } from "./type"
26
+
27
+ defineOptions({
28
+ name: "TChart"
29
+ })
30
+ const { proxy } = getCurrentInstance() as any
31
+
32
+ const props = withDefaults(defineProps<TChartProps>(), {
33
+ options: () => ({}),
34
+ id: () => Math.random().toString(36).substring(2, 8),
35
+ theme: "",
36
+ isEmpty: false,
37
+ description: "暂无数据"
38
+ })
39
+
40
+ const echartRef = ref<HTMLDivElement>()
41
+ const chart = ref()
42
+ const emits = defineEmits()
43
+ const events = Object.entries(useAttrs())
44
+
45
+ // 图表初始化
46
+ const renderChart = () => {
47
+ chart.value = markRaw(proxy.$echarts.init(echartRef.value, props.theme))
48
+ setOption(props.options)
49
+ // 返回chart实例
50
+ emits("chart", chart.value)
51
+
52
+ // 监听图表事件
53
+ events.forEach(([key, value]) => {
54
+ if (key.startsWith("on") && !key.startsWith("onChart")) {
55
+ const on = toLine(key).substring(3)
56
+ chart.value.on(on, (...args: any) => emits(on, ...args))
57
+ }
58
+ })
59
+
60
+ // 监听元素变化
61
+ useResizeObserver(echartRef.value, resizeChart)
62
+ // 大小自适应
63
+ // window.addEventListener('resize', resizeChart)
64
+ }
65
+
66
+ // 重绘图表函数
67
+ const resizeChart = debounce(
68
+ () => {
69
+ chart.value?.resize()
70
+ },
71
+ 300,
72
+ true
73
+ )
74
+
75
+ // 设置图表函数
76
+ const setOption = debounce(
77
+ async data => {
78
+ if (!chart.value) return
79
+ chart.value.setOption(data, true, true)
80
+ await nextTick()
81
+ resizeChart()
82
+ },
83
+ 300,
84
+ true
85
+ )
86
+
87
+ const formatEmpty = computed(() => {
88
+ if (typeof props.isEmpty === "function") {
89
+ return props.isEmpty(props.options)
90
+ }
91
+ return props.isEmpty
92
+ })
93
+
94
+ watch(
95
+ () => props.options,
96
+ async nw => {
97
+ await nextTick()
98
+ setOption(nw)
99
+ },
100
+ { deep: true }
101
+ )
102
+
103
+ watch(
104
+ () => props.theme,
105
+ async () => {
106
+ chart.value.dispose()
107
+ renderChart()
108
+ }
109
+ )
110
+
111
+ onMounted(() => {
112
+ renderChart()
113
+ })
114
+ onBeforeUnmount(() => {
115
+ // 取消监听
116
+ // window.removeEventListener('resize', resizeChart)
117
+ // 销毁echarts实例
118
+ chart.value.dispose()
119
+ chart.value = null
120
+ })
121
+ </script>
@@ -0,0 +1,7 @@
1
+ export interface TChartProps {
2
+ options?: Record<string, any>
3
+ id?: string
4
+ theme?: string
5
+ isEmpty?: boolean | ((options: Record<string, any>) => boolean)
6
+ description?: string
7
+ }
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-chart.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/chart.scss"
@@ -0,0 +1,3 @@
1
+ import Checkbox from "./src/index.vue"
2
+
3
+ export const TCheckbox = Checkbox
@@ -0,0 +1,5 @@
1
+ export interface OptionsProps {
2
+ value: string
3
+ label: string
4
+ disabled: string
5
+ }
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <el-checkbox-group v-bind="$attrs" :size="size">
3
+ <slot>
4
+ <component
5
+ v-for="(item, index) in options"
6
+ v-bind="item"
7
+ :is="checkType"
8
+ :key="index"
9
+ :value="item[optionsProps.value]"
10
+ :border="border"
11
+ :disabled="item[optionsProps.disabled]"
12
+ >
13
+ <slot :name="item.slot" v-bind="item">
14
+ {{ item[optionsProps.label] }}
15
+ </slot>
16
+ </component>
17
+ </slot>
18
+ </el-checkbox-group>
19
+ </template>
20
+
21
+ <script setup lang="ts">
22
+ import { computed, ref } from "vue"
23
+ import type { PropType } from "vue"
24
+ import type { OptionsProps } from "./checkbox"
25
+ defineOptions({
26
+ name: "TCheckbox"
27
+ })
28
+ const checkProps = defineProps({
29
+ type: {
30
+ type: String as PropType<"check" | "button">,
31
+ validator: (value: string) => ["check", "button"].includes(value),
32
+ default: "check"
33
+ },
34
+ options: {
35
+ type: Array as any,
36
+ default: () => []
37
+ },
38
+ size: {
39
+ type: String as PropType<"large" | "default" | "small">,
40
+ validator: (value: string) => ["large", "default", "small"].includes(value),
41
+ default: "default"
42
+ },
43
+ border: {
44
+ type: Boolean,
45
+ default: false
46
+ },
47
+ props: {
48
+ type: Object,
49
+ default: () => ({})
50
+ }
51
+ })
52
+ const checkType = computed(() => {
53
+ const obj = {
54
+ check: "el-checkbox",
55
+ button: "el-checkbox-button"
56
+ }
57
+ return obj[checkProps.type] ?? "el-checkbox"
58
+ })
59
+ const optionsProps = ref<OptionsProps>({
60
+ ...{
61
+ value: "value",
62
+ label: "label",
63
+ disabled: "disabled"
64
+ },
65
+ ...checkProps.props
66
+ })
67
+ </script>
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/t-checkbox.css"
@@ -0,0 +1 @@
1
+ import "@ff-ui-plus/theme-chalk/src/checkbox.scss"
@@ -0,0 +1,5 @@
1
+ import DatePicker from "./src/index.vue"
2
+
3
+ export * from "./src/type"
4
+
5
+ export const TDatePicker = DatePicker