@porscheinformatik/clr-addons 12.3.1 → 12.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright (c) 2018-2021 Porsche Informatik. All Rights Reserved.
2
+ * Copyright (c) 2018-2022 Porsche Informatik. All Rights Reserved.
3
3
  * This software is released under MIT license.
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
@@ -11,18 +11,75 @@ export class ClrMultilingualAbstract extends ClrAbstractFormComponent {
11
11
  super(injector);
12
12
  this.multi = true;
13
13
  this.controlClasses = 'clr-col-md-10';
14
+ this.missingPrefix = '';
15
+ }
16
+ set fallbackLanguage(fallbackLang) {
17
+ this.fallbackLang = fallbackLang;
18
+ this.updateShownTexts();
19
+ }
20
+ set missingPre(missingPrefix) {
21
+ this.missingPrefix = missingPrefix;
22
+ this.updateShownTexts();
23
+ }
24
+ set langs(languages) {
25
+ this.languages = languages;
26
+ this.updateShownTexts();
14
27
  }
15
28
  writeValue(value) {
16
29
  if (value) {
17
30
  this.texts = new Map(value);
18
31
  }
32
+ this.updateShownTexts();
19
33
  }
20
34
  setText(key, value) {
21
35
  this.texts.set(key, value);
22
36
  this.onChange(new Map(this.texts));
37
+ this.updateShownTexts();
38
+ }
39
+ updateShownTexts() {
40
+ if (this.texts) {
41
+ if (this.languages) {
42
+ this.shownTexts = this.applyMissingPrefix(new Map(this.languages.map(lang => [lang, this.texts.get(lang) || ''])));
43
+ }
44
+ else {
45
+ this.shownTexts = this.applyMissingPrefix(new Map(this.texts));
46
+ }
47
+ }
48
+ }
49
+ applyMissingPrefix(texts) {
50
+ if (!this.missingPrefix) {
51
+ return texts;
52
+ }
53
+ const fallbackText = this.missingPrefix + this.determineFallbackText();
54
+ for (const lang of texts.keys()) {
55
+ if (!texts.get(lang)) {
56
+ texts.set(lang, fallbackText);
57
+ }
58
+ }
59
+ return texts;
60
+ }
61
+ determineFallbackText() {
62
+ const fallbackText = this.fallbackLang && this.texts.get(this.fallbackLang);
63
+ if (fallbackText) {
64
+ return fallbackText;
65
+ }
66
+ const languages = [...(this.languages || [])].sort();
67
+ const nonEmptyTextFromShownTexts = languages.map(lang => this.texts.get(lang)).find(text => text);
68
+ if (nonEmptyTextFromShownTexts) {
69
+ return nonEmptyTextFromShownTexts;
70
+ }
71
+ const nonEmptyTextFromHiddenTexts = [...this.texts.keys()]
72
+ .sort()
73
+ .filter(lang => !languages.includes(lang))
74
+ .map(lang => this.texts.get(lang))
75
+ .find(text => text);
76
+ if (nonEmptyTextFromHiddenTexts) {
77
+ return nonEmptyTextFromHiddenTexts;
78
+ }
79
+ return '';
23
80
  }
24
81
  showLanguageSelector() {
25
- return (this.texts && this.texts.size > 1) || this.showSingleLanguageSelector;
82
+ return this.shownTexts?.size > 1 || this.showSingleLanguageSelector;
26
83
  }
27
84
  changeLanguage(lang) {
28
85
  // need as the click for closing the menu is registered on a single item
@@ -34,7 +91,7 @@ export class ClrMultilingualAbstract extends ClrAbstractFormComponent {
34
91
  }
35
92
  }
36
93
  ClrMultilingualAbstract.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualAbstract, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
37
- ClrMultilingualAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: ClrMultilingualAbstract, inputs: { controlClasses: ["clrControlClasses", "controlClasses"], selectedLang: ["clrSelectedLang", "selectedLang"], readonly: "readonly", maxlength: "maxlength", showSingleLanguageSelector: ["clrShowSingleLanguageSelector", "showSingleLanguageSelector"] }, host: { properties: { "class.clr-multilingual": "this.multi" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0 });
94
+ ClrMultilingualAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: ClrMultilingualAbstract, inputs: { controlClasses: ["clrControlClasses", "controlClasses"], selectedLang: ["clrSelectedLang", "selectedLang"], readonly: "readonly", maxlength: "maxlength", showSingleLanguageSelector: ["clrShowSingleLanguageSelector", "showSingleLanguageSelector"], fallbackLanguage: ["clrFallbackLang", "fallbackLanguage"], missingPre: ["clrMissingPrefix", "missingPre"], langs: ["clrLanguages", "langs"] }, host: { properties: { "class.clr-multilingual": "this.multi" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0 });
38
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualAbstract, decorators: [{
39
96
  type: Directive
40
97
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { multi: [{
@@ -56,5 +113,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
56
113
  }], inputElement: [{
57
114
  type: ViewChild,
58
115
  args: ['input']
116
+ }], fallbackLanguage: [{
117
+ type: Input,
118
+ args: ['clrFallbackLang']
119
+ }], missingPre: [{
120
+ type: Input,
121
+ args: ['clrMissingPrefix']
122
+ }], langs: [{
123
+ type: Input,
124
+ args: ['clrLanguages']
59
125
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbXVsdGlsaW5ndWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL2Fic3RyYWN0LW11bHRpbGluZ3VhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUcvRixNQUFNLE9BQWdCLHVCQUF3QixTQUFRLHdCQUF3QjtJQWM1RSxZQUFzQixRQUFrQjtRQUN0QyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFkcUIsVUFBSyxHQUFHLElBQUksQ0FBQztRQUV4QixtQkFBYyxHQUFHLGVBQWUsQ0FBQztJQWE3RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQTBCO1FBQ25DLElBQUksS0FBSyxFQUFFO1lBQ1QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUM7SUFDaEYsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLHdFQUF3RTtRQUN4RSw0RUFBNEU7UUFDNUUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7b0hBeENtQix1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUQ1QyxTQUFTOytGQUUrQixLQUFLO3NCQUEzQyxXQUFXO3VCQUFDLHdCQUF3QjtnQkFFVCxjQUFjO3NCQUF6QyxLQUFLO3VCQUFDLG1CQUFtQjtnQkFDQSxZQUFZO3NCQUFyQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFDZixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRWtDLDBCQUEwQjtzQkFBakUsS0FBSzt1QkFBQywrQkFBK0I7Z0JBRWxCLFlBQVk7c0JBQS9CLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMSBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5pbXBvcnQgeyBDbHJBYnN0cmFjdEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3RvciwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbHJNdWx0aWxpbmd1YWxBYnN0cmFjdCBleHRlbmRzIENsckFic3RyYWN0Rm9ybUNvbXBvbmVudCB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MuY2xyLW11bHRpbGluZ3VhbCcpIG11bHRpID0gdHJ1ZTtcblxuICBASW5wdXQoJ2NsckNvbnRyb2xDbGFzc2VzJykgY29udHJvbENsYXNzZXMgPSAnY2xyLWNvbC1tZC0xMCc7XG4gIEBJbnB1dCgnY2xyU2VsZWN0ZWRMYW5nJykgc2VsZWN0ZWRMYW5nOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBzdHJpbmc7XG4gIEBJbnB1dCgpIG1heGxlbmd0aDogbnVtYmVyO1xuICAvKiogU2hvdyBsYW5ndWFnZSBzZWxlY3RvciB3aGVuIG9ubHkgb25lIGxhbmd1YWdlIHByb3ZpZGVkICovXG4gIEBJbnB1dCgnY2xyU2hvd1NpbmdsZUxhbmd1YWdlU2VsZWN0b3InKSBzaG93U2luZ2xlTGFuZ3VhZ2VTZWxlY3RvcjogYm9vbGVhbjtcblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICB0ZXh0czogTWFwPHN0cmluZywgc3RyaW5nPjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogTWFwPHN0cmluZywgc3RyaW5nPik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy50ZXh0cyA9IG5ldyBNYXAodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldFRleHQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRzLnNldChrZXksIHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKG5ldyBNYXAodGhpcy50ZXh0cykpO1xuICB9XG5cbiAgc2hvd0xhbmd1YWdlU2VsZWN0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnRleHRzICYmIHRoaXMudGV4dHMuc2l6ZSA+IDEpIHx8IHRoaXMuc2hvd1NpbmdsZUxhbmd1YWdlU2VsZWN0b3I7XG4gIH1cblxuICBjaGFuZ2VMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBuZWVkIGFzIHRoZSBjbGljayBmb3IgY2xvc2luZyB0aGUgbWVudSBpcyByZWdpc3RlcmVkIG9uIGEgc2luZ2xlIGl0ZW1cbiAgICAvLyBpZiB0aGUgbGFuZ3VhZ2UgY2hhbmdlIGRlc3Ryb3lzIGl0IGltbWVkaWF0ZWx5LCB0aGUgY2xpY2sgd29uJ3QgZ2V0IGZpcmVkXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkTGFuZyA9IGxhbmc7XG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbXVsdGlsaW5ndWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL2Fic3RyYWN0LW11bHRpbGluZ3VhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDOUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUcvRixNQUFNLE9BQWdCLHVCQUF3QixTQUFRLHdCQUF3QjtJQWtCNUUsWUFBc0IsUUFBa0I7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBbEJxQixVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsZUFBZSxDQUFDO1FBWTdELGtCQUFhLEdBQUcsRUFBRSxDQUFDO0lBS25CLENBQUM7SUFFRCxJQUNJLGdCQUFnQixDQUFDLFlBQW9CO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLFVBQVUsQ0FBQyxhQUFxQjtRQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxLQUFLLENBQUMsU0FBbUI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUEwQjtRQUNuQyxJQUFJLEtBQUssRUFBRTtZQUNULElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUN2QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDeEUsQ0FBQzthQUNIO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2hFO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBMEI7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkUsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BCLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsT0FBTyxZQUFZLENBQUM7U0FDckI7UUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckQsTUFBTSwwQkFBMEIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRyxJQUFJLDBCQUEwQixFQUFFO1lBQzlCLE9BQU8sMEJBQTBCLENBQUM7U0FDbkM7UUFFRCxNQUFNLDJCQUEyQixHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3ZELElBQUksRUFBRTthQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN6QyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLDJCQUEyQixFQUFFO1lBQy9CLE9BQU8sMkJBQTJCLENBQUM7U0FDcEM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLDBCQUEwQixDQUFDO0lBQ3RFLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBWTtRQUN6Qix3RUFBd0U7UUFDeEUsNEVBQTRFO1FBQzVFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O29IQW5IbUIsdUJBQXVCO3dHQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFENUMsU0FBUzsrRkFFK0IsS0FBSztzQkFBM0MsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBRVQsY0FBYztzQkFBekMsS0FBSzt1QkFBQyxtQkFBbUI7Z0JBQ0EsWUFBWTtzQkFBckMsS0FBSzt1QkFBQyxpQkFBaUI7Z0JBQ2YsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVrQywwQkFBMEI7c0JBQWpFLEtBQUs7dUJBQUMsK0JBQStCO2dCQUVsQixZQUFZO3NCQUEvQixTQUFTO3VCQUFDLE9BQU87Z0JBYWQsZ0JBQWdCO3NCQURuQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFPcEIsVUFBVTtzQkFEYixLQUFLO3VCQUFDLGtCQUFrQjtnQkFPckIsS0FBSztzQkFEUixLQUFLO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgUG9yc2NoZSBJbmZvcm1hdGlrLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuaW1wb3J0IHsgQ2xyQWJzdHJhY3RGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vYWJzdHJhY3QtZm9ybS1jb21wb25lbnQvYWJzdHJhY3QtZm9ybS1jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5qZWN0b3IsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3QgZXh0ZW5kcyBDbHJBYnN0cmFjdEZvcm1Db21wb25lbnQge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsci1tdWx0aWxpbmd1YWwnKSBtdWx0aSA9IHRydWU7XG5cbiAgQElucHV0KCdjbHJDb250cm9sQ2xhc3NlcycpIGNvbnRyb2xDbGFzc2VzID0gJ2Nsci1jb2wtbWQtMTAnO1xuICBASW5wdXQoJ2NsclNlbGVjdGVkTGFuZycpIHNlbGVjdGVkTGFuZzogc3RyaW5nO1xuICBASW5wdXQoKSByZWFkb25seTogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhsZW5ndGg6IG51bWJlcjtcbiAgLyoqIFNob3cgbGFuZ3VhZ2Ugc2VsZWN0b3Igd2hlbiBvbmx5IG9uZSBsYW5ndWFnZSBwcm92aWRlZCAqL1xuICBASW5wdXQoJ2NsclNob3dTaW5nbGVMYW5ndWFnZVNlbGVjdG9yJykgc2hvd1NpbmdsZUxhbmd1YWdlU2VsZWN0b3I6IGJvb2xlYW47XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgdGV4dHM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHNob3duVGV4dHM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIGxhbmd1YWdlczogc3RyaW5nW107XG4gIG1pc3NpbmdQcmVmaXggPSAnJztcbiAgZmFsbGJhY2tMYW5nOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyRmFsbGJhY2tMYW5nJylcbiAgc2V0IGZhbGxiYWNrTGFuZ3VhZ2UoZmFsbGJhY2tMYW5nOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZhbGxiYWNrTGFuZyA9IGZhbGxiYWNrTGFuZztcbiAgICB0aGlzLnVwZGF0ZVNob3duVGV4dHMoKTtcbiAgfVxuXG4gIEBJbnB1dCgnY2xyTWlzc2luZ1ByZWZpeCcpXG4gIHNldCBtaXNzaW5nUHJlKG1pc3NpbmdQcmVmaXg6IHN0cmluZykge1xuICAgIHRoaXMubWlzc2luZ1ByZWZpeCA9IG1pc3NpbmdQcmVmaXg7XG4gICAgdGhpcy51cGRhdGVTaG93blRleHRzKCk7XG4gIH1cblxuICBASW5wdXQoJ2Nsckxhbmd1YWdlcycpXG4gIHNldCBsYW5ncyhsYW5ndWFnZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5sYW5ndWFnZXMgPSBsYW5ndWFnZXM7XG4gICAgdGhpcy51cGRhdGVTaG93blRleHRzKCk7XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBNYXA8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLnRleHRzID0gbmV3IE1hcCh2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU2hvd25UZXh0cygpO1xuICB9XG5cbiAgc2V0VGV4dChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGV4dHMuc2V0KGtleSwgdmFsdWUpO1xuICAgIHRoaXMub25DaGFuZ2UobmV3IE1hcCh0aGlzLnRleHRzKSk7XG4gICAgdGhpcy51cGRhdGVTaG93blRleHRzKCk7XG4gIH1cblxuICB1cGRhdGVTaG93blRleHRzKCkge1xuICAgIGlmICh0aGlzLnRleHRzKSB7XG4gICAgICBpZiAodGhpcy5sYW5ndWFnZXMpIHtcbiAgICAgICAgdGhpcy5zaG93blRleHRzID0gdGhpcy5hcHBseU1pc3NpbmdQcmVmaXgoXG4gICAgICAgICAgbmV3IE1hcCh0aGlzLmxhbmd1YWdlcy5tYXAobGFuZyA9PiBbbGFuZywgdGhpcy50ZXh0cy5nZXQobGFuZykgfHwgJyddKSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd25UZXh0cyA9IHRoaXMuYXBwbHlNaXNzaW5nUHJlZml4KG5ldyBNYXAodGhpcy50ZXh0cykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFwcGx5TWlzc2luZ1ByZWZpeCh0ZXh0czogTWFwPHN0cmluZywgc3RyaW5nPik6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGlmICghdGhpcy5taXNzaW5nUHJlZml4KSB7XG4gICAgICByZXR1cm4gdGV4dHM7XG4gICAgfVxuXG4gICAgY29uc3QgZmFsbGJhY2tUZXh0ID0gdGhpcy5taXNzaW5nUHJlZml4ICsgdGhpcy5kZXRlcm1pbmVGYWxsYmFja1RleHQoKTtcbiAgICBmb3IgKGNvbnN0IGxhbmcgb2YgdGV4dHMua2V5cygpKSB7XG4gICAgICBpZiAoIXRleHRzLmdldChsYW5nKSkge1xuICAgICAgICB0ZXh0cy5zZXQobGFuZywgZmFsbGJhY2tUZXh0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRleHRzO1xuICB9XG5cbiAgZGV0ZXJtaW5lRmFsbGJhY2tUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgZmFsbGJhY2tUZXh0ID0gdGhpcy5mYWxsYmFja0xhbmcgJiYgdGhpcy50ZXh0cy5nZXQodGhpcy5mYWxsYmFja0xhbmcpO1xuICAgIGlmIChmYWxsYmFja1RleHQpIHtcbiAgICAgIHJldHVybiBmYWxsYmFja1RleHQ7XG4gICAgfVxuXG4gICAgY29uc3QgbGFuZ3VhZ2VzID0gWy4uLih0aGlzLmxhbmd1YWdlcyB8fCBbXSldLnNvcnQoKTtcblxuICAgIGNvbnN0IG5vbkVtcHR5VGV4dEZyb21TaG93blRleHRzID0gbGFuZ3VhZ2VzLm1hcChsYW5nID0+IHRoaXMudGV4dHMuZ2V0KGxhbmcpKS5maW5kKHRleHQgPT4gdGV4dCk7XG4gICAgaWYgKG5vbkVtcHR5VGV4dEZyb21TaG93blRleHRzKSB7XG4gICAgICByZXR1cm4gbm9uRW1wdHlUZXh0RnJvbVNob3duVGV4dHM7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9uRW1wdHlUZXh0RnJvbUhpZGRlblRleHRzID0gWy4uLnRoaXMudGV4dHMua2V5cygpXVxuICAgICAgLnNvcnQoKVxuICAgICAgLmZpbHRlcihsYW5nID0+ICFsYW5ndWFnZXMuaW5jbHVkZXMobGFuZykpXG4gICAgICAubWFwKGxhbmcgPT4gdGhpcy50ZXh0cy5nZXQobGFuZykpXG4gICAgICAuZmluZCh0ZXh0ID0+IHRleHQpO1xuICAgIGlmIChub25FbXB0eVRleHRGcm9tSGlkZGVuVGV4dHMpIHtcbiAgICAgIHJldHVybiBub25FbXB0eVRleHRGcm9tSGlkZGVuVGV4dHM7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgc2hvd0xhbmd1YWdlU2VsZWN0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd25UZXh0cz8uc2l6ZSA+IDEgfHwgdGhpcy5zaG93U2luZ2xlTGFuZ3VhZ2VTZWxlY3RvcjtcbiAgfVxuXG4gIGNoYW5nZUxhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIG5lZWQgYXMgdGhlIGNsaWNrIGZvciBjbG9zaW5nIHRoZSBtZW51IGlzIHJlZ2lzdGVyZWQgb24gYSBzaW5nbGUgaXRlbVxuICAgIC8vIGlmIHRoZSBsYW5ndWFnZSBjaGFuZ2UgZGVzdHJveXMgaXQgaW1tZWRpYXRlbHksIHRoZSBjbGljayB3b24ndCBnZXQgZmlyZWRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMYW5nID0gbGFuZztcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -25,7 +25,7 @@ ClrMultilingualInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
25
25
  multi: true,
26
26
  },
27
27
  ControlIdService,
28
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: i1.ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.ClrIconCustomTag, selector: "clr-icon" }] });
28
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: i1.ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.ClrIconCustomTag, selector: "clr-icon" }] });
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualInput, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'clr-multilingual-input', providers: [
@@ -35,6 +35,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
35
35
  multi: true,
36
36
  },
37
37
  ControlIdService,
38
- ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
38
+ ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
39
39
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsaW5ndWFsLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL211bHRpbGluZ3VhbC1pbnB1dC9tdWx0aWxpbmd1YWwtaW5wdXQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9tdWx0aWxpbmd1YWwvbXVsdGlsaW5ndWFsLWlucHV0L211bHRpbGluZ3VhbC1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQWNuRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0lBQy9ELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O2lIQUhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlEQVRwQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxnQkFBZ0I7S0FDakIsaURDcEJILHVyQ0ErQkE7MkZEVGEsb0JBQW9CO2tCQVpoQyxTQUFTOytCQUNFLHdCQUF3QixhQUV2Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsZ0JBQWdCO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC1tdWx0aWxpbmd1YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbXVsdGlsaW5ndWFsLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpbGluZ3VhbC1pbnB1dC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJNdWx0aWxpbmd1YWxJbnB1dCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsck11bHRpbGluZ3VhbElucHV0IGV4dGVuZHMgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3Qge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzc2VzXCI+XG4gIDxjbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yXG4gICAgKm5nSWY9XCJzaG93TGFuZ3VhZ2VTZWxlY3RvcigpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0ZXh0c109XCJ0ZXh0c1wiXG4gICAgW3NlbGVjdGVkTGFuZ109XCJzZWxlY3RlZExhbmdcIlxuICAgIChzZWxlY3RlZExhbmdDaGFuZ2UpPVwiY2hhbmdlTGFuZ3VhZ2UoJGV2ZW50KVwiXG4gID5cbiAgPC9jbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yPlxuICA8ZGl2IGNsYXNzPVwiY2xyLW11bHRpLWlucHV0LXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LXdyYXBwZXJcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImNsci1pbnB1dFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICBbbmdNb2RlbF09XCIhIXRleHRzICYmICEhc2VsZWN0ZWRMYW5nID8gdGV4dHMuZ2V0KHNlbGVjdGVkTGFuZykgOiAnJ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFRleHQoc2VsZWN0ZWRMYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IHJlYWRvbmx5ID09PSAnJ1wiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoIHx8IG51bGxcIlxuICAgICAgICAjaW5wdXRcbiAgICAgIC8+XG4gICAgICA8Y2xyLWljb24gKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCIgc2hhcGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Nsci1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwiIXNob3dFcnJvclwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1lcnJvclwiICpuZ0lmPVwic2hvd0Vycm9yXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsaW5ndWFsLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL211bHRpbGluZ3VhbC1pbnB1dC9tdWx0aWxpbmd1YWwtaW5wdXQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9tdWx0aWxpbmd1YWwvbXVsdGlsaW5ndWFsLWlucHV0L211bHRpbGluZ3VhbC1pbnB1dC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQWNuRSxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsdUJBQXVCO0lBQy9ELFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O2lIQUhVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlEQVRwQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxnQkFBZ0I7S0FDakIsaURDcEJILHNzQ0ErQkE7MkZEVGEsb0JBQW9CO2tCQVpoQyxTQUFTOytCQUNFLHdCQUF3QixhQUV2Qjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsZ0JBQWdCO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC1tdWx0aWxpbmd1YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbXVsdGlsaW5ndWFsLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpbGluZ3VhbC1pbnB1dC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJNdWx0aWxpbmd1YWxJbnB1dCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsck11bHRpbGluZ3VhbElucHV0IGV4dGVuZHMgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3Qge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzc2VzXCI+XG4gIDxjbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yXG4gICAgKm5nSWY9XCJzaG93TGFuZ3VhZ2VTZWxlY3RvcigpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0ZXh0c109XCJzaG93blRleHRzXCJcbiAgICBbc2VsZWN0ZWRMYW5nXT1cInNlbGVjdGVkTGFuZ1wiXG4gICAgKHNlbGVjdGVkTGFuZ0NoYW5nZSk9XCJjaGFuZ2VMYW5ndWFnZSgkZXZlbnQpXCJcbiAgPlxuICA8L2Nsci1tdWx0aWxpbmd1YWwtc2VsZWN0b3I+XG4gIDxkaXYgY2xhc3M9XCJjbHItbXVsdGktaW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItaW5wdXQtd3JhcHBlclwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIGNsYXNzPVwiY2xyLWlucHV0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgIFtuZ01vZGVsXT1cIiEhc2hvd25UZXh0cyAmJiAhIXNlbGVjdGVkTGFuZyA/IHNob3duVGV4dHMuZ2V0KHNlbGVjdGVkTGFuZykgOiAnJ1wiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFRleHQoc2VsZWN0ZWRMYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgKGJsdXIpPVwib25Ub3VjaCgpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IHJlYWRvbmx5ID09PSAnJ1wiXG4gICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoIHx8IG51bGxcIlxuICAgICAgICAjaW5wdXRcbiAgICAgIC8+XG4gICAgICA8Y2xyLWljb24gKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCIgc2hhcGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2Nsci1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwiIXNob3dFcnJvclwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJjbHItY29udHJvbC1lcnJvclwiICpuZ0lmPVwic2hvd0Vycm9yXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -25,7 +25,7 @@ ClrMultilingualTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
25
25
  multi: true,
26
26
  },
27
27
  ControlIdService,
28
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: i1.ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.ClrIconCustomTag, selector: "clr-icon" }] });
28
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: i1.ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i4.ClrIconCustomTag, selector: "clr-icon" }] });
29
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualTextarea, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'clr-multilingual-textarea', providers: [
@@ -35,6 +35,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
35
35
  multi: true,
36
36
  },
37
37
  ControlIdService,
38
- ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
38
+ ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
39
39
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsaW5ndWFsLXRleHRhcmVhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL211bHRpbGluZ3VhbC10ZXh0YXJlYS9tdWx0aWxpbmd1YWwtdGV4dGFyZWEudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9tdWx0aWxpbmd1YWwvbXVsdGlsaW5ndWFsLXRleHRhcmVhL211bHRpbGluZ3VhbC10ZXh0YXJlYS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQWNuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXVCO0lBQ2xFLFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O29IQUhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLG9EQVR2QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO1lBQ3RELEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxnQkFBZ0I7S0FDakIsaURDcEJILHFwQ0E2QkE7MkZEUGEsdUJBQXVCO2tCQVpuQyxTQUFTOytCQUNFLDJCQUEyQixhQUUxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsZ0JBQWdCO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC1tdWx0aWxpbmd1YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbXVsdGlsaW5ndWFsLXRleHRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpbGluZ3VhbC10ZXh0YXJlYS5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJNdWx0aWxpbmd1YWxUZXh0YXJlYSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsck11bHRpbGluZ3VhbFRleHRhcmVhIGV4dGVuZHMgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3Qge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzc2VzXCI+XG4gIDxjbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yXG4gICAgKm5nSWY9XCJzaG93TGFuZ3VhZ2VTZWxlY3RvcigpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0ZXh0c109XCJ0ZXh0c1wiXG4gICAgW3NlbGVjdGVkTGFuZ109XCJzZWxlY3RlZExhbmdcIlxuICAgIChzZWxlY3RlZExhbmdDaGFuZ2UpPVwiY2hhbmdlTGFuZ3VhZ2UoJGV2ZW50KVwiXG4gID5cbiAgPC9jbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yPlxuICA8ZGl2IGNsYXNzPVwiY2xyLW11bHRpLWlucHV0LXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xyLXRleHRhcmVhLXdyYXBwZXJcIj5cbiAgICAgIDx0ZXh0YXJlYVxuICAgICAgICBjbGFzcz1cImNsci10ZXh0YXJlYVwiXG4gICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgW25nTW9kZWxdPVwiISF0ZXh0cyAmJiAhIXNlbGVjdGVkTGFuZyA/IHRleHRzLmdldChzZWxlY3RlZExhbmcpIDogJydcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRUZXh0KHNlbGVjdGVkTGFuZywgJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2goKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSB8fCByZWFkb25seSA9PT0gJydcIlxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aCB8fCBudWxsXCJcbiAgICAgICAgI2lucHV0XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDxjbHItaWNvbiAqbmdJZj1cInNob3dFcnJvclwiIGNsYXNzPVwiY2xyLXZhbGlkYXRlLWljb25cIiBzaGFwZT1cImV4Y2xhbWF0aW9uLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvY2xyLWljb24+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWNvbnRyb2wtaGVscGVyXCIgKm5nSWY9XCIhc2hvd0Vycm9yXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93RXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlsaW5ndWFsLXRleHRhcmVhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2Nsci1hZGRvbnMvbXVsdGlsaW5ndWFsL211bHRpbGluZ3VhbC10ZXh0YXJlYS9tdWx0aWxpbmd1YWwtdGV4dGFyZWEudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2xyLWFkZG9ucy9tdWx0aWxpbmd1YWwvbXVsdGlsaW5ndWFsLXRleHRhcmVhL211bHRpbGluZ3VhbC10ZXh0YXJlYS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDcEYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQWNuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsdUJBQXVCO0lBQ2xFLFlBQVksUUFBa0I7UUFDNUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7O29IQUhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLG9EQVR2QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHVCQUF1QixDQUFDO1lBQ3RELEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxnQkFBZ0I7S0FDakIsaURDcEJILG9xQ0E2QkE7MkZEUGEsdUJBQXVCO2tCQVpuQyxTQUFTOytCQUNFLDJCQUEyQixhQUUxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsZ0JBQWdCO3FCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBQb3JzY2hlIEluZm9ybWF0aWsuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xJZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1mb3JtLWNvbXBvbmVudC9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3QgfSBmcm9tICcuLi9hYnN0cmFjdC1tdWx0aWxpbmd1YWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItbXVsdGlsaW5ndWFsLXRleHRhcmVhJyxcbiAgdGVtcGxhdGVVcmw6ICcuL211bHRpbGluZ3VhbC10ZXh0YXJlYS5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDbHJNdWx0aWxpbmd1YWxUZXh0YXJlYSksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIENvbnRyb2xJZFNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsck11bHRpbGluZ3VhbFRleHRhcmVhIGV4dGVuZHMgQ2xyTXVsdGlsaW5ndWFsQWJzdHJhY3Qge1xuICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG4gIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImxhYmVsXCI+PC9uZy1jb250ZW50PlxuPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzc2VzXCI+XG4gIDxjbHItbXVsdGlsaW5ndWFsLXNlbGVjdG9yXG4gICAgKm5nSWY9XCJzaG93TGFuZ3VhZ2VTZWxlY3RvcigpXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFt0ZXh0c109XCJzaG93blRleHRzXCJcbiAgICBbc2VsZWN0ZWRMYW5nXT1cInNlbGVjdGVkTGFuZ1wiXG4gICAgKHNlbGVjdGVkTGFuZ0NoYW5nZSk9XCJjaGFuZ2VMYW5ndWFnZSgkZXZlbnQpXCJcbiAgPlxuICA8L2Nsci1tdWx0aWxpbmd1YWwtc2VsZWN0b3I+XG4gIDxkaXYgY2xhc3M9XCJjbHItbXVsdGktaW5wdXQtd3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbHItdGV4dGFyZWEtd3JhcHBlclwiPlxuICAgICAgPHRleHRhcmVhXG4gICAgICAgIGNsYXNzPVwiY2xyLXRleHRhcmVhXCJcbiAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICBbbmdNb2RlbF09XCIhIXNob3duVGV4dHMgJiYgISFzZWxlY3RlZExhbmcgPyBzaG93blRleHRzLmdldChzZWxlY3RlZExhbmcpIDogJydcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRUZXh0KHNlbGVjdGVkTGFuZywgJGV2ZW50KVwiXG4gICAgICAgIChibHVyKT1cIm9uVG91Y2goKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSB8fCByZWFkb25seSA9PT0gJydcIlxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aCB8fCBudWxsXCJcbiAgICAgICAgI2lucHV0XG4gICAgICA+PC90ZXh0YXJlYT5cbiAgICAgIDxjbHItaWNvbiAqbmdJZj1cInNob3dFcnJvclwiIGNsYXNzPVwiY2xyLXZhbGlkYXRlLWljb25cIiBzaGFwZT1cImV4Y2xhbWF0aW9uLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvY2xyLWljb24+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiY2xyLWNvbnRyb2wtaGVscGVyXCIgKm5nSWY9XCIhc2hvd0Vycm9yXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93RXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1500,7 +1500,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
1500
1500
  }] } });
1501
1501
 
1502
1502
  /*
1503
- * Copyright (c) 2018-2021 Porsche Informatik. All Rights Reserved.
1503
+ * Copyright (c) 2018-2022 Porsche Informatik. All Rights Reserved.
1504
1504
  * This software is released under MIT license.
1505
1505
  * The full license information can be found in LICENSE in the root directory of this project.
1506
1506
  */
@@ -1509,18 +1509,76 @@ class ClrMultilingualAbstract extends ClrAbstractFormComponent {
1509
1509
  super(injector);
1510
1510
  this.multi = true;
1511
1511
  this.controlClasses = 'clr-col-md-10';
1512
+ this.missingPrefix = '';
1513
+ }
1514
+ set fallbackLanguage(fallbackLang) {
1515
+ this.fallbackLang = fallbackLang;
1516
+ this.updateShownTexts();
1517
+ }
1518
+ set missingPre(missingPrefix) {
1519
+ this.missingPrefix = missingPrefix;
1520
+ this.updateShownTexts();
1521
+ }
1522
+ set langs(languages) {
1523
+ this.languages = languages;
1524
+ this.updateShownTexts();
1512
1525
  }
1513
1526
  writeValue(value) {
1514
1527
  if (value) {
1515
1528
  this.texts = new Map(value);
1516
1529
  }
1530
+ this.updateShownTexts();
1517
1531
  }
1518
1532
  setText(key, value) {
1519
1533
  this.texts.set(key, value);
1520
1534
  this.onChange(new Map(this.texts));
1535
+ this.updateShownTexts();
1536
+ }
1537
+ updateShownTexts() {
1538
+ if (this.texts) {
1539
+ if (this.languages) {
1540
+ this.shownTexts = this.applyMissingPrefix(new Map(this.languages.map(lang => [lang, this.texts.get(lang) || ''])));
1541
+ }
1542
+ else {
1543
+ this.shownTexts = this.applyMissingPrefix(new Map(this.texts));
1544
+ }
1545
+ }
1546
+ }
1547
+ applyMissingPrefix(texts) {
1548
+ if (!this.missingPrefix) {
1549
+ return texts;
1550
+ }
1551
+ const fallbackText = this.missingPrefix + this.determineFallbackText();
1552
+ for (const lang of texts.keys()) {
1553
+ if (!texts.get(lang)) {
1554
+ texts.set(lang, fallbackText);
1555
+ }
1556
+ }
1557
+ return texts;
1558
+ }
1559
+ determineFallbackText() {
1560
+ const fallbackText = this.fallbackLang && this.texts.get(this.fallbackLang);
1561
+ if (fallbackText) {
1562
+ return fallbackText;
1563
+ }
1564
+ const languages = [...(this.languages || [])].sort();
1565
+ const nonEmptyTextFromShownTexts = languages.map(lang => this.texts.get(lang)).find(text => text);
1566
+ if (nonEmptyTextFromShownTexts) {
1567
+ return nonEmptyTextFromShownTexts;
1568
+ }
1569
+ const nonEmptyTextFromHiddenTexts = [...this.texts.keys()]
1570
+ .sort()
1571
+ .filter(lang => !languages.includes(lang))
1572
+ .map(lang => this.texts.get(lang))
1573
+ .find(text => text);
1574
+ if (nonEmptyTextFromHiddenTexts) {
1575
+ return nonEmptyTextFromHiddenTexts;
1576
+ }
1577
+ return '';
1521
1578
  }
1522
1579
  showLanguageSelector() {
1523
- return (this.texts && this.texts.size > 1) || this.showSingleLanguageSelector;
1580
+ var _a;
1581
+ return ((_a = this.shownTexts) === null || _a === void 0 ? void 0 : _a.size) > 1 || this.showSingleLanguageSelector;
1524
1582
  }
1525
1583
  changeLanguage(lang) {
1526
1584
  // need as the click for closing the menu is registered on a single item
@@ -1532,7 +1590,7 @@ class ClrMultilingualAbstract extends ClrAbstractFormComponent {
1532
1590
  }
1533
1591
  }
1534
1592
  ClrMultilingualAbstract.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualAbstract, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
1535
- ClrMultilingualAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: ClrMultilingualAbstract, inputs: { controlClasses: ["clrControlClasses", "controlClasses"], selectedLang: ["clrSelectedLang", "selectedLang"], readonly: "readonly", maxlength: "maxlength", showSingleLanguageSelector: ["clrShowSingleLanguageSelector", "showSingleLanguageSelector"] }, host: { properties: { "class.clr-multilingual": "this.multi" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0 });
1593
+ ClrMultilingualAbstract.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.8", type: ClrMultilingualAbstract, inputs: { controlClasses: ["clrControlClasses", "controlClasses"], selectedLang: ["clrSelectedLang", "selectedLang"], readonly: "readonly", maxlength: "maxlength", showSingleLanguageSelector: ["clrShowSingleLanguageSelector", "showSingleLanguageSelector"], fallbackLanguage: ["clrFallbackLang", "fallbackLanguage"], missingPre: ["clrMissingPrefix", "missingPre"], langs: ["clrLanguages", "langs"] }, host: { properties: { "class.clr-multilingual": "this.multi" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0 });
1536
1594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualAbstract, decorators: [{
1537
1595
  type: Directive
1538
1596
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { multi: [{
@@ -1554,6 +1612,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
1554
1612
  }], inputElement: [{
1555
1613
  type: ViewChild,
1556
1614
  args: ['input']
1615
+ }], fallbackLanguage: [{
1616
+ type: Input,
1617
+ args: ['clrFallbackLang']
1618
+ }], missingPre: [{
1619
+ type: Input,
1620
+ args: ['clrMissingPrefix']
1621
+ }], langs: [{
1622
+ type: Input,
1623
+ args: ['clrLanguages']
1557
1624
  }] } });
1558
1625
 
1559
1626
  class ClrMultilingualSelector {
@@ -1651,7 +1718,7 @@ ClrMultilingualInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
1651
1718
  multi: true,
1652
1719
  },
1653
1720
  ControlIdService,
1654
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }] });
1721
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }] });
1655
1722
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualInput, decorators: [{
1656
1723
  type: Component,
1657
1724
  args: [{ selector: 'clr-multilingual-input', providers: [
@@ -1661,7 +1728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
1661
1728
  multi: true,
1662
1729
  },
1663
1730
  ControlIdService,
1664
- ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
1731
+ ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-input-wrapper\">\n <input\n class=\"clr-input\"\n type=\"text\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n autocomplete=\"off\"\n [maxlength]=\"maxlength || null\"\n #input\n />\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
1665
1732
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1666
1733
 
1667
1734
  /*
@@ -1682,7 +1749,7 @@ ClrMultilingualTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0"
1682
1749
  multi: true,
1683
1750
  },
1684
1751
  ControlIdService,
1685
- ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }] });
1752
+ ], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n", components: [{ type: ClrMultilingualSelector, selector: "clr-multilingual-selector", inputs: ["disabled", "texts", "selectedLang"], outputs: ["selectedLangChange"] }], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }] });
1686
1753
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ClrMultilingualTextarea, decorators: [{
1687
1754
  type: Component,
1688
1755
  args: [{ selector: 'clr-multilingual-textarea', providers: [
@@ -1692,7 +1759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
1692
1759
  multi: true,
1693
1760
  },
1694
1761
  ControlIdService,
1695
- ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"texts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!texts && !!selectedLang ? texts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
1762
+ ], template: "<ng-content select=\"label\"></ng-content>\n<div class=\"clr-control-container\" [ngClass]=\"controlClasses\">\n <clr-multilingual-selector\n *ngIf=\"showLanguageSelector()\"\n [disabled]=\"disabled\"\n [texts]=\"shownTexts\"\n [selectedLang]=\"selectedLang\"\n (selectedLangChange)=\"changeLanguage($event)\"\n >\n </clr-multilingual-selector>\n <div class=\"clr-multi-input-wrapper\">\n <div class=\"clr-textarea-wrapper\">\n <textarea\n class=\"clr-textarea\"\n [id]=\"inputId\"\n [ngModel]=\"!!shownTexts && !!selectedLang ? shownTexts.get(selectedLang) : ''\"\n (ngModelChange)=\"setText(selectedLang, $event)\"\n (blur)=\"onTouch()\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly || readonly === ''\"\n [maxlength]=\"maxlength || null\"\n #input\n ></textarea>\n <clr-icon *ngIf=\"showError\" class=\"clr-validate-icon\" shape=\"exclamation-circle\" aria-hidden=\"true\"></clr-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"!showError\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showError\"></ng-content>\n </div>\n</div>\n" }]
1696
1763
  }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1697
1764
 
1698
1765
  /*