UNPKG

survey-angular-ui

Version:

survey.js is a JavaScript Survey Library. It is a modern way to add a survey to your website. It uses JSON for survey metadata and results.

53 lines 13.6 kB
import { Component, Input } from "@angular/core"; import { QuestionAngular } from "../question"; import { AngularComponentFactory } from "../component-factory"; import * as i0 from "@angular/core"; import * as i1 from "../comment-other.component"; import * as i2 from "@angular/common"; import * as i3 from "../utils/dynamic.directive"; export class SelectBaseComponent extends QuestionAngular { constructor() { super(...arguments); this.inputType = "checkbox"; this.showLegend = true; } getDefaultComponentName() { return "sv-ng-selectbase-item"; } trackItemBy(_, item) { return item.value; } trackColumnBy(index) { return index; } getItemValueComponentName(item) { return this.model.getItemValueWrapperComponentName(item) || this.getDefaultComponentName(); } getItemValueComponentData(item) { const itemComponentProperty = this.model.getPropertyByName("itemComponent"); const isDefaultItemComponent = itemComponentProperty.isDefaultValue(this.model.itemComponent); const itemComponent = isDefaultItemComponent ? this.getDefaultComponentName() : this.model.itemComponent; return { componentName: itemComponent, componentData: { question: this.model, model: item, inputType: this.inputType, data: this.model.getItemValueWrapperComponentData(item) } }; } } SelectBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); SelectBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: SelectBaseComponent, selector: "['sv-ng-selectbase']", inputs: { model: "model" }, usesInheritance: true, ngImport: i0, template: "<fieldset [class]=\"model.getSelectBaseRootCss()\" #contentElement \n [attr.role]=\"model.a11y_input_ariaRole\"\n [attr.aria-required]=\"model.a11y_input_ariaRequired\"\n [attr.aria-label]=\"model.a11y_input_ariaLabel\"\n [attr.aria-labelledby]=\"model.a11y_input_ariaLabelledBy\"\n [attr.aria-describedby]=\"model.a11y_input_ariaDescribedBy\"\n [attr.aria-invalid]=\"model.a11y_input_ariaInvalid\"\n [attr.aria-errormessage]=\"model.a11y_input_ariaErrormessage\"\n>\n <legend *ngIf=\"showLegend\" class=\"sv-hidden\">{{model.locTitle.renderedHtml}}</legend>\n <ng-container *ngIf=\"model.hasHeadItems\">\n <ng-container *ngFor=\"let item of model.headItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!model.hasColumns && !model.blockedRow\">\n <ng-container *ngFor=\"let item of model.bodyItems; trackBy: trackItemBy\" >\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div [class]=\"model.cssClasses.rootRow\" *ngIf=\"!model.hasColumns && model.blockedRow\">\n <ng-container *ngFor=\"let item of model.dataChoices; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n <ng-container *ngIf=\"model.hasColumns\">\n <div [class]=\"model.cssClasses.rootMultiColumn\">\n <div [class]=\"model.getColumnClass()\" *ngFor=\"let column of model.columns; trackBy: trackColumnBy\" role=\"presentation\">\n <ng-container *ngFor=\"let item of column; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"model.hasFootItems\">\n <ng-container *ngFor=\"let item of model.footItems; trackBy: trackItemBy\">\n <ng-template [component]=\"{ name: getItemValueComponentName(item), data: getItemValueComponentData(item) }\"></ng-template>\n </ng-container>\n </ng-container>\n <div *ngIf=\"model.isOtherSelected\" [class]=\"model.getCommentAreaCss(true)\" [question]=\"model\" sv-ng-comment-other></div>\n <div *ngIf=\"model.showClearButtonInContent\">\n <input\n type=\"button\"\n (click)=\"model.clearValue(true)\"\n [value]=\"model.clearButtonCaption\"\n [class]=\"model.cssClasses.clearButton\"\n />\n </div>\n</fieldset>", components: [{ type: i1.SurveyCommentOtherComponent, selector: "sv-ng-comment-other, '[sv-ng-comment-other]'", inputs: ["question"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SelectBaseComponent, decorators: [{ type: Component, args: [{ selector: "['sv-ng-selectbase']", templateUrl: "./selectbase.component.html" }] }], propDecorators: { model: [{ type: Input }] } }); AngularComponentFactory.Instance.registerComponent("selectbase", SelectBaseComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL3NlbGVjdGJhc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9zZWxlY3RiYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBTS9ELE1BQU0sT0FBTyxtQkFBa0QsU0FBUSxlQUFrQjtJQUp6Rjs7UUFRUyxjQUFTLEdBQVcsVUFBVSxDQUFDO1FBQy9CLGVBQVUsR0FBWSxJQUFJLENBQUM7S0E4Qm5DO0lBNUJRLHVCQUF1QjtRQUM1QixPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFDTSxXQUFXLENBQUMsQ0FBUyxFQUFFLElBQWU7UUFDM0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxJQUFlO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUM3RixDQUFDO0lBQ00seUJBQXlCLENBQUMsSUFBZTtRQUM5QyxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUUsTUFBTSxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RixNQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBRXpHLE9BQU87WUFDTCxhQUFhLEVBQUUsYUFBYTtZQUM1QixhQUFhLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNwQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQzthQUN4RDtTQUNGLENBQUM7SUFDSixDQUFDOztpSEFsQ1UsbUJBQW1CO3FHQUFuQixtQkFBbUIsK0dDVGhDLHFxRkFnRFc7NEZEdkNFLG1CQUFtQjtrQkFKL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxXQUFXLEVBQUUsNkJBQTZCO2lCQUMzQzs4QkFHbUIsS0FBSztzQkFBdEIsS0FBSzs7QUFtQ1IsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBRdWVzdGlvbkFuZ3VsYXIgfSBmcm9tIFwiLi4vcXVlc3Rpb25cIjtcbmltcG9ydCB7IEl0ZW1WYWx1ZSwgUXVlc3Rpb25SYWRpb2dyb3VwTW9kZWwsIFF1ZXN0aW9uU2VsZWN0QmFzZSB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vY29tcG9uZW50LWZhY3RvcnlcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIlsnc3Ytbmctc2VsZWN0YmFzZSddXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2VsZWN0YmFzZS5jb21wb25lbnQuaHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJhc2VDb21wb25lbnQ8VCBleHRlbmRzIFF1ZXN0aW9uU2VsZWN0QmFzZT4gZXh0ZW5kcyBRdWVzdGlvbkFuZ3VsYXI8VD4ge1xuICAvLyN0b2RvIHRlbXAgZml4IChDYW5DbGVhckJ1dHRvbiBzaG91bGQgYmUgcGxhY2VkIGluIHNlbGVjdGJhc2Ugc28gaXQgY291bGQgd29yayB3aXRoIGltYWdlcGlja2VyKVxuICBASW5wdXQoKSBvdmVycmlkZSBtb2RlbCE6IGFueTtcblxuICBwdWJsaWMgaW5wdXRUeXBlOiBzdHJpbmcgPSBcImNoZWNrYm94XCI7XG4gIHB1YmxpYyBzaG93TGVnZW5kOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgZ2V0RGVmYXVsdENvbXBvbmVudE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJzdi1uZy1zZWxlY3RiYXNlLWl0ZW1cIjtcbiAgfVxuICBwdWJsaWMgdHJhY2tJdGVtQnkoXzogbnVtYmVyLCBpdGVtOiBJdGVtVmFsdWUpOiBhbnkge1xuICAgIHJldHVybiBpdGVtLnZhbHVlO1xuICB9XG4gIHB1YmxpYyB0cmFja0NvbHVtbkJ5KGluZGV4OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtVmFsdWVDb21wb25lbnROYW1lKGl0ZW06IEl0ZW1WYWx1ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWwuZ2V0SXRlbVZhbHVlV3JhcHBlckNvbXBvbmVudE5hbWUoaXRlbSkgfHwgdGhpcy5nZXREZWZhdWx0Q29tcG9uZW50TmFtZSgpO1xuICB9XG4gIHB1YmxpYyBnZXRJdGVtVmFsdWVDb21wb25lbnREYXRhKGl0ZW06IEl0ZW1WYWx1ZSk6IGFueSB7XG4gICAgY29uc3QgaXRlbUNvbXBvbmVudFByb3BlcnR5ID0gdGhpcy5tb2RlbC5nZXRQcm9wZXJ0eUJ5TmFtZShcIml0ZW1Db21wb25lbnRcIik7XG4gICAgY29uc3QgaXNEZWZhdWx0SXRlbUNvbXBvbmVudCA9IGl0ZW1Db21wb25lbnRQcm9wZXJ0eS5pc0RlZmF1bHRWYWx1ZSh0aGlzLm1vZGVsLml0ZW1Db21wb25lbnQpO1xuICAgIGNvbnN0IGl0ZW1Db21wb25lbnQgPSBpc0RlZmF1bHRJdGVtQ29tcG9uZW50ID8gdGhpcy5nZXREZWZhdWx0Q29tcG9uZW50TmFtZSgpIDogdGhpcy5tb2RlbC5pdGVtQ29tcG9uZW50O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbXBvbmVudE5hbWU6IGl0ZW1Db21wb25lbnQsXG4gICAgICBjb21wb25lbnREYXRhOiB7XG4gICAgICAgIHF1ZXN0aW9uOiB0aGlzLm1vZGVsLFxuICAgICAgICBtb2RlbDogaXRlbSxcbiAgICAgICAgaW5wdXRUeXBlOiB0aGlzLmlucHV0VHlwZSxcbiAgICAgICAgZGF0YTogdGhpcy5tb2RlbC5nZXRJdGVtVmFsdWVXcmFwcGVyQ29tcG9uZW50RGF0YShpdGVtKVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzZWxlY3RiYXNlXCIsIFNlbGVjdEJhc2VDb21wb25lbnQpOyIsIjxmaWVsZHNldCBbY2xhc3NdPVwibW9kZWwuZ2V0U2VsZWN0QmFzZVJvb3RDc3MoKVwiICNjb250ZW50RWxlbWVudCBcbiAgW2F0dHIucm9sZV09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFSb2xlXCJcbiAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFSZXF1aXJlZFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhTGFiZWxcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhTGFiZWxsZWRCeVwiXG4gIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhRGVzY3JpYmVkQnlcIlxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhSW52YWxpZFwiXG4gIFthdHRyLmFyaWEtZXJyb3JtZXNzYWdlXT1cIm1vZGVsLmExMXlfaW5wdXRfYXJpYUVycm9ybWVzc2FnZVwiXG4+XG4gIDxsZWdlbmQgKm5nSWY9XCJzaG93TGVnZW5kXCIgY2xhc3M9XCJzdi1oaWRkZW5cIj57e21vZGVsLmxvY1RpdGxlLnJlbmRlcmVkSHRtbH19PC9sZWdlbmQ+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5oYXNIZWFkSXRlbXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsLmhlYWRJdGVtczsgdHJhY2tCeTogdHJhY2tJdGVtQnlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbW9kZWwuaGFzQ29sdW1ucyAmJiAhbW9kZWwuYmxvY2tlZFJvd1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWwuYm9keUl0ZW1zOyB0cmFja0J5OiB0cmFja0l0ZW1CeVwiID5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdFJvd1wiICpuZ0lmPVwiIW1vZGVsLmhhc0NvbHVtbnMgJiYgbW9kZWwuYmxvY2tlZFJvd1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWwuZGF0YUNob2ljZXM7IHRyYWNrQnk6IHRyYWNrSXRlbUJ5XCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudE5hbWUoaXRlbSksIGRhdGE6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudERhdGEoaXRlbSkgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuaGFzQ29sdW1uc1wiPlxuICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdE11bHRpQ29sdW1uXCI+XG4gICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5nZXRDb2x1bW5DbGFzcygpXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtb2RlbC5jb2x1bW5zOyB0cmFja0J5OiB0cmFja0NvbHVtbkJ5XCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbHVtbjsgdHJhY2tCeTogdHJhY2tJdGVtQnlcIj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudE5hbWUoaXRlbSksIGRhdGE6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudERhdGEoaXRlbSkgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZWwuaGFzRm9vdEl0ZW1zXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5mb290SXRlbXM7IHRyYWNrQnk6IHRyYWNrSXRlbUJ5XCI+XG4gICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudE5hbWUoaXRlbSksIGRhdGE6IGdldEl0ZW1WYWx1ZUNvbXBvbmVudERhdGEoaXRlbSkgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2ICpuZ0lmPVwibW9kZWwuaXNPdGhlclNlbGVjdGVkXCIgW2NsYXNzXT1cIm1vZGVsLmdldENvbW1lbnRBcmVhQ3NzKHRydWUpXCIgW3F1ZXN0aW9uXT1cIm1vZGVsXCIgc3YtbmctY29tbWVudC1vdGhlcj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIm1vZGVsLnNob3dDbGVhckJ1dHRvbkluQ29udGVudFwiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwibW9kZWwuY2xlYXJWYWx1ZSh0cnVlKVwiXG4gICAgICBbdmFsdWVdPVwibW9kZWwuY2xlYXJCdXR0b25DYXB0aW9uXCJcbiAgICAgIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmNsZWFyQnV0dG9uXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvZmllbGRzZXQ+Il19