@taiga-ui/core
Version:
Core library for creating Angular components and applications using Taiga UI
50 lines • 9.19 kB
JavaScript
import { __decorate } from "tslib";
import { DOCUMENT } from '@angular/common';
import { Directive, inject, Input, NgZone } from '@angular/core';
import { tuiIfMap, tuiTypedFromEvent, tuiZonefreeScheduler, tuiZoneOptimized, } from '@taiga-ui/cdk/observables';
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
import { tuiIsNativeFocused } from '@taiga-ui/cdk/utils/focus';
import { tuiIsPresent, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
import { tuiAsDriver, TuiDriver } from '@taiga-ui/core/classes';
import { BehaviorSubject, debounce, distinctUntilChanged, fromEvent, map, merge, of, skip, startWith, switchMap, timer, } from 'rxjs';
import * as i0 from "@angular/core";
class TuiHintDescribe extends TuiDriver {
constructor() {
super((subscriber) => this.stream$.subscribe(subscriber));
this.doc = inject(DOCUMENT);
this.el = tuiInjectElement();
this.zone = inject(NgZone);
this.id$ = new BehaviorSubject('');
this.stream$ = this.id$.pipe(distinctUntilChanged(), tuiIfMap(() => fromEvent(this.doc, 'keydown', { capture: true }), tuiIsPresent), switchMap(() => this.focused
? of(false)
: merge(tuiTypedFromEvent(this.doc, 'keyup'), tuiTypedFromEvent(this.element, 'blur')).pipe(map(() => this.focused))), debounce((visible) => visible ? timer(1000, tuiZonefreeScheduler(this.zone)) : of(null)), startWith(false), distinctUntilChanged(), skip(1), tuiZoneOptimized());
this.type = 'hint';
}
set tuiHintDescribe(id) {
this.id$.next(id || '');
}
get element() {
const id = this.id$.value;
return id ? this.doc.querySelector(`#${id}`) || this.el : this.el;
}
get focused() {
return tuiIsNativeFocused(this.element);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintDescribe, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiHintDescribe, isStandalone: true, selector: "[tuiHintDescribe]", inputs: { tuiHintDescribe: "tuiHintDescribe" }, providers: [tuiAsDriver(TuiHintDescribe)], usesInheritance: true, ngImport: i0 }); }
}
__decorate([
tuiPure
], TuiHintDescribe.prototype, "element", null);
export { TuiHintDescribe };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintDescribe, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[tuiHintDescribe]',
providers: [tuiAsDriver(TuiHintDescribe)],
}]
}], ctorParameters: function () { return []; }, propDecorators: { tuiHintDescribe: [{
type: Input
}], element: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC1kZXNjcmliZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvaGludC9oaW50LWRlc2NyaWJlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUNILFFBQVEsRUFDUixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGdCQUFnQixHQUNuQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBQyxZQUFZLEVBQUUsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDeEUsT0FBTyxFQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQ0gsZUFBZSxFQUNmLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULEtBQUssR0FDUixNQUFNLE1BQU0sQ0FBQzs7QUFFZCxNQUthLGVBQWdCLFNBQVEsU0FBUztJQTJCMUM7UUFDSSxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUEzQjdDLFFBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkIsT0FBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixRQUFHLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUIsWUFBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUNwQyxvQkFBb0IsRUFBRSxFQUN0QixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQzdFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FDWCxJQUFJLENBQUMsT0FBTztZQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ1gsQ0FBQyxDQUFDLEtBQUssQ0FDRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxFQUNwQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUMxQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQ3hDLEVBQ0QsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDakIsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ3BFLEVBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUNoQixvQkFBb0IsRUFBRSxFQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsZ0JBQWdCLEVBQUUsQ0FDckIsQ0FBQztRQUVjLFNBQUksR0FBRyxNQUFNLENBQUM7SUFJOUIsQ0FBQztJQUVELElBQ1csZUFBZSxDQUFDLEVBQTZCO1FBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBWSxPQUFPO1FBQ2YsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7UUFFMUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFZLE9BQU87UUFDZixPQUFPLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDOytHQTdDUSxlQUFlO21HQUFmLGVBQWUsZ0hBRmIsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUM7O0FBdUN6QztJQURDLE9BQU87OENBS1A7U0F6Q1EsZUFBZTs0RkFBZixlQUFlO2tCQUwzQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixTQUFTLEVBQUUsQ0FBQyxXQUFXLGlCQUFpQixDQUFDO2lCQUM1QzswRUFpQ2MsZUFBZTtzQkFEekIsS0FBSztnQkFNTSxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGlyZWN0aXZlLCBpbmplY3QsIElucHV0LCBOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICB0dWlJZk1hcCxcbiAgICB0dWlUeXBlZEZyb21FdmVudCxcbiAgICB0dWlab25lZnJlZVNjaGVkdWxlcixcbiAgICB0dWlab25lT3B0aW1pemVkLFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlJc05hdGl2ZUZvY3VzZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvZm9jdXMnO1xuaW1wb3J0IHt0dWlJc1ByZXNlbnQsIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge3R1aUFzRHJpdmVyLCBUdWlEcml2ZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NsYXNzZXMnO1xuaW1wb3J0IHtcbiAgICBCZWhhdmlvclN1YmplY3QsXG4gICAgZGVib3VuY2UsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgZnJvbUV2ZW50LFxuICAgIG1hcCxcbiAgICBtZXJnZSxcbiAgICBvZixcbiAgICBza2lwLFxuICAgIHN0YXJ0V2l0aCxcbiAgICBzd2l0Y2hNYXAsXG4gICAgdGltZXIsXG59IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnW3R1aUhpbnREZXNjcmliZV0nLFxuICAgIHByb3ZpZGVyczogW3R1aUFzRHJpdmVyKFR1aUhpbnREZXNjcmliZSldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlIaW50RGVzY3JpYmUgZXh0ZW5kcyBUdWlEcml2ZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW0kID0gdGhpcy5pZCQucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdHVpSWZNYXAoKCkgPT4gZnJvbUV2ZW50KHRoaXMuZG9jLCAna2V5ZG93bicsIHtjYXB0dXJlOiB0cnVlfSksIHR1aUlzUHJlc2VudCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PlxuICAgICAgICAgICAgdGhpcy5mb2N1c2VkXG4gICAgICAgICAgICAgICAgPyBvZihmYWxzZSlcbiAgICAgICAgICAgICAgICA6IG1lcmdlKFxuICAgICAgICAgICAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KHRoaXMuZG9jLCAna2V5dXAnKSxcbiAgICAgICAgICAgICAgICAgICAgICB0dWlUeXBlZEZyb21FdmVudCh0aGlzLmVsZW1lbnQsICdibHVyJyksXG4gICAgICAgICAgICAgICAgICApLnBpcGUobWFwKCgpID0+IHRoaXMuZm9jdXNlZCkpLFxuICAgICAgICApLFxuICAgICAgICBkZWJvdW5jZSgodmlzaWJsZSkgPT5cbiAgICAgICAgICAgIHZpc2libGUgPyB0aW1lcigxMDAwLCB0dWlab25lZnJlZVNjaGVkdWxlcih0aGlzLnpvbmUpKSA6IG9mKG51bGwpLFxuICAgICAgICApLFxuICAgICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0dWlab25lT3B0aW1pemVkKCksXG4gICAgKTtcblxuICAgIHB1YmxpYyByZWFkb25seSB0eXBlID0gJ2hpbnQnO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKChzdWJzY3JpYmVyKSA9PiB0aGlzLnN0cmVhbSQuc3Vic2NyaWJlKHN1YnNjcmliZXIpKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdHVpSGludERlc2NyaWJlKGlkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaWQkLm5leHQoaWQgfHwgJycpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXQgZWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5pZCQudmFsdWU7XG5cbiAgICAgICAgcmV0dXJuIGlkID8gdGhpcy5kb2MucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkgfHwgdGhpcy5lbCA6IHRoaXMuZWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgZm9jdXNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR1aUlzTmF0aXZlRm9jdXNlZCh0aGlzLmVsZW1lbnQpO1xuICAgIH1cbn1cbiJdfQ==