@cicctencent/formily 0.0.0-stage → 0.0.1

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 (308) hide show
  1. package/.eslintrc.js +40 -0
  2. package/.prettierrc.js +28 -0
  3. package/.vscode/launch.json +23 -0
  4. package/CHANGELOG.md +8 -0
  5. package/README.md +22 -2
  6. package/babel.config.js +3 -0
  7. package/build/build.js +96 -0
  8. package/build/rollup.config.bundle.js +63 -0
  9. package/build/update.version.js +35 -0
  10. package/dist/index.css +2516 -0
  11. package/dist/index.js +8377 -0
  12. package/dist/schema-field/index.css +2466 -0
  13. package/dist/schema-field/index.js +8213 -0
  14. package/dist/transform/index.js +551 -0
  15. package/dist/validate/index.js +1104 -0
  16. package/dist/vue-form/index.css +2516 -0
  17. package/dist/vue-form/index.js +8359 -0
  18. package/docs/.vuepress/client.ts +15 -0
  19. package/docs/.vuepress/components/code-preview.vue +203 -0
  20. package/docs/.vuepress/components/highlight.ts +53 -0
  21. package/docs/.vuepress/config.ts +39 -0
  22. package/docs/.vuepress/util.ts +7 -0
  23. package/docs/README.md +30 -0
  24. package/docs/components/anyOf.md +26 -0
  25. package/docs/components/array-cards.md +12 -0
  26. package/docs/components/array-collapse.md +12 -0
  27. package/docs/components/array-items.md +12 -0
  28. package/docs/components/array-table.md +12 -0
  29. package/docs/components/array-tabs.md +16 -0
  30. package/docs/components/cascader.md +12 -0
  31. package/docs/components/checkbox.md +12 -0
  32. package/docs/components/event.md +27 -0
  33. package/docs/components/hotArea.md +25 -0
  34. package/docs/components/index.md +4 -0
  35. package/docs/components/input.md +30 -0
  36. package/docs/components/layout-group.md +19 -0
  37. package/docs/components/link.md +22 -0
  38. package/docs/components/oneOf.md +8 -0
  39. package/docs/components/radio.md +12 -0
  40. package/docs/components/rich-editor.md +21 -0
  41. package/docs/components/select.md +34 -0
  42. package/docs/components/space.md +11 -0
  43. package/docs/components/switch.md +20 -0
  44. package/docs/components/text.md +21 -0
  45. package/docs/components/time-picker.md +11 -0
  46. package/docs/components/transfer.md +14 -0
  47. package/docs/components/upload-button.md +28 -0
  48. package/docs/demos/any-of/index.vue +66 -0
  49. package/docs/demos/array-cards/index.vue +105 -0
  50. package/docs/demos/array-collapse/index.vue +155 -0
  51. package/docs/demos/array-items/index.vue +171 -0
  52. package/docs/demos/array-table/index.vue +115 -0
  53. package/docs/demos/array-tabs/index.vue +56 -0
  54. package/docs/demos/cascader/index.vue +297 -0
  55. package/docs/demos/checkbox/index.vue +39 -0
  56. package/docs/demos/event/index.vue +436 -0
  57. package/docs/demos/hotArea/index.vue +240 -0
  58. package/docs/demos/index.vue +36 -0
  59. package/docs/demos/input/index.vue +46 -0
  60. package/docs/demos/layout-group/index.vue +51 -0
  61. package/docs/demos/link/index.vue +32 -0
  62. package/docs/demos/radio/index.vue +36 -0
  63. package/docs/demos/rich-editor/index.vue +22 -0
  64. package/docs/demos/select/index.vue +76 -0
  65. package/docs/demos/space/index.vue +93 -0
  66. package/docs/demos/switch/index.vue +31 -0
  67. package/docs/demos/text/index.vue +38 -0
  68. package/docs/demos/time-picker/index.vue +39 -0
  69. package/docs/demos/transfer/index.vue +26 -0
  70. package/docs/demos/upload-button/index.vue +27 -0
  71. package/docs/demos/x-data/add-button-title.vue +101 -0
  72. package/docs/demos/x-data/send-message.vue +33 -0
  73. package/docs/demos/x-reactions/any-of.vue +40 -0
  74. package/docs/demos/x-reactions/x-reactions.vue +39 -0
  75. package/docs/guide/component-extend.md +23 -0
  76. package/docs/guide/extra-bury-report.md +64 -0
  77. package/docs/guide/schema.md +22 -0
  78. package/docs/guide/x-data.md +41 -0
  79. package/docs/guide/x-reactions.md +20 -0
  80. package/example/.browserslistrc +4 -0
  81. package/example/.eslintrc.js +20 -0
  82. package/example/README.md +24 -0
  83. package/example/index.html +15 -0
  84. package/example/jest.config.js +26 -0
  85. package/example/package.json +50 -0
  86. package/example/public/favicon.ico +0 -0
  87. package/example/public/index.html +17 -0
  88. package/example/src/App.vue +25 -0
  89. package/example/src/assets/logo.png +0 -0
  90. package/example/src/components/HelloWorld.vue +148 -0
  91. package/example/src/components/group/index.vue +16 -0
  92. package/example/src/components/uploadBtn/index.vue +44 -0
  93. package/example/src/components/uploadBtn/upload-icon.svg +6 -0
  94. package/example/src/layout/component/Aside.vue +39 -0
  95. package/example/src/layout/component/Main.vue +9 -0
  96. package/example/src/layout/index.vue +15 -0
  97. package/example/src/main.ts +17 -0
  98. package/example/src/router/index.ts +99 -0
  99. package/example/src/shims-vue.d.ts +6 -0
  100. package/example/src/store/index.ts +9 -0
  101. package/example/src/views/demo/any-of/data.ts +38 -0
  102. package/example/src/views/demo/any-of/index.vue +35 -0
  103. package/example/src/views/demo/array-cards/data.ts +65 -0
  104. package/example/src/views/demo/array-cards/index.vue +33 -0
  105. package/example/src/views/demo/array-items/data.ts +29 -0
  106. package/example/src/views/demo/array-items/index.vue +33 -0
  107. package/example/src/views/demo/cloud-button/data.ts +14 -0
  108. package/example/src/views/demo/cloud-button/index.vue +22 -0
  109. package/example/src/views/demo/color-group/data.ts +15 -0
  110. package/example/src/views/demo/color-group/index.vue +22 -0
  111. package/example/src/views/demo/color-picker/data.ts +21 -0
  112. package/example/src/views/demo/color-picker/index.vue +33 -0
  113. package/example/src/views/demo/datatime/data.ts +62 -0
  114. package/example/src/views/demo/datatime/index.vue +22 -0
  115. package/example/src/views/demo/event/data.ts +184 -0
  116. package/example/src/views/demo/event/index.vue +33 -0
  117. package/example/src/views/demo/hot-area/data.ts +196 -0
  118. package/example/src/views/demo/hot-area/index.vue +33 -0
  119. package/example/src/views/demo/input/data.ts +39 -0
  120. package/example/src/views/demo/input/index.vue +33 -0
  121. package/example/src/views/demo/link/data.ts +23 -0
  122. package/example/src/views/demo/link/index.vue +22 -0
  123. package/example/src/views/demo/one-of/data.ts +139 -0
  124. package/example/src/views/demo/one-of/index.vue +33 -0
  125. package/example/src/views/demo/rich-editor/data.ts +12 -0
  126. package/example/src/views/demo/rich-editor/index.vue +24 -0
  127. package/example/src/views/demo/select/data.ts +38 -0
  128. package/example/src/views/demo/select/index.vue +33 -0
  129. package/example/src/views/demo/upload-button/data1.ts +11 -0
  130. package/example/src/views/demo/upload-button/data2.ts +12 -0
  131. package/example/src/views/demo/upload-button/index.vue +42 -0
  132. package/example/tsconfig.json +32 -0
  133. package/example/vite.config.ts +12 -0
  134. package/jest.config.js +4 -0
  135. package/package.json +92 -4
  136. package/src/components/__builtins__/configs/index.ts +1 -0
  137. package/src/components/__builtins__/index.ts +2 -0
  138. package/src/components/__builtins__/shared/create-context.ts +54 -0
  139. package/src/components/__builtins__/shared/index.ts +7 -0
  140. package/src/components/__builtins__/shared/loading.ts +20 -0
  141. package/src/components/__builtins__/shared/portal.ts +43 -0
  142. package/src/components/__builtins__/shared/resolve-component.ts +22 -0
  143. package/src/components/__builtins__/shared/transform-component.ts +33 -0
  144. package/src/components/__builtins__/shared/types.ts +8 -0
  145. package/src/components/__builtins__/shared/utils.ts +35 -0
  146. package/src/components/__builtins__/styles/common.scss +22 -0
  147. package/src/components/__builtins__/styles/element-plus.scss +1094 -0
  148. package/src/components/any-of/index.ts +20 -0
  149. package/src/components/array-base/index.ts +413 -0
  150. package/src/components/array-base/style.scss +53 -0
  151. package/src/components/array-base/style.ts +2 -0
  152. package/src/components/array-cards/index.ts +253 -0
  153. package/src/components/array-cards/style.scss +33 -0
  154. package/src/components/array-cards/style.ts +7 -0
  155. package/src/components/array-collapse/index.ts +381 -0
  156. package/src/components/array-collapse/style.scss +38 -0
  157. package/src/components/array-collapse/style.ts +10 -0
  158. package/src/components/array-items/index.ts +213 -0
  159. package/src/components/array-items/style.scss +82 -0
  160. package/src/components/array-items/style.ts +4 -0
  161. package/src/components/array-table/index.ts +567 -0
  162. package/src/components/array-table/style.scss +84 -0
  163. package/src/components/array-table/style.ts +11 -0
  164. package/src/components/array-tabs/index.ts +141 -0
  165. package/src/components/array-tabs/style.scss +16 -0
  166. package/src/components/array-tabs/style.ts +5 -0
  167. package/src/components/base/AnyOf/index.ts +155 -0
  168. package/src/components/base/AnyOf/index.vue +111 -0
  169. package/src/components/base/CloudButton/index.ts +46 -0
  170. package/src/components/base/CloudButton/index.vue +128 -0
  171. package/src/components/base/ColorGroup/index.ts +57 -0
  172. package/src/components/base/ColorGroup/index.vue +30 -0
  173. package/src/components/base/ColorPicker/index.ts +45 -0
  174. package/src/components/base/ColorPicker/index.vue +50 -0
  175. package/src/components/base/Container/index.vue +39 -0
  176. package/src/components/base/HotArea/index.ts +698 -0
  177. package/src/components/base/HotArea/index.vue +565 -0
  178. package/src/components/base/HotArea/type.ts +18 -0
  179. package/src/components/base/Input/index.vue +150 -0
  180. package/src/components/base/LayoutGroup/index.vue +40 -0
  181. package/src/components/base/Link/index.vue +43 -0
  182. package/src/components/base/Middleware/index.ts +235 -0
  183. package/src/components/base/Middleware/index.vue +169 -0
  184. package/src/components/base/OneOf/index.ts +105 -0
  185. package/src/components/base/OneOf/index.vue +85 -0
  186. package/src/components/base/RichEditor/index.ts +13 -0
  187. package/src/components/base/RichEditor/index.vue +120 -0
  188. package/src/components/base/RichEditor/options.ts +24 -0
  189. package/src/components/base/Select/index.ts +106 -0
  190. package/src/components/base/Select/index.vue +161 -0
  191. package/src/components/base/Switch/index.vue +42 -0
  192. package/src/components/base/Text/index.vue +47 -0
  193. package/src/components/base/event/index.ts +226 -0
  194. package/src/components/base/event/index.vue +356 -0
  195. package/src/components/cascader/index.ts +48 -0
  196. package/src/components/cascader/style.ts +5 -0
  197. package/src/components/checkbox/index.ts +166 -0
  198. package/src/components/checkbox/style.ts +5 -0
  199. package/src/components/cloud-button/index.ts +21 -0
  200. package/src/components/color-group/index.ts +18 -0
  201. package/src/components/color-picker/index.ts +18 -0
  202. package/src/components/container/index.ts +18 -0
  203. package/src/components/data-time/index.ts +24 -0
  204. package/src/components/date-picker/index.ts +51 -0
  205. package/src/components/date-picker/style.ts +4 -0
  206. package/src/components/editable/index.ts +261 -0
  207. package/src/components/editable/style.scss +55 -0
  208. package/src/components/editable/style.ts +5 -0
  209. package/src/components/el-form-item/index.ts +21 -0
  210. package/src/components/el-form-item/style.ts +3 -0
  211. package/src/components/event/index.ts +16 -0
  212. package/src/components/form/index.ts +94 -0
  213. package/src/components/form/style.scss +0 -0
  214. package/src/components/form/style.ts +3 -0
  215. package/src/components/form-button-group/index.ts +74 -0
  216. package/src/components/form-button-group/style.scss +0 -0
  217. package/src/components/form-button-group/style.ts +4 -0
  218. package/src/components/form-collapse/index.ts +215 -0
  219. package/src/components/form-collapse/style.scss +6 -0
  220. package/src/components/form-collapse/style.ts +4 -0
  221. package/src/components/form-dialog/index.ts +433 -0
  222. package/src/components/form-dialog/style.ts +4 -0
  223. package/src/components/form-drawer/index.ts +424 -0
  224. package/src/components/form-drawer/style.scss +21 -0
  225. package/src/components/form-drawer/style.ts +4 -0
  226. package/src/components/form-grid/index.ts +181 -0
  227. package/src/components/form-grid/style.scss +5 -0
  228. package/src/components/form-grid/style.ts +1 -0
  229. package/src/components/form-item/animation.scss +72 -0
  230. package/src/components/form-item/grid.scss +171 -0
  231. package/src/components/form-item/index.ts +642 -0
  232. package/src/components/form-item/style.scss +521 -0
  233. package/src/components/form-item/style.ts +2 -0
  234. package/src/components/form-item/var.scss +17 -0
  235. package/src/components/form-layout/index.ts +161 -0
  236. package/src/components/form-layout/style.scss +6 -0
  237. package/src/components/form-layout/style.ts +1 -0
  238. package/src/components/form-layout/useResponsiveFormLayout.ts +118 -0
  239. package/src/components/form-step/index.ts +210 -0
  240. package/src/components/form-step/style.ts +2 -0
  241. package/src/components/form-tab/index.ts +172 -0
  242. package/src/components/form-tab/style.scss +6 -0
  243. package/src/components/form-tab/style.ts +4 -0
  244. package/src/components/hot-area/index.ts +20 -0
  245. package/src/components/index.ts +49 -0
  246. package/src/components/input/index.ts +35 -0
  247. package/src/components/input/style.ts +4 -0
  248. package/src/components/input-number/index.ts +36 -0
  249. package/src/components/input-number/style.ts +3 -0
  250. package/src/components/layout-group/index.ts +18 -0
  251. package/src/components/link/index.ts +18 -0
  252. package/src/components/middleware/index.ts +21 -0
  253. package/src/components/one-of/index.ts +20 -0
  254. package/src/components/placeholder-input/index.ts +21 -0
  255. package/src/components/placeholder-input/index.vue +87 -0
  256. package/src/components/preview-text/index.ts +303 -0
  257. package/src/components/preview-text/style.ts +9 -0
  258. package/src/components/radio/index.ts +109 -0
  259. package/src/components/radio/style.ts +3 -0
  260. package/src/components/reset/index.ts +52 -0
  261. package/src/components/reset/style.ts +1 -0
  262. package/src/components/rich-editor/index.ts +18 -0
  263. package/src/components/row/index.ts +20 -0
  264. package/src/components/row/index.vue +53 -0
  265. package/src/components/select/index.ts +19 -0
  266. package/src/components/select/style.ts +5 -0
  267. package/src/components/space/index.ts +98 -0
  268. package/src/components/space/style.scss +24 -0
  269. package/src/components/space/style.ts +1 -0
  270. package/src/components/submit/index.ts +59 -0
  271. package/src/components/submit/style.ts +1 -0
  272. package/src/components/switch/index.ts +9 -0
  273. package/src/components/switch/style.ts +1 -0
  274. package/src/components/text/index.ts +21 -0
  275. package/src/components/time-picker/index.ts +21 -0
  276. package/src/components/time-picker/style.ts +4 -0
  277. package/src/components/transfer/index.ts +12 -0
  278. package/src/components/transfer/style.ts +1 -0
  279. package/src/components/upload/index.ts +136 -0
  280. package/src/components/upload/style.ts +2 -0
  281. package/src/components/upload-button/index.ts +21 -0
  282. package/src/components/upload-button/index.vue +199 -0
  283. package/src/createScemaField.ts +14 -0
  284. package/src/index.ts +41 -0
  285. package/src/schema-field/index.ts +11 -0
  286. package/src/scope.ts +29 -0
  287. package/src/transform/core.ts +404 -0
  288. package/src/transform/index.ts +11 -0
  289. package/src/transform/transform.ts +59 -0
  290. package/src/transform/utils/constant.ts +79 -0
  291. package/src/transform/utils/func.ts +145 -0
  292. package/src/typings/common.ts +37 -0
  293. package/src/typings/vue-shim.d.ts +7 -0
  294. package/src/typings/vue-test-utils.d.ts +11 -0
  295. package/src/utils/anyof_utils.ts +95 -0
  296. package/src/utils/common.ts +15 -0
  297. package/src/validate/index.ts +648 -0
  298. package/src/validate/utils/constant.ts +2 -0
  299. package/src/vue-form/index.ts +18 -0
  300. package/src/vue-form/index.vue +106 -0
  301. package/src/vue-form/useForm.ts +112 -0
  302. package/tests/data/anyof.ts +40 -0
  303. package/tests/data/image.ts +472 -0
  304. package/tests/fixtures/validate.ts +63 -0
  305. package/tests/unit/transform.spec.ts +253 -0
  306. package/tests/unit/utils.spec.ts +10 -0
  307. package/tests/unit/validate.spec.ts +256 -0
  308. package/tsconfig.json +23 -0
@@ -0,0 +1,15 @@
1
+ import { defineClientConfig } from "@vuepress/client";
2
+ import CodePreview from "./components/code-preview.vue";
3
+ import ElementPlus from "@jt/jtui";
4
+ import "@jt/jtui/dist/index.css";
5
+ import Formily from '../../dist/index'
6
+ import '../../dist/index.css'
7
+ export default defineClientConfig({
8
+ enhance({ app, router, siteData }) {
9
+ app.use(ElementPlus);
10
+ app.component("code-preview", CodePreview);
11
+ app.use(Formily);
12
+ },
13
+ setup() {},
14
+ rootComponents: [],
15
+ });
@@ -0,0 +1,203 @@
1
+ <template>
2
+ <section class="code-preview">
3
+ <div class="code-preview-demo">
4
+ <template v-if="demoPath && demo">
5
+ <component :is="demo"/>
6
+ </template>
7
+ <template v-else>
8
+ <slot name="demo"/>
9
+ </template>
10
+ </div>
11
+ <div class="code-preview-actions">
12
+ <div>
13
+ <svg
14
+ v-if="copied"
15
+ class="code-preview-actions__icon"
16
+ style="fill: green"
17
+ xmlns="http://www.w3.org/2000/svg"
18
+ viewBox="0 0 24 24"
19
+ width="24"
20
+ height="24"
21
+ >
22
+ <path fill="none" d="M0 0h24v24H0z" />
23
+ <path d="M10 15.172l9.192-9.193 1.415 1.414L10 18l-6.364-6.364 1.414-1.414z"/>
24
+ </svg>
25
+
26
+ <svg
27
+ v-else
28
+ class="code-preview-actions__icon"
29
+ xmlns="http://www.w3.org/2000/svg"
30
+ viewBox="0 0 24 24"
31
+ width="24"
32
+ height="24"
33
+ @click="handleCopy"
34
+ >
35
+ <path fill="none" d="M0 0h24v24H0z" />
36
+ <path
37
+ d="M7 6V3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1h-3v3c0 .552-.45 1-1.007 1H4.007A1.001 1.001 0 0 1 3 21l.003-14c0-.552.45-1 1.007-1H7zM5.003 8L5 20h10V8H5.003zM9 6h8v10h2V4H9v2z"
38
+ />
39
+ </svg>
40
+
41
+ <svg
42
+ class="code-preview-actions__icon"
43
+ xmlns="http://www.w3.org/2000/svg"
44
+ viewBox="0 0 24 24"
45
+ width="24"
46
+ height="24"
47
+ @click="handleCollapse"
48
+ >
49
+ <path fill="none" d="M0 0h24v24H0z" />
50
+ <path
51
+ d="M24 12l-5.657 5.657-1.414-1.414L21.172 12l-4.243-4.243 1.414-1.414L24 12zM2.828 12l4.243 4.243-1.414 1.414L0 12l5.657-5.657L7.07 7.757 2.828 12zm6.96 9H7.66l6.552-18h2.128L9.788 21z"
52
+ />
53
+ </svg>
54
+ </div>
55
+ </div>
56
+ <div v-show="!innerCollapsed" class="code-preview-source">
57
+ <div v-html="highlightCode" class="language-vue extra-class" />
58
+ </div>
59
+ </section>
60
+ </template>
61
+
62
+ <script lang="ts" setup>
63
+ // @ts-ignore
64
+ import { ref, onMounted, computed } from 'vue';
65
+ import highlight from './highlight';
66
+ const demoModules = import.meta.glob('../../demos/**/*.vue')
67
+ const rawModules = import.meta.glob('../../demos/**/*.vue', {
68
+ as: 'raw',
69
+ });
70
+
71
+ const props = defineProps({
72
+ code:{
73
+ type: String,
74
+ default: ''
75
+ },
76
+ demoPath:{
77
+ type: String,
78
+ default: ''
79
+ },
80
+ collapsed:{
81
+ type: Boolean,
82
+ default: false
83
+ }
84
+ })
85
+ const demo = ref();
86
+ const copied = ref(false)
87
+ const innerCollapsed = ref(props.collapsed)
88
+ const demoStr = ref<string>('')
89
+ const decodedCode = computed(() => props.code || demoStr.value)
90
+ const highlightCode = computed(() => {
91
+ try{
92
+ return highlight(decodedCode.value, 'vue')
93
+ }catch(err){
94
+ return 'error:'+err
95
+ }
96
+ })
97
+ onMounted(async ()=>{
98
+ if(props.demoPath){
99
+ demoModules[`../../demos/${props.demoPath}.vue`]?.().then((module)=>{
100
+ demo.value = module.default
101
+ demoStr.value =module.default;
102
+ })
103
+ console.log('path:',`../../demos/${props.demoPath}.vue`)
104
+ rawModules[`../../demos/${props.demoPath}.vue`]?.().then((module2)=>{
105
+ demoStr.value = `${module2}`
106
+ })
107
+ console.log('demoStr:',)
108
+ }
109
+
110
+ })
111
+
112
+ function handleCopy(){
113
+
114
+ }
115
+
116
+ function handleCollapse(){
117
+ innerCollapsed.value = !innerCollapsed.value
118
+ }
119
+
120
+ </script>
121
+
122
+ <style lang="stylus">
123
+ .code-preview{
124
+ background-color: #fff;
125
+ border: 1px solid #ebedf1;
126
+ border-radius: 4px;
127
+ .code-preview-demo{
128
+ padding: 40px 24px;
129
+ }
130
+ .code-preview-actions{
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: space-between;
134
+ border-top: 1px dashed #ebedf1;
135
+ height: 40px;
136
+ padding: 0 1em;
137
+
138
+ .code-preview-actions__icon {
139
+ width: 16px;
140
+ height: 16px;
141
+ padding: 8px 4px;
142
+ opacity: 0.4;
143
+ cursor: pointer;
144
+ transition: opacity .3s;
145
+
146
+ &:hover {
147
+ opacity: 0.6;
148
+ }
149
+ }
150
+ }
151
+ }
152
+
153
+ .code-preview-source{
154
+ border-top: 1px dashed #ebedf1;
155
+ div[class*="language-"] {
156
+ background-color: #f9fafb;
157
+ border-radius: 0;
158
+ }
159
+ pre[class*="language-"] {
160
+ margin: 0 !important;
161
+ }
162
+ pre[class*="language-"] code {
163
+ color: #000 !important;
164
+ }
165
+
166
+ .token.cdata,.token.comment,.token.doctype,.token.prolog {
167
+ color: #708090
168
+ }
169
+
170
+ .token.punctuation {
171
+ color: #999
172
+ }
173
+
174
+ .token.namespace {
175
+ opacity: .7
176
+ }
177
+
178
+ .token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag {
179
+ color: #905
180
+ }
181
+
182
+ .token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string {
183
+ color: #690
184
+ }
185
+ .language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url {
186
+ color: #9a6e3a;
187
+ background: hsla(0,0%,100%,.5)
188
+ }
189
+
190
+ .token.atrule,.token.attr-value,.token.keyword {
191
+ color: #07a
192
+ }
193
+
194
+ .token.class-name,.token.function {
195
+ color: #dd4a68
196
+ }
197
+
198
+ .token.important,.token.regex,.token.variable {
199
+ color: #e90
200
+ }
201
+ }
202
+
203
+ </style>
@@ -0,0 +1,53 @@
1
+ import prism from 'prismjs'
2
+ import escapeHtml from 'escape-html'
3
+ import loadLanguages from 'prismjs/components/index'
4
+
5
+ function wrap(code, lang) {
6
+ if (lang === 'text') {
7
+ code = escapeHtml(code)
8
+ }
9
+ return `<pre v-pre class="language-${lang}"><code>${code}</code></pre>`
10
+ }
11
+
12
+ function getLangCodeFromExtension(extension) {
13
+ const extensionMap = {
14
+ vue: 'markup',
15
+ html: 'markup',
16
+ md: 'markdown',
17
+ rb: 'ruby',
18
+ ts: 'typescript',
19
+ py: 'python',
20
+ sh: 'bash',
21
+ yml: 'yaml',
22
+ styl: 'stylus',
23
+ kt: 'kotlin',
24
+ rs: 'rust',
25
+ }
26
+
27
+ return extensionMap[extension] || extension
28
+ }
29
+
30
+ export default function (str, lang) {
31
+ if (!lang) {
32
+ return wrap(str, 'text')
33
+ }
34
+ lang = lang.toLowerCase()
35
+ const rawLang = lang
36
+
37
+ lang = getLangCodeFromExtension(lang)
38
+
39
+ if (!prism.languages[lang]) {
40
+ try {
41
+ loadLanguages([lang])
42
+ } catch (e) {
43
+ console.warn(
44
+ `[vuepress] Syntax highlight for language "${lang}" is not supported.`
45
+ )
46
+ }
47
+ }
48
+ if (prism.languages[lang]) {
49
+ const code = prism.highlight(str, prism.languages[lang], lang)
50
+ return wrap(code, rawLang)
51
+ }
52
+ return wrap(str, 'text')
53
+ }
@@ -0,0 +1,39 @@
1
+ import path from "path";
2
+ import { defineUserConfig, defaultTheme } from "vuepress";
3
+ import utils from "./util";
4
+ const guideFiles = utils
5
+ .getFiles(path.resolve(__dirname, "../guide"))
6
+ .map((item) => item.replace(/(\.md)$/, ""))
7
+ .filter((item) => !["index"].includes(item));
8
+ const componentsFiles = utils
9
+ .getFiles(path.resolve(__dirname, "../components"))
10
+ .map((item) => item.replace(/(\.md)$/, ""))
11
+ .filter((item) => !["index"].includes(item));
12
+ export default defineUserConfig({
13
+ title: "Jtui Formily",
14
+ head: [
15
+ [
16
+ "link",
17
+ {
18
+ rel: "icon",
19
+ href: "https://jtcospublic.ciccten.com/low-code/files/c3c3pg/logo%20%281%291660803134226.png",
20
+ },
21
+ ],
22
+ ],
23
+ theme: defaultTheme({
24
+ logo: "https://jtcospublic.ciccten.com/low-code/files/c3c3pg/logo%20%281%291660803134226.png",
25
+ repo: "http://git.jintengoa.com/jvfe/base/ark/-/tree/master/packages/jt-formily",
26
+ repoLabel: "GitHub",
27
+ lastUpdatedText: "上次更新",
28
+ contributorsText: "贡献者",
29
+ navbar: [
30
+ { text: "指南", link: "/guide/schema" },
31
+ { text: "组件", link: "/components/" },
32
+ ],
33
+ sidebar: {
34
+ "/guide/": [...guideFiles],
35
+ "/components/": [...componentsFiles],
36
+ },
37
+ lastUpdated: true,
38
+ }),
39
+ });
@@ -0,0 +1,7 @@
1
+ import fs from 'fs'
2
+
3
+ export default {
4
+ getFiles(dir: string): Array<string> {
5
+ return fs.readdirSync(dir)
6
+ },
7
+ }
package/docs/README.md ADDED
@@ -0,0 +1,30 @@
1
+ ---
2
+ home: true
3
+ heroText: JtUi Formily
4
+ tagline: 基于 JtUi 封装的Formily2.x组件库
5
+ features:
6
+ - title: 更易用
7
+ details: 开箱即用,案例丰富
8
+ - title: 更高效
9
+ details: 傻瓜写法,超高性能
10
+ - title: 更专业
11
+ details: 完备,灵活,优雅
12
+ ---
13
+
14
+ ## 安装
15
+ ``` bash
16
+ npm i @jv/formily --save
17
+ ```
18
+
19
+ ## 全局引用
20
+ ``` ts
21
+ import { createApp } from 'vue';
22
+
23
+ import App from './App.vue';
24
+
25
+ import JvFormily from '@jv/formily';
26
+
27
+ createApp(App).use(JvFormily);
28
+ ```
29
+ ## 示例
30
+ <code-preview demoPath="index" :collapsed="false"/>
@@ -0,0 +1,26 @@
1
+ ---
2
+ title: AnyOf
3
+ lang: zh-cn
4
+ ---
5
+ # AnyOf
6
+ ::: danger
7
+ 该组件主要是兼容VJSF, 新的业务场景下不推荐使用。请使用x-reactions联动的方式
8
+ :::
9
+ <!-- ## 示例 -->
10
+ <!-- <code-preview demoPath="any-of/index" :collapsed="true"/> -->
11
+
12
+ ## 属性
13
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
14
+ | ------------ | ---------- | ------- | -------- | ------- |
15
+ | list | schema列表 | string | - | '[]' |
16
+ | modelValue | 绑定值 | object | - | {} |
17
+ | title | 标题 | string | - | |
18
+ | defaultValue | 默认值 | string | - | |
19
+ | required | 是否必填 | boolean | - | true |
20
+ | type | 类型 | string | 'switch' | 'radio' |
21
+ | readOnly | 是否只读 | boolean | - | false |
22
+
23
+ ## 事件
24
+ | 事件名 | 说明 | 参数 |
25
+ | ------ | ------------------ | ------------- |
26
+ | change | 内容修改时触发事件 | val: 修改的值 |
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ArrayCards
3
+ lang: zh-cn
4
+ ---
5
+ ::: tip
6
+ 卡片列表,对于每行字段数量较多,联动较多的场景比较适合使用 ArrayCards
7
+ :::
8
+
9
+ # ArrayCards
10
+
11
+ ## 示例
12
+ <code-preview demoPath="array-cards/index" :collapsed="true"/>
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ArrayCollapse
3
+ lang: zh-cn
4
+ ---
5
+ ::: tip
6
+ 折叠面板,对于每行字段数量较多,联动较多的场景比较适合使用 ArrayCollapse
7
+ :::
8
+
9
+ # ArrayCollapse
10
+
11
+ ## 示例
12
+ <code-preview demoPath="array-collapse/index" :collapsed="true"/>
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ArrayItems
3
+ lang: zh-cn
4
+ ---
5
+ ::: tip
6
+ 自增列表,对于简单的自增编辑场景比较适合,或者对于空间要求高的场景比较适合
7
+ :::
8
+
9
+ # ArrayItems
10
+
11
+ ## 示例
12
+ <code-preview demoPath="array-items/index" :collapsed="true"/>
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: ArrayTable
3
+ lang: zh-cn
4
+ ---
5
+ ::: tip
6
+ 自增表格,对于数据量超大的场景比较适合使用该组件,虽然数据量大到一定程度会有些许卡顿,但是不会影响基本操作
7
+ :::
8
+
9
+ # ArrayTable
10
+
11
+ ## 示例
12
+ <code-preview demoPath="array-table/index" :collapsed="true"/>
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: ArrayTabs
3
+ lang: zh-cn
4
+ ---
5
+ ::: tip
6
+ 自增选项卡,对于纵向空间要求较高的场景可以考虑使用该组件
7
+ :::
8
+
9
+ # ArrayTabs
10
+
11
+ ## 示例
12
+ <code-preview demoPath="array-tabs/index" :collapsed="true"/>
13
+
14
+
15
+ ## API
16
+ 参考 [https://element-plus.gitee.io/zh-CN/component/tabs.html](https://element-plus.gitee.io/zh-CN/component/tabs.html)
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Cascader
3
+ lang: zh-cn
4
+ ---
5
+
6
+ # Cascader
7
+
8
+ ## 示例
9
+ <code-preview demoPath="cascader/index" :collapsed="true"/>
10
+
11
+ ## API
12
+ 参考 [https://element-plus.gitee.io/zh-CN/component/cascader.html](https://element-plus.gitee.io/zh-CN/component/cascader.html)
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Checkbox
3
+ lang: zh-cn
4
+ ---
5
+
6
+ # Checkbox
7
+
8
+ ## 示例
9
+ <code-preview demoPath="checkbox/index" :collapsed="true"/>
10
+
11
+ ## API
12
+ 参考 [https://element-plus.gitee.io/zh-CN/component/radio.html](https://element-plus.gitee.io/zh-CN/component/radio.html)
@@ -0,0 +1,27 @@
1
+ ---
2
+ title: Event
3
+ lang: zh-cn
4
+ ---
5
+ # 事件组件
6
+
7
+ ::: tip
8
+ 当前应用在可视化创作系统事件编辑
9
+ :::
10
+ <code-preview demoPath="event/index" :collapsed="true"/>
11
+
12
+ ## 属性
13
+
14
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
15
+ | ---------- | ---------- | ------- | ------ | ------ |
16
+ | modelValue | 绑定值 | object | — | {} |
17
+ | schema | schema配置 | string | — | '{}' |
18
+ | readOnly | 是否只读 | boolean | — | false |
19
+
20
+ ::: warning
21
+ schema传字符串是因为配置里面可能包含联动表达式 `{{$deps[0] === '1'}}`,vue会去执行这个表达式,由于没有找到$deps[0]会导致Error
22
+ :::
23
+
24
+ ## 事件
25
+ | 事件名 | 说明 | 参数 |
26
+ | ------ | ------------------ | ------------------- |
27
+ | change | 内容修改时触发事件 | — val: 修改的值 |
@@ -0,0 +1,25 @@
1
+ ---
2
+ title: HotArea
3
+ lang: zh-cn
4
+ ---
5
+ # 热区组件
6
+
7
+ ::: tip
8
+ 当前应用在可视化创作系统图片热区编辑
9
+ :::
10
+ <code-preview demoPath="hotArea/index" :collapsed="true"/>
11
+
12
+ ## 属性
13
+
14
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
15
+ | -------- | ---------- | ------- | ------ | ------ |
16
+ | value | 绑定值 | array | — | [] |
17
+ | event | schema配置 | string | — | '{}' |
18
+ | readOnly | 是否只读 | boolean | — | false |
19
+ ::: warning
20
+ event 传字符串是因为配置里面可能包含联动表达式 `{{$deps[0] === '1'}}`,vue会去执行这个表达式,由于没有找到$deps[0]会导致Error
21
+ :::
22
+ ## 事件
23
+ | 事件名 | 说明 | 参数 |
24
+ | ---------- | -------------------------- | ---------- |
25
+ | change | 内容修改时触发事件 | — val: 修改的值 |
@@ -0,0 +1,4 @@
1
+ ---
2
+ title: 快速入额 [输入框]
3
+ lang: zh-cn
4
+ ---
@@ -0,0 +1,30 @@
1
+ ---
2
+ title: Input
3
+ lang: zh-cn
4
+ ---
5
+ # Input
6
+
7
+ ## 示例
8
+ <!-- -->
9
+ <code-preview demoPath="input/index" :collapsed="true"/>
10
+
11
+ ## 属性
12
+
13
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
14
+ | ----------- | ------------------------------------------------- | ------- | ------- | ------ |
15
+ | modelValue | 绑定值 | string | — | — |
16
+ | inputType | 输入框类型 | string | 'color' | '' |
17
+ | toolTip | tip提示 | string | — | '' |
18
+ | placeholder | 输入框占位文本 | string | — | — |
19
+ | type | 类型 | string | — | 'text' |
20
+ | rows | 输入框行数,仅 type 为 'textarea' 时有效 | number | — | 4 |
21
+ | readOnly | 是否只读 | boolean | — | false |
22
+ | maxlength | 最大输入长度 | string | number | — | null |
23
+ | clearable | 是否显示清除按钮,只有当 type 不是 textarea时生效 | boolean | — | false |
24
+ | autofocus | 原生属性,自动获取焦点 | boolean | — | false |
25
+ | disabled | 是否禁用 | boolean | — | false |
26
+
27
+ ## 事件
28
+ | 事件名 | 说明 | 参数 |
29
+ | ---------- | -------------------------- | ---------- |
30
+ | change | 内容修改时触发事件 | — val: 修改的值 |
@@ -0,0 +1,19 @@
1
+ ---
2
+ title: LayoutGroup
3
+ lang: zh-cn
4
+ ---
5
+
6
+
7
+ # LayoutGroup
8
+
9
+ 用于对配置项进行分组,可以对该分组设置标题、样式、底部边框
10
+ ## 示例
11
+ <code-preview demoPath="layout-group/index" :collapsed="true"/>
12
+
13
+ ## 属性
14
+
15
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
16
+ | ------------ | ---------- | ------- | -------- | ------- |
17
+ | title | 标题 | string | - | '' |
18
+ | style |样式 | object/string | - | '' |
19
+ | borderBottom | 是否显示底部边框 | boolean | - | true |
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: Link
3
+ lang: zh-cn
4
+ ---
5
+ # Link
6
+
7
+ ## 示例
8
+ <code-preview demoPath="link/index" :collapsed="true"/>
9
+
10
+ ## 属性
11
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
12
+ | ------ | ---------- | ---------- | ------------------------------------------------------------ | --------- |
13
+ | links | 链接列表 | LinkType[] | — | — |
14
+ | target | 原生target | string | — | '_blank' |
15
+ | type | 类型 | string | 'primary' 'success' 'warning' 'danger' 'info' 'default' | 'primary' |
16
+
17
+ ```ts
18
+ interface LinkType{
19
+ href: string,
20
+ label: string
21
+ }
22
+ ```
@@ -0,0 +1,8 @@
1
+ ---
2
+ title: OneOf
3
+ lang: zh-cn
4
+ ---
5
+ # OneOf
6
+ ::: warning
7
+ 已停止维护,请使用联动 x-reactions方案
8
+ :::
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: Radio
3
+ lang: zh-cn
4
+ ---
5
+
6
+ # Radio
7
+
8
+ ## 示例
9
+ <code-preview demoPath="radio/index" :collapsed="true"/>
10
+
11
+ ## API
12
+ 参考 [https://element-plus.gitee.io/zh-CN/component/checkbox.html](https://element-plus.gitee.io/zh-CN/component/checkbox.html)
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: RichEditor
3
+ lang: zh-cn
4
+ ---
5
+ # RichEditor
6
+ ## 示例
7
+ <code-preview demoPath="rich-editor/index" :collapsed="true"/>
8
+
9
+ ## 属性
10
+ | 属性 | 说明 | 类型 | 可选值 | 默认值 |
11
+ | ---------- | ---------- | ---------- | ------ | ------ |
12
+ | modelValue | 绑定值 | LinkType[] | — | — |
13
+ | cmdname | 命令字 | string | — | — |
14
+ | cmdParams | 命令字参数 | object | — | |
15
+ | readOnly | 是否只读 | boolean | | false |
16
+
17
+ ## 事件
18
+ | 事件名 | 说明 | 参数 |
19
+ | ------- | ------------------ | ---------------------------- |
20
+ | change | 内容修改时触发事件 | val: 修改的值 |
21
+ | getData | 远程导入 | cmdname: 命令字,params: 参数 |