@taiga-ui/kit
Version:
Taiga UI Angular main components kit
52 lines • 9.86 kB
JavaScript
import { __decorate, __param } from "tslib";
import { Directive, ElementRef, HostListener, Inject } from '@angular/core';
import { isNativeFocusedIn, isPresent, setNativeMouseFocused, TuiDestroyService, typedFromEvent, } from '@taiga-ui/cdk';
import { TuiHostedDropdownComponent } from '@taiga-ui/core';
import { merge, Observable, of, timer } from 'rxjs';
import { debounce, debounceTime, distinctUntilChanged, filter, map, mapTo, share, switchMap, takeUntil, tap, } from 'rxjs/operators';
var TuiDropdownHoverDirective = /** @class */ (function () {
function TuiDropdownHoverDirective(destroy$, _a, dropdown) {
var nativeElement = _a.nativeElement;
this.dropdown = dropdown;
var dropdown$ = dropdown.openChange.pipe(
// Give change detection time to open dropdown
debounceTime(0), map(function () { return dropdown.dropdown; }), filter(isPresent), share());
var open$ = merge(typedFromEvent(nativeElement, 'mouseenter'), typedFromEvent(nativeElement, 'click').pipe(tap(function (e) { return e.stopImmediatePropagation(); })), dropdown$.pipe(switchMap(function (element) {
return merge(typedFromEvent(element, 'focusin'), typedFromEvent(element, 'mouseenter'));
}))).pipe(mapTo(true));
var close$ = merge(typedFromEvent(nativeElement, 'mouseleave'), dropdown$.pipe(switchMap(function (element) {
return typedFromEvent(element, 'mouseleave').pipe(filter(function () { return !isNativeFocusedIn(element); }));
}))).pipe(mapTo(false));
merge(open$, close$)
.pipe(debounce(function (value) { return (value ? of(value) : timer(300)); }), distinctUntilChanged(), takeUntil(destroy$))
.subscribe(function (open) {
dropdown.updateOpen(open);
});
}
TuiDropdownHoverDirective.prototype.onMouseEnter = function () {
var nativeFocusableElement = this.dropdown.nativeFocusableElement;
if (nativeFocusableElement) {
setNativeMouseFocused(nativeFocusableElement);
}
};
TuiDropdownHoverDirective.ctorParameters = function () { return [
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] },
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
{ type: TuiHostedDropdownComponent, decorators: [{ type: Inject, args: [TuiHostedDropdownComponent,] }] }
]; };
__decorate([
HostListener('mouseenter')
], TuiDropdownHoverDirective.prototype, "onMouseEnter", null);
TuiDropdownHoverDirective = __decorate([
Directive({
selector: 'tui-hosted-dropdown[tuiDropdownHover]',
providers: [TuiDestroyService],
}),
__param(0, Inject(TuiDestroyService)),
__param(1, Inject(ElementRef)),
__param(2, Inject(TuiHostedDropdownComponent))
], TuiDropdownHoverDirective);
return TuiDropdownHoverDirective;
}());
export { TuiDropdownHoverDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taG92ZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRhaWdhLXVpL2tpdC9kaXJlY3RpdmVzL2Ryb3Bkb3duLWhvdmVyLyIsInNvdXJjZXMiOlsiZHJvcGRvd24taG92ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsY0FBYyxHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFDSCxRQUFRLEVBQ1IsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxnQkFBZ0IsQ0FBQztBQU14QjtJQUNJLG1DQUMrQixRQUEwQixFQUNqQyxFQUF3QyxFQUUzQyxRQUFvQztZQUZoQyxnQ0FBYTtRQUVqQixhQUFRLEdBQVIsUUFBUSxDQUE0QjtRQUVyRCxJQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUk7UUFDdEMsOENBQThDO1FBQzlDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsY0FBTSxPQUFBLFFBQVEsQ0FBQyxRQUFRLEVBQWpCLENBQWlCLENBQUMsRUFDNUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUNqQixLQUFLLEVBQUUsQ0FDVixDQUFDO1FBRUYsSUFBTSxLQUFLLEdBQUcsS0FBSyxDQUNmLGNBQWMsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQzNDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUN2QyxHQUFHLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsd0JBQXdCLEVBQUUsRUFBNUIsQ0FBNEIsQ0FBQyxDQUN6QyxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQ1YsU0FBUyxDQUFDLFVBQUEsT0FBTztZQUNiLE9BQUEsS0FBSyxDQUNELGNBQWMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQ2xDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQ3hDO1FBSEQsQ0FHQyxDQUNKLENBQ0osQ0FDSixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUVwQixJQUFNLE1BQU0sR0FBRyxLQUFLLENBQ2hCLGNBQWMsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLEVBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQ1YsU0FBUyxDQUFDLFVBQUEsT0FBTztZQUNiLE9BQUEsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ3RDLE1BQU0sQ0FBQyxjQUFNLE9BQUEsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBM0IsQ0FBMkIsQ0FBQyxDQUM1QztRQUZELENBRUMsQ0FDSixDQUNKLENBQ0osQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFckIsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7YUFDZixJQUFJLENBQ0QsUUFBUSxDQUFDLFVBQUEsS0FBSyxJQUFJLE9BQUEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWhDLENBQWdDLENBQUMsRUFDbkQsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QjthQUNBLFNBQVMsQ0FBQyxVQUFBLElBQUk7WUFDWCxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUdELGdEQUFZLEdBQVo7UUFDVyxJQUFBLDZEQUFzQixDQUFrQjtRQUUvQyxJQUFJLHNCQUFzQixFQUFFO1lBQ3hCLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLENBQUM7U0FDakQ7SUFDTCxDQUFDOztnQkF6RHdDLFVBQVUsdUJBQTlDLE1BQU0sU0FBQyxpQkFBaUI7Z0JBQ1ksVUFBVSx1QkFBOUMsTUFBTSxTQUFDLFVBQVU7Z0JBRVMsMEJBQTBCLHVCQURwRCxNQUFNLFNBQUMsMEJBQTBCOztJQWlEdEM7UUFEQyxZQUFZLENBQUMsWUFBWSxDQUFDO2lFQU8xQjtJQTNEUSx5QkFBeUI7UUFKckMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHVDQUF1QztZQUNqRCxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztTQUNqQyxDQUFDO1FBR08sV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QixXQUFBLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUNsQixXQUFBLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO09BSjlCLHlCQUF5QixDQTREckM7SUFBRCxnQ0FBQztDQUFBLEFBNURELElBNERDO1NBNURZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIGlzTmF0aXZlRm9jdXNlZEluLFxuICAgIGlzUHJlc2VudCxcbiAgICBzZXROYXRpdmVNb3VzZUZvY3VzZWQsXG4gICAgVHVpRGVzdHJveVNlcnZpY2UsXG4gICAgdHlwZWRGcm9tRXZlbnQsXG59IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHtUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHttZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgZGVib3VuY2UsXG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGZpbHRlcixcbiAgICBtYXAsXG4gICAgbWFwVG8sXG4gICAgc2hhcmUsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2VVbnRpbCxcbiAgICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICd0dWktaG9zdGVkLWRyb3Bkb3duW3R1aURyb3Bkb3duSG92ZXJdJyxcbiAgICBwcm92aWRlcnM6IFtUdWlEZXN0cm95U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aURyb3Bkb3duSG92ZXJEaXJlY3RpdmUge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFR1aURlc3Ryb3lTZXJ2aWNlKSBkZXN0cm95JDogT2JzZXJ2YWJsZTx2b2lkPixcbiAgICAgICAgQEluamVjdChFbGVtZW50UmVmKSB7bmF0aXZlRWxlbWVudH06IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFR1aUhvc3RlZERyb3Bkb3duQ29tcG9uZW50KVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bkb3duOiBUdWlIb3N0ZWREcm9wZG93bkNvbXBvbmVudCxcbiAgICApIHtcbiAgICAgICAgY29uc3QgZHJvcGRvd24kID0gZHJvcGRvd24ub3BlbkNoYW5nZS5waXBlKFxuICAgICAgICAgICAgLy8gR2l2ZSBjaGFuZ2UgZGV0ZWN0aW9uIHRpbWUgdG8gb3BlbiBkcm9wZG93blxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgbWFwKCgpID0+IGRyb3Bkb3duLmRyb3Bkb3duKSxcbiAgICAgICAgICAgIGZpbHRlcihpc1ByZXNlbnQpLFxuICAgICAgICAgICAgc2hhcmUoKSxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBvcGVuJCA9IG1lcmdlKFxuICAgICAgICAgICAgdHlwZWRGcm9tRXZlbnQobmF0aXZlRWxlbWVudCwgJ21vdXNlZW50ZXInKSxcbiAgICAgICAgICAgIHR5cGVkRnJvbUV2ZW50KG5hdGl2ZUVsZW1lbnQsICdjbGljaycpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKGUgPT4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZHJvcGRvd24kLnBpcGUoXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKGVsZW1lbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEZyb21FdmVudChlbGVtZW50LCAnZm9jdXNpbicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRGcm9tRXZlbnQoZWxlbWVudCwgJ21vdXNlZW50ZXInKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKS5waXBlKG1hcFRvKHRydWUpKTtcblxuICAgICAgICBjb25zdCBjbG9zZSQgPSBtZXJnZShcbiAgICAgICAgICAgIHR5cGVkRnJvbUV2ZW50KG5hdGl2ZUVsZW1lbnQsICdtb3VzZWxlYXZlJyksXG4gICAgICAgICAgICBkcm9wZG93biQucGlwZShcbiAgICAgICAgICAgICAgICBzd2l0Y2hNYXAoZWxlbWVudCA9PlxuICAgICAgICAgICAgICAgICAgICB0eXBlZEZyb21FdmVudChlbGVtZW50LCAnbW91c2VsZWF2ZScpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIWlzTmF0aXZlRm9jdXNlZEluKGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKS5waXBlKG1hcFRvKGZhbHNlKSk7XG5cbiAgICAgICAgbWVyZ2Uob3BlbiQsIGNsb3NlJClcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlKHZhbHVlID0+ICh2YWx1ZSA/IG9mKHZhbHVlKSA6IHRpbWVyKDMwMCkpKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKG9wZW4gPT4ge1xuICAgICAgICAgICAgICAgIGRyb3Bkb3duLnVwZGF0ZU9wZW4ob3Blbik7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcbiAgICBvbk1vdXNlRW50ZXIoKSB7XG4gICAgICAgIGNvbnN0IHtuYXRpdmVGb2N1c2FibGVFbGVtZW50fSA9IHRoaXMuZHJvcGRvd247XG5cbiAgICAgICAgaWYgKG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHNldE5hdGl2ZU1vdXNlRm9jdXNlZChuYXRpdmVGb2N1c2FibGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==