Commit f9a6a467a60a4f28b0ba34a778c687b605d3b8eb

Authored by 梁灏
1 parent e7fc76d8

update Button

Showing 2 changed files with 17 additions and 10 deletions   Show diff stats
src/components/button/button.vue
@@ -5,7 +5,9 @@ @@ -5,7 +5,9 @@
5 :disabled="disabled" 5 :disabled="disabled"
6 :href="linkUrl" 6 :href="linkUrl"
7 :target="target" 7 :target="target"
8 - @click="handleClickLink"> 8 + @click.exact="handleClickLink($event, false)"
  9 + @click.ctrl="handleClickLink($event, true)"
  10 + @click.meta="handleClickLink($event, true)">
9 <Icon class="ivu-load-loop" type="ios-loading" v-if="loading"></Icon> 11 <Icon class="ivu-load-loop" type="ios-loading" v-if="loading"></Icon>
10 <Icon :type="icon" :custom="customIcon" v-if="(icon || customIcon) && !loading"></Icon> 12 <Icon :type="icon" :custom="customIcon" v-if="(icon || customIcon) && !loading"></Icon>
11 <span v-if="showSlot" ref="slot"><slot></slot></span> 13 <span v-if="showSlot" ref="slot"><slot></slot></span>
@@ -99,10 +101,11 @@ @@ -99,10 +101,11 @@
99 } 101 }
100 }, 102 },
101 methods: { 103 methods: {
102 - handleClickLink (event) { 104 + // Ctrl or CMD and click, open in new window when use `to`
  105 + handleClickLink (event, new_window) {
103 this.$emit('click', event); 106 this.$emit('click', event);
104 107
105 - this.handleCheckClick(event); 108 + this.handleCheckClick(event, new_window);
106 } 109 }
107 }, 110 },
108 mounted () { 111 mounted () {
src/mixins/link.js
@@ -24,21 +24,25 @@ export default { @@ -24,21 +24,25 @@ export default {
24 } 24 }
25 }, 25 },
26 methods: { 26 methods: {
27 - handleClick () {  
28 - const isRoute = this.$router;  
29 - if (isRoute) {  
30 - this.replace ? this.$router.replace(this.to) : this.$router.push(this.to); 27 + handleClick (new_window = false) {
  28 + if (new_window){
  29 + window.open(this.to);
31 } else { 30 } else {
32 - window.location.href = this.to; 31 + const isRoute = this.$router;
  32 + if (isRoute) {
  33 + this.replace ? this.$router.replace(this.to) : this.$router.push(this.to);
  34 + } else {
  35 + window.location.href = this.to;
  36 + }
33 } 37 }
34 }, 38 },
35 - handleCheckClick (event) { 39 + handleCheckClick (event, new_window = false) {
36 if (this.to) { 40 if (this.to) {
37 if (this.target === '_blank') { 41 if (this.target === '_blank') {
38 return false; 42 return false;
39 } else { 43 } else {
40 event.preventDefault(); 44 event.preventDefault();
41 - this.handleClick(); 45 + this.handleClick(new_window);
42 } 46 }
43 } 47 }
44 } 48 }