survey-angular-ui 1.9.74 → 1.9.76

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 (230) hide show
  1. package/README.md +23 -195
  2. package/angular-ui.d.ts +2 -0
  3. package/angular-ui.module.d.ts +82 -80
  4. package/bundles/survey-angular-ui.umd.js +4338 -0
  5. package/bundles/survey-angular-ui.umd.js.map +1 -0
  6. package/component-factory.d.ts +2 -2
  7. package/components/character-counter/character-counter.component.d.ts +10 -0
  8. package/components/rating/rating-item.component.d.ts +13 -0
  9. package/esm2015/angular-ui.js +105 -0
  10. package/esm2015/angular-ui.module.js +188 -0
  11. package/esm2015/base-angular.js +128 -0
  12. package/esm2015/comment-other.component.js +35 -0
  13. package/esm2015/comment.component.js +24 -0
  14. package/esm2015/component-factory.js +26 -0
  15. package/esm2015/components/action-bar/action-bar-item-dropdown.component.js +36 -0
  16. package/esm2015/components/action-bar/action-bar-item.component.js +26 -0
  17. package/esm2015/components/action-bar/action-bar.component.js +47 -0
  18. package/esm2015/components/action-bar/action.component.js +31 -0
  19. package/esm2015/components/brand-info/brand-info.component.js +16 -0
  20. package/esm2015/components/character-counter/character-counter.component.js +25 -0
  21. package/esm2015/components/dropdown/dropdown.component.js +76 -0
  22. package/esm2015/components/element-header/element-header.component.js +35 -0
  23. package/esm2015/components/element-title/dynamic-head.component.js +24 -0
  24. package/esm2015/components/element-title/element-title.component.js +21 -0
  25. package/esm2015/components/element-title/title-actions.component.js +21 -0
  26. package/esm2015/components/list/list-item.component.js +52 -0
  27. package/esm2015/components/list/list.component.js +55 -0
  28. package/esm2015/components/matrix-actions/detail-button/detail-button.component.js +28 -0
  29. package/esm2015/components/matrix-actions/drag-drop-icon/drag-drop-icon.js +24 -0
  30. package/esm2015/components/matrix-actions/remove-button/remove-button.component.js +28 -0
  31. package/esm2015/components/notifier/notifier.component.js +26 -0
  32. package/esm2015/components/paneldynamic-actions/paneldynamic-add-btn.component.js +38 -0
  33. package/esm2015/components/paneldynamic-actions/paneldynamic-next-btn.component.js +21 -0
  34. package/esm2015/components/paneldynamic-actions/paneldynamic-prev-btn.component.js +21 -0
  35. package/esm2015/components/paneldynamic-actions/paneldynamic-progress-text.component.js +17 -0
  36. package/esm2015/components/paneldynamic-actions/paneldynamic-remove-btn.component.js +20 -0
  37. package/esm2015/components/popup/modal-container.component.js +46 -0
  38. package/esm2015/components/popup/popup-container.component.js +59 -0
  39. package/esm2015/components/popup/popup-pointer.component.js +25 -0
  40. package/esm2015/components/popup/popup.component.js +45 -0
  41. package/esm2015/components/popup/popup.service.js +26 -0
  42. package/esm2015/components/progress/buttons/progress.component.js +71 -0
  43. package/esm2015/components/progress/default/progress.component.js +30 -0
  44. package/esm2015/components/rating/rating-item.component.js +34 -0
  45. package/esm2015/components/renderAs/boolean-checkbox/boolean-checkbox.component.js +24 -0
  46. package/esm2015/components/renderAs/boolean-radio/boolean-radio-item.component.js +25 -0
  47. package/esm2015/components/renderAs/boolean-radio/boolean-radio.component.js +21 -0
  48. package/esm2015/components/renderAs/dropdown-select/dropdown-option-item.component.js +23 -0
  49. package/esm2015/components/renderAs/dropdown-select/dropdown-select.component.js +41 -0
  50. package/esm2015/components/renderAs/rating-dropdown/rating-dropdown.component.js +21 -0
  51. package/esm2015/components/skeleton/skeleton.component.js +20 -0
  52. package/esm2015/components/skeleton.component.js +19 -0
  53. package/esm2015/components/survey-actions/survey-nav-btn.component.js +26 -0
  54. package/esm2015/components/survey-header/logo-image.component.js +24 -0
  55. package/esm2015/components/survey-header/survey-header.component.js +33 -0
  56. package/esm2015/components/svg-icon/svg-icon.component.js +68 -0
  57. package/esm2015/components/tagbox/tagbox-filter.component.js +26 -0
  58. package/esm2015/components/tagbox/tagbox-item.component.js +30 -0
  59. package/esm2015/components/tagbox/tagbox.component.js +52 -0
  60. package/esm2015/components/timer-panel/timer-panel.component.js +35 -0
  61. package/esm2015/element.component.js +59 -0
  62. package/esm2015/embedded-view-content.component.js +25 -0
  63. package/esm2015/errors.component.js +61 -0
  64. package/esm2015/page.component.js +40 -0
  65. package/esm2015/panel.component.js +42 -0
  66. package/esm2015/popup.survey.component.js +49 -0
  67. package/esm2015/question.component.js +58 -0
  68. package/esm2015/question.js +35 -0
  69. package/esm2015/questions/boolean.component.js +23 -0
  70. package/esm2015/questions/button-group/button-group-item.component.js +33 -0
  71. package/esm2015/questions/button-group/button-group.component.js +17 -0
  72. package/esm2015/questions/checkbox-item.component.js +28 -0
  73. package/esm2015/questions/checkbox.component.js +20 -0
  74. package/esm2015/questions/comment.component.js +22 -0
  75. package/esm2015/questions/composite.component.js +21 -0
  76. package/esm2015/questions/custom.component.js +27 -0
  77. package/esm2015/questions/customwidget.component.js +54 -0
  78. package/esm2015/questions/dropdown.component.js +20 -0
  79. package/esm2015/questions/expression.component.js +17 -0
  80. package/esm2015/questions/file.component.js +29 -0
  81. package/esm2015/questions/html.component.js +29 -0
  82. package/esm2015/questions/image.component.js +29 -0
  83. package/esm2015/questions/imagepicker-item.component.js +52 -0
  84. package/esm2015/questions/imagepicker.component.js +32 -0
  85. package/esm2015/questions/matrix-row.component.js +31 -0
  86. package/esm2015/questions/matrix.component.js +40 -0
  87. package/esm2015/questions/matrixcell.component.js +94 -0
  88. package/esm2015/questions/matrixdropdown.component.js +19 -0
  89. package/esm2015/questions/matrixdynamic.component.js +20 -0
  90. package/esm2015/questions/matrixrequiredheader.component.js +24 -0
  91. package/esm2015/questions/matrixtable.component.js +34 -0
  92. package/esm2015/questions/multipletext.component.js +28 -0
  93. package/esm2015/questions/multipletextitem.component.js +26 -0
  94. package/esm2015/questions/paneldynamic.component.js +82 -0
  95. package/esm2015/questions/radiogroup-item.component.js +22 -0
  96. package/esm2015/questions/radiogroup.component.js +25 -0
  97. package/esm2015/questions/ranking-item.component.js +27 -0
  98. package/esm2015/questions/ranking.component.js +34 -0
  99. package/esm2015/questions/rating.component.js +27 -0
  100. package/esm2015/questions/selectbase-item.js +37 -0
  101. package/esm2015/questions/selectbase.component.js +53 -0
  102. package/esm2015/questions/signature.component.js +20 -0
  103. package/esm2015/questions/tagbox.component.js +20 -0
  104. package/esm2015/questions/text.component.js +21 -0
  105. package/esm2015/row.component.js +63 -0
  106. package/esm2015/string-editor.component.js +29 -0
  107. package/esm2015/string-viewer.component.js +41 -0
  108. package/esm2015/survey-angular-ui.js +5 -0
  109. package/esm2015/survey-content.component.js +72 -0
  110. package/esm2015/survey-string.component.js +17 -0
  111. package/esm2015/survey.component.js +32 -0
  112. package/esm2015/template-renderer.component.js +27 -0
  113. package/esm2015/utils/dynamic.directive.js +54 -0
  114. package/esm2015/utils/ng-key2click.directive.js +69 -0
  115. package/esm2015/utils/ng-show.directive.js +27 -0
  116. package/esm2015/utils/safe-html.pipe.js +18 -0
  117. package/esm2015/utils/safe-url.pipe.js +33 -0
  118. package/esm2020/angular-ui.mjs +102 -102
  119. package/esm2020/angular-ui.module.mjs +183 -183
  120. package/esm2020/base-angular.mjs +127 -127
  121. package/esm2020/comment-other.component.mjs +31 -31
  122. package/esm2020/comment.component.mjs +20 -20
  123. package/esm2020/component-factory.mjs +25 -25
  124. package/esm2020/components/action-bar/action-bar-item-dropdown.component.mjs +31 -31
  125. package/esm2020/components/action-bar/action-bar-item.component.mjs +21 -21
  126. package/esm2020/components/action-bar/action-bar.component.mjs +42 -42
  127. package/esm2020/components/action-bar/action.component.mjs +26 -26
  128. package/esm2020/components/brand-info/brand-info.component.mjs +12 -12
  129. package/esm2020/components/dropdown/dropdown.component.mjs +65 -65
  130. package/esm2020/components/element-header/element-header.component.mjs +31 -31
  131. package/esm2020/components/element-title/dynamic-head.component.mjs +19 -19
  132. package/esm2020/components/element-title/element-title.component.mjs +16 -16
  133. package/esm2020/components/element-title/title-actions.component.mjs +16 -16
  134. package/esm2020/components/list/list-item.component.mjs +47 -47
  135. package/esm2020/components/list/list.component.mjs +49 -49
  136. package/esm2020/components/matrix-actions/detail-button/detail-button.component.mjs +24 -24
  137. package/esm2020/components/matrix-actions/drag-drop-icon/drag-drop-icon.mjs +19 -19
  138. package/esm2020/components/matrix-actions/remove-button/remove-button.component.mjs +24 -24
  139. package/esm2020/components/notifier/notifier.component.mjs +21 -21
  140. package/esm2020/components/paneldynamic-actions/paneldynamic-add-btn.component.mjs +34 -34
  141. package/esm2020/components/paneldynamic-actions/paneldynamic-next-btn.component.mjs +17 -17
  142. package/esm2020/components/paneldynamic-actions/paneldynamic-prev-btn.component.mjs +17 -17
  143. package/esm2020/components/paneldynamic-actions/paneldynamic-progress-text.component.mjs +13 -13
  144. package/esm2020/components/paneldynamic-actions/paneldynamic-remove-btn.component.mjs +16 -16
  145. package/esm2020/components/popup/modal-container.component.mjs +41 -41
  146. package/esm2020/components/popup/popup-container.component.mjs +55 -55
  147. package/esm2020/components/popup/popup-pointer.component.mjs +21 -21
  148. package/esm2020/components/popup/popup.component.mjs +42 -42
  149. package/esm2020/components/popup/popup.service.mjs +25 -25
  150. package/esm2020/components/progress/buttons/progress.component.mjs +66 -66
  151. package/esm2020/components/progress/default/progress.component.mjs +26 -26
  152. package/esm2020/components/renderAs/boolean-checkbox/boolean-checkbox.component.mjs +20 -20
  153. package/esm2020/components/renderAs/boolean-radio/boolean-radio-item.component.mjs +21 -21
  154. package/esm2020/components/renderAs/boolean-radio/boolean-radio.component.mjs +17 -17
  155. package/esm2020/components/renderAs/dropdown-select/dropdown-option-item.component.mjs +22 -22
  156. package/esm2020/components/renderAs/dropdown-select/dropdown-select.component.mjs +37 -37
  157. package/esm2020/components/renderAs/rating-dropdown/rating-dropdown.component.mjs +17 -17
  158. package/esm2020/components/skeleton/skeleton.component.mjs +15 -15
  159. package/esm2020/components/skeleton.component.mjs +14 -14
  160. package/esm2020/components/survey-actions/survey-nav-btn.component.mjs +21 -21
  161. package/esm2020/components/survey-header/logo-image.component.mjs +19 -19
  162. package/esm2020/components/survey-header/survey-header.component.mjs +29 -29
  163. package/esm2020/components/svg-icon/svg-icon.component.mjs +67 -67
  164. package/esm2020/components/tagbox/tagbox-filter.component.mjs +21 -21
  165. package/esm2020/components/tagbox/tagbox-item.component.mjs +26 -26
  166. package/esm2020/components/tagbox/tagbox.component.mjs +43 -43
  167. package/esm2020/components/timer-panel/timer-panel.component.mjs +31 -31
  168. package/esm2020/element.component.mjs +54 -54
  169. package/esm2020/embedded-view-content.component.mjs +23 -23
  170. package/esm2020/errors.component.mjs +57 -57
  171. package/esm2020/page.component.mjs +34 -34
  172. package/esm2020/panel.component.mjs +37 -37
  173. package/esm2020/popup.survey.component.mjs +43 -43
  174. package/esm2020/question.component.mjs +53 -53
  175. package/esm2020/question.mjs +32 -32
  176. package/esm2020/questions/boolean.component.mjs +19 -19
  177. package/esm2020/questions/button-group/button-group-item.component.mjs +28 -28
  178. package/esm2020/questions/button-group/button-group.component.mjs +13 -13
  179. package/esm2020/questions/checkbox-item.component.mjs +23 -23
  180. package/esm2020/questions/checkbox.component.mjs +16 -16
  181. package/esm2020/questions/comment.component.mjs +17 -17
  182. package/esm2020/questions/composite.component.mjs +20 -20
  183. package/esm2020/questions/custom.component.mjs +26 -26
  184. package/esm2020/questions/customwidget.component.mjs +50 -50
  185. package/esm2020/questions/dropdown.component.mjs +16 -16
  186. package/esm2020/questions/expression.component.mjs +16 -16
  187. package/esm2020/questions/file.component.mjs +24 -24
  188. package/esm2020/questions/html.component.mjs +24 -24
  189. package/esm2020/questions/image.component.mjs +25 -25
  190. package/esm2020/questions/imagepicker-item.component.mjs +47 -47
  191. package/esm2020/questions/imagepicker.component.mjs +28 -28
  192. package/esm2020/questions/matrix-row.component.mjs +26 -26
  193. package/esm2020/questions/matrix.component.mjs +35 -35
  194. package/esm2020/questions/matrixcell.component.mjs +89 -89
  195. package/esm2020/questions/matrixdropdown.component.mjs +15 -15
  196. package/esm2020/questions/matrixdynamic.component.mjs +16 -16
  197. package/esm2020/questions/matrixrequiredheader.component.mjs +23 -23
  198. package/esm2020/questions/matrixtable.component.mjs +30 -30
  199. package/esm2020/questions/multipletext.component.mjs +24 -24
  200. package/esm2020/questions/multipletextitem.component.mjs +22 -22
  201. package/esm2020/questions/paneldynamic.component.mjs +78 -78
  202. package/esm2020/questions/radiogroup-item.component.mjs +17 -17
  203. package/esm2020/questions/radiogroup.component.mjs +21 -21
  204. package/esm2020/questions/ranking-item.component.mjs +23 -23
  205. package/esm2020/questions/ranking.component.mjs +30 -30
  206. package/esm2020/questions/rating.component.mjs +22 -22
  207. package/esm2020/questions/selectbase-item.mjs +32 -32
  208. package/esm2020/questions/selectbase.component.mjs +49 -49
  209. package/esm2020/questions/signature.component.mjs +16 -16
  210. package/esm2020/questions/tagbox.component.mjs +16 -16
  211. package/esm2020/questions/text.component.mjs +15 -15
  212. package/esm2020/row.component.mjs +57 -57
  213. package/esm2020/string-editor.component.mjs +25 -25
  214. package/esm2020/string-viewer.component.mjs +36 -36
  215. package/esm2020/survey-angular-ui.mjs +4 -4
  216. package/esm2020/survey-content.component.mjs +68 -68
  217. package/esm2020/survey-string.component.mjs +16 -16
  218. package/esm2020/survey.component.mjs +31 -31
  219. package/esm2020/template-renderer.component.mjs +22 -22
  220. package/esm2020/utils/dynamic.directive.mjs +51 -51
  221. package/esm2020/utils/ng-key2click.directive.mjs +68 -68
  222. package/esm2020/utils/ng-show.directive.mjs +26 -26
  223. package/esm2020/utils/safe-html.pipe.mjs +17 -17
  224. package/esm2020/utils/safe-url.pipe.mjs +32 -32
  225. package/fesm2015/survey-angular-ui.js +3206 -0
  226. package/fesm2015/survey-angular-ui.js.map +1 -0
  227. package/fesm2015/survey-angular-ui.mjs +2864 -2864
  228. package/fesm2020/survey-angular-ui.mjs +2839 -2839
  229. package/package.json +6 -19
  230. package/utils/dynamic.directive.d.ts +3 -2
@@ -0,0 +1,3206 @@
1
+ import * as i0 from '@angular/core';
2
+ import { TemplateRef, Component, ViewChild, Directive, Input, ViewContainerRef, Injectable, HostBinding, ElementRef, HostListener, Pipe, NgModule } from '@angular/core';
3
+ import * as Survey from 'survey-core';
4
+ import { createPopupModalViewModel, settings, createDialogOptions, SvgRegistry, PopupSurveyModel, TooltipManager, LocalizableString, createPopupViewModel, DropdownListModel, Helpers, DropdownMultiSelectListModel, RendererFactory, ButtonGroupItemModel, doKey2ClickUp, doKey2ClickDown, doKey2ClickBlur, ActionDropdownViewModel, SurveyProgressModel, SurveyProgressButtonsModel, SurveyModel } from 'survey-core';
5
+ import { DomPortalOutlet, ComponentPortal } from '@angular/cdk/portal';
6
+ import * as i2 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
8
+ import * as i3 from '@angular/forms';
9
+ import { FormsModule } from '@angular/forms';
10
+ import * as i1 from '@angular/platform-browser';
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: "12.2.17", ngImport: i0, type: EmbeddedViewContentComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
24
+ EmbeddedViewContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: "12.2.17", 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
+ this.isDestroyed = false;
41
+ }
42
+ get surveyModel() {
43
+ return this.getModel().getSurvey();
44
+ }
45
+ ngDoCheck() {
46
+ if (this.previousModel !== this.getModel()) {
47
+ this.unMakeBaseElementAngular(this.previousModel);
48
+ this.makeBaseElementAngular(this.getModel());
49
+ this.onModelChanged();
50
+ this.previousModel = this.getModel();
51
+ }
52
+ this.setIsRendering(true);
53
+ }
54
+ onModelChanged() { }
55
+ setIsRendering(val) {
56
+ const model = this.getModel();
57
+ if (!!model) {
58
+ model.isRendering = val;
59
+ }
60
+ }
61
+ getIsRendering() {
62
+ const model = this.getModel();
63
+ return !!model && !!model.isRendering;
64
+ }
65
+ ngOnDestroy() {
66
+ this.isDestroyed = true;
67
+ this.unMakeBaseElementAngular(this.getModel());
68
+ }
69
+ makeBaseElementAngular(stateElement) {
70
+ if (!!stateElement && !stateElement.__ngImplemented) {
71
+ this.isModelSubsribed = true;
72
+ stateElement.__ngImplemented = true;
73
+ stateElement.iteratePropertiesHash((hash, key) => {
74
+ var val = hash[key];
75
+ if (Array.isArray(val)) {
76
+ var val = val;
77
+ val["onArrayChanged"] = (arrayChanges) => {
78
+ this.update(key);
79
+ };
80
+ }
81
+ });
82
+ stateElement.setPropertyValueCoreHandler = (hash, key, val) => {
83
+ if (hash[key] !== val) {
84
+ hash[key] = val;
85
+ this.update(key);
86
+ }
87
+ };
88
+ }
89
+ }
90
+ unMakeBaseElementAngular(stateElement) {
91
+ if (!!stateElement && this.isModelSubsribed) {
92
+ this.isModelSubsribed = false;
93
+ stateElement.__ngImplemented = false;
94
+ stateElement.setPropertyValueCoreHandler = undefined;
95
+ stateElement.iteratePropertiesHash((hash, key) => {
96
+ var val = hash[key];
97
+ if (Array.isArray(val)) {
98
+ var val = val;
99
+ val["onArrayChanged"] = () => { };
100
+ }
101
+ });
102
+ }
103
+ }
104
+ update(key) {
105
+ if (this.getIsRendering())
106
+ return;
107
+ this.beforeUpdate();
108
+ if (this.getPropertiesToUpdateSync().indexOf(key) > -1) {
109
+ this.detectChanges();
110
+ this.afterUpdate();
111
+ }
112
+ else {
113
+ (window["__zone_symbol__queueMicrotask"]
114
+ ? window["__zone_symbol__queueMicrotask"] : queueMicrotask)(() => {
115
+ if (!this.isDestroyed) {
116
+ this.setIsRendering(true);
117
+ this.detectChanges();
118
+ }
119
+ this.afterUpdate();
120
+ });
121
+ }
122
+ }
123
+ getChangeDetectorRef() {
124
+ return this.embeddedView ? this.embeddedView : this.changeDetectorRef;
125
+ }
126
+ getPropertiesToUpdateSync() {
127
+ return [];
128
+ }
129
+ detectChanges() {
130
+ this.getChangeDetectorRef().detectChanges();
131
+ }
132
+ getShouldReattachChangeDetector() {
133
+ return true;
134
+ }
135
+ beforeUpdate() {
136
+ if (this.getShouldReattachChangeDetector()) {
137
+ this.getChangeDetectorRef().detach();
138
+ }
139
+ this.setIsRendering(true);
140
+ }
141
+ afterUpdate() {
142
+ if (this.getShouldReattachChangeDetector()) {
143
+ this.getChangeDetectorRef().reattach();
144
+ }
145
+ this.setIsRendering(false);
146
+ }
147
+ ngAfterViewChecked() {
148
+ this.setIsRendering(false);
149
+ }
150
+ }
151
+ BaseAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseAngular, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
152
+ BaseAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BaseAngular, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "", isInline: true });
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseAngular, decorators: [{
154
+ type: Component,
155
+ args: [{
156
+ template: ""
157
+ }]
158
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }]; } });
159
+
160
+ class AngularComponentFactory {
161
+ constructor() {
162
+ this.creatorHash = {};
163
+ }
164
+ registerComponent(typeName, componentType) {
165
+ this.creatorHash[typeName] = componentType;
166
+ }
167
+ getAllTypes() {
168
+ var result = new Array();
169
+ for (var key in this.creatorHash) {
170
+ result.push(key);
171
+ }
172
+ return result.sort();
173
+ }
174
+ isComponentRegistered(elementType) {
175
+ return !!this.creatorHash[elementType];
176
+ }
177
+ create(containerRef, elementType, resolver) {
178
+ var componentType = this.creatorHash[elementType];
179
+ if (!componentType)
180
+ return null;
181
+ return containerRef.createComponent(resolver.resolveComponentFactory(componentType));
182
+ }
183
+ }
184
+ AngularComponentFactory.Instance = new AngularComponentFactory();
185
+
186
+ class DynamicComponentDirective {
187
+ constructor(containerRef, templateRef, resolver) {
188
+ this.containerRef = containerRef;
189
+ this.templateRef = templateRef;
190
+ this.resolver = resolver;
191
+ }
192
+ ngOnChanges(changes) {
193
+ var _a;
194
+ const componentChanges = changes["component"];
195
+ if (componentChanges.currentValue.name !== ((_a = componentChanges.previousValue) === null || _a === void 0 ? void 0 : _a.name) ||
196
+ (componentChanges.currentValue.name === undefined && componentChanges.previousValue === undefined && !this.componentInstance)) {
197
+ this.createComponent();
198
+ }
199
+ else {
200
+ this.updateComponentData();
201
+ }
202
+ }
203
+ createComponent() {
204
+ this.containerRef.clear();
205
+ if (AngularComponentFactory.Instance.isComponentRegistered(this.component.name)) {
206
+ this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.name, this.resolver).instance;
207
+ }
208
+ else if (this.component.default) {
209
+ this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.default, this.resolver).instance;
210
+ }
211
+ if (!this.componentInstance) {
212
+ throw new Error(`Can't create component with name: ${this.component.name} and default: ${this.component.default}`);
213
+ }
214
+ else {
215
+ this.componentInstance.contentTempl = this.templateRef;
216
+ }
217
+ this.updateComponentData();
218
+ }
219
+ updateComponentData() {
220
+ const data = this.component.data;
221
+ Object.keys(data).forEach((key) => {
222
+ this.componentInstance[key] = data[key];
223
+ });
224
+ }
225
+ }
226
+ DynamicComponentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Directive });
227
+ DynamicComponentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: DynamicComponentDirective, selector: "[component]", inputs: { component: "component" }, usesOnChanges: true, ngImport: i0 });
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicComponentDirective, decorators: [{
229
+ type: Directive,
230
+ args: [{
231
+ selector: "[component]"
232
+ }]
233
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.ComponentFactoryResolver }]; }, propDecorators: { component: [{
234
+ type: Input
235
+ }] } });
236
+
237
+ class ActionComponent extends BaseAngular {
238
+ getModel() {
239
+ return this.model;
240
+ }
241
+ getPropertiesToUpdateSync() {
242
+ return ["mode"];
243
+ }
244
+ }
245
+ ActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
246
+ ActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: model.component, data: { model }, default: 'sv-action-bar-item'}\"></ng-template>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionComponent, decorators: [{
248
+ type: Component,
249
+ args: [{
250
+ selector: "sv-ng-action",
251
+ templateUrl: "./action.component.html",
252
+ styles: [":host { display: none; }"],
253
+ }]
254
+ }], propDecorators: { model: [{
255
+ type: Input
256
+ }], actionContent: [{
257
+ type: ViewChild,
258
+ args: ["actionContent", { read: ViewContainerRef, static: true }]
259
+ }] } });
260
+ AngularComponentFactory.Instance.registerComponent("sv-action", ActionComponent);
261
+
262
+ class ActionBarComponent extends BaseAngular {
263
+ getModel() {
264
+ return this.model;
265
+ }
266
+ get allowOnClick() {
267
+ return this.handleClick !== undefined ? this.handleClick : true;
268
+ }
269
+ onClick(event) {
270
+ if (this.allowOnClick) {
271
+ event.stopPropagation();
272
+ }
273
+ }
274
+ ngAfterViewInit() {
275
+ if (!!this.model.hasActions) {
276
+ this.model.initResponsivityManager(this.container.nativeElement);
277
+ }
278
+ }
279
+ ngOnDestroy() {
280
+ super.ngOnDestroy();
281
+ this.model.resetResponsivityManager();
282
+ }
283
+ }
284
+ ActionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
285
+ ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 }"], components: [{ type: ActionComponent, selector: "sv-ng-action", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarComponent, decorators: [{
287
+ type: Component,
288
+ args: [{
289
+ selector: "sv-action-bar, sv-ng-action-bar",
290
+ templateUrl: "./action-bar.component.html",
291
+ styles: [":host { display: none }"]
292
+ }]
293
+ }], propDecorators: { model: [{
294
+ type: Input
295
+ }], handleClick: [{
296
+ type: Input
297
+ }], container: [{
298
+ type: ViewChild,
299
+ args: ["container"]
300
+ }] } });
301
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar", ActionBarComponent);
302
+
303
+ class VisibleDirective {
304
+ constructor(el) {
305
+ this.el = el;
306
+ }
307
+ ngOnChanges(changes) {
308
+ changes["visible"].currentValue ? this.show() : this.hide();
309
+ }
310
+ hide() {
311
+ this.el.nativeElement.style.display = "none";
312
+ }
313
+ show() {
314
+ this.el.nativeElement.style.display = "";
315
+ }
316
+ }
317
+ VisibleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisibleDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
318
+ VisibleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: VisibleDirective, selector: "[visible]", inputs: { visible: "visible" }, usesOnChanges: true, ngImport: i0 });
319
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: VisibleDirective, decorators: [{
320
+ type: Directive,
321
+ args: [{
322
+ selector: "[visible]"
323
+ }]
324
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { visible: [{
325
+ type: Input
326
+ }] } });
327
+
328
+ class PopupBaseContainerComponent extends BaseAngular {
329
+ constructor(changeDetectorRef) {
330
+ super(changeDetectorRef);
331
+ this.prevIsVisible = false;
332
+ this.changeDetectorRef.detach();
333
+ }
334
+ getModel() {
335
+ return this.model;
336
+ }
337
+ get applyButtonText() {
338
+ const popupModalModel = this.model;
339
+ if (!popupModalModel)
340
+ return null;
341
+ return popupModalModel.applyButtonText;
342
+ }
343
+ apply() {
344
+ const popupModalModel = this.model;
345
+ if (!popupModalModel)
346
+ return;
347
+ popupModalModel.apply();
348
+ }
349
+ getShouldReattachChangeDetector() {
350
+ return false;
351
+ }
352
+ onModelChanged() {
353
+ this.changeDetectorRef.detectChanges();
354
+ }
355
+ afterUpdate() {
356
+ super.afterUpdate();
357
+ if (!this.prevIsVisible && this.model.isVisible) {
358
+ this.model.updateOnShowing();
359
+ }
360
+ if (this.prevIsVisible !== this.model.isVisible) {
361
+ this.prevIsVisible = this.model.isVisible;
362
+ }
363
+ }
364
+ clickInside(event) {
365
+ event.stopPropagation();
366
+ }
367
+ }
368
+ PopupBaseContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupBaseContainerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
369
+ PopupBaseContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupBaseContainerComponent, 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\" [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 }\" (click)=\"clickInside($event)\">\n <div class=\"sv-popup__shadow\">\n <ng-container *ngIf=\"model.showHeader\">\n <ng-template [component]=\"{ name: model.popupHeaderTemplate, data: { model: model } }\"></ng-template>\n </ng-container>\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 <sv-ng-action-bar [model]=\"model.footerToolbar\"></sv-ng-action-bar>\n </div>\n </div>\n </div>\n </div>\n</div>", components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
370
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupBaseContainerComponent, decorators: [{
371
+ type: Component,
372
+ args: [{
373
+ selector: "sv-ng-popup-container, '[sv-ng-popup-container]'",
374
+ templateUrl: "./popup-container.component.html"
375
+ }]
376
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
377
+ type: Input
378
+ }] } });
379
+
380
+ class PopupService {
381
+ constructor(injector, applicationRef, componentFactoryResolver) {
382
+ this.injector = injector;
383
+ this.applicationRef = applicationRef;
384
+ this.componentFactoryResolver = componentFactoryResolver;
385
+ }
386
+ createComponent(popupViewModel) {
387
+ const portalHost = new DomPortalOutlet(popupViewModel.container, this.componentFactoryResolver, this.applicationRef, this.injector);
388
+ const portal = new ComponentPortal(PopupBaseContainerComponent);
389
+ const componentRef = portalHost.attach(portal);
390
+ popupViewModel.container = popupViewModel.container.children[0];
391
+ componentRef.instance.model = popupViewModel;
392
+ componentRef.changeDetectorRef.detectChanges();
393
+ return portalHost;
394
+ }
395
+ }
396
+ PopupService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupService, deps: [{ token: i0.Injector }, { token: i0.ApplicationRef }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
397
+ PopupService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupService });
398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupService, decorators: [{
399
+ type: Injectable
400
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ApplicationRef }, { type: i0.ComponentFactoryResolver }]; } });
401
+
402
+ class ModalComponent {
403
+ constructor(popupService) {
404
+ this.popupService = popupService;
405
+ this.functionDefined = false;
406
+ }
407
+ showDialog(dialogOptions) {
408
+ this.model = createPopupModalViewModel(dialogOptions);
409
+ this.model.initializePopupContainer();
410
+ this.model.model.onHide = () => {
411
+ this.portalHost.detach();
412
+ this.model.unmountPopupContainer();
413
+ };
414
+ this.portalHost = this.popupService.createComponent(this.model);
415
+ this.model.model.isVisible = true;
416
+ return this.model;
417
+ }
418
+ ngOnInit() {
419
+ if (!!settings.showModal)
420
+ return;
421
+ this.functionDefined = true;
422
+ settings.showModal = (componentName, data, onApply, onCancel, cssClass, title, displayMode = "popup") => {
423
+ const options = createDialogOptions(componentName, data, onApply, onCancel, undefined, undefined, cssClass, title, displayMode);
424
+ return this.showDialog(options);
425
+ };
426
+ }
427
+ ngOnDestroy() {
428
+ if (this.functionDefined) {
429
+ settings.showModal = undefined;
430
+ }
431
+ }
432
+ }
433
+ ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModalComponent, deps: [{ token: PopupService }], target: i0.ɵɵFactoryTarget.Component });
434
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ModalComponent, selector: "sv-ng-modal-container", ngImport: i0, template: "", isInline: true, styles: [":host{display:none}\n"] });
435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ModalComponent, decorators: [{
436
+ type: Component,
437
+ args: [{
438
+ selector: "sv-ng-modal-container",
439
+ template: "",
440
+ styleUrls: ["../../hide-host.scss"]
441
+ }]
442
+ }], ctorParameters: function () { return [{ type: PopupService }]; } });
443
+
444
+ class DynamicHeadComponent extends EmbeddedViewContentComponent {
445
+ get ariaLabel() {
446
+ return this.element.titleAriaLabel;
447
+ }
448
+ }
449
+ DynamicHeadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicHeadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
450
+ DynamicHeadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h1>\n <h2 *ngSwitchCase=\"'h2'\"[class]=\"element.cssTitle\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h2>\n <h3 *ngSwitchCase=\"'h3'\"[class]=\"element.cssTitle\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h3>\n <h4 *ngSwitchCase=\"'h4'\"[class]=\"element.cssTitle\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h4>\n <h5 *ngSwitchCase=\"'h5'\"[class]=\"element.cssTitle\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [attr.aria-label]=\"ariaLabel\"><ng-container *ngTemplateOutlet=\"titleContent\"></ng-container></h5>\n <h6 *ngSwitchCase=\"'h6'\"[class]=\"element.cssTitle\" [attr.id]=\"element.ariaTitleId\" [attr.tabindex]=\"element.titleTabIndex\" [attr.aria-expanded]=\"element.titleAriaExpanded\" [attr.role]=\"'button'\" [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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DynamicHeadComponent, decorators: [{
452
+ type: Component,
453
+ args: [{
454
+ selector: "sv-ng-dynamic-head",
455
+ templateUrl: "./dynamic-head.component.html",
456
+ styleUrls: ["../../hide-host.scss"]
457
+ }]
458
+ }], propDecorators: { tagName: [{
459
+ type: Input
460
+ }], element: [{
461
+ type: Input
462
+ }] } });
463
+
464
+ class SurveyStringComponent {
465
+ }
466
+ SurveyStringComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyStringComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
467
+ SurveyStringComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyStringComponent, decorators: [{
469
+ type: Component,
470
+ args: [{
471
+ selector: "sv-ng-string, '[sv-ng-string]'",
472
+ template: "<ng-template [component]='{ name: model.renderAs, data: { model: model.renderAsData } }'></ng-template>"
473
+ }]
474
+ }], propDecorators: { model: [{
475
+ type: Input
476
+ }] } });
477
+
478
+ class ElementTitleActionsComponent extends EmbeddedViewContentComponent {
479
+ }
480
+ ElementTitleActionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleActionsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
481
+ ElementTitleActionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: { element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ng-container *ngIf=\"!element.hasTitleActions\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"element.hasTitleActions\">\n <div class=\"sv-title-actions\">\n <span class=\"sv-title-actions__title\">\n <ng-container *ngTemplateOutlet=\"elementTitleContent\"></ng-container>\n </span>\n <sv-ng-action-bar [model]=\"element.getTitleToolbar()\"></sv-ng-action-bar>\n </div>\n </ng-container>\n <ng-template #elementTitleContent>\n <sv-ng-string *ngIf=\"element.isTitleRenderedAsString\" [model]=\"element.locTitle\"></sv-ng-string>\n <ng-container *ngIf=\"!element.isTitleRenderedAsString\">\n <span\n *ngIf=\"element.isRequireTextOnStart\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span\n *ngIf=\"element.no\"\n style=\"position: static\"\n [class]=\"element.cssClasses.number || element.cssClasses.panel.number\"\n [attr.aria-hidden]=\"true\"\n >{{ element.no }}</span>\n <span *ngIf=\"element.no\">&nbsp;</span>\n <span\n *ngIf=\"element.isRequireTextBeforeTitle\"\n [class]=\"element.cssClasses.requiredText\"\n [attr.aria-hidden]=\"true\"\n >{{ element.requiredText }}</span>\n <span *ngIf=\"element.isRequireTextBeforeTitle\">&nbsp;</span>\n <sv-ng-string [model]=\"element.locTitle\"></sv-ng-string>\n <span *ngIf=\"element.isRequireTextAfterTitle\">&nbsp;</span>\n <span\n *ngIf=\" element.isRequireTextAfterTitle\"\n [class]=\"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: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleActionsComponent, decorators: [{
483
+ type: Component,
484
+ args: [{
485
+ selector: "sv-ng-element-title-actions",
486
+ templateUrl: "./title-actions.component.html",
487
+ styleUrls: ["../../hide-host.scss"]
488
+ }]
489
+ }], propDecorators: { element: [{
490
+ type: Input
491
+ }] } });
492
+
493
+ class ElementTitleComponent extends EmbeddedViewContentComponent {
494
+ }
495
+ ElementTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
496
+ ElementTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <sv-ng-element-title-actions [element]=\"element\"></sv-ng-element-title-actions>\n </sv-ng-dynamic-head>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: DynamicHeadComponent, selector: "sv-ng-dynamic-head", inputs: ["tagName", "element"] }, { type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: ["element"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementTitleComponent, decorators: [{
498
+ type: Component,
499
+ args: [{
500
+ selector: "sv-ng-element-title",
501
+ templateUrl: "./element-title.component.html",
502
+ styleUrls: ["../../hide-host.scss"]
503
+ }]
504
+ }], propDecorators: { element: [{
505
+ type: Input
506
+ }] } });
507
+
508
+ class SurveyHeaderComponent {
509
+ constructor(viewContainerRef, changeDetectorRef) {
510
+ this.viewContainerRef = viewContainerRef;
511
+ this.changeDetectorRef = changeDetectorRef;
512
+ }
513
+ ngAfterViewInit() {
514
+ this.survey.afterRenderHeader(this.viewContainerRef.element.nativeElement);
515
+ this.survey.locLogo.onChanged = () => {
516
+ this.changeDetectorRef.detectChanges();
517
+ };
518
+ }
519
+ ngOnDestroy() {
520
+ this.survey.locLogo.onChanged = () => { };
521
+ }
522
+ }
523
+ SurveyHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyHeaderComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
524
+ SurveyHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: { survey: "survey" }, ngImport: i0, template: "<div *ngIf=\"survey.isLogoBefore\" [class]=\"survey.logoClassNames\">\n <ng-template [component]=\"{ name: survey.getElementWrapperComponentName(survey, 'logo-image'), data: { data: survey.getElementWrapperComponentData(survey, 'logo-image') } }\"></ng-template>\n</div>\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 <ng-template [component]=\"{ name: survey.getElementWrapperComponentName(survey, 'logo-image'), data: { data: survey.getElementWrapperComponentData(survey, 'logo-image') } }\"></ng-template>\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
525
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyHeaderComponent, decorators: [{
526
+ type: Component,
527
+ args: [{
528
+ selector: "'[sv-ng-survey-header]'",
529
+ templateUrl: "survey-header.component.html"
530
+ }]
531
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { survey: [{
532
+ type: Input
533
+ }] } });
534
+
535
+ class SvgIconComponent {
536
+ constructor(viewContaierRef) {
537
+ this.viewContaierRef = viewContaierRef;
538
+ }
539
+ createSvg() {
540
+ if (!!this.iconName) {
541
+ Survey.createSvg(this.size, this.width, this.height, this.iconName, this.viewContaierRef.element.nativeElement, this.title);
542
+ }
543
+ }
544
+ get rootClass() {
545
+ let className = "sv-svg-icon";
546
+ if (!this.css && !!this.partCss) {
547
+ className += " " + this.partCss;
548
+ }
549
+ else if (!!this.css) {
550
+ className = this.css;
551
+ }
552
+ return className;
553
+ }
554
+ get rootRole() {
555
+ return "img";
556
+ }
557
+ get ariaLabel() {
558
+ return this.title;
559
+ }
560
+ ngOnChanges() {
561
+ const el = this.viewContaierRef.element.nativeElement;
562
+ el.innerHTML = "";
563
+ el.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "use"));
564
+ this.createSvg();
565
+ }
566
+ }
567
+ SvgIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SvgIconComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
568
+ SvgIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 });
569
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SvgIconComponent, decorators: [{
570
+ type: Component,
571
+ args: [{
572
+ selector: "'[sv-ng-svg-icon]'",
573
+ template: ""
574
+ }]
575
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { size: [{
576
+ type: Input
577
+ }], width: [{
578
+ type: Input
579
+ }], height: [{
580
+ type: Input
581
+ }], iconName: [{
582
+ type: Input
583
+ }], partCss: [{
584
+ type: Input
585
+ }], css: [{
586
+ type: Input
587
+ }], title: [{
588
+ type: Input
589
+ }], rootClass: [{
590
+ type: HostBinding,
591
+ args: ["class"]
592
+ }], rootRole: [{
593
+ type: HostBinding,
594
+ args: ["[attr.role]"]
595
+ }], ariaLabel: [{
596
+ type: HostBinding,
597
+ args: ["[attr.aria-label]"]
598
+ }] } });
599
+
600
+ class TimerPanelComponent extends BaseAngular {
601
+ constructor() {
602
+ super(...arguments);
603
+ this.circleLengthValue = 440;
604
+ }
605
+ getStateElement() {
606
+ return this.model;
607
+ }
608
+ getModel() {
609
+ return this.model;
610
+ }
611
+ get circleLength() {
612
+ return this.circleLengthValue;
613
+ }
614
+ get progress() {
615
+ return -this.model.progress * this.circleLength;
616
+ }
617
+ }
618
+ TimerPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimerPanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
619
+ TimerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimerPanelComponent, selector: "sv-timer-panel", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"model.showTimerAsClock\" [class]=\"model.rootCss\">\n <svg *ngIf=\"model.showProgress\" [class]=\"model.getProgressCss()\" [style.stroke-dasharray]=\"circleLength\" [style.stroke-dashoffset]=\"progress\" [size]=\"'auto'\" [iconName]=\"'icon-timercircle'\" sv-ng-svg-icon></svg>\n <div [class]=\"model.textContainerCss\">\n <span [class]=\"model.majorTextCss\">{{ model.clockMajorText }}</span>\n <span *ngIf=\"model.clockMinorText\" [class]=\"model.minorTextCss\">{{ model.clockMinorText }}</span>\n </div>\n</div>\n<div *ngIf=\"!model.showTimerAsClock\" [class]='model.survey.getCss().timerRoot'>{{model.text}}</div>", components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
620
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimerPanelComponent, decorators: [{
621
+ type: Component,
622
+ args: [{
623
+ selector: "sv-timer-panel",
624
+ templateUrl: "./timer-panel.component.html",
625
+ }]
626
+ }], propDecorators: { model: [{
627
+ type: Input
628
+ }] } });
629
+
630
+ class ElementComponent extends BaseAngular {
631
+ getModel() {
632
+ return this.model;
633
+ }
634
+ get elementComponentName() {
635
+ return this.model.isPanel ? "panel" : "question";
636
+ }
637
+ get componentName() {
638
+ const survey = this.surveyModel;
639
+ if (!!survey) {
640
+ const name = survey.getElementWrapperComponentName(this.model);
641
+ if (!!name) {
642
+ return name;
643
+ }
644
+ }
645
+ return this.elementComponentName;
646
+ }
647
+ get rootStyle() {
648
+ //use this if to check if cssClassses are calculated and allowRootStyle flag was set
649
+ if (!!this.model.cssClasses) {
650
+ return this.model.rootStyle;
651
+ }
652
+ else {
653
+ return {};
654
+ }
655
+ }
656
+ get componentData() {
657
+ const survey = this.surveyModel;
658
+ let data;
659
+ if (!!survey) {
660
+ data = survey.getElementWrapperComponentData(this.model);
661
+ }
662
+ return {
663
+ componentName: this.elementComponentName,
664
+ componentData: {
665
+ model: this.model,
666
+ data: data
667
+ }
668
+ };
669
+ }
670
+ }
671
+ ElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
672
+ ElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ElementComponent, selector: "sv-ng-element", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"!!model\" [class]=\"model.cssClasses.questionWrapper\" [style]=\"rootStyle\" (focusin)=\"model.focusIn()\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
673
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementComponent, decorators: [{
674
+ type: Component,
675
+ args: [{
676
+ selector: "sv-ng-element",
677
+ templateUrl: "./element.component.html",
678
+ styleUrls: ["./hide-host.scss"]
679
+ }]
680
+ }], propDecorators: { model: [{
681
+ type: Input
682
+ }] } });
683
+
684
+ class RowComponent extends BaseAngular {
685
+ constructor(cdr, vcr, ngZone) {
686
+ super(cdr, vcr);
687
+ this.ngZone = ngZone;
688
+ }
689
+ getModel() {
690
+ return this.row;
691
+ }
692
+ trackElementBy(index, element) {
693
+ return element.name + index;
694
+ }
695
+ ngAfterViewInit() {
696
+ var _a;
697
+ const el = (_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement;
698
+ if (!!el && !this.row.isNeedRender) {
699
+ this.ngZone.runOutsideAngular(() => {
700
+ setTimeout(() => {
701
+ this.row.startLazyRendering(el);
702
+ }, 10);
703
+ });
704
+ }
705
+ }
706
+ onModelChanged() {
707
+ super.onModelChanged();
708
+ if (!this.previousModel) {
709
+ return;
710
+ }
711
+ else {
712
+ this.row.isNeedRender = this.previousModel.isNeedRender;
713
+ this.stopLazyRendering();
714
+ }
715
+ }
716
+ stopLazyRendering() {
717
+ this.row.stopLazyRendering();
718
+ this.row.isNeedRender = !this.row.isLazyRendering();
719
+ }
720
+ ngOnDestroy() {
721
+ super.ngOnDestroy();
722
+ this.stopLazyRendering();
723
+ }
724
+ }
725
+ RowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RowComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
726
+ RowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RowComponent, selector: "sv-ng-row", inputs: { row: "row" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"row.getRowCss()\" *ngIf=\"row.visible\" #container>\n <ng-container *ngFor=\"let element of row.visibleElements; trackBy: trackElementBy\">\n <sv-ng-element [model]=\"$any(element)\" *ngIf=\"row.isNeedRender\"></sv-ng-element>\n <ng-template *ngIf=\"!row.isNeedRender && element.skeletonComponentName\" [component]=\"{ name: element.skeletonComponentName, data: { element: element } }\"></ng-template>\n </ng-container>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: ElementComponent, selector: "sv-ng-element", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
727
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RowComponent, decorators: [{
728
+ type: Component,
729
+ args: [{
730
+ selector: "sv-ng-row",
731
+ templateUrl: "./row.component.html",
732
+ styleUrls: ["./hide-host.scss"]
733
+ }]
734
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }, { type: i0.NgZone }]; }, propDecorators: { row: [{
735
+ type: Input
736
+ }], container: [{
737
+ type: ViewChild,
738
+ args: ["container", { read: ElementRef }]
739
+ }] } });
740
+
741
+ class PageComponent extends BaseAngular {
742
+ getModel() {
743
+ return this.model;
744
+ }
745
+ onModelChanged() {
746
+ if (!!this.pageContainerRef && this.pageContainerRef.nativeElement) {
747
+ this.model.survey.afterRenderPage(this.pageContainerRef.nativeElement);
748
+ }
749
+ }
750
+ ngAfterViewInit() {
751
+ var _a, _b;
752
+ (_a = this.model.survey) === null || _a === void 0 ? void 0 : _a.afterRenderPage((_b = this.pageContainerRef) === null || _b === void 0 ? void 0 : _b.nativeElement);
753
+ }
754
+ }
755
+ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
756
+ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PageComponent, selector: "page, sv-ng-page", inputs: { model: "model", survey: "survey" }, viewQueries: [{ propertyName: "pageContainerRef", first: true, predicate: ["pageContainer"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <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 <ng-template [component]=\"{ name: $any(model.survey).getRowWrapperComponentName(row), data: { componentData: $any(model.survey).getRowWrapperComponentData(row) } }\">\n <sv-ng-row [row]=\"row\"></sv-ng-row>\n </ng-template>\n </ng-container>\n </div>\n </ng-container> \n</ng-template>", styles: [":host{display:none}\n"], 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
757
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PageComponent, decorators: [{
758
+ type: Component,
759
+ args: [{
760
+ selector: "page, sv-ng-page",
761
+ templateUrl: "./page.component.html",
762
+ styleUrls: ["./hide-host.scss"]
763
+ }]
764
+ }], propDecorators: { model: [{
765
+ type: Input
766
+ }], survey: [{
767
+ type: Input
768
+ }], pageContainerRef: [{
769
+ type: ViewChild,
770
+ args: ["pageContainer", { static: false, read: ElementRef }]
771
+ }] } });
772
+
773
+ class BrandInfoComponent {
774
+ }
775
+ BrandInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BrandInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
776
+ BrandInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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>" });
777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BrandInfoComponent, decorators: [{
778
+ type: Component,
779
+ args: [{
780
+ selector: "sv-brand-info",
781
+ templateUrl: "./brand-info.component.html"
782
+ }]
783
+ }] });
784
+ AngularComponentFactory.Instance.registerComponent("sv-brand-info", BrandInfoComponent);
785
+
786
+ class NotifierComponent extends BaseAngular {
787
+ getStateElement() {
788
+ return this.notifier;
789
+ }
790
+ getModel() {
791
+ return this.notifier;
792
+ }
793
+ }
794
+ NotifierComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NotifierComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
795
+ NotifierComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NotifierComponent, selector: "sv-notifier", inputs: { notifier: "notifier" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [visible]=\"notifier.active\" [class]=\"notifier.css\">\n <span>{{notifier.message}}</span>\n <sv-action-bar [model]=\"notifier.actionBar\"></sv-action-bar> \n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: NotifierComponent, decorators: [{
797
+ type: Component,
798
+ args: [{
799
+ selector: "sv-notifier",
800
+ templateUrl: "./notifier.component.html",
801
+ styles: [":host { display: none; }"]
802
+ }]
803
+ }], propDecorators: { notifier: [{
804
+ type: Input
805
+ }] } });
806
+
807
+ class SurveyContentComponent extends BaseAngular {
808
+ constructor() {
809
+ super(...arguments);
810
+ this.isSurveyUpdated = false;
811
+ }
812
+ getModel() {
813
+ return this.model;
814
+ }
815
+ onModelChanged() {
816
+ if (!!this.previousModel) {
817
+ this.previousModel.destroyResizeObserver();
818
+ this.previousModel.renderCallback = undefined;
819
+ }
820
+ if (!!this.model) {
821
+ this.model.renderCallback = () => {
822
+ this.detectChanges();
823
+ };
824
+ }
825
+ this.isSurveyUpdated = true;
826
+ }
827
+ ngOnInit() {
828
+ super.ngOnInit();
829
+ if (!!this.model && this.model["needRenderIcons"]) {
830
+ SvgRegistry.renderIcons();
831
+ }
832
+ }
833
+ ngOnDestroy() {
834
+ super.ngOnDestroy();
835
+ if (!!this.model) {
836
+ this.model.renderCallback = undefined;
837
+ }
838
+ }
839
+ ngAfterViewInit() {
840
+ this.isSurveyUpdated = true;
841
+ }
842
+ ngAfterViewChecked() {
843
+ if (!!this.model && this.isSurveyUpdated) {
844
+ this.model.afterRenderSurvey(this.rootEl.nativeElement);
845
+ }
846
+ super.ngAfterViewChecked();
847
+ }
848
+ }
849
+ SurveyContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
850
+ SurveyContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyContentComponent, selector: "survey-content", inputs: { model: "model" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["surveyContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\">\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 <ng-container *ngIf=\"model.isTimerPanelShowingOnTop && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\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 <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <sv-action-bar *ngIf=\"model.isNavigationButtonsShowingOnTop\" [model]=\"model.navigationBar\"></sv-action-bar>\n <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-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 <ng-container *ngIf=\"model.isTimerPanelShowingOnBottom && !model.isShowStartingPage\">\n <sv-timer-panel [model]=\"model.timerModel\"></sv-timer-panel>\n </ng-container>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml\"></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 <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n</ng-template>", components: [{ type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: TimerPanelComponent, selector: "sv-timer-panel", inputs: ["model"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyContentComponent, decorators: [{
852
+ type: Component,
853
+ args: [{
854
+ selector: "survey-content",
855
+ templateUrl: "./survey-content.component.html"
856
+ }]
857
+ }], propDecorators: { model: [{
858
+ type: Input
859
+ }], rootEl: [{
860
+ type: ViewChild,
861
+ args: ["surveyContainer", { static: false }]
862
+ }] } });
863
+ AngularComponentFactory.Instance.registerComponent("survey", SurveyContentComponent);
864
+
865
+ class SurveyComponent extends BaseAngular {
866
+ constructor(changeDetectorRef) {
867
+ super(changeDetectorRef);
868
+ changeDetectorRef.detach();
869
+ }
870
+ getModel() {
871
+ return this.model;
872
+ }
873
+ getShouldReattachChangeDetector() {
874
+ return false;
875
+ }
876
+ onModelChanged() {
877
+ this.changeDetectorRef.detectChanges();
878
+ }
879
+ }
880
+ SurveyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
881
+ SurveyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyComponent, selector: "survey", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<sv-ng-modal-container></sv-ng-modal-container><survey-content [model]='model'></survey-content>", isInline: true, components: [{ type: ModalComponent, selector: "sv-ng-modal-container" }, { type: SurveyContentComponent, selector: "survey-content", inputs: ["model"] }] });
882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyComponent, decorators: [{
883
+ type: Component,
884
+ args: [{
885
+ selector: "survey",
886
+ template: "<sv-ng-modal-container></sv-ng-modal-container><survey-content [model]='model'></survey-content>"
887
+ }]
888
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
889
+ type: Input
890
+ }] } });
891
+
892
+ class PopupSurveyComponent extends BaseAngular {
893
+ constructor(changeDetectorRef) {
894
+ super(changeDetectorRef);
895
+ changeDetectorRef.detach();
896
+ }
897
+ getModel() {
898
+ return this.popup;
899
+ }
900
+ getShouldReattachChangeDetector() {
901
+ return false;
902
+ }
903
+ ngOnChanges(changes) {
904
+ var _a, _b;
905
+ if (((_a = changes["model"]) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes["model"]) === null || _b === void 0 ? void 0 : _b.previousValue)) {
906
+ this.popup = new PopupSurveyModel(null, this.model);
907
+ }
908
+ if (this.isExpanded !== undefined) {
909
+ this.popup.isExpanded = this.isExpanded;
910
+ }
911
+ if (this.closeOnCompleteTimeout !== undefined) {
912
+ this.popup.closeOnCompleteTimeout = this.closeOnCompleteTimeout;
913
+ }
914
+ this.popup.isShowing = true;
915
+ this.changeDetectorRef.detectChanges();
916
+ }
917
+ }
918
+ PopupSurveyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupSurveyComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
919
+ PopupSurveyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupSurveyComponent, selector: "popup-survey", inputs: { model: "model", isExpanded: "isExpanded", closeOnCompleteTimeout: "closeOnCompleteTimeout" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"!!popup && popup.isShowing\" [class]=\"popup.cssRoot\" style=\"position: fixed; bottom: 3px; right: 10px;\" [style.width]=\"popup.renderedWidth\" [style.maxWidth]=\"popup.renderedWidth\">\n <div [class]=\"popup.cssHeaderRoot\">\n <span (click)=\"popup.changeExpandCollapse()\" style=\"width: 100%; cursor: pointer;\">\n <span style=\"padding-right:10px\" [class]=\"popup.cssHeaderTitle\">{{popup.locTitle.renderedHtml}}</span>\n <span aria-hidden=\"true\" [class]=\"popup.cssButton\"></span>\n </span>\n <span *ngIf=\"popup.isExpanded\" (click)=\"popup.changeExpandCollapse()\" style=\"float: right; cursor: pointer;\">\n <span style=\"padding-right:10px\" [class]=\"popup.cssHeaderTitle\">X</span>\n </span>\n </div>\n <div *ngIf=\"popup.isExpanded\" [class]=\"popup.cssBody\">\n <survey [model]=\"popup.survey\"></survey>\n </div>\n</div>", styles: [""], components: [{ type: SurveyComponent, selector: "survey", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupSurveyComponent, decorators: [{
921
+ type: Component,
922
+ args: [{
923
+ selector: "popup-survey",
924
+ templateUrl: "./popup.survey.component.html",
925
+ styleUrls: ["./popup.survey.component.scss"]
926
+ }]
927
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
928
+ type: Input
929
+ }], isExpanded: [{
930
+ type: Input
931
+ }], closeOnCompleteTimeout: [{
932
+ type: Input
933
+ }] } });
934
+
935
+ class ErrorsComponent {
936
+ constructor(viewContainerRef) {
937
+ this.viewContainerRef = viewContainerRef;
938
+ }
939
+ ngOnInit() {
940
+ if (this.location == "tooltip") {
941
+ this.tooltipManager = new TooltipManager(this.viewContainerRef.element.nativeElement);
942
+ }
943
+ }
944
+ ngOnDestroy() {
945
+ if (!!this.tooltipManager) {
946
+ this.tooltipManager.dispose();
947
+ }
948
+ }
949
+ get role() {
950
+ return "alert";
951
+ }
952
+ get id() {
953
+ return this.element.id + "_errors";
954
+ }
955
+ get ariaLive() {
956
+ return "polite";
957
+ }
958
+ get class() {
959
+ return this.element.cssError;
960
+ }
961
+ }
962
+ ErrorsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ErrorsComponent, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
963
+ ErrorsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
964
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ErrorsComponent, decorators: [{
965
+ type: Component,
966
+ args: [{
967
+ templateUrl: "./errors.component.html",
968
+ selector: "'[sv-ng-errors]'"
969
+ }]
970
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { element: [{
971
+ type: Input
972
+ }], location: [{
973
+ type: Input
974
+ }], errorsContainerRef: [{
975
+ type: ViewChild,
976
+ args: ["errorsContainer", { static: true }]
977
+ }], role: [{
978
+ type: HostBinding,
979
+ args: ["attr.role"]
980
+ }], id: [{
981
+ type: HostBinding,
982
+ args: ["id"]
983
+ }], ariaLive: [{
984
+ type: HostBinding,
985
+ args: ["attr.aria-live"]
986
+ }], class: [{
987
+ type: HostBinding,
988
+ args: ["class"]
989
+ }] } });
990
+
991
+ class ElementHeaderComponent {
992
+ constructor() {
993
+ }
994
+ get rootClass() {
995
+ return this.element.cssHeader;
996
+ }
997
+ click() {
998
+ if (this.element.clickTitleFunction !== undefined) {
999
+ this.element.clickTitleFunction();
1000
+ }
1001
+ }
1002
+ }
1003
+ ElementHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1004
+ ElementHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1005
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ElementHeaderComponent, decorators: [{
1006
+ type: Component,
1007
+ args: [{
1008
+ selector: "'[sv-ng-element-header]'",
1009
+ templateUrl: "./element-header.component.html"
1010
+ }]
1011
+ }], ctorParameters: function () { return []; }, propDecorators: { element: [{
1012
+ type: Input
1013
+ }], rootClass: [{
1014
+ type: HostBinding,
1015
+ args: ["class"]
1016
+ }], click: [{
1017
+ type: HostListener,
1018
+ args: ["click"]
1019
+ }] } });
1020
+
1021
+ class SurveyCommentComponent {
1022
+ constructor() {
1023
+ }
1024
+ get comment() {
1025
+ if (!this.question.comment)
1026
+ return "";
1027
+ return this.question.comment;
1028
+ }
1029
+ }
1030
+ SurveyCommentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1031
+ SurveyCommentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: { question: "question" }, ngImport: i0, template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [id]=\"question.commentId\" [attr.max-length]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.placeholder]=\"question.commentPlaceholder\" \n [value]=\"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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1032
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentComponent, decorators: [{
1033
+ type: Component,
1034
+ args: [{
1035
+ selector: "sv-ng-comment, '[sv-ng-comment]'",
1036
+ templateUrl: "./comment.component.html",
1037
+ }]
1038
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1039
+ type: Input
1040
+ }] } });
1041
+
1042
+ class QuestionComponent extends EmbeddedViewContentComponent {
1043
+ getModel() {
1044
+ return this.model;
1045
+ }
1046
+ ngAfterViewInit() {
1047
+ var _a, _b;
1048
+ if (!!((_a = this.rootEl) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
1049
+ this.model.afterRender((_b = this.rootEl) === null || _b === void 0 ? void 0 : _b.nativeElement);
1050
+ }
1051
+ }
1052
+ getComponentName() {
1053
+ if (this.model.customWidget)
1054
+ return "survey-customwidget";
1055
+ if (this.model.isDefaultRendering()) {
1056
+ return this.model.getTemplate() + "-question";
1057
+ }
1058
+ return this.model.getComponentName();
1059
+ }
1060
+ getQuestionContentWrapperComponentName() {
1061
+ return this.model.survey.getQuestionContentWrapperComponentName(this.model) || this.getComponentName();
1062
+ }
1063
+ getQuestionContentWrapperComponentData() {
1064
+ return {
1065
+ componentName: this.getComponentName(),
1066
+ componentData: {
1067
+ model: this.model,
1068
+ data: this.model.survey.getElementWrapperComponentData(this.model)
1069
+ }
1070
+ };
1071
+ }
1072
+ }
1073
+ QuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1074
+ QuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 *ngIf=\"!!model\" #elementContainer [class]=\"model.getRootCss()\" [style]=\"model.getRootStyle()\" [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.ariaLabelledBy\">\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: getQuestionContentWrapperComponentName(), data: getQuestionContentWrapperComponentData(), default: 'skeleton-question' }\">\n </ng-template>\n <div *ngIf=\"model.hasComment\" [class]=\"model.getCommentAreaCss(false)\">\n <div [model]=\"model.locCommentText\" sv-ng-string></div>\n <sv-ng-comment [question]=\"model\"></sv-ng-comment>\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 *ngIf=\"model.hasDescriptionUnderInput\" [class]=\"model.cssDescription\" [model]=\"model.locDescription\" sv-ng-string></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: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1075
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionComponent, decorators: [{
1076
+ type: Component,
1077
+ args: [{
1078
+ selector: "sv-ng-question",
1079
+ templateUrl: "./question.component.html"
1080
+ }]
1081
+ }], propDecorators: { model: [{
1082
+ type: Input
1083
+ }], rootEl: [{
1084
+ type: ViewChild,
1085
+ args: ["elementContainer"]
1086
+ }] } });
1087
+ AngularComponentFactory.Instance.registerComponent("question", QuestionComponent);
1088
+
1089
+ class StringViewerComponent {
1090
+ constructor(changeDetectorRef) {
1091
+ this.changeDetectorRef = changeDetectorRef;
1092
+ }
1093
+ ngDoCheck() {
1094
+ if (this.model !== this.previousModel) {
1095
+ if (!!this.previousModel) {
1096
+ this.clearOnChanged(this.previousModel);
1097
+ }
1098
+ if (!!this.model) {
1099
+ this.model.onChanged = () => { this.changeDetectorRef.detectChanges(); };
1100
+ }
1101
+ this.previousModel = this.model;
1102
+ }
1103
+ }
1104
+ clearOnChanged(model) {
1105
+ model.onChanged = () => { };
1106
+ }
1107
+ ngOnDestroy() {
1108
+ !!this.model && this.clearOnChanged(this.model);
1109
+ }
1110
+ }
1111
+ StringViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StringViewerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1112
+ StringViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StringViewerComponent, selector: "sv-ng-string-viewer, string-viewer, '[sv-ng-string-viewer]'", inputs: { model: "model" }, 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StringViewerComponent, decorators: [{
1114
+ type: Component,
1115
+ args: [{
1116
+ selector: "sv-ng-string-viewer, string-viewer, '[sv-ng-string-viewer]'",
1117
+ templateUrl: "./string-viewer.component.html",
1118
+ styleUrls: ["./string-viewer.component.scss"]
1119
+ }]
1120
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
1121
+ type: Input
1122
+ }] } });
1123
+ AngularComponentFactory.Instance.registerComponent(LocalizableString.defaultRenderer, StringViewerComponent);
1124
+
1125
+ class PopupPointerComponent extends BaseAngular {
1126
+ get popupModel() {
1127
+ return this.model;
1128
+ }
1129
+ getModel() {
1130
+ return this.model;
1131
+ }
1132
+ }
1133
+ PopupPointerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupPointerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1134
+ PopupPointerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupPointerComponent, selector: "sv-ng-popup-pointer, '[sv-ng-popup-pointer]'", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<span class=\"sv-popup__pointer\" [style]=\"{ left: popupModel.pointerTarget.left, top: popupModel.pointerTarget.top }\"></span>" });
1135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupPointerComponent, decorators: [{
1136
+ type: Component,
1137
+ args: [{
1138
+ selector: "sv-ng-popup-pointer, '[sv-ng-popup-pointer]'",
1139
+ templateUrl: "./popup-pointer.component.html"
1140
+ }]
1141
+ }], propDecorators: { model: [{
1142
+ type: Input
1143
+ }] } });
1144
+ AngularComponentFactory.Instance.registerComponent("popup-pointer", PopupPointerComponent);
1145
+
1146
+ class PopupComponent extends BaseAngular {
1147
+ constructor(viewContainerRef, changeDetectorRef, popupService) {
1148
+ super(changeDetectorRef, viewContainerRef);
1149
+ this.popupService = popupService;
1150
+ }
1151
+ getModel() {
1152
+ return this.popupModel;
1153
+ }
1154
+ onModelChanged() {
1155
+ var _a;
1156
+ this.destroyModel();
1157
+ this.model = createPopupViewModel(this.popupModel, (_a = this.viewContainerRef) === null || _a === void 0 ? void 0 : _a.element.nativeElement.parentElement);
1158
+ this.model.initializePopupContainer();
1159
+ this.portalHost = this.popupService.createComponent(this.model);
1160
+ }
1161
+ ngOnInit() {
1162
+ this.onModelChanged();
1163
+ }
1164
+ destroyModel() {
1165
+ var _a, _b;
1166
+ (_a = this.portalHost) === null || _a === void 0 ? void 0 : _a.detach();
1167
+ (_b = this.model) === null || _b === void 0 ? void 0 : _b.unmountPopupContainer();
1168
+ }
1169
+ ngOnDestroy() {
1170
+ super.ngOnDestroy();
1171
+ this.destroyModel();
1172
+ }
1173
+ }
1174
+ PopupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupComponent, deps: [{ token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }, { token: PopupService }], target: i0.ɵɵFactoryTarget.Component });
1175
+ PopupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: { popupModel: "popupModel" }, usesInheritance: true, ngImport: i0, template: "<div></div>", isInline: true });
1176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PopupComponent, decorators: [{
1177
+ type: Component,
1178
+ args: [{
1179
+ selector: "sv-ng-popup, '[sv-ng-popup]'",
1180
+ template: "<div></div>"
1181
+ }]
1182
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: PopupService }]; }, propDecorators: { popupModel: [{
1183
+ type: Input
1184
+ }] } });
1185
+
1186
+ class QuestionSkeletonComponent {
1187
+ }
1188
+ QuestionSkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1189
+ QuestionSkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] });
1190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionSkeletonComponent, decorators: [{
1191
+ type: Component,
1192
+ args: [{
1193
+ selector: "question-skeleton",
1194
+ templateUrl: "./skeleton.component.html",
1195
+ styleUrls: ["./skeleton.component.scss"]
1196
+ }]
1197
+ }], propDecorators: { model: [{
1198
+ type: Input
1199
+ }] } });
1200
+ AngularComponentFactory.Instance.registerComponent("skeleton-question", QuestionSkeletonComponent);
1201
+
1202
+ class DropdownComponent extends BaseAngular {
1203
+ get dropdownModel() {
1204
+ var _a;
1205
+ return (_a = this.model) === null || _a === void 0 ? void 0 : _a.dropdownListModel;
1206
+ }
1207
+ getModel() {
1208
+ return this.model;
1209
+ }
1210
+ ngOnInit() {
1211
+ super.ngOnInit();
1212
+ if (!this.model.dropdownListModel) {
1213
+ this.model.dropdownListModel = new DropdownListModel(this.model);
1214
+ }
1215
+ }
1216
+ ngOnDestroy() {
1217
+ var _a;
1218
+ super.ngOnDestroy();
1219
+ (_a = this.dropdownModel) === null || _a === void 0 ? void 0 : _a.dispose();
1220
+ }
1221
+ click(event) {
1222
+ var _a;
1223
+ (_a = this.dropdownModel) === null || _a === void 0 ? void 0 : _a.onClick(event);
1224
+ }
1225
+ clear(event) {
1226
+ var _a;
1227
+ (_a = this.dropdownModel) === null || _a === void 0 ? void 0 : _a.onClear(event);
1228
+ }
1229
+ keyhandler(event) {
1230
+ var _a;
1231
+ (_a = this.dropdownModel) === null || _a === void 0 ? void 0 : _a.keyHandler(event);
1232
+ }
1233
+ blur(event) {
1234
+ var _a;
1235
+ (_a = this.dropdownModel) === null || _a === void 0 ? void 0 : _a.onBlur(event);
1236
+ this.updateInputDomElement();
1237
+ }
1238
+ inputChange(event) {
1239
+ this.detectChanges();
1240
+ }
1241
+ updateInputDomElement() {
1242
+ var _a;
1243
+ if (!!((_a = this.inputElementRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
1244
+ const control = this.inputElementRef.nativeElement;
1245
+ const newValue = this.model.filterString;
1246
+ if (!Helpers.isTwoValueEquals(newValue, control.value)) {
1247
+ control.value = this.model.filterString || "";
1248
+ }
1249
+ }
1250
+ }
1251
+ }
1252
+ DropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1253
+ DropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.selectWrapper\">\n <div *ngIf=\"!model.isReadOnly\" [attr.tabindex]=\"dropdownModel.inputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keydown)=\"keyhandler($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\">\n <ng-container *ngIf=\"model.showInputFieldComponent\">\n <ng-template [component]=\"{ name: model.inputFieldComponentName, data: { model: dropdownModel.getSelectedAction(), question: model } }\"></ng-template>\n </ng-container>\n <sv-ng-string *ngIf=\"model.showSelectedItemLocText\" [model]=\"model.selectedItemLocText\"></sv-ng-string>\n <input #inputElement type=\"text\" autocomplete=\"off\" [(ngModel)]=\"dropdownModel.filterString\" [class]=\"model.cssClasses.filterStringInput\"\n [attr.role]=\"dropdownModel.filterStringEnabled ? model.ariaRole : null\"\n [attr.id]=\"model.getInputId()\"\n [attr.inputmode]=\"dropdownModel.inputMode\"\n [attr.tabindex]=\"dropdownModel.inputReadOnly ? null : -1\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\"\n [attr.aria-label]=\"model.placeholder\"\n [attr.placeholder]=\"model.readOnlyText\" [attr.readonly]=\"!dropdownModel.searchEnabled ? true : null\" \n (change)=\"inputChange($event)\" (blur)=\"blur($event)\" />\n </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\" [title]=\"model.clearCaption\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"dropdownModel.popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">\n <sv-ng-string *ngIf=\"model.selectedItemLocText\" [model]=\"model.selectedItemLocText\"></sv-ng-string>\n <div>{{ model.readOnlyText }}</div>\n </div>\n</div>", 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"] }, { type: PopupComponent, selector: "sv-ng-popup, '[sv-ng-popup]'", inputs: ["popupModel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
1254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownComponent, decorators: [{
1255
+ type: Component,
1256
+ args: [{
1257
+ selector: "sv-ng-dropdown, '[sv-ng-dropdown]'",
1258
+ templateUrl: "./dropdown.component.html"
1259
+ }]
1260
+ }], propDecorators: { model: [{
1261
+ type: Input
1262
+ }], inputElementRef: [{
1263
+ type: ViewChild,
1264
+ args: ["inputElement"]
1265
+ }] } });
1266
+
1267
+ class TagboxFilterComponent extends BaseAngular {
1268
+ getModel() {
1269
+ return this.model;
1270
+ }
1271
+ }
1272
+ TagboxFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1273
+ TagboxFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TagboxFilterComponent, selector: "sv-tagbox-filter", inputs: { model: "model", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <input\n type=\"text\"\n autocomplete=\"off\"\n [(ngModel)]=\"model.filterString\"\n [attr.id]=\"question.getInputId()\"\n [class]=\"question.cssClasses.filterStringInput\"\n [attr.inputmode]=\"model.inputMode\"\n [attr.role]=\"model.filterStringEnabled ? question.ariaRole : null\"\n [attr.readonly]=\"!model.searchEnabled ? true : null\"\n [attr.disabled]=\"question.isInputReadOnly ? true : null\"\n [attr.size]=\"!model.filterString ? 1 : null\"\n [attr.aria-label]=\"question.placeholder\"\n [attr.placeholder]=\"model.filterStringPlaceholder\"\n (keydown)=\"model.inputKeyHandler($event)\"\n (blur)=\"model.onBlur($event)\"\n />\n</ng-template>\n", styles: [":host{display:none}\n"], directives: [{ type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxFilterComponent, decorators: [{
1275
+ type: Component,
1276
+ args: [{
1277
+ selector: "sv-tagbox-filter",
1278
+ templateUrl: "./tagbox-filter.component.html",
1279
+ styleUrls: ["../../hide-host.scss"]
1280
+ }]
1281
+ }], propDecorators: { model: [{
1282
+ type: Input
1283
+ }], question: [{
1284
+ type: Input
1285
+ }] } });
1286
+ AngularComponentFactory.Instance.registerComponent("sv-tagbox-filter", TagboxFilterComponent);
1287
+
1288
+ class TagboxItemComponent extends BaseAngular {
1289
+ removeItem(event) {
1290
+ this.question.dropdownListModel.deselectItem(this.item.value);
1291
+ event.stopPropagation();
1292
+ }
1293
+ getModel() {
1294
+ return this.item;
1295
+ }
1296
+ }
1297
+ TagboxItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1298
+ TagboxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TagboxItemComponent, selector: "sv-ng-tagbox-item, '[sv-ng-tagbox-item]'", inputs: { item: "item", question: "question" }, usesInheritance: true, ngImport: i0, template: "<div 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]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n</div>", 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"] }] });
1299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxItemComponent, decorators: [{
1300
+ type: Component,
1301
+ args: [{
1302
+ selector: "sv-ng-tagbox-item, '[sv-ng-tagbox-item]'",
1303
+ templateUrl: "./tagbox-item.component.html",
1304
+ }]
1305
+ }], propDecorators: { item: [{
1306
+ type: Input
1307
+ }], question: [{
1308
+ type: Input
1309
+ }] } });
1310
+ AngularComponentFactory.Instance.registerComponent("sv-tagbox-item", TagboxItemComponent);
1311
+
1312
+ class TagboxComponent {
1313
+ get dropdownModel() {
1314
+ return this.dropdownListModel;
1315
+ }
1316
+ getModel() {
1317
+ return this.model;
1318
+ }
1319
+ ngOnInit() {
1320
+ this.dropdownListModel = this.model.dropdownListModel || new DropdownMultiSelectListModel(this.model);
1321
+ }
1322
+ ngOnDestroy() {
1323
+ var _a;
1324
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.dispose();
1325
+ }
1326
+ click(event) {
1327
+ var _a;
1328
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClick(event);
1329
+ }
1330
+ clear(event) {
1331
+ var _a;
1332
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onClear(event);
1333
+ }
1334
+ keyhandler(event) {
1335
+ var _a;
1336
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.keyHandler(event);
1337
+ }
1338
+ blur(event) {
1339
+ var _a;
1340
+ (_a = this.dropdownListModel) === null || _a === void 0 ? void 0 : _a.onBlur(event);
1341
+ }
1342
+ }
1343
+ TagboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1344
+ TagboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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\" [attr.tabindex]=\"dropdownModel.inputReadOnly ? null : 0\" [class]=\"model.getControlClass()\"\n [attr.disabled]=\"model.isInputReadOnly ? true : null\" (click)=\"click($event)\" (blur)=\"blur($event)\"\n (keydown)=\"keyhandler($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\">\n <ng-container *ngIf=\"!model.isEmpty()\">\n <sv-ng-tagbox-item *ngFor=\"let item of model.selectedChoices\" [item]=\"item\" [question]=\"model\">\n </sv-ng-tagbox-item>\n </ng-container>\n <ng-template [component]=\"{ name: 'sv-tagbox-filter', data: { model: dropdownModel, question: model } }\"></ng-template>\n </div>\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\" [title]=\"model.clearCaption\"\n [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n </div>\n <sv-ng-popup *ngIf=\"!model.isReadOnly\" [popupModel]=\"model.popupModel\"></sv-ng-popup>\n <div disabled *ngIf=\"model.isReadOnly\" [class]=\"model.getControlClass()\" [attr.id]=\"model.inputId\">\n <div>{{ model.readOnlyText }}</div>\n </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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
1345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxComponent, decorators: [{
1346
+ type: Component,
1347
+ args: [{
1348
+ selector: "sv-ng-tagbox, '[sv-ng-tagbox]'",
1349
+ templateUrl: "./tagbox.component.html"
1350
+ }]
1351
+ }], propDecorators: { model: [{
1352
+ type: Input
1353
+ }] } });
1354
+
1355
+ class DropdownOptionItemComponent extends BaseAngular {
1356
+ getModel() {
1357
+ return this.item;
1358
+ }
1359
+ }
1360
+ DropdownOptionItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownOptionItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1361
+ DropdownOptionItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownOptionItemComponent, selector: "sv-ng-dropdown-option-item, '[sv-ng-dropdown-option-item]'", inputs: { item: "item" }, usesInheritance: true, ngImport: i0, template: '<ng-template #template><option [value]="item.value" [disabled]="!item.isEnabled">{{ item.text }}</option><ng-template>', isInline: true, directives: [{ type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownOptionItemComponent, decorators: [{
1363
+ type: Component,
1364
+ args: [{
1365
+ selector: "sv-ng-dropdown-option-item, '[sv-ng-dropdown-option-item]'",
1366
+ template: '<ng-template #template><option [value]="item.value" [disabled]="!item.isEnabled">{{ item.text }}</option><ng-template>',
1367
+ }]
1368
+ }], propDecorators: { item: [{
1369
+ type: Input
1370
+ }] } });
1371
+ AngularComponentFactory.Instance.registerComponent("sv-dropdown-option-item", DropdownOptionItemComponent);
1372
+
1373
+ class SurveyCommentOtherComponent {
1374
+ constructor() {
1375
+ }
1376
+ get otherValue() {
1377
+ const val = this.question.otherValue;
1378
+ return !!val ? val : "";
1379
+ }
1380
+ onOtherValueChange(event) {
1381
+ this.question.onOtherValueChange(event);
1382
+ }
1383
+ onOtherValueInput(event) {
1384
+ this.question.onOtherValueInput(event);
1385
+ }
1386
+ get otherId() {
1387
+ return this.question.otherId;
1388
+ }
1389
+ get otherPlaceholder() {
1390
+ return this.question.otherPlaceholder;
1391
+ }
1392
+ }
1393
+ SurveyCommentOtherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentOtherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1394
+ SurveyCommentOtherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: { question: "question" }, ngImport: i0, template: "<textarea *ngIf=\"!question.isReadOnlyRenderDiv()\" [id]=\"otherId\" [attr.max-length]=\"question.getOthersMaxLength()\" [attr.aria-required]=\"question.ariaRequired\" [attr.aria-label]=\"question.ariaLabel\" [attr.placeholder]=\"otherPlaceholder\" \n [value]=\"otherValue\"\n [style.resize]=\"question.resizeStyle\"\n [disabled]=\"question.isInputReadOnly\"\n (change)=\"onOtherValueChange($event)\"\n (input)=\"onOtherValueInput($event)\"\n [class]=\"question.cssClasses.other\">\n</textarea>\n<div *ngIf=\"question.isReadOnlyRenderDiv()\">{{ otherValue }}</div>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1395
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyCommentOtherComponent, decorators: [{
1396
+ type: Component,
1397
+ args: [{
1398
+ selector: "sv-ng-comment-other, '[sv-ng-comment-other]'",
1399
+ templateUrl: "./comment-other.component.html",
1400
+ }]
1401
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1402
+ type: Input
1403
+ }] } });
1404
+
1405
+ class DropdownSelectComponent {
1406
+ get editableValue() {
1407
+ return this.model.renderedValue || "";
1408
+ }
1409
+ set editableValue(newValue) {
1410
+ if (newValue === "") {
1411
+ this.model.renderedValue = undefined;
1412
+ }
1413
+ else {
1414
+ this.model.renderedValue = newValue;
1415
+ }
1416
+ }
1417
+ click(event) {
1418
+ this.model.onClick(event);
1419
+ }
1420
+ keyup(event) {
1421
+ this.model.onKeyUp(event);
1422
+ }
1423
+ }
1424
+ DropdownSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1425
+ DropdownSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DropdownSelectComponent, selector: "sv-ng-dropdown-select-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.renderCssRoot\">\n <div [class]=\"model.cssClasses.selectWrapper\">\n <select *ngIf=\"!model.isReadOnly\" [attr.id]=\"model.inputId\" [(ngModel)]=\"editableValue\"\n [disabled]=\"model.isInputReadOnly\" (click)=\"click($event)\" (keyup)=\"keyup($event)\"\n [class]=\"model.getControlClass()\" [attr.autocomplete]=\"model.autocomplete\" [required]=\"model.isRequired\"\n [attr.aria-required]=\"model.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.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\"\n [style.display]=\"model.isFlowLayout ? 'inline': '' \" [question]=\"model\" sv-ng-comment-other></div>\n</div>", components: [{ type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownSelectComponent, decorators: [{
1427
+ type: Component,
1428
+ args: [{
1429
+ selector: "sv-ng-dropdown-select-question",
1430
+ templateUrl: "./dropdown-select.component.html"
1431
+ }]
1432
+ }], propDecorators: { model: [{
1433
+ type: Input
1434
+ }] } });
1435
+ AngularComponentFactory.Instance.registerComponent("dropdown-select-question", DropdownSelectComponent);
1436
+ RendererFactory.Instance.registerRenderer("dropdown", "select", "dropdown-select-question");
1437
+
1438
+ //temp: disables angular sanitizer, which breaks a links
1439
+ class SafeUrlPipe {
1440
+ constructor(domSanitizer) {
1441
+ this.domSanitizer = domSanitizer;
1442
+ }
1443
+ transform(url) {
1444
+ return this.domSanitizer.bypassSecurityTrustUrl(url);
1445
+ }
1446
+ }
1447
+ SafeUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
1448
+ SafeUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, name: "safeUrl" });
1449
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeUrlPipe, decorators: [{
1450
+ type: Pipe,
1451
+ args: [{ name: "safeUrl" }]
1452
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
1453
+ class SafeResourceUrlPipe {
1454
+ constructor(domSanitizer) {
1455
+ this.domSanitizer = domSanitizer;
1456
+ }
1457
+ transform(url) {
1458
+ return this.domSanitizer.bypassSecurityTrustResourceUrl(url);
1459
+ }
1460
+ }
1461
+ SafeResourceUrlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeResourceUrlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
1462
+ SafeResourceUrlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeResourceUrlPipe, name: "safeResourceUrl" });
1463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeResourceUrlPipe, decorators: [{
1464
+ type: Pipe,
1465
+ args: [{ name: "safeResourceUrl" }]
1466
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
1467
+
1468
+ class LogoImageComponent extends EmbeddedViewContentComponent {
1469
+ get survey() {
1470
+ return this.data;
1471
+ }
1472
+ }
1473
+ LogoImageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LogoImageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1474
+ LogoImageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: LogoImageComponent, selector: "sv-logo-image", inputs: { data: "data" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\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</ng-template>", styles: [":host{display:none}\n"], pipes: { "safeUrl": SafeUrlPipe } });
1475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: LogoImageComponent, decorators: [{
1476
+ type: Component,
1477
+ args: [{
1478
+ selector: "sv-logo-image",
1479
+ templateUrl: "./logo-image.component.html",
1480
+ styleUrls: ["../../hide-host.scss"]
1481
+ }]
1482
+ }], propDecorators: { data: [{
1483
+ type: Input
1484
+ }] } });
1485
+ AngularComponentFactory.Instance.registerComponent("sv-logo-image", LogoImageComponent);
1486
+
1487
+ class QuestionAngular extends BaseAngular {
1488
+ getModel() {
1489
+ return this.model;
1490
+ }
1491
+ ngAfterViewInit() {
1492
+ var _a;
1493
+ if (!!this.model) {
1494
+ this.model.afterRenderQuestionElement((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement);
1495
+ }
1496
+ }
1497
+ ngOnDestroy() {
1498
+ var _a;
1499
+ if (!!this.model) {
1500
+ this.model.beforeDestroyQuestionElement((_a = this.elementContentRef) === null || _a === void 0 ? void 0 : _a.nativeElement);
1501
+ }
1502
+ super.ngOnDestroy();
1503
+ }
1504
+ }
1505
+ QuestionAngular.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionAngular, deps: null, target: i0.ɵɵFactoryTarget.Component });
1506
+ QuestionAngular.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionAngular, selector: "ng-component", inputs: { model: "model" }, viewQueries: [{ propertyName: "elementContentRef", first: true, predicate: ["contentElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "", isInline: true });
1507
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionAngular, decorators: [{
1508
+ type: Component,
1509
+ args: [{
1510
+ template: ""
1511
+ }]
1512
+ }], propDecorators: { model: [{
1513
+ type: Input
1514
+ }], elementContentRef: [{
1515
+ type: ViewChild,
1516
+ args: ["contentElement"]
1517
+ }] } });
1518
+
1519
+ class CharacterCounterComponent extends BaseAngular {
1520
+ getModel() {
1521
+ return this.counter;
1522
+ }
1523
+ }
1524
+ CharacterCounterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CharacterCounterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1525
+ CharacterCounterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: { counter: "counter", remainingCharacterCounter: "remainingCharacterCounter" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"remainingCharacterCounter\">{{ counter.remainingCharacterCounter }}</div>\n</ng-template>", styles: [":host { display: none; }"] });
1526
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CharacterCounterComponent, decorators: [{
1527
+ type: Component,
1528
+ args: [{
1529
+ selector: "sv-ng-character-counter",
1530
+ templateUrl: "./character-counter.component.html",
1531
+ styles: [":host { display: none; }"],
1532
+ }]
1533
+ }], propDecorators: { counter: [{
1534
+ type: Input
1535
+ }], remainingCharacterCounter: [{
1536
+ type: Input
1537
+ }] } });
1538
+ AngularComponentFactory.Instance.registerComponent("character-counter", CharacterCounterComponent);
1539
+
1540
+ class TextQuestionComponent extends QuestionAngular {
1541
+ }
1542
+ TextQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1543
+ TextQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TextQuestionComponent, selector: "sv-ng-text-question", usesInheritance: true, ngImport: i0, template: " <ng-container [ngTemplateOutlet]=\"input\" *ngIf=\"!model.dataListId && !model.isReadOnlyRenderDiv()\"></ng-container>\n <div *ngIf=\"model.dataListId && !model.isReadOnlyRenderDiv()\">\n <ng-container [ngTemplateOutlet]=\"input\"></ng-container>\n <datalist [id]=\"model.dataListId\">\n <option *ngFor=\"let dataListItem of model.dataList\" [value]=\"dataListItem\"></option>\n </datalist>\n </div>\n <div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>\n <ng-template #input>\n <input [style]=\"model.inputStyle\" [class]=\"model.getControlClass()\" [attr.list]=\"model.dataListId\"\n (change)=\"model.onChange($event)\" [attr.value]=\"model.value\" [disabled]=\"model.isInputReadOnly\" name=\"user\" [type]=\"model.inputType\" [id]=\"model.inputId\" [attr.placeholder]=\"model.renderedPlaceholder || ''\"\n (keyup)=\"model.onKeyUp($event)\" (keydown)=\"model.onKeyDown($event)\" (blur)=\"model.onBlur($event)\" (compositionupdate)=\"model.onCompositionUpdate($event)\" \n [attr.size] = \"model.renderedInputSize\" [attr.maxlength]= \"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 <sv-ng-character-counter *ngIf=\"model.getMaxLength()\" \n [counter]=\"model.characterCounter\"\n [remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n </sv-ng-character-counter>\n </ng-template>", styles: [""], components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }] });
1544
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TextQuestionComponent, decorators: [{
1545
+ type: Component,
1546
+ args: [{
1547
+ selector: "sv-ng-text-question",
1548
+ templateUrl: "./text.component.html",
1549
+ styleUrls: ["./text.component.scss"]
1550
+ }]
1551
+ }] });
1552
+ AngularComponentFactory.Instance.registerComponent("text-question", TextQuestionComponent);
1553
+
1554
+ class SafeHtmlPipe {
1555
+ constructor(domSanitizer) {
1556
+ this.domSanitizer = domSanitizer;
1557
+ }
1558
+ transform(url) {
1559
+ return this.domSanitizer.bypassSecurityTrustHtml(url);
1560
+ }
1561
+ }
1562
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
1563
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" });
1564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, decorators: [{
1565
+ type: Pipe,
1566
+ args: [{ name: "safeHtml" }]
1567
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
1568
+
1569
+ class HtmlQuestionComponent extends QuestionAngular {
1570
+ onModelChanged() {
1571
+ super.onModelChanged();
1572
+ this.model.locHtml.onChanged = () => {
1573
+ this.detectChanges();
1574
+ };
1575
+ }
1576
+ ngOnDestroy() {
1577
+ this.model.locHtml.onChanged = () => { };
1578
+ super.ngOnDestroy();
1579
+ }
1580
+ }
1581
+ HtmlQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HtmlQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1582
+ HtmlQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 } });
1583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: HtmlQuestionComponent, decorators: [{
1584
+ type: Component,
1585
+ args: [{
1586
+ selector: "sv-ng-html-question",
1587
+ templateUrl: "./html.component.html",
1588
+ styleUrls: []
1589
+ }]
1590
+ }] });
1591
+ AngularComponentFactory.Instance.registerComponent("html-question", HtmlQuestionComponent);
1592
+
1593
+ class SelectBaseComponent extends QuestionAngular {
1594
+ constructor() {
1595
+ super(...arguments);
1596
+ this.inputType = "checkbox";
1597
+ this.showLegend = true;
1598
+ }
1599
+ getDefaultComponentName() {
1600
+ return "sv-ng-selectbase-item";
1601
+ }
1602
+ trackItemBy(_, item) {
1603
+ return item.value;
1604
+ }
1605
+ trackColumnBy(index) {
1606
+ return index;
1607
+ }
1608
+ getItemValueComponentName(item) {
1609
+ return this.model.getItemValueWrapperComponentName(item) || this.getDefaultComponentName();
1610
+ }
1611
+ getItemValueComponentData(item) {
1612
+ const itemComponentProperty = this.model.getPropertyByName("itemComponent");
1613
+ const isDefaultItemComponent = itemComponentProperty.isDefaultValue(this.model.itemComponent);
1614
+ const itemComponentName = isDefaultItemComponent ? this.getDefaultComponentName() : this.model.itemComponent;
1615
+ return {
1616
+ componentName: itemComponentName,
1617
+ componentData: {
1618
+ question: this.model,
1619
+ model: item,
1620
+ inputType: this.inputType,
1621
+ data: this.model.getItemValueWrapperComponentData(item)
1622
+ }
1623
+ };
1624
+ }
1625
+ }
1626
+ SelectBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1627
+ SelectBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-container *ngFor=\"let item of model.headItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <ng-container *ngFor=\"let item of model.bodyItems; trackBy: trackItemBy\" >\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <ng-container *ngFor=\"let item of model.dataChoices; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\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; trackBy: trackColumnBy\" role=\"presentation\">\n <ng-container *ngFor=\"let item of column; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <ng-container *ngFor=\"let item of model.footItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div *ngIf=\"model.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></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: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseComponent, decorators: [{
1629
+ type: Component,
1630
+ args: [{
1631
+ selector: "['sv-ng-selectbase']",
1632
+ templateUrl: "./selectbase.component.html"
1633
+ }]
1634
+ }], propDecorators: { model: [{
1635
+ type: Input
1636
+ }] } });
1637
+ AngularComponentFactory.Instance.registerComponent("selectbase", SelectBaseComponent);
1638
+
1639
+ class RadiogroupComponent extends SelectBaseComponent {
1640
+ ngOnInit() {
1641
+ this.inputType = "radio";
1642
+ this.showLegend = false;
1643
+ super.ngOnInit();
1644
+ }
1645
+ }
1646
+ RadiogroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1647
+ RadiogroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-container *ngFor=\"let item of model.headItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <ng-container *ngFor=\"let item of model.bodyItems; trackBy: trackItemBy\" >\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <ng-container *ngFor=\"let item of model.dataChoices; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\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; trackBy: trackColumnBy\" role=\"presentation\">\n <ng-container *ngFor=\"let item of column; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <ng-container *ngFor=\"let item of model.footItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div *ngIf=\"model.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></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: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupComponent, decorators: [{
1649
+ type: Component,
1650
+ args: [{
1651
+ selector: "sv-ng-radiogroup-question",
1652
+ templateUrl: "./selectbase.component.html"
1653
+ }]
1654
+ }] });
1655
+ AngularComponentFactory.Instance.registerComponent("radiogroup-question", RadiogroupComponent);
1656
+
1657
+ class RadiogroupItemComponent {
1658
+ constructor() {
1659
+ }
1660
+ }
1661
+ RadiogroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1662
+ RadiogroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: { question: "question", model: "model" }, 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: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
1663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RadiogroupItemComponent, decorators: [{
1664
+ type: Component,
1665
+ args: [{
1666
+ selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'",
1667
+ templateUrl: "./radiogroup-item.component.html",
1668
+ styleUrls: ["./radiogroup-item.component.scss"]
1669
+ }]
1670
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1671
+ type: Input
1672
+ }], model: [{
1673
+ type: Input
1674
+ }] } });
1675
+
1676
+ class CheckboxComponent extends SelectBaseComponent {
1677
+ }
1678
+ CheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1679
+ CheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-container *ngFor=\"let item of model.headItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <ng-container *ngFor=\"let item of model.bodyItems; trackBy: trackItemBy\" >\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <ng-container *ngFor=\"let item of model.dataChoices; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\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; trackBy: trackColumnBy\" role=\"presentation\">\n <ng-container *ngFor=\"let item of column; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <ng-container *ngFor=\"let item of model.footItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div *ngIf=\"model.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></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: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CheckboxComponent, decorators: [{
1681
+ type: Component,
1682
+ args: [{
1683
+ selector: "sv-ng-checkbox-question",
1684
+ templateUrl: "./selectbase.component.html"
1685
+ }]
1686
+ }] });
1687
+ AngularComponentFactory.Instance.registerComponent("checkbox-question", CheckboxComponent);
1688
+
1689
+ class CheckboxItemComponent {
1690
+ constructor() {
1691
+ }
1692
+ onChange(event) {
1693
+ this.question.clickItemHandler(this.model, event.target.checked);
1694
+ }
1695
+ onSelectAllChange(event) {
1696
+ this.question.toggleSelectAll();
1697
+ }
1698
+ }
1699
+ CheckboxItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CheckboxItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1700
+ CheckboxItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: { question: "question", model: "model" }, ngImport: i0, template: "<input *ngIf=\"model == question.selectAllItem\" role=\"option\" 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\" role=\"option\" 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1701
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CheckboxItemComponent, decorators: [{
1702
+ type: Component,
1703
+ args: [{
1704
+ selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'",
1705
+ templateUrl: "./checkbox-item.component.html",
1706
+ styleUrls: ["./checkbox-item.component.scss"]
1707
+ }]
1708
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
1709
+ type: Input
1710
+ }], model: [{
1711
+ type: Input
1712
+ }] } });
1713
+
1714
+ class DropdownQuestionComponent extends QuestionAngular {
1715
+ }
1716
+ DropdownQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1717
+ DropdownQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></div>\n</div>", components: [{ type: DropdownComponent, selector: "sv-ng-dropdown, '[sv-ng-dropdown]'", inputs: ["model"] }, { type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DropdownQuestionComponent, decorators: [{
1719
+ type: Component,
1720
+ args: [{
1721
+ selector: "sv-ng-dropdown-question",
1722
+ templateUrl: "./dropdown.component.html"
1723
+ }]
1724
+ }] });
1725
+ AngularComponentFactory.Instance.registerComponent("dropdown-question", DropdownQuestionComponent);
1726
+
1727
+ class TagboxQuestionComponent extends QuestionAngular {
1728
+ }
1729
+ TagboxQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1730
+ TagboxQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></div>\n</div>", components: [{ type: TagboxComponent, selector: "sv-ng-tagbox, '[sv-ng-tagbox]'", inputs: ["model"] }, { type: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TagboxQuestionComponent, decorators: [{
1732
+ type: Component,
1733
+ args: [{
1734
+ selector: "sv-ng-tagbox-question",
1735
+ templateUrl: "./tagbox.component.html"
1736
+ }]
1737
+ }] });
1738
+ AngularComponentFactory.Instance.registerComponent("tagbox-question", TagboxQuestionComponent);
1739
+
1740
+ class RatingQuestionComponent extends QuestionAngular {
1741
+ trackByFn(index) {
1742
+ return index;
1743
+ }
1744
+ onClick(event) {
1745
+ event.stopPropagation();
1746
+ this.model.setValueFromClick(event.target.value);
1747
+ }
1748
+ }
1749
+ RatingQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1750
+ RatingQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-template *ngFor=\"let item of model.renderedRateItems; index as index; trackBy: trackByFn\" [component]=\"{ name: 'sv-rating-item', data: {model: model, item: item, index: index }}\"></ng-template>\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1751
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingQuestionComponent, decorators: [{
1752
+ type: Component,
1753
+ args: [{
1754
+ selector: "sv-ng-rating-question",
1755
+ templateUrl: "./rating.component.html"
1756
+ }]
1757
+ }] });
1758
+ AngularComponentFactory.Instance.registerComponent("rating-question", RatingQuestionComponent);
1759
+
1760
+ class BooleanQuestionComponent extends QuestionAngular {
1761
+ onChange(event) {
1762
+ this.model.booleanValue = event.target.value;
1763
+ }
1764
+ }
1765
+ BooleanQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1766
+ BooleanQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanQuestionComponent, selector: "sv-ng-boolean-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.cssClasses.root\" (keydown)=\"model.onKeyDownCore($event)\" #contentElement>\n <label [class]=\"model.getItemCss()\">\n <input\n type=\"checkbox\"\n [attr.name]=\"model.name\" [attr.id]=\"model.inputId\" [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.booleanValue\" [(ngModel)]=\"model.booleanValue\" />\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: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1767
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanQuestionComponent, decorators: [{
1768
+ type: Component,
1769
+ args: [{
1770
+ selector: "sv-ng-boolean-question",
1771
+ templateUrl: "./boolean.component.html"
1772
+ }]
1773
+ }] });
1774
+ AngularComponentFactory.Instance.registerComponent("boolean-question", BooleanQuestionComponent);
1775
+
1776
+ class ImagePickerItemComponent extends BaseAngular {
1777
+ getModel() {
1778
+ return this.model;
1779
+ }
1780
+ onChange(event) {
1781
+ if (this.question.multiSelect) {
1782
+ if (event.target.checked) {
1783
+ this.question.value = this.question.value.concat(event.target.value);
1784
+ }
1785
+ else {
1786
+ var currValue = this.question.value;
1787
+ currValue.splice(this.question.value.indexOf(event.target.value), 1);
1788
+ this.question.value = currValue;
1789
+ }
1790
+ }
1791
+ else {
1792
+ this.question.value = event.target.value;
1793
+ }
1794
+ }
1795
+ ngAfterViewInit() {
1796
+ this.model.locImageLink.onChanged = () => {
1797
+ this.detectChanges();
1798
+ };
1799
+ }
1800
+ ngOnDestroy() {
1801
+ super.ngOnDestroy();
1802
+ this.model.locImageLink.onChanged = () => { };
1803
+ }
1804
+ }
1805
+ ImagePickerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagePickerItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1806
+ ImagePickerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <span *ngIf=\"question.cssClasses.checkedItemDecorator\" [class]=\"question.cssClasses.checkedItemDecorator\">\n <svg *ngIf=\"question.cssClasses.checkedItemSvgIconId\" [class]=\"question.cssClasses.checkedItemSvgIcon\" [iconName]=\"question.cssClasses.checkedItemSvgIconId\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </span>\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; }"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagePickerItemComponent, decorators: [{
1808
+ type: Component,
1809
+ args: [{
1810
+ selector: "sv-ng-imagepicker-item",
1811
+ templateUrl: "./imagepicker-item.component.html",
1812
+ styles: [":host { display: none; }"]
1813
+ }]
1814
+ }], propDecorators: { question: [{
1815
+ type: Input
1816
+ }], model: [{
1817
+ type: Input
1818
+ }] } });
1819
+ AngularComponentFactory.Instance.registerComponent("sv-ng-imagepicker-item", ImagePickerItemComponent);
1820
+
1821
+ class ImagePickerQuestionComponent extends QuestionAngular {
1822
+ getItemValueComponentName(item) {
1823
+ return this.model.getItemValueWrapperComponentName(item) || "sv-ng-imagepicker-item";
1824
+ }
1825
+ getItemValueComponentData(item) {
1826
+ return {
1827
+ componentName: "sv-ng-imagepicker-item",
1828
+ componentData: {
1829
+ question: this.model,
1830
+ model: item,
1831
+ data: this.model.getItemValueWrapperComponentData(item)
1832
+ }
1833
+ };
1834
+ }
1835
+ }
1836
+ ImagePickerQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagePickerQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1837
+ ImagePickerQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-container *ngFor=\"let item of model.visibleChoices\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"model.hasColumns\">\n <div *ngFor=\"let column of model.columns\" [class]=\"model.getColumnClass()\" role=\"presentation\">\n <ng-container *ngFor=\"let item of column\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </fieldset>", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImagePickerQuestionComponent, decorators: [{
1839
+ type: Component,
1840
+ args: [{
1841
+ selector: "sv-ng-imagepicker-question",
1842
+ templateUrl: "./imagepicker.component.html"
1843
+ }]
1844
+ }] });
1845
+ AngularComponentFactory.Instance.registerComponent("imagepicker-question", ImagePickerQuestionComponent);
1846
+
1847
+ class ButtonGroupItemComponent extends BaseAngular {
1848
+ ngOnChanges() {
1849
+ this.model = new ButtonGroupItemModel(this.question, this.item, this.index);
1850
+ }
1851
+ getModel() {
1852
+ return this.item;
1853
+ }
1854
+ }
1855
+ ButtonGroupItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1856
+ ButtonGroupItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ButtonGroupItemComponent, selector: "sv-button-group-item", inputs: { item: "item", question: "question", index: "index" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-template #template>\n <label role=\"radio\" [class]=\"model.css.label\" [attr.title]=\"model.caption.renderedHtml\">\n <input type=\"radio\"\n [attr.name]=\"model.name\" [attr.id]=\"model.id\" [attr.aria-required]=\"model.isRequired\" [attr.aria-label]=\"model.caption.renderedHtml\" role=\"radio\" [attr.aria-invalid]=\"model.hasErrors\" [attr.aria-describedby]=\"model.describedBy\" [disabled]=\"model.readOnly\" [class]=\"model.css.control\" [(ngModel)]=\"question.renderedValue\" [attr.value]=\"model.value\" [value]=\"model.value\"/>\n <div data-bind=\"css: model.css.decorator\">\n <svg *ngIf=\"model.iconName\" [iconName]=\"model.iconName\" [size]=\"model.iconSize\" [class]=\"model.css.icon\" sv-ng-svg-icon></svg>\n <span [class]=\"model.css.caption\" *ngIf=\"model.showCaption\" [attr.title]=\"model.caption.renderedHtml\" sv-ng-string [model]=\"model.caption\">\n </span>\n </div>\n </label>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupItemComponent, decorators: [{
1858
+ type: Component,
1859
+ args: [{
1860
+ selector: "sv-button-group-item",
1861
+ templateUrl: "./button-group-item.component.html",
1862
+ styleUrls: ["../../hide-host.scss"]
1863
+ }]
1864
+ }], propDecorators: { item: [{
1865
+ type: Input
1866
+ }], question: [{
1867
+ type: Input
1868
+ }], index: [{
1869
+ type: Input
1870
+ }] } });
1871
+
1872
+ class ButtonGroupQuestionComponent extends QuestionAngular {
1873
+ }
1874
+ ButtonGroupQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1875
+ ButtonGroupQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ButtonGroupQuestionComponent, selector: "sv-ng-buttongroup-question", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [class]=\"model.cssClasses.root\">\n <sv-button-group-item *ngFor=\"let item of model.visibleChoices; index as index\" [question]=\"model\" [item]=\"item\" [index]=\"index\" ></sv-button-group-item>\n</div>\n", components: [{ type: ButtonGroupItemComponent, selector: "sv-button-group-item", inputs: ["item", "question", "index"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
1876
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ButtonGroupQuestionComponent, decorators: [{
1877
+ type: Component,
1878
+ args: [{
1879
+ selector: "sv-ng-buttongroup-question",
1880
+ templateUrl: "./button-group.component.html"
1881
+ }]
1882
+ }] });
1883
+
1884
+ class Key2ClickDirective {
1885
+ constructor(el) {
1886
+ this.el = el;
1887
+ this.isSubscribed = false;
1888
+ this.options = Key2ClickDirective.defaultOptions;
1889
+ this.onkeyup = (evt) => {
1890
+ evt.preventDefault();
1891
+ evt.stopPropagation();
1892
+ doKey2ClickUp(evt, this.options);
1893
+ return false;
1894
+ };
1895
+ this.subscribeEventListeners();
1896
+ }
1897
+ onkeydown(evt) {
1898
+ doKey2ClickDown(evt, this.options);
1899
+ }
1900
+ blur(evt) {
1901
+ doKey2ClickBlur(evt);
1902
+ }
1903
+ get element() {
1904
+ return this.el.nativeElement;
1905
+ }
1906
+ subscribeEventListeners() {
1907
+ if (this.isSubscribed)
1908
+ return;
1909
+ this.element.tabIndex = 0;
1910
+ this.element.addEventListener("keyup", this.onkeyup);
1911
+ this.element.addEventListener("keydown", this.onkeydown);
1912
+ this.element.addEventListener("blur", this.blur);
1913
+ this.isSubscribed = true;
1914
+ }
1915
+ unsubscribeEventListeners() {
1916
+ if (!this.isSubscribed)
1917
+ return;
1918
+ this.element.tabIndex = -1;
1919
+ this.element.removeEventListener("keyup", this.onkeyup);
1920
+ this.element.removeEventListener("keydown", this.onkeydown);
1921
+ this.element.removeEventListener("blur", this.blur);
1922
+ this.isSubscribed = false;
1923
+ }
1924
+ ngOnChanges(changes) {
1925
+ const curValue = changes["key2click"].currentValue;
1926
+ if (curValue.disableTabStop) {
1927
+ this.unsubscribeEventListeners();
1928
+ }
1929
+ else {
1930
+ this.subscribeEventListeners();
1931
+ }
1932
+ this.options = Object.assign({}, Key2ClickDirective.defaultOptions, curValue);
1933
+ }
1934
+ ngOnDestroy() {
1935
+ this.unsubscribeEventListeners();
1936
+ }
1937
+ }
1938
+ Key2ClickDirective.defaultOptions = { processEsc: true, disableTabStop: false };
1939
+ Key2ClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Key2ClickDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1940
+ Key2ClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: Key2ClickDirective, selector: "[key2click]", inputs: { key2click: "key2click" }, usesOnChanges: true, ngImport: i0 });
1941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Key2ClickDirective, decorators: [{
1942
+ type: Directive,
1943
+ args: [{
1944
+ selector: "[key2click]"
1945
+ }]
1946
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { key2click: [{
1947
+ type: Input
1948
+ }] } });
1949
+
1950
+ class ActionBarItemComponent extends BaseAngular {
1951
+ getModel() {
1952
+ return this.model;
1953
+ }
1954
+ }
1955
+ ActionBarItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1956
+ ActionBarItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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\" [attr.aria-checked]=\"model.ariaChecked\" [attr.aria-expanded]=\"model.ariaExpanded\" [attr.role]=\"model.ariaRole\" [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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1957
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarItemComponent, decorators: [{
1958
+ type: Component,
1959
+ args: [{
1960
+ selector: "sv-action-bar-item",
1961
+ templateUrl: "./action-bar-item.component.html",
1962
+ styleUrls: ["../../hide-host.scss"]
1963
+ }]
1964
+ }], propDecorators: { model: [{
1965
+ type: Input
1966
+ }] } });
1967
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar-item", ActionBarItemComponent);
1968
+
1969
+ class ActionBarItemDropdownComponent extends BaseAngular {
1970
+ getModel() {
1971
+ return this.model;
1972
+ }
1973
+ ngOnInit() {
1974
+ super.ngOnInit();
1975
+ this.viewModel = new ActionDropdownViewModel(this.model);
1976
+ }
1977
+ ngOnDestroy() {
1978
+ this.viewModel.dispose();
1979
+ super.ngOnDestroy();
1980
+ }
1981
+ }
1982
+ ActionBarItemDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarItemDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1983
+ ActionBarItemDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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\" [attr.role]=\"model.ariaRole\">\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1984
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ActionBarItemDropdownComponent, decorators: [{
1985
+ type: Component,
1986
+ args: [{
1987
+ selector: "sv-action-bar-item-dropdown",
1988
+ templateUrl: "./action-bar-item-dropdown.component.html",
1989
+ styleUrls: ["../../hide-host.scss"]
1990
+ }]
1991
+ }], propDecorators: { model: [{
1992
+ type: Input
1993
+ }] } });
1994
+ AngularComponentFactory.Instance.registerComponent("sv-action-bar-item-dropdown", ActionBarItemDropdownComponent);
1995
+
1996
+ class SelectBaseItemComponent extends BaseAngular {
1997
+ constructor() {
1998
+ super(...arguments);
1999
+ this.showLabel = true;
2000
+ }
2001
+ getModel() {
2002
+ return this.model;
2003
+ }
2004
+ }
2005
+ SelectBaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2006
+ SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\">\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [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)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span> \n </ng-template>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model"] }, { type: RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, decorators: [{
2008
+ type: Component,
2009
+ args: [{
2010
+ selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item",
2011
+ templateUrl: "./selectbase-item.html",
2012
+ styles: [":host { display: none; }"]
2013
+ }]
2014
+ }], propDecorators: { question: [{
2015
+ type: Input
2016
+ }], model: [{
2017
+ type: Input
2018
+ }], inputType: [{
2019
+ type: Input
2020
+ }], showLabel: [{
2021
+ type: Input
2022
+ }] } });
2023
+ AngularComponentFactory.Instance.registerComponent("sv-ng-selectbase-item", SelectBaseItemComponent);
2024
+
2025
+ class SkeletonComponent extends EmbeddedViewContentComponent {
2026
+ }
2027
+ SkeletonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SkeletonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2028
+ SkeletonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SkeletonComponent, selector: "sv-skeleton", inputs: { element: "element" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div class=\"sv-skeleton-element\" [id]=\"element.id\"></div>\n</ng-template>", styles: [":host{display:none}\n"] });
2029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SkeletonComponent, decorators: [{
2030
+ type: Component,
2031
+ args: [{
2032
+ selector: "sv-skeleton",
2033
+ templateUrl: "./skeleton.component.html",
2034
+ styleUrls: ["../../hide-host.scss"]
2035
+ }]
2036
+ }], propDecorators: { element: [{
2037
+ type: Input
2038
+ }] } });
2039
+ AngularComponentFactory.Instance.registerComponent("sv-skeleton", SkeletonComponent);
2040
+
2041
+ class ListItemComponent extends BaseAngular {
2042
+ get ariaSelected() {
2043
+ return this.listModel.isItemSelected(this.model) || "";
2044
+ }
2045
+ get class() {
2046
+ return this.listModel.getItemClass(this.model);
2047
+ }
2048
+ get paddingLeft() {
2049
+ return this.listModel.getItemIndent(this.model);
2050
+ }
2051
+ click(event) {
2052
+ this.listModel.onItemClick(this.model);
2053
+ event.stopPropagation();
2054
+ }
2055
+ pointerdown(event) {
2056
+ this.listModel.onPointerDown(event, this.model);
2057
+ }
2058
+ getModel() {
2059
+ return this.model;
2060
+ }
2061
+ ngAfterViewInit() {
2062
+ this.listModel.onLastItemRended(this.model);
2063
+ }
2064
+ }
2065
+ ListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2066
+ ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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\" [attr.aria-selected]=\"ariaSelected\" (click)=\"click($event)\" (pointerdown)=\"pointerdown($event)\">\n <ng-container *ngIf=\"model.needSeparator\">\n <div [class]=\"listModel.cssClasses.itemSeparator\"></div>\n </ng-container>\n <div [class]=\"listModel.cssClasses.itemBody\" [style.paddingInlineStart]=\"paddingLeft\">\n <ng-container *ngIf=\"!model.component\">\n <svg *ngIf=\"model.iconName\" [class]=\"listModel.cssClasses.itemIcon\" [iconName]=\"model.iconName\" [size]=\"24\"\n sv-ng-svg-icon></svg>\n <sv-ng-string [model]=\"model.locTitle\"></sv-ng-string>\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 </div>\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"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListItemComponent, decorators: [{
2068
+ type: Component,
2069
+ args: [{
2070
+ selector: "sv-ng-list-item, '[sv-ng-list-item]'",
2071
+ templateUrl: "./list-item.component.html",
2072
+ styleUrls: ["../../hide-host.scss"],
2073
+ }]
2074
+ }], propDecorators: { element: [{
2075
+ type: Input
2076
+ }], model: [{
2077
+ type: Input
2078
+ }], listModel: [{
2079
+ type: Input
2080
+ }] } });
2081
+ AngularComponentFactory.Instance.registerComponent("sv-list-item", ListItemComponent);
2082
+
2083
+ class ListComponent extends BaseAngular {
2084
+ constructor() {
2085
+ super(...arguments);
2086
+ this.trackItemBy = (_, item) => {
2087
+ return item.id;
2088
+ };
2089
+ }
2090
+ getModel() {
2091
+ return this.model;
2092
+ }
2093
+ onGoToItems(event) {
2094
+ this.model.goToItems(event);
2095
+ }
2096
+ onMouseDown(event) {
2097
+ event.preventDefault();
2098
+ }
2099
+ onKeyDown(event) {
2100
+ this.model.onKeyDown(event);
2101
+ }
2102
+ onMouseMove(event) {
2103
+ this.model.onMouseMove(event);
2104
+ }
2105
+ ngAfterViewInit() {
2106
+ var _a;
2107
+ if (!!((_a = this.listContainerElement) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
2108
+ this.model.initListContainerHtmlElement(this.listContainerElement.nativeElement);
2109
+ }
2110
+ }
2111
+ }
2112
+ ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2113
+ ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ListComponent, selector: "sv-ng-list, '[sv-ng-list]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "listContainerElement", first: true, predicate: ["listContainerElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.root\" #listContainerElement>\n <div *ngIf=\"model.showFilter\" [class]=\"model.cssClasses.filter\">\n <div [class]=\"model.cssClasses.filterIcon\">\n <svg [iconName]=\"'icon-search'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" [class]=\"model.cssClasses.filterInput\" [(ngModel)]=\"model.filterString\"\n [attr.aria-label]=\"model.filterStringPlaceholder || ''\"\n [attr.placeholder]=\"model.filterStringPlaceholder || ''\" \n (keyup)=\"onGoToItems($event)\" />\n <button *ngIf=\"model.showSearchClearButton && !!model.filterString\" (click)=\"model.onClickSearchClearButton($event)\" [class]=\"model.cssClasses.searchClearButtonIcon\">\n <svg [iconName]=\"'icon-searchclear'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n </div>\n <div [class]=\"model.cssClasses.emptyContainer\" [visible]=\"model.isEmpty\">\n <div [class]=\"model.cssClasses.emptyText\" [attr.aria-label]=\"model.emptyMessage || ''\">{{ model.emptyMessage }}</div>\n </div>\n <ul [class]=\"model.cssClasses.itemsContainer\" role=\"listbox\" [visible]=\"!model.isEmpty\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\" (mousemove)=\"onMouseMove($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions; trackBy: trackItemBy\" [listModel]=\"model\" [model]=\"item\"></sv-ng-list-item>\n <!--ko foreach: model.renderedActions -->\n <!-- ko component: { name: 'sv-list-item', params: { item: $data, model: $parent.model } } -->\n <!-- /ko -->\n <!-- /ko -->\n </ul>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: ListItemComponent, selector: "sv-ng-list-item, '[sv-ng-list-item]'", inputs: ["element", "model", "listModel"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, decorators: [{
2115
+ type: Component,
2116
+ args: [{
2117
+ selector: "sv-ng-list, '[sv-ng-list]'",
2118
+ templateUrl: "./list.component.html",
2119
+ styleUrls: ["../../hide-host.scss"]
2120
+ }]
2121
+ }], propDecorators: { model: [{
2122
+ type: Input
2123
+ }], listContainerElement: [{
2124
+ type: ViewChild,
2125
+ args: ["listContainerElement"]
2126
+ }] } });
2127
+ AngularComponentFactory.Instance.registerComponent("sv-list", ListComponent);
2128
+
2129
+ class RatingItemComponent extends BaseAngular {
2130
+ onClick(event) {
2131
+ this.model.setValueFromClick(event.target.value);
2132
+ event.stopPropagation();
2133
+ }
2134
+ getModel() {
2135
+ return this.model;
2136
+ }
2137
+ }
2138
+ RatingItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2139
+ RatingItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RatingItemComponent, selector: "sv-ng-rating-item", inputs: { element: "element", model: "model", item: "item", index: "index" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <label [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</ng-template>", styles: [":host{display:none}\n"], components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }] });
2140
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingItemComponent, decorators: [{
2141
+ type: Component,
2142
+ args: [{
2143
+ selector: "sv-ng-rating-item",
2144
+ templateUrl: "./rating-item.component.html",
2145
+ styleUrls: ["../../hide-host.scss"],
2146
+ }]
2147
+ }], propDecorators: { element: [{
2148
+ type: Input
2149
+ }], model: [{
2150
+ type: Input
2151
+ }], item: [{
2152
+ type: Input
2153
+ }], index: [{
2154
+ type: Input
2155
+ }] } });
2156
+ AngularComponentFactory.Instance.registerComponent("sv-rating-item", RatingItemComponent);
2157
+
2158
+ class RatingDropdownComponent {
2159
+ }
2160
+ RatingDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2161
+ RatingDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
2162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RatingDropdownComponent, decorators: [{
2163
+ type: Component,
2164
+ args: [{
2165
+ selector: "sv-ng-rating-dropdown-question",
2166
+ templateUrl: "./rating-dropdown.component.html"
2167
+ }]
2168
+ }], propDecorators: { model: [{
2169
+ type: Input
2170
+ }] } });
2171
+ AngularComponentFactory.Instance.registerComponent("rating-dropdown-question", RatingDropdownComponent);
2172
+ RendererFactory.Instance.registerRenderer("rating", "dropdown", "rating-dropdown-question");
2173
+
2174
+ class BooleanCheckboxComponent {
2175
+ }
2176
+ BooleanCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2177
+ BooleanCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanCheckboxComponent, selector: "sv-ng-boolean-checkbox-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootCheckbox\">\n <div [class]=\"model.getCheckboxItemCss()\">\n <label [class]=\"model.cssClasses.checkboxLabel\">\n <input\n type=\"checkbox\"\n [value]=\"model.booleanValue\" [class]=\"model.cssClasses.controlCheckbox\" \n [attr.name]=\"model.name\" [id]=\"model.inputId\" [attr.aria-required]=\"model.ariaRequired\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-describedby]=\"model.ariaDescribedBy\" [(ngModel)]=\"model.booleanValue\" [value]=\"model.booleanValue\"\n [disabled]=\"model.isInputReadOnly\" [indeterminate]=\"model.isIndeterminate\"\n />\n <span [class]=\"model.cssClasses.checkboxMaterialDecorator\">\n <svg *ngIf=\"!!model.svgIcon\" [class]=\"model.cssClasses.checkboxItemDecorator\">\n <use [attr.xlink:href]=\"model.svgIcon\"></use>\n </svg>\n <span class=\"check\"></span>\n </span>\n <span *ngIf=\"model.isLabelRendered\" [class]=\"model.cssClasses.checkboxControlLabel\" [id]=\"model.labelRenderedAriaID\">\n <sv-ng-element-title-actions [element]=\"model\"></sv-ng-element-title-actions>\n </span>\n </label>\n <div *ngIf=\"model.canRenderLabelDescription\" [class]=\"model.cssDescription\" [model]=\"model.locDescription\" sv-ng-string></div>\n </div>\n</div>", components: [{ type: ElementTitleActionsComponent, selector: "sv-ng-element-title-actions", inputs: ["element"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanCheckboxComponent, decorators: [{
2179
+ type: Component,
2180
+ args: [{
2181
+ selector: "sv-ng-boolean-checkbox-question",
2182
+ templateUrl: "./boolean-checkbox.component.html"
2183
+ }]
2184
+ }], propDecorators: { model: [{
2185
+ type: Input
2186
+ }] } });
2187
+ AngularComponentFactory.Instance.registerComponent("boolean-checkbox-question", BooleanCheckboxComponent);
2188
+ RendererFactory.Instance.registerRenderer("boolean", "checkbox", "boolean-checkbox-question");
2189
+
2190
+ class BooleanRadioItemComponent {
2191
+ constructor() {
2192
+ }
2193
+ }
2194
+ BooleanRadioItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2195
+ BooleanRadioItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: { question: "question", value: "value", locText: "locText" }, ngImport: i0, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-describedby]=\"question.ariaDescribedBy\" [value]=\"value\" [(ngModel)]=\"question.booleanValue\"\n [disabled]=\"question.isInputReadOnly\" [class]=\"question.cssClasses.itemRadioControl || ''\"\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: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioItemComponent, decorators: [{
2197
+ type: Component,
2198
+ args: [{
2199
+ selector: "sv-ng-boolean-radio-item",
2200
+ templateUrl: "boolean-radio-item.component.html",
2201
+ }]
2202
+ }], ctorParameters: function () { return []; }, propDecorators: { question: [{
2203
+ type: Input
2204
+ }], value: [{
2205
+ type: Input
2206
+ }], locText: [{
2207
+ type: Input
2208
+ }] } });
2209
+
2210
+ class BooleanRadioComponent {
2211
+ }
2212
+ BooleanRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2213
+ BooleanRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item [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"] }] });
2214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BooleanRadioComponent, decorators: [{
2215
+ type: Component,
2216
+ args: [{
2217
+ selector: "sv-ng-boolean-radio-question",
2218
+ templateUrl: "./boolean-radio.component.html"
2219
+ }]
2220
+ }], propDecorators: { model: [{
2221
+ type: Input
2222
+ }] } });
2223
+ AngularComponentFactory.Instance.registerComponent("boolean-radio-question", BooleanRadioComponent);
2224
+ RendererFactory.Instance.registerRenderer("boolean", "radio", "boolean-radio-question");
2225
+
2226
+ class ProgressDefaultComponent extends EmbeddedViewContentComponent {
2227
+ getProgressTextInBarCss(css) {
2228
+ return SurveyProgressModel.getProgressTextInBarCss(css);
2229
+ }
2230
+ getProgressTextUnderBarCss(css) {
2231
+ return SurveyProgressModel.getProgressTextUnderBarCss(css);
2232
+ }
2233
+ }
2234
+ ProgressDefaultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressDefaultComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2235
+ ProgressDefaultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressDefaultComponent, selector: "sv-ng-progress-default", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.getProgressCssClasses()\">\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>" });
2236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressDefaultComponent, decorators: [{
2237
+ type: Component,
2238
+ args: [{
2239
+ selector: "sv-ng-progress-default",
2240
+ templateUrl: "./progress.component.html"
2241
+ }]
2242
+ }], propDecorators: { model: [{
2243
+ type: Input
2244
+ }] } });
2245
+ AngularComponentFactory.Instance.registerComponent("sv-progress-progress", ProgressDefaultComponent);
2246
+ AngularComponentFactory.Instance.registerComponent("sv-progress-pages", ProgressDefaultComponent);
2247
+ AngularComponentFactory.Instance.registerComponent("sv-progress-questions", ProgressDefaultComponent);
2248
+ AngularComponentFactory.Instance.registerComponent("sv-progress-correctQuestions", ProgressDefaultComponent);
2249
+ AngularComponentFactory.Instance.registerComponent("sv-progress-requiredQuestions", ProgressDefaultComponent);
2250
+
2251
+ class ProgressButtonsComponent {
2252
+ constructor(changeDetectorRef) {
2253
+ this.changeDetectorRef = changeDetectorRef;
2254
+ this.hasScroller = false;
2255
+ this.updateScroller = undefined;
2256
+ }
2257
+ createProgressButtonsModel() {
2258
+ this.progressButtonsModel = new SurveyProgressButtonsModel(this.model);
2259
+ }
2260
+ ngOnInit() {
2261
+ this.createProgressButtonsModel();
2262
+ }
2263
+ ngOnChanges(changes) {
2264
+ this.createProgressButtonsModel();
2265
+ }
2266
+ isListElementClickable(index) {
2267
+ return this.progressButtonsModel.isListElementClickable(index);
2268
+ }
2269
+ getListElementCss(index) {
2270
+ return this.progressButtonsModel.getListElementCss(index);
2271
+ }
2272
+ clickListElement(index) {
2273
+ this.progressButtonsModel.clickListElement(index);
2274
+ }
2275
+ getScrollButtonCss(isLeftScroll) {
2276
+ return this.progressButtonsModel.getScrollButtonCss(this.hasScroller, isLeftScroll);
2277
+ }
2278
+ clickScrollButton(isLeftScroll) {
2279
+ if (this.progressButtonsListContainer) {
2280
+ this.progressButtonsListContainer.nativeElement.scrollLeft += (isLeftScroll ? -1 : 1) * 70;
2281
+ }
2282
+ }
2283
+ ngAfterViewInit() {
2284
+ this.progressButtonsModel = new SurveyProgressButtonsModel(this.model);
2285
+ this.updateScroller = setInterval(() => {
2286
+ var _a;
2287
+ if (!!((_a = this.progressButtonsListContainer) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
2288
+ const listContainerElement = this.progressButtonsListContainer.nativeElement;
2289
+ this.hasScroller = listContainerElement.scrollWidth > listContainerElement.offsetWidth;
2290
+ this.changeDetectorRef.detectChanges();
2291
+ }
2292
+ }, 100);
2293
+ }
2294
+ ngOnDestroy() {
2295
+ if (typeof this.updateScroller !== "undefined") {
2296
+ clearInterval(this.updateScroller);
2297
+ this.updateScroller = undefined;
2298
+ }
2299
+ }
2300
+ }
2301
+ ProgressButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2302
+ ProgressButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProgressButtonsComponent, decorators: [{
2304
+ type: Component,
2305
+ args: [{
2306
+ selector: "sv-ng-progress-buttons",
2307
+ templateUrl: "./progress.component.html"
2308
+ }]
2309
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { model: [{
2310
+ type: Input
2311
+ }], progressButtonsListContainer: [{
2312
+ type: ViewChild,
2313
+ args: ["progressButtonsListContainer"]
2314
+ }] } });
2315
+ AngularComponentFactory.Instance.registerComponent("sv-progress-buttons", ProgressButtonsComponent);
2316
+
2317
+ class PanelComponent extends BaseAngular {
2318
+ constructor() {
2319
+ super(...arguments);
2320
+ this.trackRowBy = (_, row) => {
2321
+ return row.id;
2322
+ };
2323
+ }
2324
+ getModel() {
2325
+ return this.model;
2326
+ }
2327
+ ngAfterViewInit() {
2328
+ var _a, _b;
2329
+ if (!!((_a = this.panelContainerRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
2330
+ (_b = this.model.survey) === null || _b === void 0 ? void 0 : _b.afterRenderPanel(this.model, this.panelContainerRef.nativeElement);
2331
+ }
2332
+ }
2333
+ }
2334
+ PanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2335
+ PanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 && 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 <ng-template [component]=\"{ name: $any(model.survey).getRowWrapperComponentName(row), data: { componentData: $any(model.survey).getRowWrapperComponentData(row) } }\">\n <sv-ng-row [row]=\"row\"></sv-ng-row>\n </ng-template>\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelComponent, decorators: [{
2337
+ type: Component,
2338
+ args: [{
2339
+ selector: "sv-ng-panel, '[sv-ng-panel]'",
2340
+ templateUrl: "./panel.component.html",
2341
+ }]
2342
+ }], propDecorators: { model: [{
2343
+ type: Input
2344
+ }], panelContainerRef: [{
2345
+ type: ViewChild,
2346
+ args: ["panelContainer", { static: false, read: ElementRef }]
2347
+ }] } });
2348
+ AngularComponentFactory.Instance.registerComponent("panel", PanelComponent);
2349
+
2350
+ class SurveyNavigationButton {
2351
+ getModel() {
2352
+ return this.model;
2353
+ }
2354
+ buttonMouseDown() {
2355
+ return this.model.data && this.model.data.mouseDown();
2356
+ }
2357
+ }
2358
+ SurveyNavigationButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyNavigationButton, deps: [], target: i0.ɵɵFactoryTarget.Component });
2359
+ SurveyNavigationButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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()\" [disabled]=\"model.disabled\" [attr.title]=\"model.getTooltip()\"/>", styles: [":host { display: contents; }"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2360
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyNavigationButton, decorators: [{
2361
+ type: Component,
2362
+ args: [{
2363
+ templateUrl: "./survey-nav-btn.component.html",
2364
+ selector: "sv-ng-nav-btn",
2365
+ styles: [":host { display: contents; }"]
2366
+ }]
2367
+ }], propDecorators: { model: [{
2368
+ type: Input
2369
+ }] } });
2370
+ AngularComponentFactory.Instance.registerComponent("sv-nav-btn", SurveyNavigationButton);
2371
+
2372
+ class MatrixQuestionComponent extends QuestionAngular {
2373
+ ngOnInit() {
2374
+ this.model.visibleRowsChangedCallback = () => {
2375
+ this.detectChanges();
2376
+ };
2377
+ super.ngOnInit();
2378
+ }
2379
+ onChange(row, column) {
2380
+ if (this.model.isInputReadOnly)
2381
+ return;
2382
+ row.value = column.value;
2383
+ this.detectChanges();
2384
+ }
2385
+ trackRowByFn(i, row) {
2386
+ return "column-" + row.name + "-" + i;
2387
+ }
2388
+ trackColumnByFn(i, column) {
2389
+ return "column-" + column.value + "-" + i;
2390
+ }
2391
+ }
2392
+ MatrixQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2393
+ MatrixQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 *ngIf=\"model.hasRows\"></td>\n <th\n *ngFor=\"let column of model.visibleColumns\" [style]=\"{ minWidth: model.columnMinWidth, width: model.columnMinWidth }\" [class]=\"model.cssClasses.headerCell\">\n <ng-template [component]=\"{ name: model.getColumnHeaderWrapperComponentName(column), data: { componentData: model.getColumnHeaderWrapperComponentData(column) } }\">\n <sv-ng-string [model]=\"column.locText\"></sv-ng-string>\n </ng-template>\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\" [style]=\"{ minWidth: model.rowTitleWidth, width: model.rowTitleWidth }\" *ngIf=\"model.hasRows\">\n <ng-template [component]=\"{ name: model.getRowHeaderWrapperComponentName($any(row)), data: { componentData: model.getRowHeaderWrapperComponentData($any(row)) } }\">\n <sv-ng-string [model]=\"row.locText\"></sv-ng-string>\n </ng-template>\n </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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
2394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixQuestionComponent, decorators: [{
2395
+ type: Component,
2396
+ args: [{
2397
+ selector: "sv-ng-matrix-question",
2398
+ templateUrl: "./matrix.component.html",
2399
+ styleUrls: ["../hide-host.scss"]
2400
+ }]
2401
+ }] });
2402
+ AngularComponentFactory.Instance.registerComponent("matrix-question", MatrixQuestionComponent);
2403
+
2404
+ class FileQuestionComponent extends QuestionAngular {
2405
+ constructor() {
2406
+ super(...arguments);
2407
+ this.trackFilesFn = (index) => {
2408
+ return this.model.inputId + "_" + index;
2409
+ };
2410
+ }
2411
+ }
2412
+ FileQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2413
+ FileQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 tabindex=\"-1\"\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.id]=\"model.inputId\"\n [attr.multiple]=\"model.multipleRendered\"\n [attr.placeholder]=\"model.title\"\n style=\"color: transparent\"\n />\n <div [class]=\"model.cssClasses.dragArea\"\n (dragenter)=\"model.onDragEnter($event)\"\n (drop)=\"model.onDrop($event)\"\n (dragover)=\"model.onDragOver($event)\"\n (dragleave)=\"model.onDragLeave($event)\"> \n <div\n [class]=\"model.getFileDecoratorCss()\"\n >\n <span [class]=\"model.cssClasses.dragAreaPlaceholder\">{{ model.dragAreaPlaceholder }}</span>\n <div [class]=\"model.cssClasses.wrapper\">\n <label\n role=\"button\"\n tabindex=\"0\"\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.clearButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" [title]=\"model.clearButtonCaption\" 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 [style.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 [style.height]=\"model.imageHeight\"\n [style.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 [style.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.clearButtonCaption }}</span>\n <svg *ngIf=\"model.cssClasses.removeButtonIconId\" [iconName]=\"model.cssClasses.removeButtonIconId\" [size]=\"'auto'\" [title]=\"model.clearButtonCaption\" sv-ng-svg-icon></svg>\n </button>\n <sv-action-bar *ngIf=\"model.mobileFileNavigatorVisible\" [model]=\"model.mobileFileNavigator\"></sv-action-bar>\n </div>\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }], pipes: { "safeUrl": SafeUrlPipe } });
2414
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: FileQuestionComponent, decorators: [{
2415
+ type: Component,
2416
+ args: [{
2417
+ selector: "sv-ng-file-question",
2418
+ templateUrl: "./file.component.html",
2419
+ styleUrls: []
2420
+ }]
2421
+ }] });
2422
+ AngularComponentFactory.Instance.registerComponent("file-question", FileQuestionComponent);
2423
+
2424
+ class CommentQuestionComponent extends QuestionAngular {
2425
+ onChange(event) {
2426
+ this.model.value = event.target.value;
2427
+ }
2428
+ }
2429
+ CommentQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2430
+ CommentQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: CommentQuestionComponent, selector: "sv-ng-question-comment", usesInheritance: true, ngImport: i0, template: "<textarea\n*ngIf=\"!model.isReadOnlyRenderDiv()\"\n[readonly]=\"model.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<sv-ng-character-counter *ngIf=\"!model.isReadOnlyRenderDiv() && model.getMaxLength()\" \n[counter]=\"model.characterCounter\"\n[remainingCharacterCounter]=\"model.cssClasses.remainingCharacterCounter\">\n</sv-ng-character-counter>\n<div *ngIf=\"model.isReadOnlyRenderDiv()\" #contentElement>{{ model.value }}</div>", components: [{ type: CharacterCounterComponent, selector: "sv-ng-character-counter", inputs: ["counter", "remainingCharacterCounter"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2431
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CommentQuestionComponent, decorators: [{
2432
+ type: Component,
2433
+ args: [{
2434
+ templateUrl: "./comment.component.html",
2435
+ selector: "sv-ng-question-comment"
2436
+ }]
2437
+ }] });
2438
+ AngularComponentFactory.Instance.registerComponent("comment-question", CommentQuestionComponent);
2439
+
2440
+ class SignaturePadQuestionComponent extends QuestionAngular {
2441
+ }
2442
+ SignaturePadQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SignaturePadQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2443
+ SignaturePadQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SignaturePadQuestionComponent, decorators: [{
2445
+ type: Component,
2446
+ args: [{
2447
+ selector: "sv-ng-signature-component",
2448
+ templateUrl: "./signature.component.html"
2449
+ }]
2450
+ }] });
2451
+ AngularComponentFactory.Instance.registerComponent("signaturepad-question", SignaturePadQuestionComponent);
2452
+
2453
+ class MultipleTextItemComponent extends BaseAngular {
2454
+ getModel() {
2455
+ return this.model.editor;
2456
+ }
2457
+ }
2458
+ MultipleTextItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2459
+ MultipleTextItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2460
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextItemComponent, decorators: [{
2461
+ type: Component,
2462
+ args: [{
2463
+ selector: "'[sv-ng-multipletext-item]'",
2464
+ templateUrl: "./mutlipletextitem.component.html"
2465
+ }]
2466
+ }], propDecorators: { question: [{
2467
+ type: Input
2468
+ }], model: [{
2469
+ type: Input
2470
+ }] } });
2471
+
2472
+ class MultipleTextComponent extends QuestionAngular {
2473
+ constructor() {
2474
+ super(...arguments);
2475
+ this.trackRowBy = (index) => {
2476
+ return this.model.inputId + "rowkey" + index;
2477
+ };
2478
+ }
2479
+ trackItemBy(_, item) {
2480
+ return "item" + item.editor.id;
2481
+ }
2482
+ }
2483
+ MultipleTextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2484
+ MultipleTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MultipleTextComponent, decorators: [{
2486
+ type: Component,
2487
+ args: [{
2488
+ selector: "sv-ng-multipletext-question",
2489
+ templateUrl: "./multipletext.component.html"
2490
+ }]
2491
+ }] });
2492
+ AngularComponentFactory.Instance.registerComponent("multipletext-question", MultipleTextComponent);
2493
+
2494
+ class RankingQuestionComponent extends SelectBaseComponent {
2495
+ constructor() {
2496
+ super(...arguments);
2497
+ this.inputType = "";
2498
+ this.trackItemBy = (index, item) => {
2499
+ return item.value + "-" + index + "-item";
2500
+ };
2501
+ }
2502
+ getDefaultComponentName() {
2503
+ return "sv-ng-ranking-item";
2504
+ }
2505
+ getItemValueComponentData(item, index) {
2506
+ const res = super.getItemValueComponentData(item);
2507
+ res.componentData.index = index;
2508
+ return res;
2509
+ }
2510
+ }
2511
+ RankingQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RankingQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2512
+ RankingQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RankingQuestionComponent, selector: "sv-ng-ranking-question", usesInheritance: true, ngImport: i0, template: "<div [class]=\"model.rootClass\" #contentElement>\n <ng-container *ngFor=\"let item of model.rankingChoices; index as index; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item, index) }\"></ng-template>\n </ng-container>\n</div>", directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2513
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RankingQuestionComponent, decorators: [{
2514
+ type: Component,
2515
+ args: [{
2516
+ selector: "sv-ng-ranking-question",
2517
+ templateUrl: "./ranking.component.html",
2518
+ }]
2519
+ }] });
2520
+ AngularComponentFactory.Instance.registerComponent("ranking-question", RankingQuestionComponent);
2521
+
2522
+ class RankingItemComponent extends BaseAngular {
2523
+ getModel() {
2524
+ return this.model;
2525
+ }
2526
+ }
2527
+ RankingItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RankingItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2528
+ RankingItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: RankingItemComponent, selector: "sv-ng-ranking-item", inputs: { question: "question", model: "model", index: "index" }, usesInheritance: true, ngImport: i0, template: "\n\n\n<div [attr.tabindex]=\"question.getItemTabIndex(model)\" [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.getItemIndexClasses()\">{{ 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"] }] });
2529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RankingItemComponent, decorators: [{
2530
+ type: Component,
2531
+ args: [{
2532
+ selector: "sv-ng-ranking-item",
2533
+ templateUrl: "./ranking-item.component.html"
2534
+ }]
2535
+ }], propDecorators: { question: [{
2536
+ type: Input
2537
+ }], model: [{
2538
+ type: Input
2539
+ }], index: [{
2540
+ type: Input
2541
+ }] } });
2542
+ AngularComponentFactory.Instance.registerComponent("sv-ng-ranking-item", RankingItemComponent);
2543
+
2544
+ class StringEditorComponent {
2545
+ constructor() {
2546
+ this.onInput = (event) => {
2547
+ this.model.text = event.target.innerText;
2548
+ };
2549
+ this.onClick = (event) => {
2550
+ event.preventDefault();
2551
+ event.stopPropagation();
2552
+ };
2553
+ }
2554
+ }
2555
+ StringEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StringEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2556
+ StringEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: StringEditorComponent, selector: "sv-ng-string-editor", inputs: { model: "model" }, ngImport: i0, template: "<span\n class=\"sv-string-editor\"\n contenteditable=\"true\"\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 *ngIf=\"!model.hasHtml\"\n (blur)=\"onInput($event)\"\n (click)=\"onClick($event)\"\n >{{ model.renderedHtml }}</span\n>\n", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: StringEditorComponent, decorators: [{
2558
+ type: Component,
2559
+ args: [{
2560
+ selector: "sv-ng-string-editor",
2561
+ templateUrl: "./string-editor.component.html"
2562
+ }]
2563
+ }], propDecorators: { model: [{
2564
+ type: Input
2565
+ }] } });
2566
+ AngularComponentFactory.Instance.registerComponent(LocalizableString.editableRenderer, StringEditorComponent);
2567
+
2568
+ class PaneldynamicAction {
2569
+ get question() {
2570
+ return (this.model && this.model.data.question) || this.data.question;
2571
+ }
2572
+ }
2573
+ PaneldynamicAction.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PaneldynamicAction, deps: [], target: i0.ɵɵFactoryTarget.Component });
2574
+ PaneldynamicAction.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PaneldynamicAction, selector: "ng-component", inputs: { data: "data", model: "model" }, ngImport: i0, template: "", isInline: true });
2575
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PaneldynamicAction, decorators: [{
2576
+ type: Component,
2577
+ args: [{
2578
+ selector: "",
2579
+ template: ""
2580
+ }]
2581
+ }], propDecorators: { data: [{
2582
+ type: Input
2583
+ }], model: [{
2584
+ type: Input
2585
+ }] } });
2586
+ class PanelDynamicAddBtn extends PaneldynamicAction {
2587
+ addPanelClick() {
2588
+ this.question.addPanelUI();
2589
+ }
2590
+ }
2591
+ PanelDynamicAddBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicAddBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
2592
+ PanelDynamicAddBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" *ngIf=\"question.canAddPanel\" [class]=\"question.getAddButtonCss()\" (click)=\"addPanelClick()\">\n<span [class]=\"question.cssClasses.buttonAddText\">{{question.panelAddText}}</span>\n</button>", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2593
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicAddBtn, decorators: [{
2594
+ type: Component,
2595
+ args: [{
2596
+ selector: "sv-ng-paneldynamic-add-btn",
2597
+ templateUrl: "./paneldynamic-add-btn.component.html"
2598
+ }]
2599
+ }] });
2600
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-add-btn", PanelDynamicAddBtn);
2601
+
2602
+ class PanelDynamicNextBtn extends PaneldynamicAction {
2603
+ nextPanelClick() {
2604
+ this.question.goToNextPanel();
2605
+ }
2606
+ }
2607
+ PanelDynamicNextBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicNextBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
2608
+ PanelDynamicNextBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
2609
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicNextBtn, decorators: [{
2610
+ type: Component,
2611
+ args: [{
2612
+ selector: "sv-ng-paneldynamic-next-btn",
2613
+ templateUrl: "./paneldynamic-next-btn.component.html"
2614
+ }]
2615
+ }] });
2616
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-next-btn", PanelDynamicNextBtn);
2617
+
2618
+ class PanelDynamicPrevBtn extends PaneldynamicAction {
2619
+ prevPanelClick() {
2620
+ this.question.goToPrevPanel();
2621
+ }
2622
+ }
2623
+ PanelDynamicPrevBtn.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicPrevBtn, deps: null, target: i0.ɵɵFactoryTarget.Component });
2624
+ PanelDynamicPrevBtn.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
2625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicPrevBtn, decorators: [{
2626
+ type: Component,
2627
+ args: [{
2628
+ selector: "sv-ng-paneldynamic-prev-btn",
2629
+ templateUrl: "./paneldynamic-prev-btn.component.html"
2630
+ }]
2631
+ }] });
2632
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-prev-btn", PanelDynamicPrevBtn);
2633
+
2634
+ class PaneldynamicRemoveButtonComponent extends PaneldynamicAction {
2635
+ get panel() {
2636
+ return (this.data ? this.data : this.model.data).panel;
2637
+ }
2638
+ }
2639
+ PaneldynamicRemoveButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PaneldynamicRemoveButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2640
+ PaneldynamicRemoveButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PaneldynamicRemoveButtonComponent, selector: "sv-ng-paneldynamic-remove-btn", usesInheritance: true, ngImport: i0, template: "<button type=\"button\" (click)=\"question.removePanelUI(panel)\" [class]=\"question.getPanelRemoveButtonCss()\"> \n <span [class]=\"question.cssClasses.buttonRemoveText\">{{question.panelRemoveText}}</span>\n <span [class]=\"question.cssClasses.iconRemove\"></span>\n</button>\n" });
2641
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PaneldynamicRemoveButtonComponent, decorators: [{
2642
+ type: Component,
2643
+ args: [{
2644
+ selector: "sv-ng-paneldynamic-remove-btn",
2645
+ templateUrl: "./paneldynamic-remove-btn.component.html"
2646
+ }]
2647
+ }] });
2648
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-remove-btn", PaneldynamicRemoveButtonComponent);
2649
+
2650
+ class PanelDynamicProgressText extends PaneldynamicAction {
2651
+ }
2652
+ PanelDynamicProgressText.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicProgressText, deps: null, target: i0.ɵɵFactoryTarget.Component });
2653
+ PanelDynamicProgressText.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicProgressText, selector: "sv-ng-paneldynamic-progress-text", usesInheritance: true, ngImport: i0, template: "<div [class]=\"question.cssClasses.progressText\">{{ question.progressText }}</div>\n" });
2654
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicProgressText, decorators: [{
2655
+ type: Component,
2656
+ args: [{
2657
+ selector: "sv-ng-paneldynamic-progress-text",
2658
+ templateUrl: "./paneldynamic-progress-text.component.html"
2659
+ }]
2660
+ }] });
2661
+ AngularComponentFactory.Instance.registerComponent("sv-paneldynamic-progress-text", PanelDynamicProgressText);
2662
+
2663
+ class PanelDynamicQuestionComponent extends QuestionAngular {
2664
+ get renderedPanels() {
2665
+ if (this.model.isRenderModeList)
2666
+ return this.model.panels;
2667
+ const panels = [];
2668
+ if (this.model.currentPanel) {
2669
+ panels.push(this.model.currentPanel);
2670
+ }
2671
+ return panels;
2672
+ }
2673
+ onModelChanged() {
2674
+ super.onModelChanged();
2675
+ this.model.panelCountChangedCallback = () => {
2676
+ this.detectChanges();
2677
+ };
2678
+ this.model.currentIndexChangedCallback = () => {
2679
+ this.detectChanges();
2680
+ };
2681
+ this.model.renderModeChangedCallback = () => {
2682
+ this.detectChanges();
2683
+ };
2684
+ }
2685
+ get progressCssClass() {
2686
+ return this.model.isProgressTopShowing
2687
+ ? this.model.cssClasses.progressTop
2688
+ : this.model.cssClasses.progressBottom;
2689
+ }
2690
+ ngOnDestroy() {
2691
+ this.model.panelCountChangedCallback = () => { };
2692
+ this.model.currentIndexChangedCallback = () => { };
2693
+ this.model.renderModeChangedCallback = () => { };
2694
+ super.ngOnDestroy();
2695
+ }
2696
+ getPanelComponentName(panel) {
2697
+ const survey = this.surveyModel;
2698
+ if (!!survey) {
2699
+ const name = survey.getElementWrapperComponentName(panel);
2700
+ if (!!name) {
2701
+ return name;
2702
+ }
2703
+ }
2704
+ return "panel";
2705
+ }
2706
+ getPanelComponentData(panel) {
2707
+ const survey = this.surveyModel;
2708
+ let data;
2709
+ if (!!survey) {
2710
+ data = survey.getElementWrapperComponentData(panel);
2711
+ }
2712
+ return {
2713
+ componentName: "panel",
2714
+ componentData: {
2715
+ model: panel,
2716
+ data: data
2717
+ }
2718
+ };
2719
+ }
2720
+ }
2721
+ PanelDynamicQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2722
+ PanelDynamicQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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 <ng-template [component]=\"{ name: getPanelComponentName(panel), data: getPanelComponentData(panel) }\"></ng-template>\n <ng-container *ngIf=\"model.panelRemoveButtonLocation ==='right'\">\n <sv-ng-paneldynamic-remove-btn *ngIf=\"model.canRemovePanel && panel.state != 'collapsed' && model.panelRemoveButtonLocation == 'right'\" [data]=\"{ panel: panel, question: model }\"></sv-ng-paneldynamic-remove-btn>\n </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 *ngIf=\"model.footerToolbar.visibleActions.length\" [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>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: PanelDynamicAddBtn, selector: "sv-ng-paneldynamic-add-btn" }, { type: PaneldynamicRemoveButtonComponent, selector: "sv-ng-paneldynamic-remove-btn" }, { 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2723
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PanelDynamicQuestionComponent, decorators: [{
2724
+ type: Component,
2725
+ args: [{
2726
+ selector: "sv-ng-paneldynamic-question",
2727
+ templateUrl: "./paneldynamic.component.html"
2728
+ }]
2729
+ }] });
2730
+ AngularComponentFactory.Instance.registerComponent("paneldynamic-question", PanelDynamicQuestionComponent);
2731
+
2732
+ class TemplateRendererComponent extends EmbeddedViewContentComponent {
2733
+ }
2734
+ TemplateRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2735
+ TemplateRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TemplateRendererComponent, selector: "sv-template-renderer", inputs: { componentName: "componentName", componentData: "componentData", contentTempl: "contentTempl" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <ng-container *ngIf=\"!!componentName\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!componentName && contentTempl\">\n <ng-container *ngTemplateOutlet=\"contentTempl\"></ng-container>\n </ng-container>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2736
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TemplateRendererComponent, decorators: [{
2737
+ type: Component,
2738
+ args: [{
2739
+ selector: "sv-template-renderer",
2740
+ templateUrl: "./template-renderer.component.html",
2741
+ styleUrls: ["./hide-host.scss"]
2742
+ }]
2743
+ }], propDecorators: { componentName: [{
2744
+ type: Input
2745
+ }], componentData: [{
2746
+ type: Input
2747
+ }], contentTempl: [{
2748
+ type: Input
2749
+ }] } });
2750
+ AngularComponentFactory.Instance.registerComponent(SurveyModel.TemplateRendererComponentName, TemplateRendererComponent);
2751
+
2752
+ class CustomWidgetComponent {
2753
+ get hasDefaultRender() {
2754
+ return this.model.customWidget.isDefaultRender || this.hasAngularComponent;
2755
+ }
2756
+ get hasHtml() {
2757
+ return this.model.customWidget.htmlTemplate ? true : false;
2758
+ }
2759
+ get customHtml() {
2760
+ return this.model.customWidget.htmlTemplate;
2761
+ }
2762
+ get hasAngularComponent() {
2763
+ return AngularComponentFactory.Instance.isComponentRegistered(this.model.customWidget.name);
2764
+ }
2765
+ get componentName() {
2766
+ if (this.hasAngularComponent)
2767
+ return this.model.customWidget.name;
2768
+ return this.model.getTemplate() + "-question";
2769
+ }
2770
+ ngAfterViewInit() {
2771
+ this.model.customWidget.afterRender(this.model, this.container.nativeElement);
2772
+ }
2773
+ ngOnChanges(simpleChanges) {
2774
+ if (simpleChanges["model"].previousValue !== undefined && simpleChanges["model"].currentValue !== undefined) {
2775
+ this.model.customWidget.afterRender(this.model, this.container.nativeElement);
2776
+ }
2777
+ }
2778
+ ngOnDestroy() {
2779
+ this.model.customWidget.willUnmount(this.model, this.container.nativeElement);
2780
+ }
2781
+ }
2782
+ CustomWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2783
+ CustomWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
2784
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomWidgetComponent, decorators: [{
2785
+ type: Component,
2786
+ args: [{
2787
+ templateUrl: "./customwidget.component.html",
2788
+ selector: "sv-ng-custom-widget"
2789
+ }]
2790
+ }], propDecorators: { css: [{
2791
+ type: Input
2792
+ }], model: [{
2793
+ type: Input
2794
+ }], container: [{
2795
+ type: ViewChild,
2796
+ args: ["content"]
2797
+ }] } });
2798
+ AngularComponentFactory.Instance.registerComponent("survey-customwidget", CustomWidgetComponent);
2799
+
2800
+ class MatrixDynamicDragDropIconComponent extends EmbeddedViewContentComponent {
2801
+ get question() {
2802
+ return this.model.data.question;
2803
+ }
2804
+ }
2805
+ MatrixDynamicDragDropIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicDragDropIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2806
+ MatrixDynamicDragDropIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicDragDropIconComponent, selector: "sv-ng-matrix-drag-drop-icon", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <svg *ngIf=\"question.iconDragElement\" [class]=\"question.cssClasses.dragElementDecorator\">\n <use [attr.xlink:href]=\"question.iconDragElement\"></use>\n </svg>\n <span *ngIf=\"!question.iconDragElement\" data-bind=\"css: question.cssClasses.iconDrag\"></span>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2807
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicDragDropIconComponent, decorators: [{
2808
+ type: Component,
2809
+ args: [{
2810
+ templateUrl: "drag-drop-icon.component.html",
2811
+ selector: "sv-ng-matrix-drag-drop-icon",
2812
+ styleUrls: ["../../../hide-host.scss"]
2813
+ }]
2814
+ }], propDecorators: { model: [{
2815
+ type: Input
2816
+ }] } });
2817
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-drag-drop-icon", MatrixDynamicDragDropIconComponent);
2818
+
2819
+ class MatrixCellComponent extends BaseAngular {
2820
+ constructor() {
2821
+ super(...arguments);
2822
+ this.isVisible = false;
2823
+ }
2824
+ getModel() {
2825
+ return this.cell.question;
2826
+ }
2827
+ get row() {
2828
+ return this.cell.row;
2829
+ }
2830
+ get panelComponentName() {
2831
+ const panel = this.cell.panel;
2832
+ const survey = panel.survey;
2833
+ if (!!survey) {
2834
+ const name = survey.getElementWrapperComponentName(panel);
2835
+ if (!!name) {
2836
+ return name;
2837
+ }
2838
+ }
2839
+ return "panel";
2840
+ }
2841
+ get panelComponentData() {
2842
+ const panel = this.cell.panel;
2843
+ const survey = panel.survey;
2844
+ let data;
2845
+ if (!!survey) {
2846
+ data = survey.getElementWrapperComponentData(panel);
2847
+ }
2848
+ return {
2849
+ componentName: "panel",
2850
+ componentData: {
2851
+ model: panel,
2852
+ data: data
2853
+ }
2854
+ };
2855
+ }
2856
+ getComponentName(element) {
2857
+ if (element.customWidget) {
2858
+ return "survey-customwidget";
2859
+ }
2860
+ return element.getType() + "-question";
2861
+ }
2862
+ getHeaders() {
2863
+ return this.cell.headers;
2864
+ }
2865
+ getCellStyle() {
2866
+ if (!!this.cell.width || !!this.cell.minWidth)
2867
+ return { width: this.cell.width, minWidth: this.cell.minWidth };
2868
+ return null;
2869
+ }
2870
+ ngAfterViewInit() {
2871
+ if (!this.cell.hasQuestion || !this.question || !this.question.survey)
2872
+ return;
2873
+ var options = {
2874
+ cell: this.cell.cell,
2875
+ cellQuestion: this.cell.question,
2876
+ htmlElement: this.cellContainer.nativeElement,
2877
+ row: this.cell.row,
2878
+ column: this.cell.cell.column,
2879
+ };
2880
+ this.question.survey.matrixAfterCellRender(this.question, options);
2881
+ }
2882
+ }
2883
+ MatrixCellComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixCellComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2884
+ MatrixCellComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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-ng-matrix-drag-drop-icon *ngIf=\"cell.isDragHandlerCell\" [model]=\"$any({ data: { row: row, question: question } })\"></sv-ng-matrix-drag-drop-icon>\n <sv-action-bar *ngIf=\"cell.isActionsCell\" [model]=\"cell.item.getData()\" [handleClick]=\"false\"></sv-action-bar>\n <ng-container *ngIf=\"cell.hasPanel\">\n <ng-template [component]=\"{ name: panelComponentName, data: panelComponentData }\"></ng-template>\n </ng-container>\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-container *ngIf=\"!cell.isChoice && cell.question.isDefaultRendering()\">\n <ng-template [component]=\"{ name: question.getCellWrapperComponentName(cell.cell), data: { componentData: question.getCellWrapperComponentData(cell.cell)} }\">\n <ng-template [component]=\"{ name: getComponentName(cell.question), data: { model: cell.question } }\"></ng-template>\n </ng-template>\n </ng-container>\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.isItemChoice\"\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.isOtherChoice\" [class]=\"cell.question.getCommentAreaCss(true)\" [question]=\"cell.question\" sv-ng-comment-other></div>\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 <ng-container *ngIf=\"cell.hasTitle\">\n <ng-template [component]=\"{ name: question.getCellWrapperComponentName($any(cell)), data: { componentData: question.getCellWrapperComponentData($any(cell))} }\">\n <sv-ng-string [model]=\"cell.locTitle\"></sv-ng-string>\n <span *ngIf=\"!!cell.requiredText\" [class]=\"question.cssClasses.cellRequiredText\">{{ cell.requiredText }}</span> \n </ng-template>\n </ng-container>\n</td>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: MatrixDynamicDragDropIconComponent, selector: "sv-ng-matrix-drag-drop-icon", inputs: ["model"] }, { type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { 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: SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
2885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixCellComponent, decorators: [{
2886
+ type: Component,
2887
+ args: [{
2888
+ selector: "sv-ng-matrix-cell",
2889
+ templateUrl: "./matrixcell.component.html",
2890
+ styles: [":host { display: none; }"]
2891
+ }]
2892
+ }], propDecorators: { question: [{
2893
+ type: Input
2894
+ }], cell: [{
2895
+ type: Input
2896
+ }], cellContainer: [{
2897
+ type: ViewChild,
2898
+ args: ["cellContainer"]
2899
+ }] } });
2900
+
2901
+ class MatrixRequiredHeader extends BaseAngular {
2902
+ getModel() {
2903
+ return this.column;
2904
+ }
2905
+ }
2906
+ MatrixRequiredHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixRequiredHeader, deps: null, target: i0.ɵɵFactoryTarget.Component });
2907
+ MatrixRequiredHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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; }"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixRequiredHeader, decorators: [{
2909
+ type: Component,
2910
+ args: [{
2911
+ selector: "sv-ng-matrixheaderrequired",
2912
+ styles: [":host { display: none; }"],
2913
+ template: "<ng-template #template><span *ngIf='column.isRenderedRequired' [class]='question.cssClasses.cellRequiredText'>{{ column.requiredText }}</span></ng-template>"
2914
+ }]
2915
+ }], propDecorators: { column: [{
2916
+ type: Input
2917
+ }], question: [{
2918
+ type: Input
2919
+ }] } });
2920
+
2921
+ class MatrixRowComponent extends BaseAngular {
2922
+ getModel() {
2923
+ return this.model;
2924
+ }
2925
+ get row() {
2926
+ return this.model.row;
2927
+ }
2928
+ trackCellBy(_, cell) {
2929
+ return cell.id;
2930
+ }
2931
+ }
2932
+ MatrixRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2933
+ MatrixRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixRowComponent, selector: "sv-ng-matrix-row", inputs: { model: "model", question: "question" }, usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <tr [class]=\"model.className\" (pointerdown)=\"question.onPointerDown($event, row)\" [attr.data-sv-drop-target-matrix-row]=\"row && row.id\">\n <sv-ng-matrix-cell\n [cell]=\"cell\"\n [question]=\"question\"\n *ngFor=\"let cell of model.cells; trackBy: trackCellBy\"\n ></sv-ng-matrix-cell>\n </tr>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: MatrixCellComponent, selector: "sv-ng-matrix-cell", inputs: ["question", "cell"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
2934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixRowComponent, decorators: [{
2935
+ type: Component,
2936
+ args: [{
2937
+ selector: "sv-ng-matrix-row",
2938
+ templateUrl: "./matrix-row.component.html",
2939
+ styles: [":host { display: none; }"]
2940
+ }]
2941
+ }], propDecorators: { model: [{
2942
+ type: Input
2943
+ }], question: [{
2944
+ type: Input
2945
+ }] } });
2946
+
2947
+ class MatrixTableComponent extends BaseAngular {
2948
+ getModel() {
2949
+ return this.table;
2950
+ }
2951
+ trackCellBy(_, cell) {
2952
+ return cell.id;
2953
+ }
2954
+ trackRowBy(index, row) {
2955
+ return row.id;
2956
+ }
2957
+ }
2958
+ MatrixTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixTableComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2959
+ MatrixTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: { question: "question", table: "table" }, usesInheritance: true, ngImport: i0, template: "<div [style]=\"{ overflowX: question.showHorizontalScroll ? 'scroll' : '' }\" #contentElement [class]=\"question.cssClasses.tableWrapper\">\n <table [class]=\"question.getTableCss()\">\n <thead *ngIf=\"table.showHeader\">\n <tr>\n <ng-container\n *ngFor=\"let cell of table.headerRow.cells; trackBy: trackCellBy\"\n >\n <th *ngIf=\"cell.hasTitle\" [class]=\"cell.className\" [style]=\"{ minWidth: cell.minWidth, width: cell.width }\">\n <ng-template [component]=\"{ name: question.getColumnHeaderWrapperComponentName($any(cell)), data: { componentData: question.getColumnHeaderWrapperComponentData($any(cell)) } }\">\n <sv-ng-string [model]=\"cell.locTitle\"></sv-ng-string>\n <sv-ng-matrixheaderrequired *ngIf=\"!!cell.column\" [column]=\"cell.column\" [question]=\"question\">\n </sv-ng-matrixheaderrequired>\n </ng-template>\n </th>\n \n <td *ngIf=\"!cell.hasTitle\" [class]=\"cell.className\" [style]=\"{ minWidth: cell.minWidth, width: cell.width }\"></td>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let row of table.rows; trackBy: trackRowBy\">\n <sv-ng-matrix-row [model]=\"row\" [question]=\"question\"></sv-ng-matrix-row>\n </ng-container>\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>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: MatrixRequiredHeader, selector: "sv-ng-matrixheaderrequired", inputs: ["column", "question"] }, { type: MatrixRowComponent, selector: "sv-ng-matrix-row", inputs: ["model", "question"] }, { type: MatrixCellComponent, selector: "sv-ng-matrix-cell", inputs: ["question", "cell"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
2960
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixTableComponent, decorators: [{
2961
+ type: Component,
2962
+ args: [{
2963
+ selector: "sv-ng-matrix-table",
2964
+ templateUrl: "./matrixtable.component.html"
2965
+ }]
2966
+ }], propDecorators: { question: [{
2967
+ type: Input
2968
+ }], table: [{
2969
+ type: Input
2970
+ }] } });
2971
+
2972
+ class MatrixDropdownComponent extends QuestionAngular {
2973
+ }
2974
+ MatrixDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2975
+ MatrixDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDropdownComponent, selector: "sv-ng-matrixdropdown-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <sv-ng-matrix-table *ngIf=\"model.renderedTable?.showTable\" [question]=\"model\" [table]=\"model.renderedTable\"></sv-ng-matrix-table>\n</ng-template>", components: [{ type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: ["question", "table"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2976
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDropdownComponent, decorators: [{
2977
+ type: Component,
2978
+ args: [{
2979
+ selector: "sv-ng-matrixdropdown-question",
2980
+ templateUrl: "./matrixdropdown.component.html"
2981
+ }]
2982
+ }] });
2983
+ AngularComponentFactory.Instance.registerComponent("matrixdropdown-question", MatrixDropdownComponent);
2984
+
2985
+ class MatrixDynamicComponent extends QuestionAngular {
2986
+ }
2987
+ MatrixDynamicComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2988
+ MatrixDynamicComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicComponent, selector: "sv-ng-matrixdynamic-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div #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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
2989
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicComponent, decorators: [{
2990
+ type: Component,
2991
+ args: [{
2992
+ selector: "sv-ng-matrixdynamic-question",
2993
+ templateUrl: "./matrixdynamic.component.html"
2994
+ }]
2995
+ }] });
2996
+ AngularComponentFactory.Instance.registerComponent("matrixdynamic-question", MatrixDynamicComponent);
2997
+
2998
+ class MatrixDynamicRemoveButtonComponent {
2999
+ get question() {
3000
+ return this.model.data.question;
3001
+ }
3002
+ get row() {
3003
+ return this.model.data.row;
3004
+ }
3005
+ getModel() {
3006
+ return this.model;
3007
+ }
3008
+ }
3009
+ MatrixDynamicRemoveButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicRemoveButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3010
+ MatrixDynamicRemoveButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
3011
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDynamicRemoveButtonComponent, decorators: [{
3012
+ type: Component,
3013
+ args: [{
3014
+ selector: "sv-ng-matrix-remove-btn",
3015
+ templateUrl: "./remove-button.component.html"
3016
+ }]
3017
+ }], propDecorators: { model: [{
3018
+ type: Input
3019
+ }] } });
3020
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-remove-button", MatrixDynamicRemoveButtonComponent);
3021
+
3022
+ class MatrixDetailButtonComponent {
3023
+ get question() {
3024
+ return this.model.data.question;
3025
+ }
3026
+ get row() {
3027
+ return this.model.data.row;
3028
+ }
3029
+ getModel() {
3030
+ return this.model;
3031
+ }
3032
+ }
3033
+ MatrixDetailButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDetailButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3034
+ MatrixDetailButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
3035
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixDetailButtonComponent, decorators: [{
3036
+ type: Component,
3037
+ args: [{
3038
+ selector: "sv-ng-matrix-detail-btn",
3039
+ templateUrl: "./detail-button.component.html"
3040
+ }]
3041
+ }], propDecorators: { model: [{
3042
+ type: Input
3043
+ }] } });
3044
+ AngularComponentFactory.Instance.registerComponent("sv-matrix-detail-button", MatrixDetailButtonComponent);
3045
+
3046
+ class ExpressionComponent extends QuestionAngular {
3047
+ }
3048
+ ExpressionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ExpressionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3049
+ ExpressionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ExpressionComponent, selector: "sv-ng-expression", usesInheritance: true, ngImport: i0, template: "<div [class]='model.cssClasses.root' #contentElement>{{ model.formatedValue }}</div>", isInline: true });
3050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ExpressionComponent, decorators: [{
3051
+ type: Component,
3052
+ args: [{
3053
+ selector: "sv-ng-expression",
3054
+ template: "<div [class]='model.cssClasses.root' #contentElement>{{ model.formatedValue }}</div>"
3055
+ }]
3056
+ }] });
3057
+ AngularComponentFactory.Instance.registerComponent("expression-question", ExpressionComponent);
3058
+
3059
+ class ImageQuestionComponent extends QuestionAngular {
3060
+ ngAfterViewInit() {
3061
+ this.model.locImageLink.onChanged = () => {
3062
+ this.detectChanges();
3063
+ };
3064
+ super.ngAfterViewInit();
3065
+ }
3066
+ ngOnDestroy() {
3067
+ this.model.locImageLink.onChanged = () => { };
3068
+ super.ngOnDestroy();
3069
+ }
3070
+ }
3071
+ ImageQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImageQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3072
+ ImageQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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.locImageLink.renderedHtml\"\n [attr.alt]=\"model.altText || 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.locImageLink.renderedHtml\"\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.locImageLink.renderedHtml | safeResourceUrl\"\n [attr.width]=\"model.renderedWidth\"\n [attr.height]=\"model.renderedHeight\"\n [style]=\"{ objectFit: model.imageFit }\"\n ></iframe>\n</div>", directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "safeResourceUrl": SafeResourceUrlPipe } });
3073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ImageQuestionComponent, decorators: [{
3074
+ type: Component,
3075
+ args: [{
3076
+ selector: "sv-ng-image-question",
3077
+ templateUrl: "./image.component.html"
3078
+ }]
3079
+ }] });
3080
+ AngularComponentFactory.Instance.registerComponent("image-question", ImageQuestionComponent);
3081
+
3082
+ class CustomQuestionComponent extends QuestionAngular {
3083
+ get contentQuestion() {
3084
+ return this.model.contentQuestion;
3085
+ }
3086
+ getComponentName(element) {
3087
+ if (element.customWidget) {
3088
+ return "survey-customwidget";
3089
+ }
3090
+ return element.getTemplate() + "-question";
3091
+ }
3092
+ }
3093
+ CustomQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3094
+ CustomQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
3095
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CustomQuestionComponent, decorators: [{
3096
+ type: Component,
3097
+ args: [{
3098
+ selector: "sv-ng-custom-question",
3099
+ template: "<ng-template [component]='{ name: getComponentName(contentQuestion), data: { model: contentQuestion } }'></ng-template>"
3100
+ }]
3101
+ }] });
3102
+ AngularComponentFactory.Instance.registerComponent("custom-question", CustomQuestionComponent);
3103
+
3104
+ class CompositeQuestionComponent extends QuestionAngular {
3105
+ get contentPanel() {
3106
+ return this.model.contentPanel;
3107
+ }
3108
+ }
3109
+ CompositeQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CompositeQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3110
+ CompositeQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", 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"] }] });
3111
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: CompositeQuestionComponent, decorators: [{
3112
+ type: Component,
3113
+ args: [{
3114
+ selector: "sv-ng-composite-question",
3115
+ template: "<sv-ng-panel [model]='contentPanel'></sv-ng-panel>"
3116
+ }]
3117
+ }] });
3118
+ AngularComponentFactory.Instance.registerComponent("composite-question", CompositeQuestionComponent);
3119
+
3120
+ class SurveyModule {
3121
+ }
3122
+ SurveyModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3123
+ SurveyModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, declarations: [VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3124
+ SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3125
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3126
+ CharacterCounterComponent,
3127
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3128
+ PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
3129
+ ListComponent, ListItemComponent, RatingItemComponent,
3130
+ TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
3131
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
3132
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentOtherComponent, ElementHeaderComponent, ElementTitleActionsComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
3133
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
3134
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
3135
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
3136
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe, BrandInfoComponent,
3137
+ CustomQuestionComponent, CompositeQuestionComponent, ButtonGroupItemComponent, ButtonGroupQuestionComponent, MatrixRowComponent, ModalComponent, LogoImageComponent, SkeletonComponent, TimerPanelComponent, PaneldynamicRemoveButtonComponent,
3138
+ NotifierComponent], imports: [CommonModule, FormsModule], exports: [VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3139
+ SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3140
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3141
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3142
+ PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
3143
+ ListComponent, ListItemComponent, RatingItemComponent,
3144
+ TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
3145
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
3146
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentOtherComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
3147
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
3148
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
3149
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
3150
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe,
3151
+ CustomQuestionComponent, CompositeQuestionComponent, ButtonGroupQuestionComponent, ModalComponent, LogoImageComponent, SkeletonComponent, TimerPanelComponent, PaneldynamicRemoveButtonComponent,
3152
+ NotifierComponent] });
3153
+ SurveyModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, providers: [PopupService], imports: [[
3154
+ CommonModule, FormsModule
3155
+ ]] });
3156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SurveyModule, decorators: [{
3157
+ type: NgModule,
3158
+ args: [{
3159
+ declarations: [
3160
+ VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3161
+ SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3162
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3163
+ CharacterCounterComponent,
3164
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3165
+ PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
3166
+ ListComponent, ListItemComponent, RatingItemComponent,
3167
+ TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
3168
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
3169
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentOtherComponent, ElementHeaderComponent, ElementTitleActionsComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
3170
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
3171
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
3172
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
3173
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe, BrandInfoComponent,
3174
+ CustomQuestionComponent, CompositeQuestionComponent, ButtonGroupItemComponent, ButtonGroupQuestionComponent, MatrixRowComponent, ModalComponent, LogoImageComponent, SkeletonComponent, TimerPanelComponent, PaneldynamicRemoveButtonComponent,
3175
+ NotifierComponent
3176
+ ],
3177
+ imports: [
3178
+ CommonModule, FormsModule
3179
+ ],
3180
+ exports: [
3181
+ VisibleDirective, Key2ClickDirective, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, ElementComponent, TemplateRendererComponent,
3182
+ SurveyComponent, SurveyContentComponent, PopupSurveyComponent, PageComponent, PanelComponent, QuestionComponent, StringViewerComponent, SurveyStringComponent, StringEditorComponent,
3183
+ QuestionSkeletonComponent, TextQuestionComponent, RadiogroupComponent, RadiogroupItemComponent, CheckboxComponent, CheckboxItemComponent,
3184
+ DropdownComponent, DropdownQuestionComponent, DropdownSelectComponent, DropdownOptionItemComponent,
3185
+ PopupComponent, PopupBaseContainerComponent, PopupPointerComponent,
3186
+ ListComponent, ListItemComponent, RatingItemComponent,
3187
+ TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
3188
+ ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
3189
+ SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentOtherComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
3190
+ RatingQuestionComponent, RatingDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
3191
+ SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, SurveyNavigationButton, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
3192
+ MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent, MatrixCellComponent, MatrixTableComponent, MatrixDropdownComponent,
3193
+ MatrixDynamicComponent, MatrixDetailButtonComponent, MatrixDynamicRemoveButtonComponent, MatrixDynamicDragDropIconComponent, MatrixRequiredHeader, ExpressionComponent, SafeResourceUrlPipe,
3194
+ CustomQuestionComponent, CompositeQuestionComponent, ButtonGroupQuestionComponent, ModalComponent, LogoImageComponent, SkeletonComponent, TimerPanelComponent, PaneldynamicRemoveButtonComponent,
3195
+ NotifierComponent
3196
+ ],
3197
+ providers: [PopupService],
3198
+ }]
3199
+ }] });
3200
+
3201
+ /**
3202
+ * Generated bundle index. Do not edit.
3203
+ */
3204
+
3205
+ export { ActionBarComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, ActionComponent, AngularComponentFactory, BaseAngular, BooleanCheckboxComponent, BooleanQuestionComponent, BooleanRadioComponent, BooleanRadioItemComponent, BrandInfoComponent, ButtonGroupQuestionComponent, CharacterCounterComponent, CheckboxComponent, CheckboxItemComponent, CommentQuestionComponent, CompositeQuestionComponent, CustomQuestionComponent, CustomWidgetComponent, DropdownComponent, DropdownOptionItemComponent, DropdownQuestionComponent, DropdownSelectComponent, DynamicComponentDirective, DynamicHeadComponent, ElementComponent, ElementHeaderComponent, ElementTitleComponent, EmbeddedViewContentComponent, ErrorsComponent, ExpressionComponent, FileQuestionComponent, HtmlQuestionComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent, Key2ClickDirective, ListComponent, ListItemComponent, LogoImageComponent, MatrixCellComponent, MatrixDetailButtonComponent, MatrixDropdownComponent, MatrixDynamicComponent, MatrixDynamicDragDropIconComponent, MatrixDynamicRemoveButtonComponent, MatrixQuestionComponent, MatrixRequiredHeader, MatrixTableComponent, ModalComponent, MultipleTextComponent, MultipleTextItemComponent, NotifierComponent, PageComponent, PanelComponent, PanelDynamicAddBtn, PanelDynamicNextBtn, PanelDynamicPrevBtn, PanelDynamicProgressText, PanelDynamicQuestionComponent, PaneldynamicAction, PaneldynamicRemoveButtonComponent, PopupBaseContainerComponent, PopupComponent, PopupPointerComponent, PopupService, PopupSurveyComponent, ProgressButtonsComponent, ProgressDefaultComponent, QuestionAngular, QuestionComponent, QuestionSkeletonComponent, RadiogroupComponent, RadiogroupItemComponent, RankingItemComponent, RankingQuestionComponent, RatingDropdownComponent, RatingItemComponent, RatingQuestionComponent, RowComponent, SafeHtmlPipe, SafeResourceUrlPipe, SafeUrlPipe, SelectBaseComponent, SelectBaseItemComponent, SignaturePadQuestionComponent, SkeletonComponent, StringEditorComponent, StringViewerComponent, SurveyCommentComponent, SurveyCommentOtherComponent, SurveyComponent, SurveyContentComponent, SurveyHeaderComponent, SurveyModule, SurveyNavigationButton, SurveyStringComponent, SvgIconComponent, TagboxComponent, TagboxFilterComponent, TagboxItemComponent, TagboxQuestionComponent, TemplateRendererComponent, TextQuestionComponent, TimerPanelComponent, VisibleDirective };
3206
+ //# sourceMappingURL=survey-angular-ui.js.map