UNPKG

mine-h5-ui

Version:

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

43 lines (42 loc) 1.4 kB
import { useTemplateRef as v, ref as f, computed as m, onMounted as h, onUnmounted as g } from "vue"; /*! * mine-h5-ui v2.15.0 * Copyright (c) 2025 biaov * @license MIT */ const B = (n) => { const s = v("indexBarRef"), r = f(n.list[0].name), i = f(); let c; const u = (l) => { const { scrollTop: e } = l.target, o = c[0]; if (e >= o.offsetTop) for (let t = 0; t < c.length; t++) { const a = c[t]; if (a.nodeName === "LI" && e > o.offsetTop && e < a.offsetTop) { r.value = c[t - 1].children[0].children[0].innerHTML; break; } } else r.value = n.list[0].name; }, d = m(() => (l) => { const e = n.list.findIndex((a) => a.name === r.value); if (e < 0) return !1; const o = n.range, t = ~~(o / 2) + 1; return e < t ? l < o : e > n.list.length - (t + 1) ? l > n.list.length - (o + 1) : l < e + t && l > e - t; }); return h(() => { c = i.value.children, s.value && s.value.addEventListener("scroll", u); }), g(() => { s.value && s.value.removeEventListener("scroll", u); }), { curLetter: r, listCont: i, filterShow: d, onClickBadge: (l, e) => { const { offsetTop: o } = c[e]; r.value = l.name, s.value.scrollTo({ top: o }); } }; }, k = (n) => ({ handleLi: (r) => { n("click", { ...r }); } }); export { k as useBtns, B as useScroll };