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.
66 lines • 14.1 kB
JavaScript
import { Component, Input, ViewChild } from "@angular/core";
import { AngularComponentFactory } from "./component-factory";
import { EmbeddedViewContentComponent } from "./embedded-view-content.component";
import { getComponentName } from "./question";
import * as i0 from "@angular/core";
import * as i1 from "./components/breadcrumbs/breadcrumbs.component";
import * as i2 from "./errors.component";
import * as i3 from "./components/element-header/element-header.component";
import * as i4 from "./components/single-input-summary/single-input-summary.component";
import * as i5 from "./element.component";
import * as i6 from "./survey-string.component";
import * as i7 from "./comment.component";
import * as i8 from "@angular/common";
import * as i9 from "./utils/dynamic.directive";
import * as i10 from "./utils/ng-show.directive";
export class QuestionComponent extends EmbeddedViewContentComponent {
getModel() {
return this.model;
}
get singleQuestion() {
return this.model.singleInputQuestion;
}
ngAfterViewInit() {
var _a, _b;
if (!!((_a = this.rootEl) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
this.model.afterRender((_b = this.rootEl) === null || _b === void 0 ? void 0 : _b.nativeElement);
}
}
ngOnDestroy() {
if (!!this.model) {
this.model.destroyResizeObserver();
}
}
getComponentName() { return getComponentName(this.model); }
getQuestionContentWrapperComponentName() {
return this.model.survey.getQuestionContentWrapperComponentName(this.model);
}
getQuestionContentWrapperComponentData() {
return {
componentData: {
model: this.model,
data: this.model.survey.getElementWrapperComponentData(this.model)
}
};
}
}
QuestionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionComponent, selector: "sv-ng-question", inputs: { model: "model", css: "css", survey: "survey" }, viewQueries: [{ propertyName: "rootEl", first: true, predicate: ["elementContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"!!model\" #elementContainer [class]=\"model.getRootCss()\" [style]=\"model.getRootStyle()\" [id]=\"model.id\"\n [attr.data-name]=\"model.name\" [attr.role]=\"model.ariaRole\" [attr.aria-required]=\"model.ariaRequired\"\n [attr.aria-invalid]=\"model.ariaInvalid\" [attr.aria-label]=\"model.ariaLabel\"\n [attr.aria-labelledby]=\"model.ariaLabelledBy\" [attr.aria-describedby]=\"model.ariaDescribedBy\"\n [attr.aria-expanded]=\"model.ariaExpanded\">\n <sv-breadcrumbs\n *ngIf=\"model.singleInputHasActions\"\n [model]=\"model.singleInputActions\"\n [css]=\"model.cssClasses\"\n ></sv-breadcrumbs>\n <div *ngIf=\"model.showErrorsAboveQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnLeftTop\" sv-ng-element-header></div>\n <sv-single-input-summary\n *ngIf=\"!!model.singleInputSummary\"\n [model]=\"model.singleInputSummary\"\n [css]=\"model.cssClasses\"\n ></sv-single-input-summary>\n <sv-ng-element\n *ngIf=\"!model.singleInputSummary && !!singleQuestion\"\n [model]=\"singleQuestion\"\n ></sv-ng-element>\n <ng-template\n *ngIf=\"!model.singleInputSummary && !singleQuestion\"\n [component]=\"{ name: getQuestionContentWrapperComponentName(), data: getQuestionContentWrapperComponentData() }\">\n <div [class]=\"model.cssContent\" role=\"presentation\" [visible]=\"model.renderedIsExpanded\" [attr.aria-hidden]=\"model.contentAriaHidden\" [attr.data-sv-drop-target-matrix-row]=\"model.dragDropMatrixAttribute\" [attr.data-sv-drop-target-matrix]=\"model.dragDropMatrixAttribute\">\n <ng-template\n [component]=\"{ name: getComponentName(), data: { model: model }, default: 'skeleton-question' }\"></ng-template>\n <div *ngIf=\"model.hasComment\" [class]=\"model.getCommentAreaCss(false)\">\n <div [model]=\"model.locCommentText\" sv-ng-string></div>\n <sv-ng-comment [question]=\"model\"></sv-ng-comment>\n </div>\n <div *ngIf=\"model.hasDescriptionUnderInput\" [class]=\"model.cssDescription\" [attr.id]=\"model.ariaDescriptionId\"\n [model]=\"model.locDescription\" sv-ng-string></div>\n </div>\n </ng-template>\n <div [element]=\"model\" *ngIf=\"model.hasTitleOnBottom\" sv-ng-element-header></div>\n <div *ngIf=\"model.showErrorsBelowQuestion && model.hasVisibleErrors\" [element]=\"model\" sv-ng-errors></div>\n </div>\n</ng-template>", components: [{ type: i1.BreadcrumbsComponent, selector: "sv-breadcrumbs", inputs: ["model", "css"] }, { type: i2.ErrorsComponent, selector: "'[sv-ng-errors]'", inputs: ["element", "location"] }, { type: i3.ElementHeaderComponent, selector: "'[sv-ng-element-header]'", inputs: ["element"] }, { type: i4.SingleInputSummaryComponent, selector: "sv-single-input-summary", inputs: ["model", "css"] }, { type: i5.ElementComponent, selector: "sv-ng-element", inputs: ["model"] }, { type: i6.SurveyStringComponent, selector: "sv-ng-string, '[sv-ng-string]'", inputs: ["model"] }, { type: i7.SurveyCommentComponent, selector: "sv-ng-comment, '[sv-ng-comment]'", inputs: ["question"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i9.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }, { type: i10.VisibleDirective, selector: "[visible]", inputs: ["visible"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionComponent, decorators: [{
type: Component,
args: [{
selector: "sv-ng-question",
templateUrl: "./question.component.html"
}]
}], propDecorators: { model: [{
type: Input
}], css: [{
type: Input
}], survey: [{
type: Input
}], rootEl: [{
type: ViewChild,
args: ["elementContainer"]
}] } });
AngularComponentFactory.Instance.registerComponent("question", QuestionComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uL3NyYy9xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7QUFNOUMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLDRCQUE0QjtJQU12RCxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZTs7UUFDYixJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsYUFBYSxDQUFBLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxhQUFhLENBQUMsQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLEtBQWEsT0FBTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLHNDQUFzQztRQUMzQyxPQUFhLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTyxDQUFDLHNDQUFzQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQ00sc0NBQXNDO1FBQzNDLE9BQU87WUFDTCxhQUFhLEVBQUU7Z0JBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixJQUFJLEVBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFPLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMxRTtTQUNGLENBQUM7SUFDSixDQUFDOzsrR0FyQ1UsaUJBQWlCO21HQUFqQixpQkFBaUIsbVBDVjlCLHErRUF1Q2M7NEZEN0JELGlCQUFpQjtrQkFKN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixXQUFXLEVBQUUsMkJBQTJCO2lCQUN6Qzs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDeUIsTUFBTTtzQkFBcEMsU0FBUzt1QkFBQyxrQkFBa0I7O0FBb0MvQix1QkFBdUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJDb21wb25lbnRGYWN0b3J5IH0gZnJvbSBcIi4vY29tcG9uZW50LWZhY3RvcnlcIjtcbmltcG9ydCB7IEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQgfSBmcm9tIFwiLi9lbWJlZGRlZC12aWV3LWNvbnRlbnQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBnZXRDb21wb25lbnROYW1lIH0gZnJvbSBcIi4vcXVlc3Rpb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2LW5nLXF1ZXN0aW9uXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcXVlc3Rpb24uY29tcG9uZW50Lmh0bWxcIlxufSlcbmV4cG9ydCBjbGFzcyBRdWVzdGlvbkNvbXBvbmVudCBleHRlbmRzIEVtYmVkZGVkVmlld0NvbnRlbnRDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlbCE6IFF1ZXN0aW9uO1xuICBASW5wdXQoKSBjc3M6IGFueTtcbiAgQElucHV0KCkgc3VydmV5OiBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJlbGVtZW50Q29udGFpbmVyXCIpIHJvb3RFbD86IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIHByb3RlY3RlZCBnZXRNb2RlbCgpOiBRdWVzdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMubW9kZWw7XG4gIH1cblxuICBnZXQgc2luZ2xlUXVlc3Rpb24oKTogUXVlc3Rpb24ge1xuICAgIHJldHVybiB0aGlzLm1vZGVsLnNpbmdsZUlucHV0UXVlc3Rpb247XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5yb290RWw/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMubW9kZWwuYWZ0ZXJSZW5kZXIodGhpcy5yb290RWw/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICghIXRoaXMubW9kZWwpIHtcbiAgICAgIHRoaXMubW9kZWwuZGVzdHJveVJlc2l6ZU9ic2VydmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldENvbXBvbmVudE5hbWUoKTogc3RyaW5nIHsgcmV0dXJuIGdldENvbXBvbmVudE5hbWUodGhpcy5tb2RlbCk7IH1cbiAgcHVibGljIGdldFF1ZXN0aW9uQ29udGVudFdyYXBwZXJDb21wb25lbnROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICg8YW55PnRoaXMubW9kZWwuc3VydmV5KS5nZXRRdWVzdGlvbkNvbnRlbnRXcmFwcGVyQ29tcG9uZW50TmFtZSh0aGlzLm1vZGVsKTtcbiAgfVxuICBwdWJsaWMgZ2V0UXVlc3Rpb25Db250ZW50V3JhcHBlckNvbXBvbmVudERhdGEoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29tcG9uZW50RGF0YToge1xuICAgICAgICBtb2RlbDogdGhpcy5tb2RlbCxcbiAgICAgICAgZGF0YTogKDxhbnk+dGhpcy5tb2RlbC5zdXJ2ZXkpLmdldEVsZW1lbnRXcmFwcGVyQ29tcG9uZW50RGF0YSh0aGlzLm1vZGVsKVxuICAgICAgfVxuICAgIH07XG4gIH1cbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJxdWVzdGlvblwiLCBRdWVzdGlvbkNvbXBvbmVudCk7IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdiAqbmdJZj1cIiEhbW9kZWxcIiAjZWxlbWVudENvbnRhaW5lciBbY2xhc3NdPVwibW9kZWwuZ2V0Um9vdENzcygpXCIgW3N0eWxlXT1cIm1vZGVsLmdldFJvb3RTdHlsZSgpXCIgW2lkXT1cIm1vZGVsLmlkXCJcbiAgICBbYXR0ci5kYXRhLW5hbWVdPVwibW9kZWwubmFtZVwiIFthdHRyLnJvbGVdPVwibW9kZWwuYXJpYVJvbGVcIiBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cIm1vZGVsLmFyaWFSZXF1aXJlZFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cIm1vZGVsLmFyaWFJbnZhbGlkXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5hcmlhTGFiZWxcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJtb2RlbC5hcmlhTGFiZWxsZWRCeVwiIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwibW9kZWwuYXJpYURlc2NyaWJlZEJ5XCJcbiAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm1vZGVsLmFyaWFFeHBhbmRlZFwiPlxuICAgIDxzdi1icmVhZGNydW1ic1xuICAgICAgKm5nSWY9XCJtb2RlbC5zaW5nbGVJbnB1dEhhc0FjdGlvbnNcIlxuICAgICAgW21vZGVsXT1cIm1vZGVsLnNpbmdsZUlucHV0QWN0aW9uc1wiXG4gICAgICBbY3NzXT1cIm1vZGVsLmNzc0NsYXNzZXNcIlxuICAgID48L3N2LWJyZWFkY3J1bWJzPlxuICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zaG93RXJyb3JzQWJvdmVRdWVzdGlvbiAmJiBtb2RlbC5oYXNWaXNpYmxlRXJyb3JzXCIgW2VsZW1lbnRdPVwibW9kZWxcIiBzdi1uZy1lcnJvcnM+PC9kaXY+XG4gICAgPGRpdiBbZWxlbWVudF09XCJtb2RlbFwiICpuZ0lmPVwibW9kZWwuaGFzVGl0bGVPbkxlZnRUb3BcIiBzdi1uZy1lbGVtZW50LWhlYWRlcj48L2Rpdj5cbiAgICA8c3Ytc2luZ2xlLWlucHV0LXN1bW1hcnlcbiAgICAgICpuZ0lmPVwiISFtb2RlbC5zaW5nbGVJbnB1dFN1bW1hcnlcIlxuICAgICAgW21vZGVsXT1cIm1vZGVsLnNpbmdsZUlucHV0U3VtbWFyeVwiXG4gICAgICBbY3NzXT1cIm1vZGVsLmNzc0NsYXNzZXNcIlxuICAgID48L3N2LXNpbmdsZS1pbnB1dC1zdW1tYXJ5PlxuICAgIDxzdi1uZy1lbGVtZW50XG4gICAgICAqbmdJZj1cIiFtb2RlbC5zaW5nbGVJbnB1dFN1bW1hcnkgJiYgISFzaW5nbGVRdWVzdGlvblwiXG4gICAgICBbbW9kZWxdPVwic2luZ2xlUXVlc3Rpb25cIlxuICAgID48L3N2LW5nLWVsZW1lbnQ+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdJZj1cIiFtb2RlbC5zaW5nbGVJbnB1dFN1bW1hcnkgJiYgIXNpbmdsZVF1ZXN0aW9uXCJcbiAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiBnZXRRdWVzdGlvbkNvbnRlbnRXcmFwcGVyQ29tcG9uZW50TmFtZSgpLCBkYXRhOiBnZXRRdWVzdGlvbkNvbnRlbnRXcmFwcGVyQ29tcG9uZW50RGF0YSgpIH1cIj5cbiAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NvbnRlbnRcIiByb2xlPVwicHJlc2VudGF0aW9uXCIgW3Zpc2libGVdPVwibW9kZWwucmVuZGVyZWRJc0V4cGFuZGVkXCIgW2F0dHIuYXJpYS1oaWRkZW5dPVwibW9kZWwuY29udGVudEFyaWFIaWRkZW5cIiBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LW1hdHJpeC1yb3ddPVwibW9kZWwuZHJhZ0Ryb3BNYXRyaXhBdHRyaWJ1dGVcIiBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LW1hdHJpeF09XCJtb2RlbC5kcmFnRHJvcE1hdHJpeEF0dHJpYnV0ZVwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbY29tcG9uZW50XT1cInsgbmFtZTogZ2V0Q29tcG9uZW50TmFtZSgpLCBkYXRhOiB7IG1vZGVsOiBtb2RlbCB9LCBkZWZhdWx0OiAnc2tlbGV0b24tcXVlc3Rpb24nIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuaGFzQ29tbWVudFwiIFtjbGFzc109XCJtb2RlbC5nZXRDb21tZW50QXJlYUNzcyhmYWxzZSlcIj5cbiAgICAgICAgICA8ZGl2IFttb2RlbF09XCJtb2RlbC5sb2NDb21tZW50VGV4dFwiIHN2LW5nLXN0cmluZz48L2Rpdj5cbiAgICAgICAgICA8c3YtbmctY29tbWVudCBbcXVlc3Rpb25dPVwibW9kZWxcIj48L3N2LW5nLWNvbW1lbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwibW9kZWwuaGFzRGVzY3JpcHRpb25VbmRlcklucHV0XCIgW2NsYXNzXT1cIm1vZGVsLmNzc0Rlc2NyaXB0aW9uXCIgW2F0dHIuaWRdPVwibW9kZWwuYXJpYURlc2NyaXB0aW9uSWRcIlxuICAgICAgICAgIFttb2RlbF09XCJtb2RlbC5sb2NEZXNjcmlwdGlvblwiIHN2LW5nLXN0cmluZz48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBbZWxlbWVudF09XCJtb2RlbFwiICpuZ0lmPVwibW9kZWwuaGFzVGl0bGVPbkJvdHRvbVwiIHN2LW5nLWVsZW1lbnQtaGVhZGVyPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zaG93RXJyb3JzQmVsb3dRdWVzdGlvbiAmJiBtb2RlbC5oYXNWaXNpYmxlRXJyb3JzXCIgW2VsZW1lbnRdPVwibW9kZWxcIiBzdi1uZy1lcnJvcnM+PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4iXX0=