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
JavaScript
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9saXN0L2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGlzdC9saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxhQUFjLFNBQVEsV0FBVztJQUw5Qzs7UUFTRSxnQkFBVyxHQUFHLENBQUMsQ0FBTSxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUM7S0E0Qkg7SUEzQkMsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ0QsV0FBVyxDQUFDLEtBQVk7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsU0FBUyxDQUFDLEtBQVk7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDa0IseUJBQXlCO1FBQzFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxlQUFlOztRQUNiLElBQUksQ0FBQyxDQUFDLENBQUEsTUFBQSxJQUFJLENBQUMsb0JBQW9CLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUNRLFdBQVc7UUFDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUFnQixDQUFDLENBQUM7UUFDMUQsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OzJHQWpDVSxhQUFhOytGQUFiLGFBQWEsbVBDVjFCLHcyREF5QmM7NEZEZkQsYUFBYTtrQkFMekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsdUJBQXVCO29CQUNwQyxTQUFTLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDcEM7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUM2QixvQkFBb0I7c0JBQXRELFNBQVM7dUJBQUMsc0JBQXNCOztBQWtDbkMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwic3VydmV5LWNvcmVcIjtcbmltcG9ydCB7IEJhc2VBbmd1bGFyIH0gZnJvbSBcIi4uLy4uL2Jhc2UtYW5ndWxhclwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50LWZhY3RvcnlcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2LW5nLWxpc3QsICdbc3YtbmctbGlzdF0nXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4uLy4uL2hpZGUtaG9zdC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlQW5ndWxhciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBtb2RlbDogYW55O1xuICBAVmlld0NoaWxkKFwibGlzdENvbnRhaW5lckVsZW1lbnRcIikgbGlzdENvbnRhaW5lckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICB0cmFja0l0ZW1CeSA9IChfOiBhbnksIGl0ZW06IEFjdGlvbikgPT4ge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9O1xuICBnZXRNb2RlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgfVxuICBvbkdvVG9JdGVtcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLmdvVG9JdGVtcyhldmVudCk7XG4gIH1cbiAgb25Nb3VzZURvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuICBvbktleURvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tb2RlbC5vbktleURvd24oZXZlbnQpO1xuICB9XG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubW9kZWwub25Nb3VzZU1vdmUoZXZlbnQpO1xuICB9XG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXRQcm9wZXJ0aWVzVG9VcGRhdGVTeW5jKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1wicmVuZGVyRWxlbWVudHNcIl07XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghIXRoaXMubGlzdENvbnRhaW5lckVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMubW9kZWwuaW5pdExpc3RDb250YWluZXJIdG1sRWxlbWVudCh0aGlzLmxpc3RDb250YWluZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGVsLmluaXRMaXN0Q29udGFpbmVySHRtbEVsZW1lbnQodW5kZWZpbmVkIGFzIGFueSk7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxufVxuXG5Bbmd1bGFyQ29tcG9uZW50RmFjdG9yeS5JbnN0YW5jZS5yZWdpc3RlckNvbXBvbmVudChcInN2LWxpc3RcIiwgTGlzdENvbXBvbmVudCk7IiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLnJvb3RcIiAjbGlzdENvbnRhaW5lckVsZW1lbnQ+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJtb2RlbC5zaG93RmlsdGVyXCIgW2NsYXNzXT1cIm1vZGVsLmNzc0NsYXNzZXMuZmlsdGVyXCI+XG4gICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmZpbHRlckljb25cIj5cbiAgICAgICAgICAgICAgICA8c3ZnIFtpY29uTmFtZV09XCInaWNvbi1zZWFyY2gnXCIgW3NpemVdPVwiJ2F1dG8nXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmZpbHRlcklucHV0XCIgWyhuZ01vZGVsKV09XCJtb2RlbC5maWx0ZXJTdHJpbmdcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibW9kZWwuZmlsdGVyU3RyaW5nUGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cIm1vZGVsLmZpbHRlclN0cmluZ1BsYWNlaG9sZGVyIHx8ICcnXCIgXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cIm9uR29Ub0l0ZW1zKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJtb2RlbC5zaG93U2VhcmNoQ2xlYXJCdXR0b24gJiYgISFtb2RlbC5maWx0ZXJTdHJpbmdcIiAoY2xpY2spPVwibW9kZWwub25DbGlja1NlYXJjaENsZWFyQnV0dG9uKCRldmVudClcIiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5zZWFyY2hDbGVhckJ1dHRvbkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2ZyBbaWNvbk5hbWVdPVwiJ2ljb24tc2VhcmNoY2xlYXInXCIgW3NpemVdPVwiJ2F1dG8nXCIgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJtb2RlbC5jc3NDbGFzc2VzLmVtcHR5Q29udGFpbmVyXCIgW3Zpc2libGVdPVwibW9kZWwuaXNFbXB0eVwiPlxuICAgICAgICAgICAgPGRpdiBbY2xhc3NdPVwibW9kZWwuY3NzQ2xhc3Nlcy5lbXB0eVRleHRcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIm1vZGVsLmVtcHR5TWVzc2FnZSB8fCAnJ1wiPnt7IG1vZGVsLmVtcHR5TWVzc2FnZSB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHVsICpuZ0lmPVwibW9kZWwucmVuZGVyRWxlbWVudHNcIiBbY2xhc3NdPVwibW9kZWwuZ2V0TGlzdENsYXNzKClcIiByb2xlPVwibGlzdGJveFwiIFthdHRyLmlkXT1cIm1vZGVsLmVsZW1lbnRJZFwiIFt2aXNpYmxlXT1cIiFtb2RlbC5pc0VtcHR5XCIgKG1vdXNlZG93bik9XCJvbk1vdXNlRG93bigkZXZlbnQpXCIgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIiAobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIj5cbiAgICAgICAgICAgIDxzdi1uZy1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgbW9kZWwucmVuZGVyZWRBY3Rpb25zOyB0cmFja0J5OiB0cmFja0l0ZW1CeVwiIFtsaXN0TW9kZWxdPVwibW9kZWxcIiBbbW9kZWxdPVwiaXRlbVwiPjwvc3YtbmctbGlzdC1pdGVtPlxuICAgICAgICAgICAgPCEtLWtvIGZvcmVhY2g6IG1vZGVsLnJlbmRlcmVkQWN0aW9ucyAtLT5cbiAgICAgICAgICAgIDwhLS0ga28gY29tcG9uZW50OiB7IG5hbWU6ICdzdi1saXN0LWl0ZW0nLCBwYXJhbXM6IHsgaXRlbTogJGRhdGEsIG1vZGVsOiAkcGFyZW50Lm1vZGVsIH0gfSAtLT5cbiAgICAgICAgICAgIDwhLS0gL2tvIC0tPlxuICAgICAgICAgICAgPCEtLSAva28gLS0+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==