UNPKG

@taiga-ui/core

Version:

Core library for creating Angular components and applications using Taiga UI

59 lines 10.6 kB
import { Directive, inject, Input } from '@angular/core'; import { TuiHoveredService } from '@taiga-ui/cdk/directives/hovered'; import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { tuiAsDriver, TuiDriver } from '@taiga-ui/core/classes'; import { tuiIsObscured } from '@taiga-ui/core/utils'; import { delay, filter, map, merge, of, repeat, Subject, switchMap, takeUntil, tap, } from 'rxjs'; import { TUI_HINT_OPTIONS } from './hint-options.directive'; import * as i0 from "@angular/core"; class TuiHintHover extends TuiDriver { constructor() { super((subscriber) => this.stream$.subscribe(subscriber)); this.isMobile = inject(TUI_IS_MOBILE); this.el = tuiInjectElement(); this.hovered$ = inject(TuiHoveredService); this.options = inject(TUI_HINT_OPTIONS); this.visible = false; this.toggle$ = new Subject(); this.stream$ = merge(this.toggle$.pipe(switchMap((visible) => this.isMobile ? of(visible) : of(visible).pipe(delay(visible ? 0 : this.tuiHintHideDelay))), takeUntil(this.hovered$), repeat()), this.hovered$.pipe(switchMap((visible) => this.isMobile ? of(visible).pipe(delay(0)) : of(visible).pipe(delay(visible ? this.tuiHintShowDelay : this.tuiHintHideDelay))), takeUntil(this.toggle$), repeat())).pipe(filter(() => this.enabled), map((value) => value && (this.el.hasAttribute('tuiHintPointer') || !tuiIsObscured(this.el))), tap((visible) => { this.visible = visible; })); this.parent = inject(TuiHintHover, { optional: true, skipSelf: true, }); this.tuiHintShowDelay = this.options.showDelay; this.tuiHintHideDelay = this.options.hideDelay; this.type = 'hint'; this.enabled = true; } toggle(visible = !this.visible) { this.toggle$.next(visible); this.parent?.toggle(visible); } close() { this.toggle$.next(false); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintHover, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiHintHover, isStandalone: true, inputs: { tuiHintShowDelay: "tuiHintShowDelay", tuiHintHideDelay: "tuiHintHideDelay" }, providers: [tuiAsDriver(TuiHintHover), TuiHoveredService], exportAs: ["tuiHintHover"], usesInheritance: true, ngImport: i0 }); } } export { TuiHintHover }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiHintHover, decorators: [{ type: Directive, args: [{ standalone: true, providers: [tuiAsDriver(TuiHintHover), TuiHoveredService], exportAs: 'tuiHintHover', }] }], ctorParameters: function () { return []; }, propDecorators: { tuiHintShowDelay: [{ type: Input }], tuiHintHideDelay: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGludC1ob3Zlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2RpcmVjdGl2ZXMvaGludC9oaW50LWhvdmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxLQUFLLEVBQ0wsTUFBTSxFQUNOLEdBQUcsRUFDSCxLQUFLLEVBQ0wsRUFBRSxFQUNGLE1BQU0sRUFDTixPQUFPLEVBQ1AsU0FBUyxFQUNULFNBQVMsRUFDVCxHQUFHLEdBQ04sTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUMsZ0JBQWdCLEVBQXNCLE1BQU0sMEJBQTBCLENBQUM7O0FBRS9FLE1BS2EsWUFBYSxTQUFRLFNBQVM7SUF1RHZDO1FBQ0ksS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBdkQ3QyxhQUFRLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2pDLE9BQUUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLGFBQVEsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNyQyxZQUFPLEdBQUcsTUFBTSxDQUFD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SztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZSwgaW5qZWN0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1R1aUhvdmVyZWRTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvaG92ZXJlZCc7XG5pbXBvcnQge1RVSV9JU19NT0JJTEV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlBc0RyaXZlciwgVHVpRHJpdmVyfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jbGFzc2VzJztcbmltcG9ydCB7dHVpSXNPYnNjdXJlZH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHtcbiAgICBkZWxheSxcbiAgICBmaWx0ZXIsXG4gICAgbWFwLFxuICAgIG1lcmdlLFxuICAgIG9mLFxuICAgIHJlcGVhdCxcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlVW50aWwsXG4gICAgdGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUVUlfSElOVF9PUFRJT05TLCB0eXBlIFR1aUhpbnRPcHRpb25zfSBmcm9tICcuL2hpbnQtb3B0aW9ucy5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHByb3ZpZGVyczogW3R1aUFzRHJpdmVyKFR1aUhpbnRIb3ZlciksIFR1aUhvdmVyZWRTZXJ2aWNlXSxcbiAgICBleHBvcnRBczogJ3R1aUhpbnRIb3ZlcicsXG59KVxuZXhwb3J0IGNsYXNzIFR1aUhpbnRIb3ZlciBleHRlbmRzIFR1aURyaXZlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaG92ZXJlZCQgPSBpbmplY3QoVHVpSG92ZXJlZFNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9ucyA9IGluamVjdChUVUlfSElOVF9PUFRJT05TKTtcbiAgICBwcml2YXRlIHZpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRvZ2dsZSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RyZWFtJCA9IG1lcmdlKFxuICAgICAgICB0aGlzLnRvZ2dsZSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodmlzaWJsZSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgID8gb2YodmlzaWJsZSlcbiAgICAgICAgICAgICAgICAgICAgOiBvZih2aXNpYmxlKS5waXBlKGRlbGF5KHZpc2libGUgPyAwIDogdGhpcy50dWlIaW50SGlkZURlbGF5KSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuaG92ZXJlZCQpLFxuICAgICAgICAgICAgcmVwZWF0KCksXG4gICAgICAgICksXG4gICAgICAgIHRoaXMuaG92ZXJlZCQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodmlzaWJsZSkgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgID8gb2YodmlzaWJsZSkucGlwZShkZWxheSgwKSlcbiAgICAgICAgICAgICAgICAgICAgOiBvZih2aXNpYmxlKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheSh2aXNpYmxlID8gdGhpcy50dWlIaW50U2hvd0RlbGF5IDogdGhpcy50dWlIaW50SGlkZURlbGF5KSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLnRvZ2dsZSQpLFxuICAgICAgICAgICAgcmVwZWF0KCksXG4gICAgICAgICksXG4gICAgKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5lbmFibGVkKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgICAgKHZhbHVlKSA9PlxuICAgICAgICAgICAgICAgIHZhbHVlICYmXG4gICAgICAgICAgICAgICAgKHRoaXMuZWwuaGFzQXR0cmlidXRlKCd0dWlIaW50UG9pbnRlcicpIHx8ICF0dWlJc09ic2N1cmVkKHRoaXMuZWwpKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCh2aXNpYmxlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXJlbnQgPSBpbmplY3QoVHVpSGludEhvdmVyLCB7XG4gICAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgICAgICBza2lwU2VsZjogdHJ1ZSxcbiAgICB9KTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHR1aUhpbnRTaG93RGVsYXk6IFR1aUhpbnRPcHRpb25zWydzaG93RGVsYXknXSA9IHRoaXMub3B0aW9ucy5zaG93RGVsYXk7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0dWlIaW50SGlkZURlbGF5OiBUdWlIaW50T3B0aW9uc1snaGlkZURlbGF5J10gPSB0aGlzLm9wdGlvbnMuaGlkZURlbGF5O1xuXG4gICAgcHVibGljIHJlYWRvbmx5IHR5cGUgPSAnaGludCc7XG5cbiAgICBwdWJsaWMgZW5hYmxlZCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKHN1YnNjcmliZXIpID0+IHRoaXMuc3RyZWFtJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUodmlzaWJsZSA9ICF0aGlzLnZpc2libGUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b2dnbGUkLm5leHQodmlzaWJsZSk7XG4gICAgICAgIHRoaXMucGFyZW50Py50b2dnbGUodmlzaWJsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZSQubmV4dChmYWxzZSk7XG4gICAgfVxufVxuIl19