@bimeister/pupakit.forms
Version:
PupaKit Forms
52 lines • 10.7 kB
JavaScript
import { ConnectionPositionPair } from '@angular/cdk/overlay';
import { Directive } from '@angular/core';
import { filterNotNil, filterTruthy, isNil } from '@bimeister/utilities';
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
import '../../interfaces/select-state-service-declaration.interface';
import * as i0 from "@angular/core";
export class SelectDropdownBase {
constructor(selectStateService) {
this.selectStateService = selectStateService;
this.subscription = new Subscription();
this.isExpanded$ = this.selectStateService.isExpanded$;
this.animationState$ = this.isExpanded$.pipe(distinctUntilChanged(), map((isExpanded) => (isExpanded ? 'expanded' : 'void')));
this.dropDownOverlayOrigin$ = this.selectStateService.dropdownOverlayOrigin$.pipe(filter((origin) => !isNil(origin)));
this.dropDownTriggerButtonWidthPx$ = this.isExpanded$.pipe(filter((isExpanded) => isExpanded), switchMap(() => this.selectStateService.dropdownTriggerButtonWidthPx$));
this.overlayPositions = [
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),
new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),
new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }),
new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }),
];
this.isOverlayAttached$ = new BehaviorSubject(null);
}
ngOnInit() {
this.subscription.add(this.handleOverlayRefOnOpen());
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
processEventPropagation(event) {
event.stopPropagation();
}
handleAttachOverlay() {
this.isOverlayAttached$.next(true);
}
handleDetachOverlay() {
this.isOverlayAttached$.next(false);
}
handleOverlayRefOnOpen() {
return combineLatest([this.isExpanded$, this.isOverlayAttached$.pipe(filterNotNil())])
.pipe(map(([isExpanded, isOverlayAttached]) => isExpanded && isOverlayAttached), filterTruthy(), map(() => this.cdkConnectedOverlay.overlayRef))
.subscribe((overlayRef) => {
this.selectStateService.defineDropdownOverlayRef(overlayRef);
});
}
}
SelectDropdownBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectDropdownBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
SelectDropdownBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.12", type: SelectDropdownBase, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectDropdownBase, decorators: [{
type: Directive
}], ctorParameters: function () { return [{ type: undefined }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRyb3Bkb3duLWJhc2UuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZGVjbGFyYXRpb25zL2NsYXNzZXMvYWJzdHJhY3Qvc2VsZWN0LWRyb3Bkb3duLWJhc2UuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxzQkFBc0IsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUE4Qyw2REFBNkQsQ0FBQzs7QUFHNUcsTUFBTSxPQUFnQixrQkFBa0I7SUE0QnRDLFlBQTZCLGtCQUFvRDtRQUFwRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWtDO1FBekJoRSxpQkFBWSxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpELGdCQUFXLEdBQXdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDdkUsb0JBQWUsR0FBdUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQ3pFLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLFVBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQ2pFLENBQUM7UUFFYywyQkFBc0IsR0FDcEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFNUYsa0NBQTZCLEdBQXVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUN2RixNQUFNLENBQUMsQ0FBQyxVQUFtQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFDM0MsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsQ0FBQyxDQUN2RSxDQUFDO1FBRWMscUJBQWdCLEdBQTZCO1lBQzNELElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQzNHLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzNHLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3ZHLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO1NBQ3hHLENBQUM7UUFFYyx1QkFBa0IsR0FBNkIsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFTCxDQUFDO0lBRTlFLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVNLHVCQUF1QixDQUFDLEtBQVk7UUFDekMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixPQUFPLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDbkYsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFZLEVBQUUsRUFBRSxDQUFDLFVBQVUsSUFBSSxpQkFBaUIsQ0FBQyxFQUNwRixZQUFZLEVBQUUsRUFDZCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUMvQzthQUNBLFNBQVMsQ0FBQyxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnSEE1RG1CLGtCQUFrQjtvR0FBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyTm90TmlsLCBmaWx0ZXJUcnV0aHksIGlzTmlsIH0gZnJvbSAnQGJpbWVpc3Rlci91dGlsaXRpZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VsZWN0U3RhdGVTZXJ2aWNlRGVjbGFyYXRpb24gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NlbGVjdC1zdGF0ZS1zZXJ2aWNlLWRlY2xhcmF0aW9uLmludGVyZmFjZSc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlbGVjdERyb3Bkb3duQmFzZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHJlYWRvbmx5IGNka0Nvbm5lY3RlZE92ZXJsYXk6IENka0Nvbm5lY3RlZE92ZXJsYXk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNFeHBhbmRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnNlbGVjdFN0YXRlU2VydmljZS5pc0V4cGFuZGVkJDtcbiAgcHVibGljIHJlYWRvbmx5IGFuaW1hdGlvblN0YXRlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5pc0V4cGFuZGVkJC5waXBlKFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgbWFwKChpc0V4cGFuZGVkOiBib29sZWFuKSA9PiAoaXNFeHBhbmRlZCA/ICdleHBhbmRlZCcgOiAndm9pZCcpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkcm9wRG93bk92ZXJsYXlPcmlnaW4kOiBPYnNlcnZhYmxlPENka092ZXJsYXlPcmlnaW4+ID1cbiAgICB0aGlzLnNlbGVjdFN0YXRlU2VydmljZS5kcm9wZG93bk92ZXJsYXlPcmlnaW4kLnBpcGUoZmlsdGVyKChvcmlnaW46IENka092ZXJsYXlPcmlnaW4pID0+ICFpc05pbChvcmlnaW4pKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRyb3BEb3duVHJpZ2dlckJ1dHRvbldpZHRoUHgkOiBPYnNlcnZhYmxlPG51bWJlcj4gPSB0aGlzLmlzRXhwYW5kZWQkLnBpcGUoXG4gICAgZmlsdGVyKChpc0V4cGFuZGVkOiBib29sZWFuKSA9PiBpc0V4cGFuZGVkKSxcbiAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5zZWxlY3RTdGF0ZVNlcnZpY2UuZHJvcGRvd25UcmlnZ2VyQnV0dG9uV2lkdGhQeCQpXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG92ZXJsYXlQb3NpdGlvbnM6IENvbm5lY3Rpb25Qb3NpdGlvblBhaXJbXSA9IFtcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9KSxcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnIH0sIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9KSxcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LCB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0pLFxuICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICd0b3AnIH0sIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSksXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzT3ZlcmxheUF0dGFjaGVkJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNlbGVjdFN0YXRlU2VydmljZTogU2VsZWN0U3RhdGVTZXJ2aWNlRGVjbGFyYXRpb248VD4pIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmhhbmRsZU92ZXJsYXlSZWZPbk9wZW4oKSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzRXZlbnRQcm9wYWdhdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVBdHRhY2hPdmVybGF5KCk6IHZvaWQge1xuICAgIHRoaXMuaXNPdmVybGF5QXR0YWNoZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRGV0YWNoT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzT3ZlcmxheUF0dGFjaGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlT3ZlcmxheVJlZk9uT3BlbigpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmlzRXhwYW5kZWQkLCB0aGlzLmlzT3ZlcmxheUF0dGFjaGVkJC5waXBlKGZpbHRlck5vdE5pbCgpKV0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChbaXNFeHBhbmRlZCwgaXNPdmVybGF5QXR0YWNoZWRdOiBib29sZWFuW10pID0+IGlzRXhwYW5kZWQgJiYgaXNPdmVybGF5QXR0YWNoZWQpLFxuICAgICAgICBmaWx0ZXJUcnV0aHkoKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY2RrQ29ubmVjdGVkT3ZlcmxheS5vdmVybGF5UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgob3ZlcmxheVJlZjogT3ZlcmxheVJlZikgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdFN0YXRlU2VydmljZS5kZWZpbmVEcm9wZG93bk92ZXJsYXlSZWYob3ZlcmxheVJlZik7XG4gICAgICB9KTtcbiAgfVxufVxuIl19