cnhis-design-vue 3.1.16-beta.7 → 3.1.16

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 (77) hide show
  1. package/es/packages/big-table/index.d.ts +1 -1
  2. package/es/packages/big-table/src/BigTable.vue.d.ts +3 -19
  3. package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.js +6 -4
  4. package/es/packages/big-table/src/components/edit-form/edit-date.js +13 -3
  5. package/es/packages/big-table/src/components/edit-form/edit-time.js +1 -0
  6. package/es/packages/big-table/src/hooks/useAnchor.d.ts +1 -1
  7. package/es/packages/big-table/src/hooks/useAnchor.js +20 -12
  8. package/es/packages/big-table/src/hooks/useSeparateRow.js +5 -2
  9. package/es/packages/button-print/index.d.ts +4 -1
  10. package/es/packages/button-print/src/ButtonPrint.vue.d.ts +4 -1
  11. package/es/packages/button-print/src/ButtonPrint.vue_vue_type_script_setup_true_lang.js +2 -1
  12. package/es/packages/button-print/src/components/IdentityVerification.js +5 -7
  13. package/es/packages/button-print/src/components/IdentityVerification.vue.d.ts +4 -1
  14. package/es/packages/fabric-chart/src/FabricChart.js +1 -1
  15. package/es/packages/fabric-chart/src/components/PopupTip.js +2 -2
  16. package/es/packages/fabric-chart/src/hooks/constant.js +5 -5
  17. package/es/packages/fabric-chart/src/hooks/useCenter.js +31 -25
  18. package/es/packages/fabric-chart/src/hooks/useDraw.js +11 -4
  19. package/es/packages/fabric-chart/src/hooks/useEvent.js +11 -3
  20. package/es/packages/fabric-chart/src/hooks/useOther.js +63 -13
  21. package/es/packages/fabric-chart/src/hooks/useTop.js +5 -8
  22. package/es/packages/form-config/index.d.ts +89 -3337
  23. package/es/packages/form-config/src/FormConfig.js +42 -34
  24. package/es/packages/form-config/src/FormConfig.vue.d.ts +132 -3380
  25. package/es/packages/form-config/src/components/FormConfigCreator.js +13 -11
  26. package/es/packages/form-config/src/components/FormConfigCreator.vue.d.ts +13 -8
  27. package/es/packages/form-config/src/components/FormConfigEdit.js +1 -1
  28. package/es/packages/form-config/src/components/FormConfigEdit.vue.d.ts +64 -33
  29. package/es/packages/form-config/src/constants/index.d.ts +20 -20
  30. package/es/packages/form-config/src/constants/index.js +27 -36
  31. package/es/packages/form-config/src/hooks/useConfigurationField.d.ts +2 -1
  32. package/es/packages/form-config/src/hooks/useConfigurationField.js +28 -42
  33. package/es/packages/form-config/src/hooks/usePresetRenderer.d.ts +2 -3
  34. package/es/packages/form-config/src/hooks/usePresetRenderer.js +16 -19
  35. package/es/packages/form-config/src/hooks/useSortable.js +1 -1
  36. package/es/packages/form-config/src/types/index.d.ts +22 -4
  37. package/es/packages/form-config/src/utils/index.d.ts +2 -0
  38. package/es/packages/form-config/src/utils/index.js +15 -0
  39. package/es/packages/form-config/style/index.css +27 -3
  40. package/es/packages/form-render/index.d.ts +3 -1
  41. package/es/packages/form-render/index.js +0 -1
  42. package/es/packages/form-render/src/FormRender.js +7 -8
  43. package/es/packages/form-render/src/FormRender.vue.d.ts +3 -1
  44. package/es/packages/form-render/src/components/renderer/cascader.d.ts +2 -14
  45. package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts} +3 -3
  46. package/es/packages/form-render/src/components/renderer/combination.js +92 -0
  47. package/es/packages/form-render/src/components/renderer/date.js +12 -4
  48. package/es/packages/form-render/src/components/renderer/formItem.js +11 -3
  49. package/es/packages/form-render/src/components/renderer/index.d.ts +1 -0
  50. package/es/packages/form-render/src/components/renderer/index.js +2 -1
  51. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.d.ts +0 -0
  52. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.js +0 -0
  53. package/es/packages/form-render/src/components/renderer/jsonCombination/index.d.ts +44 -0
  54. package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/index.js +29 -14
  55. package/es/packages/form-render/src/components/renderer/select.d.ts +1 -10
  56. package/es/packages/form-render/src/components/renderer/select.js +7 -4
  57. package/es/packages/form-render/src/hooks/index.d.ts +0 -1
  58. package/es/packages/form-render/src/hooks/index.js +0 -1
  59. package/es/packages/form-render/src/hooks/useFieldListAdaptor.d.ts +1 -1
  60. package/es/packages/form-render/src/hooks/useFieldListAdaptor.js +12 -5
  61. package/es/packages/form-render/src/hooks/useTypeNormalize.js +2 -1
  62. package/es/packages/form-render/src/types/fieldItem.d.ts +15 -12
  63. package/es/packages/form-render/src/types/index.d.ts +2 -2
  64. package/es/packages/form-render/src/utils/index.js +3 -2
  65. package/es/packages/form-render/src/utils/schema.d.ts +60 -0
  66. package/es/packages/form-render/src/utils/schema.js +5 -2
  67. package/es/packages/form-render/style/index.css +11 -8
  68. package/es/packages/index.css +38 -11
  69. package/es/packages/index.js +0 -1
  70. package/es/packages/shortcut-provider/src/hooks/useShortcuts.js +1 -0
  71. package/es/packages/shortcut-setter/index.d.ts +9 -6
  72. package/es/packages/shortcut-setter/src/ShortcutSetter.vue.d.ts +9 -6
  73. package/es/src/utils/index.d.ts +1 -0
  74. package/es/src/utils/index.js +11 -1
  75. package/package.json +4 -4
  76. package/es/packages/form-render/src/hooks/useInitialData.d.ts +0 -5
  77. package/es/packages/form-render/src/hooks/useInitialData.js +0 -16
@@ -2,7 +2,8 @@ import { defineComponent, computed, createVNode, mergeProps, inject } from 'vue'
2
2
  import { isString, isArray, isFunction } from 'lodash-es';
3
3
  import Draggable from 'vuedraggable';
4
4
  import { InjectionActiveFieldItem, WidgetTextMap } from '../../../../packages/form-config/src/constants';
5
- import { useSortable } from '../../../../packages/form-config/src/hooks';
5
+ import { useSortable } from '../../../../packages/form-config/src/hooks/useSortable';
6
+ import { layoutWidthEnum2Column } from '../../../../packages/form-config/src/utils';
6
7
  import { NEllipsis } from 'naive-ui';
7
8
 
8
9
  function usePresetRenderer(textFormatter) {
@@ -19,14 +20,15 @@ function usePresetRenderer(textFormatter) {
19
20
  }
20
21
  }, [createVNode(NEllipsis, {
21
22
  "class": ["form-config__renderer--default", {
22
- "is-required": fieldItem.is_null === "0",
23
- "is-disabled": fieldItem.is_edit === "0"
23
+ "is-required": fieldItem.required,
24
+ "is-disabled": fieldItem.editable === false
24
25
  }]
25
26
  }, {
26
27
  default: () => getDisplayText()
27
28
  })]);
28
29
  function getDisplayText() {
29
- return textFormatter(fieldItem, `${fieldItem.alias}(${WidgetTextMap.get(fieldItem.html_type) || "\u63A7\u4EF6"})`);
30
+ const type = WidgetTextMap.get(fieldItem.type);
31
+ return textFormatter(fieldItem, `${fieldItem.name}${type ? `(${type})` : ""}`);
30
32
  }
31
33
  }
32
34
  };
@@ -44,12 +46,11 @@ function usePresetRenderer(textFormatter) {
44
46
  return props.fieldItem[key];
45
47
  }
46
48
  const classList = computed(() => {
47
- return `form-config__renderer--complex form-config__renderer--complex--${fieldFor("display") || "grid"}`;
49
+ return "form-config__renderer--complex form-config__renderer--complex--grid";
48
50
  });
49
51
  const style = computed(() => {
50
52
  return {
51
- "--item-column": fieldFor("elem_width"),
52
- ...fieldFor("wrapperStyle")
53
+ "--item-column": layoutWidthEnum2Column(fieldFor("layoutWidthEnum"))
53
54
  };
54
55
  });
55
56
  function renderField(fieldItem) {
@@ -57,7 +58,7 @@ function usePresetRenderer(textFormatter) {
57
58
  return createVNode("div", {
58
59
  "class": "form-config__displayContentItem",
59
60
  "style": {
60
- "--item-column": fieldItem.elem_width
61
+ "--item-column": layoutWidthEnum2Column(fieldItem.layoutWidthEnum)
61
62
  }
62
63
  }, [createVNode(Renderer, {
63
64
  "fieldItem": fieldItem
@@ -65,14 +66,10 @@ function usePresetRenderer(textFormatter) {
65
66
  }
66
67
  const childrenList = computed({
67
68
  get() {
68
- return fieldFor("html_type") === "COMBINATION" ? fieldFor("children") : fieldFor("properties");
69
+ return fieldFor("children");
69
70
  },
70
71
  set(v) {
71
- if (fieldFor("html_type") === "COMBINATION") {
72
- props.fieldItem.children = v;
73
- } else {
74
- props.fieldItem.properties = v;
75
- }
72
+ props.fieldItem.children = v;
76
73
  }
77
74
  });
78
75
  const {
@@ -82,7 +79,7 @@ function usePresetRenderer(textFormatter) {
82
79
  return () => createVNode(DraggableComponent, mergeProps(commonConfig, {
83
80
  "class": classList.value,
84
81
  "style": style.value,
85
- "group": fieldFor("val_key"),
82
+ "group": fieldFor("key"),
86
83
  "modelValue": childrenList.value,
87
84
  "onUpdate:modelValue": ($event) => childrenList.value = $event
88
85
  }), {
@@ -101,12 +98,12 @@ function usePresetRenderer(textFormatter) {
101
98
  matcher
102
99
  }) => {
103
100
  if (isString(matcher))
104
- return matcher === fieldItem.html_type;
101
+ return matcher === fieldItem.type;
105
102
  if (isArray(matcher))
106
- return matcher.includes(fieldItem.html_type);
103
+ return matcher.includes(fieldItem.type);
107
104
  if (isFunction(matcher))
108
- return matcher(fieldItem.html_type);
109
- return matcher.test(fieldItem.html_type);
105
+ return matcher(fieldItem.type);
106
+ return matcher.test(fieldItem.type);
110
107
  }).renderer;
111
108
  }
112
109
  return {
@@ -24,7 +24,7 @@ function useSortable() {
24
24
  }
25
25
  to.classList.add("is-choosing-area");
26
26
  }
27
- const commonConfig = { onMove, onChoose, onUnchoose, tag: "section", animation: "150", "item-key": "val_key" };
27
+ const commonConfig = { onMove, onChoose, onUnchoose, tag: "section", animation: "150", "item-key": "key" };
28
28
  return { commonConfig };
29
29
  }
30
30
 
@@ -1,6 +1,5 @@
1
1
  import { Component, FunctionalComponent } from 'vue';
2
2
  import { ArrayAble } from '../../../../../es/src/types';
3
- import { FieldItem } from '../../../../../es/packages/form-render';
4
3
  interface Matcher {
5
4
  (type: string): boolean;
6
5
  }
@@ -8,11 +7,30 @@ export declare type FormConfigRenderer = {
8
7
  matcher: ArrayAble<string> | RegExp | Matcher;
9
8
  renderer: Component | FunctionalComponent;
10
9
  };
10
+ export declare type FormConfigType = 'NEWLINE' | 'LINE_BAR' | 'OTHER' | string;
11
+ export declare type FormConfigWidth = 'ALL_LINE' | 'HALF_LINE' | 'FIVE_SIX' | 'TWO_THREE' | 'ONE_THREE' | 'THREE_FOUR' | 'ONE_FOUR' | 'ONE_SIX';
12
+ export declare type FormConfigItem = {
13
+ key: string;
14
+ layoutWidthEnum: FormConfigWidth;
15
+ type: FormConfigType;
16
+ name: string;
17
+ } & Partial<{
18
+ show: boolean;
19
+ defaultValue: any;
20
+ defaultExpand: boolean;
21
+ fold: boolean;
22
+ required: boolean;
23
+ editable: boolean;
24
+ notes: string;
25
+ desc: string;
26
+ children: FormConfigItem[];
27
+ }>;
11
28
  export interface FormConfigTextFormatter {
12
- (fieldItem: FieldItem, parsedText: string): string;
29
+ (fieldItem: FormConfigItem, parsedText: string): string;
13
30
  }
14
31
  export interface FormConfigExpose {
15
- loadData(payload: Record<'fieldList' | 'materialList', FieldItem[]>): void;
16
- getData(): Record<'fieldList' | 'materialList', FieldItem[]>;
32
+ loadData(payload: Record<'fieldList', FormConfigItem[]>): void;
33
+ validate(): Promise<unknown>;
34
+ getData(): Record<'fieldList' | 'materialList', FormConfigItem[]>;
17
35
  }
18
36
  export {};
@@ -0,0 +1,2 @@
1
+ import { FormConfigWidth } from '../../../../../es/packages/form-config';
2
+ export declare function layoutWidthEnum2Column(layoutWidthEnum: FormConfigWidth): number;
@@ -0,0 +1,15 @@
1
+ function layoutWidthEnum2Column(layoutWidthEnum) {
2
+ const transferMap = {
3
+ ALL_LINE: 12,
4
+ HALF_LINE: 6,
5
+ FIVE_SIX: 10,
6
+ TWO_THREE: 8,
7
+ ONE_THREE: 4,
8
+ THREE_FOUR: 9,
9
+ ONE_FOUR: 3,
10
+ ONE_SIX: 2
11
+ };
12
+ return transferMap[layoutWidthEnum] || 12;
13
+ }
14
+
15
+ export { layoutWidthEnum2Column };
@@ -5,6 +5,7 @@
5
5
  .form-config__material {
6
6
  padding: 16px;
7
7
  box-sizing: border-box;
8
+ flex-shrink: 0;
8
9
  width: 200px;
9
10
  background: white;
10
11
  }
@@ -15,8 +16,12 @@
15
16
  height: 40px;
16
17
  }
17
18
  .form-config__materialContent {
18
- padding: 8px;
19
- min-height: 400px;
19
+ padding: 16px;
20
+ box-sizing: border-box;
21
+ flex-shrink: 0;
22
+ overflow-y: auto;
23
+ max-height: var(--max-height);
24
+ min-height: 200px;
20
25
  display: flex;
21
26
  flex-direction: column;
22
27
  gap: 8px;
@@ -33,6 +38,8 @@
33
38
  .form-config__displayWrapper {
34
39
  padding: 16px;
35
40
  box-sizing: border-box;
41
+ flex-shrink: 0;
42
+ min-width: 400px;
36
43
  flex: 1;
37
44
  padding: 16px 0;
38
45
  }
@@ -45,6 +52,9 @@
45
52
  .form-config__displayContent {
46
53
  padding: 16px;
47
54
  box-sizing: border-box;
55
+ flex-shrink: 0;
56
+ overflow-y: auto;
57
+ max-height: var(--max-height);
48
58
  height: fit-content;
49
59
  background: #eeeeee;
50
60
  display: grid !important;
@@ -58,9 +68,23 @@
58
68
  .form-config__config {
59
69
  padding: 16px;
60
70
  box-sizing: border-box;
61
- width: 220px;
71
+ flex-shrink: 0;
72
+ width: 240px;
62
73
  background: white;
63
74
  }
75
+ .form-config__configHeader {
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: space-between;
79
+ height: 40px;
80
+ }
81
+ .form-config__configContent {
82
+ padding: 16px;
83
+ box-sizing: border-box;
84
+ flex-shrink: 0;
85
+ overflow-y: auto;
86
+ max-height: var(--max-height);
87
+ }
64
88
  .form-config__renderer--default {
65
89
  display: flex;
66
90
  align-items: center;
@@ -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,10 +49,12 @@ 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();
56
+ businessCollector.trigger(fieldKey);
57
+ formItemDepsCollector.trigger(fieldKey);
57
58
  emit("formChange", {
58
59
  fieldInstance: field,
59
60
  fieldKey,
@@ -61,23 +62,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
61
62
  value: field.value,
62
63
  context: await changeContextCollector.getContext(fieldKey)
63
64
  });
64
- businessCollector.trigger(fieldKey);
65
- formItemDepsCollector.trigger(fieldKey);
66
65
  });
67
66
  }
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,17 +1,6 @@
1
- import { AnyObject, ArrayAble, Func } from '../../../../../../es/src/types';
2
- import { FormRequestType } from '../../types';
1
+ import { AnyObject, Func } from '../../../../../../es/src/types';
2
+ import { UrlConfig } from '../../../../../../es/packages/form-render';
3
3
  import { PropType } from 'vue';
4
- declare type DependKeyObj = {
5
- paramName: string;
6
- paramValue: string;
7
- };
8
- declare type UrlConfig = {
9
- method?: FormRequestType;
10
- nameKey?: string;
11
- valueKey?: string;
12
- dependKey?: ArrayAble<string> | Record<string, string> | ArrayAble<DependKeyObj>;
13
- url: string;
14
- };
15
4
  export declare const SEARCH_CASCADE: import("vue").DefineComponent<{
16
5
  options: {
17
6
  type: PropType<AnyObject[]>;
@@ -51,4 +40,3 @@ export declare const SEARCH_CASCADE: import("vue").DefineComponent<{
51
40
  }, {
52
41
  options: AnyObject[];
53
42
  }>;
54
- export {};
@@ -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,92 @@
1
+ import { defineComponent, ref, computed, inject, createVNode } 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, NIcon } from 'naive-ui';
6
+ import { InjectionBusinessCollector } from '../../../../../packages/form-render/src/constants';
7
+ import { createObjSchema } from '../../../../../packages/form-render/src/utils';
8
+ import { AddCircleOutline, RemoveCircle } from '@vicons/ionicons5';
9
+
10
+ const script = defineComponent({
11
+ name: "FormCombination",
12
+ props: {
13
+ title: {
14
+ type: String,
15
+ default: ""
16
+ },
17
+ value: {
18
+ type: Array
19
+ },
20
+ maxGroupNum: {
21
+ type: Number
22
+ },
23
+ getProperties: {
24
+ type: Function,
25
+ default: () => []
26
+ },
27
+ onInput: {},
28
+ onBlur: {},
29
+ onChange: {}
30
+ },
31
+ emits: ["update:value"],
32
+ setup(props) {
33
+ const field = useField();
34
+ const currentGroupNum = ref(1);
35
+ const maxGroupNum = computed(() => {
36
+ if (!isNumber(props.maxGroupNum))
37
+ return Infinity;
38
+ if (props.maxGroupNum < 1)
39
+ return 0;
40
+ return ~~props.maxGroupNum;
41
+ });
42
+ function addGroup() {
43
+ currentGroupNum.value++;
44
+ }
45
+ async function removeGroup(idx) {
46
+ currentGroupNum.value--;
47
+ await field.value.remove(idx);
48
+ }
49
+ const collector = inject(InjectionBusinessCollector);
50
+ const {
51
+ schemaAdaptor
52
+ } = useFieldListAdaptor(collector);
53
+ return () => {
54
+ return createVNode("section", {
55
+ "class": "form-render__combination"
56
+ }, [createVNode("header", {
57
+ "class": "form-render__combinationHeader"
58
+ }, [createVNode("div", {
59
+ "class": "form-render__combinationHeaderText"
60
+ }, [props.title]), createVNode(NButton, {
61
+ "onClick": addGroup,
62
+ "type": "info",
63
+ "text": true,
64
+ "disabled": currentGroupNum.value >= maxGroupNum.value
65
+ }, {
66
+ icon: () => createVNode(NIcon, {
67
+ "component": AddCircleOutline
68
+ }, null),
69
+ default: () => "\u65B0\u589E"
70
+ })]), Array.from({
71
+ length: currentGroupNum.value
72
+ }).map((_, idx) => createVNode("section", {
73
+ "class": "form-render__combinationContent"
74
+ }, [createVNode(RecursionField, {
75
+ "schema": createObjSchema(schemaAdaptor(props.getProperties())),
76
+ "name": idx
77
+ }, null), idx === 0 ? null : createVNode(NButton, {
78
+ "text": true,
79
+ "type": "error",
80
+ "class": "form-render__combinationClose",
81
+ "onClick": () => removeGroup(idx)
82
+ }, {
83
+ icon: () => createVNode(NIcon, {
84
+ "component": RemoveCircle
85
+ }, null)
86
+ })]))]);
87
+ };
88
+ }
89
+ });
90
+ const COMBINATION = connect(script);
91
+
92
+ export { COMBINATION };
@@ -1,4 +1,5 @@
1
1
  import { defineComponent, computed, watch, createVNode, mergeProps } from 'vue';
2
+ import { generateTimeFormat } from '../../../../../src/utils';
2
3
  import { connect, mapProps } from '@formily/vue';
3
4
  import { isObject } from '@vueuse/core';
4
5
  import { format } from 'date-fns';
@@ -66,9 +67,7 @@ const script = defineComponent({
66
67
  }
67
68
  }
68
69
  const validateConfig = computed(() => {
69
- const result = {
70
- valueFormat: props.valueFormat
71
- };
70
+ const result = {};
72
71
  if (isObject(props.validate)) {
73
72
  const {
74
73
  min_date,
@@ -81,6 +80,15 @@ const script = defineComponent({
81
80
  }
82
81
  return result;
83
82
  });
83
+ const formatConfig = computed(() => {
84
+ return {
85
+ valueFormat: props.valueFormat,
86
+ format: props.valueFormat,
87
+ timePickerProps: {
88
+ format: generateTimeFormat(props.valueFormat)
89
+ }
90
+ };
91
+ });
84
92
  function formatDate(value) {
85
93
  if (!value)
86
94
  return value;
@@ -95,7 +103,7 @@ const script = defineComponent({
95
103
  get: () => formatDate(props.value),
96
104
  set: (value) => emit("update:value", value)
97
105
  });
98
- return () => createVNode(NDatePicker, mergeProps(validateConfig.value, {
106
+ return () => createVNode(NDatePicker, mergeProps(validateConfig.value, formatConfig.value, {
99
107
  "formatted-value": valueRef.value,
100
108
  "onUpdate:formatted-value": ($event) => valueRef.value = $event
101
109
  }), null);
@@ -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
+ }>;