survey-angular-ui 1.11.14 → 1.12.2

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.
@@ -0,0 +1,36 @@
1
+ import { Component, Input, ViewChild } from "@angular/core";
2
+ import { AngularComponentFactory } from "../../component-factory";
3
+ import { EmbeddedViewContentComponent } from "../../embedded-view-content.component";
4
+ import * as i0 from "@angular/core";
5
+ export class TextAreaComponent extends EmbeddedViewContentComponent {
6
+ get value() {
7
+ return this.model.getTextValue() || "";
8
+ }
9
+ ngAfterViewInit() {
10
+ var _a;
11
+ if (!!this.model && !!((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
12
+ const element = this.elementContentRef.nativeElement;
13
+ this.model.setElement(element);
14
+ }
15
+ }
16
+ ngOnDestroy() {
17
+ this.model.dispose();
18
+ }
19
+ }
20
+ TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
21
+ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextAreaComponent, selector: "sv-text-area", inputs: { model: "model" }, viewQueries: [{ propertyName: "elementContentRef", first: true, predicate: ["contentElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n<textarea\n[readonly]=\"model.isReadOnlyAttr\"\n[disabled]=\"model.isDisabledAttr\"\n[id]=\"model.id\"\n[attr.maxlength]=\"model.maxLength\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.placeholder\"\n[class]=\"model.className\"\n[value]=\"value\"\n(input)=\"model.onTextAreaInput($event)\"\n(keydown)=\"model.onTextAreaKeyDown($event)\"\n(focus)=\"model.onTextAreaFocus($event)\"\n(blur)=\"model.onTextAreaBlur($event)\"\n(change)=\"model.onTextAreaChange($event)\"\n[attr.aria-required]=\"model.ariaRequired\"\n[attr.aria-label]=\"model.ariaLabel\"\n[attr.aria-labelledby]=\"model.ariaLabelledBy\"\n[attr.aria-describedby]=\"model.ariaDescribedBy\"\n[attr.aria-invalid]=\"model.ariaInvalid\"\n[attr.aria-errormessage]=\"model.ariaErrormessage\"\n[style.resize]=\"model.question.resizeStyle\"\n#contentElement></textarea>\n</ng-template>", styles: [":host{display:none}\n"] });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextAreaComponent, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: "sv-text-area",
26
+ templateUrl: "./text-area.component.html",
27
+ styleUrls: ["../../hide-host.scss"]
28
+ }]
29
+ }], propDecorators: { model: [{
30
+ type: Input
31
+ }], elementContentRef: [{
32
+ type: ViewChild,
33
+ args: ["contentElement"]
34
+ }] } });
35
+ AngularComponentFactory.Instance.registerComponent("sv-text-area", TextAreaComponent);
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1hcmVhLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3RleHQtYXJlYS90ZXh0LWFyZWEuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdGV4dC1hcmVhL3RleHQtYXJlYS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBT3JGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSw0QkFBNEI7SUFJakUsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sZUFBZTs7UUFDcEIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxpQkFBaUIsMENBQUUsYUFBYSxDQUFBLEVBQUU7WUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUE4QixDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7K0dBakJVLGlCQUFpQjttR0FBakIsaUJBQWlCLDROQ1Y5Qix3NEJBd0JjOzRGRGRELGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDRCQUE0QjtvQkFDekMsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7aUJBQ3BDOzhCQUVVLEtBQUs7c0JBQWIsS0FBSztnQkFDdUIsaUJBQWlCO3NCQUE3QyxTQUFTO3VCQUFDLGdCQUFnQjs7QUFrQjdCLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBUZXh0QXJlYU1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgRW1iZWRkZWRWaWV3Q29udGVudENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9lbWJlZGRlZC12aWV3LWNvbnRlbnQuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdi10ZXh0LWFyZWFcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90ZXh0LWFyZWEuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuLi8uLi9oaWRlLWhvc3Quc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbXBvbmVudCBleHRlbmRzIEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbCE6IFRleHRBcmVhTW9kZWw7XG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50RWxlbWVudFwiKSBlbGVtZW50Q29udGVudFJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRUZXh0VmFsdWUoKSB8fCBcIlwiO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoISF0aGlzLm1vZGVsICYmICEhdGhpcy5lbGVtZW50Q29udGVudFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudENvbnRlbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgIHRoaXMubW9kZWwuc2V0RWxlbWVudChlbGVtZW50IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuZGlzcG9zZSgpO1xuICB9XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3YtdGV4dC1hcmVhXCIsIFRleHRBcmVhQ29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuPHRleHRhcmVhXG5bcmVhZG9ubHldPVwibW9kZWwuaXNSZWFkT25seUF0dHJcIlxuW2Rpc2FibGVkXT1cIm1vZGVsLmlzRGlzYWJsZWRBdHRyXCJcbltpZF09XCJtb2RlbC5pZFwiXG5bYXR0ci5tYXhsZW5ndGhdPVwibW9kZWwubWF4TGVuZ3RoXCJcblthdHRyLmNvbHNdPVwibW9kZWwuY29sc1wiXG5bYXR0ci5yb3dzXT1cIm1vZGVsLnJvd3NcIlxuW2F0dHIucGxhY2Vob2xkZXJdPVwibW9kZWwucGxhY2Vob2xkZXJcIlxuW2NsYXNzXT1cIm1vZGVsLmNsYXNzTmFtZVwiXG5bdmFsdWVdPVwidmFsdWVcIlxuKGlucHV0KT1cIm1vZGVsLm9uVGV4dEFyZWFJbnB1dCgkZXZlbnQpXCJcbihrZXlkb3duKT1cIm1vZGVsLm9uVGV4dEFyZWFLZXlEb3duKCRldmVudClcIlxuKGZvY3VzKT1cIm1vZGVsLm9uVGV4dEFyZWFGb2N1cygkZXZlbnQpXCJcbihibHVyKT1cIm1vZGVsLm9uVGV4dEFyZWFCbHVyKCRldmVudClcIlxuKGNoYW5nZSk9XCJtb2RlbC5vblRleHRBcmVhQ2hhbmdlKCRldmVudClcIlxuW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJtb2RlbC5hcmlhUmVxdWlyZWRcIlxuW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5hcmlhTGFiZWxcIlxuW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIm1vZGVsLmFyaWFMYWJlbGxlZEJ5XCJcblthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwibW9kZWwuYXJpYURlc2NyaWJlZEJ5XCJcblthdHRyLmFyaWEtaW52YWxpZF09XCJtb2RlbC5hcmlhSW52YWxpZFwiXG5bYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJtb2RlbC5hcmlhRXJyb3JtZXNzYWdlXCJcbltzdHlsZS5yZXNpemVdPVwibW9kZWwucXVlc3Rpb24ucmVzaXplU3R5bGVcIlxuI2NvbnRlbnRFbGVtZW50PjwvdGV4dGFyZWE+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -4,13 +4,14 @@ import { QuestionAngular } from "../question";
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "../components/character-counter/character-counter.component";
6
6
  import * as i2 from "@angular/common";
7
+ import * as i3 from "../utils/dynamic.directive";
7
8
  export class CommentQuestionComponent extends QuestionAngular {
8
9
  onChange(event) {
9
10
  this.model.value = event.target.value;
10
11
  }
11
12
  }
12
13
  CommentQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
13
- CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<textarea\n*ngIf=\"!model.isReadOnlyRenderDiv()\"\n[readonly]=\"model.isReadOnlyAttr\"\n[disabled]=\"model.isDisabledAttr\"\n[id]=\"model.inputId\"\n[attr.maxlength]=\"model.getMaxLength()\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.renderedPlaceholder\"\n[class]=\"model.className\"\n[value]=\"model.value || null\"\n(input)=\"model.onInput($event)\"\n(keydown)=\"model.onKeyDown($event)\"\n(change)=\"onChange($event)\"\n(focus)=\"model.onFocus($event)\"\n(blur)=\"model.onBlur($event)\"\n[attr.aria-required]=\"model.a11y_input_ariaRequired\"\n[attr.aria-label]=\"model.a11y_input_ariaLabel\"\n[attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\"\n[attr.aria-describedby]=\"model.a11y_input_ariaDescribedBy\"\n[attr.aria-invalid]=\"model.a11y_input_ariaInvalid\"\n[attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\"\n[style.resize]=\"model.resizeStyle\"\n#contentElement></textarea>\n<sv-ng-character-counter *ngIf=\"!model.isReadOnlyRenderDiv() && model.getMaxLength()\" \n[counter]=\"model.characterCounter\"\n[remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n</sv-ng-character-counter>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", components: [{ type: i1.CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
14
+ CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!model.isReadOnlyRenderDiv()\">\n <ng-template [component]=\"{ name: 'sv-text-area', data: { model: model.textAreaModel } }\"></ng-template>\n <sv-ng-character-counter *ngIf=\"model.getMaxLength()\" \n [counter]=\"model.characterCounter\"\n [remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n </sv-ng-character-counter>\n</ng-container>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", components: [{ type: i1.CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
14
15
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, decorators: [{
15
16
  type: Component,
16
17
  args: [{
@@ -19,4 +20,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
19
20
  }]
20
21
  }] });
21
22
  AngularComponentFactory.Instance.registerComponent("comment-question", CommentQuestionComponent);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL2NvbW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9jb21tZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQVE5QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBcUM7SUFDakYsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDeEMsQ0FBQzs7c0hBSFUsd0JBQXdCOzBHQUF4Qix3QkFBd0IscUZDVnJDLCt1Q0E0QmdGOzRGRGxCbkUsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNULFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFFBQVEsRUFBRSx3QkFBd0I7aUJBQ25DOztBQU9ELHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4uL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5pbXBvcnQgeyBRdWVzdGlvbkFuZ3VsYXIgfSBmcm9tIFwiLi4vcXVlc3Rpb25cIjtcbmltcG9ydCB7IFF1ZXN0aW9uQ29tbWVudE1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogXCIuL2NvbW1lbnQuY29tcG9uZW50Lmh0bWxcIixcbiAgc2VsZWN0b3I6IFwic3YtbmctcXVlc3Rpb24tY29tbWVudFwiXG59KVxuXG5leHBvcnQgY2xhc3MgQ29tbWVudFF1ZXN0aW9uQ29tcG9uZW50IGV4dGVuZHMgUXVlc3Rpb25Bbmd1bGFyPFF1ZXN0aW9uQ29tbWVudE1vZGVsPiB7XG4gIG9uQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLm1vZGVsLnZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG59XG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcImNvbW1lbnQtcXVlc3Rpb25cIiwgQ29tbWVudFF1ZXN0aW9uQ29tcG9uZW50KTsiLCI8dGV4dGFyZWFcbipuZ0lmPVwiIW1vZGVsLmlzUmVhZE9ubHlSZW5kZXJEaXYoKVwiXG5bcmVhZG9ubHldPVwibW9kZWwuaXNSZWFkT25seUF0dHJcIlxuW2Rpc2FibGVkXT1cIm1vZGVsLmlzRGlzYWJsZWRBdHRyXCJcbltpZF09XCJtb2RlbC5pbnB1dElkXCJcblthdHRyLm1heGxlbmd0aF09XCJtb2RlbC5nZXRNYXhMZW5ndGgoKVwiXG5bYXR0ci5jb2xzXT1cIm1vZGVsLmNvbHNcIlxuW2F0dHIucm93c109XCJtb2RlbC5yb3dzXCJcblthdHRyLnBsYWNlaG9sZGVyXT1cIm1vZGVsLnJlbmRlcmVkUGxhY2Vob2xkZXJcIlxuW2NsYXNzXT1cIm1vZGVsLmNsYXNzTmFtZVwiXG5bdmFsdWVdPVwibW9kZWwudmFsdWUgfHwgbnVsbFwiXG4oaW5wdXQpPVwibW9kZWwub25JbnB1dCgkZXZlbnQpXCJcbihrZXlkb3duKT1cIm1vZGVsLm9uS2V5RG93bigkZXZlbnQpXCJcbihjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXG4oZm9jdXMpPVwibW9kZWwub25Gb2N1cygkZXZlbnQpXCJcbihibHVyKT1cIm1vZGVsLm9uQmx1cigkZXZlbnQpXCJcblthdHRyLmFyaWEtcmVxdWlyZWRdPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhUmVxdWlyZWRcIlxuW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFMYWJlbFwiXG5bYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhTGFiZWxsZWRCeVwiXG5bYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIm1vZGVsLmExMXlfaW5wdXRfYXJpYURlc2NyaWJlZEJ5XCJcblthdHRyLmFyaWEtaW52YWxpZF09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFJbnZhbGlkXCJcblthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIm1vZGVsLmExMXlfaW5wdXRfYXJpYUVycm9ybWVzc2FnZVwiXG5bc3R5bGUucmVzaXplXT1cIm1vZGVsLnJlc2l6ZVN0eWxlXCJcbiNjb250ZW50RWxlbWVudD48L3RleHRhcmVhPlxuPHN2LW5nLWNoYXJhY3Rlci1jb3VudGVyICpuZ0lmPVwiIW1vZGVsLmlzUmVhZE9ubHlSZW5kZXJEaXYoKSAmJiBtb2RlbC5nZXRNYXhMZW5ndGgoKVwiIFxuW2NvdW50ZXJdPVwibW9kZWwuY2hhcmFjdGVyQ291bnRlclwiXG5bcmVtYWluaW5nQ2hhcmFjdGVyQ291bnRlcl09XCJtb2RlbC5jc3NDbGFzc2VzLnJlbWFpbmluZ0NoYXJhY3RlckNvdW50ZXJcIj5cbjwvc3YtbmctY2hhcmFjdGVyLWNvdW50ZXI+XG48ZGl2ICpuZ0lmPVwibW9kZWwuaXNSZWFkT25seVJlbmRlckRpdigpXCIgI2NvbnRlbnRFbGVtZW50Pnt7IG1vZGVsLnZhbHVlIH19PC9kaXY+Il19
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL2NvbW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9jb21tZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFROUMsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQXFDO0lBQ2pGLFFBQVEsQ0FBQyxLQUFVO1FBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7O3NIQUhVLHdCQUF3QjswR0FBeEIsd0JBQXdCLHFGQ1ZyQywyZEFPZ0Y7NEZER25FLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsMEJBQTBCO29CQUN2QyxRQUFRLEVBQUUsd0JBQXdCO2lCQUNuQzs7QUFPRCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgUXVlc3Rpb25Bbmd1bGFyIH0gZnJvbSBcIi4uL3F1ZXN0aW9uXCI7XG5pbXBvcnQgeyBRdWVzdGlvbkNvbW1lbnRNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6IFwiLi9jb21tZW50LmNvbXBvbmVudC5odG1sXCIsXG4gIHNlbGVjdG9yOiBcInN2LW5nLXF1ZXN0aW9uLWNvbW1lbnRcIlxufSlcblxuZXhwb3J0IGNsYXNzIENvbW1lbnRRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIFF1ZXN0aW9uQW5ndWxhcjxRdWVzdGlvbkNvbW1lbnRNb2RlbD4ge1xuICBvbkNoYW5nZShldmVudDogYW55KSB7XG4gICAgdGhpcy5tb2RlbC52YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxufVxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJjb21tZW50LXF1ZXN0aW9uXCIsIENvbW1lbnRRdWVzdGlvbkNvbXBvbmVudCk7IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2RlbC5pc1JlYWRPbmx5UmVuZGVyRGl2KClcIj5cbiAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiAnc3YtdGV4dC1hcmVhJywgZGF0YTogeyBtb2RlbDogbW9kZWwudGV4dEFyZWFNb2RlbCB9IH1cIj48L25nLXRlbXBsYXRlPlxuICA8c3YtbmctY2hhcmFjdGVyLWNvdW50ZXIgKm5nSWY9XCJtb2RlbC5nZXRNYXhMZW5ndGgoKVwiIFxuICBbY291bnRlcl09XCJtb2RlbC5jaGFyYWN0ZXJDb3VudGVyXCJcbiAgW3JlbWFpbmluZ0NoYXJhY3RlckNvdW50ZXJdPVwibW9kZWwuY3NzQ2xhc3Nlcy5yZW1haW5pbmdDaGFyYWN0ZXJDb3VudGVyXCI+XG4gIDwvc3YtbmctY2hhcmFjdGVyLWNvdW50ZXI+XG48L25nLWNvbnRhaW5lcj5cbjxkaXYgKm5nSWY9XCJtb2RlbC5pc1JlYWRPbmx5UmVuZGVyRGl2KClcIiAjY29udGVudEVsZW1lbnQ+e3sgbW9kZWwudmFsdWUgfX08L2Rpdj4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, Input } from "@angular/core";
1
+ import { Component, ElementRef, Input, ViewChild } from "@angular/core";
2
2
  import { BaseAngular } from "../base-angular";
3
3
  import { AngularComponentFactory } from "../component-factory";
4
4
  import * as i0 from "@angular/core";
@@ -14,9 +14,33 @@ export class SelectBaseItemComponent extends BaseAngular {
14
14
  getModel() {
15
15
  return this.model;
16
16
  }
17
+ onModelChanged() {
18
+ var _a;
19
+ super.onModelChanged();
20
+ if (!this.question.isDesignMode) {
21
+ if (this.previousModel) {
22
+ this.previousModel.setRootElement(undefined);
23
+ }
24
+ if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
25
+ this.model.setRootElement(this.container.nativeElement);
26
+ }
27
+ }
28
+ }
29
+ ngAfterViewInit() {
30
+ var _a;
31
+ if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) && !this.question.isDesignMode) {
32
+ this.model.setRootElement(this.container.nativeElement);
33
+ }
34
+ }
35
+ ngOnDestroy() {
36
+ super.ngOnDestroy();
37
+ if (this.model && !this.question.isDesignMode) {
38
+ this.model.setRootElement(undefined);
39
+ }
40
+ }
17
41
  }
18
42
  SelectBaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
19
- SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\">\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\" sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" (mousedown)=\"question.onMouseDown()\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span> \n </ng-template>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: i2.RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: i3.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
43
+ SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\" #container>\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\"\n sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" (mousedown)=\"question.onMouseDown()\" [class]=\"question.getLabelClass(model)\"\n [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span>\n </ng-template>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: i2.RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: i3.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
20
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, decorators: [{
21
45
  type: Component,
22
46
  args: [{
@@ -32,6 +56,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
32
56
  type: Input
33
57
  }], showLabel: [{
34
58
  type: Input
59
+ }], container: [{
60
+ type: ViewChild,
61
+ args: ["container", { read: ElementRef }]
35
62
  }] } });
36
63
  AngularComponentFactory.Instance.registerComponent("sv-ng-selectbase-item", SelectBaseItemComponent);
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9zZWxlY3RiYXNlLWl0ZW0udHMiLCIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL3NlbGVjdGJhc2UtaXRlbS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUFzQjtJQUxuRTs7UUFTVyxjQUFTLEdBQVksSUFBSSxDQUFDO0tBSXBDO0lBSFcsUUFBUTtRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQzs7cUhBUFUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsK01DVnBDLGl0Q0FxQmM7NEZEWEQsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnREFBZ0Q7b0JBQzFELFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNyQzs4QkFFVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7O0FBTVIsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgSXRlbVZhbHVlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiWydzdi1uZy1zZWxlY3RiYXNlLWl0ZW0nXSwgc3Ytbmctc2VsZWJhc2UtaXRlbVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3NlbGVjdGJhc2UtaXRlbS5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJhc2VJdGVtQ29tcG9uZW50IGV4dGVuZHMgQmFzZUFuZ3VsYXI8SXRlbVZhbHVlPiB7XG4gIEBJbnB1dCgpIHF1ZXN0aW9uITogYW55O1xuICBASW5wdXQoKSBtb2RlbCE6IEl0ZW1WYWx1ZSB8IGFueTtcbiAgQElucHV0KCkgaW5wdXRUeXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93TGFiZWw6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgZ2V0TW9kZWwoKTogSXRlbVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2LW5nLXNlbGVjdGJhc2UtaXRlbVwiLCBTZWxlY3RCYXNlSXRlbUNvbXBvbmVudCk7IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiByb2xlPVwicHJlc2VudGF0aW9uXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmdldEl0ZW1DbGFzcyhtb2RlbClcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpbnB1dFR5cGVcIj5cbiAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRMYWJlbENsYXNzKG1vZGVsKVwiIFttb2RlbF09XCJtb2RlbFwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIHN2LW5nLWNoZWNrYm94LWl0ZW0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtRGVjb3JhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGxhYmVsICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCIgKG1vdXNlZG93bik9XCJxdWVzdGlvbi5vbk1vdXNlRG93bigpXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmdldExhYmVsQ2xhc3MobW9kZWwpXCIgW21vZGVsXT1cIm1vZGVsXCIgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgc3YtbmctcmFkaW9ncm91cC1pdGVtPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbURlY29yYXRvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2l0ZW1EZWNvcmF0b3I+XG4gICAgICA8c3BhbiAqbmdJZj1cInF1ZXN0aW9uLmNzc0NsYXNzZXMubWF0ZXJpYWxEZWNvcmF0b3JcIiBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5tYXRlcmlhbERlY29yYXRvclwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwicXVlc3Rpb24uaXRlbVN2Z0ljb25cIiBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5pdGVtRGVjb3JhdG9yXCI+XG4gICAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInF1ZXN0aW9uLml0ZW1TdmdJY29uXCI+PC91c2U+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gW2NsYXNzXT1cInF1ZXN0aW9uLmdldENvbnRyb2xMYWJlbENsYXNzKG1vZGVsKVwiICpuZ0lmPVwiIW1vZGVsLmhpZGVDYXB0aW9uXCI+XG4gICAgICAgIDxzdi1uZy1zdHJpbmcgW21vZGVsXT1cIm1vZGVsLmxvY1RleHRcIj48L3N2LW5nLXN0cmluZz5cbiAgICAgIDwvc3Bhbj4gXG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9zZWxlY3RiYXNlLWl0ZW0udHMiLCIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL3NlbGVjdGJhc2UtaXRlbS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxXQUFzQjtJQUxuRTs7UUFVVyxjQUFTLEdBQVksSUFBSSxDQUFDO0tBMkJwQztJQXpCVyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ2tCLGNBQWM7O1FBQy9CLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDOUIsSUFBRyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxTQUFnQixDQUFDLENBQUM7YUFDckQ7WUFDRCxJQUFHLElBQUksQ0FBQyxLQUFLLEtBQUksTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxhQUFhLENBQUEsRUFBRTtnQkFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQTthQUN4RDtTQUNGO0lBQ0gsQ0FBQztJQUNELGVBQWU7O1FBQ2IsSUFBRyxJQUFJLENBQUMsS0FBSyxLQUFJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsYUFBYSxDQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUM3RSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1NBQ3hEO0lBQ0gsQ0FBQztJQUNRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQzs7cUhBL0JVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDJRQU1GLFVBQVUsb0RDaEI1Qyw2dUNBdUJjOzRGRGJELHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0RBQWdEO29CQUMxRCxXQUFXLEVBQUUsd0JBQXdCO29CQUNyQyxNQUFNLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDckM7OEJBR1UsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUN3QyxTQUFTO3NCQUF0RCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7O0FBNEI5Qyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBCYXNlQW5ndWxhciB9IGZyb20gXCIuLi9iYXNlLWFuZ3VsYXJcIjtcbmltcG9ydCB7IEl0ZW1WYWx1ZSB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vY29tcG9uZW50LWZhY3RvcnlcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIlsnc3Ytbmctc2VsZWN0YmFzZS1pdGVtJ10sIHN2LW5nLXNlbGViYXNlLWl0ZW1cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWxlY3RiYXNlLWl0ZW0uaHRtbFwiLFxuICBzdHlsZXM6IFtcIjpob3N0IHsgZGlzcGxheTogbm9uZTsgfVwiXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RCYXNlSXRlbUNvbXBvbmVudCBleHRlbmRzIEJhc2VBbmd1bGFyPEl0ZW1WYWx1ZT4gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBASW5wdXQoKSBxdWVzdGlvbiE6IGFueTtcbiAgQElucHV0KCkgbW9kZWwhOiBJdGVtVmFsdWUgfCBhbnk7XG4gIEBJbnB1dCgpIGlucHV0VHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0xhYmVsOiBib29sZWFuID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZChcImNvbnRhaW5lclwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD5cbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IEl0ZW1WYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIG9uTW9kZWxDaGFuZ2VkKCk6IHZvaWQge1xuICAgIHN1cGVyLm9uTW9kZWxDaGFuZ2VkKCk7XG4gICAgaWYoIXRoaXMucXVlc3Rpb24uaXNEZXNpZ25Nb2RlKSB7XG4gICAgICBpZih0aGlzLnByZXZpb3VzTW9kZWwpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c01vZGVsLnNldFJvb3RFbGVtZW50KHVuZGVmaW5lZCBhcyBhbnkpO1xuICAgICAgfVxuICAgICAgaWYodGhpcy5tb2RlbCAmJiB0aGlzLmNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLm1vZGVsLnNldFJvb3RFbGVtZW50KHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLm1vZGVsICYmIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50ICYmICF0aGlzLnF1ZXN0aW9uLmlzRGVzaWduTW9kZSkge1xuICAgICAgdGhpcy5tb2RlbC5zZXRSb290RWxlbWVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgIH1cbiAgfVxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIGlmKHRoaXMubW9kZWwgJiYgIXRoaXMucXVlc3Rpb24uaXNEZXNpZ25Nb2RlKSB7XG4gICAgICB0aGlzLm1vZGVsLnNldFJvb3RFbGVtZW50KHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3Ytbmctc2VsZWN0YmFzZS1pdGVtXCIsIFNlbGVjdEJhc2VJdGVtQ29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2IHJvbGU9XCJwcmVzZW50YXRpb25cIiBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0SXRlbUNsYXNzKG1vZGVsKVwiICNjb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiaW5wdXRUeXBlXCI+XG4gICAgICA8bGFiZWwgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIiBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0TGFiZWxDbGFzcyhtb2RlbClcIiBbbW9kZWxdPVwibW9kZWxcIiBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIlxuICAgICAgICBzdi1uZy1jaGVja2JveC1pdGVtPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaXRlbURlY29yYXRvclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvJ1wiIChtb3VzZWRvd24pPVwicXVlc3Rpb24ub25Nb3VzZURvd24oKVwiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRMYWJlbENsYXNzKG1vZGVsKVwiXG4gICAgICAgIFttb2RlbF09XCJtb2RlbFwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiIHN2LW5nLXJhZGlvZ3JvdXAtaXRlbT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1EZWNvcmF0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNpdGVtRGVjb3JhdG9yPlxuICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbi5jc3NDbGFzc2VzLm1hdGVyaWFsRGVjb3JhdG9yXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMubWF0ZXJpYWxEZWNvcmF0b3JcIj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cInF1ZXN0aW9uLml0ZW1TdmdJY29uXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuaXRlbURlY29yYXRvclwiPlxuICAgICAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJxdWVzdGlvbi5pdGVtU3ZnSWNvblwiPjwvdXNlPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIFtjbGFzc109XCJxdWVzdGlvbi5nZXRDb250cm9sTGFiZWxDbGFzcyhtb2RlbClcIiAqbmdJZj1cIiFtb2RlbC5oaWRlQ2FwdGlvblwiPlxuICAgICAgICA8c3Ytbmctc3RyaW5nIFttb2RlbF09XCJtb2RlbC5sb2NUZXh0XCI+PC9zdi1uZy1zdHJpbmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -521,7 +521,7 @@ class ElementTitleActionsComponent extends EmbeddedViewContentComponent {
521
521
  }
522
522
  }
523
523
  ElementTitleActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleActionsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
524
- ElementTitleActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: { element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ng-container *ngIf=\"!element.hasTitleActions\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"element.hasTitleActions\">\n <div class=\"sv-title-actions\">\n <span class=\"sv-title-actions__title\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </span>\n <sv-ng-action-bar [model]=\"element.getTitleToolbar()\"></sv-ng-action-bar>\n </div>\n </ng-container>\n <ng-template #elementTitleContent>\n <sv-ng-string *ngIf=\"element.isTitleRenderedAsString\" [model]=\"element.locTitle\"></sv-ng-string>\n <ng-container *ngIf=\"!element.isTitleRenderedAsString\">\n <span\n *ngIf=\"element.isRequireTextOnStart\"\n [class]=\"cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span\n *ngIf=\"element.no\"\n style=\"position: static\"\n [class]=\"element.cssTitleNumber\"\n [attr.aria-hidden]=\"true\"\n >{{ element.no }}</span>\n <span *ngIf=\"element.no\">&nbsp;</span>\n <span\n *ngIf=\"element.isRequireTextBeforeTitle\"\n [class]=\"cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span *ngIf=\"element.isRequireTextBeforeTitle\">&nbsp;</span>\n <sv-ng-string [model]=\"element.locTitle\"></sv-ng-string>\n <span *ngIf=\"element.isRequireTextAfterTitle\">&nbsp;</span>\n <span\n *ngIf=\" element.isRequireTextAfterTitle\"\n [class]=\"cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span> \n </ng-container>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
524
+ ElementTitleActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: { element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ng-container *ngIf=\"!element.hasTitleActions\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"element.hasTitleActions\">\n <div class=\"sv-title-actions\">\n <span class=\"sv-title-actions__title\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </span>\n <sv-ng-action-bar [model]=\"element.getTitleToolbar()\"></sv-ng-action-bar>\n </div>\n </ng-container>\n <ng-template #elementTitleContent>\n <sv-ng-string *ngIf=\"element.isTitleRenderedAsString\" [model]=\"element.locTitle\"></sv-ng-string>\n <ng-container *ngIf=\"!element.isTitleRenderedAsString\">\n <span\n *ngIf=\"element.isRequireTextOnStart\"\n [class]=\"element.cssRequiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span\n *ngIf=\"element.no\"\n style=\"position: static\"\n [class]=\"element.cssTitleNumber\"\n [attr.aria-hidden]=\"true\"\n >{{ element.no }}</span>\n <span *ngIf=\"element.no\">&nbsp;</span>\n <span\n *ngIf=\"element.isRequireTextBeforeTitle\"\n [class]=\"element.cssRequiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span *ngIf=\"element.isRequireTextBeforeTitle\">&nbsp;</span>\n <sv-ng-string [model]=\"element.locTitle\"></sv-ng-string>\n <span *ngIf=\"element.isRequireTextAfterTitle\">&nbsp;</span>\n <span\n *ngIf=\" element.isRequireTextAfterTitle\"\n [class]=\"element.cssRequiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span> \n </ng-container>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
525
525
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleActionsComponent, decorators: [{
526
526
  type: Component,
527
527
  args: [{
@@ -1139,7 +1139,7 @@ class SurveyCommentComponent {
1139
1139
  }
1140
1140
  }
1141
1141
  SurveyCommentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1142
- SurveyCommentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: { question: "question" }, ngImport: i0, template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [id]=\"question.commentId\" [attr.maxlength]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired || question.a11y_input_ariaRequired\" [attr.aria-label]=\"question.ariaLabel || question.a11y_input_ariaLabel\" [attr.placeholder]=\"question.renderedCommentPlaceholder\" \n [value]=\"comment\"\n [style.resize]=\"question.resizeStyle\"\n [attr.rows]=\"question.commentAreaRows\"\n [disabled]=\"question.isInputReadOnly\"\n (change)=\"question.onCommentChange($event)\"\n (input)=\"question.onCommentInput($event)\"\n [class]=\"question.cssClasses.other\">\n</textarea>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ question.comment }}</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1142
+ SurveyCommentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: { question: "question" }, ngImport: i0, template: "<ng-container *ngIf=\"!question.isReadOnlyRenderDiv()\">\n <ng-template [component]=\"{ name: 'sv-text-area', data: { model: question.commentTextAreaModel } }\"></ng-template>\n</ng-container>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ question.comment }}</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1143
1143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentComponent, decorators: [{
1144
1144
  type: Component,
1145
1145
  args: [{
@@ -1232,6 +1232,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
1232
1232
  }] } });
1233
1233
  AngularComponentFactory.Instance.registerComponent(LocalizableString.defaultRenderer, StringViewerComponent);
1234
1234
 
1235
+ class TextAreaComponent extends EmbeddedViewContentComponent {
1236
+ get value() {
1237
+ return this.model.getTextValue() || "";
1238
+ }
1239
+ ngAfterViewInit() {
1240
+ var _a;
1241
+ if (!!this.model && !!((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
1242
+ const element = this.elementContentRef.nativeElement;
1243
+ this.model.setElement(element);
1244
+ }
1245
+ }
1246
+ ngOnDestroy() {
1247
+ this.model.dispose();
1248
+ }
1249
+ }
1250
+ TextAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1251
+ TextAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextAreaComponent, selector: "sv-text-area", inputs: { model: "model" }, viewQueries: [{ propertyName: "elementContentRef", first: true, predicate: ["contentElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n<textarea\n[readonly]=\"model.isReadOnlyAttr\"\n[disabled]=\"model.isDisabledAttr\"\n[id]=\"model.id\"\n[attr.maxlength]=\"model.maxLength\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.placeholder\"\n[class]=\"model.className\"\n[value]=\"value\"\n(input)=\"model.onTextAreaInput($event)\"\n(keydown)=\"model.onTextAreaKeyDown($event)\"\n(focus)=\"model.onTextAreaFocus($event)\"\n(blur)=\"model.onTextAreaBlur($event)\"\n(change)=\"model.onTextAreaChange($event)\"\n[attr.aria-required]=\"model.ariaRequired\"\n[attr.aria-label]=\"model.ariaLabel\"\n[attr.aria-labelledby]=\"model.ariaLabelledBy\"\n[attr.aria-describedby]=\"model.ariaDescribedBy\"\n[attr.aria-invalid]=\"model.ariaInvalid\"\n[attr.aria-errormessage]=\"model.ariaErrormessage\"\n[style.resize]=\"model.question.resizeStyle\"\n#contentElement></textarea>\n</ng-template>", styles: [":host{display:none}\n"] });
1252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextAreaComponent, decorators: [{
1253
+ type: Component,
1254
+ args: [{
1255
+ selector: "sv-text-area",
1256
+ templateUrl: "./text-area.component.html",
1257
+ styleUrls: ["../../hide-host.scss"]
1258
+ }]
1259
+ }], propDecorators: { model: [{
1260
+ type: Input
1261
+ }], elementContentRef: [{
1262
+ type: ViewChild,
1263
+ args: ["contentElement"]
1264
+ }] } });
1265
+ AngularComponentFactory.Instance.registerComponent("sv-text-area", TextAreaComponent);
1266
+
1235
1267
  class PopupPointerComponent extends BaseAngular {
1236
1268
  get popupModel() {
1237
1269
  return this.model;
@@ -1392,7 +1424,7 @@ class TagboxFilterComponent extends BaseAngular {
1392
1424
  }
1393
1425
  }
1394
1426
  TagboxFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1395
- TagboxFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TagboxFilterComponent, selector: "sv-tagbox-filter", inputs: { model: "model", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"question.cssClasses.hint\">\n <div *ngIf=\"model.showHintPrefix\" [class]=\"question.cssClasses.hintPrefix\">\n <span>{{ model.hintStringPrefix }}</span>\n </div>\n <div [class]=\"question.cssClasses.hintSuffixWrapper\">\n <div *ngIf=\"model.showHintString\" [class]=\"question.cssClasses.hintSuffix\">\n <span style=\"visibility: hidden\">{{ model.inputStringRendered }}</span>\n <span>{{ model.hintStringSuffix }}</span>\n </div>\n <input\n type=\"text\"\n autocomplete=\"off\"\n [(ngModel)]=\"model.inputStringRendered\"\n [attr.id]=\"question.getInputId()\"\n [class]=\"question.cssClasses.filterStringInput\"\n [attr.inputmode]=\"model.inputMode\"\n [attr.role]=\"model.filterStringEnabled ? question.ariaRole : null\"\n [attr.readonly]=\"model.filterReadOnly ? true : null\"\n [attr.disabled]=\"question.isDisabledAttr ? true : null\"\n [attr.size]=\"!model.inputStringRendered ? 1 : null\"\n [attr.aria-label]=\"question.a11y_input_ariaLabel\"\n [attr.aria-labelledby]=\"question.a11y_input_ariaLabelledBy\"\n [attr.aria-describedby]=\"question.a11y_input_ariaDescribedBy\"\n [attr.aria-controls]=\"model.listElementId\"\n [attr.aria-expanded]=\"question.ariaExpanded\"\n [attr.aria-activedescendant]=\"model.ariaActivedescendant\"\n [attr.placeholder]=\"model.filterStringPlaceholder\"\n (keydown)=\"model.inputKeyHandler($event)\"\n (blur)=\"model.onBlur($event)\"\n (focus)=\"model.onFocus($event)\"\n />\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1427
+ TagboxFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TagboxFilterComponent, selector: "sv-tagbox-filter", inputs: { model: "model", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"question.cssClasses.hint\">\n <div *ngIf=\"model.showHintPrefix\" [class]=\"question.cssClasses.hintPrefix\">\n <span>{{ model.hintStringPrefix }}</span>\n </div>\n <div [class]=\"question.cssClasses.hintSuffixWrapper\">\n <div *ngIf=\"model.showHintString\" [class]=\"question.cssClasses.hintSuffix\">\n <span style=\"visibility: hidden\">{{ model.inputStringRendered }}</span>\n <span>{{ model.hintStringSuffix }}</span>\n </div>\n <input\n type=\"text\"\n autocomplete=\"off\"\n [(ngModel)]=\"model.inputStringRendered\"\n [attr.id]=\"question.getInputId()\"\n [class]=\"question.cssClasses.filterStringInput\"\n [attr.inputmode]=\"model.inputMode\"\n [attr.role]=\"model.filterStringEnabled ? question.ariaRole : null\"\n [attr.readonly]=\"model.filterReadOnly ? true : null\"\n [attr.disabled]=\"question.isDisabledAttr ? true : null\"\n [attr.size]=\"!model.inputStringRendered ? 1 : null\"\n [attr.aria-label]=\"question.a11y_input_ariaLabel\"\n [attr.aria-labelledby]=\"question.a11y_input_ariaLabelledBy\"\n [attr.aria-describedby]=\"question.a11y_input_ariaDescribedBy\"\n [attr.aria-controls]=\"model.listElementId\"\n [attr.aria-expanded]=\"question.ariaExpanded\"\n [attr.aria-activedescendant]=\"model.ariaActivedescendant\"\n [attr.placeholder]=\"model.filterStringPlaceholder\"\n (keydown)=\"model.inputKeyHandler($event)\"\n (blur)=\"question.onBlur($event)\"\n (focus)=\"question.onFocus($event)\"\n />\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1396
1428
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, decorators: [{
1397
1429
  type: Component,
1398
1430
  args: [{
@@ -1513,21 +1545,12 @@ class SurveyCommentOtherComponent {
1513
1545
  const val = this.question.otherValue;
1514
1546
  return !!val ? val : "";
1515
1547
  }
1516
- onOtherValueChange(event) {
1517
- this.question.onOtherValueChange(event);
1518
- }
1519
- onOtherValueInput(event) {
1520
- this.question.onOtherValueInput(event);
1521
- }
1522
- get otherId() {
1523
- return this.question.otherId;
1524
- }
1525
- get otherPlaceholder() {
1526
- return this.question.otherPlaceholder;
1548
+ get textAreaModel() {
1549
+ return this.question.otherTextAreaModel;
1527
1550
  }
1528
1551
  }
1529
1552
  SurveyCommentOtherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentOtherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1530
- SurveyCommentOtherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: { question: "question" }, ngImport: i0, template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [id]=\"otherId\" [attr.maxlength]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired || question.a11y_input_ariaRequired\" [attr.aria-label]=\"question.ariaLabel || question.a11y_input_ariaLabel\" [attr.placeholder]=\"otherPlaceholder\" \n [value]=\"otherValue\"\n [style.resize]=\"question.resizeStyle\"\n [attr.rows]=\"question.commentAreaRows\"\n [disabled]=\"question.isInputReadOnly\"\n (change)=\"onOtherValueChange($event)\"\n (input)=\"onOtherValueInput($event)\"\n [class]=\"question.cssClasses.other\">\n</textarea>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ otherValue }}</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1553
+ SurveyCommentOtherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: { question: "question" }, ngImport: i0, template: "<ng-container *ngIf=\"!question.isReadOnlyRenderDiv()\">\n <ng-template [component]=\"{ name: 'sv-text-area', data: { model: textAreaModel } }\"></ng-template>\n</ng-container>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ otherValue }}</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1531
1554
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentOtherComponent, decorators: [{
1532
1555
  type: Component,
1533
1556
  args: [{
@@ -2142,9 +2165,33 @@ class SelectBaseItemComponent extends BaseAngular {
2142
2165
  getModel() {
2143
2166
  return this.model;
2144
2167
  }
2168
+ onModelChanged() {
2169
+ var _a;
2170
+ super.onModelChanged();
2171
+ if (!this.question.isDesignMode) {
2172
+ if (this.previousModel) {
2173
+ this.previousModel.setRootElement(undefined);
2174
+ }
2175
+ if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
2176
+ this.model.setRootElement(this.container.nativeElement);
2177
+ }
2178
+ }
2179
+ }
2180
+ ngAfterViewInit() {
2181
+ var _a;
2182
+ if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) && !this.question.isDesignMode) {
2183
+ this.model.setRootElement(this.container.nativeElement);
2184
+ }
2185
+ }
2186
+ ngOnDestroy() {
2187
+ super.ngOnDestroy();
2188
+ if (this.model && !this.question.isDesignMode) {
2189
+ this.model.setRootElement(undefined);
2190
+ }
2191
+ }
2145
2192
  }
2146
2193
  SelectBaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2147
- SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\">\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\" sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" (mousedown)=\"question.onMouseDown()\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span> \n </ng-template>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2194
+ SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\" #container>\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\"\n sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" (mousedown)=\"question.onMouseDown()\" [class]=\"question.getLabelClass(model)\"\n [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span>\n </ng-template>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2148
2195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, decorators: [{
2149
2196
  type: Component,
2150
2197
  args: [{
@@ -2160,6 +2207,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2160
2207
  type: Input
2161
2208
  }], showLabel: [{
2162
2209
  type: Input
2210
+ }], container: [{
2211
+ type: ViewChild,
2212
+ args: ["container", { read: ElementRef }]
2163
2213
  }] } });
2164
2214
  AngularComponentFactory.Instance.registerComponent("sv-ng-selectbase-item", SelectBaseItemComponent);
2165
2215
 
@@ -2807,7 +2857,7 @@ class CommentQuestionComponent extends QuestionAngular {
2807
2857
  }
2808
2858
  }
2809
2859
  CommentQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2810
- CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<textarea\n*ngIf=\"!model.isReadOnlyRenderDiv()\"\n[readonly]=\"model.isReadOnlyAttr\"\n[disabled]=\"model.isDisabledAttr\"\n[id]=\"model.inputId\"\n[attr.maxlength]=\"model.getMaxLength()\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.renderedPlaceholder\"\n[class]=\"model.className\"\n[value]=\"model.value || null\"\n(input)=\"model.onInput($event)\"\n(keydown)=\"model.onKeyDown($event)\"\n(change)=\"onChange($event)\"\n(focus)=\"model.onFocus($event)\"\n(blur)=\"model.onBlur($event)\"\n[attr.aria-required]=\"model.a11y_input_ariaRequired\"\n[attr.aria-label]=\"model.a11y_input_ariaLabel\"\n[attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\"\n[attr.aria-describedby]=\"model.a11y_input_ariaDescribedBy\"\n[attr.aria-invalid]=\"model.a11y_input_ariaInvalid\"\n[attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\"\n[style.resize]=\"model.resizeStyle\"\n#contentElement></textarea>\n<sv-ng-character-counter *ngIf=\"!model.isReadOnlyRenderDiv() && model.getMaxLength()\" \n[counter]=\"model.characterCounter\"\n[remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n</sv-ng-character-counter>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2860
+ CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!model.isReadOnlyRenderDiv()\">\n <ng-template [component]=\"{ name: 'sv-text-area', data: { model: model.textAreaModel } }\"></ng-template>\n <sv-ng-character-counter *ngIf=\"model.getMaxLength()\" \n [counter]=\"model.characterCounter\"\n [remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n </sv-ng-character-counter>\n</ng-container>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2811
2861
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, decorators: [{
2812
2862
  type: Component,
2813
2863
  args: [{
@@ -3041,7 +3091,7 @@ class PanelDynamicAddBtn extends PaneldynamicAction {
3041
3091
  }
3042
3092
  }
3043
3093
  PanelDynamicAddBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicAddBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
3044
- PanelDynamicAddBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" *ngIf=\"question.canAddPanel\" [class]=\"question.getAddButtonCss()\" (click)=\"addPanelClick()\">\n<span [class]=\"question.cssClasses.buttonAddText\"><sv-ng-string [model]=\"question.locPanelAddText\"></sv-ng-string></span>\n</button>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3094
+ PanelDynamicAddBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" [id]=\"question.addButtonId\" *ngIf=\"question.canAddPanel\" [class]=\"question.getAddButtonCss()\" (click)=\"addPanelClick()\">\n<span [class]=\"question.cssClasses.buttonAddText\"><sv-ng-string [model]=\"question.locPanelAddText\"></sv-ng-string></span>\n</button>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3045
3095
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicAddBtn, decorators: [{
3046
3096
  type: Component,
3047
3097
  args: [{
@@ -3278,7 +3328,7 @@ class MatrixDynamicDragDropIconComponent extends EmbeddedViewContentComponent {
3278
3328
  }
3279
3329
  }
3280
3330
  MatrixDynamicDragDropIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicDragDropIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3281
- MatrixDynamicDragDropIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicDragDropIconComponent, selector: "sv-ng-matrix-drag-drop-icon", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <svg *ngIf=\"question.iconDragElement\" [class]=\"question.cssClasses.dragElementDecorator\">\n <use [attr.xlink:href]=\"question.iconDragElement\"></use>\n </svg>\n <span *ngIf=\"!question.iconDragElement\" data-bind=\"css: question.cssClasses.iconDrag\"></span>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3331
+ MatrixDynamicDragDropIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicDragDropIconComponent, selector: "sv-ng-matrix-drag-drop-icon", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div>\n <svg *ngIf=\"question.iconDragElement\" [class]=\"question.cssClasses.dragElementDecorator\">\n <use [attr.xlink:href]=\"question.iconDragElement\"></use>\n </svg>\n <span *ngIf=\"!question.iconDragElement\" data-bind=\"css: question.cssClasses.iconDrag\"></span>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3282
3332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicDragDropIconComponent, decorators: [{
3283
3333
  type: Component,
3284
3334
  args: [{
@@ -3719,6 +3769,7 @@ class SurveyModule {
3719
3769
  SurveyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3720
3770
  SurveyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, declarations: [VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3721
3771
  SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3772
+ TextAreaComponent,
3722
3773
  QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3723
3774
  DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3724
3775
  PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
@@ -3734,6 +3785,7 @@ SurveyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "
3734
3785
  CustomQuestionComponent, CompositeQuestionComponent, ButtonGroupItemComponent, ButtonGroupQuestionComponent, MatrixRowComponent, ModalComponent, LogoImageComponent, SkeletonComponent, TimerPanelComponent, PaneldynamicRemoveButtonComponent,
3735
3786
  NotifierComponent, ComponentsContainerComponent, MultipleTextRowComponent, LoadingIndicatorComponent, HeaderComponent, HeaderCellComponent, HeaderMobileComponent, ChooseFileBtn, FilePreviewComponent, SvgBundleComponent], imports: [CommonModule, FormsModule], exports: [VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3736
3787
  SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3788
+ TextAreaComponent,
3737
3789
  QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3738
3790
  CharacterCounterComponent,
3739
3791
  DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
@@ -3758,6 +3810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3758
3810
  declarations: [
3759
3811
  VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3760
3812
  SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3813
+ TextAreaComponent,
3761
3814
  QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3762
3815
  DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3763
3816
  PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
@@ -3779,6 +3832,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3779
3832
  exports: [
3780
3833
  VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3781
3834
  SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3835
+ TextAreaComponent,
3782
3836
  QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3783
3837
  CharacterCounterComponent,
3784
3838
  DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
@@ -3803,5 +3857,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3803
3857
  * Generated bundle index. Do not edit.
3804
3858
  */
3805
3859
 
3806
- export { ActionBarComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, ActionComponent, AngularComponentFactory, BaseAngular, BooleanCheckboxComponent, BooleanQuestionComponent, BooleanRadioComponent, BooleanRadioItemComponent, BrandInfoComponent, ButtonGroupQuestionComponent, CharacterCounterComponent, CheckboxComponent, CheckboxItemComponent, CommentQuestionComponent, ComponentsContainerComponent, CompositeQuestionComponent, CustomQuestionComponent, CustomWidgetComponent, DropdownComponent, DropdownOptionItemComponent, DropdownQuestionComponent, DropdownSelectComponent, DynamicComponentDirective, DynamicHeadComponent, ElementComponent, ElementHeaderComponent, ElementTitleComponent, EmbeddedViewContentComponent, ErrorsComponent, ExpressionComponent, FilePreviewComponent, FileQuestionComponent, HeaderCellComponent, HeaderComponent, HeaderMobileComponent, HtmlQuestionComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent, Key2ClickDirective, ListComponent, ListItemComponent, ListItemContentComponent, ListItemGroupComponent, LoadingIndicatorComponent, LogoImageComponent, MatrixCellComponent, MatrixDetailButtonComponent, MatrixDropdownCellComponent, MatrixDropdownComponent, MatrixDynamicComponent, MatrixDynamicDragDropIconComponent, MatrixDynamicRemoveButtonComponent, MatrixQuestionComponent, MatrixRequiredHeader, MatrixTableComponent, ModalComponent, MultipleTextComponent, MultipleTextItemComponent, MultipleTextRowComponent, NotifierComponent, PageComponent, PanelComponent, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, PanelDynamicQuestionComponent, PaneldynamicAction, PaneldynamicRemoveButtonComponent, PopupBaseContainerComponent, PopupComponent, PopupPointerComponent, PopupService, PopupSurveyComponent, ProgressButtonsComponent, ProgressDefaultComponent, ProgressTocComponent, QuestionAngular, QuestionComponent, QuestionErrorComponent, QuestionSkeletonComponent, RadiogroupComponent, RadiogroupItemComponent, RankingItemComponent, RankingItemContentComponent, RankingQuestionComponent, RatingDropdownComponent, RatingDropdownItemComponent, RatingItemComponent, RatingItemSmileyComponent, RatingItemStarComponent, RatingQuestionComponent, RowComponent, SafeHtmlPipe, SafeResourceUrlPipe, SafeUrlPipe, SelectBaseComponent, SelectBaseItemComponent, SignaturePadQuestionComponent, SkeletonComponent, StringEditorComponent, StringViewerComponent, SurveyCommentComponent, SurveyCommentOtherComponent, SurveyComponent, SurveyContentComponent, SurveyHeaderComponent, SurveyModule, SurveyNavigationButton, SurveyStringComponent, SvgBundleComponent, SvgIconComponent, TagboxComponent, TagboxFilterComponent, TagboxItemComponent, TagboxQuestionComponent, TemplateRendererComponent, TextQuestionComponent, TimerPanelComponent, VisibleDirective, getComponentName };
3860
+ export { ActionBarComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, ActionComponent, AngularComponentFactory, BaseAngular, BooleanCheckboxComponent, BooleanQuestionComponent, BooleanRadioComponent, BooleanRadioItemComponent, BrandInfoComponent, ButtonGroupQuestionComponent, CharacterCounterComponent, CheckboxComponent, CheckboxItemComponent, CommentQuestionComponent, ComponentsContainerComponent, CompositeQuestionComponent, CustomQuestionComponent, CustomWidgetComponent, DropdownComponent, DropdownOptionItemComponent, DropdownQuestionComponent, DropdownSelectComponent, DynamicComponentDirective, DynamicHeadComponent, ElementComponent, ElementHeaderComponent, ElementTitleComponent, EmbeddedViewContentComponent, ErrorsComponent, ExpressionComponent, FilePreviewComponent, FileQuestionComponent, HeaderCellComponent, HeaderComponent, HeaderMobileComponent, HtmlQuestionComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent, Key2ClickDirective, ListComponent, ListItemComponent, ListItemContentComponent, ListItemGroupComponent, LoadingIndicatorComponent, LogoImageComponent, MatrixCellComponent, MatrixDetailButtonComponent, MatrixDropdownCellComponent, MatrixDropdownComponent, MatrixDynamicComponent, MatrixDynamicDragDropIconComponent, MatrixDynamicRemoveButtonComponent, MatrixQuestionComponent, MatrixRequiredHeader, MatrixTableComponent, ModalComponent, MultipleTextComponent, MultipleTextItemComponent, MultipleTextRowComponent, NotifierComponent, PageComponent, PanelComponent, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, PanelDynamicQuestionComponent, PaneldynamicAction, PaneldynamicRemoveButtonComponent, PopupBaseContainerComponent, PopupComponent, PopupPointerComponent, PopupService, PopupSurveyComponent, ProgressButtonsComponent, ProgressDefaultComponent, ProgressTocComponent, QuestionAngular, QuestionComponent, QuestionErrorComponent, QuestionSkeletonComponent, RadiogroupComponent, RadiogroupItemComponent, RankingItemComponent, RankingItemContentComponent, RankingQuestionComponent, RatingDropdownComponent, RatingDropdownItemComponent, RatingItemComponent, RatingItemSmileyComponent, RatingItemStarComponent, RatingQuestionComponent, RowComponent, SafeHtmlPipe, SafeResourceUrlPipe, SafeUrlPipe, SelectBaseComponent, SelectBaseItemComponent, SignaturePadQuestionComponent, SkeletonComponent, StringEditorComponent, StringViewerComponent, SurveyCommentComponent, SurveyCommentOtherComponent, SurveyComponent, SurveyContentComponent, SurveyHeaderComponent, SurveyModule, SurveyNavigationButton, SurveyStringComponent, SvgBundleComponent, SvgIconComponent, TagboxComponent, TagboxFilterComponent, TagboxItemComponent, TagboxQuestionComponent, TemplateRendererComponent, TextAreaComponent, TextQuestionComponent, TimerPanelComponent, VisibleDirective, getComponentName };
3807
3861
  //# sourceMappingURL=survey-angular-ui.js.map