UNPKG

@cause-911/devextreme

Version:

Run `npm install @cause-911/devextreme --save` to add this library to your project

232 lines 17.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, EventEmitter, Input, Output } from '@angular/core'; import { TranslateService, CoreService } from '@cause-911/core'; var CauseTextBoxMultipleLangueComponent = /** @class */ (function () { function CauseTextBoxMultipleLangueComponent(coreService, translate) { this.translate = translate; this.valueChange = new EventEmitter(); this.isValid = true; this.isValidLang = {}; this.tabs = []; this.selectedIndex = 0; this.values = []; this.validation = { isRequired: false }; this.config = coreService.getConfig(); } Object.defineProperty(CauseTextBoxMultipleLangueComponent.prototype, "isRequired", { get: /** * @return {?} */ function () { return this.validation.isRequired; }, set: /** * @param {?} value * @return {?} */ function (value) { this.validation.isRequired = value; this.validate(); }, enumerable: true, configurable: true }); Object.defineProperty(CauseTextBoxMultipleLangueComponent.prototype, "value", { get: /** * @return {?} */ function () { return this.values; }, set: /** * @param {?} value * @return {?} */ function (value) { var e_1, _a; if (typeof (value) === 'string' || typeof (value) === 'undefined') { try { for (var _b = tslib_1.__values(this.config.languages), _c = _b.next(); !_c.done; _c = _b.next()) { var i = _c.value; /** @type {?} */ var valueLang = {}; valueLang['languageCode'] = i; valueLang[this.localizationField] = value || ''; this.values.push(valueLang); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_c && !_c.done && (_a = _b.return)) _a.call(_b); } finally { if (e_1) throw e_1.error; } } } else if (typeof (value) === 'object') { this.values = value; } }, enumerable: true, configurable: true }); /** * @return {?} */ CauseTextBoxMultipleLangueComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.translate.get(this.config.languages).subscribe((/** * @param {?} labels * @return {?} */ function (labels) { for (var i in labels) { if (labels[i]) { _this.isValidLang[i] = true; _this.tabs.push({ languageCode: i, text: labels[i], }); } } })); }; /** * @param {?} languageCode * @return {?} */ CauseTextBoxMultipleLangueComponent.prototype.getLocalizationIndex = /** * @param {?} languageCode * @return {?} */ function (languageCode) { /** @type {?} */ var index = this.values.findIndex((/** * @param {?} l * @return {?} */ function (l) { return l.languageCode === languageCode; })); if (index === -1) { /** @type {?} */ var value = {}; value['languageCode'] = languageCode; value[this.localizationField] = ''; this.values.push(value); return this.values.length - 1; } return index; }; /** * @return {?} */ CauseTextBoxMultipleLangueComponent.prototype.validate = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var isValid = true; this.config.languages.forEach((/** * @param {?} lang * @return {?} */ function (lang) { /** @type {?} */ var index = _this.values.findIndex((/** * @param {?} l * @return {?} */ function (l) { return l.languageCode === lang; })); if (_this.validation.isRequired && (index === -1 || !_this.values[index][_this.localizationField])) { isValid = false; _this.isValidLang[lang] = false; } else { _this.isValidLang[lang] = true; } })); this.isValid = isValid; }; /** * @param {?} e * @return {?} */ CauseTextBoxMultipleLangueComponent.prototype.onTagChanged = /** * @param {?} e * @return {?} */ function (e) { this.validate(); }; /** * @return {?} */ CauseTextBoxMultipleLangueComponent.prototype.onValueChanged = /** * @return {?} */ function () { this.validate(); this.valueChange.emit(this.values); }; CauseTextBoxMultipleLangueComponent.decorators = [ { type: Component, args: [{ selector: 'cause-dx-text-box-multiple-langue', template: "<dx-tab-panel\n [dataSource]=\"tabs\"\n [selectedIndex]=\"selectedIndex\"\n (onSelectionChanged)=\"onTagChanged($event)\">\n <div *dxTemplate=\"let lang of 'title'\">\n <span [class]=\"isValidLang[lang.languageCode] ? '' : 'text-error'\">{{lang.text}}</span>\n <span *ngIf=\"!isValidLang[lang.languageCode]\" class=\"icon-error\">\n <i class=\"dx-icon-info\"></i>\n </span>\n </div>\n <div *dxTemplate=\"let lang of 'item'\">\n <div *ngIf=\"localizationField\">\n <dx-text-box\n [placeholder]=\"lang.text\"\n [(value)]=\"value[getLocalizationIndex(lang.languageCode)][localizationField]\"\n valueChangeEvent=\"keyup\"\n (onValueChanged)=\"onValueChanged()\">\n </dx-text-box>\n </div>\n <div *ngIf=\"!localizationField\">\n <dx-text-box\n [placeholder]=\"lang.text\"\n [(value)]=\"value[lang.languageCode]\"\n valueChangeEvent=\"keyup\"\n (onValueChanged)=\"onValueChanged()\">\n </dx-text-box>\n </div>\n </div>\n</dx-tab-panel>\n", styles: [".text-error{color:#d9534f}.icon-error{color:#fff;border-radius:50%;margin-left:.5em;background-color:#d9534f}"] }] } ]; /** @nocollapse */ CauseTextBoxMultipleLangueComponent.ctorParameters = function () { return [ { type: CoreService }, { type: TranslateService } ]; }; CauseTextBoxMultipleLangueComponent.propDecorators = { valueChange: [{ type: Output }], localizationField: [{ type: Input }], isRequired: [{ type: Input, args: ['isRequired',] }], value: [{ type: Input, args: ['value',] }] }; return CauseTextBoxMultipleLangueComponent; }()); export { CauseTextBoxMultipleLangueComponent }; if (false) { /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.valueChange; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.localizationField; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.isValid; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.isValidLang; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.config; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.tabs; /** @type {?} */ CauseTextBoxMultipleLangueComponent.prototype.selectedIndex; /** * @type {?} * @private */ CauseTextBoxMultipleLangueComponent.prototype.values; /** * @type {?} * @private */ CauseTextBoxMultipleLangueComponent.prototype.validation; /** * @type {?} * @private */ CauseTextBoxMultipleLangueComponent.prototype.translate; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F1c2UtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvZGV2ZXh0cmVtZS8iLCJzb3VyY2VzIjpbImxpYi9jYXVzZS10ZXh0LWJveC1tdWx0aXBsZS1sYW5ndWUvY2F1c2UtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLGdCQUFnQixFQUFpQixXQUFXLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3RTtJQWlESSw2Q0FDSSxXQUF3QixFQUNoQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQTdDN0IsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBNkIzQyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFFdEIsU0FBSSxHQUdFLEVBQUUsQ0FBQztRQUNULGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBRVYsV0FBTSxHQUFRLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQUc7WUFDakIsVUFBVSxFQUFFLEtBQUs7U0FDcEIsQ0FBQztRQU1FLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUE5Q0Qsc0JBQ0ksMkRBQVU7Ozs7UUFEZDtZQUVJLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDdEMsQ0FBQzs7Ozs7UUFDRCxVQUFlLEtBQWM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNwQixDQUFDOzs7T0FKQTtJQU1ELHNCQUNJLHNE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SSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDbEM7aUJBQU07Z0JBQ0gsS0FBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDakM7UUFDTCxDQUFDLEVBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBRUQsMERBQVk7Ozs7SUFBWixVQUFhLENBQUM7UUFDVixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7OztJQUVELDREQUFjOzs7SUFBZDtRQUNJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs7Z0JBN0dKLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUsbUNBQW1DO29CQUM3QyxndENBQThEOztpQkFFakU7Ozs7Z0JBTndDLFdBQVc7Z0JBQTVDLGdCQUFnQjs7OzhCQVFuQixNQUFNO29DQUNOLEtBQUs7NkJBQ0wsS0FBSyxTQUFDLFlBQVk7d0JBU2xCLEtBQUssU0FBQyxPQUFPOztJQTZGbEIsMENBQUM7Q0FBQSxBQTlHRCxJQThHQztTQXpHWSxtQ0FBbUM7OztJQUM1QywwREFBMkM7O0lBQzNDLGdFQUFtQzs7SUE0Qm5DLHNEQUFlOztJQUNmLDBEQUFzQjs7SUFDdEIscURBQXNCOztJQUN0QixtREFHUzs7SUFDVCw0REFBa0I7Ozs7O0lBRWxCLHFEQUF5Qjs7Ozs7SUFDekIseURBRUU7Ozs7O0lBSUUsd0RBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZSwgQ29uZmlndXJhdGlvbiwgQ29yZVNlcnZpY2V9IGZyb20gJ0BjYXVzZS05MTEvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2F1c2UtZHgtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2F1c2UtdGV4dC1ib3gtbXVsdGlwbGUtbGFuZ3VlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXVzZS10ZXh0LWJveC1tdWx0aXBsZS1sYW5ndWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDYXVzZVRleHRCb3hNdWx0aXBsZUxhbmd1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBJbnB1dCgpIGxvY2FsaXphdGlvbkZpZWxkOiBzdHJpbmc7XG4gICAgQElucHV0KCdpc1JlcXVpcmVkJylcbiAgICBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRhdGlvbi5pc1JlcXVpcmVkO1xuICAgIH1cbiAgICBzZXQgaXNSZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb24uaXNSZXF1aXJlZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgfVxuXG4gICAgQElucHV0KCd2YWx1ZScpXG4gICAgZ2V0IHZhbHVlKCk6IHt9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzO1xuICAgIH1cbiAgICBzZXQgdmFsdWUodmFsdWU6IHt9KSB7XG4gICAgICAgIGlmICh0eXBlb2YodmFsdWUpID09PSAnc3RyaW5nJyB8fCB0eXBlb2YodmFsdWUpID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuY29uZmlnLmxhbmd1YWdlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlTGFuZyA9IHt9O1xuICAgICAgICAgICAgICAgIHZhbHVlTGFuZ1snbGFuZ3VhZ2VDb2RlJ10gPSBpO1xuICAgICAgICAgICAgICAgIHZhbHVlTGFuZ1t0aGlzLmxvY2FsaXphdGlvbkZpZWxkXSA9IHZhbHVlIHx8ICcnO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMucHVzaCh2YWx1ZUxhbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNWYWxpZCA9IHRydWU7XG4gICAgaXNWYWxpZExhbmc6IGFueSA9IHt9O1xuICAgIGNvbmZpZzogQ29uZmlndXJhdGlvbjtcbiAgICB0YWJzOiB7XG4gICAgICAgIGxhbmd1YWdlQ29kZTogc3RyaW5nLFxuICAgICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgfVtdID0gW107XG4gICAgc2VsZWN0ZWRJbmRleCA9IDA7XG5cbiAgICBwcml2YXRlIHZhbHVlczogYW55ID0gW107XG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uID0ge1xuICAgICAgICBpc1JlcXVpcmVkOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgY29yZVNlcnZpY2U6IENvcmVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb3JlU2VydmljZS5nZXRDb25maWcoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMuY29uZmlnLmxhbmd1YWdlcykuc3Vic2NyaWJlKGxhYmVscyA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGkgaW4gbGFiZWxzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWRMYW5nW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VDb2RlOiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbGFiZWxzW2ldLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldExvY2FsaXphdGlvbkluZGV4KGxhbmd1YWdlQ29kZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZXMuZmluZEluZGV4KGwgPT4gbC5sYW5ndWFnZUNvZGUgPT09IGxhbmd1YWdlQ29kZSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB7fTtcbiAgICAgICAgICAgIHZhbHVlWydsYW5ndWFnZUNvZGUnXSA9IGxhbmd1YWdlQ29kZTtcbiAgICAgICAgICAgIHZhbHVlW3RoaXMubG9jYWxpemF0aW9uRmllbGRdID0gJyc7XG5cbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUoKSB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmNvbmZpZy5sYW5ndWFnZXMuZm9yRWFjaChsYW5nID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy52YWx1ZXMuZmluZEluZGV4KGwgPT4gbC5sYW5ndWFnZUNvZGUgPT09IGxhbmcpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9uLmlzUmVxdWlyZWQgJiYgKGluZGV4ID09PSAtMSB8fCAhdGhpcy52YWx1ZXNbaW5kZXhdW3RoaXMubG9jYWxpemF0aW9uRmllbGRdKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVmFsaWRMYW5nW2xhbmddID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNWYWxpZExhbmdbbGFuZ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmlzVmFsaWQgPSBpc1ZhbGlkO1xuICAgIH1cblxuICAgIG9uVGFnQ2hhbmdlZChlKSB7XG4gICAgICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICB9XG5cbiAgICBvblZhbHVlQ2hhbmdlZCgpIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXMpO1xuICAgIH1cbn1cbiJdfQ==