yanzhen-design-vue
Version:
53 lines (52 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const context = require("ant-design-vue/es/form/context");
const utils = require("@yanzhen-libs/utils");
const valueUtil = require("ant-design-vue/es/form/utils/valueUtil");
const FormItemContext = require("ant-design-vue/es/form/FormItemContext");
const formItemGroupContext = require("./hooks/form-item-group-context.cjs");
const defaultItemNamePrefixCls = "yz_form_item_wrapper";
function useFormItemWrapper(props, emit) {
const slots = vue.useSlots();
const { onFieldBlur, onFieldChange, clearValidate } = formItemGroupContext.useInjectFormItemGroupContext();
const formContext = context.useInjectForm();
const fieldName = vue.computed(() => props.name);
const namePath = vue.computed(() => {
const name = vue.unref(fieldName);
if (utils.isEmptyValue(name)) return null;
return valueUtil.getNamePath(name);
});
const fieldId = vue.computed(() => {
const namePaths = vue.unref(namePath);
if (utils.isEmptyArray(namePaths)) {
return void 0;
} else {
const formName = vue.unref(formContext.name);
const mergedId = namePaths.join("_");
return formName ? `${formName}_${mergedId}` : `${defaultItemNamePrefixCls}_${mergedId}`;
}
});
FormItemContext.useProvideFormItemContext(
{
id: fieldId,
onFieldBlur: () => {
onFieldBlur(vue.unref(fieldName));
},
onFieldChange: () => {
onFieldChange(vue.unref(fieldName));
},
clearValidate: () => {
clearValidate(vue.unref(fieldName));
}
},
vue.computed(() => {
return !!(props.autoLink && vue.unref(formContext.model) && vue.unref(fieldName));
})
);
return [{ fieldId, fieldName }, () => {
var _a;
return (_a = slots == null ? void 0 : slots.default) == null ? void 0 : _a.call(slots);
}];
}
exports.useFormItemWrapper = useFormItemWrapper;