mine-h5-ui
Version:
一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍
41 lines (40 loc) • 1.38 kB
JavaScript
import { ref as f } from "vue";
import w from "../MeAPI/validator.js";
/*!
* mine-h5-ui v2.15.0
* Copyright (c) 2025 biaov
* @license MIT
*/
const R = ({ props: n, emit: v, listData: e }) => {
const a = f(1), u = f(!1);
let i = null;
const s = (o, r) => {
if (o.stopPropagation(), !n.disabled && n.beforeDelete(r) !== !1) {
const c = e.value.findIndex(({ id: l }) => l === r.id) ?? 0;
e.value.splice(c, 1), v("change", e.value);
}
}, d = () => {
e.value.length > 1 && (i = setInterval(() => {
a.value++, a.value > e.value.length && (a.value = 1);
}, 3e3));
};
return { listData: e, curNum: a, isPreview: u, onDelete: s, closePreview: () => {
clearInterval(i), u.value = !1;
}, onChange: (o) => {
const r = Object.values(o.target.files).slice(0, n.maxCount);
if (n.beforeRead(r) !== !1) {
const c = [];
r.forEach((l) => {
if (l.size <= n.maxSize && w.validImgs.test(l.name)) {
const t = e.value.length, g = t === 0 ? 1 : e.value[t - 1].id + 1, h = window.URL.createObjectURL(l);
e.value.push({ id: g, url: h }), c.push(l);
}
}), c.length > 0 && (n.afterRead(c), v("change", e.value));
}
}, onPreview: ({ id: o }) => {
!n.disabled && n.preview && (a.value = o, u.value = !0, d());
} };
};
export {
R as useHandler
};