@progress/kendo-base-components-vue-wrapper
Version:
Kendo UI Base Component wrapper for Vue.js
150 lines (133 loc) • 5.64 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = {
name: 'baseDataSourceComponent',
props: {
dataSourceRef: {
type: String,
default: undefined
}
},
render: function render(h) {
return h('div');
},
methods: {
findDataSource: function findDataSource() {
var dataSource;
if (this.$children) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = this.$children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var a = _step.value;
if (this.$children.length && a.kendoDataSource) {
dataSource = a.kendoDataSource;
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
return dataSource;
},
setInnerDataSource: function setInnerDataSource() {
var dataSourceRefProp = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'dataSourceRef';
var rootProp = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dataSource';
var subProp = arguments[2];
var innerDataSource = this.findDataSource();
if (innerDataSource) {
if (!subProp) {
this.widgetOptions[rootProp] = innerDataSource;
} else {
subProp[rootProp] = innerDataSource;
}
} else {
var refString = subProp ? subProp[dataSourceRefProp] : this[dataSourceRefProp];
var referredDataSource = this.getParentsRef(refString);
if (referredDataSource) {
this.attachEvents(referredDataSource);
if (!subProp) {
this.widgetOptions[rootProp] = referredDataSource.kendoDataSource;
} else {
subProp[rootProp] = referredDataSource.kendoDataSource;
}
}
}
},
getParentsRef: function getParentsRef(anchor) {
var parent = this.$parent;
while (parent && !parent.$refs[anchor]) {
parent = parent.$parent;
}
return parent ? parent.$refs[anchor] : undefined;
},
setDataSource: function setDataSource(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: function 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: function mounted() {
var that = this;
that.$watch('dataSourceRef', function (newValue) {
that.setDataSource(newValue);
});
that.$watch('dataSource', function (newValue) {
that.setDataSource(newValue);
});
that.setInnerDataSource();
}
};
;