Commit 2a7765f93d23cab86afdb80e89bf656fe5207dac

Authored by 梁灏
1 parent f9a6a467

update Menu

src/components/button/button.vue
... ... @@ -102,7 +102,7 @@
102 102 },
103 103 methods: {
104 104 // Ctrl or CMD and click, open in new window when use `to`
105   - handleClickLink (event, new_window) {
  105 + handleClickLink (event, new_window = false) {
106 106 this.$emit('click', event);
107 107  
108 108 this.handleCheckClick(event, new_window);
... ...
src/components/menu/menu-item.vue
1 1 <template>
2   - <a v-if="to" :href="linkUrl" :target="target" :class="classes" @click="handleClickItem" :style="itemStyle"><slot></slot></a>
  2 + <a
  3 + v-if="to"
  4 + :href="linkUrl"
  5 + :target="target"
  6 + :class="classes"
  7 + @click.exact="handleClickItem($event, false)"
  8 + @click.ctrl="handleClickItem($event, true)"
  9 + @click.meta="handleClickItem($event, true)"
  10 + :style="itemStyle"><slot></slot></a>
3 11 <li v-else :class="classes" @click.stop="handleClickItem" :style="itemStyle"><slot></slot></li>
4 12 </template>
5 13 <script>
... ... @@ -46,18 +54,23 @@
46 54 }
47 55 },
48 56 methods: {
49   - handleClickItem (event) {
  57 + handleClickItem (event, new_window = false) {
50 58 if (this.disabled) return;
51 59  
52   - let parent = findComponentUpward(this, 'Submenu');
53   -
54   - if (parent) {
55   - this.dispatch('Submenu', 'on-menu-item-select', this.name);
  60 + if (new_window) {
  61 + // 如果是 new_window,直接新开窗口就行,无需发送状态
  62 + this.handleCheckClick(event, new_window);
56 63 } else {
57   - this.dispatch('Menu', 'on-menu-item-select', this.name);
58   - }
  64 + let parent = findComponentUpward(this, 'Submenu');
59 65  
60   - this.handleCheckClick(event);
  66 + if (parent) {
  67 + this.dispatch('Submenu', 'on-menu-item-select', this.name);
  68 + } else {
  69 + this.dispatch('Menu', 'on-menu-item-select', this.name);
  70 + }
  71 +
  72 + this.handleCheckClick(event, new_window);
  73 + }
61 74 }
62 75 },
63 76 mounted () {
... ...