layui/src/module/menu/index.vue

48 lines
909 B
Vue
Raw Normal View History

2021-09-29 15:42:53 +00:00
<template>
<ul class="layui-nav" :class="[tree ? 'layui-nav-tree' : '']">
<slot />
</ul>
2021-09-29 15:42:53 +00:00
</template>
<script setup name="LayMenu" lang="ts">
2021-12-09 06:11:29 +00:00
import { computed, defineProps, provide } from "vue";
export interface LayMenuProps {
selectedKey?: string;
openKeys?: string[];
tree?: boolean;
}
const emit = defineEmits(["update:selectedKey", "update:openKeys"]);
const props = withDefaults(defineProps<LayMenuProps>(), {
selectedKey: "",
openKeys: () => [],
tree: false,
});
const isTree = computed(() => props.tree);
2021-10-06 11:09:03 +00:00
const openKeys = computed({
get() {
return props.openKeys;
},
set(val) {
emit("update:selectedKey", val);
},
});
const selectedKey = computed({
get() {
return props.selectedKey;
},
set(val) {
emit("update:selectedKey", val);
},
});
provide("isTree", isTree);
provide("selectedKey", selectedKey);
provide("openKeys", openKeys);
2021-09-29 15:42:53 +00:00
</script>