import { defineComponent, h, watch } from 'vue';
import { useBase } from '/$/base';
import { useCool } from '/@/cool';
import { debounce } from 'lodash-es';
export default defineComponent({
name: 'b-menu',
props: {
keyWord: String
},
setup(props) {
const { router, route, browser, refs, setRefs } = useCool();
const { menu, app } = useBase();
// 页面跳转
function onSelect(url: string) {
if (url != route.path) {
router.push(url);
}
// 小屏下点击收起左侧菜单
if (browser.isMini) {
app.fold(true);
}
}
// 渲染子菜单
function renderMenu() {
function deep(list: Menu.Item[], show?: boolean) {
const keyWord = props.keyWord?.toLowerCase() || '';
function filterMenu(item: Menu.Item): boolean {
if (!item.isShow) return false;
if (show) {
return true;
}
if (item.meta?.label?.toLowerCase().includes(keyWord)) return true;
if (item.children) {
return item.children.some(filterMenu);
}
return false;
}
return list.filter(filterMenu).map(e => {
if (e.meta?.label?.toLowerCase().includes(keyWord)) {
show = true;
}
const item = (e: Menu.Item) => {
const arr = [