vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
46 lines (45 loc) • 1.47 kB
JavaScript
import { ref as o, computed as i } from "vue";
import { Utils as g } from "@vuux/utils";
import { Message as V } from "../../../Message/index.mjs";
const A = (l, h, r) => {
const c = o(!1), a = o(""), s = o(!0), n = i(() => l.max), v = (e) => e.slice(), y = i(() => ({
"is-readonly": l.readonly,
"is-disabled": l.disabled
})), u = i(() => Array.isArray(l.modelValue) ? l.modelValue || [] : g.isNull(l.modelValue) ? [] : l.modelValue), d = (e) => {
r("update:modelValue", e);
const t = new CustomEvent("setvalue", {
bubbles: !0,
cancelable: !0,
detail: e
});
h.value?.dispatchEvent(t), a.value = "";
}, f = (e) => {
if (l.readonly)
return;
const t = v(u.value);
t.splice(e, 1), d(t), r("delete", t), n.value > 0 && (s.value = !(t.length >= n.value));
}, b = (e) => {
e.target.value === "" && u.value.length && f(u.value.length - 1);
}, m = () => {
if (l.readonly || g.isNull(a.value))
return !1;
const e = v(u.value);
return e.push(a.value), l.max > 0 && e?.length > l.max ? !1 : a.value.length > l.limit ? (V.error("字符长度不能超过" + l.limit), !1) : (d(e), r("save", e), n.value > 0 && (s.value = !(e.length >= n.value)), !0);
};
return {
onFocus: c,
tagValue: a,
show: s,
classNames: y,
values: u,
handleRemove: f,
onDelete: b,
onEnter: m,
onBlur: () => {
m(), c.value = !1;
}
};
};
export {
A as useInputTag
};