UNPKG

@bimeister/pupakit.forms

Version:
64 lines 9.69 kB
import { Directive, HostListener } from '@angular/core'; import '@bimeister/pupakit.common'; import { isNil } from '@bimeister/utilities'; import { BehaviorSubject, combineLatest } from 'rxjs'; import { distinctUntilChanged, filter, map, switchMap, take, withLatestFrom } from 'rxjs/operators'; import '../../interfaces/select-state-service-declaration.interface'; import * as i0 from "@angular/core"; export class SelectOptionBase { constructor(selectStateService) { this.selectStateService = selectStateService; this.value$ = new BehaviorSubject(null); this.isHovered$ = new BehaviorSubject(false); this.isPicked$ = this.value$.pipe(switchMap((value) => this.selectStateService.isPicked(value)), distinctUntilChanged()); this.isSelfDisabled$ = new BehaviorSubject(false); this.isDisabled$ = combineLatest([ this.isSelfDisabled$, this.selectStateService.isDisabled$, ]).pipe(map(([isSelfDisabled, isDisabled]) => isSelfDisabled || isDisabled)); } processMouseOver() { this.isHovered$.next(true); } processMouseLeave() { this.isHovered$.next(false); } ngOnChanges(changes) { if (isNil(changes)) { return; } if (changes.hasOwnProperty('value')) { this.processValueChange(changes.value); } if (changes.hasOwnProperty('isDisabled')) { this.processIsDisabledChange(changes.isDisabled); } } processClick() { this.value$ .pipe(withLatestFrom(this.isDisabled$), take(1), filter(([_, isDisabled]) => !isDisabled), map(([value, _]) => value)) .subscribe((value) => { this.selectStateService.processSelection(value); }); } processValueChange(change) { const updatedValue = change?.currentValue; this.value$.next(updatedValue); } processIsDisabledChange(change) { const updatedValue = change?.currentValue; this.isSelfDisabled$.next(updatedValue); } } SelectOptionBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectOptionBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); SelectOptionBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: SelectOptionBase, host: { listeners: { "mouseover": "processMouseOver()", "mouseleave": "processMouseLeave()" } }, usesOnChanges: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectOptionBase, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: undefined }]; }, propDecorators: { processMouseOver: [{ type: HostListener, args: ['mouseover'] }], processMouseLeave: [{ type: HostListener, args: ['mouseleave'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi1iYXNlLmFic3RyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2RlY2xhcmF0aW9ucy9jbGFzc2VzL2Fic3RyYWN0L3NlbGVjdC1vcHRpb24tYmFzZS5hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFrRCwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRyxPQUE4Qyw2REFBNkQsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQixnQkFBZ0I7SUFvQnBDLFlBQStCLGtCQUFvRDtRQUFwRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWtDO1FBaEJsRSxXQUFNLEdBQXVCLElBQUksZUFBZSxDQUFJLElBQUksQ0FBQyxDQUFDO1FBRTNELGVBQVUsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFM0UsY0FBUyxHQUF3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0QsU0FBUyxDQUFDLENBQUMsS0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQ2hFLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7UUFFZSxvQkFBZSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUVqRixnQkFBVyxHQUF3QixhQUFhLENBQUM7WUFDL0QsSUFBSSxDQUFDLGVBQWU7WUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVc7U0FDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxVQUFVLENBQXFCLEVBQUUsRUFBRSxDQUFDLGNBQWMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRVgsQ0FBQztJQUdoRixnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUdNLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sV0FBVyxDQUFDLE9BQStCO1FBQ2hELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsTUFBTTthQUNSLElBQUksQ0FDSCxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUNoQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQ3RELEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FDekM7YUFDQSxTQUFTLENBQUMsQ0FBQyxLQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsTUFBZ0M7UUFDekQsTUFBTSxZQUFZLEdBQWtCLE1BQU0sRUFBRSxZQUFZLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QixDQUFDLE1BQXNDO1FBQ3BFLE1BQU0sWUFBWSxHQUF3QixNQUFNLEVBQUUsWUFBWSxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzhHQW5FbUIsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFEckMsU0FBUzs2RkF3QkQsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLFdBQVc7Z0JBTWxCLGlCQUFpQjtzQkFEdkIsWUFBWTt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0TGlzdGVuZXIsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q2hhbmdlcywgQ29tcG9uZW50Q2hhbmdlIH0gZnJvbSAnQGJpbWVpc3Rlci9wdXBha2l0LmNvbW1vbic7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ0BiaW1laXN0ZXIvdXRpbGl0aWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRha2UsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0U3RhdGVTZXJ2aWNlRGVjbGFyYXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NlbGVjdC1zdGF0ZS1zZXJ2aWNlLWRlY2xhcmF0aW9uLmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbGVjdE9wdGlvbkJhc2U8VD4gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBwdWJsaWMgYWJzdHJhY3QgdmFsdWU6IFQ7XG4gIHB1YmxpYyBhYnN0cmFjdCBpc0Rpc2FibGVkOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdmFsdWUkOiBCZWhhdmlvclN1YmplY3Q8VD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQ+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0hvdmVyZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNQaWNrZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy52YWx1ZSQucGlwZShcbiAgICBzd2l0Y2hNYXAoKHZhbHVlOiBUKSA9PiB0aGlzLnNlbGVjdFN0YXRlU2VydmljZS5pc1BpY2tlZCh2YWx1ZSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzU2VsZkRpc2FibGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzRGlzYWJsZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5pc1NlbGZEaXNhYmxlZCQsXG4gICAgdGhpcy5zZWxlY3RTdGF0ZVNlcnZpY2UuaXNEaXNhYmxlZCQsXG4gIF0pLnBpcGUobWFwKChbaXNTZWxmRGlzYWJsZWQsIGlzRGlzYWJsZWRdOiBbYm9vbGVhbiwgYm9vbGVhbl0pID0+IGlzU2VsZkRpc2FibGVkIHx8IGlzRGlzYWJsZWQpKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgc2VsZWN0U3RhdGVTZXJ2aWNlOiBTZWxlY3RTdGF0ZVNlcnZpY2VEZWNsYXJhdGlvbjxUPikge31cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZW92ZXInKVxuICBwdWJsaWMgcHJvY2Vzc01vdXNlT3ZlcigpOiB2b2lkIHtcbiAgICB0aGlzLmlzSG92ZXJlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlbGVhdmUnKVxuICBwdWJsaWMgcHJvY2Vzc01vdXNlTGVhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0hvdmVyZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IENvbXBvbmVudENoYW5nZXM8dGhpcz4pOiB2b2lkIHtcbiAgICBpZiAoaXNOaWwoY2hhbmdlcykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSkge1xuICAgICAgdGhpcy5wcm9jZXNzVmFsdWVDaGFuZ2UoY2hhbmdlcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ2lzRGlzYWJsZWQnKSkge1xuICAgICAgdGhpcy5wcm9jZXNzSXNEaXNhYmxlZENoYW5nZShjaGFuZ2VzLmlzRGlzYWJsZWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRGlzYWJsZWQkKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgZmlsdGVyKChbXywgaXNEaXNhYmxlZF06IFtULCBib29sZWFuXSkgPT4gIWlzRGlzYWJsZWQpLFxuICAgICAgICBtYXAoKFt2YWx1ZSwgX106IFtULCBib29sZWFuXSkgPT4gdmFsdWUpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZTogVCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlU2VydmljZS5wcm9jZXNzU2VsZWN0aW9uKHZhbHVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzVmFsdWVDaGFuZ2UoY2hhbmdlOiBDb21wb25lbnRDaGFuZ2U8dGhpcywgVD4pOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVkVmFsdWU6IFQgfCB1bmRlZmluZWQgPSBjaGFuZ2U/LmN1cnJlbnRWYWx1ZTtcbiAgICB0aGlzLnZhbHVlJC5uZXh0KHVwZGF0ZWRWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NJc0Rpc2FibGVkQ2hhbmdlKGNoYW5nZTogQ29tcG9uZW50Q2hhbmdlPHRoaXMsIGJvb2xlYW4+KTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlZFZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gY2hhbmdlPy5jdXJyZW50VmFsdWU7XG4gICAgdGhpcy5pc1NlbGZEaXNhYmxlZCQubmV4dCh1cGRhdGVkVmFsdWUpO1xuICB9XG59XG4iXX0=