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.

62 lines 12.2 kB
import { Component, Input, ViewChild } from "@angular/core"; import { BaseAngular } from "../../base-angular"; import { AngularComponentFactory } from "../../component-factory"; import * as i0 from "@angular/core"; import * as i1 from "../svg-icon/svg-icon.component"; import * as i2 from "./list-item.component"; import * as i3 from "@angular/common"; import * as i4 from "@angular/forms"; import * as i5 from "../../utils/ng-show.directive"; export class ListComponent extends BaseAngular { constructor() { super(...arguments); this.trackItemBy = (_, item) => { return item.id; }; } getModel() { return this.model; } onGoToItems(event) { this.model.goToItems(event); } onMouseDown(event) { event.preventDefault(); } onKeyDown(event) { this.model.onKeyDown(event); } onMouseMove(event) { this.model.onMouseMove(event); } getPropertiesToUpdateSync() { return ["renderElements"]; } ngAfterViewInit() { var _a; if (!!((_a = this.listContainerElement) === null || _a === void 0 ? void 0 : _a.nativeElement)) { this.model.initListContainerHtmlElement(this.listContainerElement.nativeElement); } } ngOnDestroy() { this.model.initListContainerHtmlElement(undefined); super.ngOnDestroy(); } } ListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); ListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ListComponent, selector: "sv-ng-list, '[sv-ng-list]'", inputs: { model: "model" }, viewQueries: [{ propertyName: "listContainerElement", first: true, predicate: ["listContainerElement"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div [class]=\"model.cssClasses.root\" #listContainerElement>\n <div *ngIf=\"model.showFilter\" [class]=\"model.cssClasses.filter\">\n <div [class]=\"model.cssClasses.filterIcon\">\n <svg [iconName]=\"'icon-search'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </div>\n <input type=\"text\" [class]=\"model.cssClasses.filterInput\" [(ngModel)]=\"model.filterString\"\n [attr.aria-label]=\"model.filterStringPlaceholder || ''\"\n [attr.placeholder]=\"model.filterStringPlaceholder || ''\" \n (keyup)=\"onGoToItems($event)\" />\n <button *ngIf=\"model.showSearchClearButton && !!model.filterString\" (click)=\"model.onClickSearchClearButton($event)\" [class]=\"model.cssClasses.searchClearButtonIcon\">\n <svg [iconName]=\"'icon-searchclear'\" [size]=\"'auto'\" sv-ng-svg-icon></svg>\n </button>\n </div>\n <div [class]=\"model.cssClasses.emptyContainer\" [visible]=\"model.isEmpty\">\n <div [class]=\"model.cssClasses.emptyText\" [attr.aria-label]=\"model.emptyMessage || ''\">{{ model.emptyMessage }}</div>\n </div>\n <ul *ngIf=\"model.renderElements\" [class]=\"model.getListClass()\" role=\"listbox\" [attr.id]=\"model.elementId\" [visible]=\"!model.isEmpty\" (mousedown)=\"onMouseDown($event)\" (keydown)=\"onKeyDown($event)\" (mousemove)=\"onMouseMove($event)\">\n <sv-ng-list-item *ngFor=\"let item of model.renderedActions; trackBy: trackItemBy\" [listModel]=\"model\" [model]=\"item\"></sv-ng-list-item>\n <!--ko foreach: model.renderedActions -->\n <!-- ko component: { name: 'sv-list-item', params: { item: $data, model: $parent.model } } -->\n <!-- /ko -->\n <!-- /ko -->\n </ul>\n </div>\n</ng-template>", styles: [":host{display:none}\n"], components: [{ type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i2.ListItemComponent, selector: "sv-ng-list-item, '[sv-ng-list-item]'", inputs: ["element", "model", "listModel"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.VisibleDirective, selector: "[visible]", inputs: ["visible"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ListComponent, decorators: [{ type: Component, args: [{ selector: "sv-ng-list, '[sv-ng-list]'", templateUrl: "./list.component.html", styleUrls: ["../../hide-host.scss"] }] }], propDecorators: { model: [{ type: Input }], listContainerElement: [{ type: ViewChild, args: ["listContainerElement"] }] } }); AngularComponentFactory.Instance.registerComponent("sv-list", ListComponent); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBVztJQUw5Qzs7UUFTRSxnQkFBVyxHQUFHLENBQUMsQ0FBTSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUE7S0E0QkY7SUEzQkMsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQVk7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDa0IseUJBQXlCO1FBQzFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxlQUFlOztRQUNiLElBQUksQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUFnQixDQUFDLENBQUM7UUFDMUQsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OzJHQWpDVSxhQUFhOytGQUFiLGFBQWEsbVBDVjFCLHcyREF5QmM7NEZEZkQsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsdUJBQXVCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUM2QixvQkFBb0I7c0JBQXRELFNBQVM7dUJBQUMsc0JBQXNCOztBQWtDbkMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uLy4uL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50LWZhY3RvcnlcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2LW5nLWxpc3QsICdbc3YtbmctbGlzdF0nXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtb2RlbDogYW55O1xuICBAVmlld0NoaWxkKFwibGlzdENvbnRhaW5lckVsZW1lbnRcIikgbGlzdENvbnRhaW5lckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICB0cmFja0l0ZW1CeSA9IChfOiBhbnksIGl0ZW06IEFjdGlvbikgPT4ge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG4gIGdldE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsO1xuICB9XG4gIG9uR29Ub0l0ZW1zKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuZ29Ub0l0ZW1zKGV2ZW50KTtcbiAgfVxuICBvbk1vdXNlRG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG4gIG9uS2V5RG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLm9uS2V5RG93bihldmVudCk7XG4gIH1cbiAgb25Nb3VzZU1vdmUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5vbk1vdXNlTW92ZShldmVudCk7XG4gIH1cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGdldFByb3BlcnRpZXNUb1VwZGF0ZVN5bmMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXCJyZW5kZXJFbGVtZW50c1wiXTtcbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCEhdGhpcy5saXN0Q29udGFpbmVyRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5tb2RlbC5pbml0TGlzdENvbnRhaW5lckh0bWxFbGVtZW50KHRoaXMubGlzdENvbnRhaW5lckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwuaW5pdExpc3RDb250YWluZXJIdG1sRWxlbWVudCh1bmRlZmluZWQgYXMgYW55KTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG59XG5cbkFuZ3VsYXJDb21wb25lbnRGYWN0b3J5Lkluc3RhbmNlLnJlZ2lzdGVyQ29tcG9uZW50KFwic3YtbGlzdFwiLCBMaXN0Q29tcG9uZW50KTsiLCI8bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMucm9vdFwiICNsaXN0Q29udGFpbmVyRWxlbWVudD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm1vZGVsLnNob3dGaWx0ZXJcIiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5maWx0ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZmlsdGVySWNvblwiPlxuICAgICAgICAgICAgICAgIDxzdmcgW2ljb25OYW1lXT1cIidpY29uLXNlYXJjaCdcIiBbc2l6ZV09XCInYXV0bydcIiBzdi1uZy1zdmctaWNvbj48L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZmlsdGVySW5wdXRcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLmZpbHRlclN0cmluZ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJtb2RlbC5maWx0ZXJTdHJpbmdQbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwibW9kZWwuZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIgfHwgJydcIiBcbiAgICAgICAgICAgICAgICAoa2V5dXApPVwib25Hb1RvSXRlbXMoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIm1vZGVsLnNob3dTZWFyY2hDbGVhckJ1dHRvbiAmJiAhIW1vZGVsLmZpbHRlclN0cmluZ1wiIChjbGljayk9XCJtb2RlbC5vbkNsaWNrU2VhcmNoQ2xlYXJCdXR0b24oJGV2ZW50KVwiIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnNlYXJjaENsZWFyQnV0dG9uSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIFtpY29uTmFtZV09XCInaWNvbi1zZWFyY2hjbGVhcidcIiBbc2l6ZV09XCInYXV0bydcIiBzdi1uZy1zdmctaWNvbj48L3N2Zz5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZW1wdHlDb250YWluZXJcIiBbdmlzaWJsZV09XCJtb2RlbC5pc0VtcHR5XCI+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmVtcHR5VGV4dFwiIFthdHRyLmFyaWEtbGFiZWxdPVwibW9kZWwuZW1wdHlNZXNzYWdlIHx8ICcnXCI+e3sgbW9kZWwuZW1wdHlNZXNzYWdlIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dWwgKm5nSWY9XCJtb2RlbC5yZW5kZXJFbGVtZW50c1wiIFtjbGFzc109XCJtb2RlbC5nZXRMaXN0Q2xhc3MoKVwiIHJvbGU9XCJsaXN0Ym94XCIgW2F0dHIuaWRdPVwibW9kZWwuZWxlbWVudElkXCIgW3Zpc2libGVdPVwiIW1vZGVsLmlzRW1wdHlcIiAobW91c2Vkb3duKT1cIm9uTW91c2VEb3duKCRldmVudClcIiAoa2V5ZG93bik9XCJvbktleURvd24oJGV2ZW50KVwiIChtb3VzZW1vdmUpPVwib25Nb3VzZU1vdmUoJGV2ZW50KVwiPlxuICAgICAgICAgICAgPHN2LW5nLWxpc3QtaXRlbSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5yZW5kZXJlZEFjdGlvbnM7IHRyYWNrQnk6IHRyYWNrSXRlbUJ5XCIgW2xpc3RNb2RlbF09XCJtb2RlbFwiIFttb2RlbF09XCJpdGVtXCI+PC9zdi1uZy1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8IS0ta28gZm9yZWFjaDogbW9kZWwucmVuZGVyZWRBY3Rpb25zIC0tPlxuICAgICAgICAgICAgPCEtLSBrbyBjb21wb25lbnQ6IHsgbmFtZTogJ3N2LWxpc3QtaXRlbScsIHBhcmFtczogeyBpdGVtOiAkZGF0YSwgbW9kZWw6ICRwYXJlbnQubW9kZWwgfSB9IC0tPlxuICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgICAgICA8IS0tIC9rbyAtLT5cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19