yanzhen-design-vue
Version:
51 lines (50 loc) • 1.31 kB
JavaScript
import { ref, useAttrs, useSlots, computed, createVNode, mergeProps } from "vue";
import { useProxyProps } from "@yanzhen-libs/utils-vue";
import { pick, isString, trim } from "lodash-es";
import { isEmptyValue } from "@yanzhen-libs/utils";
import { Textarea } from "ant-design-vue";
import { AntTextArea } from "./textarea.mjs";
function useTextarea(props, emit) {
const _ref = ref(null);
const attrs = useAttrs();
const slots = useSlots();
const config = computed(() => {
return pick(props, ...Object.keys(AntTextArea.props));
});
const handleBlur = (e) => {
const trimValue = isString(props.value) ? trim(props.value) : props.value;
if (!isEmptyValue(trimValue) && trimValue !== props.value) {
emit("update:value", String(trimValue));
}
emit("blur", e);
};
const proxyProps = useProxyProps(config, AntTextArea.emits, {
emit(event, ...args) {
switch (event) {
case "blur":
return handleBlur(args[0]);
}
emit(event, ...args);
},
exclude: [],
filter: true
});
return [
{
_ref,
proxyProps
},
(props2) => {
return createVNode(
Textarea,
mergeProps(attrs, props2 ?? {}, {
ref: _ref
}),
slots
);
}
];
}
export {
useTextarea
};