mine-h5-ui
Version:
一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍
48 lines (47 loc) • 1.34 kB
JavaScript
import { ref as o, onMounted as w, watch as v } from "vue";
const M = (s, n) => ({ sms: o(), handleSMS: (a) => {
!s.smsIs && n("click-sms", a);
} }), S = (s, n, l) => ({ handleIcon: (a) => {
s.password ? l.value = l.value === "password" ? "text" : "password" : n("click-icon", a);
} }), b = ({ props: s, emit: n, sms: l, inputVal: c }) => {
const a = o(), h = o(s.digit ? "text" : s.password ? "password" : s.type), d = o(0), i = o(0), t = o(!1), u = (e) => {
e === 1 ? i.value = s.smsMsg ? l.value.offsetWidth : 10 : d.value = s.label ? Math.max(parseFloat(s.labelWidth || "0"), a.value?.offsetWidth) : 10;
}, f = (e) => {
t.value = !t.value, n("focus", e);
}, g = (e) => {
t.value = !t.value, n("blur", e);
}, r = (e) => {
t.value = !t.value, n("change", e);
}, m = (e) => {
t.value = !t.value, n("input", e);
};
return w(() => {
u(0), u(1);
}), v(
c,
(e, I) => {
e && (c.value = `${e}`.slice(0, s.maxlength)), s.digit && !/^\d*$/g.test(e) && (c.value = +I || 0);
},
{ immediate: !0 }
), v(
() => s.smsIs,
() => {
u(1);
}
), {
inputLabel: a,
inputType: h,
paddingLeft: d,
paddingRight: i,
isFocus: t,
onFocus: f,
onBlur: g,
onChange: r,
onInput: m
};
};
export {
S as useIcon,
b as useInput,
M as useSms
};