@bimeister/pupakit.forms
Version:
PupaKit Forms
64 lines • 9.69 kB
JavaScript
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=