UNPKG

ngx-surveys

Version:
54 lines 9.24 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { SurveyErrorStateMatcher } from '../../error-state.matcher'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/material/form-field"; import * as i3 from "@angular/material/select"; import * as i4 from "@angular/material/core"; export class SelectComponent { constructor() { this.editable = true; this.options = []; this.selectionChange = new EventEmitter(); this.init = true; this.matcher = new SurveyErrorStateMatcher(); } ngOnInit() { } isOptionSelected(option) { return this.multiple ? (this.value || []).indexOf(option.optionValue) >= 0 : this.value === option.optionValue; } onSelectionChange(event) { //console.log(event); this.value = event.value; this.selectionChange.emit(this.value); } ngOnChanges(changes) { if (changes.multiple && changes.multiple.previousValue !== changes.multiple.currentValue) { this.init = false; //console.log(changes); setTimeout(() => { this.init = true; }, 10); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: SelectComponent, selector: "app-select", inputs: { label: "label", editable: "editable", required: "required", multiple: "multiple", options: "options", value: "value" }, outputs: { selectionChange: "selectionChange" }, usesOnChanges: true, ngImport: i0, template: "<mat-form-field appearance=\"fill\" *ngIf=\"init\">\n <mat-select\n [value]=\"value\"\n [disabled]=\"!editable\"\n (selectionChange)=\"onSelectionChange($event)\"\n [errorStateMatcher]=\"matcher\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let option of options\" [value]=\"option.optionValue\">\n {{option.label}}\n </mat-option>\n </mat-select>\n</mat-form-field>", styles: [".mat-mdc-form-field{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: SelectComponent, decorators: [{ type: Component, args: [{ selector: 'app-select', template: "<mat-form-field appearance=\"fill\" *ngIf=\"init\">\n <mat-select\n [value]=\"value\"\n [disabled]=\"!editable\"\n (selectionChange)=\"onSelectionChange($event)\"\n [errorStateMatcher]=\"matcher\"\n [required]=\"required\"\n [multiple]=\"multiple\"\n >\n <mat-option *ngFor=\"let option of options\" [value]=\"option.optionValue\">\n {{option.label}}\n </mat-option>\n </mat-select>\n</mat-form-field>", styles: [".mat-mdc-form-field{display:block}\n"] }] }], ctorParameters: () => [], propDecorators: { label: [{ type: Input }], editable: [{ type: Input }], required: [{ type: Input }], multiple: [{ type: Input }], options: [{ type: Input }], selectionChange: [{ type: Output }], value: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdXJ2ZXlzL3NyYy9saWIvZm9ybS1pdGVtL2Zvcm0taXRlbS1yYWRpby9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdXJ2ZXlzL3NyYy9saWIvZm9ybS1pdGVtL2Zvcm0taXRlbS1yYWRpby9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQTRCLE1BQU0sZUFBZSxDQUFDO0FBR3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLGVBQWU7SUFlMUI7UUFaUyxhQUFRLEdBQVUsSUFBSSxDQUFDO1FBR3ZCLFlBQU8sR0FBdUIsRUFBRSxDQUFDO1FBQ2hDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFJM0QsU0FBSSxHQUFTLElBQUksQ0FBQztRQUV6QixZQUFPLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBRXhCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUF5QjtRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO0lBQzlHLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFzQjtRQUNwQyxxQkFBcUI7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXFCO1FBQy9CLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLGFBQWEsS0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBQyxDQUFDO1lBQ3RGLElBQUksQ0FBQyxJQUFJLEdBQUMsS0FBSyxDQUFDO1lBQ2hCLHVCQUF1QjtZQUN2QixVQUFVLENBQUMsR0FBRSxFQUFFLEdBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7K0dBcENVLGVBQWU7bUdBQWYsZUFBZSwwUENYNUIsMmNBYWlCOzs0RkRGSixlQUFlO2tCQUwzQixTQUFTOytCQUNFLFlBQVk7d0RBTWIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcbmltcG9ydCB7IEZvcm1JdGVtT3B0aW9uSXRlbSB9IGZyb20gJy4uLy4uL2Zvcm0taXRlbSc7XG5pbXBvcnQgeyBTdXJ2ZXlFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJy4uLy4uL2Vycm9yLXN0YXRlLm1hdGNoZXInO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVkaXRhYmxlOiBib29sZWFuPXRydWU7XG4gIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuO1xuICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbjtcbiAgQElucHV0KCkgb3B0aW9uczogRm9ybUl0ZW1PcHRpb25JdGVtW109W107XG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IHN0cmluZ1tdPigpO1xuXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBwdWJsaWMgaW5pdDpib29sZWFuPXRydWU7XG5cbiAgbWF0Y2hlciA9IG5ldyBTdXJ2ZXlFcnJvclN0YXRlTWF0Y2hlcigpO1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gIH1cblxuICBpc09wdGlvblNlbGVjdGVkKG9wdGlvbjpGb3JtSXRlbU9wdGlvbkl0ZW0pe1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlID8gKHRoaXMudmFsdWUgfHwgW10pLmluZGV4T2Yob3B0aW9uLm9wdGlvblZhbHVlKSA+PTAgOiB0aGlzLnZhbHVlPT09b3B0aW9uLm9wdGlvblZhbHVlO1xuICB9XG5cbiAgb25TZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IE1hdFNlbGVjdENoYW5nZSl7XG4gICAgICAvL2NvbnNvbGUubG9nKGV2ZW50KTtcbiAgICB0aGlzLnZhbHVlPWV2ZW50LnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpe1xuICAgIGlmIChjaGFuZ2VzLm11bHRpcGxlICYmIGNoYW5nZXMubXVsdGlwbGUucHJldmlvdXNWYWx1ZSE9PWNoYW5nZXMubXVsdGlwbGUuY3VycmVudFZhbHVlKXtcbiAgICAgIHRoaXMuaW5pdD1mYWxzZTtcbiAgICAgIC8vY29uc29sZS5sb2coY2hhbmdlcyk7XG4gICAgICBzZXRUaW1lb3V0KCgpPT57dGhpcy5pbml0PXRydWU7fSwgMTApO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cImluaXRcIj5cbiAgICA8bWF0LXNlbGVjdFxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhZWRpdGFibGVcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtlcnJvclN0YXRlTWF0Y2hlcl09XCJtYXRjaGVyXCJcbiAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgID5cbiAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRpb24ub3B0aW9uVmFsdWVcIj5cbiAgICAgICAge3tvcHRpb24ubGFiZWx9fVxuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgIDwvbWF0LXNlbGVjdD5cbjwvbWF0LWZvcm0tZmllbGQ+Il19