form-designer-xinyi 1.0.0

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 (310) hide show
  1. package/.eslintrc.js +10 -0
  2. package/.vscode/extensions.json +3 -0
  3. package/.vscode/settings.json +6 -0
  4. package/LICENSE +21 -0
  5. package/README.md +236 -0
  6. package/docs/.vitepress/config.ts +158 -0
  7. package/docs/.vitepress/theme/custom.css +38 -0
  8. package/docs/.vitepress/theme/index.ts +7 -0
  9. package/docs/.vitepress/theme/style.css +36 -0
  10. package/docs/guide/about/about.md +25 -0
  11. package/docs/guide/action/customFunctions.md +560 -0
  12. package/docs/guide/action/publicMethods.md +25 -0
  13. package/docs/guide/components/EBuilder.md +544 -0
  14. package/docs/guide/components/EDesigner.md +117 -0
  15. package/docs/guide/extensions/actionBar.md +55 -0
  16. package/docs/guide/extensions/component.md +113 -0
  17. package/docs/guide/extensions/icon.md +41 -0
  18. package/docs/guide/extensions/rightSidebar.md +57 -0
  19. package/docs/guide/start/dark-mode.md +149 -0
  20. package/docs/guide/start/i18n-cn.md +39 -0
  21. package/docs/guide/start/index.md +59 -0
  22. package/docs/guide/start/layoutGuide.md +0 -0
  23. package/docs/guide/start/quick-start.md +179 -0
  24. package/docs/guide/start/theme.md +122 -0
  25. package/docs/guide/utils/pageManager.md +97 -0
  26. package/docs/guide/utils/pluginManager.md +227 -0
  27. package/docs/index.md +41 -0
  28. package/docs/package.json +14 -0
  29. package/docs/public/dark.png +0 -0
  30. package/docs/public/favicon.ico +0 -0
  31. package/docs/public/icons/demo.css +539 -0
  32. package/docs/public/icons/demo_index.html +589 -0
  33. package/docs/public/icons/iconfont.css +379 -0
  34. package/docs/public/icons/iconfont.js +1 -0
  35. package/docs/public/icons/iconfont.json +646 -0
  36. package/docs/public/icons/iconfont.ttf +0 -0
  37. package/docs/public/icons/iconfont.woff +0 -0
  38. package/docs/public/icons/iconfont.woff2 +0 -0
  39. package/docs/public/layout.jpg +0 -0
  40. package/docs/public/logo.png +0 -0
  41. package/docs/public/theme.jpg +0 -0
  42. package/docs/updateLog.md +364 -0
  43. package/docs/vite.config.ts +18 -0
  44. package/docs//345/210/235/345/247/213/345/214/226/345/270/203/345/261/200.jpg +0 -0
  45. package/docs//350/256/276/350/256/241/345/231/250/344/273/213/347/273/215.md +21 -0
  46. package/docs//350/256/276/350/256/241/345/231/250/345/270/203/345/261/200.jpg +0 -0
  47. package/examples/README.md +18 -0
  48. package/examples/index.html +13 -0
  49. package/examples/package.json +27 -0
  50. package/examples/public/favicon.ico +0 -0
  51. package/examples/src/App.vue +5 -0
  52. package/examples/src/assets/logo.png +0 -0
  53. package/examples/src/layout/baseLayout.vue +3 -0
  54. package/examples/src/layout/components/Header/index.vue +102 -0
  55. package/examples/src/layout/components/Main/Maximize.vue +77 -0
  56. package/examples/src/layout/components/Main/index.vue +16 -0
  57. package/examples/src/layout/components/Menu/index.vue +49 -0
  58. package/examples/src/layout/index.vue +26 -0
  59. package/examples/src/main.ts +6 -0
  60. package/examples/src/router/index.ts +98 -0
  61. package/examples/src/style/reset.css +253 -0
  62. package/examples/src/style.less +44 -0
  63. package/examples/src/views/builder/basic/index.vue +182 -0
  64. package/examples/src/views/builder/disableDisplay/index.vue +153 -0
  65. package/examples/src/views/builder/disableDisplay copy/index.vue +111 -0
  66. package/examples/src/views/builder/loadData/index.vue +195 -0
  67. package/examples/src/views/builder/sum/index.vue +127 -0
  68. package/examples/src/views/designer/basic/index.vue +22 -0
  69. package/examples/src/views/designer/loadData/index.vue +186 -0
  70. package/examples/src/vite-env.d.ts +1 -0
  71. package/examples/tsconfig.json +27 -0
  72. package/examples/tsconfig.node.json +10 -0
  73. package/examples/vite.config.ts +28 -0
  74. package/package.json +44 -0
  75. package/packages/core/LICENSE +21 -0
  76. package/packages/core/components/asyncLoader/index.less +92 -0
  77. package/packages/core/components/asyncLoader/index.vue +7 -0
  78. package/packages/core/components/builder/index.ts +3 -0
  79. package/packages/core/components/builder/src/builder.vue +217 -0
  80. package/packages/core/components/builder/src/types.ts +4 -0
  81. package/packages/core/components/designer/index.ts +3 -0
  82. package/packages/core/components/designer/src/designer.vue +258 -0
  83. package/packages/core/components/designer/src/index.less +81 -0
  84. package/packages/core/components/designer/src/modules/actionBar/index.less +79 -0
  85. package/packages/core/components/designer/src/modules/actionBar/index.vue +44 -0
  86. package/packages/core/components/designer/src/modules/attributeView/attributeView.vue +104 -0
  87. package/packages/core/components/designer/src/modules/attributeView/eventView.vue +76 -0
  88. package/packages/core/components/designer/src/modules/attributeView/index.less +36 -0
  89. package/packages/core/components/designer/src/modules/attributeView/styleView.vue +103 -0
  90. package/packages/core/components/designer/src/modules/componentView/index.less +52 -0
  91. package/packages/core/components/designer/src/modules/componentView/index.vue +118 -0
  92. package/packages/core/components/designer/src/modules/editContainer/editNodeItem.vue +74 -0
  93. package/packages/core/components/designer/src/modules/editContainer/editScreenContainer.vue +142 -0
  94. package/packages/core/components/designer/src/modules/editContainer/index.less +129 -0
  95. package/packages/core/components/designer/src/modules/editContainer/index.vue +37 -0
  96. package/packages/core/components/designer/src/modules/editContainer/nodeItem.vue +91 -0
  97. package/packages/core/components/designer/src/modules/editContainer/previewJson.vue +61 -0
  98. package/packages/core/components/designer/src/modules/editContainer/previewWidgets.vue +373 -0
  99. package/packages/core/components/designer/src/modules/editContainer/toolbar.vue +248 -0
  100. package/packages/core/components/designer/src/modules/header/index.less +16 -0
  101. package/packages/core/components/designer/src/modules/header/index.vue +60 -0
  102. package/packages/core/components/designer/src/modules/outline/index.less +7 -0
  103. package/packages/core/components/designer/src/modules/outline/outline.vue +39 -0
  104. package/packages/core/components/designer/src/modules/preview/index.less +0 -0
  105. package/packages/core/components/designer/src/modules/preview/index.vue +71 -0
  106. package/packages/core/components/designer/src/modules/rightSidebar/breadcrumb.vue +30 -0
  107. package/packages/core/components/designer/src/modules/rightSidebar/index.less +75 -0
  108. package/packages/core/components/designer/src/modules/rightSidebar/index.vue +58 -0
  109. package/packages/core/components/designer/src/modules/sourceCode/index.less +7 -0
  110. package/packages/core/components/designer/src/modules/sourceCode/index.vue +34 -0
  111. package/packages/core/components/designer/src/types.ts +9 -0
  112. package/packages/core/components/icon/index.ts +2 -0
  113. package/packages/core/components/icon/src/icon.vue +15 -0
  114. package/packages/core/components/node/index.ts +2 -0
  115. package/packages/core/components/node/src/node.vue +350 -0
  116. package/packages/core/components/tree/index.ts +2 -0
  117. package/packages/core/components/tree/src/index.less +106 -0
  118. package/packages/core/components/tree/src/tree.vue +113 -0
  119. package/packages/core/components/tree/src/treeNodeItem.vue +87 -0
  120. package/packages/core/components/tree/src/treeNodes.vue +68 -0
  121. package/packages/core/extensions/EActionEditor/index.less +172 -0
  122. package/packages/core/extensions/EActionEditor/index.vue +160 -0
  123. package/packages/core/extensions/EActionEditor/src/EActionEditorItem.vue +133 -0
  124. package/packages/core/extensions/EActionEditor/src/EActionModal.vue +258 -0
  125. package/packages/core/extensions/EActionEditor/src/EArgsEditor.vue +61 -0
  126. package/packages/core/extensions/EActionEditor/src/EScriptEdit.vue +26 -0
  127. package/packages/core/extensions/EColEditor/index.less +24 -0
  128. package/packages/core/extensions/EColEditor/index.vue +65 -0
  129. package/packages/core/extensions/EInputSize/index.vue +59 -0
  130. package/packages/core/extensions/EOptionsEditor/index.vue +52 -0
  131. package/packages/core/extensions/EOptionsEditor/optionItem.vue +72 -0
  132. package/packages/core/extensions/ERuleEditor/ERuleItem.vue +137 -0
  133. package/packages/core/extensions/ERuleEditor/data.ts +24 -0
  134. package/packages/core/extensions/ERuleEditor/index.less +17 -0
  135. package/packages/core/extensions/ERuleEditor/index.vue +154 -0
  136. package/packages/core/extensions/ERuleEditor/types.ts +17 -0
  137. package/packages/core/extensions/MonacoEditor/index.ts +31 -0
  138. package/packages/core/extensions/MonacoEditor/index.vue +147 -0
  139. package/packages/core/extensions/Page/index.ts +23 -0
  140. package/packages/core/extensions/Page/index.vue +27 -0
  141. package/packages/core/extensions/index.ts +73 -0
  142. package/packages/core/index.less +27 -0
  143. package/packages/core/index.ts +35 -0
  144. package/packages/core/package.json +59 -0
  145. package/packages/core/static/icons/demo.css +539 -0
  146. package/packages/core/static/icons/demo_index.html +2281 -0
  147. package/packages/core/static/icons/iconfont.css +372 -0
  148. package/packages/core/static/icons/iconfont.js +1 -0
  149. package/packages/core/static/icons/iconfont.json +646 -0
  150. package/packages/core/static/icons/iconfont.ttf +0 -0
  151. package/packages/core/static/icons/iconfont.woff +0 -0
  152. package/packages/core/static/icons/iconfont.woff2 +0 -0
  153. package/packages/core/static/logo.png +0 -0
  154. package/packages/core/theme/var.less +175 -0
  155. package/packages/core/tsconfig.json +19 -0
  156. package/packages/core/types/epic-designer.ts +75 -0
  157. package/packages/epic-designer/.babelrc +9 -0
  158. package/packages/epic-designer/.eslintrc.cjs +76 -0
  159. package/packages/epic-designer/LICENSE +21 -0
  160. package/packages/epic-designer/README.md +239 -0
  161. package/packages/epic-designer/index.ts +13 -0
  162. package/packages/epic-designer/package.json +75 -0
  163. package/packages/epic-designer/shims-vue.d.ts +4 -0
  164. package/packages/epic-designer/tsconfig.json +19 -0
  165. package/packages/epic-designer/uno.config.ts +79 -0
  166. package/packages/script/package.json +17 -0
  167. package/packages/script/src/check-compiled.ts +22 -0
  168. package/packages/script/tsconfig.json +10 -0
  169. package/packages/ui/LICENSE +21 -0
  170. package/packages/ui/antd/button/button.vue +16 -0
  171. package/packages/ui/antd/button/index.ts +202 -0
  172. package/packages/ui/antd/card/card.ts +31 -0
  173. package/packages/ui/antd/card/index.ts +63 -0
  174. package/packages/ui/antd/cascader/cascader.vue +23 -0
  175. package/packages/ui/antd/cascader/index.ts +197 -0
  176. package/packages/ui/antd/checkbox/index.ts +99 -0
  177. package/packages/ui/antd/col/col.ts +31 -0
  178. package/packages/ui/antd/col/index.ts +22 -0
  179. package/packages/ui/antd/color-picker/index.ts +107 -0
  180. package/packages/ui/antd/date-picker/datePicker.ts +47 -0
  181. package/packages/ui/antd/date-picker/index.ts +302 -0
  182. package/packages/ui/antd/form/form.vue +118 -0
  183. package/packages/ui/antd/form/index.ts +195 -0
  184. package/packages/ui/antd/form-item/formItem.vue +15 -0
  185. package/packages/ui/antd/form-item/index.ts +11 -0
  186. package/packages/ui/antd/formLogic/actionEdit.vue +72 -0
  187. package/packages/ui/antd/formLogic/actionItem.vue +46 -0
  188. package/packages/ui/antd/formLogic/conditionEdit.vue +111 -0
  189. package/packages/ui/antd/formLogic/conditionItem.vue +150 -0
  190. package/packages/ui/antd/formLogic/drawer.vue +124 -0
  191. package/packages/ui/antd/formLogic/formLogic.vue +33 -0
  192. package/packages/ui/antd/formLogic/index.ts +11 -0
  193. package/packages/ui/antd/formLogic/types.ts +25 -0
  194. package/packages/ui/antd/index.less +33 -0
  195. package/packages/ui/antd/index.ts +323 -0
  196. package/packages/ui/antd/input/index.ts +169 -0
  197. package/packages/ui/antd/input-number/index.ts +181 -0
  198. package/packages/ui/antd/input-password/index.ts +152 -0
  199. package/packages/ui/antd/modal/index.ts +19 -0
  200. package/packages/ui/antd/modal/modal.vue +82 -0
  201. package/packages/ui/antd/radio/index.ts +105 -0
  202. package/packages/ui/antd/row/index.ts +114 -0
  203. package/packages/ui/antd/row/row.ts +31 -0
  204. package/packages/ui/antd/select/index.ts +228 -0
  205. package/packages/ui/antd/slider/index.ts +142 -0
  206. package/packages/ui/antd/switch/index.ts +141 -0
  207. package/packages/ui/antd/textarea/index.ts +162 -0
  208. package/packages/ui/antd/time-picker/index.ts +189 -0
  209. package/packages/ui/antd/upload-file/index.ts +88 -0
  210. package/packages/ui/antd/upload-file/uploadFile.ts +117 -0
  211. package/packages/ui/antd/upload-image/index.ts +69 -0
  212. package/packages/ui/antd/upload-image/uploadImage.vue +148 -0
  213. package/packages/ui/elementPlus/button/button.ts +25 -0
  214. package/packages/ui/elementPlus/button/index.ts +128 -0
  215. package/packages/ui/elementPlus/card/card.ts +36 -0
  216. package/packages/ui/elementPlus/card/index.ts +50 -0
  217. package/packages/ui/elementPlus/cascader/index.ts +216 -0
  218. package/packages/ui/elementPlus/checkbox/checkbox.ts +31 -0
  219. package/packages/ui/elementPlus/checkbox/index.ts +140 -0
  220. package/packages/ui/elementPlus/col/col.ts +31 -0
  221. package/packages/ui/elementPlus/col/index.ts +21 -0
  222. package/packages/ui/elementPlus/collapse/collapse.ts +32 -0
  223. package/packages/ui/elementPlus/collapse/index.ts +41 -0
  224. package/packages/ui/elementPlus/collapse-item/collapseItem.ts +31 -0
  225. package/packages/ui/elementPlus/collapse-item/index.ts +12 -0
  226. package/packages/ui/elementPlus/color-picker/index.ts +110 -0
  227. package/packages/ui/elementPlus/date-picker/index.ts +218 -0
  228. package/packages/ui/elementPlus/form/form.vue +99 -0
  229. package/packages/ui/elementPlus/form/index.ts +147 -0
  230. package/packages/ui/elementPlus/formItem/formItem.vue +15 -0
  231. package/packages/ui/elementPlus/formItem/index.ts +11 -0
  232. package/packages/ui/elementPlus/index.less +79 -0
  233. package/packages/ui/elementPlus/index.ts +84 -0
  234. package/packages/ui/elementPlus/input/index.ts +179 -0
  235. package/packages/ui/elementPlus/input-number/index.ts +145 -0
  236. package/packages/ui/elementPlus/modal/index.ts +18 -0
  237. package/packages/ui/elementPlus/modal/modal.ts +68 -0
  238. package/packages/ui/elementPlus/radio/index.ts +121 -0
  239. package/packages/ui/elementPlus/radio/radio.ts +32 -0
  240. package/packages/ui/elementPlus/row/index.ts +105 -0
  241. package/packages/ui/elementPlus/row/row.ts +32 -0
  242. package/packages/ui/elementPlus/select/index.ts +283 -0
  243. package/packages/ui/elementPlus/select/select.ts +31 -0
  244. package/packages/ui/elementPlus/slider/index.ts +237 -0
  245. package/packages/ui/elementPlus/switch/index.ts +159 -0
  246. package/packages/ui/elementPlus/textarea/index.ts +154 -0
  247. package/packages/ui/elementPlus/upload-file/index.ts +86 -0
  248. package/packages/ui/elementPlus/upload-file/uploadFile.ts +114 -0
  249. package/packages/ui/elementPlus/upload-image/index.ts +86 -0
  250. package/packages/ui/elementPlus/upload-image/uploadImage.ts +151 -0
  251. package/packages/ui/hooks/index.ts +1 -0
  252. package/packages/ui/hooks/logic.ts +129 -0
  253. package/packages/ui/index.ts +22 -0
  254. package/packages/ui/naiveUi/button/button.ts +25 -0
  255. package/packages/ui/naiveUi/button/index.ts +146 -0
  256. package/packages/ui/naiveUi/card/card.ts +32 -0
  257. package/packages/ui/naiveUi/card/index.ts +25 -0
  258. package/packages/ui/naiveUi/cascader/index.ts +218 -0
  259. package/packages/ui/naiveUi/checkbox/checkbox.ts +27 -0
  260. package/packages/ui/naiveUi/checkbox/index.ts +114 -0
  261. package/packages/ui/naiveUi/col/col.ts +30 -0
  262. package/packages/ui/naiveUi/col/index.ts +21 -0
  263. package/packages/ui/naiveUi/collapse/collapse.ts +31 -0
  264. package/packages/ui/naiveUi/collapse/index.ts +40 -0
  265. package/packages/ui/naiveUi/collapse-item/collapseItem.ts +31 -0
  266. package/packages/ui/naiveUi/collapse-item/index.ts +12 -0
  267. package/packages/ui/naiveUi/color-picker/index.ts +179 -0
  268. package/packages/ui/naiveUi/date-picker/index.ts +210 -0
  269. package/packages/ui/naiveUi/form/form.vue +85 -0
  270. package/packages/ui/naiveUi/form/index.ts +141 -0
  271. package/packages/ui/naiveUi/form-item/formItem.vue +15 -0
  272. package/packages/ui/naiveUi/form-item/index.ts +10 -0
  273. package/packages/ui/naiveUi/index.less +33 -0
  274. package/packages/ui/naiveUi/index.ts +80 -0
  275. package/packages/ui/naiveUi/input/index.ts +215 -0
  276. package/packages/ui/naiveUi/input-number/index.ts +141 -0
  277. package/packages/ui/naiveUi/modal/index.ts +18 -0
  278. package/packages/ui/naiveUi/modal/modal.ts +83 -0
  279. package/packages/ui/naiveUi/radio/index.ts +94 -0
  280. package/packages/ui/naiveUi/radio/radio.ts +27 -0
  281. package/packages/ui/naiveUi/row/index.ts +105 -0
  282. package/packages/ui/naiveUi/row/row.ts +31 -0
  283. package/packages/ui/naiveUi/select/index.ts +193 -0
  284. package/packages/ui/naiveUi/slider/index.ts +181 -0
  285. package/packages/ui/naiveUi/switch/index.ts +133 -0
  286. package/packages/ui/naiveUi/upload-file/index.ts +82 -0
  287. package/packages/ui/naiveUi/upload-file/uploadFile.ts +78 -0
  288. package/packages/ui/naiveUi/upload-image/index.ts +82 -0
  289. package/packages/ui/naiveUi/upload-image/uploadImage.ts +152 -0
  290. package/packages/ui/package.json +18 -0
  291. package/packages/ui/tsconfig.json +19 -0
  292. package/packages/utils/LICENSE +21 -0
  293. package/packages/utils/common/common.ts +18 -0
  294. package/packages/utils/common/component.ts +22 -0
  295. package/packages/utils/common/data.ts +682 -0
  296. package/packages/utils/common/element.ts +166 -0
  297. package/packages/utils/common/index.ts +6 -0
  298. package/packages/utils/common/string.ts +18 -0
  299. package/packages/utils/common/theme.ts +84 -0
  300. package/packages/utils/index.ts +3 -0
  301. package/packages/utils/manager/index.ts +3 -0
  302. package/packages/utils/manager/pageManager.ts +157 -0
  303. package/packages/utils/manager/pluginManager.ts +586 -0
  304. package/packages/utils/manager/revoke.ts +128 -0
  305. package/packages/utils/package.json +7 -0
  306. package/packages/utils/shareStore/index.ts +30 -0
  307. package/packages/utils/tsconfig.json +19 -0
  308. package/packages/utils/vite.config.ts +39 -0
  309. package/pnpm-workspace.yaml +5 -0
  310. package/turbo.json +20 -0
@@ -0,0 +1,113 @@
1
+ # 组件扩展
2
+
3
+ :::tip 组件扩展
4
+ `pluginManager` 提供了registerComponent方法添加组件
5
+ :::
6
+
7
+ 参考demo仓库: [https://gitee.com/kcz66/k-designer-demo](https://gitee.com/kcz66/k-designer-demo)
8
+
9
+ ## 普通组件扩展
10
+
11
+ 在src目录下新建designer-extensions 文件目录,下面是一个简单扩展示例
12
+
13
+ ## 新建 designer-extensions/test/index.vue(组件)
14
+
15
+ ```vue
16
+ <template>
17
+ <div>
18
+ 我是扩展的组件
19
+ </div>
20
+ </template>
21
+ ```
22
+
23
+ ## 新建designer-extensions/test/index.ts(组件配置文件)
24
+
25
+ [ComponentConfigModel 配置字段类型](#componentconfigmodel-类型及字段注释)
26
+
27
+ ```ts
28
+ import { type ComponentConfigModel } from 'epic-designer'
29
+
30
+ export default {
31
+ component: async () => await import('./cmp.vue'),
32
+ groupName:"自定义组件",
33
+ icon: "epic-icon-write",
34
+ defaultSchema: {
35
+ label: '测试扩展组件',
36
+ type: 'test',
37
+ componentProps: {
38
+ }
39
+ },
40
+ config: {
41
+ attribute: [
42
+ {
43
+ label: '属性1',
44
+ type: 'input',
45
+ field: 'name'
46
+ }
47
+ ]
48
+ }
49
+ } as ComponentConfigModel
50
+ ```
51
+
52
+ ## 新建designer-extensions/index.ts(扩展函数)
53
+ ```ts
54
+ import { pluginManager } from "epic-designer";
55
+ import Test from "./Test";
56
+
57
+ // 安装扩展
58
+ export function setupDesignerExtensions(): void {
59
+
60
+ // 注册组件
61
+ pluginManager.registerComponent(Test);
62
+ }
63
+ ```
64
+ ## main.ts 添加执行扩展函数
65
+
66
+ ```ts
67
+ import { setupDesignerExtensions } from "./designer-extensions";
68
+
69
+ // 执行扩展函数
70
+ setupDesignerExtensions();
71
+ ```
72
+
73
+
74
+
75
+ ## ComponentConfigModel 类型及字段注释
76
+
77
+ ```
78
+ export interface EditConstraintsModel {
79
+ // 当前组件是否固定不可拖动,可选
80
+ immovable?: boolean;
81
+ // 子节点是否固定不可拖动,只控制下一级,可选
82
+ childImmovable?: boolean;
83
+ // 表单字段是否固定 不添加随机UUID
84
+ fixedField?: boolean;
85
+ }
86
+
87
+ export interface ComponentConfigModel {
88
+ // 组件
89
+ component: any;
90
+ // 分组名称(组件分组),不设置分组时仅注册,但不会显示在组件列表中,可选
91
+ groupName?: string;
92
+ // 组件图标
93
+ icon?: string;
94
+ // 默认组件结构数据
95
+ defaultSchema: ComponentSchema;
96
+ // 设计编辑约束
97
+ editConstraints?: EditConstraintsModel;
98
+ // 配置
99
+ config: {
100
+ // 属性编辑列表
101
+ attribute?: ComponentSchema[];
102
+ // 样式编辑组件列表
103
+ style?: ComponentSchema[];
104
+ // 可触发事件
105
+ event?: EventModel[];
106
+ // 可执行函数
107
+ action?: ActionModel[];
108
+ };
109
+ // 输入表单组件v-model绑定变量名称 默认 modelValue
110
+ bindModel?: string;
111
+ }
112
+ ```
113
+
@@ -0,0 +1,41 @@
1
+ # Icon 图标
2
+
3
+ :::tip Icon 图标
4
+ `EpicDesigner` 使用Iconfont图标库,如果需要扩展图标只需参照Iconfont文档中font-class引用方式
5
+ :::
6
+
7
+ [查看Iconfont文档](https://www.iconfont.cn/help/detail?spm=a313x.help_detail.i3.28.550b3a817jMvMr&helptype=code)
8
+
9
+ ## font-class 引用
10
+
11
+ font-class是unicode使用方式的一种变种,主要是解决unicode书写不直观,语意不明确的问题。
12
+
13
+ 与unicode使用方式相比,具有如下特点:
14
+
15
+ - 兼容性良好,支持ie8+,及所有现代浏览器。
16
+ - 相比于unicode语意明确,书写更直观。可以很容易分辨这个icon是什么。
17
+ - 因为使用class来定义图标,所以当要替换图标时,只需要修改class里面的unicode引用。
18
+ - 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
19
+
20
+ 使用步骤如下:
21
+
22
+ ### 第一步:拷贝项目下面生成的fontclass代码:
23
+
24
+ ```js
25
+ //at.alicdn.com/t/font_8d5l8fzk5b87iudi.css
26
+ ```
27
+
28
+ ### 第二步:挑选相应图标并获取类名,应用组件注册配置
29
+
30
+ ```css
31
+ icon: 'icon-xxx'
32
+ ```
33
+
34
+
35
+ ## 内置Icon
36
+
37
+ > 以下为`EpicDesigner`默认内置的Icon
38
+
39
+ <iframe width="720px" height="2160px" frameborder="0" src="/icons/demo_index.html">
40
+
41
+ </iframe>
@@ -0,0 +1,57 @@
1
+ # 右侧边栏扩展
2
+
3
+ :::tip 右侧边栏扩展
4
+ `pluginManager` 提供了registerRightSidebar方法扩展右侧边栏功能模块
5
+ :::
6
+
7
+ 参考demo仓库: [https://gitee.com/kcz66/k-designer-demo](https://gitee.com/kcz66/k-designer-demo)
8
+
9
+ ## 右侧边栏扩展
10
+
11
+ 在src目录下新建designer-extensions 文件目录,下面是一个简单扩展示例
12
+
13
+ ### 新建 designer-extensions/sidebar/index.vue
14
+
15
+ ```vue
16
+ <template>
17
+ <div>
18
+ 我是一个扩展模块
19
+ </div>
20
+ </template>
21
+ ```
22
+
23
+ ### 新建designer-extensions/index.ts(扩展函数)
24
+ ```ts
25
+ import { pluginManager } from "epic-designer";
26
+
27
+ // 安装扩展
28
+ export function setupDesignerExtensions(): void {
29
+ // 添加右侧模块
30
+ pluginManager.registerRightSidebar({
31
+ id: "test_view",
32
+ title: "扩展",
33
+ component: async () => await import("./sidebar/index.vue"),
34
+ });
35
+ }
36
+ ```
37
+ ### main.ts 添加执行扩展函数
38
+
39
+ ```ts
40
+ import { setupDesignerExtensions } from "./designer-extensions";
41
+
42
+ // 执行扩展函数
43
+ setupDesignerExtensions();
44
+ ```
45
+
46
+
47
+
48
+ ## 如何修改覆盖原来的模块
49
+
50
+ 在扩展组件时,需要传入的配置id是唯一的,如果id一样则后注册组件会替换原来的组件,所以我们可以通过设置id来覆盖原来右侧边栏模块
51
+
52
+ | 模块名 | id |
53
+ | ------ | -------------- |
54
+ | 属性 | attribute_view |
55
+ | 样式 | style_view |
56
+ | 事件 | event_view |
57
+
@@ -0,0 +1,149 @@
1
+ # 暗黑模式 <span style="font-size:16px">v0.9.11</span>
2
+
3
+ :::tip 国际化
4
+ `EpicDesigner`从v0.9.11开始支持了暗黑模式!
5
+
6
+ 注:本部分文档仅切换暗黑模式主题,UI组件暗黑模式请自行参照UI文档
7
+
8
+ :::
9
+
10
+ ## 如何使用
11
+
12
+ 首先你可以创建一个开关来控制 `暗黑模式` 的 class 类名。
13
+
14
+
15
+
16
+ > 如果您只需要暗色模式,只需在 html 上添加一个名为 `dark` 的类 。
17
+
18
+ ```html
19
+ <html class="dark">
20
+ <head></head>
21
+ <body></body>
22
+ </html>
23
+ ```
24
+
25
+ ## 动态切换模式
26
+
27
+ ```tsx
28
+ import { useTheme } from 'epic-designer'
29
+ const { toggleDark } = useTheme()
30
+
31
+ // 切换主题模式
32
+ toggleDark()
33
+ ```
34
+
35
+ ![](https://epic.kcz66.com/static/dark.png)
36
+
37
+ ## 修改暗黑主题
38
+
39
+ 同自定义主题一样,直接覆盖对应的 css 变量即可
40
+
41
+ 像这样,新建一个 `styles/dark-vars.css`文件:
42
+
43
+ ```css
44
+ html.dark {
45
+ /* 自定义深色背景颜色 */
46
+ --epic-primary-color: #98f;
47
+ --epic-primary-hover-color: #9988ff26;
48
+ --epic-widget-shade-color: #9988ff18;
49
+ }
50
+ ```
51
+
52
+ 在 Epic Designer 的样式之后导入它
53
+
54
+ ```tsx
55
+ // main.ts
56
+ import "epic-designer/dist/style.css";
57
+ import './styles/dark-vars.css'
58
+ ```
59
+
60
+ ## UI组件暗黑模式
61
+
62
+ > 参照上面方案,可完成EpicDesigner 设计器暗黑模式,UI组件还需要参照UI官方文档完成暗黑模式切换
63
+
64
+ ### Element Plus
65
+
66
+ > EpicDesigner与Element Plus暗黑模式一致,只需在 html 上添加一个名为 `dark` 的类即可
67
+
68
+ [暗黑模式 | Element Plus (element-plus.org)](https://element-plus.org/zh-CN/guide/dark-mode.html)
69
+
70
+ ### Ant Design Vue
71
+
72
+ [定制主题 - Ant Design Vue (antdv.com)](https://www.antdv.com/docs/vue/customize-theme-cn#使用预设算法)
73
+
74
+ ### Naive UI
75
+
76
+ [调整主题 - Naive UI](https://www.naiveui.com/zh-CN/light/docs/customize-theme#使用暗色主题)
77
+
78
+ ## css变量
79
+
80
+ ```
81
+ // 主色
82
+ --epic-primary-color: #3e8bf2;
83
+
84
+ // hover颜色
85
+ --epic-primary-hover-color: rgba(62, 139, 242, 0.08);
86
+
87
+ // 设计器背景色
88
+ --epic-designer-color: #fafafc;
89
+
90
+ // 设计器点颜色
91
+ --epic-designer-dot-color: #373739;
92
+
93
+ // 画布背景
94
+ --epic-edit-range-color: #fff;
95
+
96
+ // 属性视图背景色
97
+ --epic-view-color: #fff;
98
+
99
+ // 拖拽区域背景色
100
+ --epic-edit-color: #ccc;
101
+
102
+ // 活动视图切换器背景色
103
+ --epic-action-bar-color: #fff;
104
+
105
+ // 顶部颜色
106
+ --epic-header-color: white;
107
+
108
+ // 动作栏 hover
109
+ --epic-action-hover-color: #f8f8f8;
110
+
111
+ // 窗口部件 hover
112
+ --epic-widget-hover-color: #f8f8f8;
113
+
114
+ // 窗口部件遮罩颜色
115
+ --epic-widget-shade-color: rgba(62, 139, 242, 0.06);
116
+
117
+ // 事件项背景色
118
+ --epic-event-item-color: #f8f8f8;
119
+
120
+ // 阴影颜色
121
+ --epic-shadow-color: #0000003d;
122
+
123
+ // 主要文本颜色
124
+ --epic-text-main: #000000de;
125
+
126
+ // 二级文本颜色(介于主要文本和辅助文本之间)
127
+ --epic-text-secondary: #00000099;
128
+
129
+ // 辅助文本颜色(更浅)
130
+ --epic-text-helper: #00000066;
131
+
132
+ // 禁用文本颜色
133
+ --epic-text-disabled: #00000042;
134
+
135
+ // 边框颜色
136
+ --epic-border-color: #d9d9d9;
137
+
138
+ // 组件tabs颜色
139
+ --epic-compoent-tabs-color: #f8f8f8;
140
+
141
+ // 组件hover颜色
142
+ --epic-compoent-hover-color: rgba(62, 139, 242, 0.06);
143
+
144
+ // 字体大小
145
+ --epic-text-sm: 12px;
146
+ --epic-text-md: 14px;
147
+ --epic-text-lg: 16px;
148
+ ```
149
+
@@ -0,0 +1,39 @@
1
+ # 国际化
2
+
3
+ :::tip 国际化
4
+ `EpicDesigner` 目前的默认是ui的默认语言,如果需要调整ui使用其他语言,可以参考下面的方案。
5
+ :::
6
+
7
+ ## Element Plus
8
+
9
+ 先参考官方文档的国际化
10
+
11
+ [国际化 | Element Plus (element-plus.org)](https://element-plus.org/zh-CN/guide/i18n.html#国际化)
12
+
13
+ 完成UI文档国际化基础上,添加`provideGlobalConfig`函数,完成EpicDesigner内部国际化
14
+
15
+ ```tsx
16
+ import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
17
+ import { provideGlobalConfig } from "epic-designer/dist/ui/elementPlus";
18
+ provideGlobalConfig({ locale: zhCn });
19
+ ```
20
+
21
+ ## Ant Design Vue
22
+
23
+ 先参考官方文档的国际化
24
+
25
+ [国际化 - Ant Design Vue (antdv.com)](https://www.antdv.com/docs/vue/i18n-cn)
26
+
27
+ 完成UI文档国际化基础上,添加`setDateLocale`函数,完成EpicDesigner内部国际化
28
+
29
+ ```tsx
30
+ import { setDateLocale } from "epic-designer/dist/ui/antd";
31
+ setDateLocale('zh-cn')
32
+ ```
33
+
34
+ ## Naive UI
35
+
36
+ 直接参考官方文档的国际化
37
+
38
+ [全局化配置 Config Provider - Naive UI](https://www.naiveui.com/zh-CN/os-theme/components/config-provider#language.vue)
39
+
@@ -0,0 +1,59 @@
1
+ # 简介
2
+
3
+ :::tip EpicDesigner 设计器
4
+ `EpicDesigner`是一个功能强大、开箱即用的拖拽式低代码设计器。它基于 Vue3 开发,兼容多套 UI 组件库,除了基础的页面设计功能,EDesigner 还提供了强大的扩展功能,可以让开发者根据自己的需求自由扩展和定制组件。此外,EDesigner 使用 JSON 配置来生成页面,可帮助开发者快速生成页面,提高开发效率。它提供了两个重要组件:`EDesigner ` 设计器和 `EBuilder ` 生成器。
5
+ :::
6
+
7
+ #### EDesigner 设计器
8
+
9
+ `EDesigner ` 是一个可视化设计器组件,用户可以通过拖拽组件的方式快速生成 JSON 配置。它提供了丰富的组件库和配置项,用户可以根据需要选择合适的组件并配置相应的属性、事件和动作。设计器还提供了实时预览功能,用户可以随时查看所设计页面的效果。最终,用户可以将 JSON 配置导出,用于页面的生成和修改。
10
+
11
+ #### EBuilder 生成器
12
+
13
+ `EBuilder ` 是一个页面构建组件,它可以将设计器生成的 JSON 配置构建成页面,完成组件的渲染、事件绑定和数据回显等操作。
14
+
15
+
16
+
17
+ ## 最新版本
18
+
19
+ [![](https://img.shields.io/npm/v/epic-designer.svg?style=flat-square)](https://www.npmjs.com/package/epic-designer)
20
+
21
+
22
+
23
+ 📦github仓库:[https://github.com/Kchengz/epic-designer](https://github.com/Kchengz/epic-designer)
24
+
25
+ 📦gitee仓库:[https://gitee.com/kcz66/epic-designer](https://gitee.com/kcz66/epic-designer)
26
+
27
+ 📖文档地址:[https://docs.epicjs.cn](https://docs.epicjs.cn)
28
+
29
+ 💎项目预览地址:
30
+
31
+ - ElementPlus:[https://epic.kcz66.com/element-plus/basic](https://epic.kcz66.com/element-plus/basic?maximize=1)
32
+ - AntDesignVue:[https://epic.kcz66.com/ant-designe-vue/basic](https://epic.kcz66.com/ant-designe-vue/basic?maximize=1)
33
+ - NaiveUi:[https://epic.kcz66.com/naive-ui/basic](https://epic.kcz66.com/naive-ui/basic?maximize=1)
34
+
35
+ ## 特性
36
+
37
+ - 可视化配置页面
38
+ - 提供预览、保存、生成 json、生成可执行代码等操作
39
+ - 支持表单验证
40
+ - 面板自定义
41
+ - 自定义组件扩展
42
+ - 组件属性自定义配置
43
+ - 组件样式配置
44
+ - 组件事件动作配置
45
+ - 布局嵌套使用及布局组件扩展
46
+
47
+ ## 技术栈
48
+
49
+ | 图标 | 名称 | 版本 |
50
+ | ------------------------------------------------------------------------- | ---------- | ----- |
51
+ | [![](https://skillicons.dev/icons?i=vue)](https://cn.vuejs.org/) | Vue | 3.2.x |
52
+ | [![](https://skillicons.dev/icons?i=ts)](https://www.typescriptlang.org/) | Typescript | 5.0.x |
53
+ | [![](https://skillicons.dev/icons?i=vite)](https://cn.vitejs.dev/) | Vite | 3.2.x |
54
+
55
+ 更多请查看 **package.json**
56
+
57
+ ## 浏览器支持
58
+
59
+ 开发和测试平台均在 Google 和最新版 EDGE 上完成,其它浏览器请自行测试。如果存在兼容问题可在 gitee 或 github 提交 Issue。
File without changes
@@ -0,0 +1,179 @@
1
+ # 快速上手
2
+
3
+ ## 安装 epic-designer
4
+
5
+ ```bash
6
+ npm i epic-designer
7
+ ```
8
+
9
+ epic-designer 目标是支持多 UI 兼容,目前支持以下 UI
10
+
11
+ - element-plus
12
+ - ant-design-vue
13
+ - naive-ui
14
+
15
+
16
+ ## 选择 UI 组件库
17
+
18
+ ### 选择 element-plus
19
+
20
+ 安装ui框架依赖
21
+
22
+ ```bash
23
+ npm i element-plus
24
+ ```
25
+
26
+ main.ts 或者 main.js 引入注册组件
27
+
28
+ ```javascript
29
+ // 引入epic-designer样式
30
+ import "epic-designer/dist/style.css";
31
+
32
+ // 引入Element plus样式
33
+ import "element-plus/dist/index.css";
34
+
35
+ import { setupElementPlus } from "epic-designer/dist/ui/elementPlus";
36
+ // 注册Element UI
37
+ setupElementPlus();
38
+ ```
39
+
40
+ ### 选择 ant-design-vue v4.x版本(antd推荐使用v4.x版本)
41
+
42
+ 安装ui框架依赖
43
+
44
+ ```bash
45
+ npm i ant-design-vue
46
+ ```
47
+
48
+ main.ts 或者 main.js 引入注册组件
49
+
50
+ ```javascript
51
+ // 引入epic-designer样式
52
+ import "epic-designer/dist/style.css";
53
+
54
+ // 引入antd UI 重置样式
55
+ import "ant-design-vue/dist/reset.css";
56
+
57
+ import { setupAntd } from "epic-designer/dist/ui/antd";
58
+ // 使用Antd UI
59
+ setupAntd();
60
+ ```
61
+
62
+ ### ant-design-vue v3.x版本需要改成下面方式
63
+
64
+ 为了减少维护精力,后续开发测试主要以 v4.x版本,不再对v3.x版本进行测试,建议升级ant-design-vue到v4.x最新版本
65
+
66
+ ```javascript
67
+ // 引入epic-designer样式
68
+ import "epic-designer/dist/style.css";
69
+
70
+ // 引入antd UI样式
71
+ import "ant-design-vue/dist/antd.css";
72
+
73
+ import { setupAntd } from "epic-designer/dist/ui/antd";
74
+ // 使用Antd UI
75
+ setupAntd();
76
+ ```
77
+
78
+ ### 选择 naive-ui
79
+
80
+ 安装ui框架依赖
81
+
82
+ ```bash
83
+ npm i -D naive-ui
84
+ ```
85
+
86
+ main.ts 或者 main.js 引入注册组件
87
+
88
+ ```javascript
89
+ // 引入epic-designer样式
90
+ import "epic-designer/dist/style.css";
91
+
92
+ import { setupNaiveUi } from "epic-designer/dist/ui/naiveUi";
93
+ // 注册Naive Ui
94
+ setupNaiveUi();
95
+ ```
96
+
97
+ ## EDesigner(设计器) 基础用法
98
+
99
+ ```vue
100
+ <template>
101
+ <div class="h-full">
102
+ <EDesigner />
103
+ </div>
104
+ </template>
105
+ <script setup lang="ts">
106
+ import { EDesigner } from "epic-designer";
107
+ </script>
108
+ <style>
109
+ .h-full {
110
+ height: 100vh;
111
+ }
112
+ </style>
113
+ ```
114
+
115
+ ## EBuilder(生成器) 基础用法
116
+
117
+ ```vue
118
+ <template>
119
+ <div>
120
+ <EBuilder :pageSchema="pageSchema" />
121
+ </div>
122
+ </template>
123
+ <script setup>
124
+ import { EBuilder } from "epic-designer";
125
+
126
+ const pageSchema = {
127
+ schemas: [
128
+ {
129
+ type: "page",
130
+ id: "root",
131
+ children: [
132
+ {
133
+ label: "输入框",
134
+ type: "input",
135
+ field: "input",
136
+ icon: "epic-icon-write",
137
+ input: true,
138
+ componentProps: {
139
+ defaultValue: "",
140
+ placeholder: "请输入",
141
+ size: "default",
142
+ type: "text",
143
+ },
144
+ id: "gbm1xhrrj5s00",
145
+ },
146
+ ],
147
+ componentProps: {
148
+ style: {
149
+ padding: "16px",
150
+ },
151
+ },
152
+ },
153
+ ],
154
+ };
155
+ </script>
156
+ ```
157
+
158
+ ## monaco-editor资源加载问题
159
+
160
+ vite项目安装使用vite-plugin-monaco-editor插件加载monaco-editor依赖资源
161
+
162
+ ```bash
163
+ npm i -D vite-plugin-monaco-editor
164
+ ```
165
+
166
+ 在vite.config.ts中添加
167
+
168
+ ```typescript
169
+ import monacoEditorPlugin from 'vite-plugin-monaco-editor'
170
+
171
+ export default defineConfig({
172
+ plugins: [
173
+ vue(),
174
+ monacoEditorPlugin({
175
+ languageWorkers:['editorWorkerService', 'css', 'html', 'json', 'typescript']
176
+ })
177
+ ]
178
+ });
179
+ ```