cnhis-design-vue 3.1.16-beta.13 → 3.1.16-beta.14

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 (34) hide show
  1. package/es/packages/form-config/index.d.ts +7 -2
  2. package/es/packages/form-config/src/FormConfig.vue.d.ts +7 -2
  3. package/es/packages/form-config/src/components/FormConfigCreator.vue.d.ts +3 -1
  4. package/es/packages/form-config/src/components/FormConfigEdit.vue.d.ts +4 -1
  5. package/es/packages/form-render/index.d.ts +3 -1
  6. package/es/packages/form-render/index.js +0 -1
  7. package/es/packages/form-render/src/FormRender.js +5 -6
  8. package/es/packages/form-render/src/FormRender.vue.d.ts +3 -1
  9. package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts} +3 -3
  10. package/es/packages/form-render/src/components/renderer/combination.js +82 -0
  11. package/es/packages/form-render/src/components/renderer/formItem.js +11 -3
  12. package/es/packages/form-render/src/components/renderer/index.d.ts +1 -0
  13. package/es/packages/form-render/src/components/renderer/index.js +2 -1
  14. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.d.ts +0 -0
  15. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.js +0 -0
  16. package/es/packages/form-render/src/components/renderer/jsonCombination/index.d.ts +44 -0
  17. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/index.js +14 -9
  18. package/es/packages/form-render/src/hooks/index.d.ts +0 -1
  19. package/es/packages/form-render/src/hooks/index.js +0 -1
  20. package/es/packages/form-render/src/hooks/useFieldListAdaptor.d.ts +1 -1
  21. package/es/packages/form-render/src/hooks/useFieldListAdaptor.js +7 -3
  22. package/es/packages/form-render/src/types/fieldItem.d.ts +4 -0
  23. package/es/packages/form-render/src/types/index.d.ts +1 -1
  24. package/es/packages/form-render/src/utils/index.js +3 -2
  25. package/es/packages/form-render/src/utils/schema.d.ts +60 -0
  26. package/es/packages/form-render/src/utils/schema.js +5 -2
  27. package/es/packages/form-render/style/index.css +7 -0
  28. package/es/packages/index.css +7 -0
  29. package/es/packages/index.js +0 -1
  30. package/es/packages/shortcut-setter/index.d.ts +4 -1
  31. package/es/packages/shortcut-setter/src/ShortcutSetter.vue.d.ts +4 -1
  32. package/package.json +1 -1
  33. package/es/packages/form-render/src/hooks/useInitialData.d.ts +0 -5
  34. package/es/packages/form-render/src/hooks/useInitialData.js +0 -16
@@ -229,6 +229,7 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
229
229
  content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
230
230
  lazyRequest?: boolean | undefined;
231
231
  maxGroupNum?: number | undefined;
232
+ jsonCombination?: boolean | undefined;
232
233
  children?: any[] | undefined;
233
234
  properties?: any[] | undefined;
234
235
  componentProps?: import("../../../es/src/types").AnyObject | undefined;
@@ -3988,7 +3989,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
3988
3989
  }>>;
3989
3990
  emit: (event: "formChange", ...args: any[]) => void;
3990
3991
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
3991
- formModel: import("@formily/core").Form<any>;
3992
+ formModel: import("@formily/core").Form<{
3993
+ [x: string]: any;
3994
+ }>;
3992
3995
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
3993
3996
  businessCollector: import("..").BusinessCollector;
3994
3997
  formItemDepsCollector: import("..").FormItemDepsCollector;
@@ -9074,7 +9077,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
9074
9077
  }>>;
9075
9078
  emit: (event: "formChange", ...args: any[]) => void;
9076
9079
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
9077
- formModel: import("@formily/core").Form<any>;
9080
+ formModel: import("@formily/core").Form<{
9081
+ [x: string]: any;
9082
+ }>;
9078
9083
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
9079
9084
  businessCollector: import("..").BusinessCollector;
9080
9085
  formItemDepsCollector: import("..").FormItemDepsCollector;
@@ -231,6 +231,7 @@ declare const _default: import("vue").DefineComponent<{
231
231
  content?: string | import("../..").FormRenderer | Record<string, import("../..").FormRenderer> | undefined;
232
232
  lazyRequest?: boolean | undefined;
233
233
  maxGroupNum?: number | undefined;
234
+ jsonCombination?: boolean | undefined;
234
235
  children?: any[] | undefined;
235
236
  properties?: any[] | undefined;
236
237
  componentProps?: import("../../../../es/src/types").AnyObject | undefined;
@@ -3990,7 +3991,9 @@ declare const _default: import("vue").DefineComponent<{
3990
3991
  }>>;
3991
3992
  emit: (event: "formChange", ...args: any[]) => void;
3992
3993
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
3993
- formModel: import("@formily/core").Form<any>;
3994
+ formModel: import("@formily/core").Form<{
3995
+ [x: string]: any;
3996
+ }>;
3994
3997
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
3995
3998
  businessCollector: import("../..").BusinessCollector;
3996
3999
  formItemDepsCollector: import("../..").FormItemDepsCollector;
@@ -9076,7 +9079,9 @@ declare const _default: import("vue").DefineComponent<{
9076
9079
  }>>;
9077
9080
  emit: (event: "formChange", ...args: any[]) => void;
9078
9081
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
9079
- formModel: import("@formily/core").Form<any>;
9082
+ formModel: import("@formily/core").Form<{
9083
+ [x: string]: any;
9084
+ }>;
9080
9085
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
9081
9086
  businessCollector: import("../..").BusinessCollector;
9082
9087
  formItemDepsCollector: import("../..").FormItemDepsCollector;
@@ -3580,7 +3580,9 @@ declare const _default: import("vue").DefineComponent<{}, {
3580
3580
  }>>;
3581
3581
  emit: (event: "formChange", ...args: any[]) => void;
3582
3582
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
3583
- formModel: import("@formily/core").Form<any>;
3583
+ formModel: import("@formily/core").Form<{
3584
+ [x: string]: any;
3585
+ }>;
3584
3586
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
3585
3587
  businessCollector: import("../../../../../es/packages/form-render").BusinessCollector;
3586
3588
  formItemDepsCollector: import("../../../../../es/packages/form-render").FormItemDepsCollector;
@@ -92,6 +92,7 @@ declare const _default: import("vue").DefineComponent<{}, {
92
92
  content?: string | import("../../../../../es/packages/form-render").FormRenderer | Record<string, import("../../../../../es/packages/form-render").FormRenderer> | undefined;
93
93
  lazyRequest?: boolean | undefined;
94
94
  maxGroupNum?: number | undefined;
95
+ jsonCombination?: boolean | undefined;
95
96
  children?: any[] | undefined;
96
97
  properties?: any[] | undefined;
97
98
  componentProps?: import("../../../../../es/src/types").AnyObject | undefined;
@@ -3851,7 +3852,9 @@ declare const _default: import("vue").DefineComponent<{}, {
3851
3852
  }>>;
3852
3853
  emit: (event: "formChange", ...args: any[]) => void;
3853
3854
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
3854
- formModel: import("@formily/core").Form<any>;
3855
+ formModel: import("@formily/core").Form<{
3856
+ [x: string]: any;
3857
+ }>;
3855
3858
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
3856
3859
  businessCollector: import("../../../../../es/packages/form-render").BusinessCollector;
3857
3860
  formItemDepsCollector: import("../../../../../es/packages/form-render").FormItemDepsCollector;
@@ -236,7 +236,9 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
236
236
  }>>;
237
237
  emit: (event: "formChange", ...args: any[]) => void;
238
238
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
239
- formModel: import("@formily/core").Form<any>;
239
+ formModel: import("@formily/core").Form<{
240
+ [x: string]: any;
241
+ }>;
240
242
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
241
243
  businessCollector: import("./src/hooks").BusinessCollector;
242
244
  formItemDepsCollector: import("./src/hooks").FormItemDepsCollector;
@@ -12,7 +12,6 @@ export { useFormValidator } from './src/hooks/useFormValidator.js';
12
12
  export { BusinessCollector, useBusinessBinding } from './src/hooks/useBusinessBinding.js';
13
13
  export { ContextCollector, useChangeContext } from './src/hooks/useChangeContext.js';
14
14
  export { FormItemDepsCollector, useFormItemDeps } from './src/hooks/useFormItemDeps.js';
15
- export { useInitialData } from './src/hooks/useInitialData.js';
16
15
  export { useAnchor } from './src/hooks/useAnchor.js';
17
16
  export { useFormContext } from './src/hooks/useFormContext.js';
18
17
 
@@ -6,10 +6,9 @@ import { cloneDeep, isArray } from 'lodash-es';
6
6
  import { NForm, NTabs, NTabPane, NConfigProvider } from 'naive-ui';
7
7
  import { FormItemLineBarDepKeyPrepend } from '../../../packages/form-render/src/constants';
8
8
  import { useFormRenderLifeCycle } from '../../../packages/form-render/src/hooks/useFormRenderLifeCycle';
9
- import { arrayed, queryDecorator, queryInput, getParentLinebar } from '../../../packages/form-render/src/utils';
9
+ import { createObjSchema, arrayed, queryDecorator, queryInput, getParentLinebar } from '../../../packages/form-render/src/utils';
10
10
  import { useNuiThemeOverrides } from '../../../packages/form-table/src/hooks/useNuiThemeOverrides';
11
11
  import _export_sfc from '../../../_virtual/plugin-vue_export-helper.js';
12
- import { useInitialData } from './hooks/useInitialData.js';
13
12
  import { useFormContext } from './hooks/useFormContext.js';
14
13
  import { useFieldListAdaptor } from './hooks/useFieldListAdaptor.js';
15
14
  import { useFieldVisitor } from './hooks/useFieldVisitor.js';
@@ -50,7 +49,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
50
49
  const { nuiThemeOverrides } = useNuiThemeOverrides();
51
50
  useFormRenderLifeCycle(props).callLifeCycle("onSetup");
52
51
  const formModel = createForm({
53
- initialValues: useInitialData().assignInitialData(props.initialData, props.fieldList),
52
+ initialValues: props.initialData,
54
53
  effects() {
55
54
  onFieldValueChange("*", async (field) => {
56
55
  const fieldKey = field.props.name.toString();
@@ -68,16 +67,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
68
67
  });
69
68
  const { SchemaField, businessCollector, formItemDepsCollector, changeContextCollector, formUUID } = useFormContext(props, formModel);
70
69
  const scrollbarRef = ref();
71
- const { schemaAdaptor } = useFieldListAdaptor(businessCollector, formUUID);
70
+ const { schemaAdaptor } = useFieldListAdaptor(businessCollector);
72
71
  const parsedSchema = computed(() => {
73
72
  if (props.schema) {
74
73
  return props.schema;
75
74
  }
76
75
  if (props.fieldList) {
77
76
  const _fieldList = useFieldVisitor().traverse(cloneDeep(props.fieldList), props.fieldVisitor);
78
- return { type: "object", properties: schemaAdaptor(_fieldList) };
77
+ return createObjSchema(schemaAdaptor(_fieldList));
79
78
  }
80
- return { type: "object", properties: {} };
79
+ return createObjSchema({});
81
80
  });
82
81
  const { currentAnchor, generateAnchorList, anchorIdList, formHeight, onScroll } = useAnchor(props, scrollbarRef, formItemDepsCollector);
83
82
  watch(parsedSchema, generateAnchorList, { immediate: true });
@@ -236,7 +236,9 @@ declare const _default: import("vue").DefineComponent<{
236
236
  }>>;
237
237
  emit: (event: "formChange", ...args: any[]) => void;
238
238
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
239
- formModel: import("@formily/core").Form<any>;
239
+ formModel: import("@formily/core").Form<{
240
+ [x: string]: any;
241
+ }>;
240
242
  SchemaField: Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
241
243
  businessCollector: import("./hooks").BusinessCollector;
242
244
  formItemDepsCollector: import("./hooks").FormItemDepsCollector;
@@ -1,4 +1,4 @@
1
- import { FieldItem } from '../../../../../../../es/packages/form-render';
1
+ import { FieldItem } from '../../../../../../es/packages/form-render';
2
2
  import { PropType } from 'vue';
3
3
  export declare const COMBINATION: import("vue").DefineComponent<{
4
4
  title: {
@@ -6,7 +6,7 @@ export declare const COMBINATION: import("vue").DefineComponent<{
6
6
  default: string;
7
7
  };
8
8
  value: {
9
- type: StringConstructor;
9
+ type: ArrayConstructor;
10
10
  };
11
11
  maxGroupNum: {
12
12
  type: NumberConstructor;
@@ -24,7 +24,7 @@ export declare const COMBINATION: import("vue").DefineComponent<{
24
24
  default: string;
25
25
  };
26
26
  value: {
27
- type: StringConstructor;
27
+ type: ArrayConstructor;
28
28
  };
29
29
  maxGroupNum: {
30
30
  type: NumberConstructor;
@@ -0,0 +1,82 @@
1
+ import { defineComponent, ref, computed, inject, createVNode, createTextVNode } from 'vue';
2
+ import { isNumber } from 'lodash-es';
3
+ import { useFieldListAdaptor } from '../../../../../packages/form-render';
4
+ import { useField, RecursionField, connect } from '@formily/vue';
5
+ import { NButton } from 'naive-ui';
6
+ import { InjectionBusinessCollector } from '../../../../../packages/form-render/src/constants';
7
+ import { createObjSchema } from '../../../../../packages/form-render/src/utils';
8
+
9
+ const script = defineComponent({
10
+ name: "FormCombination",
11
+ props: {
12
+ title: {
13
+ type: String,
14
+ default: ""
15
+ },
16
+ value: {
17
+ type: Array
18
+ },
19
+ maxGroupNum: {
20
+ type: Number
21
+ },
22
+ getProperties: {
23
+ type: Function,
24
+ default: () => []
25
+ },
26
+ onInput: {},
27
+ onBlur: {},
28
+ onChange: {}
29
+ },
30
+ emits: ["update:value"],
31
+ setup(props) {
32
+ const field = useField();
33
+ const currentGroupNum = ref(1);
34
+ const maxGroupNum = computed(() => {
35
+ if (!isNumber(props.maxGroupNum))
36
+ return Infinity;
37
+ if (props.maxGroupNum < 1)
38
+ return 0;
39
+ return ~~props.maxGroupNum;
40
+ });
41
+ function addGroup() {
42
+ currentGroupNum.value++;
43
+ }
44
+ async function removeGroup(idx) {
45
+ currentGroupNum.value--;
46
+ await field.value.remove(idx);
47
+ }
48
+ const collector = inject(InjectionBusinessCollector);
49
+ const {
50
+ schemaAdaptor
51
+ } = useFieldListAdaptor(collector);
52
+ return () => {
53
+ return createVNode("section", {
54
+ "class": "form-render__combination"
55
+ }, [createVNode("header", {
56
+ "class": "form-render__combinationHeader"
57
+ }, [createVNode("div", {
58
+ "class": "form-render__combinationHeaderText"
59
+ }, [props.title]), createVNode(NButton, {
60
+ "onClick": addGroup,
61
+ "type": "info",
62
+ "text": true,
63
+ "disabled": currentGroupNum.value >= maxGroupNum.value
64
+ }, {
65
+ default: () => [createTextVNode("\u65B0\u589E")]
66
+ })]), Array.from({
67
+ length: currentGroupNum.value
68
+ }).map((_, idx) => createVNode("section", {
69
+ "class": "form-render__combinationContent"
70
+ }, [createVNode(RecursionField, {
71
+ "schema": createObjSchema(schemaAdaptor(props.getProperties())),
72
+ "name": idx
73
+ }, null), idx === 0 ? null : createVNode("i", {
74
+ "class": "form-render__combinationClose",
75
+ "onClick": () => removeGroup(idx)
76
+ }, ["-"])]))]);
77
+ };
78
+ }
79
+ });
80
+ const COMBINATION = connect(script);
81
+
82
+ export { COMBINATION };
@@ -1,9 +1,10 @@
1
1
  import { defineComponent, inject, computed, createVNode } from 'vue';
2
2
  import { isVoidField } from '@formily/core';
3
- import { connect, mapProps } from '@formily/vue';
3
+ import { useField, connect, mapProps } from '@formily/vue';
4
4
  import { NFormItem } from 'naive-ui';
5
5
  import AnnotationEdit from '../../../../../packages/annotation-edit';
6
- import { InjectionAnnotation } from '../../../../../packages/form-render/src/constants';
6
+ import { InjectionAnnotation, InjectionFormUUID } from '../../../../../packages/form-render/src/constants';
7
+ import { elementIdEscape } from '../../../../../packages/form-render/src/utils';
7
8
 
8
9
  const script = defineComponent({
9
10
  props: {
@@ -38,6 +39,11 @@ const script = defineComponent({
38
39
  return annotation.value && props.annotation !== false;
39
40
  });
40
41
  const showLabel = computed(() => props.label && props.label !== " ");
42
+ const field = useField();
43
+ const uuid = inject(InjectionFormUUID);
44
+ const id = computed(() => {
45
+ return elementIdEscape(`${uuid}-${field.value.path.toString()}`);
46
+ });
41
47
  function renderLabel() {
42
48
  return showLabel.value ? createVNode("section", {
43
49
  "class": "form-render__formItemLabel"
@@ -47,7 +53,9 @@ const script = defineComponent({
47
53
  }]
48
54
  }, [props.label]), showAnnotation.value ? renderAnnotation() : null]) : null;
49
55
  }
50
- return () => createVNode(NFormItem, null, {
56
+ return () => createVNode(NFormItem, {
57
+ id: id.value
58
+ }, {
51
59
  ...slots,
52
60
  label: renderLabel
53
61
  });
@@ -7,6 +7,7 @@ export * from './linebar';
7
7
  export * from './inputGroup';
8
8
  export * from './date';
9
9
  export * from './cascader';
10
+ export * from './jsonCombination';
10
11
  export * from './combination';
11
12
  export * from './checkbox';
12
13
  export * from './switch';
@@ -7,7 +7,8 @@ export { LINEBAR } from './linebar.js';
7
7
  export { INPUT_GROUP } from './inputGroup.js';
8
8
  export { DATE } from './date.js';
9
9
  export { SEARCH_CASCADE } from './cascader.js';
10
- export { COMBINATION } from './combination/index.js';
10
+ export { JSON_COMBINATION } from './jsonCombination/index.js';
11
+ export { COMBINATION } from './combination.js';
11
12
  export { CHECKBOX } from './checkbox.js';
12
13
  export { SWITCH } from './switch.js';
13
14
  export { RADIO } from './radio.js';
@@ -0,0 +1,44 @@
1
+ import { FieldItem } from '../../../../../../../es/packages/form-render';
2
+ import { PropType } from 'vue';
3
+ export declare const JSON_COMBINATION: import("vue").DefineComponent<{
4
+ title: {
5
+ type: StringConstructor;
6
+ default: string;
7
+ };
8
+ value: {
9
+ type: (ArrayConstructor | StringConstructor)[];
10
+ };
11
+ maxGroupNum: {
12
+ type: NumberConstructor;
13
+ };
14
+ getProperties: {
15
+ type: PropType<() => FieldItem[]>;
16
+ default: () => never[];
17
+ };
18
+ onInput: {};
19
+ onBlur: {};
20
+ onChange: {};
21
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
22
+ title: {
23
+ type: StringConstructor;
24
+ default: string;
25
+ };
26
+ value: {
27
+ type: (ArrayConstructor | StringConstructor)[];
28
+ };
29
+ maxGroupNum: {
30
+ type: NumberConstructor;
31
+ };
32
+ getProperties: {
33
+ type: PropType<() => FieldItem[]>;
34
+ default: () => never[];
35
+ };
36
+ onInput: {};
37
+ onBlur: {};
38
+ onChange: {};
39
+ }>> & {
40
+ "onUpdate:value"?: ((...args: any[]) => any) | undefined;
41
+ }, {
42
+ title: string;
43
+ getProperties: () => FieldItem[];
44
+ }>;
@@ -1,9 +1,9 @@
1
1
  import { defineComponent, ref, computed, watch, onMounted, createVNode, createTextVNode } from 'vue';
2
2
  import { isField } from '@formily/core';
3
3
  import { Path } from '@formily/path';
4
- import { isNumber, isEqual } from 'lodash-es';
5
- import { useDeepValidate } from '../../../../../../packages/form-render/src/components/renderer/combination/hooks/useDeepValidate';
6
- import { mergeDeepProperties, formRenderLog } from '../../../utils/index.js';
4
+ import { isNumber, isArray, isEqual } from 'lodash-es';
5
+ import { useDeepValidate } from '../../../../../../packages/form-render/src/components/renderer/jsonCombination/hooks/useDeepValidate';
6
+ import { formRenderLog, mergeDeepProperties } from '../../../utils/index.js';
7
7
  import { connect, mapProps } from '@formily/vue';
8
8
  import { useDebounceFn, isObject } from '@vueuse/core';
9
9
  import { NButton } from 'naive-ui';
@@ -11,14 +11,14 @@ import FormRender from '../../../FormRender.js';
11
11
  import { assignUpdateValue } from '../../../utils/schema.js';
12
12
 
13
13
  const script = defineComponent({
14
- name: "FormCombination",
14
+ name: "FormJsonCombination",
15
15
  props: {
16
16
  title: {
17
17
  type: String,
18
18
  default: ""
19
19
  },
20
20
  value: {
21
- type: String
21
+ type: [String, Array]
22
22
  },
23
23
  maxGroupNum: {
24
24
  type: Number
@@ -35,12 +35,18 @@ const script = defineComponent({
35
35
  setup(props, {
36
36
  emit
37
37
  }) {
38
+ formRenderLog("\u5F53\u524DCOMBINATION\u63A7\u4EF6\u4E3Ajson\u6A21\u5F0F,\u63A8\u8350\u4F7F\u7528\u975Ejson\u6A21\u5F0F,FieldItem.jsonCombination=false", "warn");
38
39
  const emitChange = useDebounceFn(function emitChange2() {
39
40
  emit("update:value", JSON.stringify(combinationData.value));
40
41
  }, 300);
41
42
  const combinationData = ref([]);
42
43
  const currentGroupNum = computed(() => combinationData.value.length);
43
44
  function setCombinationData(data, withInitialData = false) {
45
+ if (isArray(data)) {
46
+ if (!data.length)
47
+ data.push({});
48
+ data = JSON.stringify(data);
49
+ }
44
50
  const parsedData = getParsedData(data);
45
51
  if (!needLoad(parsedData))
46
52
  return;
@@ -66,7 +72,6 @@ const script = defineComponent({
66
72
  return null;
67
73
  return result;
68
74
  } catch (e) {
69
- formRenderLog(`invalid JSON value ${data2} in COMBINATION => ${props.title}`, "warn");
70
75
  return null;
71
76
  }
72
77
  }
@@ -141,7 +146,7 @@ const script = defineComponent({
141
146
  })]), Array.from({
142
147
  length: currentGroupNum.value
143
148
  }).map((_, idx) => createVNode("section", {
144
- "class": "form-render__combinationContent"
149
+ "class": "form-render__combinationContentJson"
145
150
  }, [createVNode(FormRenderComponent, {
146
151
  "ref": (_ref) => setFormRenderRef(idx, _ref),
147
152
  "fieldList": props.getProperties(),
@@ -153,6 +158,6 @@ const script = defineComponent({
153
158
  };
154
159
  }
155
160
  });
156
- const COMBINATION = connect(script, mapProps(assignUpdateValue));
161
+ const JSON_COMBINATION = connect(script, mapProps(assignUpdateValue));
157
162
 
158
- export { COMBINATION };
163
+ export { JSON_COMBINATION };
@@ -9,6 +9,5 @@ export * from './useFormValidator';
9
9
  export * from './useBusinessBinding';
10
10
  export * from './useChangeContext';
11
11
  export * from './useFormItemDeps';
12
- export * from './useInitialData';
13
12
  export * from './useAnchor';
14
13
  export * from './useFormContext';
@@ -9,6 +9,5 @@ export { useFormValidator } from './useFormValidator.js';
9
9
  export { BusinessCollector, useBusinessBinding } from './useBusinessBinding.js';
10
10
  export { ContextCollector, useChangeContext } from './useChangeContext.js';
11
11
  export { FormItemDepsCollector, useFormItemDeps } from './useFormItemDeps.js';
12
- export { useInitialData } from './useInitialData.js';
13
12
  export { useAnchor } from './useAnchor.js';
14
13
  export { useFormContext } from './useFormContext.js';
@@ -3,7 +3,7 @@ import { FieldItem } from '../types';
3
3
  /**
4
4
  * @description 胶水层, 将低代码平台中的fieldList转换为JSONSchema
5
5
  */
6
- export declare function useFieldListAdaptor(collector: BusinessCollector, uuid: string): {
6
+ export declare function useFieldListAdaptor(collector: BusinessCollector): {
7
7
  schemaAdaptor: (fieldList: FieldItem[]) => Record<string, import("@formily/json-schema/esm/types").Stringify<{
8
8
  [key: symbol]: any;
9
9
  [key: `x-${string}`]: any;
@@ -2,10 +2,10 @@ import { isObject } from '@vueuse/core';
2
2
  import { pick } from 'lodash-es';
3
3
  import { useFormValidator, useTypeNormalize } from '../../../../packages/form-render';
4
4
  import { arrayed, parseNumberFromMaybeString, formRenderLog } from '../utils/index.js';
5
- import { fieldKeyEscape, createLinebarId, elementIdEscape } from '../utils/schema.js';
5
+ import { fieldKeyEscape, createLinebarId } from '../utils/schema.js';
6
6
  import { transformDateFormat } from '../utils/business.js';
7
7
 
8
- function useFieldListAdaptor(collector, uuid) {
8
+ function useFieldListAdaptor(collector) {
9
9
  const { createValidatorSchema } = useFormValidator();
10
10
  const createStandardSchema = (item) => {
11
11
  var _a;
@@ -14,6 +14,7 @@ function useFieldListAdaptor(collector, uuid) {
14
14
  type: (_a = item.fieldType) != null ? _a : "string",
15
15
  title: item.alias || item.name,
16
16
  "x-component": item.html_type,
17
+ default: item.default_val,
17
18
  "x-component-props": {
18
19
  placeholder: item.placeholder,
19
20
  clearable: item.is_empty === "0",
@@ -38,7 +39,6 @@ function useFieldListAdaptor(collector, uuid) {
38
39
  showLabel: item.hide_title !== "1",
39
40
  propertyKey: item.val_key,
40
41
  annotation: item.annotation,
41
- id: elementIdEscape(`${uuid}-${item.val_key}`),
42
42
  ...item.decoratorProps || {}
43
43
  }
44
44
  });
@@ -102,6 +102,10 @@ function useFieldListAdaptor(collector, uuid) {
102
102
  };
103
103
  const createCombinationSchema = (item) => {
104
104
  const schema = createStandardSchema(item);
105
+ schema.type = "array";
106
+ if (item.jsonCombination !== false) {
107
+ schema["x-component"] = "JSON_COMBINATION";
108
+ }
105
109
  Object.assign(schema["x-decorator-props"], {
106
110
  showLabel: false,
107
111
  showFeedback: false
@@ -171,6 +171,10 @@ export declare type FieldItem = {
171
171
  * COMBINATION控件最大表单组数量
172
172
  */
173
173
  maxGroupNum: number;
174
+ /**
175
+ * COMBINATION json format
176
+ */
177
+ jsonCombination: boolean;
174
178
  /**
175
179
  * COMBINATION控件子项
176
180
  */
@@ -43,7 +43,7 @@ export declare type FormChangePayload = {
43
43
  fieldKey: string;
44
44
  fieldName: string;
45
45
  fieldInstance: DataField;
46
- context: FormChangeContext;
46
+ context?: FormChangeContext;
47
47
  };
48
48
  export declare type DependKeyType = string | Record<string, string> | Array<{
49
49
  paramName: string;
@@ -1,9 +1,10 @@
1
1
  import { inject, provide, computed, createVNode, Fragment } from 'vue';
2
+ import { Path } from '@formily/path';
2
3
  import { isObject } from '@vue/shared';
3
4
  import { isNumber, isString, isFunction } from 'lodash-es';
4
5
  export { isIdCard, isMobile, parseAge2Birthday, parseAge2FromContext, parseBirthday, parseIdCard, transformDateFormat } from './business.js';
5
6
  export { queryDecorator, queryInput } from './dom.js';
6
- export { assignUpdateValue, createLinebarId, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema } from './schema.js';
7
+ export { assignUpdateValue, createLinebarId, createObjSchema, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema } from './schema.js';
7
8
 
8
9
  function formRenderLog(message, type = "log") {
9
10
  console[type](`[FormRender]: ${message}`);
@@ -19,7 +20,7 @@ function mergeDeepProperties(target, fieldList, traverseProperties = ["children"
19
20
  if (!isObject(field))
20
21
  return;
21
22
  if (targetPropertyFor(field) != null && _target[propertyFor(field)] == null) {
22
- _target[propertyFor(field)] = targetPropertyFor(field);
23
+ Path.setIn(_target, propertyFor(field), targetPropertyFor(field));
23
24
  }
24
25
  traverseProperties.forEach((p) => {
25
26
  if (!field[p])
@@ -14,3 +14,63 @@ export declare function assignUpdateValue(props: AnyObject, field: GeneralField)
14
14
  [x: string]: any;
15
15
  };
16
16
  export declare function traverseFieldList(fieldList: FieldItem[], handler: (field: FieldItem) => void): void;
17
+ export declare function createObjSchema(properties: Record<string, ISchema>): {
18
+ type: string;
19
+ properties: Record<string, import("@formily/json-schema/esm/types").Stringify<{
20
+ [key: symbol]: any;
21
+ [key: `x-${string}`]: any;
22
+ [key: `x-${number}`]: any;
23
+ version?: string | undefined;
24
+ name?: import("@formily/json-schema/esm/types").SchemaKey | undefined;
25
+ title?: any;
26
+ description?: any;
27
+ default?: any;
28
+ readOnly?: boolean | undefined;
29
+ writeOnly?: boolean | undefined;
30
+ type?: import("@formily/json-schema/esm/types").SchemaTypes | undefined;
31
+ enum?: import("@formily/json-schema/esm/types").SchemaEnum<any> | undefined;
32
+ const?: any;
33
+ multipleOf?: number | undefined;
34
+ maximum?: number | undefined;
35
+ exclusiveMaximum?: number | undefined;
36
+ minimum?: number | undefined;
37
+ exclusiveMinimum?: number | undefined;
38
+ maxLength?: number | undefined;
39
+ minLength?: number | undefined;
40
+ pattern?: string | RegExp | undefined;
41
+ maxItems?: number | undefined;
42
+ minItems?: number | undefined;
43
+ uniqueItems?: boolean | undefined;
44
+ maxProperties?: number | undefined;
45
+ minProperties?: number | undefined;
46
+ required?: string | boolean | string[] | undefined;
47
+ format?: string | undefined;
48
+ $ref?: string | undefined;
49
+ $namespace?: string | undefined;
50
+ definitions?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
51
+ properties?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
52
+ items?: import("@formily/json-schema/esm/types").SchemaItems<any, any, any, any, any, any, any, any> | undefined;
53
+ additionalItems?: import("@formily/json-schema/esm/types").Stringify<any> | undefined;
54
+ patternProperties?: import("@formily/json-schema/esm/types").SchemaProperties<any, any, any, any, any, any, any, any> | undefined;
55
+ additionalProperties?: import("@formily/json-schema/esm/types").Stringify<any> | undefined;
56
+ "x-value"?: any;
57
+ "x-index"?: number | undefined;
58
+ "x-pattern"?: any;
59
+ "x-display"?: any;
60
+ "x-validator"?: any;
61
+ "x-decorator"?: any;
62
+ "x-decorator-props"?: any;
63
+ "x-component"?: any;
64
+ "x-component-props"?: any;
65
+ "x-reactions"?: import("@formily/json-schema/esm/types").SchemaReactions<any> | undefined;
66
+ "x-content"?: any;
67
+ "x-data"?: any;
68
+ "x-visible"?: boolean | undefined;
69
+ "x-hidden"?: boolean | undefined;
70
+ "x-disabled"?: boolean | undefined;
71
+ "x-editable"?: boolean | undefined;
72
+ "x-read-only"?: boolean | undefined;
73
+ "x-read-pretty"?: boolean | undefined;
74
+ "x-compile-omitted"?: string[] | undefined;
75
+ }>>;
76
+ };
@@ -14,7 +14,7 @@ function fieldKeyEscape(fieldList) {
14
14
  return fieldList.map((f) => f.val_key).join("-").replace(/[.]/g, "_");
15
15
  }
16
16
  function elementIdEscape(id) {
17
- return id.replace(".", "-");
17
+ return id.replace(/[.]/g, "-");
18
18
  }
19
19
  function createLinebarId(id) {
20
20
  return elementIdEscape(`id-${id}`);
@@ -90,5 +90,8 @@ function traverseFieldList(fieldList, handler) {
90
90
  }
91
91
  traverse(fieldList);
92
92
  }
93
+ function createObjSchema(properties) {
94
+ return { type: "object", properties };
95
+ }
93
96
 
94
- export { assignUpdateValue, createLinebarId, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema };
97
+ export { assignUpdateValue, createLinebarId, createObjSchema, elementIdEscape, fieldKeyEscape, getParentLinebar, traverseDependKey, traverseFieldList, traverseSchema };
@@ -125,8 +125,15 @@
125
125
  vertical-align: middle;
126
126
  font-size: 16px;
127
127
  }
128
+ .form-render__combinationContentJson {
129
+ position: relative;
130
+ }
128
131
  .form-render__combinationContent {
129
132
  position: relative;
133
+ display: grid !important;
134
+ grid-template-columns: repeat(var(--column), minmax(0px, 1fr));
135
+ align-items: start;
136
+ gap: 0 16px;
130
137
  }
131
138
  .form-render__complex {
132
139
  width: 100%;
@@ -2946,8 +2946,15 @@ body > .vxe-table--tooltip-wrapper {
2946
2946
  vertical-align: middle;
2947
2947
  font-size: 16px;
2948
2948
  }
2949
+ .form-render__combinationContentJson {
2950
+ position: relative;
2951
+ }
2949
2952
  .form-render__combinationContent {
2950
2953
  position: relative;
2954
+ display: grid !important;
2955
+ grid-template-columns: repeat(var(--column), minmax(0px, 1fr));
2956
+ align-items: start;
2957
+ gap: 0 16px;
2951
2958
  }
2952
2959
  .form-render__complex {
2953
2960
  width: 100%;
@@ -51,7 +51,6 @@ export { useFormValidator } from './form-render/src/hooks/useFormValidator.js';
51
51
  export { BusinessCollector, useBusinessBinding } from './form-render/src/hooks/useBusinessBinding.js';
52
52
  export { ContextCollector, useChangeContext } from './form-render/src/hooks/useChangeContext.js';
53
53
  export { FormItemDepsCollector, useFormItemDeps } from './form-render/src/hooks/useFormItemDeps.js';
54
- export { useInitialData } from './form-render/src/hooks/useInitialData.js';
55
54
  export { useAnchor } from './form-render/src/hooks/useAnchor.js';
56
55
  export { useFormContext } from './form-render/src/hooks/useFormContext.js';
57
56
  export { GlobalShortcutProvider, ShortcutManager, useShortcuts } from './shortcut-provider/src/hooks/useShortcuts.js';
@@ -122,6 +122,7 @@ declare const ShortcutSetter: SFCWithInstall<import("vue").DefineComponent<{
122
122
  content?: string | import("..").FormRenderer | Record<string, import("..").FormRenderer> | undefined;
123
123
  lazyRequest?: boolean | undefined;
124
124
  maxGroupNum?: number | undefined;
125
+ jsonCombination?: boolean | undefined;
125
126
  children?: any[] | undefined;
126
127
  properties?: any[] | undefined;
127
128
  componentProps?: import("../../../es/src/types").AnyObject | undefined;
@@ -1931,7 +1932,9 @@ declare const ShortcutSetter: SFCWithInstall<import("vue").DefineComponent<{
1931
1932
  }>>;
1932
1933
  emit: (event: "formChange", ...args: any[]) => void;
1933
1934
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
1934
- formModel: import("@formily/core").Form<any>;
1935
+ formModel: import("@formily/core").Form<{
1936
+ [x: string]: any;
1937
+ }>;
1935
1938
  SchemaField: import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
1936
1939
  businessCollector: import("..").BusinessCollector;
1937
1940
  formItemDepsCollector: import("..").FormItemDepsCollector;
@@ -124,6 +124,7 @@ declare const _default: import("vue").DefineComponent<{
124
124
  content?: string | import("../../../../es/packages/form-render").FormRenderer | Record<string, import("../../../../es/packages/form-render").FormRenderer> | undefined;
125
125
  lazyRequest?: boolean | undefined;
126
126
  maxGroupNum?: number | undefined;
127
+ jsonCombination?: boolean | undefined;
127
128
  children?: any[] | undefined;
128
129
  properties?: any[] | undefined;
129
130
  componentProps?: import("../../../../es/src/types").AnyObject | undefined;
@@ -1933,7 +1934,9 @@ declare const _default: import("vue").DefineComponent<{
1933
1934
  }>>;
1934
1935
  emit: (event: "formChange", ...args: any[]) => void;
1935
1936
  nuiThemeOverrides: import("naive-ui").GlobalThemeOverrides;
1936
- formModel: import("@formily/core").Form<any>;
1937
+ formModel: import("@formily/core").Form<{
1938
+ [x: string]: any;
1939
+ }>;
1937
1940
  SchemaField: Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions>;
1938
1941
  businessCollector: import("../../../../es/packages/form-render").BusinessCollector;
1939
1942
  formItemDepsCollector: import("../../../../es/packages/form-render").FormItemDepsCollector;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "cnhis-design-vue",
3
3
  "private": false,
4
- "version": "3.1.16-beta.13",
4
+ "version": "3.1.16-beta.14",
5
5
  "license": "ISC",
6
6
  "module": "es/packages/index.js",
7
7
  "main": "es/packages/index.js",
@@ -1,5 +0,0 @@
1
- import { AnyObject } from '../../../../../es/src/types';
2
- import { FieldItem } from '../types';
3
- export declare function useInitialData(): {
4
- assignInitialData: (initialData?: AnyObject, fieldList?: FieldItem[]) => any;
5
- };
@@ -1,16 +0,0 @@
1
- import { Path } from '@formily/path';
2
- import { mergeWith } from 'lodash-es';
3
- import { traverseFieldList } from '../../../../packages/form-render/src/utils';
4
-
5
- function useInitialData() {
6
- function assignInitialData(initialData, fieldList) {
7
- const defaultVal = {};
8
- fieldList && traverseFieldList(fieldList, (field) => {
9
- field.default_val != void 0 && Path.setIn(defaultVal, field.val_key, field.default_val);
10
- });
11
- return mergeWith({}, initialData, defaultVal);
12
- }
13
- return { assignInitialData };
14
- }
15
-
16
- export { useInitialData };