@antdv-vue/pro-utils 0.0.0-stage → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +123 -0
- package/README.md +80 -2
- package/dist/autoFocusToFirstChild/index.d.ts +9 -0
- package/dist/autoFocusToFirstChild/index.js +36 -0
- package/dist/childrenToArray/index.d.ts +7 -0
- package/dist/childrenToArray/index.js +8 -0
- package/dist/components/CopyToClipboard/copy/index.d.ts +10 -0
- package/dist/components/CopyToClipboard/copy/index.js +84 -0
- package/dist/components/CopyToClipboard/copy/toggle-selection.d.ts +4 -0
- package/dist/components/CopyToClipboard/copy/toggle-selection.js +27 -0
- package/dist/components/CopyToClipboard/index.d.ts +14 -0
- package/dist/components/CopyToClipboard/index.js +13 -0
- package/dist/components/Draggable/Draggable.d.ts +62 -0
- package/dist/components/Draggable/Draggable.js +162 -0
- package/dist/components/Draggable/DraggableCore.d.ts +40 -0
- package/dist/components/Draggable/DraggableCore.js +149 -0
- package/dist/components/Draggable/index.d.ts +4 -0
- package/dist/components/Draggable/index.js +3 -0
- package/dist/components/Draggable/types.d.ts +30 -0
- package/dist/components/Draggable/types.js +1 -0
- package/dist/components/Draggable/utils/domFns.d.ts +36 -0
- package/dist/components/Draggable/utils/domFns.js +165 -0
- package/dist/components/Draggable/utils/getPrefix.d.ts +6 -0
- package/dist/components/Draggable/utils/getPrefix.js +31 -0
- package/dist/components/Draggable/utils/positionFns.d.ts +13 -0
- package/dist/components/Draggable/utils/positionFns.js +96 -0
- package/dist/components/Draggable/utils/shims.d.ts +7 -0
- package/dist/components/Draggable/utils/shims.js +19 -0
- package/dist/components/DropdownFooter/index.d.ts +20 -0
- package/dist/components/DropdownFooter/index.js +80 -0
- package/dist/components/DropdownFooter/style/index.d.ts +8 -0
- package/dist/components/DropdownFooter/style/index.js +18 -0
- package/dist/components/ErrorBoundary/index.d.ts +25 -0
- package/dist/components/ErrorBoundary/index.js +65 -0
- package/dist/components/FieldLabel/index.d.ts +31 -0
- package/dist/components/FieldLabel/index.js +212 -0
- package/dist/components/FieldLabel/style/index.d.ts +8 -0
- package/dist/components/FieldLabel/style/index.js +146 -0
- package/dist/components/FilterDropdown/index.d.ts +38 -0
- package/dist/components/FilterDropdown/index.js +91 -0
- package/dist/components/FilterDropdown/style/index.d.ts +8 -0
- package/dist/components/FilterDropdown/style/index.js +21 -0
- package/dist/components/FormItem/FormItemInput.d.ts +34 -0
- package/dist/components/FormItem/FormItemInput.js +163 -0
- package/dist/components/FormItem/ItemHolder.d.ts +58 -0
- package/dist/components/FormItem/ItemHolder.js +289 -0
- package/dist/components/FormItem/index.d.ts +64 -0
- package/dist/components/FormItem/index.js +591 -0
- package/dist/components/FormList/Field.d.ts +29 -0
- package/dist/components/FormList/Field.js +106 -0
- package/dist/components/FormList/FieldContext.d.ts +15 -0
- package/dist/components/FormList/FieldContext.js +11 -0
- package/dist/components/FormList/InternalField.d.ts +51 -0
- package/dist/components/FormList/InternalField.js +149 -0
- package/dist/components/FormList/ListContext.d.ts +12 -0
- package/dist/components/FormList/ListContext.js +11 -0
- package/dist/components/FormList/index.d.ts +36 -0
- package/dist/components/FormList/index.js +145 -0
- package/dist/components/FormList/interface.d.ts +9 -0
- package/dist/components/FormList/interface.js +1 -0
- package/dist/components/FormList/namePathType.d.ts +9 -0
- package/dist/components/FormList/namePathType.js +1 -0
- package/dist/components/FormList/utils/index.d.ts +15 -0
- package/dist/components/FormList/utils/index.js +37 -0
- package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.d.ts +21 -0
- package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.js +95 -0
- package/dist/components/InlineErrorFormItem/index.d.ts +14 -0
- package/dist/components/InlineErrorFormItem/index.js +44 -0
- package/dist/components/InlineErrorFormItem/style/index.d.ts +8 -0
- package/dist/components/InlineErrorFormItem/style/index.js +46 -0
- package/dist/components/LabelIconTip/index.d.ts +16 -0
- package/dist/components/LabelIconTip/index.js +79 -0
- package/dist/components/LabelIconTip/style/index.d.ts +8 -0
- package/dist/components/LabelIconTip/style/index.js +38 -0
- package/dist/components/ProFormContext/index.d.ts +51 -0
- package/dist/components/ProFormContext/index.js +11 -0
- package/dist/conversionMomentValue/index.d.ts +48 -0
- package/dist/conversionMomentValue/index.js +103 -0
- package/dist/dateArrayFormatter/index.d.ts +14 -0
- package/dist/dateArrayFormatter/index.js +38 -0
- package/dist/deepMerge/index.d.ts +4 -0
- package/dist/deepMerge/index.js +17 -0
- package/dist/genCopyable/index.d.ts +27 -0
- package/dist/genCopyable/index.js +82 -0
- package/dist/getFieldPropsOrFormItemProps/index.d.ts +18 -0
- package/dist/getFieldPropsOrFormItemProps/index.js +15 -0
- package/dist/getSlot/index.d.ts +8 -0
- package/dist/getSlot/index.js +11 -0
- package/dist/hooks/index.d.ts +9 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/useDebounceFn/index.d.ts +12 -0
- package/dist/hooks/useDebounceFn/index.js +34 -0
- package/dist/hooks/useDebounceValue/index.d.ts +12 -0
- package/dist/hooks/useDebounceValue/index.js +21 -0
- package/dist/hooks/useDocumentTitle/index.d.ts +10 -0
- package/dist/hooks/useDocumentTitle/index.js +12 -0
- package/dist/hooks/useEffect/index.d.ts +6 -0
- package/dist/hooks/useEffect/index.js +17 -0
- package/dist/hooks/useFetchData/index.d.ts +12 -0
- package/dist/hooks/useFetchData/index.js +35 -0
- package/dist/hooks/useLayoutEffect/index.d.ts +6 -0
- package/dist/hooks/useLayoutEffect/index.js +21 -0
- package/dist/hooks/useMemo/index.d.ts +6 -0
- package/dist/hooks/useMemo/index.js +13 -0
- package/dist/hooks/useState/index.d.ts +6 -0
- package/dist/hooks/useState/index.js +11 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.js +58 -0
- package/dist/isBrowser/index.d.ts +4 -0
- package/dist/isBrowser/index.js +8 -0
- package/dist/isDropdownValueType/index.d.ts +4 -0
- package/dist/isDropdownValueType/index.js +8 -0
- package/dist/isImg/index.d.ts +5 -0
- package/dist/isImg/index.js +7 -0
- package/dist/isNil/index.d.ts +4 -0
- package/dist/isNil/index.js +6 -0
- package/dist/isUrl/index.d.ts +9 -0
- package/dist/isUrl/index.js +17 -0
- package/dist/merge/index.d.ts +9 -0
- package/dist/merge/index.js +20 -0
- package/dist/nanoid/index.d.ts +9 -0
- package/dist/nanoid/index.js +25 -0
- package/dist/normalizeProps/index.d.ts +6 -0
- package/dist/normalizeProps/index.js +6 -0
- package/dist/omitBoolean/index.d.ts +9 -0
- package/dist/omitBoolean/index.js +11 -0
- package/dist/omitUndefined/index.d.ts +5 -0
- package/dist/omitUndefined/index.js +11 -0
- package/dist/omitUndefinedAndEmptyArr/index.d.ts +4 -0
- package/dist/omitUndefinedAndEmptyArr/index.js +12 -0
- package/dist/parseValueToDay/index.d.ts +7 -0
- package/dist/parseValueToDay/index.js +21 -0
- package/dist/pickProFormItemProps/index.d.ts +34 -0
- package/dist/pickProFormItemProps/index.js +42 -0
- package/dist/pickProProps/index.d.ts +4 -0
- package/dist/pickProProps/index.js +14 -0
- package/dist/pro-utils.esm.js +3672 -0
- package/dist/proFieldParsingText/index.d.ts +25 -0
- package/dist/proFieldParsingText/index.js +100 -0
- package/dist/runFunction/index.d.ts +5 -0
- package/dist/runFunction/index.js +8 -0
- package/dist/stringify/index.d.ts +7 -0
- package/dist/stringify/index.js +10 -0
- package/dist/transformBooleanProps/index.d.ts +4 -0
- package/dist/transformBooleanProps/index.js +9 -0
- package/dist/transformKeySubmitValue/index.d.ts +24 -0
- package/dist/transformKeySubmitValue/index.js +200 -0
- package/dist/transformVueNodeType/index.d.ts +14 -0
- package/dist/transformVueNodeType/index.js +14 -0
- package/dist/typing.d.ts +562 -0
- package/dist/typing.js +1 -0
- package/dist/useEditableArray/components/CancelEditableAction.d.ts +47 -0
- package/dist/useEditableArray/components/CancelEditableAction.js +90 -0
- package/dist/useEditableArray/components/DeleteEditableAction.d.ts +33 -0
- package/dist/useEditableArray/components/DeleteEditableAction.js +63 -0
- package/dist/useEditableArray/components/SaveEditableAction.d.ts +33 -0
- package/dist/useEditableArray/components/SaveEditableAction.js +79 -0
- package/dist/useEditableArray/index.d.ts +66 -0
- package/dist/useEditableArray/index.js +584 -0
- package/dist/useEditableArray/typing.d.ts +130 -0
- package/dist/useEditableArray/typing.js +1 -0
- package/dist/useEditableMap/index.d.ts +32 -0
- package/dist/useEditableMap/index.js +147 -0
- package/dist/useMediaQuery/index.d.ts +44 -0
- package/dist/useMediaQuery/index.js +99 -0
- package/dist/useMediaQuery/query.d.ts +6 -0
- package/dist/useMediaQuery/query.js +17 -0
- package/dist/useMountMergeState/index.d.ts +11 -0
- package/dist/useMountMergeState/index.js +26 -0
- package/dist/usePrevious/index.d.ts +6 -0
- package/dist/usePrevious/index.js +11 -0
- package/dist/useRefFunction/index.d.ts +4 -0
- package/dist/useRefFunction/index.js +11 -0
- package/package.json +69 -3
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { FormItemInputMiscProps } from "./FormItemInput.js";
|
|
2
|
+
import * as _$vue from "vue";
|
|
3
|
+
import { SlotsType, VNode } from "vue";
|
|
4
|
+
import { VueNode } from "@v-c/util";
|
|
5
|
+
import { FormInstance, FormItemProps as FormItemProps$1, FormItemSlots } from "antdv-next";
|
|
6
|
+
import * as _$antdv_next_config_provider_context0 from "antdv-next/config-provider/context";
|
|
7
|
+
import * as _$antdv_next_dist_form_FormItemLabel0 from "antdv-next/dist/form/FormItemLabel";
|
|
8
|
+
import { NamePath, Store, StoreValue } from "antdv-next/dist/form/types";
|
|
9
|
+
import { FormItemInputProps } from "antdv-next/dist/form/FormItemInput";
|
|
10
|
+
import * as _$antdv_next_dist_form_FormItem_index0 from "antdv-next/dist/form/FormItem/index";
|
|
11
|
+
import * as _$antdv_next_dist_form_Form0 from "antdv-next/dist/form/Form";
|
|
12
|
+
|
|
13
|
+
//#region src/components/FormItem/index.d.ts
|
|
14
|
+
type FormItemProps = FormItemProps$1 & {
|
|
15
|
+
valuePropName?: 'checked' | 'value' | 'fileList';
|
|
16
|
+
initialValue?: any;
|
|
17
|
+
isListField?: boolean;
|
|
18
|
+
isRenderProps?: boolean;
|
|
19
|
+
getValueFromEvent?: (...args: any[]) => StoreValue;
|
|
20
|
+
getValueProps?: (value: StoreValue) => Record<string, unknown>;
|
|
21
|
+
normalize?: (value: StoreValue, prevValue: StoreValue, allValues: Store) => StoreValue;
|
|
22
|
+
dependencies?: NamePath<string | number | boolean>[];
|
|
23
|
+
_internalItemRender?: {
|
|
24
|
+
mark: string;
|
|
25
|
+
render: (props: FormItemInputProps & FormItemInputMiscProps, domList: {
|
|
26
|
+
input: VNode;
|
|
27
|
+
errorList: VNode | null;
|
|
28
|
+
extra: VNode | null;
|
|
29
|
+
}) => VueNode;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
declare const FormItem: _$vue.DefineSetupFnComponent<FormItemProps, {}, SlotsType<FormItemSlots & {
|
|
33
|
+
default: (form?: FormInstance | null) => VNode[];
|
|
34
|
+
}>, _$antdv_next_dist_form_FormItem_index0.BaseFormItemProps & _$antdv_next_config_provider_context0.ComponentBaseProps & Omit<_$antdv_next_dist_form_FormItemLabel0.FormItemLabelProps, "requiredMark"> & FormItemInputProps & {
|
|
35
|
+
noStyle?: boolean;
|
|
36
|
+
id?: string;
|
|
37
|
+
hasFeedback?: boolean | {
|
|
38
|
+
icons: _$antdv_next_dist_form_FormItem_index0.FeedbackIcons;
|
|
39
|
+
};
|
|
40
|
+
validateStatus?: _$antdv_next_dist_form_FormItem_index0.ValidateStatus;
|
|
41
|
+
required?: boolean;
|
|
42
|
+
hidden?: boolean;
|
|
43
|
+
messageVariables?: Record<string, string>;
|
|
44
|
+
layout?: _$antdv_next_dist_form_Form0.FormItemLayout;
|
|
45
|
+
} & {
|
|
46
|
+
valuePropName?: "checked" | "value" | "fileList";
|
|
47
|
+
initialValue?: any;
|
|
48
|
+
isListField?: boolean;
|
|
49
|
+
isRenderProps?: boolean;
|
|
50
|
+
getValueFromEvent?: (...args: any[]) => StoreValue;
|
|
51
|
+
getValueProps?: (value: StoreValue) => Record<string, unknown>;
|
|
52
|
+
normalize?: (value: StoreValue, prevValue: StoreValue, allValues: Store) => StoreValue;
|
|
53
|
+
dependencies?: NamePath<string | number | boolean>[];
|
|
54
|
+
_internalItemRender?: {
|
|
55
|
+
mark: string;
|
|
56
|
+
render: (props: FormItemInputProps & FormItemInputMiscProps, domList: {
|
|
57
|
+
input: VNode;
|
|
58
|
+
errorList: VNode | null;
|
|
59
|
+
extra: VNode | null;
|
|
60
|
+
}) => VueNode;
|
|
61
|
+
};
|
|
62
|
+
} & {}, _$vue.PublicProps>;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { FormItemProps, FormItem as default };
|
|
@@ -0,0 +1,591 @@
|
|
|
1
|
+
import { useFormFieldContextInject } from "../FormList/FieldContext.js";
|
|
2
|
+
import FormListField from "../FormList/Field.js";
|
|
3
|
+
import ItemHolder from "./ItemHolder.js";
|
|
4
|
+
import { cloneVNode, computed, createVNode, defineComponent, isVNode, mergeProps, onBeforeUnmount, shallowRef, watch } from "vue";
|
|
5
|
+
import { clsx, omit } from "@v-c/util";
|
|
6
|
+
import { getNamePath, getValue, setValue } from "antdv-next/dist/form/utils/valueUtil";
|
|
7
|
+
import { useComponentBaseConfig } from "antdv-next/config-provider/context";
|
|
8
|
+
import { useFormContext, useFormItemProvider, useNoStyleItemContext } from "antdv-next/dist/form/context";
|
|
9
|
+
import { filterEmpty } from "@v-c/util/dist/props-util/index";
|
|
10
|
+
import { getSlotPropsFnRun } from "antdv-next/dist/_util/tools";
|
|
11
|
+
import { checkRenderNode } from "antdv-next/dist/_util/vueNode";
|
|
12
|
+
import useCSSVarCls from "antdv-next/dist/config-provider/hooks/useCSSVarCls";
|
|
13
|
+
import StatusProvider from "antdv-next/dist/form/FormItem/StatusProvider";
|
|
14
|
+
import useStyle from "antdv-next/dist/form/style/index";
|
|
15
|
+
import { getFieldId, initialValueFormat, toArray } from "antdv-next/dist/form/util";
|
|
16
|
+
import { validateRules } from "antdv-next/dist/form/utils/validateUtil";
|
|
17
|
+
//#region src/components/FormItem/index.tsx
|
|
18
|
+
function _isSlot(s) {
|
|
19
|
+
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
|
|
20
|
+
}
|
|
21
|
+
const NAME_SPLIT = "__SPLIT__";
|
|
22
|
+
function genEmptyMeta() {
|
|
23
|
+
return {
|
|
24
|
+
errors: [],
|
|
25
|
+
warnings: [],
|
|
26
|
+
touched: false,
|
|
27
|
+
validating: false,
|
|
28
|
+
name: [],
|
|
29
|
+
validated: false
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
const FormItem = /* @__PURE__ */ defineComponent((props, { slots, attrs }) => {
|
|
33
|
+
const formContext = useFormContext();
|
|
34
|
+
const fieldContext = useFormFieldContextInject();
|
|
35
|
+
const mergedValidateTrigger = computed(() => {
|
|
36
|
+
const { trigger, validateTrigger } = props;
|
|
37
|
+
return validateTrigger !== void 0 ? validateTrigger : trigger !== void 0 ? trigger : formContext.value?.validateTrigger;
|
|
38
|
+
});
|
|
39
|
+
const { prefixCls } = useComponentBaseConfig("form", props);
|
|
40
|
+
const notifyParentMetaChange = useNoStyleItemContext();
|
|
41
|
+
const hasName = computed(() => !(props.name === void 0 || props.name === null));
|
|
42
|
+
const namePath = computed(() => {
|
|
43
|
+
return hasName.value ? fieldContext.prefixName?.value ? [...getNamePath(fieldContext.prefixName.value), ...getNamePath(props.name)] : getNamePath(props.name) : [];
|
|
44
|
+
});
|
|
45
|
+
const fieldId = computed(() => getFieldId(namePath.value, formContext.value?.name));
|
|
46
|
+
const rootCls = useCSSVarCls(prefixCls);
|
|
47
|
+
const [hashId, cssVarCls] = useStyle(prefixCls, rootCls);
|
|
48
|
+
const meta = shallowRef({
|
|
49
|
+
...genEmptyMeta(),
|
|
50
|
+
name: namePath.value
|
|
51
|
+
});
|
|
52
|
+
watch(namePath, (val, prev) => {
|
|
53
|
+
const pathChanged = !!(props.noStyle && notifyParentMetaChange && prev?.length && (prev.length !== val.length || prev.some((seg, index) => seg !== val[index])));
|
|
54
|
+
if (pathChanged) notifyParentMetaChange({
|
|
55
|
+
...meta.value,
|
|
56
|
+
name: prev,
|
|
57
|
+
destroy: true
|
|
58
|
+
}, prev);
|
|
59
|
+
const nextMeta = {
|
|
60
|
+
...meta.value,
|
|
61
|
+
name: val
|
|
62
|
+
};
|
|
63
|
+
meta.value = nextMeta;
|
|
64
|
+
if (pathChanged) notifyParentMetaChange(nextMeta, val);
|
|
65
|
+
});
|
|
66
|
+
const errors = shallowRef([]);
|
|
67
|
+
const warnings = shallowRef([]);
|
|
68
|
+
const validateDisabled = shallowRef(false);
|
|
69
|
+
const subFieldErrors = shallowRef({});
|
|
70
|
+
const initialValue = shallowRef(initialValueFormat(formContext.value?.getFieldValue?.(namePath.value)));
|
|
71
|
+
const mergedRules = computed(() => {
|
|
72
|
+
const collectedRules = [];
|
|
73
|
+
const formRules = formContext.value?.rules ? getValue(formContext.value.rules, namePath.value) : void 0;
|
|
74
|
+
if (formRules) collectedRules.push(...Array.isArray(formRules) ? formRules : [formRules]);
|
|
75
|
+
if (props.rules) collectedRules.push(...props.rules);
|
|
76
|
+
if (props.required !== void 0) {
|
|
77
|
+
let ruleType = collectedRules.find((r) => r.type)?.type;
|
|
78
|
+
if (!ruleType) {
|
|
79
|
+
const currentValue = hasName.value ? formContext.value?.getFieldValue?.(namePath.value) ?? getValue(formContext.value?.model ?? {}, namePath.value) : void 0;
|
|
80
|
+
if (typeof currentValue === "number") ruleType = "number";
|
|
81
|
+
else if (typeof currentValue === "boolean") ruleType = "boolean";
|
|
82
|
+
else if (Array.isArray(currentValue)) ruleType = "array";
|
|
83
|
+
}
|
|
84
|
+
const requiredRule = {
|
|
85
|
+
required: !!props.required,
|
|
86
|
+
...ruleType ? { type: ruleType } : {}
|
|
87
|
+
};
|
|
88
|
+
if (mergedValidateTrigger.value !== void 0) requiredRule.validateTrigger = mergedValidateTrigger.value || [];
|
|
89
|
+
collectedRules.push(requiredRule);
|
|
90
|
+
}
|
|
91
|
+
return collectedRules;
|
|
92
|
+
});
|
|
93
|
+
const isRequired = computed(() => mergedRules.value.some((rule) => rule?.required && !rule?.warningOnly));
|
|
94
|
+
const messageVariables = computed(() => {
|
|
95
|
+
let variables = {};
|
|
96
|
+
if (typeof props.label === "string") variables.label = props.label;
|
|
97
|
+
else if (props.name) variables.label = Array.isArray(props.name) ? props.name.join(".") : String(props.name);
|
|
98
|
+
if (props.messageVariables) variables = {
|
|
99
|
+
...variables,
|
|
100
|
+
...props.messageVariables
|
|
101
|
+
};
|
|
102
|
+
return variables;
|
|
103
|
+
});
|
|
104
|
+
const fieldValue = computed(() => {
|
|
105
|
+
if (!hasName.value) return void 0;
|
|
106
|
+
if (formContext.value?.getFieldValue) return formContext.value.getFieldValue(namePath.value);
|
|
107
|
+
return getValue(formContext.value?.model ?? {}, namePath.value);
|
|
108
|
+
});
|
|
109
|
+
const updateMeta = (state) => {
|
|
110
|
+
meta.value = {
|
|
111
|
+
...meta.value,
|
|
112
|
+
...state
|
|
113
|
+
};
|
|
114
|
+
if (props.noStyle && notifyParentMetaChange) notifyParentMetaChange(meta.value, meta.value.name);
|
|
115
|
+
};
|
|
116
|
+
const getRuleTrigger = (rule) => {
|
|
117
|
+
const ruleTrigger = rule.validateTrigger ?? rule.trigger;
|
|
118
|
+
if (ruleTrigger !== void 0) return ruleTrigger;
|
|
119
|
+
if (mergedValidateTrigger.value !== void 0) return mergedValidateTrigger.value;
|
|
120
|
+
return "change";
|
|
121
|
+
};
|
|
122
|
+
const getRuleTriggerList = (rule) => {
|
|
123
|
+
const ruleTrigger = getRuleTrigger(rule);
|
|
124
|
+
if (ruleTrigger === false) return [];
|
|
125
|
+
return toArray(ruleTrigger);
|
|
126
|
+
};
|
|
127
|
+
const validateRulesInner = (options = {}) => {
|
|
128
|
+
if (!namePath.value.length) return Promise.resolve();
|
|
129
|
+
let filteredRules = mergedRules.value;
|
|
130
|
+
const { triggerName } = options;
|
|
131
|
+
if (triggerName) if (mergedValidateTrigger.value === false) filteredRules = [];
|
|
132
|
+
else filteredRules = filteredRules.filter((rule) => {
|
|
133
|
+
return getRuleTriggerList(rule).includes(triggerName);
|
|
134
|
+
});
|
|
135
|
+
if (!filteredRules.length) {
|
|
136
|
+
errors.value = [];
|
|
137
|
+
warnings.value = [];
|
|
138
|
+
updateMeta({
|
|
139
|
+
errors: [],
|
|
140
|
+
warnings: [],
|
|
141
|
+
validating: false,
|
|
142
|
+
validated: true
|
|
143
|
+
});
|
|
144
|
+
formContext.value?.onValidate?.(namePath.value, true, null);
|
|
145
|
+
formContext.value?.triggerFieldsChange?.([namePath.value]);
|
|
146
|
+
return Promise.resolve();
|
|
147
|
+
}
|
|
148
|
+
updateMeta({
|
|
149
|
+
validating: true,
|
|
150
|
+
validated: true
|
|
151
|
+
});
|
|
152
|
+
return validateRules(namePath.value, fieldValue.value, filteredRules, {
|
|
153
|
+
validateMessages: formContext.value?.validateMessages,
|
|
154
|
+
...options
|
|
155
|
+
}, props.validateFirst ?? false, messageVariables.value).catch((e) => e).then((results = []) => {
|
|
156
|
+
const mergedErrors = [];
|
|
157
|
+
const mergedWarnings = [];
|
|
158
|
+
results.forEach(({ rule: { warningOnly }, errors: ruleErrors }) => {
|
|
159
|
+
if (warningOnly) mergedWarnings.push(...ruleErrors);
|
|
160
|
+
else mergedErrors.push(...ruleErrors);
|
|
161
|
+
});
|
|
162
|
+
errors.value = mergedErrors;
|
|
163
|
+
warnings.value = mergedWarnings;
|
|
164
|
+
updateMeta({
|
|
165
|
+
errors: mergedErrors,
|
|
166
|
+
warnings: mergedWarnings,
|
|
167
|
+
validating: false,
|
|
168
|
+
validated: true,
|
|
169
|
+
touched: meta.value.touched
|
|
170
|
+
});
|
|
171
|
+
formContext.value?.onValidate?.(namePath.value, mergedErrors.length === 0, mergedErrors.length ? mergedErrors : null);
|
|
172
|
+
formContext.value?.triggerFieldsChange?.([namePath.value]);
|
|
173
|
+
if (mergedErrors.length) return Promise.reject(results);
|
|
174
|
+
return results;
|
|
175
|
+
});
|
|
176
|
+
};
|
|
177
|
+
const triggerValidate = (triggerName) => {
|
|
178
|
+
if (mergedValidateTrigger.value === false) return;
|
|
179
|
+
if (!mergedRules.value.some((rule) => getRuleTriggerList(rule).includes(triggerName))) return;
|
|
180
|
+
validateRulesInner({ triggerName }).catch((e) => e);
|
|
181
|
+
};
|
|
182
|
+
const clearValidate = () => {
|
|
183
|
+
errors.value = [];
|
|
184
|
+
warnings.value = [];
|
|
185
|
+
updateMeta({
|
|
186
|
+
errors: [],
|
|
187
|
+
warnings: [],
|
|
188
|
+
validating: false
|
|
189
|
+
});
|
|
190
|
+
};
|
|
191
|
+
const eventKey = computed(() => `form-item-${fieldId.value || namePath.value.join("-") || Math.random().toString(36).slice(2)}`);
|
|
192
|
+
const onFieldChange = () => {
|
|
193
|
+
updateMeta({ touched: true });
|
|
194
|
+
triggerValidate("change");
|
|
195
|
+
};
|
|
196
|
+
const resetField = () => {
|
|
197
|
+
validateDisabled.value = true;
|
|
198
|
+
errors.value = [];
|
|
199
|
+
warnings.value = [];
|
|
200
|
+
updateMeta({
|
|
201
|
+
errors: [],
|
|
202
|
+
warnings: [],
|
|
203
|
+
validating: false,
|
|
204
|
+
touched: false,
|
|
205
|
+
validated: false
|
|
206
|
+
});
|
|
207
|
+
if (hasName.value && formContext.value?.model) if (fieldContext.prefixName?.value?.length) {
|
|
208
|
+
if (!fieldContext.prefixName.value.some((segment) => typeof segment === "number")) {
|
|
209
|
+
const resetListStore = setValue(formContext.value.model, fieldContext.prefixName.value, initialValueFormat(fieldContext.initialValue) ?? []);
|
|
210
|
+
Object.assign(formContext.value.model, resetListStore);
|
|
211
|
+
}
|
|
212
|
+
} else {
|
|
213
|
+
const newStore = setValue(formContext.value.model, namePath.value, initialValueFormat(initialValue.value));
|
|
214
|
+
Object.assign(formContext.value.model, newStore);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
const onFieldBlur = () => {
|
|
218
|
+
updateMeta({ touched: true });
|
|
219
|
+
triggerValidate("blur");
|
|
220
|
+
};
|
|
221
|
+
const onFieldFocus = () => {
|
|
222
|
+
updateMeta({ touched: true });
|
|
223
|
+
triggerValidate("focus");
|
|
224
|
+
};
|
|
225
|
+
watch(fieldValue, (val, prev) => {
|
|
226
|
+
if (!hasName.value) return;
|
|
227
|
+
if (validateDisabled.value) {
|
|
228
|
+
validateDisabled.value = false;
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (!meta.value.touched && val !== prev) updateMeta({ touched: true });
|
|
232
|
+
formContext.value?.triggerValuesChange?.(namePath.value, val);
|
|
233
|
+
triggerValidate("change");
|
|
234
|
+
}, { immediate: false });
|
|
235
|
+
const onSubItemMetaChange = (subMeta, uniqueKeys) => {
|
|
236
|
+
const clone = { ...subFieldErrors.value };
|
|
237
|
+
const mergedNameKey = [...subMeta.name.slice(0, -1), ...uniqueKeys].join(NAME_SPLIT);
|
|
238
|
+
if (subMeta.destroy) delete clone[mergedNameKey];
|
|
239
|
+
else clone[mergedNameKey] = subMeta;
|
|
240
|
+
subFieldErrors.value = clone;
|
|
241
|
+
};
|
|
242
|
+
const mergedErrorList = computed(() => {
|
|
243
|
+
const errorList = [...errors.value];
|
|
244
|
+
const warningList = [...warnings.value];
|
|
245
|
+
Object.values(subFieldErrors.value).forEach((subFieldError) => {
|
|
246
|
+
errorList.push(...subFieldError.errors || []);
|
|
247
|
+
warningList.push(...subFieldError.warnings || []);
|
|
248
|
+
});
|
|
249
|
+
return {
|
|
250
|
+
errors: errorList,
|
|
251
|
+
warnings: warningList
|
|
252
|
+
};
|
|
253
|
+
});
|
|
254
|
+
const rootClassName = computed(() => clsx(cssVarCls.value, rootCls.value, hashId.value, props.rootClass));
|
|
255
|
+
watch(hasName, (val, _, onCleanup) => {
|
|
256
|
+
if (val && formContext.value?.addField) {
|
|
257
|
+
formContext.value.addField(eventKey.value, {
|
|
258
|
+
onFieldBlur,
|
|
259
|
+
namePath: () => namePath.value,
|
|
260
|
+
getValue: () => fieldValue.value,
|
|
261
|
+
getMeta: () => meta.value,
|
|
262
|
+
rules: () => mergedRules.value,
|
|
263
|
+
validateRules: (options) => validateRulesInner(options),
|
|
264
|
+
resetField,
|
|
265
|
+
clearValidate,
|
|
266
|
+
setFieldState: (state) => {
|
|
267
|
+
if (state.errors) errors.value = state.errors;
|
|
268
|
+
if (state.warnings) warnings.value = state.warnings;
|
|
269
|
+
updateMeta({
|
|
270
|
+
...meta.value,
|
|
271
|
+
...state,
|
|
272
|
+
errors: state.errors ?? meta.value.errors,
|
|
273
|
+
warnings: state.warnings ?? meta.value.warnings
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
onCleanup(() => {
|
|
278
|
+
formContext.value?.removeField?.(eventKey.value);
|
|
279
|
+
});
|
|
280
|
+
} else formContext.value?.removeField?.(eventKey.value);
|
|
281
|
+
}, { immediate: true });
|
|
282
|
+
onBeforeUnmount(() => {
|
|
283
|
+
if (props.noStyle && notifyParentMetaChange) notifyParentMetaChange({
|
|
284
|
+
...meta.value,
|
|
285
|
+
destroy: true
|
|
286
|
+
}, meta.value.name);
|
|
287
|
+
formContext.value?.removeField?.(eventKey.value);
|
|
288
|
+
});
|
|
289
|
+
useFormItemProvider({
|
|
290
|
+
fieldId,
|
|
291
|
+
triggerBlur: onFieldBlur,
|
|
292
|
+
triggerChange: onFieldChange,
|
|
293
|
+
clearValidate,
|
|
294
|
+
triggerFocus: onFieldFocus
|
|
295
|
+
});
|
|
296
|
+
function renderLayout(baseChildren, currentFieldId, isRequiredMark) {
|
|
297
|
+
if (Array.isArray(baseChildren) && baseChildren.length === 1 && isVNode(baseChildren[0]) || isVNode(baseChildren)) {
|
|
298
|
+
const child = isVNode(baseChildren) ? baseChildren : baseChildren[0];
|
|
299
|
+
const childProps = child.props || {};
|
|
300
|
+
const _onBlur = childProps.onBlur;
|
|
301
|
+
const _onFocus = childProps.onFocus;
|
|
302
|
+
if (_onBlur) delete child.props.onBlur;
|
|
303
|
+
if (_onFocus) delete child.props.onFocus;
|
|
304
|
+
baseChildren = createVNode(child, {
|
|
305
|
+
id: childProps.id || currentFieldId,
|
|
306
|
+
onBlur: (...args) => {
|
|
307
|
+
onFieldBlur();
|
|
308
|
+
if (_onBlur) if (Array.isArray(_onBlur)) _onBlur.forEach((fn) => {
|
|
309
|
+
if (typeof fn === "function") fn(...args);
|
|
310
|
+
});
|
|
311
|
+
else _onBlur?.(...args);
|
|
312
|
+
},
|
|
313
|
+
onFocus: (...args) => {
|
|
314
|
+
onFieldFocus();
|
|
315
|
+
if (_onFocus) if (Array.isArray(_onFocus)) _onFocus.forEach((fn) => {
|
|
316
|
+
if (typeof fn === "function") fn(...args);
|
|
317
|
+
});
|
|
318
|
+
else _onFocus?.(...args);
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
if (props.noStyle && !props.hidden) return createVNode(StatusProvider, {
|
|
323
|
+
"prefixCls": prefixCls.value,
|
|
324
|
+
"hasFeedback": props.hasFeedback,
|
|
325
|
+
"validateStatus": props.validateStatus,
|
|
326
|
+
"meta": meta.value,
|
|
327
|
+
"errors": mergedErrorList.value.errors,
|
|
328
|
+
"warnings": mergedErrorList.value.warnings,
|
|
329
|
+
"noStyle": true,
|
|
330
|
+
"name": props.name
|
|
331
|
+
}, _isSlot(baseChildren) ? baseChildren : { default: () => [baseChildren] });
|
|
332
|
+
const tooltipSlotValue = getSlotPropsFnRun(slots, props, "tooltip", false, props.tooltip);
|
|
333
|
+
let mergedTooltip = props.tooltip;
|
|
334
|
+
if (tooltipSlotValue !== void 0) if (!!(props.tooltip && typeof props.tooltip === "object" && !Array.isArray(props.tooltip) && !isVNode(props.tooltip))) mergedTooltip = !!(tooltipSlotValue && typeof tooltipSlotValue === "object" && !Array.isArray(tooltipSlotValue) && !isVNode(tooltipSlotValue)) ? {
|
|
335
|
+
...props.tooltip,
|
|
336
|
+
...tooltipSlotValue
|
|
337
|
+
} : {
|
|
338
|
+
...props.tooltip,
|
|
339
|
+
title: tooltipSlotValue
|
|
340
|
+
};
|
|
341
|
+
else mergedTooltip = tooltipSlotValue;
|
|
342
|
+
return createVNode(ItemHolder, mergeProps(omit(props, ["isRenderProps"]), {
|
|
343
|
+
"tooltip": mergedTooltip,
|
|
344
|
+
"label": getSlotPropsFnRun(slots, props, "label"),
|
|
345
|
+
"extra": getSlotPropsFnRun(slots, props, "extra"),
|
|
346
|
+
"help": getSlotPropsFnRun(slots, props, "help")
|
|
347
|
+
}, attrs, {
|
|
348
|
+
"rootClass": rootClassName.value,
|
|
349
|
+
"prefixCls": prefixCls.value,
|
|
350
|
+
"fieldId": currentFieldId,
|
|
351
|
+
"isRequired": isRequiredMark,
|
|
352
|
+
"errors": mergedErrorList.value.errors,
|
|
353
|
+
"warnings": mergedErrorList.value.warnings,
|
|
354
|
+
"meta": meta.value,
|
|
355
|
+
"onSubItemMetaChange": onSubItemMetaChange,
|
|
356
|
+
"layout": props.layout,
|
|
357
|
+
"name": props.name
|
|
358
|
+
}), { default: () => [createVNode(StatusProvider, {
|
|
359
|
+
"prefixCls": prefixCls.value,
|
|
360
|
+
"meta": meta.value,
|
|
361
|
+
"errors": mergedErrorList.value.errors,
|
|
362
|
+
"warnings": mergedErrorList.value.warnings,
|
|
363
|
+
"hasFeedback": props.hasFeedback,
|
|
364
|
+
"validateStatus": props.validateStatus,
|
|
365
|
+
"name": props.name
|
|
366
|
+
}, _isSlot(baseChildren) ? baseChildren : { default: () => [baseChildren] })] });
|
|
367
|
+
}
|
|
368
|
+
return () => {
|
|
369
|
+
const { label, name, trigger = "change", isRenderProps, dependencies } = props;
|
|
370
|
+
let variables = {};
|
|
371
|
+
if (typeof label === "string") variables.label = label;
|
|
372
|
+
else if (name) variables.label = String(name);
|
|
373
|
+
if (messageVariables.value) variables = {
|
|
374
|
+
...variables,
|
|
375
|
+
...messageVariables.value
|
|
376
|
+
};
|
|
377
|
+
if (!hasName.value && !isRenderProps && !dependencies) return renderLayout(checkRenderNode(filterEmpty(slots.default?.() ?? [])));
|
|
378
|
+
return createVNode(FormListField, mergeProps(props, {
|
|
379
|
+
"messageVariables": variables,
|
|
380
|
+
"trigger": trigger,
|
|
381
|
+
"validateTrigger": mergedValidateTrigger.value
|
|
382
|
+
}), { default: (control, _, form) => {
|
|
383
|
+
const children = checkRenderNode(filterEmpty(slots.default?.(form) ?? []));
|
|
384
|
+
if (!children) return renderLayout(children, fieldId.value, isRequired.value);
|
|
385
|
+
return renderLayout(cloneVNode(children, {
|
|
386
|
+
...children.props,
|
|
387
|
+
...control
|
|
388
|
+
}), fieldId.value, isRequired.value);
|
|
389
|
+
} });
|
|
390
|
+
};
|
|
391
|
+
}, {
|
|
392
|
+
props: {
|
|
393
|
+
name: { required: false },
|
|
394
|
+
rules: {
|
|
395
|
+
type: Array,
|
|
396
|
+
required: false
|
|
397
|
+
},
|
|
398
|
+
trigger: {
|
|
399
|
+
type: [String, Array],
|
|
400
|
+
required: false
|
|
401
|
+
},
|
|
402
|
+
validateTrigger: {
|
|
403
|
+
type: [
|
|
404
|
+
String,
|
|
405
|
+
Array,
|
|
406
|
+
Boolean
|
|
407
|
+
],
|
|
408
|
+
required: false,
|
|
409
|
+
default: void 0
|
|
410
|
+
},
|
|
411
|
+
validateDebounce: {
|
|
412
|
+
type: Number,
|
|
413
|
+
required: false
|
|
414
|
+
},
|
|
415
|
+
validateFirst: {
|
|
416
|
+
type: [Boolean, String],
|
|
417
|
+
required: false,
|
|
418
|
+
default: void 0
|
|
419
|
+
},
|
|
420
|
+
preserve: {
|
|
421
|
+
type: Boolean,
|
|
422
|
+
required: false,
|
|
423
|
+
default: void 0
|
|
424
|
+
},
|
|
425
|
+
rootClass: {
|
|
426
|
+
type: String,
|
|
427
|
+
required: false
|
|
428
|
+
},
|
|
429
|
+
prefixCls: {
|
|
430
|
+
type: String,
|
|
431
|
+
required: false
|
|
432
|
+
},
|
|
433
|
+
colon: {
|
|
434
|
+
type: Boolean,
|
|
435
|
+
required: false,
|
|
436
|
+
default: void 0
|
|
437
|
+
},
|
|
438
|
+
htmlFor: {
|
|
439
|
+
type: String,
|
|
440
|
+
required: false
|
|
441
|
+
},
|
|
442
|
+
label: {
|
|
443
|
+
type: [
|
|
444
|
+
Function,
|
|
445
|
+
String,
|
|
446
|
+
Number,
|
|
447
|
+
null,
|
|
448
|
+
Object,
|
|
449
|
+
Boolean
|
|
450
|
+
],
|
|
451
|
+
required: false,
|
|
452
|
+
default: void 0
|
|
453
|
+
},
|
|
454
|
+
labelAlign: {
|
|
455
|
+
type: String,
|
|
456
|
+
required: false
|
|
457
|
+
},
|
|
458
|
+
labelCol: {
|
|
459
|
+
type: Object,
|
|
460
|
+
required: false
|
|
461
|
+
},
|
|
462
|
+
tooltip: {
|
|
463
|
+
type: [
|
|
464
|
+
Object,
|
|
465
|
+
Function,
|
|
466
|
+
String,
|
|
467
|
+
Number,
|
|
468
|
+
null,
|
|
469
|
+
Boolean
|
|
470
|
+
],
|
|
471
|
+
required: false,
|
|
472
|
+
default: void 0
|
|
473
|
+
},
|
|
474
|
+
vertical: {
|
|
475
|
+
type: Boolean,
|
|
476
|
+
required: false,
|
|
477
|
+
default: void 0
|
|
478
|
+
},
|
|
479
|
+
wrapperCol: {
|
|
480
|
+
type: Object,
|
|
481
|
+
required: false
|
|
482
|
+
},
|
|
483
|
+
extra: {
|
|
484
|
+
type: [
|
|
485
|
+
Function,
|
|
486
|
+
String,
|
|
487
|
+
Number,
|
|
488
|
+
null,
|
|
489
|
+
Object,
|
|
490
|
+
Boolean
|
|
491
|
+
],
|
|
492
|
+
required: false,
|
|
493
|
+
default: void 0
|
|
494
|
+
},
|
|
495
|
+
status: {
|
|
496
|
+
type: String,
|
|
497
|
+
required: false
|
|
498
|
+
},
|
|
499
|
+
help: {
|
|
500
|
+
type: [
|
|
501
|
+
Function,
|
|
502
|
+
String,
|
|
503
|
+
Number,
|
|
504
|
+
null,
|
|
505
|
+
Object,
|
|
506
|
+
Boolean
|
|
507
|
+
],
|
|
508
|
+
required: false,
|
|
509
|
+
default: void 0
|
|
510
|
+
},
|
|
511
|
+
fieldId: {
|
|
512
|
+
type: String,
|
|
513
|
+
required: false
|
|
514
|
+
},
|
|
515
|
+
noStyle: {
|
|
516
|
+
type: Boolean,
|
|
517
|
+
required: false,
|
|
518
|
+
default: void 0
|
|
519
|
+
},
|
|
520
|
+
id: {
|
|
521
|
+
type: String,
|
|
522
|
+
required: false
|
|
523
|
+
},
|
|
524
|
+
hasFeedback: {
|
|
525
|
+
type: [Boolean, Object],
|
|
526
|
+
required: false,
|
|
527
|
+
default: void 0
|
|
528
|
+
},
|
|
529
|
+
validateStatus: {
|
|
530
|
+
type: String,
|
|
531
|
+
required: false
|
|
532
|
+
},
|
|
533
|
+
required: {
|
|
534
|
+
type: Boolean,
|
|
535
|
+
required: false,
|
|
536
|
+
default: void 0
|
|
537
|
+
},
|
|
538
|
+
hidden: {
|
|
539
|
+
type: Boolean,
|
|
540
|
+
required: false,
|
|
541
|
+
default: void 0
|
|
542
|
+
},
|
|
543
|
+
messageVariables: {
|
|
544
|
+
type: Object,
|
|
545
|
+
required: false
|
|
546
|
+
},
|
|
547
|
+
layout: {
|
|
548
|
+
type: String,
|
|
549
|
+
required: false
|
|
550
|
+
},
|
|
551
|
+
valuePropName: {
|
|
552
|
+
type: String,
|
|
553
|
+
required: false
|
|
554
|
+
},
|
|
555
|
+
initialValue: { required: false },
|
|
556
|
+
isListField: {
|
|
557
|
+
type: Boolean,
|
|
558
|
+
required: false,
|
|
559
|
+
default: void 0
|
|
560
|
+
},
|
|
561
|
+
isRenderProps: {
|
|
562
|
+
type: Boolean,
|
|
563
|
+
required: false,
|
|
564
|
+
default: void 0
|
|
565
|
+
},
|
|
566
|
+
getValueFromEvent: {
|
|
567
|
+
type: Function,
|
|
568
|
+
required: false
|
|
569
|
+
},
|
|
570
|
+
getValueProps: {
|
|
571
|
+
type: Function,
|
|
572
|
+
required: false
|
|
573
|
+
},
|
|
574
|
+
normalize: {
|
|
575
|
+
type: Function,
|
|
576
|
+
required: false
|
|
577
|
+
},
|
|
578
|
+
dependencies: {
|
|
579
|
+
type: Array,
|
|
580
|
+
required: false
|
|
581
|
+
},
|
|
582
|
+
_internalItemRender: {
|
|
583
|
+
type: Object,
|
|
584
|
+
required: false
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
name: "AFormItem",
|
|
588
|
+
inheritAttrs: false
|
|
589
|
+
});
|
|
590
|
+
//#endregion
|
|
591
|
+
export { FormItem as default };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { InternalNamePath, NamePath as NamePath$1 } from "./interface.js";
|
|
2
|
+
import { InternalFieldProps } from "./InternalField.js";
|
|
3
|
+
import * as _$vue from "vue";
|
|
4
|
+
import { ComputedRef, SlotsType } from "vue";
|
|
5
|
+
import { FormInstance } from "antdv-next";
|
|
6
|
+
import { Meta } from "antdv-next/dist/form/types";
|
|
7
|
+
|
|
8
|
+
//#region src/components/FormList/Field.d.ts
|
|
9
|
+
type MetaEvent = Meta & {
|
|
10
|
+
destroy?: boolean;
|
|
11
|
+
};
|
|
12
|
+
type FormListFieldProps = Omit<InternalFieldProps, 'name' | 'fieldContext'> & {
|
|
13
|
+
name?: NamePath$1<string | number | boolean>;
|
|
14
|
+
};
|
|
15
|
+
interface ChildProps {
|
|
16
|
+
value?: any[];
|
|
17
|
+
onChange?: (...restParms: any[]) => void;
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
}
|
|
20
|
+
declare const FormListField: _$vue.DefineSetupFnComponent<FormListFieldProps, {}, SlotsType<{
|
|
21
|
+
default?: (control: ChildProps, meta: Meta, form?: FormInstance & {
|
|
22
|
+
prefixName?: ComputedRef<InternalNamePath>;
|
|
23
|
+
initialValue: any[];
|
|
24
|
+
}) => any;
|
|
25
|
+
}>, Omit<InternalFieldProps, "name" | "fieldContext"> & {
|
|
26
|
+
name?: NamePath$1<string | number | boolean>;
|
|
27
|
+
} & {}, _$vue.PublicProps>;
|
|
28
|
+
//#endregion
|
|
29
|
+
export { ChildProps, FormListFieldProps, MetaEvent, FormListField as default };
|