UNPKG

@progress/kendo-base-components-vue-wrapper

Version:
124 lines (111 loc) 4.42 kB
'use strict'; 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(); } };