UNPKG

mine-h5-ui

Version:

一款轻量级、模块化基于 Vue3.x 的 H5 前端 UI 组件库 👍

41 lines (40 loc) 1.38 kB
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 };