|
|
@@ -32,19 +32,13 @@ function resolveValueByFieldName(
|
|
|
|
|
|
return get(values, fieldName);
|
|
|
}
|
|
|
-
|
|
|
export default function useDependencies(
|
|
|
getDependencies: () => FormItemDependencies | undefined,
|
|
|
) {
|
|
|
const values = useFormValues();
|
|
|
|
|
|
- const formRenderProps = injectRenderFormProps();
|
|
|
const [extendApi] = injectFormProps();
|
|
|
-
|
|
|
- // 在 dependencies 里提供访问extendApi的能力
|
|
|
- const controller: ExtendedFormApi = isRef(extendApi)
|
|
|
- ? (extendApi.value.formApi as ExtendedFormApi)
|
|
|
- : (extendApi.formApi as ExtendedFormApi);
|
|
|
+ const formRenderProps = injectRenderFormProps();
|
|
|
|
|
|
const formApi = formRenderProps.form;
|
|
|
|
|
|
@@ -56,6 +50,19 @@ export default function useDependencies(
|
|
|
throw new Error('useDependencies should be used within <VbenForm>');
|
|
|
}
|
|
|
|
|
|
+ // 在 dependencies 里提供访问extendApi的能力
|
|
|
+ const getController = (): ExtendedFormApi => {
|
|
|
+ const controller = isRef(extendApi)
|
|
|
+ ? extendApi.value.formApi
|
|
|
+ : extendApi.formApi;
|
|
|
+
|
|
|
+ if (!controller) {
|
|
|
+ throw new Error('formApi is required in useDependencies');
|
|
|
+ }
|
|
|
+
|
|
|
+ return controller;
|
|
|
+ };
|
|
|
+
|
|
|
const isIf = ref(true);
|
|
|
const isDisabled = ref(false);
|
|
|
const isShow = ref(true);
|
|
|
@@ -101,7 +108,7 @@ export default function useDependencies(
|
|
|
const formValues = values.value;
|
|
|
|
|
|
if (isFunction(whenIf)) {
|
|
|
- isIf.value = !!(await whenIf(formValues, formApi, controller));
|
|
|
+ isIf.value = !!(await whenIf(formValues, formApi, getController()));
|
|
|
// 不渲染
|
|
|
if (!isIf.value) return;
|
|
|
} else if (isBoolean(whenIf)) {
|
|
|
@@ -111,7 +118,7 @@ export default function useDependencies(
|
|
|
|
|
|
// 2. 判断show,如果show为false,则隐藏
|
|
|
if (isFunction(show)) {
|
|
|
- isShow.value = !!(await show(formValues, formApi, controller));
|
|
|
+ isShow.value = !!(await show(formValues, formApi, getController()));
|
|
|
} else if (isBoolean(show)) {
|
|
|
isShow.value = show;
|
|
|
}
|
|
|
@@ -120,26 +127,34 @@ export default function useDependencies(
|
|
|
dynamicComponentProps.value = await componentProps(
|
|
|
formValues,
|
|
|
formApi,
|
|
|
- controller,
|
|
|
+ getController(),
|
|
|
);
|
|
|
}
|
|
|
|
|
|
if (isFunction(rules)) {
|
|
|
- dynamicRules.value = await rules(formValues, formApi, controller);
|
|
|
+ dynamicRules.value = await rules(formValues, formApi, getController());
|
|
|
}
|
|
|
|
|
|
if (isFunction(disabled)) {
|
|
|
- isDisabled.value = !!(await disabled(formValues, formApi, controller));
|
|
|
+ isDisabled.value = !!(await disabled(
|
|
|
+ formValues,
|
|
|
+ formApi,
|
|
|
+ getController(),
|
|
|
+ ));
|
|
|
} else if (isBoolean(disabled)) {
|
|
|
isDisabled.value = disabled;
|
|
|
}
|
|
|
|
|
|
if (isFunction(required)) {
|
|
|
- isRequired.value = !!(await required(formValues, formApi, controller));
|
|
|
+ isRequired.value = !!(await required(
|
|
|
+ formValues,
|
|
|
+ formApi,
|
|
|
+ getController(),
|
|
|
+ ));
|
|
|
}
|
|
|
|
|
|
if (isFunction(trigger)) {
|
|
|
- trigger(formValues, formApi, controller);
|
|
|
+ trigger(formValues, formApi, getController());
|
|
|
}
|
|
|
},
|
|
|
{ deep: true, immediate: true },
|