UNPKG

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

Version:
150 lines (133 loc) 5.64 kB
'use strict'; 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(); } };