survey-angular-ui 1.9.43 → 1.9.44

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.
Files changed (188) hide show
  1. package/README.md +214 -214
  2. package/angular-ui.d.ts +27 -0
  3. package/angular-ui.module.d.ts +92 -0
  4. package/base-angular.d.ts +25 -0
  5. package/comment.component.d.ts +8 -0
  6. package/component-factory.d.ts +9 -0
  7. package/components/action-bar/action-bar-item-dropdown.component.d.ts +12 -0
  8. package/components/action-bar/action-bar-item.component.d.ts +8 -0
  9. package/components/action-bar/action-bar.component.d.ts +16 -0
  10. package/components/action-bar/action.component.d.ts +11 -0
  11. package/components/brand-info/brand-info.component.d.ts +5 -0
  12. package/components/dropdown/dropdown.component.d.ts +16 -0
  13. package/components/element-header/element-header.component.d.ts +9 -0
  14. package/components/element-title/dynamic-head.component.d.ts +10 -0
  15. package/components/element-title/element-title.component.d.ts +7 -0
  16. package/components/list/list-item.component.d.ts +16 -0
  17. package/components/list/list.component.d.ts +11 -0
  18. package/components/matrix-actions/detail-button/detail-button.component.d.ts +11 -0
  19. package/components/matrix-actions/drag-drop-icon/drag-drop-icon.d.ts +10 -0
  20. package/components/matrix-actions/remove-button/remove-button.component.d.ts +10 -0
  21. package/components/paneldynamic-actions/paneldynamic-add-btn.component.d.ts +14 -0
  22. package/components/paneldynamic-actions/paneldynamic-next-btn.component.d.ts +7 -0
  23. package/components/paneldynamic-actions/paneldynamic-prev-btn.component.d.ts +7 -0
  24. package/components/paneldynamic-actions/paneldynamic-progress-text.component.d.ts +6 -0
  25. package/components/popup/popup-container.component.d.ts +16 -0
  26. package/components/popup/popup.component.d.ts +17 -0
  27. package/components/popup/popup.service.d.ts +13 -0
  28. package/components/progress/buttons/progress.component.d.ts +24 -0
  29. package/components/progress/default/progress.component.d.ts +9 -0
  30. package/components/renderAs/boolean-checkbox/boolean-checkbox.component.d.ts +6 -0
  31. package/components/renderAs/boolean-radio/boolean-radio-item.component.d.ts +10 -0
  32. package/components/renderAs/boolean-radio/boolean-radio.component.d.ts +7 -0
  33. package/components/renderAs/dropdown-select/dropdown-option-item.component.d.ts +8 -0
  34. package/components/renderAs/dropdown-select/dropdown-select.component.d.ts +10 -0
  35. package/components/renderAs/rating-dropdown/rating-dropdown.component.d.ts +6 -0
  36. package/components/skeleton.component.d.ts +6 -0
  37. package/components/survey-actions/survey-nav-btn.component.d.ts +10 -0
  38. package/components/survey-header/survey-header.component.d.ts +11 -0
  39. package/components/svg-icon/svg-icon.component.d.ts +20 -0
  40. package/components/tagbox/tagbox-item.component.d.ts +11 -0
  41. package/components/tagbox/tagbox.component.d.ts +16 -0
  42. package/element.component.d.ts +9 -0
  43. package/embedded-view-content.component.d.ts +11 -0
  44. package/errors.component.d.ts +19 -0
  45. package/esm2020/angular-ui.mjs +28 -0
  46. package/esm2020/angular-ui.module.mjs +138 -0
  47. package/esm2020/base-angular.mjs +101 -0
  48. package/esm2020/comment.component.mjs +16 -0
  49. package/esm2020/component-factory.mjs +26 -0
  50. package/esm2020/components/action-bar/action-bar-item-dropdown.component.mjs +32 -0
  51. package/esm2020/components/action-bar/action-bar-item.component.mjs +22 -0
  52. package/esm2020/components/action-bar/action-bar.component.mjs +43 -0
  53. package/esm2020/components/action-bar/action.component.mjs +27 -0
  54. package/esm2020/components/brand-info/brand-info.component.mjs +13 -0
  55. package/esm2020/components/dropdown/dropdown.component.mjs +39 -0
  56. package/esm2020/components/element-header/element-header.component.mjs +30 -0
  57. package/esm2020/components/element-title/dynamic-head.component.mjs +20 -0
  58. package/esm2020/components/element-title/element-title.component.mjs +18 -0
  59. package/esm2020/components/list/list-item.component.mjs +44 -0
  60. package/esm2020/components/list/list.component.mjs +32 -0
  61. package/esm2020/components/matrix-actions/detail-button/detail-button.component.mjs +25 -0
  62. package/esm2020/components/matrix-actions/drag-drop-icon/drag-drop-icon.mjs +24 -0
  63. package/esm2020/components/matrix-actions/remove-button/remove-button.component.mjs +25 -0
  64. package/esm2020/components/paneldynamic-actions/paneldynamic-add-btn.component.mjs +35 -0
  65. package/esm2020/components/paneldynamic-actions/paneldynamic-next-btn.component.mjs +18 -0
  66. package/esm2020/components/paneldynamic-actions/paneldynamic-prev-btn.component.mjs +18 -0
  67. package/esm2020/components/paneldynamic-actions/paneldynamic-progress-text.component.mjs +14 -0
  68. package/esm2020/components/popup/popup-container.component.mjs +48 -0
  69. package/esm2020/components/popup/popup.component.mjs +37 -0
  70. package/esm2020/components/popup/popup.service.mjs +26 -0
  71. package/esm2020/components/progress/buttons/progress.component.mjs +67 -0
  72. package/esm2020/components/progress/default/progress.component.mjs +27 -0
  73. package/esm2020/components/renderAs/boolean-checkbox/boolean-checkbox.component.mjs +20 -0
  74. package/esm2020/components/renderAs/boolean-radio/boolean-radio-item.component.mjs +22 -0
  75. package/esm2020/components/renderAs/boolean-radio/boolean-radio.component.mjs +18 -0
  76. package/esm2020/components/renderAs/dropdown-select/dropdown-option-item.component.mjs +23 -0
  77. package/esm2020/components/renderAs/dropdown-select/dropdown-select.component.mjs +38 -0
  78. package/esm2020/components/renderAs/rating-dropdown/rating-dropdown.component.mjs +18 -0
  79. package/esm2020/components/skeleton.component.mjs +15 -0
  80. package/esm2020/components/survey-actions/survey-nav-btn.component.mjs +22 -0
  81. package/esm2020/components/survey-header/survey-header.component.mjs +23 -0
  82. package/esm2020/components/svg-icon/svg-icon.component.mjs +68 -0
  83. package/esm2020/components/tagbox/tagbox-item.component.mjs +27 -0
  84. package/esm2020/components/tagbox/tagbox.component.mjs +40 -0
  85. package/esm2020/element.component.mjs +18 -0
  86. package/esm2020/embedded-view-content.component.mjs +24 -0
  87. package/esm2020/errors.component.mjs +58 -0
  88. package/esm2020/page.component.mjs +34 -0
  89. package/esm2020/panel.component.mjs +37 -0
  90. package/esm2020/question.component.mjs +41 -0
  91. package/esm2020/question.mjs +33 -0
  92. package/esm2020/questions/boolean.component.mjs +20 -0
  93. package/esm2020/questions/checkbox-item.component.mjs +36 -0
  94. package/esm2020/questions/checkbox.component.mjs +17 -0
  95. package/esm2020/questions/comment.component.mjs +18 -0
  96. package/esm2020/questions/composite.component.mjs +21 -0
  97. package/esm2020/questions/custom.component.mjs +27 -0
  98. package/esm2020/questions/customwidget.component.mjs +51 -0
  99. package/esm2020/questions/dropdown.component.mjs +17 -0
  100. package/esm2020/questions/expression.component.mjs +17 -0
  101. package/esm2020/questions/file.component.mjs +25 -0
  102. package/esm2020/questions/html.component.mjs +25 -0
  103. package/esm2020/questions/image.component.mjs +16 -0
  104. package/esm2020/questions/imagepicker-item.component.mjs +45 -0
  105. package/esm2020/questions/imagepicker.component.mjs +16 -0
  106. package/esm2020/questions/matrix.component.mjs +35 -0
  107. package/esm2020/questions/matrixcell.component.mjs +60 -0
  108. package/esm2020/questions/matrixdropdown.component.mjs +16 -0
  109. package/esm2020/questions/matrixdynamic.component.mjs +17 -0
  110. package/esm2020/questions/matrixrequiredheader.component.mjs +24 -0
  111. package/esm2020/questions/matrixtable.component.mjs +29 -0
  112. package/esm2020/questions/multipletext.component.mjs +25 -0
  113. package/esm2020/questions/multipletextitem.component.mjs +23 -0
  114. package/esm2020/questions/paneldynamic.component.mjs +55 -0
  115. package/esm2020/questions/radiogroup-item.component.mjs +18 -0
  116. package/esm2020/questions/radiogroup.component.mjs +22 -0
  117. package/esm2020/questions/ranking-item.component.mjs +22 -0
  118. package/esm2020/questions/ranking.component.mjs +22 -0
  119. package/esm2020/questions/rating.component.mjs +23 -0
  120. package/esm2020/questions/selectbase-item.mjs +32 -0
  121. package/esm2020/questions/selectbase.component.mjs +24 -0
  122. package/esm2020/questions/signature.component.mjs +17 -0
  123. package/esm2020/questions/tagbox.component.mjs +17 -0
  124. package/esm2020/questions/text.component.mjs +26 -0
  125. package/esm2020/row.component.mjs +22 -0
  126. package/esm2020/string-editor.component.mjs +26 -0
  127. package/esm2020/string-viewer.component.mjs +32 -0
  128. package/esm2020/survey-angular-ui.mjs +5 -0
  129. package/esm2020/survey-string.component.mjs +17 -0
  130. package/esm2020/survey.component.mjs +50 -0
  131. package/esm2020/utils/dynamic.directive.mjs +44 -0
  132. package/esm2020/utils/ng-key2click.directive.mjs +69 -0
  133. package/esm2020/utils/ng-show.directive.mjs +27 -0
  134. package/esm2020/utils/safe-html.pipe.mjs +18 -0
  135. package/esm2020/utils/safe-url.pipe.mjs +33 -0
  136. package/fesm2015/survey-angular-ui.mjs +2201 -0
  137. package/fesm2015/survey-angular-ui.mjs.map +1 -0
  138. package/fesm2020/survey-angular-ui.mjs +2181 -0
  139. package/fesm2020/survey-angular-ui.mjs.map +1 -0
  140. package/package.json +1 -11
  141. package/page.component.d.ts +14 -0
  142. package/panel.component.d.ts +13 -0
  143. package/question.component.d.ts +13 -0
  144. package/question.d.ts +13 -0
  145. package/questions/boolean.component.d.ts +8 -0
  146. package/questions/checkbox-item.component.d.ts +11 -0
  147. package/questions/checkbox.component.d.ts +7 -0
  148. package/questions/comment.component.d.ts +8 -0
  149. package/questions/composite.component.d.ts +8 -0
  150. package/questions/custom.component.d.ts +10 -0
  151. package/questions/customwidget.component.d.ts +18 -0
  152. package/questions/dropdown.component.d.ts +7 -0
  153. package/questions/expression.component.d.ts +7 -0
  154. package/questions/file.component.d.ts +8 -0
  155. package/questions/html.component.d.ts +9 -0
  156. package/questions/image.component.d.ts +7 -0
  157. package/questions/imagepicker-item.component.d.ts +14 -0
  158. package/questions/imagepicker.component.d.ts +7 -0
  159. package/questions/matrix.component.d.ts +11 -0
  160. package/questions/matrixcell.component.d.ts +20 -0
  161. package/questions/matrixdropdown.component.d.ts +7 -0
  162. package/questions/matrixdynamic.component.d.ts +7 -0
  163. package/questions/matrixrequiredheader.component.d.ts +10 -0
  164. package/questions/matrixtable.component.d.ts +12 -0
  165. package/questions/multipletext.component.d.ts +9 -0
  166. package/questions/multipletextitem.component.d.ts +10 -0
  167. package/questions/paneldynamic.component.d.ts +12 -0
  168. package/questions/radiogroup-item.component.d.ts +8 -0
  169. package/questions/radiogroup.component.d.ts +8 -0
  170. package/questions/ranking-item.component.d.ts +11 -0
  171. package/questions/ranking.component.d.ts +8 -0
  172. package/questions/rating.component.d.ts +9 -0
  173. package/questions/selectbase-item.d.ts +12 -0
  174. package/questions/selectbase.component.d.ts +10 -0
  175. package/questions/signature.component.d.ts +7 -0
  176. package/questions/tagbox.component.d.ts +7 -0
  177. package/questions/text.component.d.ts +9 -0
  178. package/row.component.d.ts +10 -0
  179. package/string-editor.component.d.ts +9 -0
  180. package/string-viewer.component.d.ts +13 -0
  181. package/survey-angular-ui.d.ts +5 -5
  182. package/survey-string.component.d.ts +7 -0
  183. package/survey.component.d.ts +16 -0
  184. package/utils/dynamic.directive.d.ts +19 -0
  185. package/utils/ng-key2click.directive.d.ts +21 -0
  186. package/utils/ng-show.directive.d.ts +12 -0
  187. package/utils/safe-html.pipe.d.ts +10 -0
  188. package/utils/safe-url.pipe.d.ts +17 -0
@@ -0,0 +1,2201 @@
1
+ import * as i0 from '@angular/core';
2
+ import { TemplateRef, Component, ViewChild, Input, Directive, ViewContainerRef, Pipe, ElementRef, HostBinding, HostListener, Injectable, NgModule } from '@angular/core';
3
+ import * as Survey from 'survey-core';
4
+ import { SvgRegistry, TooltipManager, LocalizableString, PopupBaseViewModel, DropdownListModel, RendererFactory, doKey2ClickDown, doKey2ClickUp, doKey2ClickBlur, ActionDropdownViewModel, SurveyProgressModel, SurveyProgressButtonsModel } from 'survey-core';
5
+ import * as i3 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i1 from '@angular/platform-browser';
8
+ import * as i2 from '@angular/forms';
9
+ import { FormsModule } from '@angular/forms';
10
+ import { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
11
+
12
+ class EmbeddedViewContentComponent {
13
+ constructor(viewContainerRef) {
14
+ this.viewContainerRef = viewContainerRef;
15
+ }
16
+ ngOnInit() {
17
+ var _a;
18
+ if (!!this.templateRef) {
19
+ this.embeddedView = (_a = this.viewContainerRef) === null || _a === void 0 ? void 0 : _a.createEmbeddedView(this.templateRef);
20
+ }
21
+ }
22
+ }
23
+ EmbeddedViewContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: EmbeddedViewContentComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
24
+ EmbeddedViewContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: EmbeddedViewContentComponent, selector: "ng-component", viewQueries: [{ propertyName: "templateRef", first: true, predicate: ["template"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "", isInline: true });
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: EmbeddedViewContentComponent, decorators: [{
26
+ type: Component,
27
+ args: [{
28
+ template: "",
29
+ }]
30
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { templateRef: [{
31
+ type: ViewChild,
32
+ args: ["template", { read: TemplateRef, static: true }]
33
+ }] } });
34
+
35
+ class BaseAngular extends EmbeddedViewContentComponent {
36
+ constructor(changeDetectorRef, viewContainerRef) {
37
+ super(viewContainerRef);
38
+ this.changeDetectorRef = changeDetectorRef;
39
+ this.isModelSubsribed = false;
40
+ }
41
+ ngDoCheck() {
42
+ if (this.previousModel !== this.getModel()) {
43
+ this.unMakeBaseElementAngular(this.previousModel);
44
+ this.previousModel = this.getModel();
45
+ this.makeBaseElementAngular(this.getModel());
46
+ this.onModelChanged();
47
+ }
48
+ this.beforeUpdate();
49
+ }
50
+ onModelChanged() { }
51
+ setIsRendering(val) {
52
+ const model = this.getModel();
53
+ if (!!model) {
54
+ model.isRendering = val;
55
+ }
56
+ }
57
+ getIsRendering() {
58
+ const model = this.getModel();
59
+ return !!model && !!model.isRendering;
60
+ }
61
+ ngOnDestroy() {
62
+ this.unMakeBaseElementAngular(this.getModel());
63
+ }
64
+ makeBaseElementAngular(stateElement) {
65
+ if (!!stateElement && !stateElement.__ngImplemented) {
66
+ this.isModelSubsribed = true;
67
+ stateElement.__ngImplemented = true;
68
+ stateElement.iteratePropertiesHash((hash, key) => {
69
+ var val = hash[key];
70
+ if (Array.isArray(val)) {
71
+ var val = val;
72
+ val["onArrayChanged"] = (arrayChanges) => {
73
+ this.update();
74
+ };
75
+ }
76
+ });
77
+ stateElement.setPropertyValueCoreHandler = (hash, key, val) => {
78
+ if (hash[key] !== val) {
79
+ hash[key] = val;
80
+ this.update();
81
+ }
82
+ };
83
+ }
84
+ }
85
+ unMakeBaseElementAngular(stateElement) {
86
+ if (!!stateElement && this.isModelSubsribed) {
87
+ this.isModelSubsribed = false;
88
+ stateElement.__ngImplemented = false;
89
+ stateElement.setPropertyValueCoreHandler = undefined;
90
+ stateElement.iteratePropertiesHash((hash, key) => {
91
+ var val = hash[key];
92
+ if (Array.isArray(val)) {
93
+ var val = val;
94
+ val["onArrayChanged"] = () => { };
95
+ }
96
+ });
97
+ }
98
+ }
99
+ update() {
100
+ if (this.getIsRendering())
101
+ return;
102
+ this.beforeUpdate();
103
+ this.detectChanges();
104
+ this.afterUpdate();
105
+ }
106
+ detectChanges() {
107
+ if (!!this.embeddedView) {
108
+ this.embeddedView.detectChanges();
109
+ }
110
+ else {
111
+ this.changeDetectorRef.detectChanges();
112
+ }
113
+ }
114
+ beforeUpdate() {
115
+ this.setIsRendering(true);
116
+ }
117
+ afterUpdate() {
118
+ this.setIsRendering(false);
119
+ }
120
+ ngAfterViewChecked() {
121
+ this.afterUpdate();
122
+ }
123
+ }
124
+ BaseAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BaseAngular, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
125
+ BaseAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: BaseAngular, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "", isInline: true });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BaseAngular, decorators: [{
127
+ type: Component,
128
+ args: [{
129
+ template: ""
130
+ }]
131
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }]; } });
132
+
133
+ class DynamicHeadComponent extends EmbeddedViewContentComponent {
134
+ get ariaLabel() {
135
+ return this.element.getType() !== "radiogroup" ? this.element.locTitle.renderedHtml : null;
136
+ }
137
+ }
138
+ DynamicHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DynamicHeadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
139
+ DynamicHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DynamicHeadComponent, selector: "sv-ng-dynamic-head", inputs: { tagName: "tagName", element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ng-container [ngSwitch]=\"tagName\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h1>\n <h2 *ngSwitchCase=\"'h2'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h2>\n <h3 *ngSwitchCase=\"'h3'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h3>\n <h4 *ngSwitchCase=\"'h4'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h4>\n <h5 *ngSwitchCase=\"'h5'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h5>\n <h6 *ngSwitchCase=\"'h6'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h6>\n </ng-container>\n <ng-template #titleContent>\n <ng-content></ng-content>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DynamicHeadComponent, decorators: [{
141
+ type: Component,
142
+ args: [{ selector: "sv-ng-dynamic-head", template: "<ng-template #template>\n <ng-container [ngSwitch]=\"tagName\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h1>\n <h2 *ngSwitchCase=\"'h2'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h2>\n <h3 *ngSwitchCase=\"'h3'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h3>\n <h4 *ngSwitchCase=\"'h4'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h4>\n <h5 *ngSwitchCase=\"'h5'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h5>\n <h6 *ngSwitchCase=\"'h6'\"[class]=\"element.cssTitle\" [id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h6>\n </ng-container>\n <ng-template #titleContent>\n <ng-content></ng-content>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"] }]
143
+ }], propDecorators: { tagName: [{
144
+ type: Input
145
+ }], element: [{
146
+ type: Input
147
+ }] } });
148
+
149
+ class AngularComponentFactory {
150
+ constructor() {
151
+ this.creatorHash = {};
152
+ }
153
+ registerComponent(typeName, componentType) {
154
+ this.creatorHash[typeName] = componentType;
155
+ }
156
+ getAllTypes() {
157
+ var result = new Array();
158
+ for (var key in this.creatorHash) {
159
+ result.push(key);
160
+ }
161
+ return result.sort();
162
+ }
163
+ isComponentRegistered(elementType) {
164
+ return !!this.creatorHash[elementType];
165
+ }
166
+ create(containerRef, elementType, params) {
167
+ var componentType = this.creatorHash[elementType];
168
+ if (!componentType)
169
+ return null;
170
+ return containerRef.createComponent(componentType);
171
+ }
172
+ }
173
+ AngularComponentFactory.Instance = new AngularComponentFactory();
174
+
175
+ class DynamicComponentDirective {
176
+ constructor(containerRef) {
177
+ this.containerRef = containerRef;
178
+ }
179
+ ngOnChanges(changes) {
180
+ var _a;
181
+ const componentChanges = changes["component"];
182
+ if (componentChanges.currentValue.name !== ((_a = componentChanges.previousValue) === null || _a === void 0 ? void 0 : _a.name)) {
183
+ this.createComponent();
184
+ }
185
+ else {
186
+ this.updateComponentData();
187
+ }
188
+ }
189
+ createComponent() {
190
+ this.containerRef.clear();
191
+ if (AngularComponentFactory.Instance.isComponentRegistered(this.component.name)) {
192
+ this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.name).instance;
193
+ }
194
+ else if (this.component.default) {
195
+ this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.default).instance;
196
+ }
197
+ this.updateComponentData();
198
+ }
199
+ updateComponentData() {
200
+ const data = this.component.data;
201
+ Object.keys(data).forEach((key) => {
202
+ this.componentInstance[key] = data[key];
203
+ });
204
+ }
205
+ }
206
+ DynamicComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DynamicComponentDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
207
+ DynamicComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: DynamicComponentDirective, selector: "[component]", inputs: { component: "component" }, usesOnChanges: true, ngImport: i0 });
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DynamicComponentDirective, decorators: [{
209
+ type: Directive,
210
+ args: [{
211
+ selector: "[component]"
212
+ }]
213
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { component: [{
214
+ type: Input
215
+ }] } });
216
+
217
+ class ActionComponent extends BaseAngular {
218
+ getModel() {
219
+ return this.model;
220
+ }
221
+ getComponentName() {
222
+ return this.model.component || "sv-action-bar-item";
223
+ }
224
+ }
225
+ ActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
226
+ ActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ActionComponent, selector: "sv-ng-action", inputs: { model: "model" }, viewQueries: [{ propertyName: "actionContent", first: true, predicate: ["actionContent"], descendants: true, read: ViewContainerRef, static: true }], usesInheritance: true, ngImport: i0, template: "\n<ng-template #template>\n <div [class]=\"model.getActionRootCss()\" [id]=\"model.id\">\n <div class=\"sv-action__content\">\n <ng-container *ngIf=\"model.needSeparator\">\n <div class=\"sv-action-bar-separator\"></div>\n </ng-container>\n <ng-template [component]=\"{ name: getComponentName(), data: { model }, default: 'sv-action-bar-item'}\"></ng-template>\n </div>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionComponent, decorators: [{
228
+ type: Component,
229
+ args: [{ selector: "sv-ng-action", styles: [":host { display: none; }"], template: "\n<ng-template #template>\n <div [class]=\"model.getActionRootCss()\" [id]=\"model.id\">\n <div class=\"sv-action__content\">\n <ng-container *ngIf=\"model.needSeparator\">\n <div class=\"sv-action-bar-separator\"></div>\n </ng-container>\n <ng-template [component]=\"{ name: getComponentName(), data: { model }, default: 'sv-action-bar-item'}\"></ng-template>\n </div>\n </div>\n</ng-template>" }]
230
+ }], propDecorators: { model: [{
231
+ type: Input
232
+ }], actionContent: [{
233
+ type: ViewChild,
234
+ args: ["actionContent", { read: ViewContainerRef, static: true }]
235
+ }] } });
236
+ AngularComponentFactory.Instance.registerComponent("sv-action", ActionComponent);
237
+
238
+ class ActionBarComponent extends BaseAngular {
239
+ getModel() {
240
+ return this.model;
241
+ }
242
+ get allowOnClick() {
243
+ return this.handleClick !== undefined ? this.handleClick : true;
244
+ }
245
+ onClick(event) {
246
+ if (this.allowOnClick) {
247
+ event.stopPropagation();
248
+ }
249
+ }
250
+ ngAfterViewInit() {
251
+ if (!!this.model.hasActions) {
252
+ this.model.initResponsivityManager(this.container.nativeElement);
253
+ }
254
+ }
255
+ ngOnDestroy() {
256
+ super.ngOnDestroy();
257
+ this.model.resetResponsivityManager();
258
+ }
259
+ }
260
+ ActionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
261
+ ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: { model: "model", handleClick: "handleClick" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"model.hasActions\" [class]=\"model.getRootCss()\" (click)=\"onClick($event)\" #container>\n <ng-container *ngFor=\"let action of model.renderedActions\">\n <sv-ng-action [model]=\"action\"></sv-ng-action>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ActionComponent, selector: "sv-ng-action", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: "sv-action-bar, sv-ng-action-bar", styles: [":host { display: none }"], template: "<ng-template #template>\n <div *ngIf=\"model.hasActions\" [class]=\"model.getRootCss()\" (click)=\"onClick($event)\" #container>\n <ng-container *ngFor=\"let action of model.renderedActions\">\n <sv-ng-action [model]=\"action\"></sv-ng-action>\n </ng-container>\n </div>\n</ng-template>" }]
265
+ }], propDecorators: { model: [{
266
+ type: Input
267
+ }], handleClick: [{
268
+ type: Input
269
+ }], container: [{
270
+ type: ViewChild,
271
+ args: ["container"]
272
+ }] } });
273
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar", ActionBarComponent);
274
+
275
+ class SurveyStringComponent {
276
+ }
277
+ SurveyStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyStringComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
278
+ SurveyStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: { model: "model" }, ngImport: i0, template: "<ng-template [component]='{ name: model.renderAs, data: { model: model.renderAsData } }'></ng-template>", isInline: true, directives: [{ type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
279
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyStringComponent, decorators: [{
280
+ type: Component,
281
+ args: [{
282
+ selector: "sv-ng-string, '[sv-ng-string]'",
283
+ template: "<ng-template [component]='{ name: model.renderAs, data: { model: model.renderAsData } }'></ng-template>"
284
+ }]
285
+ }], propDecorators: { model: [{
286
+ type: Input
287
+ }] } });
288
+
289
+ class ElementTitleComponent extends EmbeddedViewContentComponent {
290
+ }
291
+ ElementTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
292
+ ElementTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ElementTitleComponent, selector: "sv-ng-element-title", inputs: { element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <sv-ng-dynamic-head [tagName]=\"element.titleTagName\" [element]=\"element\" *ngIf=\"element.hasTitle\">\n <ng-container *ngIf=\"!element.hasTitleActions\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"element.hasTitleActions\">\n <div class=\"sv-title-actions\">\n <span class=\"sv-title-actions__title\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </span>\n <sv-ng-action-bar [model]=\"element.getTitleToolbar()\"></sv-ng-action-bar>\n </div>\n </ng-container>\n </sv-ng-dynamic-head>\n <ng-template #elementTitleContent>\n <sv-ng-string *ngIf=\"!element.isTitleOwner\" [model]=\"element.locTitle\"></sv-ng-string>\n <ng-container *ngIf=\"element.isTitleOwner\">\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextOnStart\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span\n *ngIf=\"element.isTitleOwner && element.no\"\n style=\"position: static\"\n [class]=\"element.cssClasses.number\"\n [attr.aria-hidden]=\"true\"\n >{{ element.no }}</span>\n <span *ngIf=\"element.isTitleOwner && element.no\">&nbsp;</span>\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextBeforeTitle\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span *ngIf=\"element.isTitleOwner && element.isRequireTextBeforeTitle\">&nbsp;</span>\n <sv-ng-string *ngIf=\"element.isTitleOwner\" [model]=\"element.locTitle\"></sv-ng-string>\n <span *ngIf=\"element.isTitleOwner && element.isRequireTextAfterTitle\">&nbsp;</span>\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextAfterTitle\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span> \n </ng-container>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: DynamicHeadComponent, selector: "sv-ng-dynamic-head", inputs: ["tagName", "element"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementTitleComponent, decorators: [{
294
+ type: Component,
295
+ args: [{ selector: "sv-ng-element-title", template: "<ng-template #template>\n <sv-ng-dynamic-head [tagName]=\"element.titleTagName\" [element]=\"element\" *ngIf=\"element.hasTitle\">\n <ng-container *ngIf=\"!element.hasTitleActions\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"element.hasTitleActions\">\n <div class=\"sv-title-actions\">\n <span class=\"sv-title-actions__title\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </span>\n <sv-ng-action-bar [model]=\"element.getTitleToolbar()\"></sv-ng-action-bar>\n </div>\n </ng-container>\n </sv-ng-dynamic-head>\n <ng-template #elementTitleContent>\n <sv-ng-string *ngIf=\"!element.isTitleOwner\" [model]=\"element.locTitle\"></sv-ng-string>\n <ng-container *ngIf=\"element.isTitleOwner\">\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextOnStart\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span\n *ngIf=\"element.isTitleOwner && element.no\"\n style=\"position: static\"\n [class]=\"element.cssClasses.number\"\n [attr.aria-hidden]=\"true\"\n >{{ element.no }}</span>\n <span *ngIf=\"element.isTitleOwner && element.no\">&nbsp;</span>\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextBeforeTitle\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span *ngIf=\"element.isTitleOwner && element.isRequireTextBeforeTitle\">&nbsp;</span>\n <sv-ng-string *ngIf=\"element.isTitleOwner\" [model]=\"element.locTitle\"></sv-ng-string>\n <span *ngIf=\"element.isTitleOwner && element.isRequireTextAfterTitle\">&nbsp;</span>\n <span\n *ngIf=\"element.isTitleOwner && element.isRequireTextAfterTitle\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span> \n </ng-container>\n </ng-template>\n</ng-template>", styles: [":host{display:none}\n"] }]
296
+ }], propDecorators: { element: [{
297
+ type: Input
298
+ }] } });
299
+
300
+ //temp: disables angular sanitizer, which breaks a links
301
+ class SafeUrlPipe {
302
+ constructor(domSanitizer) {
303
+ this.domSanitizer = domSanitizer;
304
+ }
305
+ transform(url) {
306
+ return this.domSanitizer.bypassSecurityTrustUrl(url);
307
+ }
308
+ }
309
+ SafeUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
310
+ SafeUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeUrlPipe, name: "safeUrl" });
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeUrlPipe, decorators: [{
312
+ type: Pipe,
313
+ args: [{ name: "safeUrl" }]
314
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
315
+ class SafeResourceUrlPipe {
316
+ constructor(domSanitizer) {
317
+ this.domSanitizer = domSanitizer;
318
+ }
319
+ transform(url) {
320
+ return this.domSanitizer.bypassSecurityTrustResourceUrl(url);
321
+ }
322
+ }
323
+ SafeResourceUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeResourceUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
324
+ SafeResourceUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeResourceUrlPipe, name: "safeResourceUrl" });
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeResourceUrlPipe, decorators: [{
326
+ type: Pipe,
327
+ args: [{ name: "safeResourceUrl" }]
328
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
329
+
330
+ class SurveyHeaderComponent {
331
+ constructor(viewContainerRef) {
332
+ this.viewContainerRef = viewContainerRef;
333
+ }
334
+ ngAfterViewInit() {
335
+ this.survey.afterRenderHeader(this.viewContainerRef.element.nativeElement);
336
+ }
337
+ }
338
+ SurveyHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyHeaderComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
339
+ SurveyHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: { survey: "survey" }, ngImport: i0, template: "<div *ngIf=\"survey.isLogoBefore\" [class]=\"survey.logoClassNames\">\n <img\n [class]=\"survey.css.logoImage\"\n [attr.src]=\"survey.locLogo.renderedHtml | safeUrl\"\n [attr.width]=\"survey.logoWidth ? survey.logoWidth : undefined\"\n [attr.height]=\"survey.logoHeight ? survey.logoHeight : undefined\"\n [attr.alt]=\"survey.locTitle.renderedHtml\"\n [style.objectFit]=\"survey.logoFit\"\n />\n </div>\n\n <div\n *ngIf=\"survey.renderedHasTitle\"\n [class]=\"survey.css.headerText\"\n [style.maxWidth]=\"survey.titleMaxWidth\"\n >\n <sv-ng-element-title [element]=\"survey\"></sv-ng-element-title>\n <h5 *ngIf=\"survey.renderedHasDescription\" [class]=\"survey.css.description\" [model]=\"survey.locDescription\" sv-ng-string></h5>\n </div>\n\n <div *ngIf=\"survey.isLogoAfter\" [class]=\"survey.logoClassNames\">\n <img\n [class]=\"survey.css.logoImage\"\n [attr.src]=\"survey.locLogo.renderedHtml | safeUrl\"\n [attr.width]=\"survey.logoWidth ? survey.logoWidth : undefined\"\n [attr.height]=\"survey.logoHeight ? survey.logoHeight : undefined\"\n [alt]=\"survey.locTitle.renderedHtml\"\n [style.objectFit]=\"survey.logoFit\"\n />\n </div>\n<div [class]=\"survey.css.headerClose\"></div>", components: [{ type: ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeUrl": SafeUrlPipe } });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyHeaderComponent, decorators: [{
341
+ type: Component,
342
+ args: [{ selector: "'[sv-ng-survey-header]'", template: "<div *ngIf=\"survey.isLogoBefore\" [class]=\"survey.logoClassNames\">\n <img\n [class]=\"survey.css.logoImage\"\n [attr.src]=\"survey.locLogo.renderedHtml | safeUrl\"\n [attr.width]=\"survey.logoWidth ? survey.logoWidth : undefined\"\n [attr.height]=\"survey.logoHeight ? survey.logoHeight : undefined\"\n [attr.alt]=\"survey.locTitle.renderedHtml\"\n [style.objectFit]=\"survey.logoFit\"\n />\n </div>\n\n <div\n *ngIf=\"survey.renderedHasTitle\"\n [class]=\"survey.css.headerText\"\n [style.maxWidth]=\"survey.titleMaxWidth\"\n >\n <sv-ng-element-title [element]=\"survey\"></sv-ng-element-title>\n <h5 *ngIf=\"survey.renderedHasDescription\" [class]=\"survey.css.description\" [model]=\"survey.locDescription\" sv-ng-string></h5>\n </div>\n\n <div *ngIf=\"survey.isLogoAfter\" [class]=\"survey.logoClassNames\">\n <img\n [class]=\"survey.css.logoImage\"\n [attr.src]=\"survey.locLogo.renderedHtml | safeUrl\"\n [attr.width]=\"survey.logoWidth ? survey.logoWidth : undefined\"\n [attr.height]=\"survey.logoHeight ? survey.logoHeight : undefined\"\n [alt]=\"survey.locTitle.renderedHtml\"\n [style.objectFit]=\"survey.logoFit\"\n />\n </div>\n<div [class]=\"survey.css.headerClose\"></div>" }]
343
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { survey: [{
344
+ type: Input
345
+ }] } });
346
+
347
+ class ElementComponent extends BaseAngular {
348
+ getModel() {
349
+ return this.model;
350
+ }
351
+ }
352
+ ElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
353
+ ElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ElementComponent, selector: "sv-ng-element", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.questionWrapper\" [style]=\"model.rootStyle\">\n <ng-template [component]=\"{ name: model.isPanel ? 'panel': 'question', data: { model } }\"></ng-template>\n </div>\n</ng-template>", directives: [{ type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementComponent, decorators: [{
355
+ type: Component,
356
+ args: [{ selector: "sv-ng-element", template: "<ng-template #template>\n <div [class]=\"model.cssClasses.questionWrapper\" [style]=\"model.rootStyle\">\n <ng-template [component]=\"{ name: model.isPanel ? 'panel': 'question', data: { model } }\"></ng-template>\n </div>\n</ng-template>" }]
357
+ }], propDecorators: { model: [{
358
+ type: Input
359
+ }] } });
360
+
361
+ class RowComponent extends BaseAngular {
362
+ getModel() {
363
+ return this.row;
364
+ }
365
+ trackElementBy(index, element) {
366
+ return element.name + index;
367
+ }
368
+ }
369
+ RowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
370
+ RowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RowComponent, selector: "sv-ng-row", inputs: { row: "row" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"row.getRowCss()\" *ngIf=\"row.visible\">\n <ng-container *ngFor=\"let element of row.visibleElements; trackBy: trackElementBy\">\n <sv-ng-element [model]=\"$any(element)\"></sv-ng-element>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ElementComponent, selector: "sv-ng-element", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RowComponent, decorators: [{
372
+ type: Component,
373
+ args: [{ selector: "sv-ng-row", template: "<ng-template #template>\n <div [class]=\"row.getRowCss()\" *ngIf=\"row.visible\">\n <ng-container *ngFor=\"let element of row.visibleElements; trackBy: trackElementBy\">\n <sv-ng-element [model]=\"$any(element)\"></sv-ng-element>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"] }]
374
+ }], propDecorators: { row: [{
375
+ type: Input
376
+ }] } });
377
+
378
+ class PageComponent extends BaseAngular {
379
+ getModel() {
380
+ return this.model;
381
+ }
382
+ ngOnChanges(changes) {
383
+ var _a;
384
+ if (changes["model"].previousValue !== undefined) {
385
+ this.model.survey.afterRenderPage((_a = this.pageContainerRef) === null || _a === void 0 ? void 0 : _a.nativeElement);
386
+ }
387
+ }
388
+ ngAfterViewInit() {
389
+ var _a, _b;
390
+ (_a = this.model.survey) === null || _a === void 0 ? void 0 : _a.afterRenderPage((_b = this.pageContainerRef) === null || _b === void 0 ? void 0 : _b.nativeElement);
391
+ }
392
+ }
393
+ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
394
+ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PageComponent, selector: "page", inputs: { model: "model", survey: "survey" }, viewQueries: [{ propertyName: "pageContainerRef", first: true, predicate: ["pageContainer"], descendants: true, read: ElementRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!!this.survey && !!this.model && this.model.isVisible && !!this.model.survey\">\n <div [class]=\"model.cssRoot\" #pageContainer>\n <sv-ng-element-title [element]=\"model\"></sv-ng-element-title>\n <div *ngIf=\"model._showDescription\" [class]=\"model.cssClasses.page.description\">\n <sv-ng-string [model]=\"model.locDescription\"></sv-ng-string>\n </div>\n <ng-container *ngFor=\"let row of model.rows\">\n <sv-ng-row [row]=\"row\" style=\"display: contents;\"></sv-ng-row>\n </ng-container>\n </div>\n</ng-container>", styles: [""], components: [{ type: ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: RowComponent, selector: "sv-ng-row", inputs: ["row"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PageComponent, decorators: [{
396
+ type: Component,
397
+ args: [{ selector: "page", template: "<ng-container *ngIf=\"!!this.survey && !!this.model && this.model.isVisible && !!this.model.survey\">\n <div [class]=\"model.cssRoot\" #pageContainer>\n <sv-ng-element-title [element]=\"model\"></sv-ng-element-title>\n <div *ngIf=\"model._showDescription\" [class]=\"model.cssClasses.page.description\">\n <sv-ng-string [model]=\"model.locDescription\"></sv-ng-string>\n </div>\n <ng-container *ngFor=\"let row of model.rows\">\n <sv-ng-row [row]=\"row\" style=\"display: contents;\"></sv-ng-row>\n </ng-container>\n </div>\n</ng-container>", styles: [""] }]
398
+ }], propDecorators: { model: [{
399
+ type: Input
400
+ }], survey: [{
401
+ type: Input
402
+ }], pageContainerRef: [{
403
+ type: ViewChild,
404
+ args: ["pageContainer", { static: false, read: ElementRef }]
405
+ }] } });
406
+
407
+ class BrandInfoComponent {
408
+ }
409
+ BrandInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BrandInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
410
+ BrandInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: BrandInfoComponent, selector: "sv-brand-info", ngImport: i0, template: "<div class=\"sv-brand-info\">\n <a class=\"sv-brand-info__logo\" href=\"https://surveyjs.io/?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=landing_page\"><img src=\"https://surveyjs.io/Content/Images/poweredby.svg\"/></a>\n <div class=\"sv-brand-info__text\">Try and see how easy it is to <a href=\"https://surveyjs.io/create-survey?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=create_survey\">create a survey</a></div>\n <div class=\"sv-brand-info__terms\"><a href=\"https://surveyjs.io/TermsOfUse\">Terms of Use & Privacy Statement</a></div>\n</div>" });
411
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BrandInfoComponent, decorators: [{
412
+ type: Component,
413
+ args: [{ selector: "sv-brand-info", template: "<div class=\"sv-brand-info\">\n <a class=\"sv-brand-info__logo\" href=\"https://surveyjs.io/?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=landing_page\"><img src=\"https://surveyjs.io/Content/Images/poweredby.svg\"/></a>\n <div class=\"sv-brand-info__text\">Try and see how easy it is to <a href=\"https://surveyjs.io/create-survey?utm_source=built-in_links&utm_medium=online_survey_tool&utm_campaign=create_survey\">create a survey</a></div>\n <div class=\"sv-brand-info__terms\"><a href=\"https://surveyjs.io/TermsOfUse\">Terms of Use & Privacy Statement</a></div>\n</div>" }]
414
+ }] });
415
+ AngularComponentFactory.Instance.registerComponent("sv-brand-info", BrandInfoComponent);
416
+
417
+ class SurveyComponent extends BaseAngular {
418
+ constructor(changeDetectorRef) {
419
+ super(changeDetectorRef);
420
+ changeDetectorRef.detach();
421
+ }
422
+ getModel() {
423
+ return this.model;
424
+ }
425
+ onModelChanged() {
426
+ this.changeDetectorRef.detectChanges();
427
+ this.model.renderCallback = () => {
428
+ this.changeDetectorRef.detectChanges();
429
+ };
430
+ }
431
+ ngOnInit() {
432
+ if (this.model["needRenderIcons"]) {
433
+ SvgRegistry.renderIcons();
434
+ }
435
+ }
436
+ ngOnDestroy() {
437
+ super.ngOnDestroy();
438
+ this.model.renderCallback = undefined;
439
+ }
440
+ ngAfterViewInit() {
441
+ this.model.afterRenderSurvey(this.rootEl.nativeElement);
442
+ }
443
+ }
444
+ SurveyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
445
+ SurveyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyComponent, selector: "survey", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" >\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\">\n <!-- ko if: isTimerPanelShowingOnTop && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\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 <!-- ko if: isTimerPanelShowingOnBottom && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n</div>\n", styles: [""], components: [{ type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PageComponent, selector: "page", inputs: ["model", "survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
446
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyComponent, decorators: [{
447
+ type: Component,
448
+ args: [{ selector: "survey", template: "<div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" >\n <form onsubmit=\"return false;\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\">\n <!-- ko if: isTimerPanelShowingOnTop && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnTop && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <div [id]=\"model.activePage.id\">\n <page [model]=\"model.activePage\" [survey]=\"model\"></page>\n </div>\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 <!-- ko if: isTimerPanelShowingOnBottom && !isShowStartingPage -->\n <!-- ko template: { name: 'survey-timerpanel' } -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-container *ngIf=\"model.isShowProgressBarOnBottom && !model.isShowStartingPage\">\n <ng-template [component]='{ name: \"sv-progress-\" + this.model.progressBarType, data: { model } }'></ng-template>\n </ng-container>\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnBottom\" [model]=\"model.navigationBar\"></sv-action-bar>\n </div>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></div>\n <div [hidden]=\"model.completedState === ''\" [class]=\"model.css.saveData.root\">\n <div [class]=\"model.completedStateCss\">\n <span>{{model.completedStateText}}</span>\n <input type=\"button\" [hidden]=\"model.completedState != 'error'\"\n [value]=\"model.getLocString('saveAgainButton')\" (click)=\"model.doComplete()\"\n [class]=\"model.css.saveData.saveAgainButton\">\n </div>\n </div>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.css.body\"\n [innerHtml]=\"model.processedCompletedBeforeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.css.body\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </form>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n</div>\n", styles: [""] }]
449
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
450
+ type: Input
451
+ }], rootEl: [{
452
+ type: ViewChild,
453
+ args: ["surveyContainer", { static: false }]
454
+ }] } });
455
+
456
+ class ErrorsComponent {
457
+ constructor(viewContainerRef) {
458
+ this.viewContainerRef = viewContainerRef;
459
+ }
460
+ ngOnInit() {
461
+ if (this.location == "tooltip") {
462
+ this.tooltipManager = new TooltipManager(this.viewContainerRef.element.nativeElement);
463
+ }
464
+ }
465
+ ngOnDestroy() {
466
+ if (!!this.tooltipManager) {
467
+ this.tooltipManager.dispose();
468
+ }
469
+ }
470
+ get role() {
471
+ return "alert";
472
+ }
473
+ get id() {
474
+ return this.element.id + "_errors";
475
+ }
476
+ get ariaLive() {
477
+ return "polite";
478
+ }
479
+ get class() {
480
+ return this.element.cssError;
481
+ }
482
+ }
483
+ ErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ErrorsComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
484
+ ErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: { element: "element", location: "location" }, host: { properties: { "attr.role": "this.role", "id": "this.id", "attr.aria-live": "this.ariaLive", "class": "this.class" } }, viewQueries: [{ propertyName: "errorsContainerRef", first: true, predicate: ["errorsContainer"], descendants: true, static: true }], ngImport: i0, template: "<div *ngFor=\"let error of element.errors;\">\n <span\n [class]=\"element.cssClasses ? element.cssClasses.error.icon : 'panel-error-icon'\"\n aria-hidden=\"true\"\n ></span>\n <span [class]=\"element.cssClasses ? element.cssClasses.error.item : 'panel-error-item'\" [model]=\"error.locText\" sv-ng-string>\n </span>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ErrorsComponent, decorators: [{
486
+ type: Component,
487
+ args: [{ selector: "'[sv-ng-errors]'", template: "<div *ngFor=\"let error of element.errors;\">\n <span\n [class]=\"element.cssClasses ? element.cssClasses.error.icon : 'panel-error-icon'\"\n aria-hidden=\"true\"\n ></span>\n <span [class]=\"element.cssClasses ? element.cssClasses.error.item : 'panel-error-item'\" [model]=\"error.locText\" sv-ng-string>\n </span>\n</div>" }]
488
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { element: [{
489
+ type: Input
490
+ }], location: [{
491
+ type: Input
492
+ }], errorsContainerRef: [{
493
+ type: ViewChild,
494
+ args: ["errorsContainer", { static: true }]
495
+ }], role: [{
496
+ type: HostBinding,
497
+ args: ["attr.role"]
498
+ }], id: [{
499
+ type: HostBinding,
500
+ args: ["id"]
501
+ }], ariaLive: [{
502
+ type: HostBinding,
503
+ args: ["attr.aria-live"]
504
+ }], class: [{
505
+ type: HostBinding,
506
+ args: ["class"]
507
+ }] } });
508
+
509
+ class ElementHeaderComponent {
510
+ constructor() {
511
+ }
512
+ get rootClass() {
513
+ return this.element.cssHeader;
514
+ }
515
+ click() {
516
+ this.element.clickTitleFunction();
517
+ }
518
+ }
519
+ ElementHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
520
+ ElementHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ElementHeaderComponent, selector: "'[sv-ng-element-header]'", inputs: { element: "element" }, host: { listeners: { "click": "click()" }, properties: { "class": "this.rootClass" } }, ngImport: i0, template: "<sv-ng-element-title [element]=\"element\"></sv-ng-element-title>\n<div *ngIf=\"element.hasDescriptionUnderTitle\" [class]=\"element.cssDescription\" [model]=\"element.locDescription\" sv-ng-string></div>", components: [{ type: ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ElementHeaderComponent, decorators: [{
522
+ type: Component,
523
+ args: [{ selector: "'[sv-ng-element-header]'", template: "<sv-ng-element-title [element]=\"element\"></sv-ng-element-title>\n<div *ngIf=\"element.hasDescriptionUnderTitle\" [class]=\"element.cssDescription\" [model]=\"element.locDescription\" sv-ng-string></div>" }]
524
+ }], ctorParameters: function () { return []; }, propDecorators: { element: [{
525
+ type: Input
526
+ }], rootClass: [{
527
+ type: HostBinding,
528
+ args: ["class"]
529
+ }], click: [{
530
+ type: HostListener,
531
+ args: ["click"]
532
+ }] } });
533
+
534
+ class SurveyCommentComponent {
535
+ constructor() {
536
+ }
537
+ }
538
+ SurveyCommentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
539
+ SurveyCommentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: { question: "question" }, ngImport: i0, template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [attr.max-length]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.placeholder]=\"question.commentOrOtherPlaceHolder\" \n [value]=\"question.comment\"\n [style.resize]=\"question.resizeStyle\"\n [disabled]=\"question.isInputReadOnly\"\n (change)=\"question.onCommentChange($event)\"\n (input)=\"question.onCommentInput($event)\"\n [class]=\"question.cssClasses.other\">\n</textarea>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ question.comment }}</div>\n", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyCommentComponent, decorators: [{
541
+ type: Component,
542
+ args: [{ selector: "sv-ng-comment, '[sv-ng-comment]'", template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [attr.max-length]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.placeholder]=\"question.commentOrOtherPlaceHolder\" \n [value]=\"question.comment\"\n [style.resize]=\"question.resizeStyle\"\n [disabled]=\"question.isInputReadOnly\"\n (change)=\"question.onCommentChange($event)\"\n (input)=\"question.onCommentInput($event)\"\n [class]=\"question.cssClasses.other\">\n</textarea>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ question.comment }}</div>\n" }]
543
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
544
+ type: Input
545
+ }] } });
546
+
547
+ class VisibleDirective {
548
+ constructor(el) {
549
+ this.el = el;
550
+ }
551
+ ngOnChanges(changes) {
552
+ changes["visible"].currentValue ? this.show() : this.hide();
553
+ }
554
+ hide() {
555
+ this.el.nativeElement.style.display = "none";
556
+ }
557
+ show() {
558
+ this.el.nativeElement.style.display = "";
559
+ }
560
+ }
561
+ VisibleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: VisibleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
562
+ VisibleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: VisibleDirective, selector: "[visible]", inputs: { visible: "visible" }, usesOnChanges: true, ngImport: i0 });
563
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: VisibleDirective, decorators: [{
564
+ type: Directive,
565
+ args: [{
566
+ selector: "[visible]"
567
+ }]
568
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { visible: [{
569
+ type: Input
570
+ }] } });
571
+
572
+ class QuestionComponent extends EmbeddedViewContentComponent {
573
+ getModel() {
574
+ return this.model;
575
+ }
576
+ ngAfterViewInit() {
577
+ var _a, _b;
578
+ if (!!((_a = this.rootEl) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
579
+ this.model.afterRender((_b = this.rootEl) === null || _b === void 0 ? void 0 : _b.nativeElement);
580
+ }
581
+ }
582
+ getComponentName() {
583
+ if (this.model.customWidget)
584
+ return "survey-customwidget";
585
+ if (this.model.isDefaultRendering()) {
586
+ return this.model.getTemplate() + "-question";
587
+ }
588
+ return this.model.getComponentName();
589
+ }
590
+ }
591
+ QuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
592
+ QuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: QuestionComponent, selector: "sv-ng-question", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["elementContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #elementContainer [class]=\"model.getRootCss()\" [style]=\"{ paddingLeft: model.paddingLeft, paddingRight: model.paddingRight }\" [id]=\"model.id\" [attr.data-name]=\"model.name\" [attr.role]=\"model.ariaRole\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-labelledby]=\"model.hasTitle ? model.ariaTitleId : null\">\n <div *ngIf=\"model.showErrorsAboveQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnLeftTop\" sv-ng-element-header></div>\n <div [class]=\"model.cssContent\" role=\"presentation\" [visible]=\"!model.isCollapsed\">\n <div *ngIf=\"model.showErrorOnTop && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <ng-template [component]=\"{ name: getComponentName(), data: { model }, default: 'skeleton-question' }\" ></ng-template>\n <div *ngIf=\"model.hasComment\" [class]=\"model.cssClasses.formGroup\">\n <div>{{ model.commentText }}</div>\n <div [question]=\"model\" sv-ng-comment></div>\n </div>\n <div *ngIf=\"model.showErrorOnBottom && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <div *ngIf=\"model.isErrorsModeTooltip && model.hasVisibleErrors\" [element]=\"model\" [location]=\"'tooltip'\" sv-ng-errors></div>\n </div>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnBottom\" sv-ng-element-header></div>\n <div *ngIf=\"model.showErrorsBelowQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n </div>\n</ng-template>", components: [{ type: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: ElementHeaderComponent, selector: "'[sv-ng-element-header]'", inputs: ["element"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionComponent, decorators: [{
594
+ type: Component,
595
+ args: [{ selector: "sv-ng-question", template: "<ng-template #template>\n <div #elementContainer [class]=\"model.getRootCss()\" [style]=\"{ paddingLeft: model.paddingLeft, paddingRight: model.paddingRight }\" [id]=\"model.id\" [attr.data-name]=\"model.name\" [attr.role]=\"model.ariaRole\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-labelledby]=\"model.hasTitle ? model.ariaTitleId : null\">\n <div *ngIf=\"model.showErrorsAboveQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnLeftTop\" sv-ng-element-header></div>\n <div [class]=\"model.cssContent\" role=\"presentation\" [visible]=\"!model.isCollapsed\">\n <div *ngIf=\"model.showErrorOnTop && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <ng-template [component]=\"{ name: getComponentName(), data: { model }, default: 'skeleton-question' }\" ></ng-template>\n <div *ngIf=\"model.hasComment\" [class]=\"model.cssClasses.formGroup\">\n <div>{{ model.commentText }}</div>\n <div [question]=\"model\" sv-ng-comment></div>\n </div>\n <div *ngIf=\"model.showErrorOnBottom && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <div *ngIf=\"model.isErrorsModeTooltip && model.hasVisibleErrors\" [element]=\"model\" [location]=\"'tooltip'\" sv-ng-errors></div>\n </div>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnBottom\" sv-ng-element-header></div>\n <div *ngIf=\"model.showErrorsBelowQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n </div>\n</ng-template>" }]
596
+ }], propDecorators: { model: [{
597
+ type: Input
598
+ }], rootEl: [{
599
+ type: ViewChild,
600
+ args: ["elementContainer"]
601
+ }] } });
602
+ AngularComponentFactory.Instance.registerComponent("question", QuestionComponent);
603
+
604
+ class StringViewerComponent {
605
+ constructor(changeDetectorRef) {
606
+ this.changeDetectorRef = changeDetectorRef;
607
+ }
608
+ ngOnChanges(changes) {
609
+ const currentValue = changes["model"].currentValue;
610
+ const previousValue = changes["model"].previousValue;
611
+ currentValue.onChanged = () => { this.changeDetectorRef.detectChanges(); };
612
+ !!previousValue && this.clearOnChanged(previousValue);
613
+ }
614
+ clearOnChanged(model) {
615
+ model.onChanged = () => { };
616
+ }
617
+ ngOnDestroy() {
618
+ !!this.model && this.clearOnChanged(this.model);
619
+ }
620
+ }
621
+ StringViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StringViewerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
622
+ StringViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: StringViewerComponent, selector: "sv-ng-string-viewer, string-viewer, '[sv-ng-string-viewer]'", inputs: { model: "model" }, usesOnChanges: true, ngImport: i0, template: "<span *ngIf=\"!model.hasHtml\" class=\"sv-string-viewer\">{{model.renderedHtml}}</span>\n<span *ngIf=\"model.hasHtml\" class=\"sv-string-viewer\" [innerHtml]=\"model.renderedHtml\"></span>", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StringViewerComponent, decorators: [{
624
+ type: Component,
625
+ args: [{ selector: "sv-ng-string-viewer, string-viewer, '[sv-ng-string-viewer]'", template: "<span *ngIf=\"!model.hasHtml\" class=\"sv-string-viewer\">{{model.renderedHtml}}</span>\n<span *ngIf=\"model.hasHtml\" class=\"sv-string-viewer\" [innerHtml]=\"model.renderedHtml\"></span>", styles: [""] }]
626
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
627
+ type: Input
628
+ }] } });
629
+ AngularComponentFactory.Instance.registerComponent(LocalizableString.defaultRenderer, StringViewerComponent);
630
+
631
+ class PopupContainerComponent extends BaseAngular {
632
+ constructor(changeDetectorRef) {
633
+ super(changeDetectorRef);
634
+ this.prevIsVisible = false;
635
+ this.isShow = false;
636
+ this.changeDetectorRef.detach();
637
+ }
638
+ getModel() {
639
+ return this.model;
640
+ }
641
+ onModelChanged() {
642
+ this.changeDetectorRef.detectChanges();
643
+ }
644
+ beforeUpdate() {
645
+ super.beforeUpdate();
646
+ if (!this.prevIsVisible && this.model.isVisible) {
647
+ this.isShow = false;
648
+ }
649
+ }
650
+ afterUpdate() {
651
+ if (!this.prevIsVisible && this.model.isVisible) {
652
+ setTimeout(() => {
653
+ this.model.updateOnShowing();
654
+ this.isShow = true;
655
+ this.changeDetectorRef.detectChanges();
656
+ });
657
+ }
658
+ if (this.prevIsVisible !== this.model.isVisible) {
659
+ this.prevIsVisible = this.model.isVisible;
660
+ }
661
+ super.afterUpdate();
662
+ }
663
+ }
664
+ PopupContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
665
+ PopupContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PopupContainerComponent, selector: "sv-ng-popup-container, '[sv-ng-popup-container]'", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<div class=\"sv-popup\" tabindex=\"-1\" [class]=\"model.styleClass\" [style.visibility]=\"isShow ? 'visible' : 'hidden'\" [visible]=\"model.isVisible\" (click)=\"model.clickOutside()\" (keydown)=\"model.onKeyDown($event)\">\n <div class=\"sv-popup__container\" [style]=\"{ left: model.left, top: model.top, height: model.height, minWidth: model.minWidth, width: model.width }\">\n <div class=\"sv-popup__shadow\">\n <span *ngIf=\"model.showPointer\" class=\"sv-popup__pointer\" [style]=\"{ left: model.pointerTarget.left, top: model.pointerTarget.top }\"></span>\n <div class=\"sv-popup__body-content\">\n <div *ngIf=\"model.title\" class=\"sv-popup__body-header\">{{ model.title }}</div>\n <div class=\"sv-popup__scrolling-content\">\n <div class=\"sv-popup__content\">\n <ng-template [component]=\"{ name: model.contentComponentName, data: model.contentComponentData }\"></ng-template>\n </div>\n </div>\n <div *ngIf=\"model.showFooter\" class=\"sv-popup__body-footer\">\n <button type=\"button\" (click)=\"model.cancel()\"\n class=\"sv-popup__body-footer-item sv-popup__button sv-popup__button--cancel\">{{ model.cancelButtonText }}</button>\n <button type=\"button\" *ngIf=\"model.isModal\" (click)=\"model.apply()\" \n class=\"sv-popup__body-footer-item sv-popup__button sv-popup__button--apply\">{{ model.applyButtonText }}</button>\n </div>\n </div>\n </div>\n </div>\n</div>", directives: [{ type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
666
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupContainerComponent, decorators: [{
667
+ type: Component,
668
+ args: [{ selector: "sv-ng-popup-container, '[sv-ng-popup-container]'", template: "<div class=\"sv-popup\" tabindex=\"-1\" [class]=\"model.styleClass\" [style.visibility]=\"isShow ? 'visible' : 'hidden'\" [visible]=\"model.isVisible\" (click)=\"model.clickOutside()\" (keydown)=\"model.onKeyDown($event)\">\n <div class=\"sv-popup__container\" [style]=\"{ left: model.left, top: model.top, height: model.height, minWidth: model.minWidth, width: model.width }\">\n <div class=\"sv-popup__shadow\">\n <span *ngIf=\"model.showPointer\" class=\"sv-popup__pointer\" [style]=\"{ left: model.pointerTarget.left, top: model.pointerTarget.top }\"></span>\n <div class=\"sv-popup__body-content\">\n <div *ngIf=\"model.title\" class=\"sv-popup__body-header\">{{ model.title }}</div>\n <div class=\"sv-popup__scrolling-content\">\n <div class=\"sv-popup__content\">\n <ng-template [component]=\"{ name: model.contentComponentName, data: model.contentComponentData }\"></ng-template>\n </div>\n </div>\n <div *ngIf=\"model.showFooter\" class=\"sv-popup__body-footer\">\n <button type=\"button\" (click)=\"model.cancel()\"\n class=\"sv-popup__body-footer-item sv-popup__button sv-popup__button--cancel\">{{ model.cancelButtonText }}</button>\n <button type=\"button\" *ngIf=\"model.isModal\" (click)=\"model.apply()\" \n class=\"sv-popup__body-footer-item sv-popup__button sv-popup__button--apply\">{{ model.applyButtonText }}</button>\n </div>\n </div>\n </div>\n </div>\n</div>" }]
669
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
670
+ type: Input
671
+ }] } });
672
+
673
+ class PopupService {
674
+ constructor(injector, applicationRef, componentFactoryResolver) {
675
+ this.injector = injector;
676
+ this.applicationRef = applicationRef;
677
+ this.componentFactoryResolver = componentFactoryResolver;
678
+ }
679
+ createComponent(popupViewModel) {
680
+ const portalHost = new DomPortalOutlet(popupViewModel.container, this.componentFactoryResolver, this.applicationRef, this.injector);
681
+ const portal = new ComponentPortal(PopupContainerComponent);
682
+ const componentRef = portalHost.attach(portal);
683
+ popupViewModel.container = popupViewModel.container.children[0];
684
+ componentRef.instance.model = popupViewModel;
685
+ componentRef.changeDetectorRef.detectChanges();
686
+ return portalHost;
687
+ }
688
+ }
689
+ PopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupService, deps: [{ token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
690
+ PopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupService });
691
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupService, decorators: [{
692
+ type: Injectable
693
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }]; } });
694
+
695
+ class PopupComponent extends BaseAngular {
696
+ constructor(viewContainerRef, changeDetectorRef, popupService) {
697
+ super(changeDetectorRef, viewContainerRef);
698
+ this.popupService = popupService;
699
+ }
700
+ getModel() {
701
+ return this.popupModel;
702
+ }
703
+ ngOnInit() {
704
+ var _a;
705
+ this.model = new PopupBaseViewModel(this.popupModel, (_a = this.viewContainerRef) === null || _a === void 0 ? void 0 : _a.element.nativeElement.parentElement);
706
+ this.model.initializePopupContainer();
707
+ this.portalHost = this.popupService.createComponent(this.model);
708
+ }
709
+ ngOnDestroy() {
710
+ super.ngOnDestroy();
711
+ this.portalHost.detach();
712
+ this.model.container.remove();
713
+ this.model.unmountPopupContainer();
714
+ }
715
+ }
716
+ PopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: PopupService }], target: i0.ɵɵFactoryTarget.Component });
717
+ PopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: { popupModel: "popupModel" }, usesInheritance: true, ngImport: i0, template: "<div></div>", isInline: true });
718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PopupComponent, decorators: [{
719
+ type: Component,
720
+ args: [{
721
+ selector: "sv-ng-popup, '[sv-ng-popup]'",
722
+ template: "<div></div>"
723
+ }]
724
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: PopupService }]; }, propDecorators: { popupModel: [{
725
+ type: Input
726
+ }] } });
727
+
728
+ class QuestionSkeletonComponent {
729
+ }
730
+ QuestionSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
731
+ QuestionSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: QuestionSkeletonComponent, selector: "question-skeleton", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"sv-skeleton--not-implemented\">\n <div>{{ model.getType() + \" question type renderer is not implemented yet.\" }}</div>\n <div>{{ model.value }}</div>\n</div>\n", styles: [".sv-skeleton--not-implemented{width:100%;min-width:300px;min-height:40px;border:1px solid red;text-align:center}\n"] });
732
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionSkeletonComponent, decorators: [{
733
+ type: Component,
734
+ args: [{ selector: "question-skeleton", template: "<div class=\"sv-skeleton--not-implemented\">\n <div>{{ model.getType() + \" question type renderer is not implemented yet.\" }}</div>\n <div>{{ model.value }}</div>\n</div>\n", styles: [".sv-skeleton--not-implemented{width:100%;min-width:300px;min-height:40px;border:1px solid red;text-align:center}\n"] }]
735
+ }], propDecorators: { model: [{
736
+ type: Input
737
+ }] } });
738
+ AngularComponentFactory.Instance.registerComponent("skeleton-question", QuestionSkeletonComponent);
739
+
740
+ class SvgIconComponent {
741
+ constructor(viewContaierRef) {
742
+ this.viewContaierRef = viewContaierRef;
743
+ }
744
+ createSvg() {
745
+ if (!!this.iconName) {
746
+ Survey.createSvg(this.size, this.width, this.height, this.iconName, this.viewContaierRef.element.nativeElement);
747
+ }
748
+ }
749
+ get rootClass() {
750
+ let className = "sv-svg-icon";
751
+ if (!this.css && !!this.partCss) {
752
+ className += " " + this.partCss;
753
+ }
754
+ else if (!!this.css) {
755
+ className = this.css;
756
+ }
757
+ return className;
758
+ }
759
+ get rootRole() {
760
+ return "img";
761
+ }
762
+ get ariaLabel() {
763
+ return this.title;
764
+ }
765
+ ngOnChanges() {
766
+ const el = this.viewContaierRef.element.nativeElement;
767
+ el.innerHTML = "";
768
+ el.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "use"));
769
+ this.createSvg();
770
+ }
771
+ }
772
+ SvgIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SvgIconComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
773
+ SvgIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: { size: "size", width: "width", height: "height", iconName: "iconName", partCss: "partCss", css: "css", title: "title" }, host: { properties: { "class": "this.rootClass", "[attr.role]": "this.rootRole", "[attr.aria-label]": "this.ariaLabel" } }, usesOnChanges: true, ngImport: i0, template: "", isInline: true });
774
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SvgIconComponent, decorators: [{
775
+ type: Component,
776
+ args: [{
777
+ selector: "'[sv-ng-svg-icon]'",
778
+ template: ""
779
+ }]
780
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { size: [{
781
+ type: Input
782
+ }], width: [{
783
+ type: Input
784
+ }], height: [{
785
+ type: Input
786
+ }], iconName: [{
787
+ type: Input
788
+ }], partCss: [{
789
+ type: Input
790
+ }], css: [{
791
+ type: Input
792
+ }], title: [{
793
+ type: Input
794
+ }], rootClass: [{
795
+ type: HostBinding,
796
+ args: ["class"]
797
+ }], rootRole: [{
798
+ type: HostBinding,
799
+ args: ["[attr.role]"]
800
+ }], ariaLabel: [{
801
+ type: HostBinding,
802
+ args: ["[attr.aria-label]"]
803
+ }] } });
804
+
805
+ class DropdownComponent {
806
+ get popupModel() {
807
+ return this.dropdownListModel.popupModel;
808
+ }
809
+ ngOnInit() {
810
+ this.dropdownListModel = this.model.dropdownListModel || new DropdownListModel(this.model);
811
+ }
812
+ ngOnDestroy() {
813
+ var _a;
814
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.dispose();
815
+ }
816
+ click(event) {
817
+ var _a;
818
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClick(event);
819
+ }
820
+ clear(event) {
821
+ var _a;
822
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClear(event);
823
+ }
824
+ keyup(event) {
825
+ var _a;
826
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onKeyUp(event);
827
+ }
828
+ blur(event) {
829
+ var _a;
830
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onBlur(event);
831
+ }
832
+ }
833
+ DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
834
+ DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.selectWrapper\">\n <div *ngIf=\"!model.isReadOnly\" [tabindex]=\"model.isInputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keyup)=\"keyup($event)\" [attr.id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.role]=\"model.ariaRole\">\n <div [class]=\"model.cssClasses.controlValue\">{{ model.readOnlyText }}</div>\n <div *ngIf=\"(model.allowClear && model.cssClasses.cleanButtonIconId)\"\n [class]=\"model.cssClasses.cleanButton\" (click)=\"clear($event)\" [visible]=\"!model.isEmpty()\">\n <!-- ko component: { name: 'sv-svg-icon', params: { css: model.cssClasses.cleanButtonSvg, iconName: model.cssClasses.cleanButtonIconId, size: 'auto' } } -->\n <!-- /ko -->\n <svg [iconName]=\"model.cssClasses.cleanButtonIconId\" [partCss]=\"model.cssClasses.cleanButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{ model.readOnlyText }}</div>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
835
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownComponent, decorators: [{
836
+ type: Component,
837
+ args: [{ selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", template: "<div [class]=\"model.cssClasses.selectWrapper\">\n <div *ngIf=\"!model.isReadOnly\" [tabindex]=\"model.isInputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keyup)=\"keyup($event)\" [attr.id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.role]=\"model.ariaRole\">\n <div [class]=\"model.cssClasses.controlValue\">{{ model.readOnlyText }}</div>\n <div *ngIf=\"(model.allowClear && model.cssClasses.cleanButtonIconId)\"\n [class]=\"model.cssClasses.cleanButton\" (click)=\"clear($event)\" [visible]=\"!model.isEmpty()\">\n <!-- ko component: { name: 'sv-svg-icon', params: { css: model.cssClasses.cleanButtonSvg, iconName: model.cssClasses.cleanButtonIconId, size: 'auto' } } -->\n <!-- /ko -->\n <svg [iconName]=\"model.cssClasses.cleanButtonIconId\" [partCss]=\"model.cssClasses.cleanButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{ model.readOnlyText }}</div>\n</div>" }]
838
+ }], propDecorators: { model: [{
839
+ type: Input
840
+ }] } });
841
+
842
+ class TagboxItemComponent extends BaseAngular {
843
+ removeItem(event) {
844
+ this.question.dropdownListModel.deselectItem(this.item.value);
845
+ event.stopPropagation();
846
+ }
847
+ getModel() {
848
+ return this.item;
849
+ }
850
+ }
851
+ TagboxItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
852
+ TagboxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: TagboxItemComponent, selector: "sv-ng-tagbox-item, '[sv-ng-tagbox-item]'", inputs: { item: "item", question: "question" }, usesInheritance: true, ngImport: i0, template: "<li class=\"sv-tagbox__item\">\n <div class=\"sv-tagbox__item-text\" [model]=\"item.locText\" sv-ng-string></div> \n <div [class]=\"question.cssClasses.cleanItemButton\" (click)=\"removeItem($event)\">\n <svg [iconName]=\"question.cssClasses.cleanItemButtonIconId\" [partCss]=\"question.cssClasses.cleanItemButtonSvg\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n</li>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }] });
853
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxItemComponent, decorators: [{
854
+ type: Component,
855
+ args: [{ selector: "sv-ng-tagbox-item, '[sv-ng-tagbox-item]'", template: "<li class=\"sv-tagbox__item\">\n <div class=\"sv-tagbox__item-text\" [model]=\"item.locText\" sv-ng-string></div> \n <div [class]=\"question.cssClasses.cleanItemButton\" (click)=\"removeItem($event)\">\n <svg [iconName]=\"question.cssClasses.cleanItemButtonIconId\" [partCss]=\"question.cssClasses.cleanItemButtonSvg\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n</li>" }]
856
+ }], propDecorators: { item: [{
857
+ type: Input
858
+ }], question: [{
859
+ type: Input
860
+ }] } });
861
+ AngularComponentFactory.Instance.registerComponent("sv-tagbox-item", TagboxItemComponent);
862
+
863
+ class TagboxComponent {
864
+ get popupModel() {
865
+ return this.dropdownListModel.popupModel;
866
+ }
867
+ ngOnInit() {
868
+ this.dropdownListModel = this.model.dropdownListModel || new DropdownListModel(this.model);
869
+ }
870
+ ngOnDestroy() {
871
+ var _a;
872
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.dispose();
873
+ }
874
+ click(event) {
875
+ var _a;
876
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClick(event);
877
+ }
878
+ clear(event) {
879
+ var _a;
880
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClear(event);
881
+ }
882
+ keyup(event) {
883
+ var _a;
884
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onKeyUp(event);
885
+ }
886
+ blur(event) {
887
+ var _a;
888
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onBlur(event);
889
+ }
890
+ }
891
+ TagboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
892
+ TagboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: TagboxComponent, selector: "sv-ng-tagbox, '[sv-ng-tagbox]'", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.selectWrapper\">\n <div *ngIf=\"!model.isReadOnly\" [tabindex]=\"model.isInputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keyup)=\"keyup($event)\" [attr.id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.role]=\"model.ariaRole\">\n <div *ngIf=\"model.isEmpty()\" [class]=\"model.cssClasses.controlValue\">{{ model.placeholder }}</div>\n <ul *ngIf=\"!model.isEmpty()\" [class]=\"model.cssClasses.controlValue\">\n <sv-ng-tagbox-item *ngFor=\"let item of model.selectedItems\" [item]=\"item\" [question]=\"model\"></sv-ng-tagbox-item>\n </ul>\n <div *ngIf=\"(model.allowClear && model.cssClasses.cleanButtonIconId)\" [class]=\"model.cssClasses.cleanButton\"\n (click)=\"clear($event)\" [visible]=\"!model.isEmpty()\">\n <!-- ko component: { name: 'sv-svg-icon', params: { css: model.cssClasses.cleanButtonSvg, iconName: model.cssClasses.cleanButtonIconId, size: 'auto' } } -->\n <!-- /ko -->\n <svg [iconName]=\"model.cssClasses.cleanButtonIconId\" [partCss]=\"model.cssClasses.cleanButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{ model.readOnlyText }}</div>\n</div>", components: [{ type: TagboxItemComponent, selector: "sv-ng-tagbox-item, '[sv-ng-tagbox-item]'", inputs: ["item", "question"] }, { type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxComponent, decorators: [{
894
+ type: Component,
895
+ args: [{ selector: "sv-ng-tagbox, '[sv-ng-tagbox]'", template: "<div [class]=\"model.cssClasses.selectWrapper\">\n <div *ngIf=\"!model.isReadOnly\" [tabindex]=\"model.isInputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keyup)=\"keyup($event)\" [attr.id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.role]=\"model.ariaRole\">\n <div *ngIf=\"model.isEmpty()\" [class]=\"model.cssClasses.controlValue\">{{ model.placeholder }}</div>\n <ul *ngIf=\"!model.isEmpty()\" [class]=\"model.cssClasses.controlValue\">\n <sv-ng-tagbox-item *ngFor=\"let item of model.selectedItems\" [item]=\"item\" [question]=\"model\"></sv-ng-tagbox-item>\n </ul>\n <div *ngIf=\"(model.allowClear && model.cssClasses.cleanButtonIconId)\" [class]=\"model.cssClasses.cleanButton\"\n (click)=\"clear($event)\" [visible]=\"!model.isEmpty()\">\n <!-- ko component: { name: 'sv-svg-icon', params: { css: model.cssClasses.cleanButtonSvg, iconName: model.cssClasses.cleanButtonIconId, size: 'auto' } } -->\n <!-- /ko -->\n <svg [iconName]=\"model.cssClasses.cleanButtonIconId\" [partCss]=\"model.cssClasses.cleanButtonSvg\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">{{ model.readOnlyText }}</div>\n</div>" }]
896
+ }], propDecorators: { model: [{
897
+ type: Input
898
+ }] } });
899
+
900
+ class QuestionAngular extends BaseAngular {
901
+ getModel() {
902
+ return this.model;
903
+ }
904
+ ngAfterViewInit() {
905
+ var _a;
906
+ if (!!this.model) {
907
+ this.model.afterRenderQuestionElement((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement);
908
+ }
909
+ }
910
+ ngOnDestroy() {
911
+ var _a;
912
+ if (!!this.model) {
913
+ this.model.beforeDestroyQuestionElement((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement);
914
+ }
915
+ super.ngOnDestroy();
916
+ }
917
+ }
918
+ QuestionAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionAngular, deps: null, target: i0.ɵɵFactoryTarget.Component });
919
+ QuestionAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: QuestionAngular, selector: "ng-component", inputs: { model: "model" }, viewQueries: [{ propertyName: "elementContentRef", first: true, predicate: ["contentElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true });
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: QuestionAngular, decorators: [{
921
+ type: Component,
922
+ args: [{
923
+ template: ""
924
+ }]
925
+ }], propDecorators: { model: [{
926
+ type: Input
927
+ }], elementContentRef: [{
928
+ type: ViewChild,
929
+ args: ["contentElement"]
930
+ }] } });
931
+
932
+ class TextQuestionComponent extends QuestionAngular {
933
+ keyup(event) {
934
+ if (this.model.isInputTextUpdate) {
935
+ this.model.value = event.target.value;
936
+ }
937
+ }
938
+ onChange(event) {
939
+ if (!this.model.isInputTextUpdate) {
940
+ this.model.value = event.target.value;
941
+ }
942
+ }
943
+ }
944
+ TextQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TextQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
945
+ TextQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: TextQuestionComponent, selector: "sv-ng-text-question", usesInheritance: true, ngImport: i0, template: " <input *ngIf=\"!model.dataListId && !model.isReadOnlyRenderDiv()\" [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\"\n (change)=\"onChange($event)\" [attr.value]=\"model.value\" [disabled]=\"model.isInputReadOnly\" name=\"user\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder || ''\"\n (keyup)=\"keyup($event)\" [attr.size] = \"model.renderedInputSize\" [attr.max-length]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.autocomplete]=\"model.autoComplete\"\n [attr.ar] #contentElement/>\n <div *ngIf=\"model.dataListId && !model.isReadOnlyRenderDiv()\" #contentElement>\n <input\n [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\"\n (change)=\"onChange($event)\" [attr.value]=\"model.value\"\n [disabled]=\"model.isInputReadOnly\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder || ''\"\n (keyup)=\"keyup($event)\" [attr.size] = \"model.renderedInputSize\" [attr.max-length]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.autocomplete]=\"model.autoComplete\"\n />\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>{{ model.value }}</div>\n", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
946
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TextQuestionComponent, decorators: [{
947
+ type: Component,
948
+ args: [{ selector: "sv-ng-text-question", template: " <input *ngIf=\"!model.dataListId && !model.isReadOnlyRenderDiv()\" [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\"\n (change)=\"onChange($event)\" [attr.value]=\"model.value\" [disabled]=\"model.isInputReadOnly\" name=\"user\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder || ''\"\n (keyup)=\"keyup($event)\" [attr.size] = \"model.renderedInputSize\" [attr.max-length]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.autocomplete]=\"model.autoComplete\"\n [attr.ar] #contentElement/>\n <div *ngIf=\"model.dataListId && !model.isReadOnlyRenderDiv()\" #contentElement>\n <input\n [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\"\n (change)=\"onChange($event)\" [attr.value]=\"model.value\"\n [disabled]=\"model.isInputReadOnly\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder || ''\"\n (keyup)=\"keyup($event)\" [attr.size] = \"model.renderedInputSize\" [attr.max-length]= \"model.getMaxLength()\" [attr.min]=\"model.renderedMin\"\n [attr.max]=\"model.renderedMax\" [attr.step]=\"model.renderedStep\" [attr.max]=\"model.renderedMax\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [attr.autocomplete]=\"model.autoComplete\"\n />\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>{{ model.value }}</div>\n", styles: [""] }]
949
+ }] });
950
+ AngularComponentFactory.Instance.registerComponent("text-question", TextQuestionComponent);
951
+
952
+ class SafeHtmlPipe {
953
+ constructor(domSanitizer) {
954
+ this.domSanitizer = domSanitizer;
955
+ }
956
+ transform(url) {
957
+ return this.domSanitizer.bypassSecurityTrustHtml(url);
958
+ }
959
+ }
960
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
961
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" });
962
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SafeHtmlPipe, decorators: [{
963
+ type: Pipe,
964
+ args: [{ name: "safeHtml" }]
965
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
966
+
967
+ class HtmlQuestionComponent extends QuestionAngular {
968
+ onModelChanged() {
969
+ super.onModelChanged();
970
+ this.model.locHtml.onChanged = () => {
971
+ this.detectChanges();
972
+ };
973
+ }
974
+ ngOnDestroy() {
975
+ this.model.locHtml.onChanged = () => { };
976
+ super.ngOnDestroy();
977
+ }
978
+ }
979
+ HtmlQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: HtmlQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
980
+ HtmlQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: HtmlQuestionComponent, selector: "sv-ng-html-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\" [innerHTML]=\"model.locHtml.renderedHtml | safeHtml\" #contentElement></div>", pipes: { "safeHtml": SafeHtmlPipe } });
981
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: HtmlQuestionComponent, decorators: [{
982
+ type: Component,
983
+ args: [{ selector: "sv-ng-html-question", template: "<div [class]=\"model.renderCssRoot\" [innerHTML]=\"model.locHtml.renderedHtml | safeHtml\" #contentElement></div>", styles: [] }]
984
+ }] });
985
+ AngularComponentFactory.Instance.registerComponent("html-question", HtmlQuestionComponent);
986
+
987
+ class CheckboxItemComponent {
988
+ constructor() {
989
+ }
990
+ onChange(event) {
991
+ var newValue = [].concat(this.question.renderedValue || []);
992
+ var index = newValue.indexOf(this.model.value);
993
+ if (event.target.checked) {
994
+ if (index < 0) {
995
+ newValue.push(this.model.value);
996
+ }
997
+ }
998
+ else {
999
+ if (index > -1) {
1000
+ newValue.splice(index, 1);
1001
+ }
1002
+ }
1003
+ this.question.renderedValue = newValue;
1004
+ }
1005
+ onSelectAllChange(event) {
1006
+ this.question.toggleSelectAll();
1007
+ }
1008
+ }
1009
+ CheckboxItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CheckboxItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1010
+ CheckboxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: { question: "question", model: "model" }, ngImport: i0, template: "<input *ngIf=\"model == question.selectAllItem\" type=\"checkbox\" [name]=\"question.name\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [checked]=\"question.isAllSelected\" [value]=\"''\" (change)=\"onSelectAllChange($event)\"/>\n<input *ngIf=\"model != question.selectAllItem\" type=\"checkbox\" [name]=\"question.name\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [checked]=\"question.isItemSelected(model)\" [value]=\"model.value\" (change)=\"onChange($event)\"/>\n<ng-content></ng-content>", styles: [""], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1011
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CheckboxItemComponent, decorators: [{
1012
+ type: Component,
1013
+ args: [{ selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", template: "<input *ngIf=\"model == question.selectAllItem\" type=\"checkbox\" [name]=\"question.name\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [checked]=\"question.isAllSelected\" [value]=\"''\" (change)=\"onSelectAllChange($event)\"/>\n<input *ngIf=\"model != question.selectAllItem\" type=\"checkbox\" [name]=\"question.name\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [checked]=\"question.isItemSelected(model)\" [value]=\"model.value\" (change)=\"onChange($event)\"/>\n<ng-content></ng-content>", styles: [""] }]
1014
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1015
+ type: Input
1016
+ }], model: [{
1017
+ type: Input
1018
+ }] } });
1019
+
1020
+ class RadiogroupItemComponent {
1021
+ constructor() {
1022
+ }
1023
+ }
1024
+ RadiogroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RadiogroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1025
+ RadiogroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: { question: "question", model: "model" }, ngImport: i0, template: "<input type=\"radio\" [name]=\"question.questionName\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [(ngModel)]=\"question.renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\"\n/>\n<ng-content></ng-content>", styles: [""], 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"] }] });
1026
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RadiogroupItemComponent, decorators: [{
1027
+ type: Component,
1028
+ args: [{ selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", template: "<input type=\"radio\" [name]=\"question.questionName\" [id]=\"question.getItemId(model)\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [class]=\"question.cssClasses.itemControl\"\n [disabled]=\"!question.getItemEnabled(model)\" [(ngModel)]=\"question.renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\"\n/>\n<ng-content></ng-content>", styles: [""] }]
1029
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1030
+ type: Input
1031
+ }], model: [{
1032
+ type: Input
1033
+ }] } });
1034
+
1035
+ class SelectBaseItemComponent extends BaseAngular {
1036
+ constructor() {
1037
+ super(...arguments);
1038
+ this.showLabel = true;
1039
+ }
1040
+ getModel() {
1041
+ return this.model;
1042
+ }
1043
+ }
1044
+ SelectBaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SelectBaseItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1045
+ SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\">\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [attr.aria-label]=\"question.getAriaItemLabel(model)\" [model]=\"model\" [question]=\"question\" sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" [class]=\"question.getLabelClass(model)\" [attr.aria-label]=\"question.getAriaItemLabel(model)\" [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" [visible]=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span> \n </ng-template>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
1046
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SelectBaseItemComponent, decorators: [{
1047
+ type: Component,
1048
+ args: [{ selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", styles: [":host { display: none; }"], template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\">\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [attr.aria-label]=\"question.getAriaItemLabel(model)\" [model]=\"model\" [question]=\"question\" sv-ng-checkbox-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" [class]=\"question.getLabelClass(model)\" [attr.aria-label]=\"question.getAriaItemLabel(model)\" [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item>\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" [visible]=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span> \n </ng-template>\n </div>\n</ng-template>" }]
1049
+ }], propDecorators: { question: [{
1050
+ type: Input
1051
+ }], model: [{
1052
+ type: Input
1053
+ }], inputType: [{
1054
+ type: Input
1055
+ }], showLabel: [{
1056
+ type: Input
1057
+ }] } });
1058
+
1059
+ class SelectBaseComponent extends QuestionAngular {
1060
+ constructor() {
1061
+ super(...arguments);
1062
+ this.inputType = "checkbox";
1063
+ this.showLegend = true;
1064
+ }
1065
+ }
1066
+ SelectBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SelectBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1067
+ SelectBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SelectBaseComponent, selector: "['sv-ng-selectbase']", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>", components: [{ type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: ["question", "model", "inputType", "showLabel"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1068
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SelectBaseComponent, decorators: [{
1069
+ type: Component,
1070
+ args: [{ selector: "['sv-ng-selectbase']", template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>" }]
1071
+ }], propDecorators: { model: [{
1072
+ type: Input
1073
+ }] } });
1074
+ AngularComponentFactory.Instance.registerComponent("selectbase", SelectBaseComponent);
1075
+
1076
+ class RadiogroupComponent extends SelectBaseComponent {
1077
+ ngOnInit() {
1078
+ this.inputType = "radio";
1079
+ this.showLegend = false;
1080
+ super.ngOnInit();
1081
+ }
1082
+ }
1083
+ RadiogroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RadiogroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1084
+ RadiogroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RadiogroupComponent, selector: "sv-ng-radiogroup-question", usesInheritance: true, ngImport: i0, template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>", components: [{ type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: ["question", "model", "inputType", "showLabel"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1085
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RadiogroupComponent, decorators: [{
1086
+ type: Component,
1087
+ args: [{ selector: "sv-ng-radiogroup-question", template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>" }]
1088
+ }] });
1089
+ AngularComponentFactory.Instance.registerComponent("radiogroup-question", RadiogroupComponent);
1090
+
1091
+ class CheckboxComponent extends SelectBaseComponent {
1092
+ }
1093
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1094
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CheckboxComponent, selector: "sv-ng-checkbox-question", usesInheritance: true, ngImport: i0, template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>", components: [{ type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: ["question", "model", "inputType", "showLabel"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CheckboxComponent, decorators: [{
1096
+ type: Component,
1097
+ args: [{ selector: "sv-ng-checkbox-question", template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" role=\"presentation\" #contentElement>\n <legend *ngIf=\"showLegend\" role=\"presentation\" class=\"sv-hidden\"></legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.headItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.visibleChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.dataChoices\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns\" role=\"presentation\">\n <sv-ng-selectbase-item *ngFor=\"let item of column\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item> \n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <sv-ng-selectbase-item *ngFor=\"let item of model.footItems\" [question]=\"model\" [model]=\"item\" [inputType]=\"inputType\"></sv-ng-selectbase-item>\n </ng-container>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue()\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>" }]
1098
+ }] });
1099
+ AngularComponentFactory.Instance.registerComponent("checkbox-question", CheckboxComponent);
1100
+
1101
+ class DropdownQuestionComponent extends QuestionAngular {
1102
+ }
1103
+ DropdownQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1104
+ DropdownQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: DropdownQuestionComponent, selector: "sv-ng-dropdown-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\" #contentElement>\n <sv-ng-dropdown [model]=\"model\"></sv-ng-dropdown>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n</div>", components: [{ type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: ["model"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownQuestionComponent, decorators: [{
1106
+ type: Component,
1107
+ args: [{ selector: "sv-ng-dropdown-question", template: "<div [class]=\"model.renderCssRoot\" #contentElement>\n <sv-ng-dropdown [model]=\"model\"></sv-ng-dropdown>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n</div>" }]
1108
+ }] });
1109
+ AngularComponentFactory.Instance.registerComponent("dropdown-question", DropdownQuestionComponent);
1110
+
1111
+ class DropdownOptionItemComponent extends BaseAngular {
1112
+ getModel() {
1113
+ return this.item;
1114
+ }
1115
+ }
1116
+ DropdownOptionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownOptionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1117
+ DropdownOptionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownOptionItemComponent, decorators: [{
1119
+ type: Component,
1120
+ args: [{
1121
+ selector: "sv-ng-dropdown-option-item, '[sv-ng-dropdown-option-item]'",
1122
+ template: '<ng-template #template><option [value]="item.value" [disabled]="!item.isEnabled">{{ item.text }}</option><ng-template>',
1123
+ }]
1124
+ }], propDecorators: { item: [{
1125
+ type: Input
1126
+ }] } });
1127
+ AngularComponentFactory.Instance.registerComponent("sv-dropdown-option-item", DropdownOptionItemComponent);
1128
+
1129
+ class DropdownSelectComponent {
1130
+ get editableValue() {
1131
+ return this.model.renderedValue || "";
1132
+ }
1133
+ set editableValue(newValue) {
1134
+ if (newValue === "") {
1135
+ this.model.renderedValue = undefined;
1136
+ }
1137
+ else {
1138
+ this.model.renderedValue = newValue;
1139
+ }
1140
+ }
1141
+ click(event) {
1142
+ this.model.onClick(event);
1143
+ }
1144
+ keyup(event) {
1145
+ this.model.onKeyUp(event);
1146
+ }
1147
+ }
1148
+ DropdownSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1149
+ DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\">\n <option *ngIf=\"model.allowClear\" value=\"\">{{ model.placeholder }}</option>\n <ng-template *ngFor=\"let item of model.visibleChoices\" [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\">{{ model.readOnlyText }}</div>\n </div>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\"\n [style.display]=\"model.isFlowLayout ? 'inline': '' \" [question]=\"model\" sv-ng-comment></div>\n</div>", components: [{ type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1150
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: DropdownSelectComponent, decorators: [{
1151
+ type: Component,
1152
+ args: [{ selector: "sv-ng-dropdown-select-question", 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.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\">\n <option *ngIf=\"model.allowClear\" value=\"\">{{ model.placeholder }}</option>\n <ng-template *ngFor=\"let item of model.visibleChoices\" [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\">{{ model.readOnlyText }}</div>\n </div>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\"\n [style.display]=\"model.isFlowLayout ? 'inline': '' \" [question]=\"model\" sv-ng-comment></div>\n</div>" }]
1153
+ }], propDecorators: { model: [{
1154
+ type: Input
1155
+ }] } });
1156
+ AngularComponentFactory.Instance.registerComponent("dropdown-select-question", DropdownSelectComponent);
1157
+ RendererFactory.Instance.registerRenderer("dropdown", "select", "dropdown-select-question");
1158
+
1159
+ class TagboxQuestionComponent extends QuestionAngular {
1160
+ }
1161
+ TagboxQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1162
+ TagboxQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: TagboxQuestionComponent, selector: "sv-ng-tagbox-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\" #contentElement>\n <sv-ng-tagbox [model]=\"model\"></sv-ng-tagbox>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n</div>", components: [{ type: TagboxComponent, selector: "sv-ng-tagbox, '[sv-ng-tagbox]'", inputs: ["model"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: TagboxQuestionComponent, decorators: [{
1164
+ type: Component,
1165
+ args: [{ selector: "sv-ng-tagbox-question", template: "<div [class]=\"model.renderCssRoot\" #contentElement>\n <sv-ng-tagbox [model]=\"model\"></sv-ng-tagbox>\n <div *ngIf=\"model.hasOther && model.isOtherSelected\" class=\"form-group\" [question]=\"model\" sv-ng-comment></div>\n</div>" }]
1166
+ }] });
1167
+ AngularComponentFactory.Instance.registerComponent("tagbox-question", TagboxQuestionComponent);
1168
+
1169
+ class RatingQuestionComponent extends QuestionAngular {
1170
+ trackByFn(index) {
1171
+ return index;
1172
+ }
1173
+ onClick(event) {
1174
+ event.stopPropagation();
1175
+ this.model.setValueFromClick(event.target.value);
1176
+ }
1177
+ }
1178
+ RatingQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RatingQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1179
+ RatingQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RatingQuestionComponent, selector: "sv-ng-rating-question", usesInheritance: true, ngImport: i0, template: " <div [class]=\"model.ratingRootCss\" #contentElement>\n <fieldset role=\"radiogroup\">\n <legend role=\"presentation\" class=\"sv-hidden\"></legend>\n <span *ngIf=\"model.hasMinLabel\" [class]=\"model.cssClasses.minText\" [model]=\"model.locMinRateDescription\" sv-ng-string>\n </span>\n <label *ngFor=\"let item of model.renderedRateItems; index as index; trackBy: trackByFn\" [class]=\"model.getItemClass(item.itemValue)\" >\n <input type=\"radio\"\n class=\"sv-visuallyhidden\"\n [attr.name]=\"model.name\" [attr.id]=\"model.getInputId(index)\" [value]=\"item.value\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [disabled]=\"model.isInputReadOnly\" [checked]=\"model.value === item.value\" (click)=\"onClick($event)\"\n />\n <span [class]=\"model.cssClasses.itemText\" [model]=\"item.locText\" sv-ng-string></span>\n </label>\n <span *ngIf=\"model.hasMaxLabel\" [class]=\"model.cssClasses.maxText\" [model]=\"model.locMaxRateDescription\" sv-ng-string></span>\n </fieldset>\n </div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RatingQuestionComponent, decorators: [{
1181
+ type: Component,
1182
+ args: [{ selector: "sv-ng-rating-question", template: " <div [class]=\"model.ratingRootCss\" #contentElement>\n <fieldset role=\"radiogroup\">\n <legend role=\"presentation\" class=\"sv-hidden\"></legend>\n <span *ngIf=\"model.hasMinLabel\" [class]=\"model.cssClasses.minText\" [model]=\"model.locMinRateDescription\" sv-ng-string>\n </span>\n <label *ngFor=\"let item of model.renderedRateItems; index as index; trackBy: trackByFn\" [class]=\"model.getItemClass(item.itemValue)\" >\n <input type=\"radio\"\n class=\"sv-visuallyhidden\"\n [attr.name]=\"model.name\" [attr.id]=\"model.getInputId(index)\" [value]=\"item.value\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [disabled]=\"model.isInputReadOnly\" [checked]=\"model.value === item.value\" (click)=\"onClick($event)\"\n />\n <span [class]=\"model.cssClasses.itemText\" [model]=\"item.locText\" sv-ng-string></span>\n </label>\n <span *ngIf=\"model.hasMaxLabel\" [class]=\"model.cssClasses.maxText\" [model]=\"model.locMaxRateDescription\" sv-ng-string></span>\n </fieldset>\n </div>\n" }]
1183
+ }] });
1184
+ AngularComponentFactory.Instance.registerComponent("rating-question", RatingQuestionComponent);
1185
+
1186
+ class BooleanQuestionComponent extends QuestionAngular {
1187
+ onChange(event) {
1188
+ this.model.checkedValue = event.target.value;
1189
+ }
1190
+ }
1191
+ BooleanQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1192
+ BooleanQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [class]=\"model.cssClasses.control\" [disabled]=\"model.isInputReadOnly\" [indeterminate]=\"model.isIndeterminate\" [value]=\"model.checkedValue\" [(ngModel)]=\"model.checkedValue\" />\n <span [class]=\"model.getLabelCss(false)\" (click)=\"model.onLabelClick($event, false)\" [model]=\"model.locLabelFalse\" sv-ng-string></span>\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 <span [class]=\"model.getLabelCss(true)\" (click)=\"model.onLabelClick($event, true)\" [model]=\"model.locLabelTrue\" sv-ng-string></span>\n </label>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }] });
1193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanQuestionComponent, decorators: [{
1194
+ type: Component,
1195
+ args: [{ selector: "sv-ng-boolean-question", 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\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\" [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [class]=\"model.cssClasses.control\" [disabled]=\"model.isInputReadOnly\" [indeterminate]=\"model.isIndeterminate\" [value]=\"model.checkedValue\" [(ngModel)]=\"model.checkedValue\" />\n <span [class]=\"model.getLabelCss(false)\" (click)=\"model.onLabelClick($event, false)\" [model]=\"model.locLabelFalse\" sv-ng-string></span>\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 <span [class]=\"model.getLabelCss(true)\" (click)=\"model.onLabelClick($event, true)\" [model]=\"model.locLabelTrue\" sv-ng-string></span>\n </label>\n</div>" }]
1196
+ }] });
1197
+ AngularComponentFactory.Instance.registerComponent("boolean-question", BooleanQuestionComponent);
1198
+
1199
+ class ImagePickerItemComponent extends BaseAngular {
1200
+ getModel() {
1201
+ return this.model;
1202
+ }
1203
+ onChange(event) {
1204
+ if (this.question.multiSelect) {
1205
+ if (event.target.checked) {
1206
+ this.question.value = this.question.value.concat(event.target.value);
1207
+ }
1208
+ else {
1209
+ var currValue = this.question.value;
1210
+ currValue.splice(this.question.value.indexOf(event.target.value), 1);
1211
+ this.question.value = currValue;
1212
+ }
1213
+ }
1214
+ else {
1215
+ this.question.value = event.target.value;
1216
+ }
1217
+ }
1218
+ ngAfterViewInit() {
1219
+ this.model.locImageLink.onChanged = () => {
1220
+ this.detectChanges();
1221
+ };
1222
+ }
1223
+ ngOnDestroy() {
1224
+ super.ngOnDestroy();
1225
+ this.model.locImageLink.onChanged = () => { };
1226
+ }
1227
+ }
1228
+ ImagePickerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImagePickerItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1229
+ ImagePickerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ImagePickerItemComponent, selector: "sv-ng-imagepicker-item", inputs: { question: "question", model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"question.getItemClass(model)\">\n <label [class]=\"question.cssClasses.label\">\n <input [type]=\"question.inputType\" [attr.name]=\"question.questionName\" [attr.value]=\"model.value\" [id]=\"question.getItemId(model)\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.aria-invalid]=\"question.ariaInvalid\" [attr.aria-describedby]=\"question.ariaDescribedBy\"\n (change)=\"onChange($event)\" [checked]=\"question.isItemSelected(model)\" [disabled]=\"!question.getItemEnabled(model)\" [class]=\"question.cssClasses.itemControl\"\n />\n <div [class]=\"question.cssClasses.itemDecorator\">\n <div [class]=\"question.cssClasses.imageContainer\">\n <img *ngIf=\"model.locImageLink.renderedHtml && question.contentMode === 'image'\" [class]=\"question.cssClasses.image\" [attr.src]=\"model.locImageLink.renderedHtml\" [attr.width]=\"question.renderedImageWidth\" [attr.height]=\"question.renderedImageHeight\" [attr.alt]=\"model.locText.renderedHtml\" [style.objectFit]=\"question.imageFit\" (load)=\"question.onContentLoaded(model, $event)\"/>\n <video *ngIf=\"model.locImageLink.renderedHtml && question.contentMode === 'video'\" controls [class]=\"question.cssClasses.image\" [attr.src]=\"model.locImageLink.renderedHtml\" [attr.width]=\"question.renderedImageWidth\" [attr.height]=\"question.renderedImageHeight\" [style.objectFit]=\"question.imageFit\" (loadedmetadata)=\"question.onContentLoaded(model, $event)\"></video>\n <div *ngIf=\"!model.locImageLink.renderedHtml\" [class]=\"question.cssClasses.itemNoImage\" [style.width]=\"question.renderedImageWidth\" [style.height]=\"question.renderedImageHeight\" [style.objectFit]=\"question.imageFit\">\n <svg [class]=\"question.cssClasses.itemNoImageSvgIcon\" *ngIf=\"question.cssClasses.itemNoImageSvgIcon\">\n <use [attr.xlink:href]=\"question.cssClasses.itemNoImageSvgIconId\"></use>\n </svg>\n </div>\n </div>\n <span *ngIf=\"question.showLabel\" [class]=\"question.cssClasses.itemText\" [model]=\"model.locText\" sv-ng-string></span>\n </div>\n </label>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImagePickerItemComponent, decorators: [{
1231
+ type: Component,
1232
+ args: [{ selector: "sv-ng-imagepicker-item", styles: [":host { display: none; }"], template: "<ng-template #template>\n <div [class]=\"question.getItemClass(model)\">\n <label [class]=\"question.cssClasses.label\">\n <input [type]=\"question.inputType\" [attr.name]=\"question.questionName\" [attr.value]=\"model.value\" [id]=\"question.getItemId(model)\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.aria-invalid]=\"question.ariaInvalid\" [attr.aria-describedby]=\"question.ariaDescribedBy\"\n (change)=\"onChange($event)\" [checked]=\"question.isItemSelected(model)\" [disabled]=\"!question.getItemEnabled(model)\" [class]=\"question.cssClasses.itemControl\"\n />\n <div [class]=\"question.cssClasses.itemDecorator\">\n <div [class]=\"question.cssClasses.imageContainer\">\n <img *ngIf=\"model.locImageLink.renderedHtml && question.contentMode === 'image'\" [class]=\"question.cssClasses.image\" [attr.src]=\"model.locImageLink.renderedHtml\" [attr.width]=\"question.renderedImageWidth\" [attr.height]=\"question.renderedImageHeight\" [attr.alt]=\"model.locText.renderedHtml\" [style.objectFit]=\"question.imageFit\" (load)=\"question.onContentLoaded(model, $event)\"/>\n <video *ngIf=\"model.locImageLink.renderedHtml && question.contentMode === 'video'\" controls [class]=\"question.cssClasses.image\" [attr.src]=\"model.locImageLink.renderedHtml\" [attr.width]=\"question.renderedImageWidth\" [attr.height]=\"question.renderedImageHeight\" [style.objectFit]=\"question.imageFit\" (loadedmetadata)=\"question.onContentLoaded(model, $event)\"></video>\n <div *ngIf=\"!model.locImageLink.renderedHtml\" [class]=\"question.cssClasses.itemNoImage\" [style.width]=\"question.renderedImageWidth\" [style.height]=\"question.renderedImageHeight\" [style.objectFit]=\"question.imageFit\">\n <svg [class]=\"question.cssClasses.itemNoImageSvgIcon\" *ngIf=\"question.cssClasses.itemNoImageSvgIcon\">\n <use [attr.xlink:href]=\"question.cssClasses.itemNoImageSvgIconId\"></use>\n </svg>\n </div>\n </div>\n <span *ngIf=\"question.showLabel\" [class]=\"question.cssClasses.itemText\" [model]=\"model.locText\" sv-ng-string></span>\n </div>\n </label>\n </div>\n</ng-template>" }]
1233
+ }], propDecorators: { question: [{
1234
+ type: Input
1235
+ }], model: [{
1236
+ type: Input
1237
+ }] } });
1238
+
1239
+ class ImagePickerQuestionComponent extends QuestionAngular {
1240
+ }
1241
+ ImagePickerQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImagePickerQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1242
+ ImagePickerQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ImagePickerQuestionComponent, selector: "sv-ng-imagepicker-question", usesInheritance: true, ngImport: i0, template: " <fieldset [class]=\"model.getSelectBaseRootCss()\" #contentElement>\n <legend [attr.aria-label]=\"model.locTitle.renderedHtml\" role=\"radio\"></legend>\n <ng-container *ngIf=\"!model.hasColumns\">\n <sv-ng-imagepicker-item *ngFor=\"let item of model.visibleChoices\" [model]=\"$any(item)\" [question]=\"model\"></sv-ng-imagepicker-item>\n </ng-container>\n <ng-container *ngIf=\"model.hasColumns\">\n <div *ngFor=\"let column of model.columns\" [class]=\"model.getColumnClass()\" role=\"presentation\">\n <sv-ng-imagepicker-item *ngFor=\"let item of column\" [model]=\"item\" [question]=\"model\"></sv-ng-imagepicker-item>\n </div>\n </ng-container>\n </fieldset>", components: [{ type: ImagePickerItemComponent, selector: "sv-ng-imagepicker-item", inputs: ["question", "model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImagePickerQuestionComponent, decorators: [{
1244
+ type: Component,
1245
+ args: [{ selector: "sv-ng-imagepicker-question", template: " <fieldset [class]=\"model.getSelectBaseRootCss()\" #contentElement>\n <legend [attr.aria-label]=\"model.locTitle.renderedHtml\" role=\"radio\"></legend>\n <ng-container *ngIf=\"!model.hasColumns\">\n <sv-ng-imagepicker-item *ngFor=\"let item of model.visibleChoices\" [model]=\"$any(item)\" [question]=\"model\"></sv-ng-imagepicker-item>\n </ng-container>\n <ng-container *ngIf=\"model.hasColumns\">\n <div *ngFor=\"let column of model.columns\" [class]=\"model.getColumnClass()\" role=\"presentation\">\n <sv-ng-imagepicker-item *ngFor=\"let item of column\" [model]=\"item\" [question]=\"model\"></sv-ng-imagepicker-item>\n </div>\n </ng-container>\n </fieldset>" }]
1246
+ }] });
1247
+ AngularComponentFactory.Instance.registerComponent("imagepicker-question", ImagePickerQuestionComponent);
1248
+
1249
+ class Key2ClickDirective {
1250
+ constructor(el) {
1251
+ this.el = el;
1252
+ this.isSubscribed = false;
1253
+ this.options = Key2ClickDirective.defaultOptions;
1254
+ this.subscribeEventListeners();
1255
+ }
1256
+ onkeydown(evt) {
1257
+ doKey2ClickDown(evt, this.options);
1258
+ }
1259
+ onkeyup(evt) {
1260
+ evt.preventDefault();
1261
+ evt.stopPropagation();
1262
+ doKey2ClickUp(evt, this.options);
1263
+ return false;
1264
+ }
1265
+ blur(evt) {
1266
+ doKey2ClickBlur(evt);
1267
+ }
1268
+ get element() {
1269
+ return this.el.nativeElement;
1270
+ }
1271
+ subscribeEventListeners() {
1272
+ if (this.isSubscribed)
1273
+ return;
1274
+ this.element.tabIndex = 0;
1275
+ this.element.addEventListener("keyup", this.onkeyup);
1276
+ this.element.addEventListener("keydown", this.onkeydown);
1277
+ this.element.addEventListener("blur", this.blur);
1278
+ this.isSubscribed = true;
1279
+ }
1280
+ unsubscribeEventListeners() {
1281
+ if (!this.isSubscribed)
1282
+ return;
1283
+ this.element.tabIndex = -1;
1284
+ this.element.removeEventListener("keyup", this.onkeyup);
1285
+ this.element.removeEventListener("keydown", this.onkeydown);
1286
+ this.element.removeEventListener("blur", this.blur);
1287
+ this.isSubscribed = false;
1288
+ }
1289
+ ngOnChanges(changes) {
1290
+ const curValue = changes["key2click"].currentValue;
1291
+ if (curValue.disableTabStop) {
1292
+ this.unsubscribeEventListeners();
1293
+ }
1294
+ else {
1295
+ this.subscribeEventListeners();
1296
+ }
1297
+ this.options = Object.assign({}, Key2ClickDirective.defaultOptions, curValue);
1298
+ }
1299
+ ngOnDestroy() {
1300
+ this.unsubscribeEventListeners();
1301
+ }
1302
+ }
1303
+ Key2ClickDirective.defaultOptions = { processEsc: true, disableTabStop: false };
1304
+ Key2ClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Key2ClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1305
+ Key2ClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.0.3", type: Key2ClickDirective, selector: "[key2click]", inputs: { key2click: "key2click" }, usesOnChanges: true, ngImport: i0 });
1306
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: Key2ClickDirective, decorators: [{
1307
+ type: Directive,
1308
+ args: [{
1309
+ selector: "[key2click]"
1310
+ }]
1311
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { key2click: [{
1312
+ type: Input
1313
+ }] } });
1314
+
1315
+ class ActionBarItemComponent extends BaseAngular {
1316
+ getModel() {
1317
+ return this.model;
1318
+ }
1319
+ }
1320
+ ActionBarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1321
+ ActionBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ActionBarItemComponent, selector: "sv-action-bar-item", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <button type=\"button\" (click)=\"model.action()\" [key2click]=\"{ processEsc: false }\" [class]=\"model.getActionBarItemCss()\" [attr.title]=\"model.tooltip || model.title\" [disabled]=\"model.disabled\" \n data-bind=\"key2click: { processEsc: false }\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [title]=\"model.tooltip || model.title\" [class]=\"model.cssClasses.itemIcon\" sv-ng-svg-icon></svg>\n <span *ngIf=\"model.hasTitle\" [class]=\"model.getActionBarItemTitleCss()\">{{ model.title }}</span>\n </button>\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: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarItemComponent, decorators: [{
1323
+ type: Component,
1324
+ args: [{ selector: "sv-action-bar-item", template: "<ng-template #template>\n <button type=\"button\" (click)=\"model.action()\" [key2click]=\"{ processEsc: false }\" [class]=\"model.getActionBarItemCss()\" [attr.title]=\"model.tooltip || model.title\" [disabled]=\"model.disabled\" \n data-bind=\"key2click: { processEsc: false }\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [title]=\"model.tooltip || model.title\" [class]=\"model.cssClasses.itemIcon\" sv-ng-svg-icon></svg>\n <span *ngIf=\"model.hasTitle\" [class]=\"model.getActionBarItemTitleCss()\">{{ model.title }}</span>\n </button>\n<ng-template>", styles: [":host{display:none}\n"] }]
1325
+ }], propDecorators: { model: [{
1326
+ type: Input
1327
+ }] } });
1328
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar-item", ActionBarItemComponent);
1329
+
1330
+ class ActionBarItemDropdownComponent extends BaseAngular {
1331
+ getModel() {
1332
+ return this.model;
1333
+ }
1334
+ ngOnInit() {
1335
+ super.ngOnInit();
1336
+ this.viewModel = new ActionDropdownViewModel(this.model);
1337
+ }
1338
+ ngOnDestroy() {
1339
+ this.viewModel.dispose();
1340
+ super.ngOnDestroy();
1341
+ }
1342
+ }
1343
+ ActionBarItemDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarItemDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1344
+ ActionBarItemDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ActionBarItemDropdownComponent, selector: "sv-action-bar-item-dropdown", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <button type=\"button\" (click)=\"model.action()\" [key2click]=\"{ processEsc: false }\" [class]=\"model.getActionBarItemCss()\" [title]=\"model.tooltip || model.title\" [disabled]=\"model.disabled\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [title]=\"model.tooltip || model.title\" [class]=\"model.cssClasses.itemIcon\" sv-ng-svg-icon></svg>\n <span *ngIf=\"model.hasTitle\" [class]=\"model.getActionBarItemTitleCss()\">{{ model.title }}</span>\n <sv-ng-popup [popupModel]=\"model.popupModel\"></sv-ng-popup>\n </button>\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: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ActionBarItemDropdownComponent, decorators: [{
1346
+ type: Component,
1347
+ args: [{ selector: "sv-action-bar-item-dropdown", template: "<ng-template #template>\n <button type=\"button\" (click)=\"model.action()\" [key2click]=\"{ processEsc: false }\" [class]=\"model.getActionBarItemCss()\" [title]=\"model.tooltip || model.title\" [disabled]=\"model.disabled\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [title]=\"model.tooltip || model.title\" [class]=\"model.cssClasses.itemIcon\" sv-ng-svg-icon></svg>\n <span *ngIf=\"model.hasTitle\" [class]=\"model.getActionBarItemTitleCss()\">{{ model.title }}</span>\n <sv-ng-popup [popupModel]=\"model.popupModel\"></sv-ng-popup>\n </button>\n</ng-template>", styles: [":host{display:none}\n"] }]
1348
+ }], propDecorators: { model: [{
1349
+ type: Input
1350
+ }] } });
1351
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar-item-dropdown", ActionBarItemDropdownComponent);
1352
+
1353
+ class ListItemComponent extends BaseAngular {
1354
+ get ariaSelected() {
1355
+ return this.listModel.isItemSelected(this.model) || "";
1356
+ }
1357
+ get class() {
1358
+ return this.listModel.getItemClass(this.model);
1359
+ }
1360
+ get paddingLeft() {
1361
+ return this.listModel.getItemIndent(this.model);
1362
+ }
1363
+ click(event) {
1364
+ this.listModel.onItemClick(this.model);
1365
+ event.stopPropagation();
1366
+ }
1367
+ pointerdown(event) {
1368
+ this.listModel.onPointerDown(event, this.model);
1369
+ }
1370
+ getModel() {
1371
+ return this.model;
1372
+ }
1373
+ }
1374
+ ListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1375
+ ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ListItemComponent, selector: "sv-ng-list-item, '[sv-ng-list-item]'", inputs: { element: "element", model: "model", listModel: "listModel" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <li role=\"option\" [key2click] [visible]=\"listModel.isItemVisible(model)\" [class]=\"class\" [style.paddingLeft]=\"paddingLeft\" [attr.aria-selected]=\"ariaSelected\" (click)=\"click($event)\" (pointerdown)=\"pointerdown($event)\">\n <ng-container *ngIf=\"!model.component\">\n <svg *ngIf=\"model.iconName\" class=\"sv-list__item-icon\" [iconName]=\"model.iconName\" [size]=\"24\"\n sv-ng-svg-icon></svg>\n <span>{{ model.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"model.component\">\n <ng-template [component]=\"{ name: model.component, data: { model: model } }\"></ng-template>\n </ng-container>\n </li>\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: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1376
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ListItemComponent, decorators: [{
1377
+ type: Component,
1378
+ args: [{ selector: "sv-ng-list-item, '[sv-ng-list-item]'", template: "<ng-template #template>\n <li role=\"option\" [key2click] [visible]=\"listModel.isItemVisible(model)\" [class]=\"class\" [style.paddingLeft]=\"paddingLeft\" [attr.aria-selected]=\"ariaSelected\" (click)=\"click($event)\" (pointerdown)=\"pointerdown($event)\">\n <ng-container *ngIf=\"!model.component\">\n <svg *ngIf=\"model.iconName\" class=\"sv-list__item-icon\" [iconName]=\"model.iconName\" [size]=\"24\"\n sv-ng-svg-icon></svg>\n <span>{{ model.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"model.component\">\n <ng-template [component]=\"{ name: model.component, data: { model: model } }\"></ng-template>\n </ng-container>\n </li>\n</ng-template>", styles: [":host{display:none}\n"] }]
1379
+ }], propDecorators: { element: [{
1380
+ type: Input
1381
+ }], model: [{
1382
+ type: Input
1383
+ }], listModel: [{
1384
+ type: Input
1385
+ }] } });
1386
+ AngularComponentFactory.Instance.registerComponent("sv-list-item", ListItemComponent);
1387
+
1388
+ class ListComponent extends BaseAngular {
1389
+ getModel() {
1390
+ return this.model;
1391
+ }
1392
+ onGoToItems(event) {
1393
+ this.model.goToItems(event);
1394
+ }
1395
+ onMouseDown(event) {
1396
+ event.preventDefault();
1397
+ }
1398
+ onKeyDown(event) {
1399
+ this.model.onKeyDown(event);
1400
+ }
1401
+ }
1402
+ ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1403
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ListComponent, selector: "sv-ng-list, '[sv-ng-list]'", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"sv-list__container\">\n <div *ngIf=\"model.needFilter\" class=\"sv-list__filter\">\n <div class=\"sv-list__filter-icon\">\n <svg class=\"sv-list__item-icon\" [iconName]=\"'icon-search'\" [size]=\"24\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" class=\"sv-list__input\" [(ngModel)]=\"model.filteredText\"\n [attr.aria-label]=\"model.filteredTextPlaceholder || ''\"\n [attr.placeholder]=\"model.filteredTextPlaceholder || ''\"\n (keyup)=\"onGoToItems($event)\" />\n </div>\n <ul class=\"sv-list\" role=\"listbox\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions\" [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: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1404
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ListComponent, decorators: [{
1405
+ type: Component,
1406
+ args: [{ selector: "sv-ng-list, '[sv-ng-list]'", template: "<ng-template #template>\n <div class=\"sv-list__container\">\n <div *ngIf=\"model.needFilter\" class=\"sv-list__filter\">\n <div class=\"sv-list__filter-icon\">\n <svg class=\"sv-list__item-icon\" [iconName]=\"'icon-search'\" [size]=\"24\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" class=\"sv-list__input\" [(ngModel)]=\"model.filteredText\"\n [attr.aria-label]=\"model.filteredTextPlaceholder || ''\"\n [attr.placeholder]=\"model.filteredTextPlaceholder || ''\"\n (keyup)=\"onGoToItems($event)\" />\n </div>\n <ul class=\"sv-list\" role=\"listbox\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions\" [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"] }]
1407
+ }], propDecorators: { model: [{
1408
+ type: Input
1409
+ }] } });
1410
+ AngularComponentFactory.Instance.registerComponent("sv-list", ListComponent);
1411
+
1412
+ class RatingDropdownComponent {
1413
+ }
1414
+ RatingDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RatingDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1415
+ RatingDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RatingDropdownComponent, selector: "sv-ng-rating-dropdown-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootDropdown\">\n <sv-ng-dropdown [model]=\"model\"></sv-ng-dropdown>\n</div>", components: [{ type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: ["model"] }] });
1416
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RatingDropdownComponent, decorators: [{
1417
+ type: Component,
1418
+ args: [{ selector: "sv-ng-rating-dropdown-question", template: "<div [class]=\"model.cssClasses.rootDropdown\">\n <sv-ng-dropdown [model]=\"model\"></sv-ng-dropdown>\n</div>" }]
1419
+ }], propDecorators: { model: [{
1420
+ type: Input
1421
+ }] } });
1422
+ AngularComponentFactory.Instance.registerComponent("rating-dropdown-question", RatingDropdownComponent);
1423
+ RendererFactory.Instance.registerRenderer("rating", "dropdown", "rating-dropdown-question");
1424
+
1425
+ class BooleanCheckboxComponent {
1426
+ }
1427
+ BooleanCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1428
+ BooleanCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: BooleanCheckboxComponent, selector: "sv-ng-boolean-checkbox-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\">\n <label [class]=\"model.getItemCss()\">\n <input\n type=\"checkbox\"\n [value]=\"model.checkedValue\" [class]=\"model.cssClasses.controlCheckbox\" \n [attr.name]=\"model.name\" [id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [(ngModel)]=\"model.checkedValue\" [value]=\"model.checkedValue\"\n [disabled]=\"model.isInputReadOnly\" [indeterminate]=\"model.isIndeterminate\"\n />\n <span [class]=\"model.cssClasses.materialDecorator\">\n <svg *ngIf=\"!!model.svgIcon\" [class]=\"model.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"model.svgIcon\"></use>\n </svg>\n <span class=\"check\"></span>\n </span>\n <span *ngIf=\"model.titleLocation === 'hidden'\" [class]=\"model.cssClasses.label\" [model]=\"model.locDisplayLabel\" sv-ng-string></span>\n </label>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { 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"] }] });
1429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanCheckboxComponent, decorators: [{
1430
+ type: Component,
1431
+ args: [{ selector: "sv-ng-boolean-checkbox-question", template: "<div [class]=\"model.cssClasses.root\">\n <label [class]=\"model.getItemCss()\">\n <input\n type=\"checkbox\"\n [value]=\"model.checkedValue\" [class]=\"model.cssClasses.controlCheckbox\" \n [attr.name]=\"model.name\" [id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [(ngModel)]=\"model.checkedValue\" [value]=\"model.checkedValue\"\n [disabled]=\"model.isInputReadOnly\" [indeterminate]=\"model.isIndeterminate\"\n />\n <span [class]=\"model.cssClasses.materialDecorator\">\n <svg *ngIf=\"!!model.svgIcon\" [class]=\"model.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"model.svgIcon\"></use>\n </svg>\n <span class=\"check\"></span>\n </span>\n <span *ngIf=\"model.titleLocation === 'hidden'\" [class]=\"model.cssClasses.label\" [model]=\"model.locDisplayLabel\" sv-ng-string></span>\n </label>\n</div>" }]
1432
+ }], propDecorators: { model: [{
1433
+ type: Input
1434
+ }] } });
1435
+ AngularComponentFactory.Instance.registerComponent("boolean-checkbox-question", BooleanCheckboxComponent);
1436
+ RendererFactory.Instance.registerRenderer("boolean", "checkbox", "boolean-checkbox-question");
1437
+
1438
+ class BooleanRadioItemComponent {
1439
+ constructor() {
1440
+ }
1441
+ }
1442
+ BooleanRadioItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1443
+ BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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-describedby]=\"question.ariaDescribedBy\" [value]=\"value\" [(ngModel)]=\"question.value\"\n [disabled]=\"question.isInputReadOnly\" [class]=\"question.cssClasses.itemControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\"></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.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"] }] });
1444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanRadioItemComponent, decorators: [{
1445
+ type: Component,
1446
+ args: [{ selector: "sv-ng-boolean-radio-item", 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-describedby]=\"question.ariaDescribedBy\" [value]=\"value\" [(ngModel)]=\"question.value\"\n [disabled]=\"question.isInputReadOnly\" [class]=\"question.cssClasses.itemControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\"></span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n" }]
1447
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1448
+ type: Input
1449
+ }], value: [{
1450
+ type: Input
1451
+ }], locText: [{
1452
+ type: Input
1453
+ }] } });
1454
+
1455
+ class BooleanRadioComponent {
1456
+ }
1457
+ BooleanRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1458
+ BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", 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 [value]=\"false\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [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"] }] });
1459
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: BooleanRadioComponent, decorators: [{
1460
+ type: Component,
1461
+ args: [{ selector: "sv-ng-boolean-radio-question", template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item [value]=\"false\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"true\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n" }]
1462
+ }], propDecorators: { model: [{
1463
+ type: Input
1464
+ }] } });
1465
+ AngularComponentFactory.Instance.registerComponent("boolean-radio-question", BooleanRadioComponent);
1466
+ RendererFactory.Instance.registerRenderer("boolean", "radio", "boolean-radio-question");
1467
+
1468
+ class ProgressDefaultComponent extends EmbeddedViewContentComponent {
1469
+ getProgressTextInBarCss(css) {
1470
+ return SurveyProgressModel.getProgressTextInBarCss(css);
1471
+ }
1472
+ getProgressTextUnderBarCss(css) {
1473
+ return SurveyProgressModel.getProgressTextUnderBarCss(css);
1474
+ }
1475
+ }
1476
+ ProgressDefaultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProgressDefaultComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1477
+ ProgressDefaultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ProgressDefaultComponent, selector: "sv-ng-progress-default", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.css.progress\">\n <div [class]=\"model.css.progressBar\" [style.width]=\"model.progressValue + '%'\"\n role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <span [class]=\"getProgressTextInBarCss(model.css)\">\n {{ model.progressText }}\n </span>\n </div>\n <span [class]=\"getProgressTextUnderBarCss(model.css)\"> {{ model.progressText }} </span>\n </div>\n</ng-template>" });
1478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProgressDefaultComponent, decorators: [{
1479
+ type: Component,
1480
+ args: [{ selector: "sv-ng-progress-default", template: "<ng-template #template>\n <div [class]=\"model.css.progress\">\n <div [class]=\"model.css.progressBar\" [style.width]=\"model.progressValue + '%'\"\n role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\">\n <span [class]=\"getProgressTextInBarCss(model.css)\">\n {{ model.progressText }}\n </span>\n </div>\n <span [class]=\"getProgressTextUnderBarCss(model.css)\"> {{ model.progressText }} </span>\n </div>\n</ng-template>" }]
1481
+ }], propDecorators: { model: [{
1482
+ type: Input
1483
+ }] } });
1484
+ AngularComponentFactory.Instance.registerComponent("sv-progress-progress", ProgressDefaultComponent);
1485
+ AngularComponentFactory.Instance.registerComponent("sv-progress-pages", ProgressDefaultComponent);
1486
+ AngularComponentFactory.Instance.registerComponent("sv-progress-questions", ProgressDefaultComponent);
1487
+ AngularComponentFactory.Instance.registerComponent("sv-progress-correctQuestions", ProgressDefaultComponent);
1488
+ AngularComponentFactory.Instance.registerComponent("sv-progress-requiredQuestions", ProgressDefaultComponent);
1489
+
1490
+ class ProgressButtonsComponent {
1491
+ constructor(changeDetectorRef) {
1492
+ this.changeDetectorRef = changeDetectorRef;
1493
+ this.hasScroller = false;
1494
+ this.updateScroller = undefined;
1495
+ }
1496
+ createProgressButtonsModel() {
1497
+ this.progressButtonsModel = new SurveyProgressButtonsModel(this.model);
1498
+ }
1499
+ ngOnInit() {
1500
+ this.createProgressButtonsModel();
1501
+ }
1502
+ ngOnChanges(changes) {
1503
+ this.createProgressButtonsModel();
1504
+ }
1505
+ isListElementClickable(index) {
1506
+ return this.progressButtonsModel.isListElementClickable(index);
1507
+ }
1508
+ getListElementCss(index) {
1509
+ return this.progressButtonsModel.getListElementCss(index);
1510
+ }
1511
+ clickListElement(index) {
1512
+ this.progressButtonsModel.clickListElement(index);
1513
+ }
1514
+ getScrollButtonCss(isLeftScroll) {
1515
+ return this.progressButtonsModel.getScrollButtonCss(this.hasScroller, isLeftScroll);
1516
+ }
1517
+ clickScrollButton(isLeftScroll) {
1518
+ if (this.progressButtonsListContainer) {
1519
+ this.progressButtonsListContainer.nativeElement.scrollLeft += (isLeftScroll ? -1 : 1) * 70;
1520
+ }
1521
+ }
1522
+ ngAfterViewInit() {
1523
+ this.progressButtonsModel = new SurveyProgressButtonsModel(this.model);
1524
+ this.updateScroller = setInterval(() => {
1525
+ var _a;
1526
+ if (!!((_a = this.progressButtonsListContainer) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
1527
+ const listContainerElement = this.progressButtonsListContainer.nativeElement;
1528
+ this.hasScroller = listContainerElement.scrollWidth > listContainerElement.offsetWidth;
1529
+ this.changeDetectorRef.detectChanges();
1530
+ }
1531
+ }, 100);
1532
+ }
1533
+ ngOnDestroy() {
1534
+ if (typeof this.updateScroller !== "undefined") {
1535
+ clearInterval(this.updateScroller);
1536
+ this.updateScroller = undefined;
1537
+ }
1538
+ }
1539
+ }
1540
+ ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1541
+ ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"model.css.progressButtonsContainerCenter\">\n <div [class]=\"model.css.progressButtonsContainer\">\n <div\n [class]=\"getScrollButtonCss(true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"model.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"model.css.progressButtonsList\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"getListElementCss(index)\"\n (click)=\"isListElementClickable(index) ? clickListElement(index) : null\">\n <div\n [class]=\"model.css.progressButtonsPageTitle\"\n [title]=\"page.locNavigationTitle.renderedHtml || page.name\"\n >\n {{ page.locNavigationTitle.renderedHtml || page.name }}\n </div>\n <div\n [class]=\"model.css.progressButtonsPageDescription\"\n [title]=\"page.locNavigationDescription.renderedHtml\"\n >\n {{ page.locNavigationDescription.renderedHtml }}\n </div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"getScrollButtonCss(false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n</div>", directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ProgressButtonsComponent, decorators: [{
1543
+ type: Component,
1544
+ args: [{ selector: "sv-ng-progress-buttons", template: "<div [class]=\"model.css.progressButtonsContainerCenter\">\n <div [class]=\"model.css.progressButtonsContainer\">\n <div\n [class]=\"getScrollButtonCss(true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"model.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"model.css.progressButtonsList\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"getListElementCss(index)\"\n (click)=\"isListElementClickable(index) ? clickListElement(index) : null\">\n <div\n [class]=\"model.css.progressButtonsPageTitle\"\n [title]=\"page.locNavigationTitle.renderedHtml || page.name\"\n >\n {{ page.locNavigationTitle.renderedHtml || page.name }}\n </div>\n <div\n [class]=\"model.css.progressButtonsPageDescription\"\n [title]=\"page.locNavigationDescription.renderedHtml\"\n >\n {{ page.locNavigationDescription.renderedHtml }}\n </div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"getScrollButtonCss(false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n</div>" }]
1545
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
1546
+ type: Input
1547
+ }], progressButtonsListContainer: [{
1548
+ type: ViewChild,
1549
+ args: ["progressButtonsListContainer"]
1550
+ }] } });
1551
+ AngularComponentFactory.Instance.registerComponent("sv-progress-buttons", ProgressButtonsComponent);
1552
+
1553
+ class PanelComponent extends BaseAngular {
1554
+ constructor() {
1555
+ super(...arguments);
1556
+ this.trackRowBy = (_, row) => {
1557
+ return row.id;
1558
+ };
1559
+ }
1560
+ getModel() {
1561
+ return this.model;
1562
+ }
1563
+ ngAfterViewInit() {
1564
+ var _a, _b;
1565
+ if (!!((_a = this.panelContainerRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
1566
+ (_b = this.model.survey) === null || _b === void 0 ? void 0 : _b.afterRenderPanel(this.model, this.panelContainerRef.nativeElement);
1567
+ }
1568
+ }
1569
+ }
1570
+ PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1571
+ PanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelComponent, selector: "sv-ng-panel, '[sv-ng-panel]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "panelContainerRef", first: true, predicate: ["panelContainer"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"model.isVisible\" [attr.id]=\"model.id\" [class]=\"model.getContainerCss()\" (focusin)=\"model.focusIn()\" #panelContainer>\n <div *ngIf=\"model.hasDescription || model.hasTitle\" [element]=\"model\" sv-ng-element-header></div>\n <!-- ko template: { name: 'survey-question-errors', data: $data } -->\n <!-- /ko -->\n <div *ngIf=\"!model.isCollapsed\" [style.paddingLeft]=\"model.innerPaddingLeft\" [class]=\"model.cssClasses.panel.content\" [attr.id]=\"model.contentId\">\n <ng-container *ngFor=\"let row of model.rows; trackBy: trackRowBy\">\n <sv-ng-row [row]=\"row\" style=\"display: contents;\"></sv-ng-row>\n </ng-container>\n <sv-ng-action-bar [model]=\"model.getFooterToolbar()\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>", components: [{ type: ElementHeaderComponent, selector: "'[sv-ng-element-header]'", inputs: ["element"] }, { type: RowComponent, selector: "sv-ng-row", inputs: ["row"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelComponent, decorators: [{
1573
+ type: Component,
1574
+ args: [{ selector: "sv-ng-panel, '[sv-ng-panel]'", template: "<ng-template #template>\n <div *ngIf=\"model.isVisible\" [attr.id]=\"model.id\" [class]=\"model.getContainerCss()\" (focusin)=\"model.focusIn()\" #panelContainer>\n <div *ngIf=\"model.hasDescription || model.hasTitle\" [element]=\"model\" sv-ng-element-header></div>\n <!-- ko template: { name: 'survey-question-errors', data: $data } -->\n <!-- /ko -->\n <div *ngIf=\"!model.isCollapsed\" [style.paddingLeft]=\"model.innerPaddingLeft\" [class]=\"model.cssClasses.panel.content\" [attr.id]=\"model.contentId\">\n <ng-container *ngFor=\"let row of model.rows; trackBy: trackRowBy\">\n <sv-ng-row [row]=\"row\" style=\"display: contents;\"></sv-ng-row>\n </ng-container>\n <sv-ng-action-bar [model]=\"model.getFooterToolbar()\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>" }]
1575
+ }], propDecorators: { model: [{
1576
+ type: Input
1577
+ }], panelContainerRef: [{
1578
+ type: ViewChild,
1579
+ args: ["panelContainer", { static: false, read: ElementRef }]
1580
+ }] } });
1581
+ AngularComponentFactory.Instance.registerComponent("panel", PanelComponent);
1582
+
1583
+ class SurveyNavigationButton {
1584
+ getModel() {
1585
+ return this.model;
1586
+ }
1587
+ buttonMouseDown() {
1588
+ return this.model.data && this.model.data.mouseDown();
1589
+ }
1590
+ }
1591
+ SurveyNavigationButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyNavigationButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
1592
+ SurveyNavigationButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SurveyNavigationButton, selector: "sv-ng-nav-btn", inputs: { model: "model" }, ngImport: i0, template: "<input *ngIf=\"model.visible\" type=\"button\" [value]=\"model.title\" [class]=\"model.innerCss\" (mousedown)=\"buttonMouseDown()\" (click)=\"model.action()\"/>", styles: [":host{display:contents}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyNavigationButton, decorators: [{
1594
+ type: Component,
1595
+ args: [{ selector: "sv-ng-nav-btn", styles: [":host { display: contents; }"], template: "<input *ngIf=\"model.visible\" type=\"button\" [value]=\"model.title\" [class]=\"model.innerCss\" (mousedown)=\"buttonMouseDown()\" (click)=\"model.action()\"/>" }]
1596
+ }], propDecorators: { model: [{
1597
+ type: Input
1598
+ }] } });
1599
+ AngularComponentFactory.Instance.registerComponent("sv-nav-btn", SurveyNavigationButton);
1600
+
1601
+ class MatrixQuestionComponent extends QuestionAngular {
1602
+ ngOnInit() {
1603
+ this.model.visibleRowsChangedCallback = () => {
1604
+ this.detectChanges();
1605
+ };
1606
+ super.ngOnInit();
1607
+ }
1608
+ onChange(row, column) {
1609
+ if (this.model.isInputReadOnly)
1610
+ return;
1611
+ row.value = column.value;
1612
+ this.detectChanges();
1613
+ }
1614
+ trackRowByFn(i, row) {
1615
+ return "column-" + row.name + "-" + i;
1616
+ }
1617
+ trackColumnByFn(i, column) {
1618
+ return "column-" + column.value + "-" + i;
1619
+ }
1620
+ }
1621
+ MatrixQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1622
+ MatrixQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixQuestionComponent, selector: "sv-ng-matrix-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.tableWrapper\" #contentElement>\n <fieldset>\n <legend [attr.aria-label]=\"model.locTitle.renderedHtml\"></legend>\n <table [class]=\"model.getTableCss()\">\n <thead *ngIf=\"model.showHeader\">\n <tr>\n <td [visible]=\"model.hasRows\"></td>\n <th\n *ngFor=\"let column of model.visibleColumns\" [class]=\"model.cssClasses.headerCell\" \n [model]=\"column.locText\" sv-ng-string>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of model.visibleRows; trackBy: trackRowByFn \" [class]=\"row.rowClasses || undefined\">\n <td [class]=\"model.cssClasses.rowTextCell\" *ngIf=\"model.hasRows\" [model]=\"row.locText\" sv-ng-string></td>\n <ng-container *ngIf=\"model.hasCellText\">\n <td *ngFor=\"let column of model.visibleColumns\"\n [class]=\"model.getItemClass(row, column)\"\n (click)=\"onChange(row, column)\" [model]=\"model.getCellDisplayLocText(row.name, column)\" sv-ng-string>\n </td>\n </ng-container>\n <ng-container *ngIf=\"!model.hasCellText\">\n <td\n *ngFor=\"let column of model.visibleColumns; index as columnIndex; trackBy: trackColumnByFn\"\n [attr.data-responsive-title]=\"column.locText.renderedHtml\"\n [class]=\"model.cssClasses.cell\">\n <label [class]=\"model.getItemClass(row, column)\">\n <input\n type=\"radio\"\n [class]=\"model.cssClasses.itemValue\"\n [name]=\"row.fullName\"\n [value]=\"column.value\"\n [checked]=\"row.value === column.value\"\n [disabled]=\"model.isInputReadOnly\"\n [attr.id]=\"model.inputId + '_' + row.name + '_' + columnIndex\"\n (change)=\"onChange(row, column)\"\n [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"column.locText.renderedHtml\"\n [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\"\n />\n <span [class]=\"model.cssClasses.materialDecorator\">\n <svg *ngIf=\"model.itemSvgIcon\" [class]=\"model.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"model.itemSvgIcon\"></use>\n </svg> \n </span>\n <span [visible]=\"model.isMobile\" [class]=\"model.cssClasses.cellResponsiveTitle\" [model]=\"column.locText\" sv-ng-string></span>\n </label>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </fieldset>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1623
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixQuestionComponent, decorators: [{
1624
+ type: Component,
1625
+ args: [{ selector: "sv-ng-matrix-question", template: "<ng-template #template>\n <div [class]=\"model.cssClasses.tableWrapper\" #contentElement>\n <fieldset>\n <legend [attr.aria-label]=\"model.locTitle.renderedHtml\"></legend>\n <table [class]=\"model.getTableCss()\">\n <thead *ngIf=\"model.showHeader\">\n <tr>\n <td [visible]=\"model.hasRows\"></td>\n <th\n *ngFor=\"let column of model.visibleColumns\" [class]=\"model.cssClasses.headerCell\" \n [model]=\"column.locText\" sv-ng-string>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of model.visibleRows; trackBy: trackRowByFn \" [class]=\"row.rowClasses || undefined\">\n <td [class]=\"model.cssClasses.rowTextCell\" *ngIf=\"model.hasRows\" [model]=\"row.locText\" sv-ng-string></td>\n <ng-container *ngIf=\"model.hasCellText\">\n <td *ngFor=\"let column of model.visibleColumns\"\n [class]=\"model.getItemClass(row, column)\"\n (click)=\"onChange(row, column)\" [model]=\"model.getCellDisplayLocText(row.name, column)\" sv-ng-string>\n </td>\n </ng-container>\n <ng-container *ngIf=\"!model.hasCellText\">\n <td\n *ngFor=\"let column of model.visibleColumns; index as columnIndex; trackBy: trackColumnByFn\"\n [attr.data-responsive-title]=\"column.locText.renderedHtml\"\n [class]=\"model.cssClasses.cell\">\n <label [class]=\"model.getItemClass(row, column)\">\n <input\n type=\"radio\"\n [class]=\"model.cssClasses.itemValue\"\n [name]=\"row.fullName\"\n [value]=\"column.value\"\n [checked]=\"row.value === column.value\"\n [disabled]=\"model.isInputReadOnly\"\n [attr.id]=\"model.inputId + '_' + row.name + '_' + columnIndex\"\n (change)=\"onChange(row, column)\"\n [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"column.locText.renderedHtml\"\n [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\"\n />\n <span [class]=\"model.cssClasses.materialDecorator\">\n <svg *ngIf=\"model.itemSvgIcon\" [class]=\"model.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"model.itemSvgIcon\"></use>\n </svg> \n </span>\n <span [visible]=\"model.isMobile\" [class]=\"model.cssClasses.cellResponsiveTitle\" [model]=\"column.locText\" sv-ng-string></span>\n </label>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </fieldset>\n </div>\n</ng-template>", styles: [":host{display:none}\n"] }]
1626
+ }] });
1627
+ AngularComponentFactory.Instance.registerComponent("matrix-question", MatrixQuestionComponent);
1628
+
1629
+ class FileQuestionComponent extends QuestionAngular {
1630
+ constructor() {
1631
+ super(...arguments);
1632
+ this.trackFilesFn = (index) => {
1633
+ return this.model.inputId + "_" + index;
1634
+ };
1635
+ }
1636
+ }
1637
+ FileQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FileQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1638
+ FileQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: FileQuestionComponent, selector: "sv-ng-file-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.fileRootCss\" #contentElement>\n <input\n [class]=\"model.cssClasses.fileInput\"\n *ngIf=\"!model.isReadOnly\"\n type=\"file\"\n [attr.id]=\"model.inputId\"\n (change)=\"model.doChange($event)\"\n [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [attr.multiple]=\"model.multipleRendered\"\n [attr.title]=\"model.inputTitle\"\n [attr.accept]=\"model.acceptedTypes\"\n />\n <input\n *ngIf=\"model.isReadOnly\"\n type=\"file\"\n disabled\n [class]=\"model.getReadOnlyFileCss()\"\n [attr.multiple]=\"model.multipleRendered\"\n [attr.placeholder]=\"model.title\"\n style=\"color: transparent\"\n />\n <div\n [class]=\"model.getFileDecoratorCss()\"\n (drop)=\"model.onDrop($event)\"\n (dragover)=\"model.onDragOver($event)\"\n (dragleave)=\"model.onDragLeave($event)\"\n >\n <span [class]=\"model.cssClasses.dragAreaPlaceholder\">{{ model.dragAreaPlaceholder }}</span>\n <div [class]=\"model.cssClasses.wrapper\">\n <label\n role=\"button\"\n [class]=\"model.getChooseFileCss()\"\n [attr.for]=\"model.inputId\"\n [attr.aria-label]=\"model.chooseButtonCaption\"\n >\n <span>{{ model.chooseButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.chooseFileIconId\" [title]=\"model.chooseButtonCaption\" [iconName]=\"model.cssClasses.chooseFileIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </label>\n <span\n [class]=\"model.cssClasses.noFileChosen\"\n *ngIf=\"model.isEmpty()\"\n >{{ model.noFileChosenCaption }}</span\n >\n </div>\n </div>\n <button\n type=\"button\"\n *ngIf=\"model.showRemoveButton\"\n [class]=\"model.cssClasses.removeButton\"\n (click)=\"model.doClean($event)\"\n >\n <span>{{ model.cleanButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n <div [class]=\"model.cssClasses.fileList || undefined\" *ngIf=\"!model.isEmpty()\">\n <span\n *ngFor=\"let val of model.previewValue; index as index; trackBy: trackFilesFn\"\n [visible]=\"val && model.isPreviewVisible(index)\"\n [class]=\"model.cssClasses.preview\"\n >\n <div *ngIf=\"val.name && model.cssClasses.fileSign\" [class]=\"model.cssClasses.fileSign\">\n <a\n (click)=\"model.doDownloadFile($event, val)\"\n [attr.href]=\"val.content | safeUrl\"\n [attr.title]=\"val.name\"\n [attr.download]=\"val.name\"\n [attr.width]=\"model.imageWidth\"\n >{{ val.name }}</a\n >\n </div>\n <div [class]=\"model.cssClasses.imageWrapper\">\n <img\n *ngIf=\"model.canPreviewImage(val)\"\n [attr.src]=\"val.content | safeUrl\"\n [attr.height]=\"model.imageHeight\"\n [attr.width]=\"model.imageWidth\"\n alt=\"File preview\"\n />\n <svg *ngIf=\"model.defaultImage(val)\" \n [iconName]=\"model.cssClasses.defaultImageIconId\" [partCss]=\"model.cssClasses.defaultImage\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n <div *ngIf=\"val.name && !model.isReadOnly\" [class]=\"model.cssClasses.removeFileButton\" (click)=\"model.doRemoveFile(val)\">\n <span\n [class]=\"model.cssClasses.removeFile\"\n >{{ model.removeFileCaption }}</span\n >\n <svg *ngIf=\"model.cssClasses.removeFileSvgIconId\" [title]=\"model.removeFileCaption\" [partCss]=\"model.cssClasses.removeFileSvg\" [iconName]=\"model.cssClasses.removeFileSvgIconId\" [size]=\"'auto'\" sv-ng-svg-icon ></svg>\n </div>\n </div>\n <div *ngIf=\"val.name && model.cssClasses.fileSignBottom\" [class]=\"model.cssClasses.fileSignBottom\">\n <a\n (click)=\"model.doDownloadFile($event, val)\"\n [attr.href]=\"val.content | safeUrl\"\n [attr.title]=\"val.name\"\n [attr.download]=\"val.name\"\n [attr.width]=\"model.imageWidth\"\n >{{ val.name }}</a\n >\n </div>\n </span>\n </div>\n <button\n type=\"button\"\n *ngIf=\"model.showRemoveButtonBottom\"\n [class]=\"model.showRemoveButtonBottom\"\n (click)=\"model.doClean($event)\"\n >\n <span>{{ model.cleanButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n <sv-action-bar *ngIf=\"model.mobileFileNavigatorVisible\" [model]=\"model.mobileFileNavigator\"></sv-action-bar>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }], pipes: { "safeUrl": SafeUrlPipe } });
1639
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: FileQuestionComponent, decorators: [{
1640
+ type: Component,
1641
+ args: [{ selector: "sv-ng-file-question", template: "<div [class]=\"model.fileRootCss\" #contentElement>\n <input\n [class]=\"model.cssClasses.fileInput\"\n *ngIf=\"!model.isReadOnly\"\n type=\"file\"\n [attr.id]=\"model.inputId\"\n (change)=\"model.doChange($event)\"\n [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\"\n [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [attr.multiple]=\"model.multipleRendered\"\n [attr.title]=\"model.inputTitle\"\n [attr.accept]=\"model.acceptedTypes\"\n />\n <input\n *ngIf=\"model.isReadOnly\"\n type=\"file\"\n disabled\n [class]=\"model.getReadOnlyFileCss()\"\n [attr.multiple]=\"model.multipleRendered\"\n [attr.placeholder]=\"model.title\"\n style=\"color: transparent\"\n />\n <div\n [class]=\"model.getFileDecoratorCss()\"\n (drop)=\"model.onDrop($event)\"\n (dragover)=\"model.onDragOver($event)\"\n (dragleave)=\"model.onDragLeave($event)\"\n >\n <span [class]=\"model.cssClasses.dragAreaPlaceholder\">{{ model.dragAreaPlaceholder }}</span>\n <div [class]=\"model.cssClasses.wrapper\">\n <label\n role=\"button\"\n [class]=\"model.getChooseFileCss()\"\n [attr.for]=\"model.inputId\"\n [attr.aria-label]=\"model.chooseButtonCaption\"\n >\n <span>{{ model.chooseButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.chooseFileIconId\" [title]=\"model.chooseButtonCaption\" [iconName]=\"model.cssClasses.chooseFileIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </label>\n <span\n [class]=\"model.cssClasses.noFileChosen\"\n *ngIf=\"model.isEmpty()\"\n >{{ model.noFileChosenCaption }}</span\n >\n </div>\n </div>\n <button\n type=\"button\"\n *ngIf=\"model.showRemoveButton\"\n [class]=\"model.cssClasses.removeButton\"\n (click)=\"model.doClean($event)\"\n >\n <span>{{ model.cleanButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n <div [class]=\"model.cssClasses.fileList || undefined\" *ngIf=\"!model.isEmpty()\">\n <span\n *ngFor=\"let val of model.previewValue; index as index; trackBy: trackFilesFn\"\n [visible]=\"val && model.isPreviewVisible(index)\"\n [class]=\"model.cssClasses.preview\"\n >\n <div *ngIf=\"val.name && model.cssClasses.fileSign\" [class]=\"model.cssClasses.fileSign\">\n <a\n (click)=\"model.doDownloadFile($event, val)\"\n [attr.href]=\"val.content | safeUrl\"\n [attr.title]=\"val.name\"\n [attr.download]=\"val.name\"\n [attr.width]=\"model.imageWidth\"\n >{{ val.name }}</a\n >\n </div>\n <div [class]=\"model.cssClasses.imageWrapper\">\n <img\n *ngIf=\"model.canPreviewImage(val)\"\n [attr.src]=\"val.content | safeUrl\"\n [attr.height]=\"model.imageHeight\"\n [attr.width]=\"model.imageWidth\"\n alt=\"File preview\"\n />\n <svg *ngIf=\"model.defaultImage(val)\" \n [iconName]=\"model.cssClasses.defaultImageIconId\" [partCss]=\"model.cssClasses.defaultImage\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n <div *ngIf=\"val.name && !model.isReadOnly\" [class]=\"model.cssClasses.removeFileButton\" (click)=\"model.doRemoveFile(val)\">\n <span\n [class]=\"model.cssClasses.removeFile\"\n >{{ model.removeFileCaption }}</span\n >\n <svg *ngIf=\"model.cssClasses.removeFileSvgIconId\" [title]=\"model.removeFileCaption\" [partCss]=\"model.cssClasses.removeFileSvg\" [iconName]=\"model.cssClasses.removeFileSvgIconId\" [size]=\"'auto'\" sv-ng-svg-icon ></svg>\n </div>\n </div>\n <div *ngIf=\"val.name && model.cssClasses.fileSignBottom\" [class]=\"model.cssClasses.fileSignBottom\">\n <a\n (click)=\"model.doDownloadFile($event, val)\"\n [attr.href]=\"val.content | safeUrl\"\n [attr.title]=\"val.name\"\n [attr.download]=\"val.name\"\n [attr.width]=\"model.imageWidth\"\n >{{ val.name }}</a\n >\n </div>\n </span>\n </div>\n <button\n type=\"button\"\n *ngIf=\"model.showRemoveButtonBottom\"\n [class]=\"model.showRemoveButtonBottom\"\n (click)=\"model.doClean($event)\"\n >\n <span>{{ model.cleanButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n <sv-action-bar *ngIf=\"model.mobileFileNavigatorVisible\" [model]=\"model.mobileFileNavigator\"></sv-action-bar>\n</div>", styles: [] }]
1642
+ }] });
1643
+ AngularComponentFactory.Instance.registerComponent("file-question", FileQuestionComponent);
1644
+
1645
+ class CommentQuestionComponent extends QuestionAngular {
1646
+ onChange(event) {
1647
+ this.model.value = event.target.value;
1648
+ }
1649
+ }
1650
+ CommentQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CommentQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1651
+ CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<textarea\n*ngIf=\"!model.isReadOnlyRenderDiv()\"\n[readonly]=\"model.isInputReadOnly\"\n[attr.disabled]=\"model.renderedInputDisabled\"\n[id]=\"model.inputId\"\n[attr.maxlength]=\"model.getMaxLength()\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.renderedPlaceholder\"\n[class]=\"model.className\"\n[value]=\"model.value || null\"\n(input)=\"model.onInput($event)\"\n(keydown)=\"model.onKeyDown($event)\"\n(change)=\"onChange($event)\"\n[attr.aria-required]=\"model.ariaRequired\"\n[attr.aria-label]=\"model.ariaLabel\"\n[attr.aria-invalid]=\"model.ariaInvalid\"\n[attr.aria-describedby]=\"model.ariaDescribedBy\"\n[style.resize]=\"model.resizeStyle\"\n#contentElement></textarea>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CommentQuestionComponent, decorators: [{
1653
+ type: Component,
1654
+ args: [{ selector: "sv-ng-question-comment", template: "<textarea\n*ngIf=\"!model.isReadOnlyRenderDiv()\"\n[readonly]=\"model.isInputReadOnly\"\n[attr.disabled]=\"model.renderedInputDisabled\"\n[id]=\"model.inputId\"\n[attr.maxlength]=\"model.getMaxLength()\"\n[attr.cols]=\"model.cols\"\n[attr.rows]=\"model.rows\"\n[attr.placeholder]=\"model.renderedPlaceholder\"\n[class]=\"model.className\"\n[value]=\"model.value || null\"\n(input)=\"model.onInput($event)\"\n(keydown)=\"model.onKeyDown($event)\"\n(change)=\"onChange($event)\"\n[attr.aria-required]=\"model.ariaRequired\"\n[attr.aria-label]=\"model.ariaLabel\"\n[attr.aria-invalid]=\"model.ariaInvalid\"\n[attr.aria-describedby]=\"model.ariaDescribedBy\"\n[style.resize]=\"model.resizeStyle\"\n#contentElement></textarea>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>" }]
1655
+ }] });
1656
+ AngularComponentFactory.Instance.registerComponent("comment-question", CommentQuestionComponent);
1657
+
1658
+ class SignaturePadQuestionComponent extends QuestionAngular {
1659
+ }
1660
+ SignaturePadQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SignaturePadQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1661
+ SignaturePadQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: SignaturePadQuestionComponent, selector: "sv-ng-signature-component", usesInheritance: true, ngImport: i0, template: "<div\n[class]=\"model.cssClasses.root\"\n[style.height]=\"model.signatureHeight + 'px'\" [style.width]=\"model.signatureWidth + 'px'\" #contentElement>\n<div [class]=\"model.cssClasses.placeholder\" [visible]=\"model.needShowPlaceholder()\">\n {{ model.placeHolderText }}\n</div>\n<div>\n <canvas tabindex=\"0\"></canvas>\n</div>\n<div [class]=\"model.cssClasses.controls\" [visible]=\"model.canShowClearButton\">\n <button\n type=\"button\"\n [class]=\"model.cssClasses.clearButton\"\n [title]=\"model.clearButtonCaption\"\n (click)=\"model.clearValue()\"\n >\n <span *ngIf=\"!model.cssClasses.clearButtonIconId\">\u2716</span>\n <svg\n *ngIf=\"model.cssClasses.clearButtonIconId\"\n [iconName]=\"model.cssClasses.clearButtonIconId\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n</div>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1662
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SignaturePadQuestionComponent, decorators: [{
1663
+ type: Component,
1664
+ args: [{ selector: "sv-ng-signature-component", template: "<div\n[class]=\"model.cssClasses.root\"\n[style.height]=\"model.signatureHeight + 'px'\" [style.width]=\"model.signatureWidth + 'px'\" #contentElement>\n<div [class]=\"model.cssClasses.placeholder\" [visible]=\"model.needShowPlaceholder()\">\n {{ model.placeHolderText }}\n</div>\n<div>\n <canvas tabindex=\"0\"></canvas>\n</div>\n<div [class]=\"model.cssClasses.controls\" [visible]=\"model.canShowClearButton\">\n <button\n type=\"button\"\n [class]=\"model.cssClasses.clearButton\"\n [title]=\"model.clearButtonCaption\"\n (click)=\"model.clearValue()\"\n >\n <span *ngIf=\"!model.cssClasses.clearButtonIconId\">\u2716</span>\n <svg\n *ngIf=\"model.cssClasses.clearButtonIconId\"\n [iconName]=\"model.cssClasses.clearButtonIconId\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n</div>\n</div>" }]
1665
+ }] });
1666
+ AngularComponentFactory.Instance.registerComponent("signaturepad-question", SignaturePadQuestionComponent);
1667
+
1668
+ class MultipleTextItemComponent extends BaseAngular {
1669
+ getModel() {
1670
+ return this.model.editor;
1671
+ }
1672
+ }
1673
+ MultipleTextItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MultipleTextItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1674
+ MultipleTextItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MultipleTextItemComponent, selector: "'[sv-ng-multipletext-item]'", inputs: { question: "question", model: "model" }, usesInheritance: true, ngImport: i0, template: "<label [class]=\"question.getItemLabelCss(model)\">\n <span [class]=\"question.getItemTitleCss()\">\n <span *ngIf=\" model.editor.isRequireTextBeforeTitle || model.editor.isRequireTextOnStart\"\n [class]=\"question.cssClasses.requiredText\">{{ model.editor.requiredText }}</span>\n <sv-ng-string [model]=\"model.locTitle\"></sv-ng-string>\n <span\n *ngIf=\"model.editor.isRequireTextAfterTitle\"\n [class]=\"question.cssClasses.requiredText\"\n >{{ model.editor.requiredText }}</span\n >\n </span>\n <div [class]=\"question.getItemCss()\">\n <div *ngIf=\"model.editor.showErrorOnTop && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n <sv-ng-text-question [model]=\"model.editor\"></sv-ng-text-question>\n <div *ngIf=\"model.editor.showErrorOnBottom && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n </div>\n <div *ngIf=\"model.editor.isErrorsModeTooltip && model.editor.hasVisibleErrors\" [element]=\"model.editor\" [location]=\"'tooltip'\" sv-ng-errors></div>\n</label>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: TextQuestionComponent, selector: "sv-ng-text-question" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1675
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MultipleTextItemComponent, decorators: [{
1676
+ type: Component,
1677
+ args: [{ selector: "'[sv-ng-multipletext-item]'", template: "<label [class]=\"question.getItemLabelCss(model)\">\n <span [class]=\"question.getItemTitleCss()\">\n <span *ngIf=\" model.editor.isRequireTextBeforeTitle || model.editor.isRequireTextOnStart\"\n [class]=\"question.cssClasses.requiredText\">{{ model.editor.requiredText }}</span>\n <sv-ng-string [model]=\"model.locTitle\"></sv-ng-string>\n <span\n *ngIf=\"model.editor.isRequireTextAfterTitle\"\n [class]=\"question.cssClasses.requiredText\"\n >{{ model.editor.requiredText }}</span\n >\n </span>\n <div [class]=\"question.getItemCss()\">\n <div *ngIf=\"model.editor.showErrorOnTop && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n <sv-ng-text-question [model]=\"model.editor\"></sv-ng-text-question>\n <div *ngIf=\"model.editor.showErrorOnBottom && model.editor.hasVisibleErrors\" [element]=\"model.editor\" sv-ng-errors></div>\n </div>\n <div *ngIf=\"model.editor.isErrorsModeTooltip && model.editor.hasVisibleErrors\" [element]=\"model.editor\" [location]=\"'tooltip'\" sv-ng-errors></div>\n</label>" }]
1678
+ }], propDecorators: { question: [{
1679
+ type: Input
1680
+ }], model: [{
1681
+ type: Input
1682
+ }] } });
1683
+
1684
+ class MultipleTextComponent extends QuestionAngular {
1685
+ constructor() {
1686
+ super(...arguments);
1687
+ this.trackRowBy = (index) => {
1688
+ return this.model.inputId + "rowkey" + index;
1689
+ };
1690
+ }
1691
+ trackItemBy(_, item) {
1692
+ return "item" + item.editor.id;
1693
+ }
1694
+ }
1695
+ MultipleTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MultipleTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1696
+ MultipleTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MultipleTextComponent, selector: "sv-ng-multipletext-question", usesInheritance: true, ngImport: i0, template: "<table [class]=\"model.cssClasses.root\" #contentElement>\n <tbody>\n <tr\n *ngFor=\"let row of model.getRows(); index as rowIndex; trackBy: trackRowBy\"\n [class]=\"model.cssClasses.row\"\n >\n <ng-container *ngFor=\"let item of row; trackBy: trackItemBy\" >\n <td [class]=\"model.cssClasses.cell\" [question]=\"model\" [model]=\"item\" sv-ng-multipletext-item></td>\n </ng-container>\n </tr>\n </tbody>\n</table>\n", components: [{ type: MultipleTextItemComponent, selector: "'[sv-ng-multipletext-item]'", inputs: ["question", "model"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1697
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MultipleTextComponent, decorators: [{
1698
+ type: Component,
1699
+ args: [{ selector: "sv-ng-multipletext-question", template: "<table [class]=\"model.cssClasses.root\" #contentElement>\n <tbody>\n <tr\n *ngFor=\"let row of model.getRows(); index as rowIndex; trackBy: trackRowBy\"\n [class]=\"model.cssClasses.row\"\n >\n <ng-container *ngFor=\"let item of row; trackBy: trackItemBy\" >\n <td [class]=\"model.cssClasses.cell\" [question]=\"model\" [model]=\"item\" sv-ng-multipletext-item></td>\n </ng-container>\n </tr>\n </tbody>\n</table>\n" }]
1700
+ }] });
1701
+ AngularComponentFactory.Instance.registerComponent("multipletext-question", MultipleTextComponent);
1702
+
1703
+ class RankingItemComponent extends BaseAngular {
1704
+ getModel() {
1705
+ return this.model;
1706
+ }
1707
+ }
1708
+ RankingItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RankingItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1709
+ RankingItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RankingItemComponent, selector: "sv-ng-ranking-item", inputs: { question: "question", model: "model", index: "index" }, usesInheritance: true, ngImport: i0, template: "\n\n\n<div tabindex=\"0\" [attr.data-sv-drop-target-ranking-item]=\"index\" \n [class]=\"question.getItemClass(model)\"\n (keydown)=\"question.handleKeydown($event, model)\"\n (pointerdown)=\"question.handlePointerDown($event, model, $any($event.currentTarget))\">\n <div tabindex=\"-1\" style=\"outline: none;\">\n <div [class]=\"question.cssClasses.itemGhostNode\"></div>\n <div [class]=\"question.cssClasses.itemContent\">\n <div [class]=\"question.cssClasses.itemIconContainer\">\n <svg\n width=\"10\"\n height=\"16\"\n viewBox=\"0 0 10 16\"\n [class]=\"question.getIconHoverCss()\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6 2C6 0.9 6.9 0 8 0C9.1 0 10 0.9 10 2C10 3.1 9.1 4 8 4C6.9 4 6 3.1 6 2ZM2 0C0.9 0 0 0.9 0 2C0 3.1 0.9 4 2 4C3.1 4 4 3.1 4 2C4 0.9 3.1 0 2 0ZM8 6C6.9 6 6 6.9 6 8C6 9.1 6.9 10 8 10C9.1 10 10 9.1 10 8C10 6.9 9.1 6 8 6ZM2 6C0.9 6 0 6.9 0 8C0 9.1 0.9 10 2 10C3.1 10 4 9.1 4 8C4 6.9 3.1 6 2 6ZM8 12C6.9 12 6 12.9 6 14C6 15.1 6.9 16 8 16C9.1 16 10 15.1 10 14C10 12.9 9.1 12 8 12ZM2 12C0.9 12 0 12.9 0 14C0 15.1 0.9 16 2 16C3.1 16 4 15.1 4 14C4 12.9 3.1 12 2 12Z\" />\n </svg>\n <svg\n width=\"10\"\n height=\"24\"\n viewBox=\"0 0 10 24\"\n [class]=\"question.getIconFocusCss()\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 5L5 0L0 5H4V9H6V5H10Z\" />\n <path d=\"M6 19V15H4V19H0L5 24L10 19H6Z\" />\n </svg>\n </div>\n\n <div [class]=\"question.cssClasses.itemIndex\">{{ question.getNumberByIndex(index) }}</div>\n <div [class]=\"question.cssClasses.controlLabel\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </div>\n </div>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }] });
1710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RankingItemComponent, decorators: [{
1711
+ type: Component,
1712
+ args: [{ selector: "sv-ng-ranking-item", template: "\n\n\n<div tabindex=\"0\" [attr.data-sv-drop-target-ranking-item]=\"index\" \n [class]=\"question.getItemClass(model)\"\n (keydown)=\"question.handleKeydown($event, model)\"\n (pointerdown)=\"question.handlePointerDown($event, model, $any($event.currentTarget))\">\n <div tabindex=\"-1\" style=\"outline: none;\">\n <div [class]=\"question.cssClasses.itemGhostNode\"></div>\n <div [class]=\"question.cssClasses.itemContent\">\n <div [class]=\"question.cssClasses.itemIconContainer\">\n <svg\n width=\"10\"\n height=\"16\"\n viewBox=\"0 0 10 16\"\n [class]=\"question.getIconHoverCss()\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M6 2C6 0.9 6.9 0 8 0C9.1 0 10 0.9 10 2C10 3.1 9.1 4 8 4C6.9 4 6 3.1 6 2ZM2 0C0.9 0 0 0.9 0 2C0 3.1 0.9 4 2 4C3.1 4 4 3.1 4 2C4 0.9 3.1 0 2 0ZM8 6C6.9 6 6 6.9 6 8C6 9.1 6.9 10 8 10C9.1 10 10 9.1 10 8C10 6.9 9.1 6 8 6ZM2 6C0.9 6 0 6.9 0 8C0 9.1 0.9 10 2 10C3.1 10 4 9.1 4 8C4 6.9 3.1 6 2 6ZM8 12C6.9 12 6 12.9 6 14C6 15.1 6.9 16 8 16C9.1 16 10 15.1 10 14C10 12.9 9.1 12 8 12ZM2 12C0.9 12 0 12.9 0 14C0 15.1 0.9 16 2 16C3.1 16 4 15.1 4 14C4 12.9 3.1 12 2 12Z\" />\n </svg>\n <svg\n width=\"10\"\n height=\"24\"\n viewBox=\"0 0 10 24\"\n [class]=\"question.getIconFocusCss()\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M10 5L5 0L0 5H4V9H6V5H10Z\" />\n <path d=\"M6 19V15H4V19H0L5 24L10 19H6Z\" />\n </svg>\n </div>\n\n <div [class]=\"question.cssClasses.itemIndex\">{{ question.getNumberByIndex(index) }}</div>\n <div [class]=\"question.cssClasses.controlLabel\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </div>\n </div>\n </div>\n</div>" }]
1713
+ }], propDecorators: { question: [{
1714
+ type: Input
1715
+ }], model: [{
1716
+ type: Input
1717
+ }], index: [{
1718
+ type: Input
1719
+ }] } });
1720
+
1721
+ class RankingQuestionComponent extends QuestionAngular {
1722
+ constructor() {
1723
+ super(...arguments);
1724
+ this.trackItemBy = (index, item) => {
1725
+ return item.value + "-" + index + "-item";
1726
+ };
1727
+ }
1728
+ }
1729
+ RankingQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RankingQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1730
+ RankingQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: RankingQuestionComponent, selector: "sv-ng-ranking-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.rootClass\" #contentElement>\n <sv-ng-ranking-item\n *ngFor=\"let item of model.rankingChoices; index as index; trackBy: trackItemBy\"\n [index]=\"index\"\n [question]=\"model\"\n [model]=\"item\"\n ></sv-ng-ranking-item>\n</div>", components: [{ type: RankingItemComponent, selector: "sv-ng-ranking-item", inputs: ["question", "model", "index"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: RankingQuestionComponent, decorators: [{
1732
+ type: Component,
1733
+ args: [{ selector: "sv-ng-ranking-question", template: "<div [class]=\"model.rootClass\" #contentElement>\n <sv-ng-ranking-item\n *ngFor=\"let item of model.rankingChoices; index as index; trackBy: trackItemBy\"\n [index]=\"index\"\n [question]=\"model\"\n [model]=\"item\"\n ></sv-ng-ranking-item>\n</div>" }]
1734
+ }] });
1735
+ AngularComponentFactory.Instance.registerComponent("ranking-question", RankingQuestionComponent);
1736
+
1737
+ class StringEditorComponent {
1738
+ constructor() {
1739
+ this.onInput = (event) => {
1740
+ this.model.text = event.target.innerText;
1741
+ };
1742
+ this.onClick = (event) => {
1743
+ event.preventDefault();
1744
+ event.stopPropagation();
1745
+ };
1746
+ }
1747
+ }
1748
+ StringEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StringEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1749
+ StringEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: StringEditorComponent, selector: "sv-ng-string-editor", inputs: { model: "model" }, ngImport: i0, template: "<span style=\"position: static\">\n <span\n class=\"sv-string-editor\"\n contenteditable=\"true\"\n style=\"position: static\"\n *ngIf=\"model.hasHtml\"\n [innerHtml]=\"model.renderedHtml\"\n (blur)=\"onInput($event)\"\n (click)=\"onClick($event)\"\n ></span>\n <span\n class=\"sv-string-editor\"\n contenteditable=\"true\"\n style=\"position: static\"\n *ngIf=\"!model.hasHtml\"\n (blur)=\"onInput($event)\"\n (click)=\"onClick($event)\"\n >{{ model.renderedHtml }}</span\n >\n</span>", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1750
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: StringEditorComponent, decorators: [{
1751
+ type: Component,
1752
+ args: [{ selector: "sv-ng-string-editor", template: "<span style=\"position: static\">\n <span\n class=\"sv-string-editor\"\n contenteditable=\"true\"\n style=\"position: static\"\n *ngIf=\"model.hasHtml\"\n [innerHtml]=\"model.renderedHtml\"\n (blur)=\"onInput($event)\"\n (click)=\"onClick($event)\"\n ></span>\n <span\n class=\"sv-string-editor\"\n contenteditable=\"true\"\n style=\"position: static\"\n *ngIf=\"!model.hasHtml\"\n (blur)=\"onInput($event)\"\n (click)=\"onClick($event)\"\n >{{ model.renderedHtml }}</span\n >\n</span>" }]
1753
+ }], propDecorators: { model: [{
1754
+ type: Input
1755
+ }] } });
1756
+ AngularComponentFactory.Instance.registerComponent(LocalizableString.editableRenderer, StringEditorComponent);
1757
+
1758
+ class PaneldynamicAction {
1759
+ get question() {
1760
+ return (this.model && this.model.data.question) || this.data.question;
1761
+ }
1762
+ }
1763
+ PaneldynamicAction.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PaneldynamicAction, deps: [], target: i0.ɵɵFactoryTarget.Component });
1764
+ PaneldynamicAction.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PaneldynamicAction, selector: "ng-component", inputs: { data: "data", model: "model" }, ngImport: i0, template: "", isInline: true });
1765
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PaneldynamicAction, decorators: [{
1766
+ type: Component,
1767
+ args: [{
1768
+ selector: "",
1769
+ template: ""
1770
+ }]
1771
+ }], propDecorators: { data: [{
1772
+ type: Input
1773
+ }], model: [{
1774
+ type: Input
1775
+ }] } });
1776
+ class PanelDynamicAddBtn extends PaneldynamicAction {
1777
+ addPanelClick() {
1778
+ this.question.addPanelUI();
1779
+ }
1780
+ }
1781
+ PanelDynamicAddBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicAddBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
1782
+ PanelDynamicAddBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" *ngIf=\"question.canAddPanel\" [class]=\"question.getAddButtonCss()\" (click)=\"addPanelClick()\">\n<span [class]=\"question.cssClasses.buttonAddText\">{{question.panelAddText}}</span>\n</button>", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicAddBtn, decorators: [{
1784
+ type: Component,
1785
+ args: [{ selector: "sv-ng-paneldynamic-add-btn", template: "<button type=\"button\" *ngIf=\"question.canAddPanel\" [class]=\"question.getAddButtonCss()\" (click)=\"addPanelClick()\">\n<span [class]=\"question.cssClasses.buttonAddText\">{{question.panelAddText}}</span>\n</button>" }]
1786
+ }] });
1787
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-add-btn", PanelDynamicAddBtn);
1788
+
1789
+ class PanelDynamicNextBtn extends PaneldynamicAction {
1790
+ nextPanelClick() {
1791
+ this.question.goToNextPanel();
1792
+ }
1793
+ }
1794
+ PanelDynamicNextBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicNextBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
1795
+ PanelDynamicNextBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelDynamicNextBtn, selector: "sv-ng-paneldynamic-next-btn", usesInheritance: true, ngImport: i0, template: "<div [attr.title]=\"question.panelNextText\" (click)=\"nextPanelClick()\" [class]=\"question.getNextButtonCss()\">\n <svg [iconName]=\"question.cssClasses.progressBtnIcon\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }] });
1796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicNextBtn, decorators: [{
1797
+ type: Component,
1798
+ args: [{ selector: "sv-ng-paneldynamic-next-btn", template: "<div [attr.title]=\"question.panelNextText\" (click)=\"nextPanelClick()\" [class]=\"question.getNextButtonCss()\">\n <svg [iconName]=\"question.cssClasses.progressBtnIcon\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n</div>" }]
1799
+ }] });
1800
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-next-btn", PanelDynamicNextBtn);
1801
+
1802
+ class PanelDynamicPrevBtn extends PaneldynamicAction {
1803
+ prevPanelClick() {
1804
+ this.question.goToPrevPanel();
1805
+ }
1806
+ }
1807
+ PanelDynamicPrevBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicPrevBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
1808
+ PanelDynamicPrevBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelDynamicPrevBtn, selector: "sv-ng-paneldynamic-prev-btn", usesInheritance: true, ngImport: i0, template: "<div [attr.title]=\"question.panelPrevText\" (click)=\"prevPanelClick()\" [class]=\"question.getPrevButtonCss()\">\n <svg [iconName]=\"question.cssClasses.progressBtnIcon\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n</div>\n", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }] });
1809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicPrevBtn, decorators: [{
1810
+ type: Component,
1811
+ args: [{ selector: "sv-ng-paneldynamic-prev-btn", template: "<div [attr.title]=\"question.panelPrevText\" (click)=\"prevPanelClick()\" [class]=\"question.getPrevButtonCss()\">\n <svg [iconName]=\"question.cssClasses.progressBtnIcon\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n</div>\n" }]
1812
+ }] });
1813
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-prev-btn", PanelDynamicPrevBtn);
1814
+
1815
+ class PanelDynamicProgressText extends PaneldynamicAction {
1816
+ }
1817
+ PanelDynamicProgressText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicProgressText, deps: null, target: i0.ɵɵFactoryTarget.Component });
1818
+ PanelDynamicProgressText.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelDynamicProgressText, selector: "sv-ng-paneldynamic-progress-text", usesInheritance: true, ngImport: i0, template: "<div [class]=\"question.cssClasses.progressText\">{{ question.progressText }}</div>\n" });
1819
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicProgressText, decorators: [{
1820
+ type: Component,
1821
+ args: [{ selector: "sv-ng-paneldynamic-progress-text", template: "<div [class]=\"question.cssClasses.progressText\">{{ question.progressText }}</div>\n" }]
1822
+ }] });
1823
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-progress-text", PanelDynamicProgressText);
1824
+
1825
+ class PanelDynamicQuestionComponent extends QuestionAngular {
1826
+ get renderedPanels() {
1827
+ if (this.model.isRenderModeList)
1828
+ return this.model.panels;
1829
+ const panels = [];
1830
+ if (this.model.currentPanel) {
1831
+ panels.push(this.model.currentPanel);
1832
+ }
1833
+ return panels;
1834
+ }
1835
+ onModelChanged() {
1836
+ super.onModelChanged();
1837
+ this.model.panelCountChangedCallback = () => {
1838
+ this.detectChanges();
1839
+ };
1840
+ this.model.currentIndexChangedCallback = () => {
1841
+ this.detectChanges();
1842
+ };
1843
+ this.model.renderModeChangedCallback = () => {
1844
+ this.detectChanges();
1845
+ };
1846
+ }
1847
+ get progressCssClass() {
1848
+ return this.model.isProgressTopShowing
1849
+ ? this.model.cssClasses.progressTop
1850
+ : this.model.cssClasses.progressBottom;
1851
+ }
1852
+ ngOnDestroy() {
1853
+ this.model.panelCountChangedCallback = () => { };
1854
+ this.model.currentIndexChangedCallback = () => { };
1855
+ this.model.renderModeChangedCallback = () => { };
1856
+ super.ngOnDestroy();
1857
+ }
1858
+ }
1859
+ PanelDynamicQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1860
+ PanelDynamicQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: PanelDynamicQuestionComponent, selector: "sv-ng-paneldynamic-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <div *ngIf=\"model.getShowNoEntriesPlaceholder()\" [class]=\"model.cssClasses.noEntriesPlaceholder\">\n <span [model]=\"model.locNoEntriesText\" sv-ng-string></span>\n <sv-ng-paneldynamic-add-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n </div>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"!model.showLegacyNavigation && model.isProgressTopShowing && model.isRangeShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <ng-container [ngTemplateOutlet]=\"progress\" *ngIf=\"model.showLegacyNavigation && model.isProgressTopShowing\"></ng-container>\n <!-- add track by [key]=\"panel.id\" -->\n <ng-container *ngFor=\"let panel of renderedPanels; index as index\"> \n <div [class]=\"model.getPanelWrapperCss()\">\n <sv-ng-panel [model]=\"panel\"></sv-ng-panel>\n <ng-container *ngTemplateOutlet=\"removeBtn; context: { panel }\"></ng-container>\n </div>\n <!-- add track by [key]=\"'separator' + panel.id\" -->\n <hr [class]=\"model.cssClasses.separator\" *ngIf=\"model.isRenderModeList && index < model.panelCount - 1\"/>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"progress\" *ngIf=\"model.showLegacyNavigation && model.isProgressBottomShowing\"></ng-container>\n <sv-ng-paneldynamic-add-btn *ngIf=\"model.showLegacyNavigation && model.isRenderModeList\" [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <ng-container [ngTemplateOutlet]=\"progressV2\" *ngIf=\"model.panelCount !== 0 && !model.showLegacyNavigation\"></ng-container>\n</div>\n\n<ng-template #progressV2>\n <div [class]=\"model.cssClasses.footer\" *ngIf=\"!!model.cssClasses.footer\">\n <hr [class]=\"model.cssClasses.separator\"/>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing && model.isProgressBottomShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <div [class]=\"model.cssClasses.footerButtonsContainer\">\n <sv-ng-action-bar [model]=\"model.footerToolbar\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>\n<ng-template #progress>\n <div [class]=\"this.progressCssClass\">\n <div style=\"clear: both\" [class]=\"this.progressCssClass\">\n <div [class]=\"model.cssClasses.progressContainer\">\n <sv-ng-paneldynamic-prev-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-prev-btn>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <sv-ng-paneldynamic-next-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-next-btn>\n </div>\n <sv-ng-paneldynamic-add-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <sv-ng-paneldynamic-progress-text [data]=\"{ question: model }\"></sv-ng-paneldynamic-progress-text>\n </div>\n </div>\n</ng-template>\n\n<ng-template #removeBtn let-panel=\"panel\">\n <button type=\"button\"\n [visible]=\"model.canRemovePanel && panel.state != 'collapsed'\" (click)=\"model.removePanelUI(panel)\" [class]=\"model.getPanelRemoveButtonCss()\">\n <span [class]=\"model.cssClasses.buttonRemoveText\">{{model.panelRemoveText}}</span>\n <span [class]=\"model.cssClasses.iconRemove\"></span>\n </button>\n</ng-template>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn" }, { type: PanelComponent, selector: "sv-ng-panel, '[sv-ng-panel]'", inputs: ["model"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PanelDynamicPrevBtn, selector: "sv-ng-paneldynamic-prev-btn" }, { type: PanelDynamicNextBtn, selector: "sv-ng-paneldynamic-next-btn" }, { type: PanelDynamicProgressText, selector: "sv-ng-paneldynamic-progress-text" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
1861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: PanelDynamicQuestionComponent, decorators: [{
1862
+ type: Component,
1863
+ args: [{ selector: "sv-ng-paneldynamic-question", template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <div *ngIf=\"model.getShowNoEntriesPlaceholder()\" [class]=\"model.cssClasses.noEntriesPlaceholder\">\n <span [model]=\"model.locNoEntriesText\" sv-ng-string></span>\n <sv-ng-paneldynamic-add-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n </div>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"!model.showLegacyNavigation && model.isProgressTopShowing && model.isRangeShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <ng-container [ngTemplateOutlet]=\"progress\" *ngIf=\"model.showLegacyNavigation && model.isProgressTopShowing\"></ng-container>\n <!-- add track by [key]=\"panel.id\" -->\n <ng-container *ngFor=\"let panel of renderedPanels; index as index\"> \n <div [class]=\"model.getPanelWrapperCss()\">\n <sv-ng-panel [model]=\"panel\"></sv-ng-panel>\n <ng-container *ngTemplateOutlet=\"removeBtn; context: { panel }\"></ng-container>\n </div>\n <!-- add track by [key]=\"'separator' + panel.id\" -->\n <hr [class]=\"model.cssClasses.separator\" *ngIf=\"model.isRenderModeList && index < model.panelCount - 1\"/>\n </ng-container>\n <ng-container [ngTemplateOutlet]=\"progress\" *ngIf=\"model.showLegacyNavigation && model.isProgressBottomShowing\"></ng-container>\n <sv-ng-paneldynamic-add-btn *ngIf=\"model.showLegacyNavigation && model.isRenderModeList\" [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <ng-container [ngTemplateOutlet]=\"progressV2\" *ngIf=\"model.panelCount !== 0 && !model.showLegacyNavigation\"></ng-container>\n</div>\n\n<ng-template #progressV2>\n <div [class]=\"model.cssClasses.footer\" *ngIf=\"!!model.cssClasses.footer\">\n <hr [class]=\"model.cssClasses.separator\"/>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing && model.isProgressBottomShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <div [class]=\"model.cssClasses.footerButtonsContainer\">\n <sv-ng-action-bar [model]=\"model.footerToolbar\"></sv-ng-action-bar>\n </div>\n </div>\n</ng-template>\n<ng-template #progress>\n <div [class]=\"this.progressCssClass\">\n <div style=\"clear: both\" [class]=\"this.progressCssClass\">\n <div [class]=\"model.cssClasses.progressContainer\">\n <sv-ng-paneldynamic-prev-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-prev-btn>\n <div [class]=\"model.cssClasses.progress\" *ngIf=\"model.isRangeShowing\">\n <div\n [class]=\"model.cssClasses.progressBar\"\n [style]=\"{ width: model.progress }\"\n role=\"progressbar\"\n ></div>\n </div>\n <sv-ng-paneldynamic-next-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-next-btn>\n </div>\n <sv-ng-paneldynamic-add-btn [data]=\"{ question: model }\"></sv-ng-paneldynamic-add-btn>\n <sv-ng-paneldynamic-progress-text [data]=\"{ question: model }\"></sv-ng-paneldynamic-progress-text>\n </div>\n </div>\n</ng-template>\n\n<ng-template #removeBtn let-panel=\"panel\">\n <button type=\"button\"\n [visible]=\"model.canRemovePanel && panel.state != 'collapsed'\" (click)=\"model.removePanelUI(panel)\" [class]=\"model.getPanelRemoveButtonCss()\">\n <span [class]=\"model.cssClasses.buttonRemoveText\">{{model.panelRemoveText}}</span>\n <span [class]=\"model.cssClasses.iconRemove\"></span>\n </button>\n</ng-template>" }]
1864
+ }] });
1865
+ AngularComponentFactory.Instance.registerComponent("paneldynamic-question", PanelDynamicQuestionComponent);
1866
+
1867
+ class CustomWidgetComponent {
1868
+ get hasDefaultRender() {
1869
+ return this.model.customWidget.isDefaultRender || this.hasAngularComponent;
1870
+ }
1871
+ get hasHtml() {
1872
+ return this.model.customWidget.htmlTemplate ? true : false;
1873
+ }
1874
+ get customHtml() {
1875
+ return this.model.customWidget.htmlTemplate;
1876
+ }
1877
+ get hasAngularComponent() {
1878
+ return AngularComponentFactory.Instance.isComponentRegistered(this.model.customWidget.name);
1879
+ }
1880
+ get componentName() {
1881
+ if (this.hasAngularComponent)
1882
+ return this.model.customWidget.name;
1883
+ return this.model.getTemplate() + "-question";
1884
+ }
1885
+ ngAfterViewInit() {
1886
+ this.model.customWidget.afterRender(this.model, this.container.nativeElement);
1887
+ }
1888
+ ngOnChanges(simpleChanges) {
1889
+ if (simpleChanges["model"].previousValue !== undefined && simpleChanges["model"].currentValue !== undefined) {
1890
+ this.model.customWidget.afterRender(this.model, this.container.nativeElement);
1891
+ }
1892
+ }
1893
+ ngOnDestroy() {
1894
+ this.model.customWidget.willUnmount(this.model, this.container.nativeElement);
1895
+ }
1896
+ }
1897
+ CustomWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CustomWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1898
+ CustomWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CustomWidgetComponent, selector: "sv-ng-custom-widget", inputs: { css: "css", model: "model" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["content"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #content>\n <div *ngIf=\"hasHtml\" [innerHTML]=\"customHtml | safeHtml\"></div>\n <ng-container *ngIf=\"hasDefaultRender\">\n <ng-template [component]=\"{ name: componentName, data: { model: model, css: css } }\"></ng-template> \n </ng-container>\n</div>", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
1899
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CustomWidgetComponent, decorators: [{
1900
+ type: Component,
1901
+ args: [{ selector: "sv-ng-custom-widget", template: "<div #content>\n <div *ngIf=\"hasHtml\" [innerHTML]=\"customHtml | safeHtml\"></div>\n <ng-container *ngIf=\"hasDefaultRender\">\n <ng-template [component]=\"{ name: componentName, data: { model: model, css: css } }\"></ng-template> \n </ng-container>\n</div>" }]
1902
+ }], propDecorators: { css: [{
1903
+ type: Input
1904
+ }], model: [{
1905
+ type: Input
1906
+ }], container: [{
1907
+ type: ViewChild,
1908
+ args: ["content"]
1909
+ }] } });
1910
+ AngularComponentFactory.Instance.registerComponent("survey-customwidget", CustomWidgetComponent);
1911
+
1912
+ class MatrixCellComponent extends BaseAngular {
1913
+ constructor() {
1914
+ super(...arguments);
1915
+ this.isVisible = false;
1916
+ }
1917
+ getModel() {
1918
+ return this.cell.question;
1919
+ }
1920
+ getComponentName(element) {
1921
+ if (element.customWidget) {
1922
+ return "survey-customwidget";
1923
+ }
1924
+ return element.getType() + "-question";
1925
+ }
1926
+ getHeaders() {
1927
+ return this.cell.headers;
1928
+ }
1929
+ getCellStyle() {
1930
+ if (!!this.cell.width || !!this.cell.minWidth)
1931
+ return { width: this.cell.width, minWidth: this.cell.minWidth };
1932
+ return null;
1933
+ }
1934
+ ngAfterViewInit() {
1935
+ if (!this.cell.hasQuestion || !this.question || !this.question.survey)
1936
+ return;
1937
+ var options = {
1938
+ cell: this.cell.cell,
1939
+ cellQuestion: this.cell.question,
1940
+ htmlElement: this.cellContainer.nativeElement,
1941
+ row: this.cell.row,
1942
+ column: this.cell.cell.column,
1943
+ };
1944
+ this.question.survey.matrixAfterCellRender(this.question, options);
1945
+ }
1946
+ }
1947
+ MatrixCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1948
+ MatrixCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixCellComponent, selector: "sv-ng-matrix-cell", inputs: { question: "question", cell: "cell" }, viewQueries: [{ propertyName: "cellContainer", first: true, predicate: ["cellContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <td [class]=\"cell.className\" [attr.data-responsive-title]=\"getHeaders()\" [title]=\"cell.getTitle()\" [style]=\"getCellStyle()\" [attr.colspan]=\"cell.colSpans\" #cellContainer>\n <sv-action-bar *ngIf=\"cell.isActionsCell\" [model]=\"cell.item.getData()\" [handleClick]=\"false\"></sv-action-bar>\n <sv-ng-panel *ngIf=\"cell.hasPanel\" [model]=\"cell.panel\"></sv-ng-panel>\n <div *ngIf=\"cell.hasQuestion\" [class]=\"question.cssClasses.cellQuestionWrapper\" [visible]=\"cell.question.isVisible\">\n <div *ngIf=\"cell.showErrorOnTop && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'top'\" sv-ng-errors></div>\n <ng-template *ngIf=\"!cell.isChoice && cell.question.isDefaultRendering()\" [component]=\"{ name: getComponentName(cell.question), data: { model: cell.question } }\"></ng-template>\n <ng-template *ngIf=\"!cell.isChoice && !cell.question.isDefaultRendering()\" [component]=\"{ name: cell.question.getComponentName(), data: { model: cell.question } }\">\n </ng-template>\n <sv-ng-selebase-item\n *ngIf=\"cell.isChoice\"\n [showLabel]=\"false\"\n [inputType]=\"cell.isCheckbox ? 'checkbox': 'radio'\"\n [question]=\"cell.question\"\n [model]=\"cell.item\"\n ></sv-ng-selebase-item>\n <div *ngIf=\"cell.showErrorOnBottom && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'top'\" sv-ng-errors></div>\n <div *ngIf=\"cell.question.isErrorsModeTooltip && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'tooltip'\" sv-ng-errors></div>\n </div>\n <sv-ng-string *ngIf=\"cell.hasTitle\" [model]=\"cell.locTitle\"></sv-ng-string>\n <span *ngIf=\"!!cell.requiredText\" [class]=\"question.cssClasses.cellRequiredText\">{{ cell.requiredText }}</span>\n</td>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PanelComponent, selector: "sv-ng-panel, '[sv-ng-panel]'", inputs: ["model"] }, { type: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: ["question", "model", "inputType", "showLabel"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1949
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixCellComponent, decorators: [{
1950
+ type: Component,
1951
+ args: [{ selector: "sv-ng-matrix-cell", styles: [":host { display: none; }"], template: "<ng-template #template>\n <td [class]=\"cell.className\" [attr.data-responsive-title]=\"getHeaders()\" [title]=\"cell.getTitle()\" [style]=\"getCellStyle()\" [attr.colspan]=\"cell.colSpans\" #cellContainer>\n <sv-action-bar *ngIf=\"cell.isActionsCell\" [model]=\"cell.item.getData()\" [handleClick]=\"false\"></sv-action-bar>\n <sv-ng-panel *ngIf=\"cell.hasPanel\" [model]=\"cell.panel\"></sv-ng-panel>\n <div *ngIf=\"cell.hasQuestion\" [class]=\"question.cssClasses.cellQuestionWrapper\" [visible]=\"cell.question.isVisible\">\n <div *ngIf=\"cell.showErrorOnTop && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'top'\" sv-ng-errors></div>\n <ng-template *ngIf=\"!cell.isChoice && cell.question.isDefaultRendering()\" [component]=\"{ name: getComponentName(cell.question), data: { model: cell.question } }\"></ng-template>\n <ng-template *ngIf=\"!cell.isChoice && !cell.question.isDefaultRendering()\" [component]=\"{ name: cell.question.getComponentName(), data: { model: cell.question } }\">\n </ng-template>\n <sv-ng-selebase-item\n *ngIf=\"cell.isChoice\"\n [showLabel]=\"false\"\n [inputType]=\"cell.isCheckbox ? 'checkbox': 'radio'\"\n [question]=\"cell.question\"\n [model]=\"cell.item\"\n ></sv-ng-selebase-item>\n <div *ngIf=\"cell.showErrorOnBottom && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'top'\" sv-ng-errors></div>\n <div *ngIf=\"cell.question.isErrorsModeTooltip && cell.question.hasVisibleErrors\" [element]=\"cell.question\" [location]=\"'tooltip'\" sv-ng-errors></div>\n </div>\n <sv-ng-string *ngIf=\"cell.hasTitle\" [model]=\"cell.locTitle\"></sv-ng-string>\n <span *ngIf=\"!!cell.requiredText\" [class]=\"question.cssClasses.cellRequiredText\">{{ cell.requiredText }}</span>\n</td>\n</ng-template>" }]
1952
+ }], propDecorators: { question: [{
1953
+ type: Input
1954
+ }], cell: [{
1955
+ type: Input
1956
+ }], cellContainer: [{
1957
+ type: ViewChild,
1958
+ args: ["cellContainer"]
1959
+ }] } });
1960
+
1961
+ class MatrixRequiredHeader extends BaseAngular {
1962
+ getModel() {
1963
+ return this.column;
1964
+ }
1965
+ }
1966
+ MatrixRequiredHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixRequiredHeader, deps: null, target: i0.ɵɵFactoryTarget.Component });
1967
+ MatrixRequiredHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixRequiredHeader, selector: "sv-ng-matrixheaderrequired", inputs: { column: "column", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template><span *ngIf='column.isRenderedRequired' [class]='question.cssClasses.cellRequiredText'>{{ column.requiredText }}</span></ng-template>", isInline: true, styles: [":host{display:none}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1968
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixRequiredHeader, decorators: [{
1969
+ type: Component,
1970
+ args: [{
1971
+ selector: "sv-ng-matrixheaderrequired",
1972
+ styles: [":host { display: none; }"],
1973
+ template: "<ng-template #template><span *ngIf='column.isRenderedRequired' [class]='question.cssClasses.cellRequiredText'>{{ column.requiredText }}</span></ng-template>"
1974
+ }]
1975
+ }], propDecorators: { column: [{
1976
+ type: Input
1977
+ }], question: [{
1978
+ type: Input
1979
+ }] } });
1980
+
1981
+ class MatrixTableComponent extends BaseAngular {
1982
+ getModel() {
1983
+ return this.table;
1984
+ }
1985
+ trackCellBy(_, cell) {
1986
+ return cell.id;
1987
+ }
1988
+ trackRowBy(index, row) {
1989
+ return row.id;
1990
+ }
1991
+ }
1992
+ MatrixTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1993
+ MatrixTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: { question: "question", table: "table" }, usesInheritance: true, ngImport: i0, template: "<table [class]=\"question.getTableCss()\">\n <thead *ngIf=\"table.showHeader\">\n <tr>\n <th\n [class]=\"cell.className\"\n *ngFor=\"let cell of table.headerRow.cells; trackBy: trackCellBy\"\n [style]=\"{ minWidth: cell.minWidth, width: cell.width }\"\n >\n <sv-ng-string *ngIf=\"cell.hasTitle\" [model]=\"cell.locTitle\"></sv-ng-string>\n <sv-ng-matrixheaderrequired *ngIf=\"!!cell.column\" [column]=\"cell.column\" [question]=\"question\"></sv-ng-matrixheaderrequired>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of table.rows; trackBy: trackRowBy\" [class]=\"row.className\">\n <sv-ng-matrix-cell\n [cell]=\"cell\"\n [question]=\"question\"\n *ngFor=\"let cell of row.cells; trackBy: trackCellBy\"\n ></sv-ng-matrix-cell>\n </tr>\n </tbody>\n <tfoot *ngIf=\"table.showFooter\">\n <tr>\n <sv-ng-matrix-cell [cell]=\"cell\" [question]=\"question\" *ngFor=\"let cell of table.footerRow.cells; trackBy: trackCellBy\">\n </sv-ng-matrix-cell>\n </tr>\n </tfoot>\n</table>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: MatrixRequiredHeader, selector: "sv-ng-matrixheaderrequired", inputs: ["column", "question"] }, { type: MatrixCellComponent, selector: "sv-ng-matrix-cell", inputs: ["question", "cell"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixTableComponent, decorators: [{
1995
+ type: Component,
1996
+ args: [{ selector: "sv-ng-matrix-table", template: "<table [class]=\"question.getTableCss()\">\n <thead *ngIf=\"table.showHeader\">\n <tr>\n <th\n [class]=\"cell.className\"\n *ngFor=\"let cell of table.headerRow.cells; trackBy: trackCellBy\"\n [style]=\"{ minWidth: cell.minWidth, width: cell.width }\"\n >\n <sv-ng-string *ngIf=\"cell.hasTitle\" [model]=\"cell.locTitle\"></sv-ng-string>\n <sv-ng-matrixheaderrequired *ngIf=\"!!cell.column\" [column]=\"cell.column\" [question]=\"question\"></sv-ng-matrixheaderrequired>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of table.rows; trackBy: trackRowBy\" [class]=\"row.className\">\n <sv-ng-matrix-cell\n [cell]=\"cell\"\n [question]=\"question\"\n *ngFor=\"let cell of row.cells; trackBy: trackCellBy\"\n ></sv-ng-matrix-cell>\n </tr>\n </tbody>\n <tfoot *ngIf=\"table.showFooter\">\n <tr>\n <sv-ng-matrix-cell [cell]=\"cell\" [question]=\"question\" *ngFor=\"let cell of table.footerRow.cells; trackBy: trackCellBy\">\n </sv-ng-matrix-cell>\n </tr>\n </tfoot>\n</table>" }]
1997
+ }], propDecorators: { question: [{
1998
+ type: Input
1999
+ }], table: [{
2000
+ type: Input
2001
+ }] } });
2002
+
2003
+ class MatrixDropdownComponent extends QuestionAngular {
2004
+ }
2005
+ MatrixDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2006
+ MatrixDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixDropdownComponent, selector: "sv-ng-matrixdropdown-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [style]=\"{ overflowX: model.showHorizontalScroll ? 'scroll' : '' }\" #contentElement>\n <sv-ng-matrix-table *ngIf=\"model.renderedTable?.showTable\" [question]=\"model\" [table]=\"model.renderedTable\"></sv-ng-matrix-table>\n </div>\n</ng-template>", components: [{ type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: ["question", "table"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDropdownComponent, decorators: [{
2008
+ type: Component,
2009
+ args: [{ selector: "sv-ng-matrixdropdown-question", template: "<ng-template #template>\n <div [style]=\"{ overflowX: model.showHorizontalScroll ? 'scroll' : '' }\" #contentElement>\n <sv-ng-matrix-table *ngIf=\"model.renderedTable?.showTable\" [question]=\"model\" [table]=\"model.renderedTable\"></sv-ng-matrix-table>\n </div>\n</ng-template>" }]
2010
+ }] });
2011
+ AngularComponentFactory.Instance.registerComponent("matrixdropdown-question", MatrixDropdownComponent);
2012
+
2013
+ class MatrixDynamicComponent extends QuestionAngular {
2014
+ }
2015
+ MatrixDynamicComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2016
+ MatrixDynamicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixDynamicComponent, selector: "sv-ng-matrixdynamic-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [style]=\"{ overflowX: model.showHorizontalScroll ? 'scroll' : '' }\" #contentElement>\n <div *ngIf=\"model.renderedTable.showAddRowOnTop\" [class]=\"model.cssClasses.footer\">\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n <sv-ng-matrix-table *ngIf=\"model.renderedTable?.showTable\" [question]=\"model\" [table]=\"model.renderedTable\"></sv-ng-matrix-table>\n <div *ngIf=\"!model.renderedTable.showTable\" [class]=\"model.cssClasses.emptyRowsSection\">\n <div [class]=\"model.cssClasses.emptyRowsText\" [model]=\"model.locEmptyRowsText\" sv-ng-string></div>\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n <div *ngIf=\"model.renderedTable.showAddRowOnBottom\" [class]=\"model.cssClasses.footer\">\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n </div>\n <ng-template #addRowButton>\n <button type=\"button\" [class]=\"model.getAddRowButtonCss(true)\" (click)=\"model.addRowUI()\">\n <sv-ng-string [model]=\"model.locAddRowText\" ></sv-ng-string>\n <span [class]=\"model.cssClasses.iconAdd\"></span>\n </button>\n </ng-template>\n</ng-template>", components: [{ type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: ["question", "table"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicComponent, decorators: [{
2018
+ type: Component,
2019
+ args: [{ selector: "sv-ng-matrixdynamic-question", template: "<ng-template #template>\n <div [style]=\"{ overflowX: model.showHorizontalScroll ? 'scroll' : '' }\" #contentElement>\n <div *ngIf=\"model.renderedTable.showAddRowOnTop\" [class]=\"model.cssClasses.footer\">\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n <sv-ng-matrix-table *ngIf=\"model.renderedTable?.showTable\" [question]=\"model\" [table]=\"model.renderedTable\"></sv-ng-matrix-table>\n <div *ngIf=\"!model.renderedTable.showTable\" [class]=\"model.cssClasses.emptyRowsSection\">\n <div [class]=\"model.cssClasses.emptyRowsText\" [model]=\"model.locEmptyRowsText\" sv-ng-string></div>\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n <div *ngIf=\"model.renderedTable.showAddRowOnBottom\" [class]=\"model.cssClasses.footer\">\n <ng-container *ngTemplateOutlet=\"addRowButton\"></ng-container>\n </div>\n </div>\n <ng-template #addRowButton>\n <button type=\"button\" [class]=\"model.getAddRowButtonCss(true)\" (click)=\"model.addRowUI()\">\n <sv-ng-string [model]=\"model.locAddRowText\" ></sv-ng-string>\n <span [class]=\"model.cssClasses.iconAdd\"></span>\n </button>\n </ng-template>\n</ng-template>" }]
2020
+ }] });
2021
+ AngularComponentFactory.Instance.registerComponent("matrixdynamic-question", MatrixDynamicComponent);
2022
+
2023
+ class MatrixDynamicRemoveButtonComponent {
2024
+ get question() {
2025
+ return this.model.data.question;
2026
+ }
2027
+ get row() {
2028
+ return this.model.data.row;
2029
+ }
2030
+ getModel() {
2031
+ return this.model;
2032
+ }
2033
+ }
2034
+ MatrixDynamicRemoveButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicRemoveButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2035
+ MatrixDynamicRemoveButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixDynamicRemoveButtonComponent, selector: "sv-ng-matrix-remove-btn", inputs: { model: "model" }, ngImport: i0, template: "<button type=\"button\" [class]=\"question.getRemoveRowButtonCss()\" [disabled]=\"question.isInputReadOnly\" (click)=\"question.removeRowUI(row)\">\n <sv-ng-string [model]=\"question.locRemoveRowText\" ></sv-ng-string>\n <span [class]=\"question.cssClasses.iconRemove\"></span>\n</button>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }] });
2036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicRemoveButtonComponent, decorators: [{
2037
+ type: Component,
2038
+ args: [{ selector: "sv-ng-matrix-remove-btn", template: "<button type=\"button\" [class]=\"question.getRemoveRowButtonCss()\" [disabled]=\"question.isInputReadOnly\" (click)=\"question.removeRowUI(row)\">\n <sv-ng-string [model]=\"question.locRemoveRowText\" ></sv-ng-string>\n <span [class]=\"question.cssClasses.iconRemove\"></span>\n</button>" }]
2039
+ }], propDecorators: { model: [{
2040
+ type: Input
2041
+ }] } });
2042
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-remove-button", MatrixDynamicRemoveButtonComponent);
2043
+
2044
+ class MatrixDynamicDragDropIconComponent {
2045
+ get question() {
2046
+ return this.model.data.question;
2047
+ }
2048
+ getModel() {
2049
+ return this.model;
2050
+ }
2051
+ }
2052
+ MatrixDynamicDragDropIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicDragDropIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2053
+ MatrixDynamicDragDropIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixDynamicDragDropIconComponent, selector: "sv-ng-drag-drop-icon", inputs: { model: "model" }, ngImport: i0, template: "<span [class]='question.cssClasses.iconDrag'></span>", isInline: true });
2054
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDynamicDragDropIconComponent, decorators: [{
2055
+ type: Component,
2056
+ args: [{
2057
+ template: "<span [class]='question.cssClasses.iconDrag'></span>",
2058
+ selector: "sv-ng-drag-drop-icon"
2059
+ }]
2060
+ }], propDecorators: { model: [{
2061
+ type: Input
2062
+ }] } });
2063
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-drag-drop-icon", MatrixDynamicDragDropIconComponent);
2064
+
2065
+ class MatrixDetailButtonComponent {
2066
+ get question() {
2067
+ return this.model.data.question;
2068
+ }
2069
+ get row() {
2070
+ return this.model.data.row;
2071
+ }
2072
+ getModel() {
2073
+ return this.model;
2074
+ }
2075
+ }
2076
+ MatrixDetailButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDetailButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2077
+ MatrixDetailButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: MatrixDetailButtonComponent, selector: "sv-ng-matrix-detail-btn", inputs: { model: "model" }, ngImport: i0, template: "<button type=\"button\" [class]=\"question.getDetailPanelButtonCss(row)\" (click)=\"row.showHideDetailPanelClick()\"\n [attr.aria-expanded]=\"question.getIsDetailPanelShowing(row) ? 'true' : 'false'\"\n [attr.aria-controls]=\"question.getIsDetailPanelShowing(row) ? row.detailPanelId : null\">\n <svg [class]=\"this.question.getDetailPanelIconCss(this.row)\" \n [iconName]=\"this.question.getDetailPanelIconId(this.row)\" [size]=\"'auto'\" sv-ng-svg-icon>\n </svg>\n</button>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }] });
2078
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: MatrixDetailButtonComponent, decorators: [{
2079
+ type: Component,
2080
+ args: [{ selector: "sv-ng-matrix-detail-btn", template: "<button type=\"button\" [class]=\"question.getDetailPanelButtonCss(row)\" (click)=\"row.showHideDetailPanelClick()\"\n [attr.aria-expanded]=\"question.getIsDetailPanelShowing(row) ? 'true' : 'false'\"\n [attr.aria-controls]=\"question.getIsDetailPanelShowing(row) ? row.detailPanelId : null\">\n <svg [class]=\"this.question.getDetailPanelIconCss(this.row)\" \n [iconName]=\"this.question.getDetailPanelIconId(this.row)\" [size]=\"'auto'\" sv-ng-svg-icon>\n </svg>\n</button>" }]
2081
+ }], propDecorators: { model: [{
2082
+ type: Input
2083
+ }] } });
2084
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-detail-button", MatrixDetailButtonComponent);
2085
+
2086
+ class ExpressionComponent extends QuestionAngular {
2087
+ }
2088
+ ExpressionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ExpressionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2089
+ ExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ExpressionComponent, selector: "sv-ng-expression", usesInheritance: true, ngImport: i0, template: "<div [class]='model.cssClasses.root' #contentElement>{{ model.formatedValue }}</div>", isInline: true });
2090
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ExpressionComponent, decorators: [{
2091
+ type: Component,
2092
+ args: [{
2093
+ selector: "sv-ng-expression",
2094
+ template: "<div [class]='model.cssClasses.root' #contentElement>{{ model.formatedValue }}</div>"
2095
+ }]
2096
+ }] });
2097
+ AngularComponentFactory.Instance.registerComponent("expression-question", ExpressionComponent);
2098
+
2099
+ class ImageQuestionComponent extends QuestionAngular {
2100
+ }
2101
+ ImageQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImageQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2102
+ ImageQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: ImageQuestionComponent, selector: "sv-ng-image-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <img\n *ngIf=\"model.renderedMode === 'image'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink\"\n [attr.alt]=\"model.text || model.title\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n /><video\n controls\n *ngIf=\"model.renderedMode === 'video'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n ></video>\n <iframe\n *ngIf=\"model.renderedMode === 'youtube'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink | safeResourceUrl\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n ></iframe>\n</div>", directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeResourceUrl": SafeResourceUrlPipe } });
2103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: ImageQuestionComponent, decorators: [{
2104
+ type: Component,
2105
+ args: [{ selector: "sv-ng-image-question", template: "<div [class]=\"model.cssClasses.root\" #contentElement>\n <img\n *ngIf=\"model.renderedMode === 'image'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink\"\n [attr.alt]=\"model.text || model.title\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n /><video\n controls\n *ngIf=\"model.renderedMode === 'video'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n ></video>\n <iframe\n *ngIf=\"model.renderedMode === 'youtube'\"\n [class]=\"model.getImageCss()\"\n [attr.src]=\"model.imageLink | safeResourceUrl\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n ></iframe>\n</div>" }]
2106
+ }] });
2107
+ AngularComponentFactory.Instance.registerComponent("image-question", ImageQuestionComponent);
2108
+
2109
+ class CustomQuestionComponent extends QuestionAngular {
2110
+ get contentQuestion() {
2111
+ return this.model.contentQuestion;
2112
+ }
2113
+ getComponentName(element) {
2114
+ if (element.customWidget) {
2115
+ return "survey-customwidget";
2116
+ }
2117
+ return element.getTemplate() + "-question";
2118
+ }
2119
+ }
2120
+ CustomQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CustomQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2121
+ CustomQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CustomQuestionComponent, selector: "sv-ng-custom-question", usesInheritance: true, ngImport: i0, template: "<ng-template [component]='{ name: getComponentName(contentQuestion), data: { model: contentQuestion } }'></ng-template>", isInline: true, directives: [{ type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CustomQuestionComponent, decorators: [{
2123
+ type: Component,
2124
+ args: [{
2125
+ selector: "sv-ng-custom-question",
2126
+ template: "<ng-template [component]='{ name: getComponentName(contentQuestion), data: { model: contentQuestion } }'></ng-template>"
2127
+ }]
2128
+ }] });
2129
+ AngularComponentFactory.Instance.registerComponent("custom-question", CustomQuestionComponent);
2130
+
2131
+ class CompositeQuestionComponent extends QuestionAngular {
2132
+ get contentPanel() {
2133
+ return this.model.contentPanel;
2134
+ }
2135
+ }
2136
+ CompositeQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CompositeQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2137
+ CompositeQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.3", type: CompositeQuestionComponent, selector: "sv-ng-composite-question", usesInheritance: true, ngImport: i0, template: "<sv-ng-panel [model]='contentPanel'></sv-ng-panel>", isInline: true, components: [{ type: PanelComponent, selector: "sv-ng-panel, '[sv-ng-panel]'", inputs: ["model"] }] });
2138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: CompositeQuestionComponent, decorators: [{
2139
+ type: Component,
2140
+ args: [{
2141
+ selector: "sv-ng-composite-question",
2142
+ template: "<sv-ng-panel [model]='contentPanel'></sv-ng-panel>"
2143
+ }]
2144
+ }] });
2145
+ AngularComponentFactory.Instance.registerComponent("composite-question", CompositeQuestionComponent);
2146
+
2147
+ class SurveyAngularModule {
2148
+ }
2149
+ SurveyAngularModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2150
+ SurveyAngularModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyAngularModule, declarations: [VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent,
2151
+ SurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
2152
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
2153
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
2154
+ PopupComponent, PopupContainerComponent,
2155
+ ListComponent, ListItemComponent,
2156
+ TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
2157
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
2158
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
2159
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
2160
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
2161
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
2162
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe, BrandInfoComponent,
2163
+ CustomQuestionComponent, CompositeQuestionComponent], imports: [CommonModule, FormsModule], exports: [SurveyComponent, SvgIconComponent] });
2164
+ SurveyAngularModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyAngularModule, providers: [PopupService], imports: [[
2165
+ CommonModule, FormsModule
2166
+ ]] });
2167
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.3", ngImport: i0, type: SurveyAngularModule, decorators: [{
2168
+ type: NgModule,
2169
+ args: [{
2170
+ declarations: [
2171
+ VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent,
2172
+ SurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
2173
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
2174
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
2175
+ PopupComponent, PopupContainerComponent,
2176
+ ListComponent, ListItemComponent,
2177
+ TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
2178
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
2179
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
2180
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
2181
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
2182
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
2183
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe, BrandInfoComponent,
2184
+ CustomQuestionComponent, CompositeQuestionComponent
2185
+ ],
2186
+ imports: [
2187
+ CommonModule, FormsModule
2188
+ ],
2189
+ exports: [
2190
+ SurveyComponent, SvgIconComponent
2191
+ ],
2192
+ providers: [PopupService],
2193
+ }]
2194
+ }] });
2195
+
2196
+ /**
2197
+ * Generated bundle index. Do not edit.
2198
+ */
2199
+
2200
+ export { ActionBarComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, ActionComponent, AngularComponentFactory, CheckboxComponent, CheckboxItemComponent, DropdownComponent, DropdownQuestionComponent, HtmlQuestionComponent, ListComponent, ListItemComponent, PageComponent, PopupComponent, PopupContainerComponent, PopupService, QuestionComponent, QuestionSkeletonComponent, RadiogroupComponent, RadiogroupItemComponent, StringViewerComponent, SurveyAngularModule, SurveyComponent, SvgIconComponent, TagboxComponent, TagboxItemComponent, TextQuestionComponent };
2201
+ //# sourceMappingURL=survey-angular-ui.mjs.map