UNPKG

vue-service-model

Version:

Vue.js library for handling REST service requests with caching, aggregation and model definitions

85 lines (84 loc) 2.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var common_1 = require("../utils/common"); var ConfigHandler_1 = require("../utils/ConfigHandler"); var DisplayComponentPropsMixin_1 = tslib_1.__importDefault(require("../mixins/DisplayComponentPropsMixin")); exports.default = DisplayComponentPropsMixin_1.default.extend({ name: 'BaseDisplayFieldRender', inheritAttrs: false, data: function () { return ({ renderData: common_1.NO_VALUE }); }, computed: { hasResolvedRenderData: function () { return this.renderData !== common_1.NO_VALUE; } }, asyncComputed: { renderData: { default: common_1.NO_VALUE, get: function () { var _self = this; return _self.resolveRenderData(); } } }, watch: { field: function () { this.setResolveRenderData(); }, 'field.data': { deep: true, handler: function () { this.setResolveRenderData(); } }, renderProps: { deep: true, handler: function () { this.setResolveRenderData(); } } }, created: function () { this.setResolveRenderData(); }, methods: { setResolveRenderData: function () { return tslib_1.__awaiter(this, void 0, void 0, function () { var _a; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: if (!!ConfigHandler_1.configHandler.useAsyncComputed()) return [3 /*break*/, 2]; _a = this; return [4 /*yield*/, this.resolveRenderData()]; case 1: _a.renderData = _b.sent(); _b.label = 2; case 2: return [2 /*return*/]; } }); }); }, resolveRenderData: function () { return tslib_1.__awaiter(this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, this.field.prepareDisplayRender(this.renderProps)]; }); }); }, renderField: function (h) { return this.field.displayRender(h, this.renderData); } }, render: function (h) { if (this.hasResolvedRenderData) { return this.renderField(h); } else { return undefined; } } });