survey-angular-ui 2.3.8 → 2.3.9

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.
@@ -1355,6 +1355,232 @@
1355
1355
  type: i0.Input
1356
1356
  }] } });
1357
1357
 
1358
+ var BrandInfoComponent = /** @class */ (function () {
1359
+ function BrandInfoComponent() {
1360
+ }
1361
+ return BrandInfoComponent;
1362
+ }());
1363
+ BrandInfoComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BrandInfoComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1364
+ BrandInfoComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BrandInfoComponent, selector: "sv-brand-info", ngImport: i0__namespace, 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>" });
1365
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BrandInfoComponent, decorators: [{
1366
+ type: i0.Component,
1367
+ args: [{
1368
+ selector: "sv-brand-info",
1369
+ templateUrl: "./brand-info.component.html"
1370
+ }]
1371
+ }] });
1372
+ AngularComponentFactory.Instance.registerComponent("sv-brand-info", BrandInfoComponent);
1373
+
1374
+ var NotifierComponent = /** @class */ (function (_super) {
1375
+ __extends(NotifierComponent, _super);
1376
+ function NotifierComponent() {
1377
+ return _super !== null && _super.apply(this, arguments) || this;
1378
+ }
1379
+ NotifierComponent.prototype.getStateElement = function () {
1380
+ return this.notifier;
1381
+ };
1382
+ NotifierComponent.prototype.getModel = function () {
1383
+ return this.notifier;
1384
+ };
1385
+ return NotifierComponent;
1386
+ }(BaseAngular));
1387
+ NotifierComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NotifierComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
1388
+ NotifierComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NotifierComponent, selector: "sv-notifier", inputs: { notifier: "notifier" }, usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #template>\n <ng-container *ngIf=\"notifier.isDisplayed\">\n <div [class]=\"notifier.css\" [style]=\"{ visibility: notifier.active ? 'visible' : 'hidden' }\" role=\"alert\" aria-live=\"polite\">\n <span>{{notifier.message}}</span>\n <sv-action-bar [model]=\"notifier.actionBar\"></sv-action-bar> \n </div>\n </ng-container>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1389
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NotifierComponent, decorators: [{
1390
+ type: i0.Component,
1391
+ args: [{
1392
+ selector: "sv-notifier",
1393
+ templateUrl: "./notifier.component.html",
1394
+ styles: [":host { display: none; }"]
1395
+ }]
1396
+ }], propDecorators: { notifier: [{
1397
+ type: i0.Input
1398
+ }] } });
1399
+
1400
+ var SafeHtmlPipe = /** @class */ (function () {
1401
+ function SafeHtmlPipe(domSanitizer) {
1402
+ this.domSanitizer = domSanitizer;
1403
+ }
1404
+ SafeHtmlPipe.prototype.transform = function (url) {
1405
+ return this.domSanitizer.bypassSecurityTrustHtml(url);
1406
+ };
1407
+ return SafeHtmlPipe;
1408
+ }());
1409
+ SafeHtmlPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, deps: [{ token: i1__namespace.DomSanitizer }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
1410
+ SafeHtmlPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, name: "safeHtml" });
1411
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, decorators: [{
1412
+ type: i0.Pipe,
1413
+ args: [{ name: "safeHtml" }]
1414
+ }], ctorParameters: function () { return [{ type: i1__namespace.DomSanitizer }]; } });
1415
+
1416
+ var SurveyContentComponent = /** @class */ (function (_super) {
1417
+ __extends(SurveyContentComponent, _super);
1418
+ function SurveyContentComponent() {
1419
+ var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
1420
+ _this.isSurveyUpdated = false;
1421
+ return _this;
1422
+ }
1423
+ SurveyContentComponent.prototype.getModel = function () {
1424
+ return this.model;
1425
+ };
1426
+ SurveyContentComponent.prototype.onModelChanged = function () {
1427
+ var _this = this;
1428
+ if (!!this.previousModel) {
1429
+ this.previousModel.destroyResizeObserver();
1430
+ this.previousModel.renderCallback = undefined;
1431
+ }
1432
+ if (!!this.model) {
1433
+ this.model.renderCallback = function () {
1434
+ _this.detectChanges();
1435
+ };
1436
+ }
1437
+ this.isSurveyUpdated = true;
1438
+ };
1439
+ SurveyContentComponent.prototype.ngOnDestroy = function () {
1440
+ _super.prototype.ngOnDestroy.call(this);
1441
+ if (!!this.model) {
1442
+ this.model.rootElement = undefined;
1443
+ this.model.destroyResizeObserver();
1444
+ this.model.renderCallback = undefined;
1445
+ }
1446
+ };
1447
+ SurveyContentComponent.prototype.ngAfterViewInit = function () {
1448
+ this.isSurveyUpdated = true;
1449
+ };
1450
+ SurveyContentComponent.prototype.ngAfterViewChecked = function () {
1451
+ if (!!this.model && this.isSurveyUpdated) {
1452
+ this.isSurveyUpdated = false;
1453
+ this.model.afterRenderSurvey(this.rootEl.nativeElement);
1454
+ this.model.startTimerFromUI();
1455
+ }
1456
+ _super.prototype.ngAfterViewChecked.call(this);
1457
+ };
1458
+ return SurveyContentComponent;
1459
+ }(BaseAngular));
1460
+ 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 });
1461
+ 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: i2__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 } });
1462
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyContentComponent, decorators: [{
1463
+ type: i0.Component,
1464
+ args: [{
1465
+ selector: "survey-content",
1466
+ templateUrl: "./survey-content.component.html"
1467
+ }]
1468
+ }], propDecorators: { model: [{
1469
+ type: i0.Input
1470
+ }], rootEl: [{
1471
+ type: i0.ViewChild,
1472
+ args: ["surveyContainer", { static: false }]
1473
+ }] } });
1474
+ AngularComponentFactory.Instance.registerComponent("survey", SurveyContentComponent);
1475
+
1476
+ Survey.addIconsToThemeSet("v1", iconsV1.icons);
1477
+ Survey.addIconsToThemeSet("v2", iconsV2.icons);
1478
+ Survey.SvgRegistry.registerIcons(iconsV2.icons);
1479
+ var SurveyComponent = /** @class */ (function (_super) {
1480
+ __extends(SurveyComponent, _super);
1481
+ function SurveyComponent(changeDetectorRef) {
1482
+ var _this = _super.call(this, changeDetectorRef) || this;
1483
+ changeDetectorRef.detach();
1484
+ return _this;
1485
+ }
1486
+ SurveyComponent.prototype.getModel = function () {
1487
+ return this.model;
1488
+ };
1489
+ SurveyComponent.prototype.getShouldReattachChangeDetector = function () {
1490
+ return false;
1491
+ };
1492
+ SurveyComponent.prototype.onModelChanged = function () {
1493
+ this.changeDetectorRef.detectChanges();
1494
+ };
1495
+ return SurveyComponent;
1496
+ }(BaseAngular));
1497
+ SurveyComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1498
+ SurveyComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyComponent, selector: "survey", inputs: { model: "model" }, usesInheritance: true, ngImport: i0__namespace, 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"] }] });
1499
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyComponent, decorators: [{
1500
+ type: i0.Component,
1501
+ args: [{
1502
+ selector: "survey",
1503
+ template: "<sv-ng-modal-container></sv-ng-modal-container><survey-content [model]='model'></survey-content>"
1504
+ }]
1505
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { model: [{
1506
+ type: i0.Input
1507
+ }] } });
1508
+
1509
+ var PopupSurveyComponent = /** @class */ (function (_super) {
1510
+ __extends(PopupSurveyComponent, _super);
1511
+ function PopupSurveyComponent(changeDetectorRef) {
1512
+ var _this = _super.call(this, changeDetectorRef) || this;
1513
+ changeDetectorRef.detach();
1514
+ return _this;
1515
+ }
1516
+ PopupSurveyComponent.prototype.getModel = function () {
1517
+ return this.popup;
1518
+ };
1519
+ PopupSurveyComponent.prototype.getShouldReattachChangeDetector = function () {
1520
+ return false;
1521
+ };
1522
+ PopupSurveyComponent.prototype.getHeaderCss = function () {
1523
+ var headerCss = this.popup.cssHeaderRoot;
1524
+ if (this.popup.isCollapsed) {
1525
+ headerCss += " " + this.popup.cssRootCollapsedMod;
1526
+ }
1527
+ return headerCss;
1528
+ };
1529
+ PopupSurveyComponent.prototype.closeHandler = function () {
1530
+ this.popup.hide();
1531
+ if (!!this.onClose) {
1532
+ this.onClose();
1533
+ }
1534
+ };
1535
+ PopupSurveyComponent.prototype.ngOnChanges = function (changes) {
1536
+ var _a, _b;
1537
+ if (((_a = changes["model"]) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes["model"]) === null || _b === void 0 ? void 0 : _b.previousValue)) {
1538
+ this.popup = new Survey.PopupSurveyModel(null, this.model);
1539
+ }
1540
+ if (this.isExpanded !== undefined) {
1541
+ this.popup.isExpanded = this.isExpanded;
1542
+ }
1543
+ if (this.allowClose !== undefined) {
1544
+ this.popup.allowClose = this.allowClose;
1545
+ }
1546
+ if (this.allowFullScreen !== undefined) {
1547
+ this.popup.allowFullScreen = this.allowFullScreen;
1548
+ }
1549
+ if (this.closeOnCompleteTimeout !== undefined) {
1550
+ this.popup.closeOnCompleteTimeout = this.closeOnCompleteTimeout;
1551
+ }
1552
+ this.popup.isShowing = true;
1553
+ this.changeDetectorRef.detectChanges();
1554
+ };
1555
+ PopupSurveyComponent.prototype.ngOnDestroy = function () {
1556
+ _super.prototype.ngOnDestroy.call(this);
1557
+ this.popup.dispose();
1558
+ };
1559
+ return PopupSurveyComponent;
1560
+ }(BaseAngular));
1561
+ PopupSurveyComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupSurveyComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1562
+ PopupSurveyComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupSurveyComponent, selector: "popup-survey", inputs: { model: "model", isExpanded: "isExpanded", allowClose: "allowClose", closeOnCompleteTimeout: "closeOnCompleteTimeout", allowFullScreen: "allowFullScreen", onClose: "onClose" }, usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: "<div *ngIf=\"!!popup && popup.isShowing\" [class]=\"popup.cssRoot\" [style.width]=\"popup.renderedWidth\" [style.maxWidth]=\"popup.renderedWidth\" (scroll)=\"popup.onScroll()\">\n <div [class]=\"popup.cssRootContent\">\n <div [class]=\"getHeaderCss()\">\n <div *ngIf=\"popup.isCollapsed && !!popup.locTitle\" [class]=\"popup.cssHeaderTitleCollapsed\">\n {{popup.locTitle.renderedHtml}}\n </div>\n <div [class]=\"popup.cssHeaderButtonsContainer\">\n <div *ngIf=\"popup.allowFullScreen\" [class]=\"popup.cssHeaderFullScreenButton\" (click)=\"popup.toggleFullScreen()\">\n <svg *ngIf=\"popup.isFullScreen\" [iconName]=\"'icon-back-to-panel_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n <svg *ngIf=\"!popup.isFullScreen\" [iconName]=\"'icon-full-screen_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n\n <div [class]=\"popup.cssHeaderCollapseButton\" (click)=\"popup.changeExpandCollapse()\">\n <svg *ngIf=\"popup.isExpanded\" [iconName]=\"'icon-minimize_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n <svg *ngIf=\"popup.isCollapsed\" [iconName]=\"'icon-restore_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n\n <div *ngIf=\"popup.allowClose\" [class]=\"popup.cssHeaderCloseButton\" (click)=\"closeHandler()\">\n <svg [iconName]=\"'icon-close_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n </div>\n </div>\n <div [class]=\"popup.cssBody\">\n <survey [model]=\"popup.survey\"></survey>\n </div>\n </div>\n</div>", styles: [""], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyComponent, selector: "survey", inputs: ["model"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1563
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupSurveyComponent, decorators: [{
1564
+ type: i0.Component,
1565
+ args: [{
1566
+ selector: "popup-survey",
1567
+ templateUrl: "./popup.survey.component.html",
1568
+ styleUrls: ["./popup.survey.component.scss"]
1569
+ }]
1570
+ }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { model: [{
1571
+ type: i0.Input
1572
+ }], isExpanded: [{
1573
+ type: i0.Input
1574
+ }], allowClose: [{
1575
+ type: i0.Input
1576
+ }], closeOnCompleteTimeout: [{
1577
+ type: i0.Input
1578
+ }], allowFullScreen: [{
1579
+ type: i0.Input
1580
+ }], onClose: [{
1581
+ type: i0.Input
1582
+ }] } });
1583
+
1358
1584
  var ErrorsComponent = /** @class */ (function () {
1359
1585
  function ErrorsComponent() {
1360
1586
  }
@@ -1585,11 +1811,11 @@
1585
1811
  return PageComponent;
1586
1812
  }(BaseAngular));
1587
1813
  PageComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PageComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
1588
- PageComponent.ɵcmp = i0__namespace.ɵɵ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: i0.ElementRef }], usesInheritance: true, ngImport: i0__namespace, 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 <div *ngIf=\"model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <ng-container *ngFor=\"let row of model.visibleRows\">\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: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: RowComponent, selector: "sv-ng-row", inputs: ["row"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1814
+ PageComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PageComponent, selector: "sv-page, page, sv-ng-page", inputs: { model: "model", survey: "survey" }, viewQueries: [{ propertyName: "pageContainerRef", first: true, predicate: ["pageContainer"], descendants: true, read: i0.ElementRef }], usesInheritance: true, ngImport: i0__namespace, 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 <div *ngIf=\"model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <ng-container *ngFor=\"let row of model.visibleRows\">\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: ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: RowComponent, selector: "sv-ng-row", inputs: ["row"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
1589
1815
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PageComponent, decorators: [{
1590
1816
  type: i0.Component,
1591
1817
  args: [{
1592
- selector: "page, sv-ng-page",
1818
+ selector: "sv-page, page, sv-ng-page",
1593
1819
  templateUrl: "./page.component.html",
1594
1820
  styleUrls: ["./hide-host.scss"]
1595
1821
  }]
@@ -1601,232 +1827,7 @@
1601
1827
  type: i0.ViewChild,
1602
1828
  args: ["pageContainer", { static: false, read: i0.ElementRef }]
1603
1829
  }] } });
1604
-
1605
- var BrandInfoComponent = /** @class */ (function () {
1606
- function BrandInfoComponent() {
1607
- }
1608
- return BrandInfoComponent;
1609
- }());
1610
- BrandInfoComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BrandInfoComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1611
- BrandInfoComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: BrandInfoComponent, selector: "sv-brand-info", ngImport: i0__namespace, 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>" });
1612
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: BrandInfoComponent, decorators: [{
1613
- type: i0.Component,
1614
- args: [{
1615
- selector: "sv-brand-info",
1616
- templateUrl: "./brand-info.component.html"
1617
- }]
1618
- }] });
1619
- AngularComponentFactory.Instance.registerComponent("sv-brand-info", BrandInfoComponent);
1620
-
1621
- var NotifierComponent = /** @class */ (function (_super) {
1622
- __extends(NotifierComponent, _super);
1623
- function NotifierComponent() {
1624
- return _super !== null && _super.apply(this, arguments) || this;
1625
- }
1626
- NotifierComponent.prototype.getStateElement = function () {
1627
- return this.notifier;
1628
- };
1629
- NotifierComponent.prototype.getModel = function () {
1630
- return this.notifier;
1631
- };
1632
- return NotifierComponent;
1633
- }(BaseAngular));
1634
- NotifierComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NotifierComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
1635
- NotifierComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: NotifierComponent, selector: "sv-notifier", inputs: { notifier: "notifier" }, usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #template>\n <ng-container *ngIf=\"notifier.isDisplayed\">\n <div [class]=\"notifier.css\" [style]=\"{ visibility: notifier.active ? 'visible' : 'hidden' }\" role=\"alert\" aria-live=\"polite\">\n <span>{{notifier.message}}</span>\n <sv-action-bar [model]=\"notifier.actionBar\"></sv-action-bar> \n </div>\n </ng-container>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1636
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: NotifierComponent, decorators: [{
1637
- type: i0.Component,
1638
- args: [{
1639
- selector: "sv-notifier",
1640
- templateUrl: "./notifier.component.html",
1641
- styles: [":host { display: none; }"]
1642
- }]
1643
- }], propDecorators: { notifier: [{
1644
- type: i0.Input
1645
- }] } });
1646
-
1647
- var SafeHtmlPipe = /** @class */ (function () {
1648
- function SafeHtmlPipe(domSanitizer) {
1649
- this.domSanitizer = domSanitizer;
1650
- }
1651
- SafeHtmlPipe.prototype.transform = function (url) {
1652
- return this.domSanitizer.bypassSecurityTrustHtml(url);
1653
- };
1654
- return SafeHtmlPipe;
1655
- }());
1656
- SafeHtmlPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, deps: [{ token: i1__namespace.DomSanitizer }], target: i0__namespace.ɵɵFactoryTarget.Pipe });
1657
- SafeHtmlPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, name: "safeHtml" });
1658
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SafeHtmlPipe, decorators: [{
1659
- type: i0.Pipe,
1660
- args: [{ name: "safeHtml" }]
1661
- }], ctorParameters: function () { return [{ type: i1__namespace.DomSanitizer }]; } });
1662
-
1663
- var SurveyContentComponent = /** @class */ (function (_super) {
1664
- __extends(SurveyContentComponent, _super);
1665
- function SurveyContentComponent() {
1666
- var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
1667
- _this.isSurveyUpdated = false;
1668
- return _this;
1669
- }
1670
- SurveyContentComponent.prototype.getModel = function () {
1671
- return this.model;
1672
- };
1673
- SurveyContentComponent.prototype.onModelChanged = function () {
1674
- var _this = this;
1675
- if (!!this.previousModel) {
1676
- this.previousModel.destroyResizeObserver();
1677
- this.previousModel.renderCallback = undefined;
1678
- }
1679
- if (!!this.model) {
1680
- this.model.renderCallback = function () {
1681
- _this.detectChanges();
1682
- };
1683
- }
1684
- this.isSurveyUpdated = true;
1685
- };
1686
- SurveyContentComponent.prototype.ngOnDestroy = function () {
1687
- _super.prototype.ngOnDestroy.call(this);
1688
- if (!!this.model) {
1689
- this.model.rootElement = undefined;
1690
- this.model.destroyResizeObserver();
1691
- this.model.renderCallback = undefined;
1692
- }
1693
- };
1694
- SurveyContentComponent.prototype.ngAfterViewInit = function () {
1695
- this.isSurveyUpdated = true;
1696
- };
1697
- SurveyContentComponent.prototype.ngAfterViewChecked = function () {
1698
- if (!!this.model && this.isSurveyUpdated) {
1699
- this.isSurveyUpdated = false;
1700
- this.model.afterRenderSurvey(this.rootEl.nativeElement);
1701
- this.model.startTimerFromUI();
1702
- }
1703
- _super.prototype.ngAfterViewChecked.call(this);
1704
- };
1705
- return SurveyContentComponent;
1706
- }(BaseAngular));
1707
- 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 });
1708
- 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 <!-- ko if: activePage -->\n <ng-container *ngIf=\"model.activePage\">\n <sv-ng-page [model]=\"model.activePage\" [survey]=\"model\"></sv-ng-page>\n </ng-container>\n <!-- ko if: activePage.rows.length == 0 && $data.emptyPageTemplate -->\n <!-- ko template: { name: emptyPageTemplate, data: $data.emptyPageTemplateData || $data } -->\n <!-- /ko -->\n <!-- /ko -->\n <!-- /ko -->\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'contentBottom' } }\"></ng-template>\n <sv-brand-info *ngIf=\"model.showBrandInfo\"></sv-brand-info>\n </div>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'right' } }\"></ng-template>\n </div>\n <ng-template [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'footer', needRenderWrapper: false } }\"></ng-template>\n <div *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [class]=\"model.completedCss\"\n [innerHtml]=\"model.processedCompletedHtml | safeHtml\"></div>\n <ng-template *ngIf=\"model.state === 'completed' && model.showCompletedPage\" [component]=\"{ name: 'sv-components-container', data: { survey: model, container: 'completePage' } }\"></ng-template>\n <div *ngIf=\"model.state === 'completedbefore'\" [class]=\"model.completedBeforeCss\"\n [innerHtml]=\"model.processedCompletedBeforeHtml | safeHtml\"></div>\n <div *ngIf=\"model.state === 'loading'\" [class]=\"model.loadingBodyCss\" [innerHtml]=\"model.processedLoadingHtml\"></div>\n <div *ngIf=\"model.state === 'empty'\" [class]=\"model.css.bodyEmpty\">{{model.emptySurveyText}}</div>\n </div>\n </sv-scroll>\n </form>\n <sv-notifier [notifier]=\"model.notifier\"></sv-notifier>\n </div>\n </sv-scroll>\n </div>\n</ng-template>", components: [{ type: ScrollComponent, selector: "sv-scroll", inputs: ["disabled", "onInnerHeightChanged"] }, { type: SvgBundleComponent, selector: "sv-svg-bundle" }, { type: SurveyHeaderComponent, selector: "'[sv-ng-survey-header]'", inputs: ["survey"] }, { type: PageComponent, selector: "page, sv-ng-page", inputs: ["model", "survey"] }, { type: BrandInfoComponent, selector: "sv-brand-info" }, { type: NotifierComponent, selector: "sv-notifier", inputs: ["notifier"] }], directives: [{ type: i2__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 } });
1709
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyContentComponent, decorators: [{
1710
- type: i0.Component,
1711
- args: [{
1712
- selector: "survey-content",
1713
- templateUrl: "./survey-content.component.html"
1714
- }]
1715
- }], propDecorators: { model: [{
1716
- type: i0.Input
1717
- }], rootEl: [{
1718
- type: i0.ViewChild,
1719
- args: ["surveyContainer", { static: false }]
1720
- }] } });
1721
- AngularComponentFactory.Instance.registerComponent("survey", SurveyContentComponent);
1722
-
1723
- Survey.addIconsToThemeSet("v1", iconsV1.icons);
1724
- Survey.addIconsToThemeSet("v2", iconsV2.icons);
1725
- Survey.SvgRegistry.registerIcons(iconsV2.icons);
1726
- var SurveyComponent = /** @class */ (function (_super) {
1727
- __extends(SurveyComponent, _super);
1728
- function SurveyComponent(changeDetectorRef) {
1729
- var _this = _super.call(this, changeDetectorRef) || this;
1730
- changeDetectorRef.detach();
1731
- return _this;
1732
- }
1733
- SurveyComponent.prototype.getModel = function () {
1734
- return this.model;
1735
- };
1736
- SurveyComponent.prototype.getShouldReattachChangeDetector = function () {
1737
- return false;
1738
- };
1739
- SurveyComponent.prototype.onModelChanged = function () {
1740
- this.changeDetectorRef.detectChanges();
1741
- };
1742
- return SurveyComponent;
1743
- }(BaseAngular));
1744
- SurveyComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1745
- SurveyComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SurveyComponent, selector: "survey", inputs: { model: "model" }, usesInheritance: true, ngImport: i0__namespace, 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"] }] });
1746
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: SurveyComponent, decorators: [{
1747
- type: i0.Component,
1748
- args: [{
1749
- selector: "survey",
1750
- template: "<sv-ng-modal-container></sv-ng-modal-container><survey-content [model]='model'></survey-content>"
1751
- }]
1752
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { model: [{
1753
- type: i0.Input
1754
- }] } });
1755
-
1756
- var PopupSurveyComponent = /** @class */ (function (_super) {
1757
- __extends(PopupSurveyComponent, _super);
1758
- function PopupSurveyComponent(changeDetectorRef) {
1759
- var _this = _super.call(this, changeDetectorRef) || this;
1760
- changeDetectorRef.detach();
1761
- return _this;
1762
- }
1763
- PopupSurveyComponent.prototype.getModel = function () {
1764
- return this.popup;
1765
- };
1766
- PopupSurveyComponent.prototype.getShouldReattachChangeDetector = function () {
1767
- return false;
1768
- };
1769
- PopupSurveyComponent.prototype.getHeaderCss = function () {
1770
- var headerCss = this.popup.cssHeaderRoot;
1771
- if (this.popup.isCollapsed) {
1772
- headerCss += " " + this.popup.cssRootCollapsedMod;
1773
- }
1774
- return headerCss;
1775
- };
1776
- PopupSurveyComponent.prototype.closeHandler = function () {
1777
- this.popup.hide();
1778
- if (!!this.onClose) {
1779
- this.onClose();
1780
- }
1781
- };
1782
- PopupSurveyComponent.prototype.ngOnChanges = function (changes) {
1783
- var _a, _b;
1784
- if (((_a = changes["model"]) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes["model"]) === null || _b === void 0 ? void 0 : _b.previousValue)) {
1785
- this.popup = new Survey.PopupSurveyModel(null, this.model);
1786
- }
1787
- if (this.isExpanded !== undefined) {
1788
- this.popup.isExpanded = this.isExpanded;
1789
- }
1790
- if (this.allowClose !== undefined) {
1791
- this.popup.allowClose = this.allowClose;
1792
- }
1793
- if (this.allowFullScreen !== undefined) {
1794
- this.popup.allowFullScreen = this.allowFullScreen;
1795
- }
1796
- if (this.closeOnCompleteTimeout !== undefined) {
1797
- this.popup.closeOnCompleteTimeout = this.closeOnCompleteTimeout;
1798
- }
1799
- this.popup.isShowing = true;
1800
- this.changeDetectorRef.detectChanges();
1801
- };
1802
- PopupSurveyComponent.prototype.ngOnDestroy = function () {
1803
- _super.prototype.ngOnDestroy.call(this);
1804
- this.popup.dispose();
1805
- };
1806
- return PopupSurveyComponent;
1807
- }(BaseAngular));
1808
- PopupSurveyComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupSurveyComponent, deps: [{ token: i0__namespace.ChangeDetectorRef }], target: i0__namespace.ɵɵFactoryTarget.Component });
1809
- PopupSurveyComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: PopupSurveyComponent, selector: "popup-survey", inputs: { model: "model", isExpanded: "isExpanded", allowClose: "allowClose", closeOnCompleteTimeout: "closeOnCompleteTimeout", allowFullScreen: "allowFullScreen", onClose: "onClose" }, usesInheritance: true, usesOnChanges: true, ngImport: i0__namespace, template: "<div *ngIf=\"!!popup && popup.isShowing\" [class]=\"popup.cssRoot\" [style.width]=\"popup.renderedWidth\" [style.maxWidth]=\"popup.renderedWidth\" (scroll)=\"popup.onScroll()\">\n <div [class]=\"popup.cssRootContent\">\n <div [class]=\"getHeaderCss()\">\n <div *ngIf=\"popup.isCollapsed && !!popup.locTitle\" [class]=\"popup.cssHeaderTitleCollapsed\">\n {{popup.locTitle.renderedHtml}}\n </div>\n <div [class]=\"popup.cssHeaderButtonsContainer\">\n <div *ngIf=\"popup.allowFullScreen\" [class]=\"popup.cssHeaderFullScreenButton\" (click)=\"popup.toggleFullScreen()\">\n <svg *ngIf=\"popup.isFullScreen\" [iconName]=\"'icon-back-to-panel_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n <svg *ngIf=\"!popup.isFullScreen\" [iconName]=\"'icon-full-screen_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n\n <div [class]=\"popup.cssHeaderCollapseButton\" (click)=\"popup.changeExpandCollapse()\">\n <svg *ngIf=\"popup.isExpanded\" [iconName]=\"'icon-minimize_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n <svg *ngIf=\"popup.isCollapsed\" [iconName]=\"'icon-restore_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n\n <div *ngIf=\"popup.allowClose\" [class]=\"popup.cssHeaderCloseButton\" (click)=\"closeHandler()\">\n <svg [iconName]=\"'icon-close_16x16'\" [size]=\"16\" sv-ng-svg-icon></svg>\n </div>\n </div>\n </div>\n <div [class]=\"popup.cssBody\">\n <survey [model]=\"popup.survey\"></survey>\n </div>\n </div>\n</div>", styles: [""], components: [{ type: SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: SurveyComponent, selector: "survey", inputs: ["model"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1810
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: PopupSurveyComponent, decorators: [{
1811
- type: i0.Component,
1812
- args: [{
1813
- selector: "popup-survey",
1814
- templateUrl: "./popup.survey.component.html",
1815
- styleUrls: ["./popup.survey.component.scss"]
1816
- }]
1817
- }], ctorParameters: function () { return [{ type: i0__namespace.ChangeDetectorRef }]; }, propDecorators: { model: [{
1818
- type: i0.Input
1819
- }], isExpanded: [{
1820
- type: i0.Input
1821
- }], allowClose: [{
1822
- type: i0.Input
1823
- }], closeOnCompleteTimeout: [{
1824
- type: i0.Input
1825
- }], allowFullScreen: [{
1826
- type: i0.Input
1827
- }], onClose: [{
1828
- type: i0.Input
1829
- }] } });
1830
+ AngularComponentFactory.Instance.registerComponent("sv-page", PageComponent);
1830
1831
 
1831
1832
  var QuestionAngular = /** @class */ (function (_super) {
1832
1833
  __extends(QuestionAngular, _super);
@@ -3498,12 +3499,15 @@
3498
3499
  return this.model;
3499
3500
  };
3500
3501
  ListItemComponent.prototype.ngAfterViewInit = function () {
3501
- this.listModel.onLastItemRended(this.model);
3502
+ var _a;
3503
+ if (!!((_a = this.elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
3504
+ this.listModel.onItemRended(this.model, this.elementRef.nativeElement);
3505
+ }
3502
3506
  };
3503
3507
  return ListItemComponent;
3504
3508
  }(BaseAngular));
3505
3509
  ListItemComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ListItemComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
3506
- ListItemComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, template: "<ng-template #template>\n <li [attr.role]=\"listModel.listItemRole\" [key2click]=\"{ processEsc: false, disableTabStop: model.disableTabStop }\" [visible]=\"listModel.isItemVisible(model)\" [class]=\"class\" \n [attr.id]=\"elementId\" [attr.aria-selected]=\"ariaSelected\" [attr.aria-checked]=\"ariaChecked\" (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]=\"itemStyle\" [attr.title]=\"model.getTooltip()\"\n (mouseover)=\"listModel.onItemHover(model)\"\n (mouseleave)=\"listModel.onItemLeave(model)\">\n <ng-template [component]=\"{ name: itemComponent, data: { model: model, listModel: listModel } }\"></ng-template>\n </div>\n </li>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
3510
+ ListItemComponent.ɵcmp = i0__namespace.ɵɵ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" }, viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["elementRef"], descendants: true }], usesInheritance: true, ngImport: i0__namespace, template: "<ng-template #template>\n <li #elementRef [attr.role]=\"listModel.listItemRole\" [key2click]=\"{ processEsc: false, disableTabStop: model.disableTabStop }\" [visible]=\"listModel.isItemVisible(model)\" [class]=\"class\" \n [attr.id]=\"elementId\" [attr.aria-selected]=\"ariaSelected\" [attr.aria-checked]=\"ariaChecked\" (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]=\"itemStyle\" [attr.title]=\"model.getTooltip()\"\n (mouseover)=\"listModel.onItemHover(model)\"\n (mouseleave)=\"listModel.onItemLeave(model)\">\n <ng-template [component]=\"{ name: itemComponent, data: { model: model, listModel: listModel } }\"></ng-template>\n </div>\n </li>\n</ng-template>", styles: [":host{display:none}\n"], directives: [{ type: Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
3507
3511
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: ListItemComponent, decorators: [{
3508
3512
  type: i0.Component,
3509
3513
  args: [{
@@ -3517,6 +3521,9 @@
3517
3521
  type: i0.Input
3518
3522
  }], listModel: [{
3519
3523
  type: i0.Input
3524
+ }], elementRef: [{
3525
+ type: i0.ViewChild,
3526
+ args: ["elementRef"]
3520
3527
  }] } });
3521
3528
  AngularComponentFactory.Instance.registerComponent("sv-list-item", ListItemComponent);
3522
3529
 
@@ -5150,7 +5157,7 @@
5150
5157
  return MatrixDynamicComponent;
5151
5158
  }(QuestionAngular));
5152
5159
  MatrixDynamicComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: MatrixDynamicComponent, deps: null, target: i0__namespace.ɵɵFactoryTarget.Component });
5153
- MatrixDynamicComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicComponent, selector: "sv-ng-matrixdynamic-question", usesInheritance: true, ngImport: i0__namespace, 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 <sv-ng-placeholder-matrixdynamic *ngIf=\"!model.renderedTable.showTable\" [question]=\"model\"></sv-ng-placeholder-matrixdynamic>\n \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: MatrixDynamicPlaceholderComponent, selector: "sv-ng-placeholder-matrixdynamic", inputs: ["question"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
5160
+ MatrixDynamicComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixDynamicComponent, selector: "sv-ng-matrixdynamic-question", usesInheritance: true, ngImport: i0__namespace, 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 <sv-ng-placeholder-matrixdynamic *ngIf=\"!model.renderedTable.showTable\" [question]=\"model\"></sv-ng-placeholder-matrixdynamic>\n \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\">\n <svg *ngIf=\"model.cssClasses.iconAddId\">\n <use [attr.xlink:href]=\"model.cssClasses.iconAddId\"></use>\n </svg>\n </span>\n </button>\n </ng-template>\n</ng-template>", components: [{ type: MatrixTableComponent, selector: "sv-ng-matrix-table", inputs: ["question", "table"] }, { type: MatrixDynamicPlaceholderComponent, selector: "sv-ng-placeholder-matrixdynamic", inputs: ["question"] }, { type: SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], directives: [{ type: i2__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2__namespace.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
5154
5161
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0__namespace, type: MatrixDynamicComponent, decorators: [{
5155
5162
  type: i0.Component,
5156
5163
  args: [{