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.
37 lines • 10.9 kB
JavaScript
import { Component } from "@angular/core";
import { QuestionAngular } from "../question";
import { AngularComponentFactory } from "../component-factory";
import * as i0 from "@angular/core";
import * as i1 from "../survey-string.component";
import * as i2 from "@angular/common";
import * as i3 from "../utils/dynamic.directive";
export class MatrixQuestionComponent extends QuestionAngular {
ngOnInit() {
this.model.visibleRowsChangedCallback = () => {
this.detectChanges();
};
super.ngOnInit();
}
onCellChanged(row, column) {
row.cellClick(column);
this.detectChanges();
}
trackRowByFn(i, row) {
return "column-" + row.name + "-" + i;
}
trackColumnByFn(i, column) {
return "column-" + column.value + "-" + i;
}
}
MatrixQuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: MatrixQuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
MatrixQuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: MatrixQuestionComponent, selector: "sv-ng-matrix-question", usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.tableWrapper\" #contentElement>\n <fieldset role=\"radiogroup\">\n <legend class=\"sv-visuallyhidden\">{{model.locTitle.renderedHtml}}</legend>\n <table [class]=\"model.getTableCss()\" role=\"presentation\">\n <thead *ngIf=\"model.showHeader\" role=\"presentation\">\n <tr>\n <td *ngIf=\"model.hasRows\"></td>\n <th\n *ngFor=\"let column of model.visibleColumns\" [style]=\"{ minWidth: model.columnMinWidth, width: model.columnMinWidth }\" [class]=\"model.cssClasses.headerCell\">\n <ng-template [component]=\"{ name: model.getColumnHeaderWrapperComponentName(column), data: { componentData: model.getColumnHeaderWrapperComponentData(column) } }\">\n <sv-ng-string [model]=\"column.locText\"></sv-ng-string>\n </ng-template>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of model.visibleRows; trackBy: trackRowByFn \" [class]=\"row.rowClasses || undefined\">\n <td [class]=\"row.rowTextClasses\" [style]=\"{ minWidth: model.rowTitleWidth, width: model.rowTitleWidth }\" *ngIf=\"model.hasRows\">\n <ng-template [component]=\"{ name: model.getRowHeaderWrapperComponentName($any(row)), data: { componentData: model.getRowHeaderWrapperComponentData($any(row)) } }\">\n <sv-ng-string [model]=\"row.locText\"></sv-ng-string>\n </ng-template>\n </td>\n <ng-container *ngIf=\"model.hasCellText\">\n <td *ngFor=\"let column of model.visibleColumns\"\n [class]=\"model.getItemClass(row, column)\"\n (click)=\"onCellChanged(row, column)\" [model]=\"model.getCellDisplayLocText(row.name, column)\" sv-ng-string>\n </td>\n </ng-container>\n <ng-container *ngIf=\"!model.hasCellText\">\n <td\n *ngFor=\"let column of model.visibleColumns; index as columnIndex; trackBy: trackColumnByFn\"\n [attr.data-responsive-title]=\"column.locText.renderedHtml\"\n [class]=\"model.cssClasses.cell\">\n <ng-template [component]=\"{ name: model.cellComponent, data: { cellChangedOwner: this, question: model, row: row, column: column, columnIndex: columnIndex } }\"></ng-template>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </fieldset>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: i1.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }], 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: MatrixQuestionComponent, decorators: [{
type: Component,
args: [{
selector: "sv-ng-matrix-question",
templateUrl: "./matrix.component.html",
styleUrls: ["../hide-host.scss"]
}]
}] });
AngularComponentFactory.Instance.registerComponent("matrix-question", MatrixQuestionComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0cml4LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvbWF0cml4LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NyYy9xdWVzdGlvbnMvbWF0cml4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7QUFPL0QsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGVBQW9DO0lBQ3RFLFFBQVE7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDO1FBQ0YsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDTSxhQUFhLENBQUMsR0FBUSxFQUFFLE1BQVc7UUFDeEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELFlBQVksQ0FBQyxDQUFTLEVBQUUsR0FBUTtRQUM5QixPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUFTLEVBQUUsTUFBVztRQUNwQyxPQUFPLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7cUhBaEJVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLG9GQ1ZwQyx5K0VBMENjOzRGRGhDRCx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLHlCQUF5QjtvQkFDdEMsU0FBUyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ2pDOztBQW9CRCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBRdWVzdGlvbkFuZ3VsYXIgfSBmcm9tIFwiLi4vcXVlc3Rpb25cIjtcbmltcG9ydCB7IFF1ZXN0aW9uTWF0cml4TW9kZWwgfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4uL2NvbXBvbmVudC1mYWN0b3J5XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJzdi1uZy1tYXRyaXgtcXVlc3Rpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9tYXRyaXguY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuLi9oaWRlLWhvc3Quc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRyaXhRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIFF1ZXN0aW9uQW5ndWxhcjxRdWVzdGlvbk1hdHJpeE1vZGVsPiB7XG4gIG92ZXJyaWRlIG5nT25Jbml0KCkge1xuICAgIHRoaXMubW9kZWwudmlzaWJsZVJvd3NDaGFuZ2VkQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcbiAgICB9O1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cbiAgcHVibGljIG9uQ2VsbENoYW5nZWQocm93OiBhbnksIGNvbHVtbjogYW55KTogdm9pZCB7XG4gICAgcm93LmNlbGxDbGljayhjb2x1bW4pO1xuICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIHRyYWNrUm93QnlGbihpOiBudW1iZXIsIHJvdzogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCJjb2x1bW4tXCIgKyByb3cubmFtZSArIFwiLVwiICsgaTtcbiAgfVxuICB0cmFja0NvbHVtbkJ5Rm4oaTogbnVtYmVyLCBjb2x1bW46IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiY29sdW1uLVwiICsgY29sdW1uLnZhbHVlICsgXCItXCIgKyBpO1xuICB9XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwibWF0cml4LXF1ZXN0aW9uXCIsIE1hdHJpeFF1ZXN0aW9uQ29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnRhYmxlV3JhcHBlclwiICNjb250ZW50RWxlbWVudD5cbiAgICA8ZmllbGRzZXQgcm9sZT1cInJhZGlvZ3JvdXBcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJzdi12aXN1YWxseWhpZGRlblwiPnt7bW9kZWwubG9jVGl0bGUucmVuZGVyZWRIdG1sfX08L2xlZ2VuZD5cbiAgICAgIDx0YWJsZSBbY2xhc3NdPVwibW9kZWwuZ2V0VGFibGVDc3MoKVwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgPHRoZWFkICpuZ0lmPVwibW9kZWwuc2hvd0hlYWRlclwiIHJvbGU9XCJwcmVzZW50YXRpb25cIj5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJtb2RlbC5oYXNSb3dzXCI+PC90ZD5cbiAgICAgICAgICAgIDx0aFxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1vZGVsLnZpc2libGVDb2x1bW5zXCIgW3N0eWxlXT1cInsgbWluV2lkdGg6IG1vZGVsLmNvbHVtbk1pbldpZHRoLCB3aWR0aDogbW9kZWwuY29sdW1uTWluV2lkdGggfVwiIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmhlYWRlckNlbGxcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBtb2RlbC5nZXRDb2x1bW5IZWFkZXJXcmFwcGVyQ29tcG9uZW50TmFtZShjb2x1bW4pLCBkYXRhOiB7IGNvbXBvbmVudERhdGE6IG1vZGVsLmdldENvbHVtbkhlYWRlcldyYXBwZXJDb21wb25lbnREYXRhKGNvbHVtbikgfSB9XCI+XG4gICAgICAgICAgICAgICAgPHN2LW5nLXN0cmluZyBbbW9kZWxdPVwiY29sdW1uLmxvY1RleHRcIj48L3N2LW5nLXN0cmluZz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIG1vZGVsLnZpc2libGVSb3dzOyB0cmFja0J5OiB0cmFja1Jvd0J5Rm4gXCIgW2NsYXNzXT1cInJvdy5yb3dDbGFzc2VzIHx8IHVuZGVmaW5lZFwiPlxuICAgICAgICAgICA8dGQgW2NsYXNzXT1cInJvdy5yb3dUZXh0Q2xhc3Nlc1wiIFtzdHlsZV09XCJ7IG1pbldpZHRoOiBtb2RlbC5yb3dUaXRsZVdpZHRoLCB3aWR0aDogbW9kZWwucm93VGl0bGVXaWR0aCB9XCIgKm5nSWY9XCJtb2RlbC5oYXNSb3dzXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbY29tcG9uZW50XT1cInsgbmFtZTogbW9kZWwuZ2V0Um93SGVhZGVyV3JhcHBlckNvbXBvbmVudE5hbWUoJGFueShyb3cpKSwgZGF0YTogeyBjb21wb25lbnREYXRhOiBtb2RlbC5nZXRSb3dIZWFkZXJXcmFwcGVyQ29tcG9uZW50RGF0YSgkYW55KHJvdykpIH0gfVwiPlxuICAgICAgICAgICAgICAgIDxzdi1uZy1zdHJpbmcgW21vZGVsXT1cInJvdy5sb2NUZXh0XCI+PC9zdi1uZy1zdHJpbmc+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmhhc0NlbGxUZXh0XCI+XG4gICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIG1vZGVsLnZpc2libGVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuZ2V0SXRlbUNsYXNzKHJvdywgY29sdW1uKVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2VsbENoYW5nZWQocm93LCBjb2x1bW4pXCIgW21vZGVsXT1cIm1vZGVsLmdldENlbGxEaXNwbGF5TG9jVGV4dChyb3cubmFtZSwgY29sdW1uKVwiIHN2LW5nLXN0cmluZz5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtb2RlbC5oYXNDZWxsVGV4dFwiPlxuICAgICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBtb2RlbC52aXNpYmxlQ29sdW1uczsgaW5kZXggYXMgY29sdW1uSW5kZXg7IHRyYWNrQnk6IHRyYWNrQ29sdW1uQnlGblwiXG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtcmVzcG9uc2l2ZS10aXRsZV09XCJjb2x1bW4ubG9jVGV4dC5yZW5kZXJlZEh0bWxcIlxuICAgICAgICAgICAgICBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5jZWxsXCI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBtb2RlbC5jZWxsQ29tcG9uZW50LCBkYXRhOiB7IGNlbGxDaGFuZ2VkT3duZXI6IHRoaXMsIHF1ZXN0aW9uOiBtb2RlbCwgcm93OiByb3csIGNvbHVtbjogY29sdW1uLCBjb2x1bW5JbmRleDogY29sdW1uSW5kZXggfSB9XCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvZmllbGRzZXQ+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=