@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.
Files changed (174) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +80 -2
  3. package/dist/autoFocusToFirstChild/index.d.ts +9 -0
  4. package/dist/autoFocusToFirstChild/index.js +36 -0
  5. package/dist/childrenToArray/index.d.ts +7 -0
  6. package/dist/childrenToArray/index.js +8 -0
  7. package/dist/components/CopyToClipboard/copy/index.d.ts +10 -0
  8. package/dist/components/CopyToClipboard/copy/index.js +84 -0
  9. package/dist/components/CopyToClipboard/copy/toggle-selection.d.ts +4 -0
  10. package/dist/components/CopyToClipboard/copy/toggle-selection.js +27 -0
  11. package/dist/components/CopyToClipboard/index.d.ts +14 -0
  12. package/dist/components/CopyToClipboard/index.js +13 -0
  13. package/dist/components/Draggable/Draggable.d.ts +62 -0
  14. package/dist/components/Draggable/Draggable.js +162 -0
  15. package/dist/components/Draggable/DraggableCore.d.ts +40 -0
  16. package/dist/components/Draggable/DraggableCore.js +149 -0
  17. package/dist/components/Draggable/index.d.ts +4 -0
  18. package/dist/components/Draggable/index.js +3 -0
  19. package/dist/components/Draggable/types.d.ts +30 -0
  20. package/dist/components/Draggable/types.js +1 -0
  21. package/dist/components/Draggable/utils/domFns.d.ts +36 -0
  22. package/dist/components/Draggable/utils/domFns.js +165 -0
  23. package/dist/components/Draggable/utils/getPrefix.d.ts +6 -0
  24. package/dist/components/Draggable/utils/getPrefix.js +31 -0
  25. package/dist/components/Draggable/utils/positionFns.d.ts +13 -0
  26. package/dist/components/Draggable/utils/positionFns.js +96 -0
  27. package/dist/components/Draggable/utils/shims.d.ts +7 -0
  28. package/dist/components/Draggable/utils/shims.js +19 -0
  29. package/dist/components/DropdownFooter/index.d.ts +20 -0
  30. package/dist/components/DropdownFooter/index.js +80 -0
  31. package/dist/components/DropdownFooter/style/index.d.ts +8 -0
  32. package/dist/components/DropdownFooter/style/index.js +18 -0
  33. package/dist/components/ErrorBoundary/index.d.ts +25 -0
  34. package/dist/components/ErrorBoundary/index.js +65 -0
  35. package/dist/components/FieldLabel/index.d.ts +31 -0
  36. package/dist/components/FieldLabel/index.js +212 -0
  37. package/dist/components/FieldLabel/style/index.d.ts +8 -0
  38. package/dist/components/FieldLabel/style/index.js +146 -0
  39. package/dist/components/FilterDropdown/index.d.ts +38 -0
  40. package/dist/components/FilterDropdown/index.js +91 -0
  41. package/dist/components/FilterDropdown/style/index.d.ts +8 -0
  42. package/dist/components/FilterDropdown/style/index.js +21 -0
  43. package/dist/components/FormItem/FormItemInput.d.ts +34 -0
  44. package/dist/components/FormItem/FormItemInput.js +163 -0
  45. package/dist/components/FormItem/ItemHolder.d.ts +58 -0
  46. package/dist/components/FormItem/ItemHolder.js +289 -0
  47. package/dist/components/FormItem/index.d.ts +64 -0
  48. package/dist/components/FormItem/index.js +591 -0
  49. package/dist/components/FormList/Field.d.ts +29 -0
  50. package/dist/components/FormList/Field.js +106 -0
  51. package/dist/components/FormList/FieldContext.d.ts +15 -0
  52. package/dist/components/FormList/FieldContext.js +11 -0
  53. package/dist/components/FormList/InternalField.d.ts +51 -0
  54. package/dist/components/FormList/InternalField.js +149 -0
  55. package/dist/components/FormList/ListContext.d.ts +12 -0
  56. package/dist/components/FormList/ListContext.js +11 -0
  57. package/dist/components/FormList/index.d.ts +36 -0
  58. package/dist/components/FormList/index.js +145 -0
  59. package/dist/components/FormList/interface.d.ts +9 -0
  60. package/dist/components/FormList/interface.js +1 -0
  61. package/dist/components/FormList/namePathType.d.ts +9 -0
  62. package/dist/components/FormList/namePathType.js +1 -0
  63. package/dist/components/FormList/utils/index.d.ts +15 -0
  64. package/dist/components/FormList/utils/index.js +37 -0
  65. package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.d.ts +21 -0
  66. package/dist/components/InlineErrorFormItem/InlineErrorFormItemPopover.js +95 -0
  67. package/dist/components/InlineErrorFormItem/index.d.ts +14 -0
  68. package/dist/components/InlineErrorFormItem/index.js +44 -0
  69. package/dist/components/InlineErrorFormItem/style/index.d.ts +8 -0
  70. package/dist/components/InlineErrorFormItem/style/index.js +46 -0
  71. package/dist/components/LabelIconTip/index.d.ts +16 -0
  72. package/dist/components/LabelIconTip/index.js +79 -0
  73. package/dist/components/LabelIconTip/style/index.d.ts +8 -0
  74. package/dist/components/LabelIconTip/style/index.js +38 -0
  75. package/dist/components/ProFormContext/index.d.ts +51 -0
  76. package/dist/components/ProFormContext/index.js +11 -0
  77. package/dist/conversionMomentValue/index.d.ts +48 -0
  78. package/dist/conversionMomentValue/index.js +103 -0
  79. package/dist/dateArrayFormatter/index.d.ts +14 -0
  80. package/dist/dateArrayFormatter/index.js +38 -0
  81. package/dist/deepMerge/index.d.ts +4 -0
  82. package/dist/deepMerge/index.js +17 -0
  83. package/dist/genCopyable/index.d.ts +27 -0
  84. package/dist/genCopyable/index.js +82 -0
  85. package/dist/getFieldPropsOrFormItemProps/index.d.ts +18 -0
  86. package/dist/getFieldPropsOrFormItemProps/index.js +15 -0
  87. package/dist/getSlot/index.d.ts +8 -0
  88. package/dist/getSlot/index.js +11 -0
  89. package/dist/hooks/index.d.ts +9 -0
  90. package/dist/hooks/index.js +9 -0
  91. package/dist/hooks/useDebounceFn/index.d.ts +12 -0
  92. package/dist/hooks/useDebounceFn/index.js +34 -0
  93. package/dist/hooks/useDebounceValue/index.d.ts +12 -0
  94. package/dist/hooks/useDebounceValue/index.js +21 -0
  95. package/dist/hooks/useDocumentTitle/index.d.ts +10 -0
  96. package/dist/hooks/useDocumentTitle/index.js +12 -0
  97. package/dist/hooks/useEffect/index.d.ts +6 -0
  98. package/dist/hooks/useEffect/index.js +17 -0
  99. package/dist/hooks/useFetchData/index.d.ts +12 -0
  100. package/dist/hooks/useFetchData/index.js +35 -0
  101. package/dist/hooks/useLayoutEffect/index.d.ts +6 -0
  102. package/dist/hooks/useLayoutEffect/index.js +21 -0
  103. package/dist/hooks/useMemo/index.d.ts +6 -0
  104. package/dist/hooks/useMemo/index.js +13 -0
  105. package/dist/hooks/useState/index.d.ts +6 -0
  106. package/dist/hooks/useState/index.js +11 -0
  107. package/dist/index.d.ts +61 -0
  108. package/dist/index.js +58 -0
  109. package/dist/isBrowser/index.d.ts +4 -0
  110. package/dist/isBrowser/index.js +8 -0
  111. package/dist/isDropdownValueType/index.d.ts +4 -0
  112. package/dist/isDropdownValueType/index.js +8 -0
  113. package/dist/isImg/index.d.ts +5 -0
  114. package/dist/isImg/index.js +7 -0
  115. package/dist/isNil/index.d.ts +4 -0
  116. package/dist/isNil/index.js +6 -0
  117. package/dist/isUrl/index.d.ts +9 -0
  118. package/dist/isUrl/index.js +17 -0
  119. package/dist/merge/index.d.ts +9 -0
  120. package/dist/merge/index.js +20 -0
  121. package/dist/nanoid/index.d.ts +9 -0
  122. package/dist/nanoid/index.js +25 -0
  123. package/dist/normalizeProps/index.d.ts +6 -0
  124. package/dist/normalizeProps/index.js +6 -0
  125. package/dist/omitBoolean/index.d.ts +9 -0
  126. package/dist/omitBoolean/index.js +11 -0
  127. package/dist/omitUndefined/index.d.ts +5 -0
  128. package/dist/omitUndefined/index.js +11 -0
  129. package/dist/omitUndefinedAndEmptyArr/index.d.ts +4 -0
  130. package/dist/omitUndefinedAndEmptyArr/index.js +12 -0
  131. package/dist/parseValueToDay/index.d.ts +7 -0
  132. package/dist/parseValueToDay/index.js +21 -0
  133. package/dist/pickProFormItemProps/index.d.ts +34 -0
  134. package/dist/pickProFormItemProps/index.js +42 -0
  135. package/dist/pickProProps/index.d.ts +4 -0
  136. package/dist/pickProProps/index.js +14 -0
  137. package/dist/pro-utils.esm.js +3672 -0
  138. package/dist/proFieldParsingText/index.d.ts +25 -0
  139. package/dist/proFieldParsingText/index.js +100 -0
  140. package/dist/runFunction/index.d.ts +5 -0
  141. package/dist/runFunction/index.js +8 -0
  142. package/dist/stringify/index.d.ts +7 -0
  143. package/dist/stringify/index.js +10 -0
  144. package/dist/transformBooleanProps/index.d.ts +4 -0
  145. package/dist/transformBooleanProps/index.js +9 -0
  146. package/dist/transformKeySubmitValue/index.d.ts +24 -0
  147. package/dist/transformKeySubmitValue/index.js +200 -0
  148. package/dist/transformVueNodeType/index.d.ts +14 -0
  149. package/dist/transformVueNodeType/index.js +14 -0
  150. package/dist/typing.d.ts +562 -0
  151. package/dist/typing.js +1 -0
  152. package/dist/useEditableArray/components/CancelEditableAction.d.ts +47 -0
  153. package/dist/useEditableArray/components/CancelEditableAction.js +90 -0
  154. package/dist/useEditableArray/components/DeleteEditableAction.d.ts +33 -0
  155. package/dist/useEditableArray/components/DeleteEditableAction.js +63 -0
  156. package/dist/useEditableArray/components/SaveEditableAction.d.ts +33 -0
  157. package/dist/useEditableArray/components/SaveEditableAction.js +79 -0
  158. package/dist/useEditableArray/index.d.ts +66 -0
  159. package/dist/useEditableArray/index.js +584 -0
  160. package/dist/useEditableArray/typing.d.ts +130 -0
  161. package/dist/useEditableArray/typing.js +1 -0
  162. package/dist/useEditableMap/index.d.ts +32 -0
  163. package/dist/useEditableMap/index.js +147 -0
  164. package/dist/useMediaQuery/index.d.ts +44 -0
  165. package/dist/useMediaQuery/index.js +99 -0
  166. package/dist/useMediaQuery/query.d.ts +6 -0
  167. package/dist/useMediaQuery/query.js +17 -0
  168. package/dist/useMountMergeState/index.d.ts +11 -0
  169. package/dist/useMountMergeState/index.js +26 -0
  170. package/dist/usePrevious/index.d.ts +6 -0
  171. package/dist/usePrevious/index.js +11 -0
  172. package/dist/useRefFunction/index.d.ts +4 -0
  173. package/dist/useRefFunction/index.js +11 -0
  174. 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 };