# 导航菜单

为网站提供导航功能的菜单。

# 水平导航菜单

导航菜单默认为水平模式,通过 vertical 属性可以使导航菜单变为垂直模式。

在菜单中通过 Submenu 组件可以生成二级菜单,二级菜单的标题可以提供具名插槽来设置。还可以通过 selected-index 属性或(v-model)来指定默认选中的 MenuItem

默认点击展开二级菜单,可以通过 trigger 属性来设置不同的激活菜单方式,可选的方式有 clickhover

# 效果展示

<template>
  <p>点击展开 当前选中项的 index 是 {{ selectedIndex1 }}</p>
  <woo-menu v-model="selectedIndex1" @click="handleItemClick">
    <woo-menu-item index="1">处理中心</woo-menu-item>
    <woo-submenu index="2">
      <template #title>工作台</template>
      <woo-menu-item index="2-1">选项1</woo-menu-item>
      <woo-menu-item index="2-2">选项2</woo-menu-item>
      <woo-menu-item index="2-3">选项3</woo-menu-item>
      <woo-submenu index="2-4">
        <template #title>选项4</template>
        <woo-menu-item index="2-4-1">选项4-1</woo-menu-item>
        <woo-menu-item index="2-4-2">选项4-2</woo-menu-item>
      </woo-submenu>
    </woo-submenu>
    <woo-menu-item index="3">消息中心</woo-menu-item>
    <woo-menu-item index="4">订单管理</woo-menu-item>
  </woo-menu>

  <p>hover 展开 当前选中项的 index 是 {{ selectedIndex2 }}</p>
  <woo-menu v-model="selectedIndex2" trigger="hover" @click="handleItemClick">
    <woo-menu-item index="1">处理中心</woo-menu-item>
    <woo-submenu index="2">
      <template #title>工作台</template>
      <woo-menu-item index="2-1">选项1</woo-menu-item>
      <woo-menu-item index="2-2">选项2</woo-menu-item>
      <woo-menu-item index="2-3">选项3</woo-menu-item>
      <woo-submenu index="2-4">
        <template #title>选项4</template>
        <woo-menu-item index="2-4-1">选项4-1</woo-menu-item>
        <woo-menu-item index="2-4-2">选项4-2</woo-menu-item>
      </woo-submenu>
    </woo-submenu>
    <woo-menu-item index="3">消息中心</woo-menu-item>
    <woo-menu-item index="4">订单管理</woo-menu-item>
  </woo-menu>
</template>

<script>
export default {
  data() {
    return {
      selectedIndex1: "2-2",
      selectedIndex2: "2-4-2",
    };
  },
  methods: {
    handleItemClick({ item, index, path }) {
      console.log(item, index, path);
    },
  },
};
</script>

# 垂直导航菜单

垂直菜单可以通过 width 属性来设置菜单的宽度,默认的宽度为 200px

# 效果展示

<template>
  <div class="demo">
    <div class="block">
      <h5>这个菜单的宽度是200px</h5>
      <woo-menu
        selected-index="4"
        vertical
        @open="handleOpen"
        @close="handleClose"
        @select="handleItemSelect"
      >
        <woo-menu-item index="1">处理中心</woo-menu-item>
        <woo-submenu index="2">
          <template #title>工作台</template>
          <woo-menu-item index="2-1">选项1</woo-menu-item>
          <woo-menu-item index="2-2">选项2</woo-menu-item>
          <woo-menu-item index="2-3">选项3</woo-menu-item>
          <woo-submenu index="2-4">
            <template #title>选项4</template>
            <woo-menu-item index="2-4-1">选项4-1</woo-menu-item>
            <woo-menu-item index="2-4-2">选项4-2</woo-menu-item>
          </woo-submenu>
        </woo-submenu>
        <woo-menu-item index="3">消息中心</woo-menu-item>
        <woo-menu-item index="4">订单管理</woo-menu-item>
      </woo-menu>
    </div>

    <div class="block">
      <h5>这个菜单的宽度是320px</h5>
      <woo-menu selected-index="3" vertical trigger="hover" width="320px">
        <woo-menu-item index="1">处理中心</woo-menu-item>
        <woo-submenu index="2">
          <template #title>工作台</template>
          <woo-menu-item index="2-1">选项1</woo-menu-item>
          <woo-menu-item index="2-2">选项2</woo-menu-item>
          <woo-menu-item index="2-3">选项3</woo-menu-item>
          <woo-submenu index="2-4">
            <template #title>选项4</template>
            <woo-menu-item index="2-4-1">选项4-1</woo-menu-item>
            <woo-menu-item index="2-4-2">选项4-2</woo-menu-item>
          </woo-submenu>
        </woo-submenu>
        <woo-menu-item index="3">消息中心</woo-menu-item>
        <woo-menu-item index="4">订单管理</woo-menu-item>
      </woo-menu>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleOpen(keyPath) {
      console.log(keyPath);
    },
    handleClose(keyPath) {
      console.log(keyPath);
    },
    handleItemSelect(index) {
      console.log(index);
    },
  },
};
</script>

# 🌏 API

参数 说明 类型 可选值 默认值
selected-index / v-model 绑定值,默认选中的菜单项的 index 属性 String
trigger 触发方式 String click / hover click
vertical 是否垂直 Boolean false
width 垂直状态下导航栏的宽度 String 200px
参数 说明 类型 可选值 默认值
index 菜单项的索引 String
参数 说明 类型 可选值 默认值
index 二级菜单的索引 String / null null

# Events

事件名称 说明 回调参数
click 点击 MenuItem 时触发 参数为一个对象,包含 item, index, path 属性,分别表示 item 实例,点击菜单项的 index 和点击菜单项的 index path }
open Submenu 展开时触发 Submenu 的 path
close Submenu 收起时触发 Submenu 的 path
select 被选中时触发 被选中菜单项的 index