survey-angular-ui 3.0.0-beta.6 → 3.0.0-beta.8

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 (27) hide show
  1. package/angular-ui.d.ts +1 -0
  2. package/angular-ui.module.d.ts +65 -64
  3. package/bundles/survey-angular-ui.umd.js +77 -77
  4. package/bundles/survey-angular-ui.umd.js.map +1 -1
  5. package/component-factory.d.ts +2 -2
  6. package/components/popup/popup.service.d.ts +2 -3
  7. package/components/progress/buttons/progress.component.d.ts +3 -17
  8. package/components/progress/default/progress.component.d.ts +5 -2
  9. package/components/renderAs/boolean-switch/boolean-switch.component.d.ts +7 -0
  10. package/esm2015/angular-ui.js +2 -1
  11. package/esm2015/angular-ui.module.js +6 -5
  12. package/esm2015/comment-choice.component.js +3 -2
  13. package/esm2015/component-factory.js +7 -2
  14. package/esm2015/components/paneldynamicplaceholder/paneldynamicplaceholder.component.js +2 -2
  15. package/esm2015/components/popup/popup.service.js +7 -6
  16. package/esm2015/components/progress/buttons/progress.component.js +3 -47
  17. package/esm2015/components/progress/default/progress.component.js +11 -5
  18. package/esm2015/components/renderAs/boolean-radio/boolean-radio-item.component.js +5 -3
  19. package/esm2015/components/renderAs/boolean-radio/boolean-radio.component.js +2 -2
  20. package/esm2015/components/renderAs/boolean-switch/boolean-switch.component.js +22 -0
  21. package/esm2015/survey-content.component.js +9 -3
  22. package/esm2015/utils/dynamic.directive.js +10 -11
  23. package/fesm2015/survey-angular-ui.js +68 -76
  24. package/fesm2015/survey-angular-ui.js.map +1 -1
  25. package/package.json +2 -2
  26. package/survey-content.component.d.ts +2 -0
  27. package/utils/dynamic.directive.d.ts +3 -3
@@ -723,17 +723,22 @@
723
723
  var componentType = this.creatorHash[elementType];
724
724
  if (!componentType)
725
725
  return null;
726
- return containerRef.createComponent(resolver.resolveComponentFactory(componentType));
726
+ try {
727
+ return containerRef.createComponent(componentType);
728
+ }
729
+ catch (e) {
730
+ return containerRef.createComponent(resolver.resolveComponentFactory(componentType));
731
+ }
727
732
  };
728
733
  return AngularComponentFactory;
729
734
  }());
730
735
  AngularComponentFactory.Instance = new AngularComponentFactory();
731
736
 
732
737
  var DynamicComponentDirective = /** @class */ (function () {
733
- function DynamicComponentDirective(containerRef, templateRef, resolver) {
738
+ function DynamicComponentDirective(containerRef, templateRef, injector) {
734
739
  this.containerRef = containerRef;
735
740
  this.templateRef = templateRef;
736
- this.resolver = resolver;
741
+ this.injector = injector;
737
742
  }
738
743
  DynamicComponentDirective.prototype.ngOnChanges = function (changes) {
739
744
  var _a;
@@ -748,11 +753,10 @@
748
753
  };
749
754
  DynamicComponentDirective.prototype.createComponent = function () {
750
755
  this.containerRef.clear();
751
- if (AngularComponentFactory.Instance.isComponentRegistered(this.component.name)) {
752
- this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.name, this.resolver).instance;
753
- }
754
- else if (this.component.default) {
755
- this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, this.component.default, this.resolver).instance;
756
+ var componentName = AngularComponentFactory.Instance.isComponentRegistered(this.component.name) ? this.component.name : this.component.default;
757
+ if (componentName) {
758
+ var resolver = this.injector.get(i0.NgModuleRef).componentFactoryResolver;
759
+ this.componentInstance = AngularComponentFactory.Instance.create(this.containerRef, componentName, resolver).instance;
756
760
  }
757
761
  if (!this.componentInstance) {
758
762
  throw new Error("Can't create component with name: " + this.component.name + " and default: " + this.component.default);
@@ -771,14 +775,14 @@
771
775
  };
772
776
  return DynamicComponentDirective;
773
777
  }());
774
- DynamicComponentDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: DynamicComponentDirective, deps: [{ token: i0__namespace.ViewContainerRef }, { token: i0__namespace.TemplateRef }, { token: i0__namespace.ComponentFactoryResolver }], target: i0__namespace.ɵɵFactoryTarget.Directive });
778
+ DynamicComponentDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: DynamicComponentDirective, deps: [{ token: i0__namespace.ViewContainerRef }, { token: i0__namespace.TemplateRef }, { token: i0__namespace.Injector }], target: i0__namespace.ɵɵFactoryTarget.Directive });
775
779
  DynamicComponentDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: DynamicComponentDirective, selector: "[component]", inputs: { component: "component" }, usesOnChanges: true, ngImport: i0__namespace });
776
780
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: DynamicComponentDirective, decorators: [{
777
781
  type: i0.Directive,
778
782
  args: [{
779
783
  selector: "[component]"
780
784
  }]
781
- }], ctorParameters: function () { return [{ type: i0__namespace.ViewContainerRef }, { type: i0__namespace.TemplateRef }, { type: i0__namespace.ComponentFactoryResolver }]; }, propDecorators: { component: [{
785
+ }], ctorParameters: function () { return [{ type: i0__namespace.ViewContainerRef }, { type: i0__namespace.TemplateRef }, { type: i0__namespace.Injector }]; }, propDecorators: { component: [{
782
786
  type: i0.Input
783
787
  }] } });
784
788
 
@@ -989,10 +993,9 @@
989
993
  }] } });
990
994
 
991
995
  var PopupService = /** @class */ (function () {
992
- function PopupService(injector, applicationRef, componentFactoryResolver) {
996
+ function PopupService(injector, applicationRef) {
993
997
  this.injector = injector;
994
998
  this.applicationRef = applicationRef;
995
- this.componentFactoryResolver = componentFactoryResolver;
996
999
  }
997
1000
  PopupService.prototype.createComponent = function (popupViewModel) {
998
1001
  var portalHost;
@@ -1002,7 +1005,8 @@
1002
1005
  portalHost = new portal.DomPortalOutlet(popupViewModel.container, this.applicationRef, this.injector);
1003
1006
  }
1004
1007
  else {
1005
- portalHost = new portal.DomPortalOutlet(popupViewModel.container, this.componentFactoryResolver, this.applicationRef, this.injector);
1008
+ var resolver = this.injector.get(i0.NgModuleRef).componentFactoryResolver;
1009
+ portalHost = new portal.DomPortalOutlet(popupViewModel.container, resolver, this.applicationRef, this.injector);
1006
1010
  }
1007
1011
  var portal$1 = new portal.ComponentPortal(PopupBaseContainerComponent);
1008
1012
  var componentRef = portalHost.attach(portal$1);
@@ -1013,11 +1017,11 @@
1013
1017
  };
1014
1018
  return PopupService;
1015
1019
  }());
1016
- PopupService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupService, deps: [{ token: i0__namespace.Injector }, { token: i0__namespace.ApplicationRef }, { token: i0__namespace.ComponentFactoryResolver }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1020
+ PopupService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupService, deps: [{ token: i0__namespace.Injector }, { token: i0__namespace.ApplicationRef }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
1017
1021
  PopupService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupService });
1018
1022
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupService, decorators: [{
1019
1023
  type: i0.Injectable
1020
- }], ctorParameters: function () { return [{ type: i0__namespace.Injector }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ComponentFactoryResolver }]; } });
1024
+ }], ctorParameters: function () { return [{ type: i0__namespace.Injector }, { type: i0__namespace.ApplicationRef }]; } });
1021
1025
 
1022
1026
  var ModalComponent = /** @class */ (function () {
1023
1027
  function ModalComponent(popupService) {
@@ -1456,17 +1460,31 @@
1456
1460
  this.isSurveyUpdated = true;
1457
1461
  };
1458
1462
  SurveyContentComponent.prototype.ngAfterViewChecked = function () {
1463
+ _super.prototype.ngAfterViewChecked.call(this);
1459
1464
  if (!!this.model && this.isSurveyUpdated) {
1460
1465
  this.isSurveyUpdated = false;
1461
1466
  this.model.afterRenderSurvey(this.rootEl.nativeElement);
1462
1467
  this.model.startTimerFromUI();
1463
1468
  }
1464
- _super.prototype.ngAfterViewChecked.call(this);
1465
1469
  };
1470
+ Object.defineProperty(SurveyContentComponent.prototype, "themeStyle", {
1471
+ get: function () {
1472
+ return this.model ? "<style>" + this.model.themeStyle + "</style>" : "";
1473
+ },
1474
+ enumerable: false,
1475
+ configurable: true
1476
+ });
1477
+ Object.defineProperty(SurveyContentComponent.prototype, "resetVariablesStyle", {
1478
+ get: function () {
1479
+ return this.model ? "<style>" + this.model.resetVariablesStyle + "</style>" : "";
1480
+ },
1481
+ enumerable: false,
1482
+ configurable: true
1483
+ });
1466
1484
  return SurveyContentComponent;
1467
1485
  }(BaseAngular));
1468
1486
  SurveyContentComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyContentComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
1469
- SurveyContentComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\" [lang]=\"model.locale || 'en'\" [dir]=\"model.localeDir\">\n <sv-scroll [disabled]=\"model.rootScrollDisabled\">\n <sv-svg-bundle *ngIf=\"model.needRenderIcons\"></sv-svg-bundle>\n <div [class]=\"model.wrapperFormCss\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <sv-scroll [disabled]=\"model.formScrollDisabled\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.headerView === 'basic' && model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div class=\"sv-components-column sv-components-column--expandable\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'center' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <ng-container *ngIf=\"model.activePage\">\n <!-- <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page> -->\n <ng-template [component]=\"{ name: model.pageComponent || 'sv-page', data: { model: model.activePage, survey: model } }\"></ng-template>\n </ng-container>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml | safeHtml\"></div>\n <ng-template *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'completePage' } }\"></ng-template>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml | safeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </sv-scroll>\n </form>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n </sv-scroll>\n </div>\n</ng-template>", components: [{ type: ScrollComponent, selector: "sv-scroll", inputs: ["disabled", "onInnerHeightChanged"] }, { type: SvgBundleComponent, selector: "sv-svg-bundle" }, { type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
1487
+ SurveyContentComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, template: "<ng-template #template>\n <div #surveyContainer *ngIf=\"!!model\" [class]=\"model.getRootCss()\" [style]=\"model.themeVariables\" [lang]=\"model.locale || 'en'\" [dir]=\"model.localeDir\">\n <ng-container *ngIf=\"model.generateStylesheet\">\n <div style=\"display: none;\" [innerHTML]=\"themeStyle | safeHtml\"></div>\n <div style=\"display: none;\" [innerHTML]=\"resetVariablesStyle | safeHtml\"></div>\n </ng-container>\n <sv-scroll [disabled]=\"model.rootScrollDisabled\">\n <sv-svg-bundle *ngIf=\"model.needRenderIcons\"></sv-svg-bundle>\n <div [class]=\"model.wrapperFormCss\">\n <div *ngIf=\"!!model.renderBackgroundImage\" [class]=\"model.css.rootBackgroundImage\" [style]=\"model.backgroundImageStyle\"></div>\n <form onsubmit=\"return false;\">\n <sv-scroll [disabled]=\"model.formScrollDisabled\">\n <div class=\"sv_custom_header\" [hidden]=\"model.hasLogo\"></div>\n <div [class]=\"model.css.container\">\n <div *ngIf=\"model.headerView === 'basic' && model.renderedHasHeader\" [class]=\"model.css.header\" [survey]=\"model\" sv-ng-survey-header></div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'header', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.isShowingPage\" [class]=\"model.bodyContainerCss\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'left' } }\"></ng-template>\n <div class=\"sv-components-column sv-components-column--expandable\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'center' } }\"></ng-template>\n <div [class]=\"model.bodyCss\" [style.maxWidth]=\"model.renderedWidth\" [id]=\"model.activePage ? model.activePage.id : ''\">\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentTop' } }\"></ng-template>\n <ng-container *ngIf=\"model.activePage\">\n <!-- <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page> -->\n <ng-template [component]=\"{ name: model.pageComponent || 'sv-page', data: { model: model.activePage, survey: model } }\"></ng-template>\n </ng-container>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml | safeHtml\"></div>\n <ng-template *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'completePage' } }\"></ng-template>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml | safeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </sv-scroll>\n </form>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n </sv-scroll>\n </div>\n</ng-template>", components: [{ type: ScrollComponent, selector: "sv-scroll", inputs: ["disabled", "onInnerHeightChanged"] }, { type: SvgBundleComponent, selector: "sv-svg-bundle" }, { type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4__namespace.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4__namespace.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4__namespace.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }], pipes: { "safeHtml": SafeHtmlPipe } });
1470
1488
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyContentComponent, decorators: [{
1471
1489
  type: i0.Component,
1472
1490
  args: [{
@@ -2611,7 +2629,8 @@
2611
2629
  }
2612
2630
  Object.defineProperty(SurveyCommentChoiceComponent.prototype, "commentValue", {
2613
2631
  get: function () {
2614
- return this.question.getCommentValue(this.item);
2632
+ var _a;
2633
+ return ((_a = this.textAreaModel) === null || _a === void 0 ? void 0 : _a.getTextValue()) || "";
2615
2634
  },
2616
2635
  enumerable: false,
2617
2636
  configurable: true
@@ -3980,12 +3999,14 @@
3980
3999
  function BooleanRadioItemComponent() {
3981
4000
  }
3982
4001
  BooleanRadioItemComponent.prototype.change = function () {
3983
- this.question.value = this.value;
4002
+ if (!this.question.isInputReadOnly) {
4003
+ this.question.value = this.value;
4004
+ }
3984
4005
  };
3985
4006
  return BooleanRadioItemComponent;
3986
4007
  }());
3987
4008
  BooleanRadioItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanRadioItemComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
3988
- BooleanRadioItemComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, template: "<div role=\"presentation\" [class]=\"question.getRadioItemClass(question.cssClasses, value)\">\n <label [class]=\"question.cssClasses.radioLabel\">\n <input\n type=\"radio\"\n [attr.name]=\"question.name\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [checked]=\"question.value == value\" (input)=\"change()\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4009
+ BooleanRadioItemComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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.questionName\" [attr.aria-errormessage]=\"question.ariaErrormessage\" [value]=\"value\" [checked]=\"question.value == value\" (input)=\"change()\"\n [disabled]=\"question.isDisabledAttr\" [readonly]=\"question.isReadOnlyAttr\" [class]=\"question.cssClasses.itemRadioControl || ''\"\n />\n <span *ngIf=\"question.cssClasses.materialRadioDecorator\" [class]=\"question.cssClasses.materialRadioDecorator\">\n <svg\n *ngIf=\"question.itemSvgIcon\"\n [class]=\"question.cssClasses.itemRadioDecorator\"\n >\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.cssClasses.radioControlLabel\" [model]=\"locText\" sv-ng-string>\n </span>\n </label>\n</div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
3989
4010
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanRadioItemComponent, decorators: [{
3990
4011
  type: i0.Component,
3991
4012
  args: [{
@@ -4006,7 +4027,7 @@
4006
4027
  return BooleanRadioComponent;
4007
4028
  }());
4008
4029
  BooleanRadioComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanRadioComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
4009
- BooleanRadioComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0__namespace, template: "<div [class]=\"model.cssClasses.rootRadio\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"model.getValueFalse()\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4030
+ BooleanRadioComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanRadioComponent, selector: "sv-ng-boolean-radio-question", inputs: { model: "model" }, ngImport: i0__namespace, template: "<div [class]=\"model.cssClasses.rootRadio\" (keydown)=\"model.onKeyDownCore($event)\">\n <fieldset role=\"presentation\" [class]=\"model.cssClasses.radioFieldset\">\n <sv-ng-boolean-radio-item *ngIf=\"model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item [value]=\"model.getValueFalse()\" [locText]=\"model.locLabelFalse\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n <sv-ng-boolean-radio-item *ngIf=\"!model.swapOrder\" [value]=\"model.getValueTrue()\" [locText]=\"model.locLabelTrue\" [question]=\"model\" ></sv-ng-boolean-radio-item>\n </fieldset>\n</div>\n", components: [{ type: BooleanRadioItemComponent, selector: "sv-ng-boolean-radio-item", inputs: ["question", "value", "locText"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4010
4031
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanRadioComponent, decorators: [{
4011
4032
  type: i0.Component,
4012
4033
  args: [{
@@ -4019,6 +4040,25 @@
4019
4040
  AngularComponentFactory.Instance.registerComponent("boolean-radio-question", BooleanRadioComponent);
4020
4041
  Survey.RendererFactory.Instance.registerRenderer("boolean", "radio", "boolean-radio-question");
4021
4042
 
4043
+ var BooleanSwitchComponent = /** @class */ (function () {
4044
+ function BooleanSwitchComponent() {
4045
+ }
4046
+ return BooleanSwitchComponent;
4047
+ }());
4048
+ BooleanSwitchComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanSwitchComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
4049
+ BooleanSwitchComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BooleanSwitchComponent, selector: "sv-ng-boolean-switch-question", inputs: { model: "model" }, ngImport: i0__namespace, template: "<div [class]=\"model.cssClasses.rootSwitch\" (click)=\"model.booleanValue = !model.booleanValue\">\n <div [class]=\"model.getSwitchButtonCss()\" role=\"checkbox\" tabindex=\"0\" [key2click]\n [attr.aria-checked]=\"model.booleanValue || false\"\n [attr.aria-required]=\"model.a11y_input_ariaRequired\" [attr.aria-label]=\"model.a11y_input_ariaLabel\"\n [attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\" [attr.aria-invalid]=\"model.a11y_input_ariaInvalid\"\n [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\">\n <div [class]=\"model.cssClasses.switchThumb\">\n <div [class]=\"model.cssClasses.switchThumbCircle + ' ' + model.cssClasses.switchThumbLeft\"></div>\n </div>\n <div [class]=\"model.cssClasses.switchThumb\">\n <div [class]=\"model.cssClasses.switchThumbCircle + ' ' + model.cssClasses.switchThumbRight\"></div>\n </div>\n </div>\n <div [class]=\"model.cssClasses.switchCaption\">\n <div [class]=\"model.cssClasses.switchTitle\" [id]=\"model.labelRenderedAriaID\" [model]=\"model.locTitle\" sv-ng-string></div>\n </div>\n</div>\n", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }] });
4050
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BooleanSwitchComponent, decorators: [{
4051
+ type: i0.Component,
4052
+ args: [{
4053
+ selector: "sv-ng-boolean-switch-question",
4054
+ templateUrl: "./boolean-switch.component.html"
4055
+ }]
4056
+ }], propDecorators: { model: [{
4057
+ type: i0.Input
4058
+ }] } });
4059
+ AngularComponentFactory.Instance.registerComponent("boolean-switch-question", BooleanSwitchComponent);
4060
+ Survey.RendererFactory.Instance.registerRenderer("boolean", "switch", "boolean-switch-question");
4061
+
4022
4062
  var ButtonGroupDropdownComponent = /** @class */ (function () {
4023
4063
  function ButtonGroupDropdownComponent() {
4024
4064
  }
@@ -4040,9 +4080,12 @@
4040
4080
 
4041
4081
  var ProgressDefaultComponent = /** @class */ (function (_super) {
4042
4082
  __extends(ProgressDefaultComponent, _super);
4043
- function ProgressDefaultComponent() {
4044
- return _super !== null && _super.apply(this, arguments) || this;
4083
+ function ProgressDefaultComponent(changeDetectorRef, viewContainerRef) {
4084
+ return _super.call(this, changeDetectorRef, viewContainerRef) || this;
4045
4085
  }
4086
+ ProgressDefaultComponent.prototype.getModel = function () {
4087
+ return this.model;
4088
+ };
4046
4089
  ProgressDefaultComponent.prototype.getProgressTextInBarCss = function (css) {
4047
4090
  return Survey.SurveyProgressModel.getProgressTextInBarCss(css);
4048
4091
  };
@@ -4050,8 +4093,8 @@
4050
4093
  return Survey.SurveyProgressModel.getProgressTextUnderBarCss(css);
4051
4094
  };
4052
4095
  return ProgressDefaultComponent;
4053
- }(EmbeddedViewContentComponent));
4054
- ProgressDefaultComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProgressDefaultComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
4096
+ }(BaseAngular));
4097
+ ProgressDefaultComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProgressDefaultComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ViewContainerRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4055
4098
  ProgressDefaultComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressDefaultComponent, selector: "sv-ng-progress-default", inputs: { container: "container", model: "model" }, usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #template>\n <div [class]=\"model.getProgressCssClasses(container)\">\n <div [class]=\"model.css.progressBar\" [style.width]=\"model.progressValue + '%'\"\n role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\">\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>" });
4056
4099
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProgressDefaultComponent, decorators: [{
4057
4100
  type: i0.Component,
@@ -4059,7 +4102,7 @@
4059
4102
  selector: "sv-ng-progress-default",
4060
4103
  templateUrl: "./progress.component.html"
4061
4104
  }]
4062
- }], propDecorators: { container: [{
4105
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }, { type: i0__namespace.ViewContainerRef }]; }, propDecorators: { container: [{
4063
4106
  type: i0.Input
4064
4107
  }], model: [{
4065
4108
  type: i0.Input
@@ -4073,56 +4116,15 @@
4073
4116
  var ProgressButtonsComponent = /** @class */ (function (_super) {
4074
4117
  __extends(ProgressButtonsComponent, _super);
4075
4118
  function ProgressButtonsComponent(changeDetectorRef, viewContainerRef) {
4076
- var _this = _super.call(this, changeDetectorRef, viewContainerRef) || this;
4077
- _this.hasScroller = false;
4078
- _this.canShowHeader = false;
4079
- _this.canShowFooter = false;
4080
- _this.canShowItemTitles = true;
4081
- return _this;
4119
+ return _super.call(this, changeDetectorRef, viewContainerRef) || this;
4082
4120
  }
4083
4121
  ProgressButtonsComponent.prototype.getModel = function () {
4084
4122
  return this.model;
4085
4123
  };
4086
- ProgressButtonsComponent.prototype.onResize = function (canShowItemTitles) {
4087
- this.canShowItemTitles = canShowItemTitles;
4088
- this.canShowHeader = !this.canShowItemTitles;
4089
- this.detectChanges();
4090
- };
4091
- ProgressButtonsComponent.prototype.onUpdateScroller = function (hasScroller) {
4092
- this.hasScroller = hasScroller;
4093
- this.detectChanges();
4094
- };
4095
- ProgressButtonsComponent.prototype.onUpdateSettings = function () {
4096
- this.canShowItemTitles = this.model.showItemTitles;
4097
- this.canShowFooter = !this.model.showItemTitles;
4098
- this.detectChanges();
4099
- };
4100
- ProgressButtonsComponent.prototype.ngOnInit = function () {
4101
- _super.prototype.ngOnInit.call(this);
4102
- };
4103
- ProgressButtonsComponent.prototype.ngOnChanges = function (changes) {
4104
- };
4105
- ProgressButtonsComponent.prototype.clickScrollButton = function (isLeftScroll) {
4106
- if (this.progressButtonsListContainer) {
4107
- this.progressButtonsListContainer.nativeElement.scrollLeft += (isLeftScroll ? -1 : 1) * 70;
4108
- }
4109
- };
4110
- ProgressButtonsComponent.prototype.ngAfterViewInit = function () {
4111
- var _a;
4112
- if (!!((_a = this.progressButtonsListContainer) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
4113
- var element = this.progressButtonsListContainer.nativeElement;
4114
- this.respManager = new Survey.ProgressButtonsResponsivityManager(this.model, element, this);
4115
- }
4116
- };
4117
- ProgressButtonsComponent.prototype.ngOnDestroy = function () {
4118
- var _a;
4119
- _super.prototype.ngOnDestroy.call(this);
4120
- (_a = this.respManager) === null || _a === void 0 ? void 0 : _a.dispose();
4121
- };
4122
4124
  return ProgressButtonsComponent;
4123
4125
  }(BaseAngular));
4124
4126
  ProgressButtonsComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProgressButtonsComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }, { token: i0__namespace.ViewContainerRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
4125
- ProgressButtonsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, viewQueries: [{ propertyName: "progressButtonsListContainer", first: true, predicate: ["progressButtonsListContainer"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\" [style.--sd-progress-buttons-pages-count]=\"model.visiblePages.length\"\nrole=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n>\n <div *ngIf=\"canShowHeader\" [class]=\"survey.css.progressButtonsHeader\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.headerText\">{{ model.headerText }}</div>\n </div>\n <div [class]=\"survey.css.progressButtonsContainer\">\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, true)\"\n (click)=\"clickScrollButton(true)\"\n role=\"button\"\n ></div>\n <div\n [class]=\"survey.css.progressButtonsListContainer\" #progressButtonsListContainer>\n <ul [class]=\"survey.css.progressButtonsList\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n [attr.data-page-number]=\"model.getItemNumber(page)\">\n <div [class]=\"survey.css.progressButtonsConnector\"></div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"canShowItemTitles\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n >\n {{ page.navigationDescription }}\n </div>\n <div [class]=\"survey.css.progressButtonsButton\"><div [class]=\"survey.css.progressButtonsButtonBackground\"></div><div [class]=\"survey.css.progressButtonsButtonContent\"></div><span>{{model.getItemNumber(page)}}</span></div>\n </li>\n </ul>\n </div>\n <div\n [class]=\"model.getScrollButtonCss(hasScroller, false)\"\n (click)=\"clickScrollButton(false)\"\n role=\"button\"\n ></div>\n </div>\n <div *ngIf=\"canShowFooter\" [class]=\"survey.css.progressButtonsFooter\">\n <div [class]=\"survey.css.progressButtonsPageTitle\" [title]=\"model.footerText\">{{ model.footerText }}</div>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
4127
+ ProgressButtonsComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProgressButtonsComponent, selector: "sv-ng-progress-buttons", inputs: { model: "model", survey: "survey", container: "container" }, usesInheritance: true, ngImport: i0__namespace, template: "<div [class]=\"model.getRootCss(container)\" [style.maxWidth]=\"model.progressWidth\"\nrole=\"tablist\" [attr.aria-label]=\"model.progressBarAriaLabel\"\n(keydown)=\"model.onKeyDown($event)\"\n>\n <div [class]=\"survey.css.progressButtonsContainer\" role=\"presentation\">\n <div\n [class]=\"survey.css.progressButtonsListContainer\" role=\"presentation\">\n <ul [class]=\"survey.css.progressButtonsList\" role=\"presentation\">\n <li\n *ngFor=\"let page of model.visiblePages; index as index\"\n [class]=\"model.getListElementCss(index)\"\n [attr.data-page-number]=\"model.getItemNumber(page)\"\n role=\"presentation\">\n <div *ngIf=\"model.showItemTitles\"\n [class]=\"survey.css.progressButtonsPageTitle\"\n [title]=\"page.renderedNavigationTitle\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n >\n <sv-ng-string [model]=\"page.locNavigationTitle\"></sv-ng-string>\n </div>\n <div *ngIf=\"model.showItemDescriptions\"\n [class]=\"survey.css.progressButtonsPageDescription\"\n [title]=\"page.navigationDescription\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : null\"\n >\n {{ page.navigationDescription }}\n </div>\n <button [class]=\"survey.css.progressButtonsButton\"\n (click)=\"model.isListElementClickable(index) ? model.clickListElement(page) : undefined\"\n role=\"tab\"\n type=\"button\"\n [attr.aria-selected]=\"model.isPageSelected(index)\"\n [attr.aria-label]=\"model.getButtonAriaLabel(page)\"\n [attr.tabindex]=\"model.getTabIndex(index)\"\n [attr.data-page-index]=\"index\"\n >\n <ng-container *ngIf=\"model.showItemNumbers\">{{ model.getItemNumber(page) }}</ng-container>\n <ng-container *ngIf=\"!model.showItemNumbers && model.isListElementPassed(index)\">\n <svg [class]=\"survey.css.progressButtonsCheckIcon\">\n <use [attr.xlink:href]=\"'#icon-' + survey.css.progressButtonsCheckIconId\"></use>\n </svg>\n </ng-container>\n <ng-container *ngIf=\"!model.showItemNumbers && !model.isListElementPassed(index)\">\n <div [class]=\"survey.css.progressButtonsDot\"></div>\n </ng-container>\n </button>\n </li>\n </ul>\n </div>\n </div>\n</div>", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4126
4128
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ProgressButtonsComponent, decorators: [{
4127
4129
  type: i0.Component,
4128
4130
  args: [{
@@ -4135,9 +4137,6 @@
4135
4137
  type: i0.Input
4136
4138
  }], container: [{
4137
4139
  type: i0.Input
4138
- }], progressButtonsListContainer: [{
4139
- type: i0.ViewChild,
4140
- args: ["progressButtonsListContainer"]
4141
4140
  }] } });
4142
4141
  AngularComponentFactory.Instance.registerComponent("sv-progress-buttons", ProgressButtonsComponent);
4143
4142
 
@@ -4655,7 +4654,7 @@
4655
4654
  return PanelDynamicPlaceholderComponent;
4656
4655
  }());
4657
4656
  PanelDynamicPlaceholderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PanelDynamicPlaceholderComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
4658
- PanelDynamicPlaceholderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicPlaceholderComponent, selector: "sv-ng-placeholder-paneldynamic", inputs: { question: "question" }, ngImport: i0__namespace, template: "<div *ngIf=\"question.getShowNoEntriesPlaceholder()\" [class]=\"question.cssClasses.noEntriesPlaceholder\">\n <span>\n <sv-ng-string [model]=\"question.locNoEntriesText\"></sv-ng-string>\n </span>\n <ng-container *ngIf=\"question.canAddPanel\">\n <ng-template [component]=\"{ name: 'sv-action-bar', data: { model: question.footerToolbar } }\"></ng-template>\n </ng-container>\n</div> ", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
4657
+ PanelDynamicPlaceholderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PanelDynamicPlaceholderComponent, selector: "sv-ng-placeholder-paneldynamic", inputs: { question: "question" }, ngImport: i0__namespace, template: "<div *ngIf=\"question.getShowNoEntriesPlaceholder()\" [class]=\"question.cssClasses.noEntriesPlaceholder\">\n <span>\n <sv-ng-string [model]=\"question.locNoEntriesText\"></sv-ng-string>\n </span>\n <ng-template [component]=\"{ name: 'sv-action-bar', data: { model: question.footerToolbar } }\"></ng-template>\n</div> ", components: [{ type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
4659
4658
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PanelDynamicPlaceholderComponent, decorators: [{
4660
4659
  type: i0.Component,
4661
4660
  args: [{
@@ -5476,7 +5475,7 @@
5476
5475
  TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
5477
5476
  ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
5478
5477
  SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentChoiceComponent, ElementHeaderComponent, ElementTitleActionsComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
5479
- RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5478
+ RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, BooleanSwitchComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5480
5479
  SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, ProgressTocComponent, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
5481
5480
  MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, RankingItemContentComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent,
5482
5481
  MatrixCellComponent, MatrixDropdownCellComponent, MatrixTableComponent, MatrixDropdownComponent,
@@ -5494,7 +5493,7 @@
5494
5493
  TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
5495
5494
  ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
5496
5495
  SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentChoiceComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
5497
- RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5496
+ RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, BooleanSwitchComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5498
5497
  SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
5499
5498
  MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, RankingItemContentComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent,
5500
5499
  MatrixCellComponent, MatrixDropdownCellComponent, MatrixTableComponent, MatrixDropdownComponent,
@@ -5519,7 +5518,7 @@
5519
5518
  TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
5520
5519
  ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
5521
5520
  SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentChoiceComponent, ElementHeaderComponent, ElementTitleActionsComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
5522
- RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5521
+ RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, BooleanSwitchComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5523
5522
  SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, ProgressTocComponent, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
5524
5523
  MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, RankingItemContentComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent,
5525
5524
  MatrixCellComponent, MatrixDropdownCellComponent, MatrixTableComponent, MatrixDropdownComponent,
@@ -5543,7 +5542,7 @@
5543
5542
  TagboxFilterComponent, TagboxComponent, TagboxQuestionComponent, TagboxItemComponent,
5544
5543
  ActionBarComponent, ActionComponent, ActionBarItemComponent, ActionBarItemDropdownComponent, HtmlQuestionComponent,
5545
5544
  SelectBaseItemComponent, SelectBaseComponent, SurveyCommentComponent, SurveyCommentChoiceComponent, ElementHeaderComponent, ElementTitleComponent, DynamicHeadComponent, RowComponent,
5546
- RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5545
+ RatingQuestionComponent, SliderQuestionComponent, SliderLabelItemComponent, RatingDropdownItemComponent, RatingDropdownComponent, ButtonGroupDropdownComponent, BooleanQuestionComponent, BooleanCheckboxComponent, BooleanRadioComponent, BooleanRadioItemComponent, BooleanSwitchComponent, ImagePickerItemComponent, ImagePickerQuestionComponent, ImageQuestionComponent,
5547
5546
  SurveyHeaderComponent, ProgressDefaultComponent, ProgressButtonsComponent, MatrixQuestionComponent, SvgIconComponent, FileQuestionComponent, SafeUrlPipe, SafeHtmlPipe, CommentQuestionComponent, SignaturePadQuestionComponent, ErrorsComponent,
5548
5547
  MultipleTextComponent, MultipleTextItemComponent, DynamicComponentDirective, RankingQuestionComponent, RankingItemComponent, RankingItemContentComponent, PanelDynamicQuestionComponent, EmbeddedViewContentComponent, CustomWidgetComponent,
5549
5548
  MatrixCellComponent, MatrixDropdownCellComponent, MatrixTableComponent, MatrixDropdownComponent,
@@ -5570,6 +5569,7 @@
5570
5569
  exports.BooleanQuestionComponent = BooleanQuestionComponent;
5571
5570
  exports.BooleanRadioComponent = BooleanRadioComponent;
5572
5571
  exports.BooleanRadioItemComponent = BooleanRadioItemComponent;
5572
+ exports.BooleanSwitchComponent = BooleanSwitchComponent;
5573
5573
  exports.BrandInfoComponent = BrandInfoComponent;
5574
5574
  exports.BreadcrumbsComponent = BreadcrumbsComponent;
5575
5575
  exports.ButtonGroupDropdownComponent = ButtonGroupDropdownComponent;