UNPKG

cloud-ui.vusion

Version:
414 lines (340 loc) 14.9 kB
<!-- 该 README.md 根据 api.yaml 和 docs/*.md 自动生成,为了方便在 GitHub 和 NPM 上查阅。如需修改,请查看源文件 --> # UMenu 菜单 - [示例](#示例) - [基本用法](#基本用法) - [多级菜单](#多级菜单) - [禁用、禁用某一项](#禁用-禁用某一项) - [分隔符](#分隔符) - [分组](#分组) - [UMenu API](#umenu-api) - [Props/Attrs](#propsattrs) - [Slots](#slots) - [Events](#events) - [Methods](#methods) - [UMenuItem API](#umenuitem-api) - [Props/Attrs](#propsattrs-2) - [Events](#events-2) - [UMenuGroup API](#umenugroup-api) - [Props/Attrs](#propsattrs-3) - [Slots](#slots-2) - [Events](#events-3) - [UMenuDivider API](#umenudivider-api) **路由链接**, **块级展示** 菜单组件支持路由、触发关闭、多级菜单等功能。 ## 示例 ### 基本用法 可以结合 Popup 或 Popper 弹出菜单。 ``` html <u-linear-layout> <u-button> Popup 菜单 <u-popup> <u-menu slot="root"> <u-menu-item to="/guides/">指南</u-menu-item> <u-menu-item to="/api/">API</u-menu-item> <u-menu-item to="/components/">原型组件</u-menu-item> <u-menu-item href="https://github.com/vusion">GitHub</u-menu-item> </u-menu> </u-popup> </u-button> <u-button> Popper 菜单 <m-popper> <u-menu value="3" :router="false" style="width: 128px;"> <u-menu-item to="/guides/">指南</u-menu-item> <u-menu-item to="/api/">API</u-menu-item> <u-menu-item to="/components/">原型组件</u-menu-item> <u-menu-item href="https://github.com/vusion">GitHub</u-menu-item> </u-menu> </m-popper> </u-button> </u-linear-layout> ``` ### 多级菜单 ``` html <u-linear-layout direction="vertical"> <u-menu style="width: 200px;"> <u-menu-item>指南</u-menu-item> <u-menu-item>API <u-menu slot="sub"> <u-menu-item to="/api/cli">命令行工具(CLI)</u-menu-item> <u-menu-item to="/api/config">配置</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>组件 <u-menu slot="sub"> <u-menu-item>原型组件 <u-menu slot="sub"> <u-menu-item>Basic <u-menu slot="sub"> <u-menu-item to="/components/u-link">链接 Link</u-menu-item> <u-menu-item to="/components/u-button">按钮 Button</u-menu-item> <u-menu-item to="/components/u-badge">徽章 Badge</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>Navigation <u-menu slot="sub"> <u-menu-item to="/components/u-navbar">导航栏 Navbar</u-menu-item> <u-menu-item to="/components/u-sidebar">侧边栏 Sidebar</u-menu-item> <u-menu-item to="/components/u-menu">菜单 Menu</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>Popper <u-menu slot="sub"> <u-menu-item to="/components/m-popper">弹出层 Popper</u-menu-item> <u-menu-item to="/components/u-tooltip">工具提示 Tooltip</u-menu-item> <u-menu-item to="/components/u-popup">弹出框 Popup</u-menu-item> </u-menu> </u-menu-item> </u-menu> </u-menu-item> <u-menu-item to="/ui-design">组件设计方案</u-menu-item> </u-menu> </u-menu-item> <u-menu-item target="_blank" href="https://github.com/vusion">GitHub</u-menu-item> </u-menu> <div> <u-button> 多级菜单 <u-popup> <u-menu slot="root" style="width: 200px;"> <u-menu-item>指南</u-menu-item> <u-menu-item>API <u-menu slot="sub"> <u-menu-item to="/api/cli">命令行工具(CLI)</u-menu-item> <u-menu-item to="/api/config">配置</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>组件 <u-menu slot="sub"> <u-menu-item>原型组件 <u-menu slot="sub"> <u-menu-item>Basic <u-menu slot="sub"> <u-menu-item to="/components/u-link">链接 Link</u-menu-item> <u-menu-item to="/components/u-button">按钮 Button</u-menu-item> <u-menu-item to="/components/u-badge">徽章 Badge</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>Navigation <u-menu slot="sub"> <u-menu-item to="/components/u-navbar">导航栏 Navbar</u-menu-item> <u-menu-item to="/components/u-sidebar">侧边栏 Sidebar</u-menu-item> <u-menu-item to="/components/u-menu">菜单 Menu</u-menu-item> </u-menu> </u-menu-item> <u-menu-item>Popper <u-menu slot="sub"> <u-menu-item to="/components/m-popper">弹出层 Popper</u-menu-item> <u-menu-item to="/components/u-tooltip">工具提示 Tooltip</u-menu-item> <u-menu-item to="/components/u-popup">弹出框 Popup</u-menu-item> </u-menu> </u-menu-item> </u-menu> </u-menu-item> <u-menu-item to="/ui-design">组件设计方案</u-menu-item> </u-menu> </u-menu-item> <u-menu-item target="_blank" href="https://github.com/vusion">GitHub</u-menu-item> </u-menu> </u-popup> </u-button> </div> </u-linear-layout> ``` ### 禁用、禁用某一项 ``` html <u-grid-layout> <u-grid-layout-column :span="4"> <u-menu disabled> <u-menu-item>指南</u-menu-item> <u-menu-item>概念</u-menu-item> <u-menu-item to="/cloud-ui">组件</u-menu-item> </u-menu> </u-grid-layout-column> <u-grid-layout-column :span="4"> <u-menu> <u-menu-item>指南</u-menu-item> <u-menu-item disabled>概念</u-menu-item> <u-menu-item to="/cloud-ui">组件</u-menu-item> </u-menu> </u-grid-layout-column> </u-grid-layout> ``` ### 分隔符 ``` html <u-menu style="width: 200px;"> <u-menu-item>指南</u-menu-item> <u-menu-item>概念</u-menu-item> <u-menu-item>配置</u-menu-item> <u-menu-divider></u-menu-divider> <u-menu-item to="/cloud-ui">组件</u-menu-item> <u-menu-item to="/libraries">组件库</u-menu-item> </u-menu> ``` ### 分组 ``` html <u-grid-layout> <u-grid-layout-row> <u-grid-layout-column :span="4"> <p>默认,无折叠功能</p> <u-menu> <u-menu-group title="Basic"> <u-menu-item>链接</u-menu-item> <u-menu-item>按钮</u-menu-item> <u-menu-item>标签</u-menu-item> </u-menu-group> <u-menu-group title="Navigation"> <u-menu-item>导航栏</u-menu-item> <u-menu-item to="/components/u-menu">侧边栏</u-menu-item> <u-menu-item>标签页</u-menu-item> </u-menu-group> <u-menu-group title="Form"> <u-menu-item>单行输入</u-menu-item> <u-menu-item>多行输入</u-menu-item> <u-menu-item>选择框</u-menu-item> <u-menu-item>表单</u-menu-item> </u-menu-group> </u-menu> </u-grid-layout-column> </u-grid-layout-row> </u-grid-layout> ``` ## UMenu API ### Props/Attrs | Prop/Attr | Type | Options | Default | Description | | --------- | ---- | ------- | ------- | ----------- | | router | boolean | | `true` | 是否根据 vue-router 来控制选择哪一项 | | value.sync, v-model | any | | | 当前选择的值 | | collapsible | boolean | | `false` | 分组是否可以折叠 | | accordion | boolean | | `false` | 是否每次只会展开一个分组 | | expand-trigger | string | | `'click'` | 展开/折叠的触发方式。可选值:`'click'`表示整行点击均可触发、`'click-expander'`表示仅点击小箭头时触发 | | readonly | boolean | | `false` | 是否只读 | | disabled | boolean | | `false` | 是否禁用 | ### Slots #### (default) 插入`<u-menu-item>`、`<u-menu-divider>`或`<u-menu-group>`子组件。 ### Events #### @before-select 选择某一项前触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.value | any | 选择项的值 | | $event.oldValue | any | 旧的值 | | $event.item | object | 选择项相关对象 | | $event.itemVM | UMenuItem | 选择项子组件 | | $event.preventDefault | Function | 阻止选择流程 | #### @input 选择某一项时触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | any | 选择项的值 | #### @select 选择某一项时触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.value | any | 改变后的值 | | $event.oldValue | any | 旧的值 | | $event.item | object | 选择项相关对象 | | $event.oldItem | object | 旧的选择项相关对象 | | $event.itemVM | UMenuItem | 选择项子组件 | | $event.oldVM | UMenuItem | 旧的选择项子组件 | | senderVM | UMenu | 发送事件实例 | #### @toggle 展开/折叠某分组时触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.expanded | boolean | 展开/折叠状态 | | $event.groupVM | UMenuGroup | 分组组件 | Methods #### toggleAll(expanded) 展开/折叠所有分组 | Param | Type | Default | Description | | ----- | ---- | ------- | ----------- | | expanded | boolean | | 展开/折叠 | ## UMenuItem API ### Props/Attrs | Prop/Attr | Type | Options | Default | Description | | --------- | ---- | ------- | ------- | ----------- | | text | string | | | 文本内容 | | value | any | | | 此项的值 | | disabled | boolean | | `false` | 禁用此项 | | item | object | | | 相关对象。当选择此项时,抛出的事件会传递该对象,便于开发 | | linkType | string | `[object Object]`<br/>`[object Object]` | `'destination'` | 链接类型 | | hrefAndTo | string | | | 链接地址 | | target | string | `[object Object]`<br/>`[object Object]`<br/>`[object Object]`<br/>`[object Object]` | `'_self'` | 父级窗口和顶级窗口仅适用于iframe组件嵌套的情况,若不存在嵌套,则打开方式同当前窗口。 | | replace | boolean | | `false` | 需要 vue-router,与`<router-link>`的`replace`属性相同。如果为`true`,当点击时,会调用`router.replace()`而不是`router.push()`,于是导航后不会留下`history `记录。 | | exact | boolean | | `false` | 需要 vue-router,与`<router-link>`的`exact`属性相同。是否与路由完全一致时才高亮显示。 | ### Events #### @click 点击此项时触发,与原生 click 事件不同的是,它只会在非只读和禁用的情况下触发。 | Param | Type | Description | | ----- | ---- | ----------- | | $event | MouseEvent | 鼠标事件对象 | | senderVM | Vue | 发送事件实例 | #### @before-select 选择此项前触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.value | any | 此项的值 | | $event.item | object | 此项的相关对象 | | $event.itemVM | UMenuItem | 此组件 | | $event.preventDefault | Function | 阻止选择流程 | | senderVM | Vue | 发送事件实例 | #### @before-navigate 使用 router 相关属性切换路由前触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.to | string, Location | `to`属性的值 | | $event.replace | boolean | `replace`属性的值 | | $event.exact | boolean | `exact`属性的值 | | $event.preventDefault | Function | 阻止切换流程 | | senderVM | Vue | 发送事件实例 | #### @navigate 使用router相关属性切换路由时触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.to | string, Location | `to`属性的值 | | $event.replace | boolean | `replace`属性的值 | | $event.exact | boolean | `exact`属性的值 | | senderVM | Vue | 发送事件实例 | ## UMenuGroup API ### Props/Attrs | Prop/Attr | Type | Options | Default | Description | | --------- | ---- | ------- | ------- | ----------- | | title | string | | | 显示的标题 | ### Slots #### (default) 插入`<u-menu-item>`或`<u-menu-divider>`子组件。 #### sub 插入子菜单`<u-menu>`。 #### title 自定义标题文本。 #### extra 在右侧可以附加内容。 ### Events #### @before-toggle 展开/折叠此分组前触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.expanded | boolean | 展开/折叠状态 | | $event.groupVM | UMenuGroup | 分组组件 | | $event.preventDefault | Function | 阻止展开/折叠流程 | | senderVM | Vue | 发送事件实例 | #### @toggle 展开/折叠某分组时触发 | Param | Type | Description | | ----- | ---- | ----------- | | $event | object | 自定义事件对象 | | $event.expanded | boolean | 展开/折叠状态 | | $event.groupVM | UMenuGroup | 分组组件 | | senderVM | Vue | 发送事件实例 | ## UMenuDivider API 暂无