UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

43 lines (42 loc) 1.27 kB
import { Utils as I } from "@vuux/utils"; import { ref as o, computed as t, watch as h, onMounted as N } from "vue"; const k = (e, u) => { const s = o(""), c = o(""), a = o(e.modelValue ? e.modelValue : ""), n = o(!1), r = t(() => e.type === "textarea"), d = t(() => e.type === "password"), i = t(() => e.disabled ? e.disabled : !1), f = t(() => e.clear ? e.clear : !1), m = t(() => e.count ? e.count : !1), w = t(() => ({ "is-padding": f.value || d.value || i.value || m.value })), V = t(() => n.value ? "text" : e.type), b = t(() => a.value?.length ?? 0), x = (l) => { const v = l.target.value; a.value = v, u("input", a.value), u("update:modelValue", v); }, g = () => { u("blur", a.value); }, y = () => { a.value = "", u("update:modelValue", ""), u("blur", a.value); }, C = () => { n.value = !n.value; }; return h( () => e.modelValue, (l) => { a.value = l; } ), N(() => { const l = String(I.snowflakeId()); s.value = l, c.value = l; }), { inputId: s, inputName: c, localValue: a, show: n, isTextarea: r, isPassword: d, className: w, currentType: V, textCount: b, onInput: x, onBlur: g, onClear: y, onPassword: C }; }; export { k as useInput };