ten-design-vue
Version:
ten-vue
60 lines (50 loc) • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _broadcast(componentName, eventName, params) {
this.$children.forEach(function (child) {
var name = child.$options.name;
if (name === componentName) {
// eslint-disable-next-line
child.$emit.apply(child, [eventName].concat(params));
} else {
_broadcast.apply(child, [componentName, eventName].concat([params]));
}
});
}
function broadcastAll(eventName, params) {
this.$children.forEach(function (child) {
var name = child.$options.name || '';
if (name.indexOf('ten-') === 0 || name.indexOf('Ten') === 0) {
// eslint-disable-next-line
child.$emit.apply(child, [eventName].concat(params));
}
broadcastAll.apply(child, [eventName].concat(params));
});
}
var _default = {
methods: {
dispatch: function dispatch(componentName, eventName, params) {
var parent = this.$parent || this.$root;
var name = parent.$options.name;
while (parent && (!name || name !== componentName)) {
parent = parent.$parent;
if (parent) {
// eslint-disable-next-line
name = parent.$options.name;
}
}
if (parent) {
// eslint-disable-next-line
parent.$emit.apply(parent, [eventName].concat(params));
}
},
broadcast: function broadcast(componentName, eventName, params) {
_broadcast.call(this, componentName, eventName, params);
},
broadcastAll: broadcastAll
}
};
exports.default = _default;