UNPKG

yanzhen-design-vue

Version:

51 lines (50 loc) 1.31 kB
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 };