cnhis-design-vue 3.1.16-beta.8 → 3.1.17-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/packages/big-table/index.d.ts +1 -1
- package/es/packages/big-table/src/BigTable.vue.d.ts +3 -19
- package/es/packages/big-table/src/BigTable.vue_vue_type_script_setup_true_lang.js +6 -4
- package/es/packages/big-table/src/components/edit-form/edit-date.js +13 -3
- package/es/packages/big-table/src/components/edit-form/edit-time.js +1 -0
- package/es/packages/big-table/src/hooks/useAnchor.d.ts +1 -1
- package/es/packages/big-table/src/hooks/useAnchor.js +20 -12
- package/es/packages/big-table/src/hooks/useSeparateRow.js +5 -2
- package/es/packages/button-print/index.d.ts +4 -1
- package/es/packages/button-print/src/ButtonPrint.vue.d.ts +4 -1
- package/es/packages/button-print/src/components/IdentityVerification.js +5 -7
- package/es/packages/button-print/src/components/IdentityVerification.vue.d.ts +4 -1
- package/es/packages/fabric-chart/src/FabricChart.js +1 -1
- package/es/packages/fabric-chart/src/components/PopupTip.js +2 -2
- package/es/packages/fabric-chart/src/hooks/constant.js +1 -1
- package/es/packages/fabric-chart/src/hooks/useCenter.js +11 -2
- package/es/packages/fabric-chart/src/hooks/useOther.js +63 -13
- package/es/packages/form-config/index.d.ts +90 -3338
- package/es/packages/form-config/src/FormConfig.js +42 -34
- package/es/packages/form-config/src/FormConfig.vue.d.ts +134 -3382
- package/es/packages/form-config/src/components/FormConfigCreator.js +13 -11
- package/es/packages/form-config/src/components/FormConfigCreator.vue.d.ts +16 -11
- package/es/packages/form-config/src/components/FormConfigEdit.js +1 -1
- package/es/packages/form-config/src/components/FormConfigEdit.vue.d.ts +60 -29
- package/es/packages/form-config/src/constants/index.d.ts +21 -21
- package/es/packages/form-config/src/constants/index.js +27 -36
- package/es/packages/form-config/src/hooks/useConfigurationField.d.ts +2 -1
- package/es/packages/form-config/src/hooks/useConfigurationField.js +28 -42
- package/es/packages/form-config/src/hooks/usePresetRenderer.d.ts +2 -3
- package/es/packages/form-config/src/hooks/usePresetRenderer.js +16 -19
- package/es/packages/form-config/src/hooks/useSortable.js +1 -1
- package/es/packages/form-config/src/types/index.d.ts +22 -4
- package/es/packages/form-config/src/utils/index.d.ts +2 -0
- package/es/packages/form-config/src/utils/index.js +15 -0
- package/es/packages/form-config/style/index.css +27 -3
- package/es/packages/form-render/index.d.ts +6 -4
- package/es/packages/form-render/index.js +0 -1
- package/es/packages/form-render/src/FormRender.js +8 -9
- package/es/packages/form-render/src/FormRender.vue.d.ts +6 -4
- package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts} +3 -3
- package/es/packages/form-render/src/components/renderer/combination.js +92 -0
- package/es/packages/form-render/src/components/renderer/date.js +12 -4
- package/es/packages/form-render/src/components/renderer/formItem.js +12 -5
- package/es/packages/form-render/src/components/renderer/index.d.ts +1 -0
- package/es/packages/form-render/src/components/renderer/index.js +2 -1
- package/es/packages/form-render/src/components/renderer/inputGroup.js +1 -1
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.d.ts +0 -0
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/hooks/useDeepValidate.js +0 -0
- package/es/packages/form-render/src/components/renderer/jsonCombination/index.d.ts +44 -0
- package/es/packages/form-render/src/components/renderer/{combination → jsonCombination}/index.js +29 -14
- package/es/packages/form-render/src/components/renderer/select.js +11 -8
- package/es/packages/form-render/src/constants/index.d.ts +2 -2
- package/es/packages/form-render/src/hooks/index.d.ts +0 -1
- package/es/packages/form-render/src/hooks/index.js +0 -1
- package/es/packages/form-render/src/hooks/useAnchor.d.ts +3 -3
- package/es/packages/form-render/src/hooks/useAsyncQueue.d.ts +2 -2
- package/es/packages/form-render/src/hooks/useFieldListAdaptor.d.ts +1 -1
- package/es/packages/form-render/src/hooks/useFieldListAdaptor.js +12 -5
- package/es/packages/form-render/src/hooks/useFieldVisitor.js +6 -5
- package/es/packages/form-render/src/hooks/useFormRenderLifeCycle.d.ts +4 -4
- package/es/packages/form-render/src/hooks/useFormRequest.d.ts +2 -2
- package/es/packages/form-render/src/hooks/useTypeNormalize.js +2 -1
- package/es/packages/form-render/src/types/fieldItem.d.ts +4 -0
- package/es/packages/form-render/src/types/index.d.ts +4 -4
- package/es/packages/form-render/src/utils/dom.d.ts +2 -2
- package/es/packages/form-render/src/utils/index.js +3 -2
- package/es/packages/form-render/src/utils/schema.d.ts +62 -2
- package/es/packages/form-render/src/utils/schema.js +5 -2
- package/es/packages/form-render/style/index.css +11 -8
- package/es/packages/index.css +38 -11
- package/es/packages/index.js +0 -1
- package/es/packages/shortcut-provider/src/hooks/useShortcuts.js +1 -0
- package/es/packages/shortcut-setter/index.d.ts +7 -4
- package/es/packages/shortcut-setter/src/ShortcutSetter.vue.d.ts +7 -4
- package/es/src/types/index.d.ts +2 -2
- package/es/src/utils/index.d.ts +1 -0
- package/es/src/utils/index.js +11 -1
- package/global.d.ts +8 -8
- package/package.json +4 -4
- package/es/packages/form-render/src/hooks/useInitialData.d.ts +0 -5
- package/es/packages/form-render/src/hooks/useInitialData.js +0 -16
|
@@ -2,62 +2,48 @@ import { EditAbleField, widgetWidthOptionConfig, isShowOptionConfig, isNotFoldOp
|
|
|
2
2
|
|
|
3
3
|
function useConfigurationField() {
|
|
4
4
|
const fieldMap = /* @__PURE__ */ new Map([
|
|
5
|
-
[EditAbleField.
|
|
6
|
-
[EditAbleField.
|
|
5
|
+
[EditAbleField.NAME, { alias: "\u540D\u79F0", elem_width: 12, is_null: "0", html_type: "INPUT" }],
|
|
6
|
+
[EditAbleField.NOTES, { alias: "\u95EE\u53F7\u63D0\u793A", elem_width: 12, html_type: "INPUT" }],
|
|
7
7
|
[
|
|
8
|
-
EditAbleField.
|
|
9
|
-
{ alias: "\u9ED8\u8BA4\u503C",
|
|
8
|
+
EditAbleField.DEFAULT_VALUE,
|
|
9
|
+
{ alias: "\u9ED8\u8BA4\u503C", elem_width: 12, html_type: "INPUT", validate: { max_length: 20 } }
|
|
10
10
|
],
|
|
11
11
|
[
|
|
12
|
-
EditAbleField.
|
|
13
|
-
{
|
|
14
|
-
alias: "\u5BBD\u5EA6",
|
|
15
|
-
fieldType: "number",
|
|
16
|
-
val_key: "elem_width",
|
|
17
|
-
html_type: "SELECT",
|
|
18
|
-
elem_width: 12,
|
|
19
|
-
...widgetWidthOptionConfig()
|
|
20
|
-
}
|
|
12
|
+
EditAbleField.LAYOUT_WIDTH_ENUM,
|
|
13
|
+
{ alias: "\u5BBD\u5EA6", fieldType: "number", html_type: "SELECT", elem_width: 12, ...widgetWidthOptionConfig() }
|
|
21
14
|
],
|
|
15
|
+
[EditAbleField.DESC, { alias: "\u8BF4\u660E\u6587\u672C", elem_width: 12, html_type: "INPUT", validate: { max_length: 30 } }],
|
|
22
16
|
[
|
|
23
|
-
EditAbleField.
|
|
24
|
-
{ alias: "\
|
|
17
|
+
EditAbleField.DEFAULT_EXPAND,
|
|
18
|
+
{ alias: "\u662F\u5426\u9ED8\u8BA4\u5C55\u5F00", html_type: "SWITCH", elem_width: 12, ...isShowOptionConfig() }
|
|
25
19
|
],
|
|
26
|
-
[
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
],
|
|
30
|
-
[
|
|
31
|
-
EditAbleField.IS_NOT_FOLD,
|
|
32
|
-
{ val_key: "is_not_fold", alias: "\u662F\u5426\u53EF\u6298\u53E0", html_type: "SWITCH", elem_width: 12, ...isNotFoldOptionConfig() }
|
|
33
|
-
],
|
|
34
|
-
[
|
|
35
|
-
EditAbleField.IS_EDIT,
|
|
36
|
-
{ val_key: "is_edit", alias: "\u662F\u5426\u53EF\u7F16\u8F91", html_type: "SWITCH", elem_width: 12, ...isEditOptionConfig() }
|
|
37
|
-
],
|
|
38
|
-
[
|
|
39
|
-
EditAbleField.IS_NULL,
|
|
40
|
-
{ val_key: "is_null", alias: "\u662F\u5426\u5FC5\u586B", html_type: "SWITCH", elem_width: 12, ...isNullOptionConfig() }
|
|
41
|
-
]
|
|
20
|
+
[EditAbleField.FOLD, { alias: "\u662F\u5426\u53EF\u6298\u53E0", html_type: "SWITCH", elem_width: 12, ...isNotFoldOptionConfig() }],
|
|
21
|
+
[EditAbleField.EDITABLE, { alias: "\u662F\u5426\u53EF\u7F16\u8F91", html_type: "SWITCH", elem_width: 12, ...isEditOptionConfig() }],
|
|
22
|
+
[EditAbleField.REQUIRED, { alias: "\u662F\u5426\u5FC5\u586B", html_type: "SWITCH", elem_width: 12, ...isNullOptionConfig() }]
|
|
42
23
|
]);
|
|
43
24
|
function generateFieldListByKeys(keyList) {
|
|
44
|
-
return keyList.map((key) =>
|
|
25
|
+
return keyList.map((key) => {
|
|
26
|
+
return { ...fieldMap.get(key), val_key: key };
|
|
27
|
+
});
|
|
45
28
|
}
|
|
46
29
|
function generateFieldListByFieldItem(fieldItem) {
|
|
47
30
|
const htmlMap = new Map([
|
|
48
|
-
[
|
|
49
|
-
|
|
31
|
+
[
|
|
32
|
+
"LINE_BAR",
|
|
33
|
+
[EditAbleField.NAME, EditAbleField.LAYOUT_WIDTH_ENUM, EditAbleField.DEFAULT_EXPAND, EditAbleField.FOLD]
|
|
34
|
+
],
|
|
35
|
+
...["NEWLINE", "COMPLEX", "COMBINATION"].map((key) => [key, [EditAbleField.NAME, EditAbleField.LAYOUT_WIDTH_ENUM]])
|
|
50
36
|
]);
|
|
51
37
|
const defaultItems = [
|
|
52
|
-
EditAbleField.
|
|
53
|
-
EditAbleField.
|
|
54
|
-
EditAbleField.
|
|
55
|
-
EditAbleField.
|
|
56
|
-
EditAbleField.
|
|
57
|
-
EditAbleField.
|
|
58
|
-
EditAbleField.
|
|
38
|
+
EditAbleField.NAME,
|
|
39
|
+
EditAbleField.DEFAULT_VALUE,
|
|
40
|
+
EditAbleField.LAYOUT_WIDTH_ENUM,
|
|
41
|
+
EditAbleField.DESC,
|
|
42
|
+
EditAbleField.NOTES,
|
|
43
|
+
EditAbleField.EDITABLE,
|
|
44
|
+
EditAbleField.REQUIRED
|
|
59
45
|
];
|
|
60
|
-
const keys = htmlMap.get(fieldItem.
|
|
46
|
+
const keys = htmlMap.get(fieldItem.type) || defaultItems;
|
|
61
47
|
return generateFieldListByKeys(keys);
|
|
62
48
|
}
|
|
63
49
|
return { generateFieldListByKeys, generateFieldListByFieldItem };
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FormConfigTextFormatter } from '../types';
|
|
1
|
+
import { FormConfigItem, FormConfigTextFormatter } from '../types';
|
|
3
2
|
export declare function usePresetRenderer(textFormatter: FormConfigTextFormatter): {
|
|
4
|
-
getRenderer: (fieldItem:
|
|
3
|
+
getRenderer: (fieldItem: FormConfigItem) => import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions> | import("vue").FunctionalComponent<{}, {}>;
|
|
5
4
|
};
|
|
@@ -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.
|
|
23
|
-
"is-disabled": fieldItem.
|
|
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
|
-
|
|
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
|
|
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("
|
|
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.
|
|
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("
|
|
69
|
+
return fieldFor("children");
|
|
69
70
|
},
|
|
70
71
|
set(v) {
|
|
71
|
-
|
|
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("
|
|
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.
|
|
101
|
+
return matcher === fieldItem.type;
|
|
105
102
|
if (isArray(matcher))
|
|
106
|
-
return matcher.includes(fieldItem.
|
|
103
|
+
return matcher.includes(fieldItem.type);
|
|
107
104
|
if (isFunction(matcher))
|
|
108
|
-
return matcher(fieldItem.
|
|
109
|
-
return matcher.test(fieldItem.
|
|
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": "
|
|
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:
|
|
29
|
+
(fieldItem: FormConfigItem, parsedText: string): string;
|
|
13
30
|
}
|
|
14
31
|
export interface FormConfigExpose {
|
|
15
|
-
loadData(payload: Record<'fieldList'
|
|
16
|
-
|
|
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,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:
|
|
19
|
-
|
|
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
|
-
|
|
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;
|
|
@@ -112,7 +112,7 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
112
112
|
lifeCycle: {
|
|
113
113
|
type: import("vue").PropType<Partial<{
|
|
114
114
|
onSetup(): void;
|
|
115
|
-
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").
|
|
115
|
+
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").UndefinedAble<import("../../../es/src/types").AnyObject>;
|
|
116
116
|
afterRequest(fieldKey: string, payload?: any): import("../../../es/src/types").AnyObject[];
|
|
117
117
|
}>>;
|
|
118
118
|
};
|
|
@@ -227,7 +227,7 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
227
227
|
lifeCycle: {
|
|
228
228
|
type: import("vue").PropType<Partial<{
|
|
229
229
|
onSetup(): void;
|
|
230
|
-
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").
|
|
230
|
+
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").UndefinedAble<import("../../../es/src/types").AnyObject>;
|
|
231
231
|
afterRequest(fieldKey: string, payload?: any): import("../../../es/src/types").AnyObject[];
|
|
232
232
|
}>>;
|
|
233
233
|
};
|
|
@@ -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<
|
|
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;
|
|
@@ -1727,7 +1729,7 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{
|
|
|
1727
1729
|
lifeCycle: {
|
|
1728
1730
|
type: import("vue").PropType<Partial<{
|
|
1729
1731
|
onSetup(): void;
|
|
1730
|
-
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").
|
|
1732
|
+
beforeRequest(fieldKey: string, params?: import("../../../es/src/types").AnyObject | undefined): void | import("../../../es/src/types").UndefinedAble<import("../../../es/src/types").AnyObject>;
|
|
1731
1733
|
afterRequest(fieldKey: string, payload?: any): import("../../../es/src/types").AnyObject[];
|
|
1732
1734
|
}>>;
|
|
1733
1735
|
};
|
|
@@ -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';
|
|
@@ -26,7 +25,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
26
25
|
fieldList: { type: Array },
|
|
27
26
|
initialData: { type: Object, default: () => ({}) },
|
|
28
27
|
fieldVisitor: { type: Object },
|
|
29
|
-
column: { type: Number, default:
|
|
28
|
+
column: { type: Number, default: 24 },
|
|
30
29
|
maxHeight: { type: [Number, String], default: "" },
|
|
31
30
|
anchor: { type: Boolean, default: false },
|
|
32
31
|
parallelism: { type: Number, default: 3 },
|
|
@@ -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:
|
|
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
|
|
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
|
|
77
|
+
return createObjSchema(schemaAdaptor(_fieldList));
|
|
79
78
|
}
|
|
80
|
-
return {
|
|
79
|
+
return createObjSchema({});
|
|
81
80
|
});
|
|
82
81
|
const { currentAnchor, generateAnchorList, anchorIdList, formHeight, onScroll } = useAnchor(props, scrollbarRef, formItemDepsCollector);
|
|
83
82
|
watch(parsedSchema, generateAnchorList, { immediate: true });
|
|
@@ -112,7 +112,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
112
112
|
lifeCycle: {
|
|
113
113
|
type: PropType<Partial<{
|
|
114
114
|
onSetup(): void;
|
|
115
|
-
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").
|
|
115
|
+
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").UndefinedAble<AnyObject>;
|
|
116
116
|
afterRequest(fieldKey: string, payload?: any): AnyObject[];
|
|
117
117
|
}>>;
|
|
118
118
|
};
|
|
@@ -227,7 +227,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
227
227
|
lifeCycle: {
|
|
228
228
|
type: PropType<Partial<{
|
|
229
229
|
onSetup(): void;
|
|
230
|
-
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").
|
|
230
|
+
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").UndefinedAble<AnyObject>;
|
|
231
231
|
afterRequest(fieldKey: string, payload?: any): AnyObject[];
|
|
232
232
|
}>>;
|
|
233
233
|
};
|
|
@@ -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<
|
|
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;
|
|
@@ -1727,7 +1729,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
1727
1729
|
lifeCycle: {
|
|
1728
1730
|
type: PropType<Partial<{
|
|
1729
1731
|
onSetup(): void;
|
|
1730
|
-
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").
|
|
1732
|
+
beforeRequest(fieldKey: string, params?: AnyObject | undefined): void | import("../../../../es/src/types").UndefinedAble<AnyObject>;
|
|
1731
1733
|
afterRequest(fieldKey: string, payload?: any): AnyObject[];
|
|
1732
1734
|
}>>;
|
|
1733
1735
|
};
|
package/es/packages/form-render/src/components/renderer/{combination/index.d.ts → combination.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FieldItem } from '
|
|
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:
|
|
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:
|
|
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);
|