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
JavaScript
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