update the master branch to the latest
This commit is contained in:
parent
67d534df27
commit
23a0ba9831
611 changed files with 122648 additions and 0 deletions
34
src/mixins/emitter.js
Executable file
34
src/mixins/emitter.js
Executable file
|
@ -0,0 +1,34 @@
|
|||
function broadcast(componentName, eventName, params) {
|
||||
this.$children.forEach(child => {
|
||||
const name = child.$options.name;
|
||||
|
||||
if (name === componentName) {
|
||||
child.$emit.apply(child, [eventName].concat(params));
|
||||
} else {
|
||||
// todo 如果 params 是空数组,接收到的会是 undefined
|
||||
broadcast.apply(child, [componentName, eventName].concat([params]));
|
||||
}
|
||||
});
|
||||
}
|
||||
export default {
|
||||
methods: {
|
||||
dispatch(componentName, eventName, params) {
|
||||
let parent = this.$parent || this.$root;
|
||||
let name = parent.$options.name;
|
||||
|
||||
while (parent && (!name || name !== componentName)) {
|
||||
parent = parent.$parent;
|
||||
|
||||
if (parent) {
|
||||
name = parent.$options.name;
|
||||
}
|
||||
}
|
||||
if (parent) {
|
||||
parent.$emit.apply(parent, [eventName].concat(params));
|
||||
}
|
||||
},
|
||||
broadcast(componentName, eventName, params) {
|
||||
broadcast.call(this, componentName, eventName, params);
|
||||
}
|
||||
}
|
||||
};
|
75
src/mixins/link.js
Normal file
75
src/mixins/link.js
Normal file
|
@ -0,0 +1,75 @@
|
|||
import { oneOf } from '../utils/assist';
|
||||
|
||||
export default {
|
||||
props: {
|
||||
to: {
|
||||
type: [Object, String]
|
||||
},
|
||||
replace: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
target: {
|
||||
type: String,
|
||||
validator (value) {
|
||||
return oneOf(value, ['_blank', '_self', '_parent', '_top']);
|
||||
},
|
||||
default: '_self'
|
||||
},
|
||||
append: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
linkUrl () {
|
||||
const type = typeof this.to;
|
||||
if (type !== 'string') {
|
||||
return null;
|
||||
}
|
||||
if (this.to.includes('//')) {
|
||||
/* Absolute URL, we do not need to route this */
|
||||
return this.to;
|
||||
}
|
||||
const router = this.$router;
|
||||
if (router) {
|
||||
const current = this.$route;
|
||||
const route = router.resolve(this.to, current, this.append);
|
||||
return route ? route.href : this.to;
|
||||
}
|
||||
return this.to;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (new_window = false) {
|
||||
const router = this.$router;
|
||||
|
||||
if (new_window) {
|
||||
let to = this.to;
|
||||
if (router) {
|
||||
const current = this.$route;
|
||||
const route = router.resolve(this.to, current, this.append);
|
||||
to = route ? route.href : this.to;
|
||||
}
|
||||
window.open(to);
|
||||
} else {
|
||||
if (router) {
|
||||
this.replace ? this.$router.replace(this.to) : this.$router.push(this.to);
|
||||
} else {
|
||||
window.location.href = this.to;
|
||||
}
|
||||
}
|
||||
},
|
||||
handleCheckClick (event, new_window = false) {
|
||||
if (this.to) {
|
||||
if (this.target === '_blank') {
|
||||
return false;
|
||||
} else {
|
||||
event.preventDefault();
|
||||
this.handleClick(new_window);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
9
src/mixins/locale.js
Normal file
9
src/mixins/locale.js
Normal file
|
@ -0,0 +1,9 @@
|
|||
import { t } from '../locale';
|
||||
|
||||
export default {
|
||||
methods: {
|
||||
t(...args) {
|
||||
return t.apply(this, args);
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue