@caofeilong/vue-menu
Version:
Vue component for menu & contextmenu
86 lines (70 loc) • 3.06 kB
Markdown
> 修改自 /vue-menu
修改内容
当 hsc-menu-item 中自定义 body slot 的时候 hsc-menu-item依然可以绑定click事件
# vue-menu
## Introduction
Recent web technologies focus on mobile environments. UIs premised on mouse operation such as window, context-menu, nested-menu and so on are no longer mainstream. However hierarchical structure -- context-menu and nested-menu -- is still effective. This package is an implementation of {nested,context}-menu for PC environments as a Vue Component.
### [Working Demo](https://michitaro.github.io/vue-menu)
### Features
* Menu component for vue2
* Deeply nested menu supported
* Props "checked" & "disabled"
* Keybinds
* Y-scrollable if necessary
* Contextmenu
* Builtin 3 themes (white, metal & black)
* Customizable color
* Menuitem can contain any HTML not only text
* Tested on Safari10, Chrome60, Firefox55, IE11, Edge38 for PCs
* ~~Does not work on mobile devices 😞~~

# Usage
## Install
```sh
npm install --save /vue-menu
```
## Setup
### ES6 / TypeScript
```typescript
import Vue from 'vue'
import * as VueMenu from '/vue-menu'
Vue.use(VueMenu)
```
### CommonJS
```javascript
var Vue = require('vue')
Vue.use(require('/vue-menu'))
```
# Example
```html
<template>
<hsc-menu-style-white>
<hsc-menu-bar style="border-radius: 0 0 4pt 0;">
<hsc-menu-bar-item label="File">
<hsc-menu-item label="New" ="window.alert('New')" />
<hsc-menu-item label="Open" ="window.alert('Open')" />
<hsc-menu-separator/>
<hsc-menu-item label="Save" ="window.alert('Save')" :disabled="true" />
<hsc-menu-item label="Export to">
<hsc-menu-item label="PDF" />
<hsc-menu-item label="HTML" />
</hsc-menu-item>
</hsc-menu-bar-item>
<hsc-menu-bar-item label="Edit">
<hsc-menu-item label="Undo" keybind="meta+z" ="window.alert('Undo')" />
<hsc-menu-separator/>
<hsc-menu-item label="Cut" keybind="meta+x" ="window.alert('Cut')" />
<hsc-menu-item label="Copy" keybind="meta+c" ="window.alert('Copy')" />
<hsc-menu-item label="Paste" keybind="meta+v" ="window.alert('Paste')" :disabled="true" />
</hsc-menu-bar-item>
</hsc-menu-bar>
</hsc-menu-style-white>
</template>
```
Other examples are available [here](http://michitaro.github.io/vue-menu/).
See also [vue-window](https://github.com/michitaro/vue-window). This is a window UI component for vue2 with the same color themes.
# Caveats
* ~~This component doesn't work on [electron-vue](https://github.com/SimulatedGREG/electron-vue).~~
* See [here](https://github.com/michitaro/vue-menu/issues/5#issuecomment-450770617) to use with [electron-vue](https://github.com/SimulatedGREG/electron-vue).
# Contributing
Any comments, suggestions or PRs are welcome 😀