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.
52 lines • 13.1 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 "@angular/common";
import * as i2 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.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>", directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0YmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlc3Rpb25zL3NlbGVjdGJhc2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3JjL3F1ZXN0aW9ucy9zZWxlY3RiYXNlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFNL0QsTUFBTSxPQUFPLG1CQUFrRCxTQUFRLGVBQWtCO0lBSnpGOztRQVFTLGNBQVMsR0FBVyxVQUFVLENBQUM7UUFDL0IsZUFBVSxHQUFZLElBQUksQ0FBQztLQThCbkM7SUE1QlEsdUJBQXVCO1FBQzVCLE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQztJQUNNLFdBQVcsQ0FBQyxDQUFTLEVBQUUsSUFBZTtRQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNNLGFBQWEsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVNLHlCQUF5QixDQUFDLElBQWU7UUFDOUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFDTSx5QkFBeUIsQ0FBQyxJQUFlO1FBQzlDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RSxNQUFNLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlGLE1BQU0sYUFBYSxHQUFHLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFekcsT0FBTztZQUNMLGFBQWEsRUFBRSxhQUFhO1lBQzVCLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ3BCLEtBQUssRUFBRSxJQUFJO2dCQUNYLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUFDO2FBQ3hEO1NBQ0YsQ0FBQztJQUNKLENBQUM7O2lIQWxDVSxtQkFBbUI7cUdBQW5CLG1CQUFtQiwrR0NUaEMsbWlGQStDVzs0RkR0Q0UsbUJBQW1CO2tCQUovQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSw2QkFBNkI7aUJBQzNDOzhCQUdtQixLQUFLO3NCQUF0QixLQUFLOztBQW1DUix1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFF1ZXN0aW9uQW5ndWxhciB9IGZyb20gXCIuLi9xdWVzdGlvblwiO1xuaW1wb3J0IHsgSXRlbVZhbHVlLCBRdWVzdGlvblJhZGlvZ3JvdXBNb2RlbCwgUXVlc3Rpb25TZWxlY3RCYXNlIH0gZnJvbSBcInN1cnZleS1jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyQ29tcG9uZW50RmFjdG9yeSB9IGZyb20gXCIuLi9jb21wb25lbnQtZmFjdG9yeVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiWydzdi1uZy1zZWxlY3RiYXNlJ11cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9zZWxlY3RiYXNlLmNvbXBvbmVudC5odG1sXCJcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0QmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgUXVlc3Rpb25TZWxlY3RCYXNlPiBleHRlbmRzIFF1ZXN0aW9uQW5ndWxhcjxUPiB7XG4gIC8vI3RvZG8gdGVtcCBmaXggKENhbkNsZWFyQnV0dG9uIHNob3VsZCBiZSBwbGFjZWQgaW4gc2VsZWN0YmFzZSBzbyBpdCBjb3VsZCB3b3JrIHdpdGggaW1hZ2VwaWNrZXIpXG4gIEBJbnB1dCgpIG92ZXJyaWRlIG1vZGVsITogYW55O1xuXG4gIHB1YmxpYyBpbnB1dFR5cGU6IHN0cmluZyA9IFwiY2hlY2tib3hcIjtcbiAgcHVibGljIHNob3dMZWdlbmQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29tcG9uZW50TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBcInN2LW5nLXNlbGVjdGJhc2UtaXRlbVwiO1xuICB9XG4gIHB1YmxpYyB0cmFja0l0ZW1CeShfOiBudW1iZXIsIGl0ZW06IEl0ZW1WYWx1ZSk6IGFueSB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cbiAgcHVibGljIHRyYWNrQ29sdW1uQnkoaW5kZXg6IG51bWJlcik6IGFueSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHVibGljIGdldEl0ZW1WYWx1ZUNvbXBvbmVudE5hbWUoaXRlbTogSXRlbVZhbHVlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbC5nZXRJdGVtVmFsdWVXcmFwcGVyQ29tcG9uZW50TmFtZShpdGVtKSB8fCB0aGlzLmdldERlZmF1bHRDb21wb25lbnROYW1lKCk7XG4gIH1cbiAgcHVibGljIGdldEl0ZW1WYWx1ZUNvbXBvbmVudERhdGEoaXRlbTogSXRlbVZhbHVlKTogYW55IHtcbiAgICBjb25zdCBpdGVtQ29tcG9uZW50UHJvcGVydHkgPSB0aGlzLm1vZGVsLmdldFByb3BlcnR5QnlOYW1lKFwiaXRlbUNvbXBvbmVudFwiKTtcbiAgICBjb25zdCBpc0RlZmF1bHRJdGVtQ29tcG9uZW50ID0gaXRlbUNvbXBvbmVudFByb3BlcnR5LmlzRGVmYXVsdFZhbHVlKHRoaXMubW9kZWwuaXRlbUNvbXBvbmVudCk7XG4gICAgY29uc3QgaXRlbUNvbXBvbmVudCA9IGlzRGVmYXVsdEl0ZW1Db21wb25lbnQgPyB0aGlzLmdldERlZmF1bHRDb21wb25lbnROYW1lKCkgOiB0aGlzLm1vZGVsLml0ZW1Db21wb25lbnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50TmFtZTogaXRlbUNvbXBvbmVudCxcbiAgICAgIGNvbXBvbmVudERhdGE6IHtcbiAgICAgICAgcXVlc3Rpb246IHRoaXMubW9kZWwsXG4gICAgICAgIG1vZGVsOiBpdGVtLFxuICAgICAgICBpbnB1dFR5cGU6IHRoaXMuaW5wdXRUeXBlLFxuICAgICAgICBkYXRhOiB0aGlzLm1vZGVsLmdldEl0ZW1WYWx1ZVdyYXBwZXJDb21wb25lbnREYXRhKGl0ZW0pXG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInNlbGVjdGJhc2VcIiwgU2VsZWN0QmFzZUNvbXBvbmVudCk7IiwiPGZpZWxkc2V0IFtjbGFzc109XCJtb2RlbC5nZXRTZWxlY3RCYXNlUm9vdENzcygpXCIgI2NvbnRlbnRFbGVtZW50IFxuICBbYXR0ci5yb2xlXT1cIm1vZGVsLmExMXlfaW5wdXRfYXJpYVJvbGVcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cIm1vZGVsLmExMXlfaW5wdXRfYXJpYVJlcXVpcmVkXCJcbiAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFMYWJlbGxlZEJ5XCJcbiAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFEZXNjcmliZWRCeVwiXG4gIFthdHRyLmFyaWEtaW52YWxpZF09XCJtb2RlbC5hMTF5X2lucHV0X2FyaWFJbnZhbGlkXCJcbiAgW2F0dHIuYXJpYS1lcnJvcm1lc3NhZ2VdPVwibW9kZWwuYTExeV9pbnB1dF9hcmlhRXJyb3JtZXNzYWdlXCJcbj5cbiAgPGxlZ2VuZCAqbmdJZj1cInNob3dMZWdlbmRcIiBjbGFzcz1cInN2LWhpZGRlblwiPnt7bW9kZWwubG9jVGl0bGUucmVuZGVyZWRIdG1sfX08L2xlZ2VuZD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmhhc0hlYWRJdGVtc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWwuaGVhZEl0ZW1zOyB0cmFja0J5OiB0cmFja0l0ZW1CeVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBnZXRJdGVtVmFsdWVDb21wb25lbnROYW1lKGl0ZW0pLCBkYXRhOiBnZXRJdGVtVmFsdWVDb21wb25lbnREYXRhKGl0ZW0pIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2RlbC5oYXNDb2x1bW5zICYmICFtb2RlbC5ibG9ja2VkUm93XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5ib2R5SXRlbXM7IHRyYWNrQnk6IHRyYWNrSXRlbUJ5XCIgPlxuICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBnZXRJdGVtVmFsdWVDb21wb25lbnROYW1lKGl0ZW0pLCBkYXRhOiBnZXRJdGVtVmFsdWVDb21wb25lbnREYXRhKGl0ZW0pIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5yb290Um93XCIgKm5nSWY9XCIhbW9kZWwuaGFzQ29sdW1ucyAmJiBtb2RlbC5ibG9ja2VkUm93XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5kYXRhQ2hvaWNlczsgdHJhY2tCeTogdHJhY2tJdGVtQnlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5oYXNDb2x1bW5zXCI+XG4gICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5yb290TXVsdGlDb2x1bW5cIj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmdldENvbHVtbkNsYXNzKClcIiAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1vZGVsLmNvbHVtbnM7IHRyYWNrQnk6IHRyYWNrQ29sdW1uQnlcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgY29sdW1uOyB0cmFja0J5OiB0cmFja0l0ZW1CeVwiPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5oYXNGb290SXRlbXNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1vZGVsLmZvb3RJdGVtczsgdHJhY2tCeTogdHJhY2tJdGVtQnlcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50TmFtZShpdGVtKSwgZGF0YTogZ2V0SXRlbVZhbHVlQ29tcG9uZW50RGF0YShpdGVtKSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgKm5nSWY9XCJtb2RlbC5zaG93Q2xlYXJCdXR0b25JbkNvbnRlbnRcIj5cbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm1vZGVsLmNsZWFyVmFsdWUodHJ1ZSlcIlxuICAgICAgW3ZhbHVlXT1cIm1vZGVsLmNsZWFyQnV0dG9uQ2FwdGlvblwiXG4gICAgICBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5jbGVhckJ1dHRvblwiXG4gICAgLz5cbiAgPC9kaXY+XG48L2ZpZWxkc2V0PiJdfQ==