@progress/kendo-base-components-vue-wrapper
Version:
Kendo UI Base Component wrapper for Vue.js
124 lines (111 loc) • 4.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
name: 'baseDataSourceComponent',
props: {
dataSourceRef: {
type: String,
default: undefined
}
},
render(h) {
return h('div');
},
methods: {
findDataSource: function () {
var dataSource;
if (this.$children) {
for (const a of this.$children) {
if (this.$children.length && a.kendoDataSource) {
dataSource = a.kendoDataSource;
break;
}
}
}
return dataSource;
},
setInnerDataSource: function (dataSourceRefProp = 'dataSourceRef', rootProp = 'dataSource', subProp) {
var innerDataSource = this.findDataSource();
if (innerDataSource) {
if (!subProp) {
this.widgetOptions[rootProp] = innerDataSource;
} else {
subProp[rootProp] = innerDataSource;
}
} else {
let refString = subProp ? subProp[dataSourceRefProp] : this[dataSourceRefProp];
let referredDataSource = this.getParentsRef(refString);
if (referredDataSource) {
this.attachEvents(referredDataSource);
if (!subProp) {
this.widgetOptions[rootProp] = referredDataSource.kendoDataSource;
} else {
subProp[rootProp] = referredDataSource.kendoDataSource;
}
}
}
},
getParentsRef: function (anchor) {
var parent = this.$parent;
while (parent && !parent.$refs[anchor]) {
parent = parent.$parent;
}
return parent ? parent.$refs[anchor] : undefined;
},
setDataSource: function (newValue) {
var newDataSourceRef = this.getParentsRef(newValue);
var kendoWidget = this.kendoWidget();
if (kendoWidget.setDataSource && newDataSourceRef) {
kendoWidget.setDataSource(newDataSourceRef.kendoDataSource);
} else if (kendoWidget.setDataSource) {
kendoWidget.setDataSource(newValue);
}
},
attachEvents(referredDataSource) {
if (referredDataSource.kendoDataSource) {
referredDataSource.kendoDataSource.bind('change', function (ev) {
if (referredDataSource.getListeners()['change']) {
referredDataSource.$emit('change', ev);
}
});
referredDataSource.kendoDataSource.bind('error', function (ev) {
if (referredDataSource.getListeners()['error']) {
referredDataSource.$emit('error', ev);
}
});
referredDataSource.kendoDataSource.bind('push', function (ev) {
if (referredDataSource.getListeners()['push']) {
referredDataSource.$emit('push', ev);
}
});
referredDataSource.kendoDataSource.bind('requestEnd', function (ev) {
if (referredDataSource.getListeners()['requestend']) {
referredDataSource.$emit('requestend', ev);
}
});
referredDataSource.kendoDataSource.bind('requestStart', function (ev) {
if (referredDataSource.getListeners()['requeststart']) {
referredDataSource.$emit('requeststart', ev);
}
});
referredDataSource.kendoDataSource.bind('sync', function (ev) {
if (referredDataSource.getListeners()['sync']) {
referredDataSource.$emit('sync', ev);
}
});
}
}
},
mounted() {
let that = this;
that.$watch('dataSourceRef', function (newValue) {
that.setDataSource(newValue);
});
that.$watch('dataSource', function (newValue) {
that.setDataSource(newValue);
});
that.setInnerDataSource();
}
};
;