@king-one/form-design 0.0.2 → 0.0.3

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 (126) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/es/index.mjs +14 -6
  3. package/dist/es/src/components/form-desgin.mjs +51 -19
  4. package/dist/es/src/components/form-material.vue.mjs +64 -53
  5. package/dist/es/src/components/form-panel.vue.mjs +76 -59
  6. package/dist/es/src/components/form-setting.vue.mjs +55 -56
  7. package/dist/es/src/components/panel/index.mjs +16 -6
  8. package/dist/es/src/components/panel/panel-item.vue.mjs +112 -2
  9. package/dist/es/src/components/panel/panel-item.vue2.mjs +2 -64
  10. package/dist/es/src/components/panel/panel-wrapper.mjs +34 -0
  11. package/dist/es/src/components/panel/widget/array-card.vue.mjs +4 -0
  12. package/dist/es/src/components/panel/widget/array-card.vue2.mjs +71 -0
  13. package/dist/es/src/components/panel/widget/object.vue.mjs +4 -0
  14. package/dist/es/src/components/panel/widget/object.vue2.mjs +71 -0
  15. package/dist/es/src/components/panel/widget/select.vue.mjs +4 -0
  16. package/dist/es/src/components/panel/widget/select.vue2.mjs +23 -0
  17. package/dist/es/src/components/props/form-props.vue.mjs +4 -0
  18. package/dist/es/src/components/props/form-props.vue2.mjs +68 -0
  19. package/dist/es/src/components/props/index.mjs +5 -2
  20. package/dist/es/src/components/props/widget/BaseProps.vue.mjs +4 -0
  21. package/dist/es/src/components/props/widget/BaseProps.vue2.mjs +63 -0
  22. package/dist/es/src/components/props/widget/InputNumberProps.vue.mjs +4 -0
  23. package/dist/es/src/components/props/widget/InputNumberProps.vue2.mjs +125 -0
  24. package/dist/es/src/components/props/widget/InputProps.vue.mjs +4 -0
  25. package/dist/es/src/components/props/widget/InputProps.vue2.mjs +80 -0
  26. package/dist/es/src/components/props/widget/TextareaProps.vue.mjs +4 -0
  27. package/dist/es/src/components/props/widget/TextareaProps.vue2.mjs +79 -0
  28. package/dist/es/src/components/props/widget/index.mjs +27 -0
  29. package/dist/es/src/config/index.mjs +53 -4
  30. package/dist/es/src/core/Design.mjs +50 -26
  31. package/dist/es/src/core/Field.mjs +18 -0
  32. package/dist/es/src/core/FormSchema.mjs +39 -12
  33. package/dist/es/src/effects/effect-dict.mjs +7 -0
  34. package/dist/es/src/effects/onEffects.mjs +12 -0
  35. package/dist/es/src/hooks/use-monaco.mjs +6 -6
  36. package/dist/es/src/hooks/use-namespace/index.mjs +24 -24
  37. package/dist/es/src/index.mjs +14 -7
  38. package/dist/es/src/plugins/index.mjs +17 -0
  39. package/dist/es/src/utils/instanceof.mjs +9 -0
  40. package/dist/es/src/utils/isEmpty.mjs +41 -0
  41. package/dist/es/src/utils/merge.mjs +64 -0
  42. package/dist/lib/index.js +1 -1
  43. package/dist/lib/src/components/form-desgin.js +1 -1
  44. package/dist/lib/src/components/form-material.vue.js +1 -1
  45. package/dist/lib/src/components/form-panel.vue.js +2 -2
  46. package/dist/lib/src/components/form-setting.vue.js +1 -1
  47. package/dist/lib/src/components/panel/index.js +1 -1
  48. package/dist/lib/src/components/panel/panel-item.vue.js +1 -1
  49. package/dist/lib/src/components/panel/panel-item.vue2.js +1 -1
  50. package/dist/lib/src/components/panel/panel-wrapper.js +1 -0
  51. package/dist/lib/src/components/panel/widget/array-card.vue.js +1 -0
  52. package/dist/lib/src/components/panel/widget/array-card.vue2.js +1 -0
  53. package/dist/lib/src/components/panel/widget/object.vue.js +1 -0
  54. package/dist/lib/src/components/panel/widget/object.vue2.js +1 -0
  55. package/dist/lib/src/components/panel/widget/select.vue.js +1 -0
  56. package/dist/lib/src/components/panel/widget/select.vue2.js +1 -0
  57. package/dist/lib/src/components/props/form-props.vue.js +1 -0
  58. package/dist/lib/src/components/props/form-props.vue2.js +1 -0
  59. package/dist/lib/src/components/props/index.js +1 -1
  60. package/dist/lib/src/components/props/widget/BaseProps.vue.js +1 -0
  61. package/dist/lib/src/components/props/widget/BaseProps.vue2.js +1 -0
  62. package/dist/lib/src/components/props/widget/InputNumberProps.vue.js +1 -0
  63. package/dist/lib/src/components/props/widget/InputNumberProps.vue2.js +1 -0
  64. package/dist/lib/src/components/props/widget/InputProps.vue.js +1 -0
  65. package/dist/lib/src/components/props/widget/InputProps.vue2.js +1 -0
  66. package/dist/lib/src/components/props/widget/TextareaProps.vue.js +1 -0
  67. package/dist/lib/src/components/props/widget/TextareaProps.vue2.js +1 -0
  68. package/dist/lib/src/components/props/widget/index.js +1 -0
  69. package/dist/lib/src/config/index.js +1 -1
  70. package/dist/lib/src/core/Design.js +1 -1
  71. package/dist/lib/src/core/Field.js +1 -0
  72. package/dist/lib/src/core/FormSchema.js +1 -1
  73. package/dist/lib/src/effects/effect-dict.js +1 -0
  74. package/dist/lib/src/effects/onEffects.js +1 -0
  75. package/dist/lib/src/hooks/use-monaco.js +1 -1
  76. package/dist/lib/src/hooks/use-namespace/index.js +1 -1
  77. package/dist/lib/src/index.js +1 -1
  78. package/dist/lib/src/plugins/index.js +1 -0
  79. package/dist/lib/src/utils/instanceof.js +1 -0
  80. package/dist/lib/src/utils/isEmpty.js +1 -0
  81. package/dist/lib/src/utils/merge.js +1 -0
  82. package/dist/theme-chalk/fonts/iconfont.ttf +0 -0
  83. package/dist/theme-chalk/fonts/iconfont.woff +0 -0
  84. package/dist/theme-chalk/fonts/iconfont.woff2 +0 -0
  85. package/dist/theme-chalk/form-design.css +1 -1
  86. package/dist/theme-chalk/icon.css +1 -1
  87. package/dist/theme-chalk/index.css +1 -1
  88. package/dist/theme-chalk/material.css +1 -1
  89. package/dist/theme-chalk/panel-item.css +1 -1
  90. package/dist/theme-chalk/panel.css +1 -1
  91. package/dist/theme-chalk/setting.css +1 -1
  92. package/dist/types/src/components/form-panel.vue.d.ts +3 -1
  93. package/dist/types/src/components/panel/index.d.ts +2 -2
  94. package/dist/types/src/components/panel/panel-item.vue.d.ts +2 -0
  95. package/dist/types/src/components/panel/panel-wrapper.d.ts +11 -0
  96. package/dist/types/src/components/panel/widget/array-card.vue.d.ts +20 -0
  97. package/dist/types/src/components/panel/widget/object.vue.d.ts +20 -0
  98. package/dist/types/src/components/panel/widget/select.vue.d.ts +8 -0
  99. package/dist/types/src/components/props/index.d.ts +2 -2
  100. package/dist/types/src/components/props/widget/InputNumberProps.vue.d.ts +3 -0
  101. package/dist/types/src/components/props/widget/InputProps.vue.d.ts +3 -0
  102. package/dist/types/src/components/props/widget/TextareaProps.vue.d.ts +3 -0
  103. package/dist/types/src/components/props/widget/index.d.ts +8 -0
  104. package/dist/types/src/config/index.d.ts +1 -0
  105. package/dist/types/src/core/Design.d.ts +175 -18
  106. package/dist/types/src/core/Field.d.ts +6 -0
  107. package/dist/types/src/core/FormSchema.d.ts +33 -11
  108. package/dist/types/src/effects/onEffects.d.ts +2 -2
  109. package/dist/types/src/hooks/use-namespace/index.d.ts +1 -1
  110. package/dist/types/src/index.d.ts +3 -0
  111. package/dist/types/src/plugins/index.d.ts +8 -0
  112. package/dist/types/src/types.d.ts +36 -5
  113. package/dist/types/src/utils/instanceof.d.ts +2 -0
  114. package/dist/types/src/utils/isEmpty.d.ts +2 -0
  115. package/dist/types/src/utils/merge.d.ts +12 -0
  116. package/package.json +2 -1
  117. package/dist/es/src/components/props/base-props.vue.mjs +0 -60
  118. package/dist/es/src/components/props/base-props.vue2.mjs +0 -4
  119. package/dist/es/src/components/props/component-props.vue.mjs +0 -21
  120. package/dist/es/src/components/props/component-props.vue2.mjs +0 -4
  121. package/dist/lib/src/components/props/base-props.vue.js +0 -1
  122. package/dist/lib/src/components/props/base-props.vue2.js +0 -1
  123. package/dist/lib/src/components/props/component-props.vue.js +0 -1
  124. package/dist/lib/src/components/props/component-props.vue2.js +0 -1
  125. /package/dist/types/src/components/props/{base-props.vue.d.ts → form-props.vue.d.ts} +0 -0
  126. /package/dist/types/src/components/props/{component-props.vue.d.ts → widget/BaseProps.vue.d.ts} +0 -0
@@ -1,15 +1,14 @@
1
1
  import { CSSProperties, Component, VNode } from 'vue';
2
2
  import { FormDesign } from './core/Design';
3
3
  import { LifeCycleInstance } from './effects/types';
4
+ import { Plugin } from './plugins';
5
+ export type PluginInterface = InstanceType<typeof Plugin>;
4
6
  export declare const valueTypeMap: {
5
7
  string: string;
6
8
  number: string;
7
9
  boolean: string;
8
10
  object: string;
9
11
  array: string;
10
- date: string;
11
- time: string;
12
- datetime: string;
13
12
  void: string;
14
13
  };
15
14
  export type valueType = keyof typeof valueTypeMap;
@@ -23,21 +22,47 @@ export interface FieldSchema {
23
22
  'key': string;
24
23
  'type': valueType;
25
24
  'k-component': string;
25
+ 'enum'?: any[];
26
+ 'items'?: FieldSchema[];
27
+ 'children'?: FieldSchema[];
26
28
  'required'?: boolean;
27
29
  'id'?: string;
28
30
  'name'?: string;
29
31
  'icon'?: string | VNode;
32
+ 'k-design-props'?: {
33
+ unDragTo?: string[];
34
+ validate?: {
35
+ status: 'success' | 'error' | 'warning' | '';
36
+ message: string;
37
+ };
38
+ [x: string]: any;
39
+ };
30
40
  'k-component-props'?: Record<string, any>;
41
+ 'k-decorator-props'?: {
42
+ [x: string]: any;
43
+ };
31
44
  }
32
45
  export interface DesignSchema {
33
46
  name: string;
34
47
  key: string;
35
48
  widget?: FieldSchema[];
36
49
  }
50
+ type PromiseFn<T> = () => Promise<T>;
51
+ export type WidgetComponentType = PromiseFn<Component> | Component;
52
+ export interface WidgetsPropsType {
53
+ component: Component[];
54
+ defaultValues?: Record<string, any>;
55
+ rules?: any;
56
+ }
37
57
  export interface DesignParams {
38
58
  schema: DesignSchema[];
39
- propsComponents?: Record<string, VueComponent>;
40
- panelComponents?: Record<string, VueComponent>;
59
+ extendFormProps?: {
60
+ title: string;
61
+ key: string;
62
+ component: PromiseFn<Component> | Component;
63
+ }[];
64
+ propsWidgets?: Record<string, WidgetsPropsType>;
65
+ panelWidgets?: Record<string, WidgetComponentType>;
41
66
  effects?: () => void;
42
67
  }
43
68
  export type FormDesignInstance = InstanceType<typeof FormDesign>;
@@ -47,3 +72,9 @@ export interface HeartProps<Context> {
47
72
  context?: Context;
48
73
  }
49
74
  export type VueComponent = Component;
75
+ export interface FormDesignPlugin {
76
+ name: string;
77
+ install: (app: PluginInterface, ...options: any[]) => void;
78
+ }
79
+ export type widgetPropsType = Record<string, WidgetsPropsType>;
80
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const globalThisPolyfill: typeof globalThis;
2
+ export declare function instOf(value: any, cls: any): boolean;
@@ -0,0 +1,2 @@
1
+ export declare const isValid: (val: any) => boolean;
2
+ export declare function isEmpty(val: any, strict?: boolean): boolean;
@@ -0,0 +1,12 @@
1
+ export type AnyFunction = (...args: any[]) => any;
2
+ interface Options {
3
+ arrayMerge?: (target: any[], source: any[], options?: Options) => any[];
4
+ clone?: boolean;
5
+ assign?: boolean;
6
+ customMerge?: (key: string, options?: Options) => ((x: any, y: any) => any) | undefined;
7
+ isMergeableObject?: (value: object) => boolean;
8
+ cloneUnlessOtherwiseSpecified?: (value: any, options: Options) => any;
9
+ }
10
+ declare function deepmerge(target: any, source: any, options?: Options): any;
11
+ export declare const merge: typeof deepmerge;
12
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@king-one/form-design",
3
3
  "type": "module",
4
- "version": "0.0.2",
4
+ "version": "0.0.3",
5
5
  "description": "@king-one 表单设计器",
6
6
  "author": "",
7
7
  "license": "ISC",
@@ -44,6 +44,7 @@
44
44
  "vue": "^3.5.13"
45
45
  },
46
46
  "dependencies": {
47
+ "@king-one/tapable": "^3.0.0",
47
48
  "@king-one/theme": "^1.0.1",
48
49
  "@king-one/utils": "^1.0.13",
49
50
  "monaco-editor": "^0.52.2",
@@ -1,60 +0,0 @@
1
- import { defineComponent as u, openBlock as i, createElementBlock as p, createVNode as t, unref as e, withCtx as o, createTextVNode as d } from "vue";
2
- import { Form as f, FormItem as r, Input as m, Switch as s } from "ant-design-vue";
3
- import "../../internal.mjs";
4
- import "../form-icon.vue.mjs";
5
- import { useInjectDesignContext as v } from "../../context/design.mjs";
6
- import _ from "../form-icon.vue2.mjs";
7
- const y = /* @__PURE__ */ u({
8
- __name: "base-props",
9
- setup(x) {
10
- const { checkedField: a } = v();
11
- return (c, l) => (i(), p("div", null, [
12
- t(e(f), {
13
- "label-col": { style: { width: "85px" } },
14
- layout: "vertical"
15
- }, {
16
- default: o(() => [
17
- t(e(r), {
18
- label: "字段名称",
19
- tooltip: "表单name"
20
- }, {
21
- default: o(() => [
22
- t(e(m), {
23
- value: e(a).name,
24
- "onUpdate:value": l[0] || (l[0] = (n) => e(a).name = n)
25
- }, null, 8, ["value"])
26
- ]),
27
- _: 1
28
- /* STABLE */
29
- }),
30
- t(e(r), { label: "字段标题" }, {
31
- default: o(() => [
32
- t(e(m), {
33
- value: e(a).title,
34
- "onUpdate:value": l[1] || (l[1] = (n) => e(a).title = n)
35
- }, null, 8, ["value"])
36
- ]),
37
- _: 1
38
- /* STABLE */
39
- }),
40
- t(e(r), { label: "是否必填" }, {
41
- extra: o(() => [
42
- t(_, { name: "sound" }),
43
- l[2] || (l[2] = d(" 表单字段设置为必填才能作为审批条件 "))
44
- ]),
45
- default: o(() => [
46
- t(e(s))
47
- ]),
48
- _: 1
49
- /* STABLE */
50
- })
51
- ]),
52
- _: 1
53
- /* STABLE */
54
- })
55
- ]));
56
- }
57
- });
58
- export {
59
- y as default
60
- };
@@ -1,4 +0,0 @@
1
- import f from "./base-props.vue.mjs";
2
- export {
3
- f as default
4
- };
@@ -1,21 +0,0 @@
1
- import { defineComponent as e, openBlock as n, createElementBlock as p, normalizeClass as r, unref as t } from "vue";
2
- import "../../internal.mjs";
3
- import { useNamespace as s } from "../../hooks/use-namespace/index.mjs";
4
- const f = /* @__PURE__ */ e({
5
- __name: "component-props",
6
- setup(c) {
7
- const { b: o } = s("component-props");
8
- return (m, a) => (n(), p(
9
- "div",
10
- {
11
- class: r(t(o)())
12
- },
13
- " component props ",
14
- 2
15
- /* CLASS */
16
- ));
17
- }
18
- });
19
- export {
20
- f as default
21
- };
@@ -1,4 +0,0 @@
1
- import f from "./component-props.vue.mjs";
2
- export {
3
- f as default
4
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),t=require("ant-design-vue");require("../../internal.js");require("../form-icon.vue.js");const l=require("../../context/design.js"),o=require("../form-icon.vue2.js"),a=e.defineComponent({__name:"base-props",setup(i){const{checkedField:u}=l.useInjectDesignContext();return(d,r)=>(e.openBlock(),e.createElementBlock("div",null,[e.createVNode(e.unref(t.Form),{"label-col":{style:{width:"85px"}},layout:"vertical"},{default:e.withCtx(()=>[e.createVNode(e.unref(t.FormItem),{label:"字段名称",tooltip:"表单name"},{default:e.withCtx(()=>[e.createVNode(e.unref(t.Input),{value:e.unref(u).name,"onUpdate:value":r[0]||(r[0]=n=>e.unref(u).name=n)},null,8,["value"])]),_:1}),e.createVNode(e.unref(t.FormItem),{label:"字段标题"},{default:e.withCtx(()=>[e.createVNode(e.unref(t.Input),{value:e.unref(u).title,"onUpdate:value":r[1]||(r[1]=n=>e.unref(u).title=n)},null,8,["value"])]),_:1}),e.createVNode(e.unref(t.FormItem),{label:"是否必填"},{extra:e.withCtx(()=>[e.createVNode(o.default,{name:"sound"}),r[2]||(r[2]=e.createTextVNode(" 表单字段设置为必填才能作为审批条件 "))]),default:e.withCtx(()=>[e.createVNode(e.unref(t.Switch))]),_:1})]),_:1})]))}});exports.default=a;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./base-props.vue.js");exports.default=e.default;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../../internal.js");const n=require("../../hooks/use-namespace/index.js"),r=e.defineComponent({__name:"component-props",setup(t){const{b:o}=n.useNamespace("component-props");return(s,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(o)())}," component props ",2))}});exports.default=r;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./component-props.vue.js");exports.default=e.default;