@cause-911/devextreme
Version:
Run `npm install @cause-911/devextreme --save` to add this library to your project
232 lines • 17.5 kB
JavaScript
/**
* @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==