survey-angular-ui 2.3.1 → 2.3.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.
@@ -2,9 +2,10 @@ import { LocalizableString, QuestionBooleanModel } from "survey-core";
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class BooleanRadioItemComponent {
4
4
  question: QuestionBooleanModel;
5
- value: boolean;
5
+ value: string | boolean;
6
6
  locText: LocalizableString;
7
7
  constructor();
8
+ change(): void;
8
9
  static ɵfac: i0.ɵɵFactoryDeclaration<BooleanRadioItemComponent, never>;
9
10
  static ɵcmp: i0.ɵɵComponentDeclaration<BooleanRadioItemComponent, "sv-ng-boolean-radio-item", never, { "question": "question"; "value": "value"; "locText": "locText"; }, {}, never, never>;
10
11
  }
@@ -1,5 +1,6 @@
1
1
  import { Component, Input } from "@angular/core";
2
2
  import { EmbeddedViewContentComponent } from "../../embedded-view-content.component";
3
+ import { AngularComponentFactory } from "../../component-factory";
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "../svg-icon/svg-icon.component";
5
6
  import * as i2 from "@angular/common";
@@ -20,4 +21,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
20
21
  }], question: [{
21
22
  type: Input
22
23
  }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7OztBQVFyRixNQUFNLE9BQU8saUJBQWtCLFNBQVEsNEJBQTRCOzsrR0FBdEQsaUJBQWlCO21HQUFqQixpQkFBaUIsOEhDVDlCLG9oRUE0QmM7NEZEbkJELGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVksSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZW1iZWRkZWQtdmlldy1jb250ZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgUXVlc3Rpb25GaWxlTW9kZWwgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS1pdGVtLmNvbXBvbmVudC5odG1sXCIsXG4gIHNlbGVjdG9yOiBcInN2LW5nLWZpbGUtaXRlbVwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJdGVtQ29tcG9uZW50IGV4dGVuZHMgRW1iZWRkZWRWaWV3Q29udGVudENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgaXRlbSE6IGFueTtcbiAgICBASW5wdXQoKSBxdWVzdGlvbiE6IFF1ZXN0aW9uRmlsZU1vZGVsO1xufSIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gICAgPHNwYW4gW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucHJldmlld0l0ZW1cIiAoY2xpY2spPVwicXVlc3Rpb24uZG9Eb3dubG9hZEZpbGVGcm9tQ29udGFpbmVyKCRldmVudClcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubmFtZSAmJiBxdWVzdGlvbi5jc3NDbGFzc2VzLmZpbGVTaWduXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuZmlsZVNpZ25cIj5cbiAgICAgICAgICAgIDxhIChjbGljayk9XCJxdWVzdGlvbi5kb0Rvd25sb2FkRmlsZSgkZXZlbnQsIGl0ZW0pXCIgW2F0dHIuaHJlZl09XCJpdGVtLmNvbnRlbnQgfCBzYWZlVXJsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLm5hbWVcIiBbYXR0ci5kb3dubG9hZF09XCJpdGVtLm5hbWVcIiBbc3R5bGUud2lkdGhdPVwicXVlc3Rpb24uaW1hZ2VXaWR0aFwiPnt7XG4gICAgICAgICAgICAgICAgaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJxdWVzdGlvbi5nZXRJbWFnZVdyYXBwZXJDc3MoaXRlbSlcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJxdWVzdGlvbi5jYW5QcmV2aWV3SW1hZ2UoaXRlbSlcIiBbYXR0ci5zcmNdPVwiaXRlbS5jb250ZW50IHwgc2FmZVVybFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJxdWVzdGlvbi5pbWFnZUhlaWdodFwiIFtzdHlsZS53aWR0aF09XCJxdWVzdGlvbi5pbWFnZVdpZHRoXCIgYWx0PVwiRmlsZSBwcmV2aWV3XCIgLz5cbiAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJxdWVzdGlvbi5kZWZhdWx0SW1hZ2UoaXRlbSlcIiBbaWNvbk5hbWVdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5kZWZhdWx0SW1hZ2VJY29uSWRcIlxuICAgICAgICAgICAgICAgIFtwYXJ0Q3NzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuZGVmYXVsdEltYWdlXCIgW3NpemVdPVwiJ2F1dG8nXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5uYW1lICYmICFxdWVzdGlvbi5pc1JlYWRPbmx5XCIgW2NsYXNzXT1cInF1ZXN0aW9uLmdldFJlbW92ZUJ1dHRvbkNzcygpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicXVlc3Rpb24uZG9SZW1vdmVGaWxlKGl0ZW0sICRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5yZW1vdmVGaWxlXCI+e3sgcXVlc3Rpb24ucmVtb3ZlRmlsZUNhcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmVtb3ZlRmlsZVN2Z0ljb25JZFwiIFt0aXRsZV09XCJxdWVzdGlvbi5yZW1vdmVGaWxlQ2FwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtwYXJ0Q3NzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmVtb3ZlRmlsZVN2Z1wiIFtpY29uTmFtZV09XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJlbW92ZUZpbGVTdmdJY29uSWRcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCInYXV0bydcIiBzdi1uZy1zdmctaWNvbj48L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubmFtZSAmJiBxdWVzdGlvbi5jc3NDbGFzc2VzLmZpbGVTaWduQm90dG9tXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuZmlsZVNpZ25Cb3R0b21cIj5cbiAgICAgICAgICAgIDxhIChjbGljayk9XCJxdWVzdGlvbi5kb0Rvd25sb2FkRmlsZSgkZXZlbnQsIGl0ZW0pXCIgW2F0dHIuaHJlZl09XCJpdGVtLmNvbnRlbnQgfCBzYWZlVXJsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLm5hbWVcIiBbYXR0ci5kb3dubG9hZF09XCJpdGVtLm5hbWVcIiBbc3R5bGUud2lkdGhdPVwicXVlc3Rpb24uaW1hZ2VXaWR0aFwiPnt7XG4gICAgICAgICAgICAgICAgaXRlbS5uYW1lXG4gICAgICAgICAgICAgICAgfX08L2E+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+Il19
24
+ AngularComponentFactory.Instance.registerComponent("sv-file-item", FileItemComponent);
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU9sRSxNQUFNLE9BQU8saUJBQWtCLFNBQVEsNEJBQTRCOzsrR0FBdEQsaUJBQWlCO21HQUFqQixpQkFBaUIsOEhDVjlCLG9oRUE0QmM7NEZEbEJELGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVksSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7O0FBR1YsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2VtYmVkZGVkLXZpZXctY29udGVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7IFF1ZXN0aW9uRmlsZU1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6IFwiLi9maWxlLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgc2VsZWN0b3I6IFwic3YtbmctZmlsZS1pdGVtXCIsXG4gIHN0eWxlVXJsczogW1wiLi4vLi4vaGlkZS1ob3N0LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBpdGVtITogYW55O1xuICAgIEBJbnB1dCgpIHF1ZXN0aW9uITogUXVlc3Rpb25GaWxlTW9kZWw7XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3YtZmlsZS1pdGVtXCIsIEZpbGVJdGVtQ29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgIDxzcGFuIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnByZXZpZXdJdGVtXCIgKGNsaWNrKT1cInF1ZXN0aW9uLmRvRG93bmxvYWRGaWxlRnJvbUNvbnRhaW5lcigkZXZlbnQpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLm5hbWUgJiYgcXVlc3Rpb24uY3NzQ2xhc3Nlcy5maWxlU2lnblwiIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLmZpbGVTaWduXCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwicXVlc3Rpb24uZG9Eb3dubG9hZEZpbGUoJGV2ZW50LCBpdGVtKVwiIFthdHRyLmhyZWZdPVwiaXRlbS5jb250ZW50IHwgc2FmZVVybFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS5uYW1lXCIgW2F0dHIuZG93bmxvYWRdPVwiaXRlbS5uYW1lXCIgW3N0eWxlLndpZHRoXT1cInF1ZXN0aW9uLmltYWdlV2lkdGhcIj57e1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZVxuICAgICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0SW1hZ2VXcmFwcGVyQ3NzKGl0ZW0pXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwicXVlc3Rpb24uY2FuUHJldmlld0ltYWdlKGl0ZW0pXCIgW2F0dHIuc3JjXT1cIml0ZW0uY29udGVudCB8IHNhZmVVcmxcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHRdPVwicXVlc3Rpb24uaW1hZ2VIZWlnaHRcIiBbc3R5bGUud2lkdGhdPVwicXVlc3Rpb24uaW1hZ2VXaWR0aFwiIGFsdD1cIkZpbGUgcHJldmlld1wiIC8+XG4gICAgICAgICAgICA8c3ZnICpuZ0lmPVwicXVlc3Rpb24uZGVmYXVsdEltYWdlKGl0ZW0pXCIgW2ljb25OYW1lXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuZGVmYXVsdEltYWdlSWNvbklkXCJcbiAgICAgICAgICAgICAgICBbcGFydENzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLmRlZmF1bHRJbWFnZVwiIFtzaXplXT1cIidhdXRvJ1wiIHN2LW5nLXN2Zy1pY29uPjwvc3ZnPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0ubmFtZSAmJiAhcXVlc3Rpb24uaXNSZWFkT25seVwiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRSZW1vdmVCdXR0b25Dc3MoKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInF1ZXN0aW9uLmRvUmVtb3ZlRmlsZShpdGVtLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmVtb3ZlRmlsZVwiPnt7IHF1ZXN0aW9uLnJlbW92ZUZpbGVDYXB0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJlbW92ZUZpbGVTdmdJY29uSWRcIiBbdGl0bGVdPVwicXVlc3Rpb24ucmVtb3ZlRmlsZUNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICBbcGFydENzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJlbW92ZUZpbGVTdmdcIiBbaWNvbk5hbWVdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5yZW1vdmVGaWxlU3ZnSWNvbklkXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ2F1dG8nXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLm5hbWUgJiYgcXVlc3Rpb24uY3NzQ2xhc3Nlcy5maWxlU2lnbkJvdHRvbVwiIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLmZpbGVTaWduQm90dG9tXCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwicXVlc3Rpb24uZG9Eb3dubG9hZEZpbGUoJGV2ZW50LCBpdGVtKVwiIFthdHRyLmhyZWZdPVwiaXRlbS5jb250ZW50IHwgc2FmZVVybFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwiaXRlbS5uYW1lXCIgW2F0dHIuZG93bmxvYWRdPVwiaXRlbS5uYW1lXCIgW3N0eWxlLndpZHRoXT1cInF1ZXN0aW9uLmltYWdlV2lkdGhcIj57e1xuICAgICAgICAgICAgICAgIGl0ZW0ubmFtZVxuICAgICAgICAgICAgICAgIH19PC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -1,15 +1,15 @@
1
1
  import { Component, Input } from "@angular/core";
2
2
  import { BaseAngular } from "../../base-angular";
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "./file-item.component";
5
- import * as i2 from "@angular/common";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "../../utils/dynamic.directive";
6
6
  export class FilePageComponent extends BaseAngular {
7
7
  getModel() {
8
8
  return this.page;
9
9
  }
10
10
  }
11
11
  FilePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
12
- FilePageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FilePageComponent, selector: "sv-ng-file-page", inputs: { page: "page", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"page.css\" [attr.id]=\"page.id\">\n <ng-container *ngFor=\"let item of page.items\">\n <sv-ng-file-item [item]=\"item\" [question]=\"question\"></sv-ng-file-item>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: i1.FileItemComponent, selector: "sv-ng-file-item", inputs: ["item", "question"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
12
+ FilePageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FilePageComponent, selector: "sv-ng-file-page", inputs: { page: "page", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"page.css\" [attr.id]=\"page.id\">\n <ng-container *ngFor=\"let item of page.items\">\n <ng-template [component]=\"{ name: 'sv-file-item', data: { item, question } }\"></ng-template>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
13
13
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{
@@ -22,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
22
22
  }], question: [{
23
23
  type: Input
24
24
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQVFqRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBNkI7SUFHN0MsUUFBUTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7K0dBTFEsaUJBQWlCO21HQUFqQixpQkFBaUIsOEhDVDlCLHVSQU1jOzRGREdELGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVksSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uLy4uL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uRmlsZVBhZ2UgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS1wYWdlLmNvbXBvbmVudC5odG1sXCIsXG4gIHNlbGVjdG9yOiBcInN2LW5nLWZpbGUtcGFnZVwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQYWdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUFuZ3VsYXI8UXVlc3Rpb25GaWxlUGFnZT4ge1xuICAgIEBJbnB1dCgpIHBhZ2UhOiBRdWVzdGlvbkZpbGVQYWdlO1xuICAgIEBJbnB1dCgpIHF1ZXN0aW9uITogUXVlc3Rpb25GaWxlTW9kZWw7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldE1vZGVsKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFnZTtcbiAgICB9XG59IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICA8ZGl2IFtjbGFzc109XCJwYWdlLmNzc1wiIFthdHRyLmlkXT1cInBhZ2UuaWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdlLml0ZW1zXCI+XG4gICAgICAgICAgICA8c3YtbmctZmlsZS1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIj48L3N2LW5nLWZpbGUtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2ZpbGUvZmlsZS1wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQVFqRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBNkI7SUFHN0MsUUFBUTtRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQzs7K0dBTFEsaUJBQWlCO21HQUFqQixpQkFBaUIsOEhDVDlCLDBTQU1jOzRGREdELGlCQUFpQjtrQkFMN0IsU0FBUzttQkFBQztvQkFDVCxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVksSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uLy4uL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgUXVlc3Rpb25GaWxlTW9kZWwsIFF1ZXN0aW9uRmlsZVBhZ2UgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiBcIi4vZmlsZS1wYWdlLmNvbXBvbmVudC5odG1sXCIsXG4gIHNlbGVjdG9yOiBcInN2LW5nLWZpbGUtcGFnZVwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVQYWdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUFuZ3VsYXI8UXVlc3Rpb25GaWxlUGFnZT4ge1xuICAgIEBJbnB1dCgpIHBhZ2UhOiBRdWVzdGlvbkZpbGVQYWdlO1xuICAgIEBJbnB1dCgpIHF1ZXN0aW9uITogUXVlc3Rpb25GaWxlTW9kZWw7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldE1vZGVsKCkge1xuICAgICAgcmV0dXJuIHRoaXMucGFnZTtcbiAgICB9XG59IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICA8ZGl2IFtjbGFzc109XCJwYWdlLmNzc1wiIFthdHRyLmlkXT1cInBhZ2UuaWRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwYWdlLml0ZW1zXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6ICdzdi1maWxlLWl0ZW0nLCBkYXRhOiB7IGl0ZW0sIHF1ZXN0aW9uIH0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,14 +1,16 @@
1
1
  import { Component, Input } from "@angular/core";
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../../survey-string.component";
4
- import * as i2 from "@angular/forms";
5
- import * as i3 from "@angular/common";
4
+ import * as i2 from "@angular/common";
6
5
  export class BooleanRadioItemComponent {
7
6
  constructor() {
8
7
  }
8
+ change() {
9
+ this.question.value = this.value;
10
+ }
9
11
  }
10
12
  BooleanRadioItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: { question: "question", value: "value", locText: "locText" }, ngImport: i0, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [(ngModel)]=\"question.booleanValue\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i2.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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
13
+ BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: { question: "question", value: "value", locText: "locText" }, ngImport: i0, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [checked]=\"question.value == value\" (input)=\"change()\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, decorators: [{
13
15
  type: Component,
14
16
  args: [{
@@ -22,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
22
24
  }], locText: [{
23
25
  type: Input
24
26
  }] } });
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlckFzL2Jvb2xlYW4tcmFkaW8vYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlckFzL2Jvb2xlYW4tcmFkaW8vYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQU1qRCxNQUFNLE9BQU8seUJBQXlCO0lBSXBDO0lBRUEsQ0FBQzs7dUhBTlUseUJBQXlCOzJHQUF6Qix5QkFBeUIsc0lDTnRDLDg2QkFtQkE7NEZEYmEseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEOzBFQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9jYWxpemFibGVTdHJpbmcsIFF1ZXN0aW9uQm9vbGVhbk1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctYm9vbGVhbi1yYWRpby1pdGVtXCIsXG4gIHRlbXBsYXRlVXJsOiBcImJvb2xlYW4tcmFkaW8taXRlbS5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuUmFkaW9JdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcXVlc3Rpb24hOiBRdWVzdGlvbkJvb2xlYW5Nb2RlbDtcbiAgQElucHV0KCkgdmFsdWUhOiBib29sZWFuO1xuICBASW5wdXQoKSBsb2NUZXh0ITogTG9jYWxpemFibGVTdHJpbmc7XG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gIH1cbn1cbiIsIjxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRSYWRpb0l0ZW1DbGFzcyhxdWVzdGlvbi5jc3NDbGFzc2VzLCB2YWx1ZSlcIj5cbiAgPGxhYmVsIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJhZGlvTGFiZWxcIj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICBbYXR0ci5uYW1lXT1cInF1ZXN0aW9uLm5hbWVcIiBbYXR0ci5hcmlhLWVycm9ybWVzc2FnZV09XCJxdWVzdGlvbi5hcmlhRXJyb3JtZXNzYWdlXCIgW3ZhbHVlXT1cInZhbHVlXCIgWyhuZ01vZGVsKV09XCJxdWVzdGlvbi5ib29sZWFuVmFsdWVcIlxuICAgICAgW2Rpc2FibGVkXT1cInF1ZXN0aW9uLmlzRGlzYWJsZWRBdHRyXCIgW3JlYWRvbmx5XT1cInF1ZXN0aW9uLmlzUmVhZE9ubHlBdHRyXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuaXRlbVJhZGlvQ29udHJvbCB8fCAnJ1wiXG4gICAgLz5cbiAgICA8c3BhbiAqbmdJZj1cInF1ZXN0aW9uLmNzc0NsYXNzZXMubWF0ZXJpYWxSYWRpb0RlY29yYXRvclwiIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLm1hdGVyaWFsUmFkaW9EZWNvcmF0b3JcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5pdGVtU3ZnSWNvblwiXG4gICAgICAgIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLml0ZW1SYWRpb0RlY29yYXRvclwiXG4gICAgICA+XG4gICAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJxdWVzdGlvbi5pdGVtU3ZnSWNvblwiPjwvdXNlPlxuICAgICAgPC9zdmc+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuIFtjbGFzc109XCJxdWVzdGlvbi5jc3NDbGFzc2VzLnJhZGlvQ29udHJvbExhYmVsXCIgW21vZGVsXT1cImxvY1RleHRcIiBzdi1uZy1zdHJpbmc+XG4gICAgPC9zcGFuPlxuICA8L2xhYmVsPlxuPC9kaXY+XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlckFzL2Jvb2xlYW4tcmFkaW8vYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlckFzL2Jvb2xlYW4tcmFkaW8vYm9vbGVhbi1yYWRpby1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBTWpELE1BQU0sT0FBTyx5QkFBeUI7SUFJcEM7SUFFQSxDQUFDO0lBQ00sTUFBTTtRQUNYLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQzs7dUhBVFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsc0lDTnRDLG04QkFtQkE7NEZEYmEseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwwQkFBMEI7b0JBQ3BDLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEOzBFQUVVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTG9jYWxpemFibGVTdHJpbmcsIFF1ZXN0aW9uQm9vbGVhbk1vZGVsIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctYm9vbGVhbi1yYWRpby1pdGVtXCIsXG4gIHRlbXBsYXRlVXJsOiBcImJvb2xlYW4tcmFkaW8taXRlbS5jb21wb25lbnQuaHRtbFwiLFxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuUmFkaW9JdGVtQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcXVlc3Rpb24hOiBRdWVzdGlvbkJvb2xlYW5Nb2RlbDtcbiAgQElucHV0KCkgdmFsdWUhOiBzdHJpbmcgfCBib29sZWFuO1xuICBASW5wdXQoKSBsb2NUZXh0ITogTG9jYWxpemFibGVTdHJpbmc7XG4gIGNvbnN0cnVjdG9yKCkge1xuXG4gIH1cbiAgcHVibGljIGNoYW5nZSgpIHtcbiAgICB0aGlzLnF1ZXN0aW9uLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgfVxufVxuIiwiPGRpdiByb2xlPVwicHJlc2VudGF0aW9uXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmdldFJhZGlvSXRlbUNsYXNzKHF1ZXN0aW9uLmNzc0NsYXNzZXMsIHZhbHVlKVwiPlxuICA8bGFiZWwgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmFkaW9MYWJlbFwiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgIFthdHRyLm5hbWVdPVwicXVlc3Rpb24ubmFtZVwiIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cInF1ZXN0aW9uLmFyaWFFcnJvcm1lc3NhZ2VcIiBbdmFsdWVdPVwidmFsdWVcIiBbY2hlY2tlZF09XCJxdWVzdGlvbi52YWx1ZSA9PSB2YWx1ZVwiIChpbnB1dCk9XCJjaGFuZ2UoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwicXVlc3Rpb24uaXNEaXNhYmxlZEF0dHJcIiBbcmVhZG9ubHldPVwicXVlc3Rpb24uaXNSZWFkT25seUF0dHJcIiBbY2xhc3NdPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5pdGVtUmFkaW9Db250cm9sIHx8ICcnXCJcbiAgICAvPlxuICAgIDxzcGFuICpuZ0lmPVwicXVlc3Rpb24uY3NzQ2xhc3Nlcy5tYXRlcmlhbFJhZGlvRGVjb3JhdG9yXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMubWF0ZXJpYWxSYWRpb0RlY29yYXRvclwiPlxuICAgICAgPHN2Z1xuICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLml0ZW1TdmdJY29uXCJcbiAgICAgICAgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuaXRlbVJhZGlvRGVjb3JhdG9yXCJcbiAgICAgID5cbiAgICAgICAgPHVzZSBbYXR0ci54bGluazpocmVmXT1cInF1ZXN0aW9uLml0ZW1TdmdJY29uXCI+PC91c2U+XG4gICAgICA8L3N2Zz5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW4gW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMucmFkaW9Db250cm9sTGFiZWxcIiBbbW9kZWxdPVwibG9jVGV4dFwiIHN2LW5nLXN0cmluZz5cbiAgICA8L3NwYW4+XG4gIDwvbGFiZWw+XG48L2Rpdj5cbiJdfQ==
@@ -7,7 +7,7 @@ import * as i2 from "@angular/common";
7
7
  export class BooleanRadioComponent {
8
8
  }
9
9
  BooleanRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"true\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"false\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"true\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: i1.BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
10
+ BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"model.getValueFalse()\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: i1.BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
11
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, decorators: [{
12
12
  type: Component,
13
13
  args: [{
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
19
19
  }] } });
20
20
  AngularComponentFactory.Instance.registerComponent("boolean-radio-question", BooleanRadioComponent);
21
21
  RendererFactory.Instance.registerRenderer("boolean", "radio", "boolean-radio-question");
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1yYWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXJBcy9ib29sZWFuLXJhZGlvL2Jvb2xlYW4tcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVuZGVyQXMvYm9vbGVhbi1yYWRpby9ib29sZWFuLXJhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBd0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0FBTXBFLE1BQU0sT0FBTyxxQkFBcUI7O21IQUFyQixxQkFBcUI7dUdBQXJCLHFCQUFxQixnR0NUbEMsdWxCQU9BOzRGREVhLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5Qzs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7O0FBR1IsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDcEcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkMsU0FBUyxFQUNULE9BQU8sRUFDUCx3QkFBd0IsQ0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgUXVlc3Rpb25Cb29sZWFuTW9kZWwsIFJlbmRlcmVyRmFjdG9yeSB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctYm9vbGVhbi1yYWRpby1xdWVzdGlvblwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Jvb2xlYW4tcmFkaW8uY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuUmFkaW9Db21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbCE6IFF1ZXN0aW9uQm9vbGVhbk1vZGVsO1xufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcImJvb2xlYW4tcmFkaW8tcXVlc3Rpb25cIiwgQm9vbGVhblJhZGlvQ29tcG9uZW50KTtcblJlbmRlcmVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlclJlbmRlcmVyKFxuICBcImJvb2xlYW5cIixcbiAgXCJyYWRpb1wiLFxuICBcImJvb2xlYW4tcmFkaW8tcXVlc3Rpb25cIlxuKTtcbiIsIjxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdFJhZGlvXCI+XG4gIDxmaWVsZHNldCByb2xlPVwicHJlc2VudGF0aW9uXCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucmFkaW9GaWVsZHNldFwiPlxuICAgIDxzdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0gKm5nSWY9XCJtb2RlbC5zd2FwT3JkZXJcIiBbdmFsdWVdPVwidHJ1ZVwiIFtsb2NUZXh0XT1cIm1vZGVsLmxvY0xhYmVsVHJ1ZVwiIFtxdWVzdGlvbl09XCJtb2RlbFwiID48L3N2LW5nLWJvb2xlYW4tcmFkaW8taXRlbT5cbiAgICA8c3YtbmctYm9vbGVhbi1yYWRpby1pdGVtICBbdmFsdWVdPVwiZmFsc2VcIiBbbG9jVGV4dF09XCJtb2RlbC5sb2NMYWJlbEZhbHNlXCIgW3F1ZXN0aW9uXT1cIm1vZGVsXCIgPjwvc3YtbmctYm9vbGVhbi1yYWRpby1pdGVtPlxuICAgIDxzdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0gKm5nSWY9XCIhbW9kZWwuc3dhcE9yZGVyXCIgW3ZhbHVlXT1cInRydWVcIiBbbG9jVGV4dF09XCJtb2RlbC5sb2NMYWJlbFRydWVcIiBbcXVlc3Rpb25dPVwibW9kZWxcIiA+PC9zdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi1yYWRpby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXJBcy9ib29sZWFuLXJhZGlvL2Jvb2xlYW4tcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcmVuZGVyQXMvYm9vbGVhbi1yYWRpby9ib29sZWFuLXJhZGlvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBd0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7O0FBTXBFLE1BQU0sT0FBTyxxQkFBcUI7O21IQUFyQixxQkFBcUI7dUdBQXJCLHFCQUFxQixnR0NUbEMsdW9CQU9BOzRGREVhLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsOEJBQThCO29CQUN4QyxXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5Qzs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7O0FBR1IsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDcEcsZUFBZSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDdkMsU0FBUyxFQUNULE9BQU8sRUFDUCx3QkFBd0IsQ0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuaW1wb3J0IHsgUXVlc3Rpb25Cb29sZWFuTW9kZWwsIFJlbmRlcmVyRmFjdG9yeSB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic3YtbmctYm9vbGVhbi1yYWRpby1xdWVzdGlvblwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2Jvb2xlYW4tcmFkaW8uY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBCb29sZWFuUmFkaW9Db21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbCE6IFF1ZXN0aW9uQm9vbGVhbk1vZGVsO1xufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcImJvb2xlYW4tcmFkaW8tcXVlc3Rpb25cIiwgQm9vbGVhblJhZGlvQ29tcG9uZW50KTtcblJlbmRlcmVyRmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlclJlbmRlcmVyKFxuICBcImJvb2xlYW5cIixcbiAgXCJyYWRpb1wiLFxuICBcImJvb2xlYW4tcmFkaW8tcXVlc3Rpb25cIlxuKTtcbiIsIjxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdFJhZGlvXCI+XG4gIDxmaWVsZHNldCByb2xlPVwicHJlc2VudGF0aW9uXCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucmFkaW9GaWVsZHNldFwiPlxuICAgIDxzdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0gKm5nSWY9XCJtb2RlbC5zd2FwT3JkZXJcIiBbdmFsdWVdPVwibW9kZWwuZ2V0VmFsdWVUcnVlKClcIiBbbG9jVGV4dF09XCJtb2RlbC5sb2NMYWJlbFRydWVcIiBbcXVlc3Rpb25dPVwibW9kZWxcIiA+PC9zdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0+XG4gICAgPHN2LW5nLWJvb2xlYW4tcmFkaW8taXRlbSAgW3ZhbHVlXT1cIm1vZGVsLmdldFZhbHVlRmFsc2UoKVwiIFtsb2NUZXh0XT1cIm1vZGVsLmxvY0xhYmVsRmFsc2VcIiBbcXVlc3Rpb25dPVwibW9kZWxcIiA+PC9zdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0+XG4gICAgPHN2LW5nLWJvb2xlYW4tcmFkaW8taXRlbSAqbmdJZj1cIiFtb2RlbC5zd2FwT3JkZXJcIiBbdmFsdWVdPVwibW9kZWwuZ2V0VmFsdWVUcnVlKClcIiBbbG9jVGV4dF09XCJtb2RlbC5sb2NMYWJlbFRydWVcIiBbcXVlc3Rpb25dPVwibW9kZWxcIiA+PC9zdi1uZy1ib29sZWFuLXJhZGlvLWl0ZW0+XG4gIDwvZmllbGRzZXQ+XG48L2Rpdj5cbiJdfQ==
@@ -7,7 +7,7 @@ import { icons as icons$1 } from 'survey-core/icons/iconsV2';
7
7
  import { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
8
8
  import * as i2 from '@angular/common';
9
9
  import { CommonModule } from '@angular/common';
10
- import * as i2$1 from '@angular/forms';
10
+ import * as i4 from '@angular/forms';
11
11
  import { FormsModule } from '@angular/forms';
12
12
  import * as i1 from '@angular/platform-browser';
13
13
 
@@ -1039,7 +1039,7 @@ class SurveyContentComponent extends BaseAngular {
1039
1039
  }
1040
1040
  }
1041
1041
  SurveyContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1042
- SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\" [lang]=\"model.locale || 'en'\" [dir]=\"model.localeDir\">\n <sv-scroll [disabled]=\"model.rootScrollDisabled\">\n <sv-svg-bundle *ngIf=\"model.needRenderIcons\"></sv-svg-bundle>\n <div [class]=\"model.wrapperFormCss\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <sv-scroll [disabled]=\"model.formScrollDisabled\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.headerView === 'basic' && model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div class=\"sv-components-column sv-components-column--expandable\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'center' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml | safeHtml\"></div>\n <ng-template *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'completePage' } }\"></ng-template>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml | safeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </sv-scroll>\n </form>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n </sv-scroll>\n </div>\n</ng-template>", components: [{ type: ScrollComponent, selector: "sv-scroll", inputs: ["disabled", "onInnerHeightChanged"] }, { type: SvgBundleComponent, selector: "sv-svg-bundle" }, { type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
1042
+ SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\" [lang]=\"model.locale || 'en'\" [dir]=\"model.localeDir\">\n <sv-scroll [disabled]=\"model.rootScrollDisabled\">\n <sv-svg-bundle *ngIf=\"model.needRenderIcons\"></sv-svg-bundle>\n <div [class]=\"model.wrapperFormCss\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <sv-scroll [disabled]=\"model.formScrollDisabled\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.headerView === 'basic' && model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div class=\"sv-components-column sv-components-column--expandable\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'center' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml | safeHtml\"></div>\n <ng-template *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'completePage' } }\"></ng-template>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml | safeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </sv-scroll>\n </form>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n </sv-scroll>\n </div>\n</ng-template>", components: [{ type: ScrollComponent, selector: "sv-scroll", inputs: ["disabled", "onInnerHeightChanged"] }, { type: SvgBundleComponent, selector: "sv-svg-bundle" }, { type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
1043
1043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, decorators: [{
1044
1044
  type: Component,
1045
1045
  args: [{
@@ -1548,7 +1548,7 @@ class DropdownComponent extends BaseAngular {
1548
1548
  }
1549
1549
  }
1550
1550
  DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1551
- DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.selectWrapper\" (click)=\"click($event)\">\n <div *ngIf=\"!model.isReadOnly\" [attr.tabindex]=\"dropdownModel.noTabIndex ? null : 0\"\n [class]=\"model.getControlClass()\" [attr.disabled]=\"model.isDisabledAttr ? true : null\" (blur)=\"blur($event)\"\n (keydown)=\"keyhandler($event)\" [attr.id]=\"model.inputId\" [attr.role]=\"dropdownModel.ariaQuestionRole\"\n [attr.aria-required]=\"dropdownModel.ariaQuestionRequired\"\n [attr.aria-invalid]=\"dropdownModel.ariaQuestionInvalid\"\n [attr.aria-errormessage]=\"dropdownModel.ariaQuestionErrorMessage\"\n [attr.aria-expanded]=\"dropdownModel.ariaQuestionExpanded\" [attr.aria-label]=\"dropdownModel.ariaQuestionLabel\"\n [attr.aria-labelledby]=\"dropdownModel.ariaQuestionLabelledby\"\n [attr.aria-describedby]=\"dropdownModel.ariaQuestionDescribedby\"\n [attr.aria-controls]=\"dropdownModel.ariaQuestionControls\"\n [attr.aria-activedescendant]=\"dropdownModel.ariaQuestionActivedescendant\">\n <div *ngIf=\"dropdownModel.showHintPrefix\" [class]=\"model.cssClasses.hintPrefix\">\n <span>{{ dropdownModel.hintStringPrefix }}</span>\n </div>\n <div [class]=\"model.cssClasses.controlValue\">\n <div *ngIf=\"dropdownModel.showHintString\" [class]=\"model.cssClasses.hintSuffix\">\n <span style=\"visibility: hidden\">{{ dropdownModel.inputStringRendered }}</span>\n <span>{{ dropdownModel.hintStringSuffix }}</span>\n </div>\n <ng-container *ngIf=\"dropdownModel.showInputFieldComponent\">\n <ng-template\n [component]=\"{ name: model.inputFieldComponentName, data: { model: dropdownModel.getSelectedAction(), question: model } }\"></ng-template>\n </ng-container>\n <sv-ng-string *ngIf=\"model.showSelectedItemLocText\" [model]=\"model.selectedItemLocText\"></sv-ng-string>\n <input #inputElement *ngIf=\"dropdownModel.needRenderInput\" type=\"text\" autocomplete=\"off\" [(ngModel)]=\"dropdownModel.inputStringRendered\"\n [class]=\"model.cssClasses.filterStringInput\" [attr.id]=\"model.getInputId()\"\n [attr.inputmode]=\"dropdownModel.inputMode\" [attr.tabindex]=\"dropdownModel.noTabIndex ? null : -1\"\n [attr.disabled]=\"model.isDisabledAttr ? true : null\" [attr.role]=\"dropdownModel.ariaInputRole\"\n [attr.aria-required]=\"dropdownModel.ariaInputRequired\"\n [attr.aria-invalid]=\"dropdownModel.ariaInputInvalid\"\n [attr.aria-errormessage]=\"dropdownModel.ariaInputErrorMessage\"\n [attr.aria-expanded]=\"dropdownModel.ariaInputExpanded\"\n [attr.aria-controls]=\"dropdownModel.ariaInputControls\" [attr.aria-label]=\"dropdownModel.ariaInputLabel\"\n [attr.aria-labelledby]=\"dropdownModel.ariaInputLabelledby\"\n [attr.aria-describedby]=\"dropdownModel.ariaInputDescribedby\"\n [attr.aria-activedescendant]=\"dropdownModel.ariaInputActivedescendant\"\n [attr.placeholder]=\"dropdownModel.placeholderRendered\"\n [attr.readonly]=\"dropdownModel.filterReadOnly ? true : null\" (change)=\"inputChange($event)\"\n (blur)=\"blur($event)\" (focus)=\"focus($event)\" />\n </div>\n <sv-ng-action-bar [model]=\"dropdownModel.editorButtons\"></sv-ng-action-bar>\n </div>\n <sv-ng-popup *ngIf=\"!model.isInputReadOnly\" [popupModel]=\"dropdownModel.popupModel\"></sv-ng-popup>\n <div *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\"\n [attr.tabindex]=\"model.isDisabledAttr ? null : 0\" [attr.disabled]=\"model.isDisabledAttr ? true : null\"\n [attr.role]=\"dropdownModel?.ariaQuestionRole\" [attr.aria-label]=\"dropdownModel?.ariaQuestionLabel\"\n [attr.aria-labelledby]=\"dropdownModel?.ariaQuestionLabelledby\"\n [attr.aria-describedby]=\"dropdownModel?.ariaQuestionDescribedby\" [attr.aria-expanded]=\"false\"\n [attr.aria-readonly]=\"true\" [attr.aria-disabled]=\"true\">\n <div [class]=\"model.cssClasses.controlValue\">\n <sv-ng-string *ngIf=\"model.locReadOnlyText\" [model]=\"model.locReadOnlyText\"></sv-ng-string>\n </div>\n <sv-ng-action-bar [model]=\"dropdownModel.editorButtons\"></sv-ng-action-bar>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { 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"] }] });
1551
+ DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.selectWrapper\" (click)=\"click($event)\">\n <div *ngIf=\"!model.isReadOnly\" [attr.tabindex]=\"dropdownModel.noTabIndex ? null : 0\"\n [class]=\"model.getControlClass()\" [attr.disabled]=\"model.isDisabledAttr ? true : null\" (blur)=\"blur($event)\"\n (keydown)=\"keyhandler($event)\" [attr.id]=\"model.inputId\" [attr.role]=\"dropdownModel.ariaQuestionRole\"\n [attr.aria-required]=\"dropdownModel.ariaQuestionRequired\"\n [attr.aria-invalid]=\"dropdownModel.ariaQuestionInvalid\"\n [attr.aria-errormessage]=\"dropdownModel.ariaQuestionErrorMessage\"\n [attr.aria-expanded]=\"dropdownModel.ariaQuestionExpanded\" [attr.aria-label]=\"dropdownModel.ariaQuestionLabel\"\n [attr.aria-labelledby]=\"dropdownModel.ariaQuestionLabelledby\"\n [attr.aria-describedby]=\"dropdownModel.ariaQuestionDescribedby\"\n [attr.aria-controls]=\"dropdownModel.ariaQuestionControls\"\n [attr.aria-activedescendant]=\"dropdownModel.ariaQuestionActivedescendant\">\n <div *ngIf=\"dropdownModel.showHintPrefix\" [class]=\"model.cssClasses.hintPrefix\">\n <span>{{ dropdownModel.hintStringPrefix }}</span>\n </div>\n <div [class]=\"model.cssClasses.controlValue\">\n <div *ngIf=\"dropdownModel.showHintString\" [class]=\"model.cssClasses.hintSuffix\">\n <span style=\"visibility: hidden\">{{ dropdownModel.inputStringRendered }}</span>\n <span>{{ dropdownModel.hintStringSuffix }}</span>\n </div>\n <ng-container *ngIf=\"dropdownModel.showInputFieldComponent\">\n <ng-template\n [component]=\"{ name: model.inputFieldComponentName, data: { model: dropdownModel.getSelectedAction(), question: model } }\"></ng-template>\n </ng-container>\n <sv-ng-string *ngIf=\"model.showSelectedItemLocText\" [model]=\"model.selectedItemLocText\"></sv-ng-string>\n <input #inputElement *ngIf=\"dropdownModel.needRenderInput\" type=\"text\" autocomplete=\"off\" [(ngModel)]=\"dropdownModel.inputStringRendered\"\n [class]=\"model.cssClasses.filterStringInput\" [attr.id]=\"model.getInputId()\"\n [attr.inputmode]=\"dropdownModel.inputMode\" [attr.tabindex]=\"dropdownModel.noTabIndex ? null : -1\"\n [attr.disabled]=\"model.isDisabledAttr ? true : null\" [attr.role]=\"dropdownModel.ariaInputRole\"\n [attr.aria-required]=\"dropdownModel.ariaInputRequired\"\n [attr.aria-invalid]=\"dropdownModel.ariaInputInvalid\"\n [attr.aria-errormessage]=\"dropdownModel.ariaInputErrorMessage\"\n [attr.aria-expanded]=\"dropdownModel.ariaInputExpanded\"\n [attr.aria-controls]=\"dropdownModel.ariaInputControls\" [attr.aria-label]=\"dropdownModel.ariaInputLabel\"\n [attr.aria-labelledby]=\"dropdownModel.ariaInputLabelledby\"\n [attr.aria-describedby]=\"dropdownModel.ariaInputDescribedby\"\n [attr.aria-activedescendant]=\"dropdownModel.ariaInputActivedescendant\"\n [attr.placeholder]=\"dropdownModel.placeholderRendered\"\n [attr.readonly]=\"dropdownModel.filterReadOnly ? true : null\" (change)=\"inputChange($event)\"\n (blur)=\"blur($event)\" (focus)=\"focus($event)\" />\n </div>\n <sv-ng-action-bar [model]=\"dropdownModel.editorButtons\"></sv-ng-action-bar>\n </div>\n <sv-ng-popup *ngIf=\"!model.isInputReadOnly\" [popupModel]=\"dropdownModel.popupModel\"></sv-ng-popup>\n <div *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\"\n [attr.tabindex]=\"model.isDisabledAttr ? null : 0\" [attr.disabled]=\"model.isDisabledAttr ? true : null\"\n [attr.role]=\"dropdownModel?.ariaQuestionRole\" [attr.aria-label]=\"dropdownModel?.ariaQuestionLabel\"\n [attr.aria-labelledby]=\"dropdownModel?.ariaQuestionLabelledby\"\n [attr.aria-describedby]=\"dropdownModel?.ariaQuestionDescribedby\" [attr.aria-expanded]=\"false\"\n [attr.aria-readonly]=\"true\" [attr.aria-disabled]=\"true\">\n <div [class]=\"model.cssClasses.controlValue\">\n <sv-ng-string *ngIf=\"model.locReadOnlyText\" [model]=\"model.locReadOnlyText\"></sv-ng-string>\n </div>\n <sv-ng-action-bar [model]=\"dropdownModel.editorButtons\"></sv-ng-action-bar>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1552
1552
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownComponent, decorators: [{
1553
1553
  type: Component,
1554
1554
  args: [{
@@ -1568,7 +1568,7 @@ class TagboxFilterComponent extends BaseAngular {
1568
1568
  }
1569
1569
  }
1570
1570
  TagboxFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1571
- 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 type=\"text\" autocomplete=\"off\" [(ngModel)]=\"model.inputStringRendered\" [attr.id]=\"question.getInputId()\"\n [class]=\"question.cssClasses.filterStringInput\" [attr.inputmode]=\"model.inputMode\"\n [attr.readonly]=\"model.filterReadOnly ? true : null\" [attr.disabled]=\"question.isDisabledAttr ? true : null\"\n [attr.size]=\"!model.inputStringRendered ? 1 : null\" [attr.role]=\"model.ariaInputRole\"\n [attr.aria-required]=\"model.ariaInputRequired\" [attr.aria-invalid]=\"model.ariaInputInvalid\"\n [attr.aria-errormessage]=\"model.ariaInputErrorMessage\" [attr.aria-expanded]=\"model.ariaInputExpanded\"\n [attr.aria-label]=\"model.ariaInputLabel\" [attr.aria-labelledby]=\"model.ariaInputLabelledby\"\n [attr.aria-describedby]=\"model.ariaInputDescribedby\" [attr.aria-controls]=\"model.ariaInputControls\"\n [attr.aria-activedescendant]=\"model.ariaInputActivedescendant\"\n [attr.placeholder]=\"model.filterStringPlaceholder\" (keydown)=\"model.inputKeyHandler($event)\"\n (blur)=\"question.onBlur($event)\" (focus)=\"question.onFocus($event)\" />\n </div>\n </div>\n</ng-template>", 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"] }] });
1571
+ 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 type=\"text\" autocomplete=\"off\" [(ngModel)]=\"model.inputStringRendered\" [attr.id]=\"question.getInputId()\"\n [class]=\"question.cssClasses.filterStringInput\" [attr.inputmode]=\"model.inputMode\"\n [attr.readonly]=\"model.filterReadOnly ? true : null\" [attr.disabled]=\"question.isDisabledAttr ? true : null\"\n [attr.size]=\"!model.inputStringRendered ? 1 : null\" [attr.role]=\"model.ariaInputRole\"\n [attr.aria-required]=\"model.ariaInputRequired\" [attr.aria-invalid]=\"model.ariaInputInvalid\"\n [attr.aria-errormessage]=\"model.ariaInputErrorMessage\" [attr.aria-expanded]=\"model.ariaInputExpanded\"\n [attr.aria-label]=\"model.ariaInputLabel\" [attr.aria-labelledby]=\"model.ariaInputLabelledby\"\n [attr.aria-describedby]=\"model.ariaInputDescribedby\" [attr.aria-controls]=\"model.ariaInputControls\"\n [attr.aria-activedescendant]=\"model.ariaInputActivedescendant\"\n [attr.placeholder]=\"model.filterStringPlaceholder\" (keydown)=\"model.inputKeyHandler($event)\"\n (blur)=\"question.onBlur($event)\" (focus)=\"question.onFocus($event)\" />\n </div>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1572
1572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, decorators: [{
1573
1573
  type: Component,
1574
1574
  args: [{
@@ -1671,7 +1671,7 @@ class DropdownOptionItemComponent extends BaseAngular {
1671
1671
  }
1672
1672
  }
1673
1673
  DropdownOptionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownOptionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1674
- DropdownOptionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownOptionItemComponent, selector: "sv-ng-dropdown-option-item, '[sv-ng-dropdown-option-item]'", inputs: { item: "item" }, usesInheritance: true, ngImport: i0, template: '<ng-template #template><option [value]="item.value" [disabled]="!item.isEnabled">{{ item.text }}</option><ng-template>', isInline: true, directives: [{ type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1674
+ DropdownOptionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownOptionItemComponent, selector: "sv-ng-dropdown-option-item, '[sv-ng-dropdown-option-item]'", inputs: { item: "item" }, usesInheritance: true, ngImport: i0, template: '<ng-template #template><option [value]="item.value" [disabled]="!item.isEnabled">{{ item.text }}</option><ng-template>', isInline: true, directives: [{ type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1675
1675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownOptionItemComponent, decorators: [{
1676
1676
  type: Component,
1677
1677
  args: [{
@@ -1727,7 +1727,7 @@ class DropdownSelectComponent {
1727
1727
  }
1728
1728
  }
1729
1729
  DropdownSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1730
- DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownSelectComponent, selector: "sv-ng-dropdown-select-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\">\n <div [class]=\"model.cssClasses.selectWrapper\">\n <select *ngIf=\"!model.isReadOnly\" [attr.id]=\"model.inputId\" [(ngModel)]=\"editableValue\"\n [disabled]=\"model.isInputReadOnly\" (click)=\"click($event)\" (keyup)=\"keyup($event)\"\n [class]=\"model.getControlClass()\" [attr.autocomplete]=\"model.autocomplete\" [required]=\"model.isRequired\"\n [attr.aria-required]=\"model.a11y_input_ariaRequired\" [attr.aria-label]=\"model.a11y_input_ariaLabel\"\n [attr.aria-invalid]=\"model.a11y_input_ariaInvalid\" [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\">\n <option *ngIf=\"model.allowClear\" value=\"\">{{ model.placeholder }}</option>\n <ng-template *ngFor=\"let item of model.visibleChoices\"\n [component]=\"{ name: 'sv-dropdown-option-item', data: { item } }\"></ng-template>\n </select>\n <div *ngIf=\"model.isReadOnly\" disabled [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{\n model.readOnlyText }}</div>\n <div *ngIf=\"model.cssClasses.chevronButtonIconId\" [class]=\"model.cssClasses.chevronButton\" aria-hidden=\"true\">\n <svg [iconName]=\"model.cssClasses.chevronButtonIconId\" [partCss]=\"model.cssClasses.chevronButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <div *ngIf=\"model.isShowingChoiceComment\" [class]=\"model.getCommentAreaCss(true)\"\n [style.display]=\"model.isFlowLayout ? 'inline': '' \" [question]=\"model\" [item]=\"model.selectedItem\" sv-ng-comment-choice></div>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyCommentChoiceComponent, selector: "sv-ng-comment-choice, '[sv-ng-comment-choice]'", inputs: ["question", "item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }, { type: i2$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1730
+ DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownSelectComponent, selector: "sv-ng-dropdown-select-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\">\n <div [class]=\"model.cssClasses.selectWrapper\">\n <select *ngIf=\"!model.isReadOnly\" [attr.id]=\"model.inputId\" [(ngModel)]=\"editableValue\"\n [disabled]=\"model.isInputReadOnly\" (click)=\"click($event)\" (keyup)=\"keyup($event)\"\n [class]=\"model.getControlClass()\" [attr.autocomplete]=\"model.autocomplete\" [required]=\"model.isRequired\"\n [attr.aria-required]=\"model.a11y_input_ariaRequired\" [attr.aria-label]=\"model.a11y_input_ariaLabel\"\n [attr.aria-invalid]=\"model.a11y_input_ariaInvalid\" [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\">\n <option *ngIf=\"model.allowClear\" value=\"\">{{ model.placeholder }}</option>\n <ng-template *ngFor=\"let item of model.visibleChoices\"\n [component]=\"{ name: 'sv-dropdown-option-item', data: { item } }\"></ng-template>\n </select>\n <div *ngIf=\"model.isReadOnly\" disabled [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{\n model.readOnlyText }}</div>\n <div *ngIf=\"model.cssClasses.chevronButtonIconId\" [class]=\"model.cssClasses.chevronButton\" aria-hidden=\"true\">\n <svg [iconName]=\"model.cssClasses.chevronButtonIconId\" [partCss]=\"model.cssClasses.chevronButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <div *ngIf=\"model.isShowingChoiceComment\" [class]=\"model.getCommentAreaCss(true)\"\n [style.display]=\"model.isFlowLayout ? 'inline': '' \" [question]=\"model\" [item]=\"model.selectedItem\" sv-ng-comment-choice></div>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyCommentChoiceComponent, selector: "sv-ng-comment-choice, '[sv-ng-comment-choice]'", inputs: ["question", "item"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1731
1731
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownSelectComponent, decorators: [{
1732
1732
  type: Component,
1733
1733
  args: [{
@@ -1830,7 +1830,7 @@ class TextQuestionComponent extends QuestionAngular {
1830
1830
  }
1831
1831
  }
1832
1832
  TextQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1833
- TextQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextQuestionComponent, selector: "sv-ng-text-question", viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: " <ng-container [ngTemplateOutlet]=\"input\" *ngIf=\"!model.dataListId && !model.isReadOnlyRenderDiv()\"></ng-container>\n <div *ngIf=\"model.dataListId && !model.isReadOnlyRenderDiv()\">\n <ng-container [ngTemplateOutlet]=\"input\"></ng-container>\n <datalist [id]=\"model.dataListId\">\n <option *ngFor=\"let dataListItem of model.dataList\" [value]=\"dataListItem\"></option>\n </datalist>\n </div>\n <div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ value }}</div>\n <ng-template #input>\n <input #inputElement [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\" [attr.list]=\"model.dataListId\" (click)=\"model.readOnlyBlocker($event)\" (pointerdown)=\"model.readOnlyBlocker($event)\" \n (change)=\"model.onChange($event)\" [value]=\"value\" [disabled]=\"model.isDisabledAttr\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder\"\n (keyup)=\"model.onKeyUp($event)\" (keydown)=\"model.onKeyDown($event)\" (blur)=\"blur($event)\" (focus)=\"model.onFocus($event)\" (compositionupdate)=\"model.onCompositionUpdate($event)\" \n [attr.size] = \"model.renderedInputSize\" [attr.maxlength]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\" [readonly]=\"model.isReadOnlyAttr\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.a11y_input_ariaRequired\"\n [attr.aria-label]=\"model.a11y_input_ariaLabel\" [attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\" [attr.aria-describedby]=\"model.a11y_input_ariaDescribedBy\"[attr.aria-invalid]=\"model.a11y_input_ariaInvalid\" [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\" [attr.autocomplete]=\"model.autocomplete\" #contentElement/>\n <sv-ng-character-counter *ngIf=\"model.getMaxLength()\" \n [counter]=\"model.characterCounter\"\n [remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n </sv-ng-character-counter>\n </ng-template>", styles: [""], components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1833
+ TextQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextQuestionComponent, selector: "sv-ng-text-question", viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: " <ng-container [ngTemplateOutlet]=\"input\" *ngIf=\"!model.dataListId && !model.isReadOnlyRenderDiv()\"></ng-container>\n <div *ngIf=\"model.dataListId && !model.isReadOnlyRenderDiv()\">\n <ng-container [ngTemplateOutlet]=\"input\"></ng-container>\n <datalist [id]=\"model.dataListId\">\n <option *ngFor=\"let dataListItem of model.dataList\" [value]=\"dataListItem\"></option>\n </datalist>\n </div>\n <div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ value }}</div>\n <ng-template #input>\n <input #inputElement [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\" [attr.list]=\"model.dataListId\" (click)=\"model.readOnlyBlocker($event)\" (pointerdown)=\"model.readOnlyBlocker($event)\" \n (change)=\"model.onChange($event)\" [value]=\"value\" [disabled]=\"model.isDisabledAttr\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder\"\n (keyup)=\"model.onKeyUp($event)\" (keydown)=\"model.onKeyDown($event)\" (blur)=\"blur($event)\" (focus)=\"model.onFocus($event)\" (compositionupdate)=\"model.onCompositionUpdate($event)\" \n [attr.size] = \"model.renderedInputSize\" [attr.maxlength]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\" [readonly]=\"model.isReadOnlyAttr\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.a11y_input_ariaRequired\"\n [attr.aria-label]=\"model.a11y_input_ariaLabel\" [attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\" [attr.aria-describedby]=\"model.a11y_input_ariaDescribedBy\"[attr.aria-invalid]=\"model.a11y_input_ariaInvalid\" [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\" [attr.autocomplete]=\"model.autocomplete\" #contentElement/>\n <sv-ng-character-counter *ngIf=\"model.getMaxLength()\" \n [counter]=\"model.characterCounter\"\n [remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n </sv-ng-character-counter>\n </ng-template>", styles: [""], components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1834
1834
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextQuestionComponent, decorators: [{
1835
1835
  type: Component,
1836
1836
  args: [{
@@ -1943,7 +1943,7 @@ class RadiogroupItemComponent {
1943
1943
  }
1944
1944
  }
1945
1945
  RadiogroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1946
- RadiogroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: { question: "question", model: "model", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<input type=\"radio\" [name]=\"question.questionName\" [attr.name]=\"question.questionName\" [id]=\"question.getItemId(model)\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [readonly]=\"question.isReadOnlyAttr\" [(ngModel)]=\"renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\" [attr.aria-label]=\"ariaLabel\"\n/>\n<ng-content></ng-content>", styles: [""], directives: [{ type: i2$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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"] }] });
1946
+ RadiogroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: { question: "question", model: "model", ariaLabel: "ariaLabel" }, ngImport: i0, template: "<input type=\"radio\" [name]=\"question.questionName\" [attr.name]=\"question.questionName\" [id]=\"question.getItemId(model)\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [readonly]=\"question.isReadOnlyAttr\" [(ngModel)]=\"renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\" [attr.aria-label]=\"ariaLabel\"\n/>\n<ng-content></ng-content>", styles: [""], directives: [{ type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1947
1947
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupItemComponent, decorators: [{
1948
1948
  type: Component,
1949
1949
  args: [{
@@ -2051,7 +2051,7 @@ class BooleanQuestionComponent extends QuestionAngular {
2051
2051
  }
2052
2052
  }
2053
2053
  BooleanQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2054
- BooleanQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanQuestionComponent, selector: "sv-ng-boolean-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" (keydown)=\"model.onKeyDownCore($event)\" #contentElement>\n <label [class]=\"model.getItemCss()\">\n <input\n type=\"checkbox\"\n [attr.name]=\"model.name\" [attr.id]=\"model.inputId\" \n [attr.role]=\"model.a11y_input_ariaRole\"\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 [class]=\"model.cssClasses.control\" [disabled]=\"model.isDisabledAttr\" [readonly]=\"model.isReadOnlyAttr\" [indeterminate]=\"model.isIndeterminate\" [value]=\"model.booleanValue\" [(ngModel)]=\"model.booleanValue\" />\n <div [class]=\"model.cssClasses.sliderGhost\" (click)=\"model.onLabelClick($event, model.swapOrder)\">\n <span [class]=\"model.getLabelCss(model.swapOrder)\" [model]=\"model.locLabelLeft\" sv-ng-string></span>\n </div>\n <div [class]=\"model.cssClasses.switch\" (click)=\"model.onSwitchClickModel($event)\">\n <span [class]=\"model.cssClasses.slider\">\n <span *ngIf=\"model.cssClasses.sliderText && model.isDeterminated\" [class]=\"model.cssClasses.sliderText\" [model]=\"model.getCheckedLabel()\" sv-ng-string></span>\n </span>\n </div>\n <div [class]=\"model.cssClasses.sliderGhost\" (click)=\"model.onLabelClick($event, !model.swapOrder)\">\n <span [class]=\"model.getLabelCss(!model.swapOrder)\" [model]=\"model.locLabelRight\" sv-ng-string></span>\n </div>\n </label>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2054
+ BooleanQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanQuestionComponent, selector: "sv-ng-boolean-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" (keydown)=\"model.onKeyDownCore($event)\" #contentElement>\n <label [class]=\"model.getItemCss()\">\n <input\n type=\"checkbox\"\n [attr.name]=\"model.name\" [attr.id]=\"model.inputId\" \n [attr.role]=\"model.a11y_input_ariaRole\"\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 [class]=\"model.cssClasses.control\" [disabled]=\"model.isDisabledAttr\" [readonly]=\"model.isReadOnlyAttr\" [indeterminate]=\"model.isIndeterminate\" [value]=\"model.booleanValue\" [(ngModel)]=\"model.booleanValue\" />\n <div [class]=\"model.cssClasses.sliderGhost\" (click)=\"model.onLabelClick($event, model.swapOrder)\">\n <span [class]=\"model.getLabelCss(model.swapOrder)\" [model]=\"model.locLabelLeft\" sv-ng-string></span>\n </div>\n <div [class]=\"model.cssClasses.switch\" (click)=\"model.onSwitchClickModel($event)\">\n <span [class]=\"model.cssClasses.slider\">\n <span *ngIf=\"model.cssClasses.sliderText && model.isDeterminated\" [class]=\"model.cssClasses.sliderText\" [model]=\"model.getCheckedLabel()\" sv-ng-string></span>\n </span>\n </div>\n <div [class]=\"model.cssClasses.sliderGhost\" (click)=\"model.onLabelClick($event, !model.swapOrder)\">\n <span [class]=\"model.getLabelCss(!model.swapOrder)\" [model]=\"model.locLabelRight\" sv-ng-string></span>\n </div>\n </label>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2055
2055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanQuestionComponent, decorators: [{
2056
2056
  type: Component,
2057
2057
  args: [{
@@ -2213,7 +2213,7 @@ class ButtonGroupItemComponent extends BaseAngular {
2213
2213
  }
2214
2214
  }
2215
2215
  ButtonGroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2216
- ButtonGroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ButtonGroupItemComponent, selector: "sv-button-group-item", inputs: { item: "item", question: "question", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #template>\n <label [class]=\"model.css.label\" [attr.title]=\"model.caption.renderedHtml\">\n <input type=\"radio\"\n [attr.name]=\"model.name\" [attr.id]=\"model.id\" [attr.aria-required]=\"model.isRequired\" [attr.aria-label]=\"model.caption.renderedHtml\" [attr.aria-invalid]=\"model.hasErrors\" [attr.aria-errormessage]=\"model.describedBy\" [disabled]=\"model.readOnly\" [class]=\"model.css.control\" [(ngModel)]=\"question.renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\"/>\n <div [class]=\"model.css.decorator\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [class]=\"model.css.icon\" sv-ng-svg-icon></svg>\n <span [class]=\"model.css.caption\" *ngIf=\"model.showCaption\" [attr.title]=\"model.caption.renderedHtml\" sv-ng-string [model]=\"model.caption\">\n </span>\n </div>\n </label>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2216
+ ButtonGroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ButtonGroupItemComponent, selector: "sv-button-group-item", inputs: { item: "item", question: "question", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #template>\n <label [class]=\"model.css.label\" [attr.title]=\"model.caption.renderedHtml\">\n <input type=\"radio\"\n [attr.name]=\"model.name\" [attr.id]=\"model.id\" [attr.aria-required]=\"model.isRequired\" [attr.aria-label]=\"model.caption.renderedHtml\" [attr.aria-invalid]=\"model.hasErrors\" [attr.aria-errormessage]=\"model.describedBy\" [disabled]=\"model.readOnly\" [class]=\"model.css.control\" [(ngModel)]=\"question.renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\"/>\n <div [class]=\"model.css.decorator\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [class]=\"model.css.icon\" sv-ng-svg-icon></svg>\n <span [class]=\"model.css.caption\" *ngIf=\"model.showCaption\" [attr.title]=\"model.caption.renderedHtml\" sv-ng-string [model]=\"model.caption\">\n </span>\n </div>\n </label>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2217
2217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupItemComponent, decorators: [{
2218
2218
  type: Component,
2219
2219
  args: [{
@@ -2574,7 +2574,7 @@ class ListComponent extends BaseAngular {
2574
2574
  }
2575
2575
  }
2576
2576
  ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2577
- ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ListComponent, selector: "sv-ng-list, '[sv-ng-list]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "listContainerElement", first: true, predicate: ["listContainerElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.root\" #listContainerElement>\n <div *ngIf=\"model.showFilter\" [class]=\"model.cssClasses.filter\">\n <div [class]=\"model.cssClasses.filterIcon\">\n <svg [iconName]=\"'icon-search'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" [class]=\"model.cssClasses.filterInput\" [(ngModel)]=\"model.filterString\"\n [attr.aria-label]=\"model.filterStringPlaceholder || ''\"\n [attr.placeholder]=\"model.filterStringPlaceholder || ''\" \n (keyup)=\"onGoToItems($event)\" />\n <button *ngIf=\"model.showSearchClearButton && !!model.filterString\" (click)=\"model.onClickSearchClearButton($event)\" [class]=\"model.cssClasses.searchClearButtonIcon\">\n <svg [iconName]=\"'icon-searchclear'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n </div>\n <div [class]=\"model.cssClasses.emptyContainer\" [visible]=\"model.isEmpty\">\n <div [class]=\"model.cssClasses.emptyText\" [attr.aria-label]=\"model.emptyMessage || ''\">{{ model.emptyMessage }}</div>\n </div>\n <ul *ngIf=\"model.renderElements\" [class]=\"model.getListClass()\" [attr.role]=\"model.listRole\" [attr.aria-label]=\"model.a11ya11y_input_ariaLabel\" [attr.id]=\"model.elementId\" [visible]=\"!model.isEmpty\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\" (mousemove)=\"onMouseMove($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions; trackBy: trackItemBy\" [listModel]=\"model\" [model]=\"item\"></sv-ng-list-item>\n <!--ko foreach: model.renderedActions -->\n <!-- ko component: { name: 'sv-list-item', params: { item: $data, model: $parent.model } } -->\n <!-- /ko -->\n <!-- /ko -->\n </ul>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: ListItemComponent, selector: "sv-ng-list-item, '[sv-ng-list-item]'", inputs: ["element", "model", "listModel"] }], 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"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2577
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ListComponent, selector: "sv-ng-list, '[sv-ng-list]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "listContainerElement", first: true, predicate: ["listContainerElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.root\" #listContainerElement>\n <div *ngIf=\"model.showFilter\" [class]=\"model.cssClasses.filter\">\n <div [class]=\"model.cssClasses.filterIcon\">\n <svg [iconName]=\"'icon-search'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" [class]=\"model.cssClasses.filterInput\" [(ngModel)]=\"model.filterString\"\n [attr.aria-label]=\"model.filterStringPlaceholder || ''\"\n [attr.placeholder]=\"model.filterStringPlaceholder || ''\" \n (keyup)=\"onGoToItems($event)\" />\n <button *ngIf=\"model.showSearchClearButton && !!model.filterString\" (click)=\"model.onClickSearchClearButton($event)\" [class]=\"model.cssClasses.searchClearButtonIcon\">\n <svg [iconName]=\"'icon-searchclear'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n </div>\n <div [class]=\"model.cssClasses.emptyContainer\" [visible]=\"model.isEmpty\">\n <div [class]=\"model.cssClasses.emptyText\" [attr.aria-label]=\"model.emptyMessage || ''\">{{ model.emptyMessage }}</div>\n </div>\n <ul *ngIf=\"model.renderElements\" [class]=\"model.getListClass()\" [attr.role]=\"model.listRole\" [attr.aria-label]=\"model.a11ya11y_input_ariaLabel\" [attr.id]=\"model.elementId\" [visible]=\"!model.isEmpty\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\" (mousemove)=\"onMouseMove($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions; trackBy: trackItemBy\" [listModel]=\"model\" [model]=\"item\"></sv-ng-list-item>\n <!--ko foreach: model.renderedActions -->\n <!-- ko component: { name: 'sv-list-item', params: { item: $data, model: $parent.model } } -->\n <!-- /ko -->\n <!-- /ko -->\n </ul>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: ListItemComponent, selector: "sv-ng-list-item, '[sv-ng-list-item]'", inputs: ["element", "model", "listModel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2578
2578
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, decorators: [{
2579
2579
  type: Component,
2580
2580
  args: [{
@@ -2763,7 +2763,7 @@ RendererFactory.Instance.registerRenderer("rating", "dropdown", "rating-dropdown
2763
2763
  class BooleanCheckboxComponent {
2764
2764
  }
2765
2765
  BooleanCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2766
- BooleanCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanCheckboxComponent, selector: "sv-ng-boolean-checkbox-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootCheckbox\">\n <div [class]=\"model.getCheckboxItemCss()\">\n <label [class]=\"model.cssClasses.checkboxLabel\">\n <input\n type=\"checkbox\"\n [value]=\"model.booleanValue\" [class]=\"model.cssClasses.controlCheckbox\" \n [attr.name]=\"model.name\" [id]=\"model.inputId\"\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 [(ngModel)]=\"model.booleanValue\" [value]=\"model.booleanValue\"\n [disabled]=\"model.isDisabledAttr\" [readonly]=\"model.isReadOnlyAttr\" [indeterminate]=\"model.isIndeterminate\"\n />\n <span [class]=\"model.cssClasses.checkboxMaterialDecorator\">\n <svg *ngIf=\"!!model.svgIcon\" [class]=\"model.cssClasses.checkboxItemDecorator\">\n <use [attr.xlink:href]=\"model.svgIcon\"></use>\n </svg>\n <span class=\"check\"></span>\n </span>\n <span *ngIf=\"model.isLabelRendered\" [class]=\"model.cssClasses.checkboxControlLabel\" [id]=\"model.labelRenderedAriaID\">\n <sv-ng-element-title-actions [element]=\"model\"></sv-ng-element-title-actions>\n </span>\n </label>\n <div *ngIf=\"model.canRenderLabelDescription\" [class]=\"model.cssDescription\" [attr.id]=\"model.ariaDescriptionId\" [model]=\"model.locDescription\" sv-ng-string></div>\n </div>\n</div>", components: [{ type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2766
+ BooleanCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanCheckboxComponent, selector: "sv-ng-boolean-checkbox-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootCheckbox\">\n <div [class]=\"model.getCheckboxItemCss()\">\n <label [class]=\"model.cssClasses.checkboxLabel\">\n <input\n type=\"checkbox\"\n [value]=\"model.booleanValue\" [class]=\"model.cssClasses.controlCheckbox\" \n [attr.name]=\"model.name\" [id]=\"model.inputId\"\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 [(ngModel)]=\"model.booleanValue\" [value]=\"model.booleanValue\"\n [disabled]=\"model.isDisabledAttr\" [readonly]=\"model.isReadOnlyAttr\" [indeterminate]=\"model.isIndeterminate\"\n />\n <span [class]=\"model.cssClasses.checkboxMaterialDecorator\">\n <svg *ngIf=\"!!model.svgIcon\" [class]=\"model.cssClasses.checkboxItemDecorator\">\n <use [attr.xlink:href]=\"model.svgIcon\"></use>\n </svg>\n <span class=\"check\"></span>\n </span>\n <span *ngIf=\"model.isLabelRendered\" [class]=\"model.cssClasses.checkboxControlLabel\" [id]=\"model.labelRenderedAriaID\">\n <sv-ng-element-title-actions [element]=\"model\"></sv-ng-element-title-actions>\n </span>\n </label>\n <div *ngIf=\"model.canRenderLabelDescription\" [class]=\"model.cssDescription\" [attr.id]=\"model.ariaDescriptionId\" [model]=\"model.locDescription\" sv-ng-string></div>\n </div>\n</div>", components: [{ type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2767
2767
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanCheckboxComponent, decorators: [{
2768
2768
  type: Component,
2769
2769
  args: [{
@@ -2779,9 +2779,12 @@ RendererFactory.Instance.registerRenderer("boolean", "checkbox", "boolean-checkb
2779
2779
  class BooleanRadioItemComponent {
2780
2780
  constructor() {
2781
2781
  }
2782
+ change() {
2783
+ this.question.value = this.value;
2784
+ }
2782
2785
  }
2783
2786
  BooleanRadioItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2784
- BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: { question: "question", value: "value", locText: "locText" }, ngImport: i0, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [(ngModel)]=\"question.booleanValue\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2$1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2787
+ BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: { question: "question", value: "value", locText: "locText" }, ngImport: i0, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [checked]=\"question.value == value\" (input)=\"change()\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2785
2788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, decorators: [{
2786
2789
  type: Component,
2787
2790
  args: [{
@@ -2799,7 +2802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
2799
2802
  class BooleanRadioComponent {
2800
2803
  }
2801
2804
  BooleanRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2802
- BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"true\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"false\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"true\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2805
+ BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"model.getValueFalse()\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2803
2806
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, decorators: [{
2804
2807
  type: Component,
2805
2808
  args: [{
@@ -3002,42 +3005,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
3002
3005
  }] } });
3003
3006
  AngularComponentFactory.Instance.registerComponent("sv-nav-btn", SurveyNavigationButton);
3004
3007
 
3005
- class FileItemComponent extends EmbeddedViewContentComponent {
3008
+ class FilePageComponent extends BaseAngular {
3009
+ getModel() {
3010
+ return this.page;
3011
+ }
3006
3012
  }
3007
- FileItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3008
- FileItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FileItemComponent, selector: "sv-ng-file-item", inputs: { item: "item", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <span [class]=\"question.cssClasses.previewItem\" (click)=\"question.doDownloadFileFromContainer($event)\">\n <div *ngIf=\"item.name && question.cssClasses.fileSign\" [class]=\"question.cssClasses.fileSign\">\n <a (click)=\"question.doDownloadFile($event, item)\" [attr.href]=\"item.content | safeUrl\"\n [attr.title]=\"item.name\" [attr.download]=\"item.name\" [style.width]=\"question.imageWidth\">{{\n item.name\n }}</a>\n </div>\n <div [class]=\"question.getImageWrapperCss(item)\">\n <img *ngIf=\"question.canPreviewImage(item)\" [attr.src]=\"item.content | safeUrl\"\n [style.height]=\"question.imageHeight\" [style.width]=\"question.imageWidth\" alt=\"File preview\" />\n <svg *ngIf=\"question.defaultImage(item)\" [iconName]=\"question.cssClasses.defaultImageIconId\"\n [partCss]=\"question.cssClasses.defaultImage\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n <div *ngIf=\"item.name && !question.isReadOnly\" [class]=\"question.getRemoveButtonCss()\"\n (click)=\"question.doRemoveFile(item, $event)\">\n <span [class]=\"question.cssClasses.removeFile\">{{ question.removeFileCaption }}</span>\n <svg *ngIf=\"question.cssClasses.removeFileSvgIconId\" [title]=\"question.removeFileCaption\"\n [partCss]=\"question.cssClasses.removeFileSvg\" [iconName]=\"question.cssClasses.removeFileSvgIconId\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <div *ngIf=\"item.name && question.cssClasses.fileSignBottom\" [class]=\"question.cssClasses.fileSignBottom\">\n <a (click)=\"question.doDownloadFile($event, item)\" [attr.href]=\"item.content | safeUrl\"\n [attr.title]=\"item.name\" [attr.download]=\"item.name\" [style.width]=\"question.imageWidth\">{{\n item.name\n }}</a>\n </div>\n </span>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeUrl": SafeUrlPipe } });
3009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileItemComponent, decorators: [{
3013
+ FilePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3014
+ FilePageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FilePageComponent, selector: "sv-ng-file-page", inputs: { page: "page", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"page.css\" [attr.id]=\"page.id\">\n <ng-container *ngFor=\"let item of page.items\">\n <ng-template [component]=\"{ name: 'sv-file-item', data: { item, question } }\"></ng-template>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
3015
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, decorators: [{
3010
3016
  type: Component,
3011
3017
  args: [{
3012
- templateUrl: "./file-item.component.html",
3013
- selector: "sv-ng-file-item",
3018
+ templateUrl: "./file-page.component.html",
3019
+ selector: "sv-ng-file-page",
3014
3020
  styleUrls: ["../../hide-host.scss"]
3015
3021
  }]
3016
- }], propDecorators: { item: [{
3022
+ }], propDecorators: { page: [{
3017
3023
  type: Input
3018
3024
  }], question: [{
3019
3025
  type: Input
3020
3026
  }] } });
3021
3027
 
3022
- class FilePageComponent extends BaseAngular {
3023
- getModel() {
3024
- return this.page;
3025
- }
3028
+ class FileItemComponent extends EmbeddedViewContentComponent {
3026
3029
  }
3027
- FilePageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3028
- FilePageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FilePageComponent, selector: "sv-ng-file-page", inputs: { page: "page", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"page.css\" [attr.id]=\"page.id\">\n <ng-container *ngFor=\"let item of page.items\">\n <sv-ng-file-item [item]=\"item\" [question]=\"question\"></sv-ng-file-item>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: FileItemComponent, selector: "sv-ng-file-item", inputs: ["item", "question"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
3029
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FilePageComponent, decorators: [{
3030
+ FileItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3031
+ FileItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: FileItemComponent, selector: "sv-ng-file-item", inputs: { item: "item", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <span [class]=\"question.cssClasses.previewItem\" (click)=\"question.doDownloadFileFromContainer($event)\">\n <div *ngIf=\"item.name && question.cssClasses.fileSign\" [class]=\"question.cssClasses.fileSign\">\n <a (click)=\"question.doDownloadFile($event, item)\" [attr.href]=\"item.content | safeUrl\"\n [attr.title]=\"item.name\" [attr.download]=\"item.name\" [style.width]=\"question.imageWidth\">{{\n item.name\n }}</a>\n </div>\n <div [class]=\"question.getImageWrapperCss(item)\">\n <img *ngIf=\"question.canPreviewImage(item)\" [attr.src]=\"item.content | safeUrl\"\n [style.height]=\"question.imageHeight\" [style.width]=\"question.imageWidth\" alt=\"File preview\" />\n <svg *ngIf=\"question.defaultImage(item)\" [iconName]=\"question.cssClasses.defaultImageIconId\"\n [partCss]=\"question.cssClasses.defaultImage\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n <div *ngIf=\"item.name && !question.isReadOnly\" [class]=\"question.getRemoveButtonCss()\"\n (click)=\"question.doRemoveFile(item, $event)\">\n <span [class]=\"question.cssClasses.removeFile\">{{ question.removeFileCaption }}</span>\n <svg *ngIf=\"question.cssClasses.removeFileSvgIconId\" [title]=\"question.removeFileCaption\"\n [partCss]=\"question.cssClasses.removeFileSvg\" [iconName]=\"question.cssClasses.removeFileSvgIconId\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <div *ngIf=\"item.name && question.cssClasses.fileSignBottom\" [class]=\"question.cssClasses.fileSignBottom\">\n <a (click)=\"question.doDownloadFile($event, item)\" [attr.href]=\"item.content | safeUrl\"\n [attr.title]=\"item.name\" [attr.download]=\"item.name\" [style.width]=\"question.imageWidth\">{{\n item.name\n }}</a>\n </div>\n </span>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeUrl": SafeUrlPipe } });
3032
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileItemComponent, decorators: [{
3030
3033
  type: Component,
3031
3034
  args: [{
3032
- templateUrl: "./file-page.component.html",
3033
- selector: "sv-ng-file-page",
3035
+ templateUrl: "./file-item.component.html",
3036
+ selector: "sv-ng-file-item",
3034
3037
  styleUrls: ["../../hide-host.scss"]
3035
3038
  }]
3036
- }], propDecorators: { page: [{
3039
+ }], propDecorators: { item: [{
3037
3040
  type: Input
3038
3041
  }], question: [{
3039
3042
  type: Input
3040
3043
  }] } });
3044
+ AngularComponentFactory.Instance.registerComponent("sv-file-item", FileItemComponent);
3041
3045
 
3042
3046
  class FilePreviewComponent extends EmbeddedViewContentComponent {
3043
3047
  constructor() {