UNPKG

survey-angular-ui

Version:

A free MIT-licensed Angular UI component that renders dynamic, interactive JSON-based forms and surveys. You can use it to collect responses from users and send them to your own database.

68 lines 12.3 kB
import { Component, ElementRef, Input, ViewChild } from "@angular/core"; import { BaseAngular } from "../base-angular"; import { AngularComponentFactory } from "../component-factory"; import * as i0 from "@angular/core"; import * as i1 from "./checkbox-item.component"; import * as i2 from "./radiogroup-item.component"; import * as i3 from "../survey-string.component"; import * as i4 from "../panel.component"; import * as i5 from "../comment-choice.component"; import * as i6 from "@angular/common"; export class SelectBaseItemComponent extends BaseAngular { constructor() { super(...arguments); this.showLabel = true; } getModel() { return this.model; } onModelChanged() { var _a; super.onModelChanged(); if (!this.question.isDesignMode) { if (this.previousModel) { this.previousModel.setRootElement(undefined); } if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement)) { this.model.setRootElement(this.container.nativeElement); } } } ngAfterViewInit() { var _a; if (this.model && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement) && !this.question.isDesignMode) { this.model.setRootElement(this.container.nativeElement); } } ngOnDestroy() { super.ngOnDestroy(); if (this.model && !this.question.isDesignMode) { this.model.setRootElement(undefined); } } } SelectBaseItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); SelectBaseItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseItemComponent, selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", inputs: { question: "question", model: "model", inputType: "inputType", showLabel: "showLabel", ariaLabel: "ariaLabel" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div role=\"presentation\" [class]=\"question.getItemClass(model)\" #container>\n <ng-container [ngSwitch]=\"inputType\">\n <label *ngSwitchCase=\"'checkbox'\" [class]=\"question.getLabelClass(model)\" [model]=\"model\" [question]=\"question\"\n sv-ng-checkbox-item [ariaLabel]=\"ariaLabel\">\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n <label *ngSwitchCase=\"'radio'\" (mousedown)=\"question.onMouseDown()\" [class]=\"question.getLabelClass(model)\"\n [model]=\"model\" [question]=\"question\" sv-ng-radiogroup-item [ariaLabel]=\"ariaLabel\">\n <ng-container *ngTemplateOutlet=\"itemDecorator\"></ng-container>\n </label>\n </ng-container>\n <ng-template #itemDecorator>\n <span *ngIf=\"question.cssClasses.materialDecorator\" [class]=\"question.cssClasses.materialDecorator\">\n <svg *ngIf=\"question.itemSvgIcon\" [class]=\"question.cssClasses.itemDecorator\">\n <use [attr.xlink:href]=\"question.itemSvgIcon\"></use>\n </svg>\n </span>\n <span [class]=\"question.getControlLabelClass(model)\" *ngIf=\"!model.hideCaption\">\n <sv-ng-string [model]=\"model.locText\"></sv-ng-string>\n </span>\n </ng-template>\n </div>\n <sv-ng-panel *ngIf=\"model.isPanelShowing\" [model]='model.panel'></sv-ng-panel>\n <div *ngIf=\"model.isCommentShowing\" [class]=\"question.getCommentAreaCss(true)\" [question]=\"question\" [item]=\"model\" sv-ng-comment-choice></div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.CheckboxItemComponent, selector: "sv-ng-checkbox-item, '[sv-ng-checkbox-item]'", inputs: ["question", "model", "ariaLabel"] }, { type: i2.RadiogroupItemComponent, selector: "sv-ng-radiogroup-item, '[sv-ng-radiogroup-item]'", inputs: ["question", "model", "ariaLabel"] }, { type: i3.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: i4.PanelComponent, selector: "sv-ng-panel, '[sv-ng-panel]'", inputs: ["model"] }, { type: i5.SurveyCommentChoiceComponent, selector: "sv-ng-comment-choice, '[sv-ng-comment-choice]'", inputs: ["question", "item"] }], directives: [{ type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseItemComponent, decorators: [{ type: Component, args: [{ selector: "['sv-ng-selectbase-item'], sv-ng-selebase-item", templateUrl: "./selectbase-item.html", styles: [":host { display: none; }"] }] }], propDecorators: { question: [{ type: Input }], model: [{ type: Input }], inputType: [{ type: Input }], showLabel: [{ type: Input }], ariaLabel: [{ type: Input }], container: [{ type: ViewChild, args: ["container", { read: ElementRef }] }] } }); AngularComponentFactory.Instance.registerComponent("sv-ng-selectbase-item", SelectBaseItemComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9zZWxlY3RiYXNlLWl0ZW0udHMiLCIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL3NlbGVjdGJhc2UtaXRlbS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7QUFPL0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLFdBQXNCO0lBTG5FOztRQVVXLGNBQVMsR0FBWSxJQUFJLENBQUM7S0E0QnBDO0lBekJXLFFBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDa0IsY0FBYzs7UUFDL0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRTtZQUMvQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLFNBQWdCLENBQUMsQ0FBQzthQUNyRDtZQUNELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3pEO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsZUFBZTs7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUksTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxhQUFhLENBQUEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO1lBQzlFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDekQ7SUFDSCxDQUFDO0lBQ1EsV0FBVztRQUNsQixLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDN0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDOztxSEFoQ1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsbVNBT0YsVUFBVSxvRENqQjVDLGdoREF5QmM7NEZEZkQsdUJBQXVCO2tCQUxuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnREFBZ0Q7b0JBQzFELFdBQVcsRUFBRSx3QkFBd0I7b0JBQ3JDLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNyQzs4QkFHVSxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQTRCOUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQmFzZUFuZ3VsYXIgfSBmcm9tIFwiLi4vYmFzZS1hbmd1bGFyXCI7XG5pbXBvcnQgeyBJdGVtVmFsdWUgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4uL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJbJ3N2LW5nLXNlbGVjdGJhc2UtaXRlbSddLCBzdi1uZy1zZWxlYmFzZS1pdGVtXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2VsZWN0YmFzZS1pdGVtLmh0bWxcIixcbiAgc3R5bGVzOiBbXCI6aG9zdCB7IGRpc3BsYXk6IG5vbmU7IH1cIl1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0QmFzZUl0ZW1Db21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhcjxJdGVtVmFsdWU+IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQElucHV0KCkgcXVlc3Rpb24hOiBhbnk7XG4gIEBJbnB1dCgpIG1vZGVsITogSXRlbVZhbHVlIHwgYW55O1xuICBASW5wdXQoKSBpbnB1dFR5cGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dMYWJlbDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFyaWFMYWJlbD86IHN0cmluZztcbiAgQFZpZXdDaGlsZChcImNvbnRhaW5lclwiLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSkgY29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gIHByb3RlY3RlZCBnZXRNb2RlbCgpOiBJdGVtVmFsdWUge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG4gIHByb3RlY3RlZCBvdmVycmlkZSBvbk1vZGVsQ2hhbmdlZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbk1vZGVsQ2hhbmdlZCgpO1xuICAgIGlmICghdGhpcy5xdWVzdGlvbi5pc0Rlc2lnbk1vZGUpIHtcbiAgICAgIGlmICh0aGlzLnByZXZpb3VzTW9kZWwpIHtcbiAgICAgICAgdGhpcy5wcmV2aW91c01vZGVsLnNldFJvb3RFbGVtZW50KHVuZGVmaW5lZCBhcyBhbnkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZWwgJiYgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5tb2RlbC5zZXRSb290RWxlbWVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGVsICYmIHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50ICYmICF0aGlzLnF1ZXN0aW9uLmlzRGVzaWduTW9kZSkge1xuICAgICAgdGhpcy5tb2RlbC5zZXRSb290RWxlbWVudCh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5tb2RlbCAmJiAhdGhpcy5xdWVzdGlvbi5pc0Rlc2lnbk1vZGUpIHtcbiAgICAgIHRoaXMubW9kZWwuc2V0Um9vdEVsZW1lbnQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzdi1uZy1zZWxlY3RiYXNlLWl0ZW1cIiwgU2VsZWN0QmFzZUl0ZW1Db21wb25lbnQpOyIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgcm9sZT1cInByZXNlbnRhdGlvblwiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRJdGVtQ2xhc3MobW9kZWwpXCIgI2NvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJpbnB1dFR5cGVcIj5cbiAgICAgIDxsYWJlbCAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiIFtjbGFzc109XCJxdWVzdGlvbi5nZXRMYWJlbENsYXNzKG1vZGVsKVwiIFttb2RlbF09XCJtb2RlbFwiIFtxdWVzdGlvbl09XCJxdWVzdGlvblwiXG4gICAgICAgIHN2LW5nLWNoZWNrYm94LWl0ZW0gW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1EZWNvcmF0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8bGFiZWwgKm5nU3dpdGNoQ2FzZT1cIidyYWRpbydcIiAobW91c2Vkb3duKT1cInF1ZXN0aW9uLm9uTW91c2VEb3duKClcIiBbY2xhc3NdPVwicXVlc3Rpb24uZ2V0TGFiZWxDbGFzcyhtb2RlbClcIlxuICAgICAgICBbbW9kZWxdPVwibW9kZWxcIiBbcXVlc3Rpb25dPVwicXVlc3Rpb25cIiBzdi1uZy1yYWRpb2dyb3VwLWl0ZW0gW2FyaWFMYWJlbF09XCJhcmlhTGFiZWxcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1EZWNvcmF0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNpdGVtRGVjb3JhdG9yPlxuICAgICAgPHNwYW4gKm5nSWY9XCJxdWVzdGlvbi5jc3NDbGFzc2VzLm1hdGVyaWFsRGVjb3JhdG9yXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMubWF0ZXJpYWxEZWNvcmF0b3JcIj5cbiAgICAgICAgPHN2ZyAqbmdJZj1cInF1ZXN0aW9uLml0ZW1TdmdJY29uXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmNzc0NsYXNzZXMuaXRlbURlY29yYXRvclwiPlxuICAgICAgICAgIDx1c2UgW2F0dHIueGxpbms6aHJlZl09XCJxdWVzdGlvbi5pdGVtU3ZnSWNvblwiPjwvdXNlPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIFtjbGFzc109XCJxdWVzdGlvbi5nZXRDb250cm9sTGFiZWxDbGFzcyhtb2RlbClcIiAqbmdJZj1cIiFtb2RlbC5oaWRlQ2FwdGlvblwiPlxuICAgICAgICA8c3Ytbmctc3RyaW5nIFttb2RlbF09XCJtb2RlbC5sb2NUZXh0XCI+PC9zdi1uZy1zdHJpbmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxzdi1uZy1wYW5lbCAqbmdJZj1cIm1vZGVsLmlzUGFuZWxTaG93aW5nXCIgW21vZGVsXT0nbW9kZWwucGFuZWwnPjwvc3YtbmctcGFuZWw+XG4gIDxkaXYgKm5nSWY9XCJtb2RlbC5pc0NvbW1lbnRTaG93aW5nXCIgW2NsYXNzXT1cInF1ZXN0aW9uLmdldENvbW1lbnRBcmVhQ3NzKHRydWUpXCIgW3F1ZXN0aW9uXT1cInF1ZXN0aW9uXCIgW2l0ZW1dPVwibW9kZWxcIiBzdi1uZy1jb21tZW50LWNob2ljZT48L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19