UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

78 lines 13.4 kB
import { DOCUMENT } from '@angular/common'; import { Directive, EventEmitter, inject, Output } from '@angular/core'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { tuiTypedFromEvent } from '@taiga-ui/cdk/observables'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { tuiClamp, tuiRound } from '@taiga-ui/cdk/utils/math'; import { TUI_FLOATING_PRECISION } from '@taiga-ui/kit/components/slider'; import { map, repeat, startWith, switchMap, takeUntil, tap } from 'rxjs'; import { TuiRange } from './range.component'; import * as i0 from "@angular/core"; class TuiRangeChange { constructor() { this.doc = inject(DOCUMENT); this.el = tuiInjectElement(); this.range = inject(TuiRange); // TODO(v5): use 'start' | 'end' instead this.activeThumbChange = new EventEmitter(); let activeThumb; tuiTypedFromEvent(this.el, 'pointerdown', { passive: true, capture: true, }) .pipe(tap(({ clientX, target, pointerId }) => { activeThumb = this.detectActiveThumb(clientX, target); this.range.slidersRefs .get(activeThumb === 'start' ? 0 : 1) ?.nativeElement.setPointerCapture(pointerId); // TODO(v5): remove backward compatibility this.activeThumbChange.emit(activeThumb === 'start' ? 'left' : 'right'); if (this.range.focusable) { this.el.focus(); } }), switchMap((event) => tuiTypedFromEvent(this.doc, 'pointermove').pipe(startWith(event))), map(({ clientX }) => this.getFractionFromEvents(clientX ?? 0)), takeUntil(tuiTypedFromEvent(this.doc, 'pointerup', { passive: true })), repeat(), takeUntilDestroyed()) .subscribe((fraction) => { const value = this.range.toValue(fraction); this.range.processValue(value, activeThumb === 'end'); }); } getFractionFromEvents(clickClientX) { const { left, right, width } = this.el.getBoundingClientRect(); const start = this.el.matches('[dir="rtl"] :scope') ? right : left; const value = Math.abs(tuiClamp(clickClientX, left, right) - start); return tuiRound(value / width, TUI_FLOATING_PRECISION); } detectActiveThumb(clientX, target) { const [startSliderRef, endSliderRef] = this.range.slidersRefs; switch (target) { case endSliderRef?.nativeElement: return 'end'; case startSliderRef?.nativeElement: return 'start'; default: return this.findNearestActiveThumb(clientX); } } findNearestActiveThumb(clientX) { const fraction = this.getFractionFromEvents(clientX); const deltaStart = fraction * 100 - this.range.start(); const deltaEnd = fraction * 100 - 100 + this.range.end(); return Math.abs(deltaStart) > Math.abs(deltaEnd) || deltaEnd > 0 || (this.range.start() === 0 && this.range.end() === 100) ? 'end' : 'start'; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRangeChange, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiRangeChange, isStandalone: true, outputs: { activeThumbChange: "activeThumbChange" }, ngImport: i0 }); } } export { TuiRangeChange }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRangeChange, decorators: [{ type: Directive, args: [{ standalone: true, }] }], ctorParameters: function () { return []; }, propDecorators: { activeThumbChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UtY2hhbmdlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3JhbmdlL3JhbmdlLWNoYW5nZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDOztBQUUzQyxNQUdhLGNBQWM7SUFTdkI7UUFSaUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2QixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixVQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTFDLHdDQUF3QztRQUV4QixzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUdyRSxJQUFJLFdBQTRCLENBQUM7UUFFakMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFB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Q0FBQztTQUNuRDtJQUNMLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUFlO1FBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxNQUFNLFVBQVUsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDNUMsUUFBUSxHQUFHLENBQUM7WUFDWixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxDQUFDO1lBQ3RELENBQUMsQ0FBQyxLQUFLO1lBQ1AsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNsQixDQUFDOytHQWhGUSxjQUFjO21HQUFkLGNBQWM7O1NBQWQsY0FBYzs0RkFBZCxjQUFjO2tCQUgxQixTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjswRUFRbUIsaUJBQWlCO3NCQURoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge3R1aVR5cGVkRnJvbUV2ZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcCwgdHVpUm91bmR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWF0aCc7XG5pbXBvcnQge1RVSV9GTE9BVElOR19QUkVDSVNJT059IGZyb20gJ0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9zbGlkZXInO1xuaW1wb3J0IHttYXAsIHJlcGVhdCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtUdWlSYW5nZX0gZnJvbSAnLi9yYW5nZS5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlSYW5nZUNoYW5nZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50KCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByYW5nZSA9IGluamVjdChUdWlSYW5nZSk7XG5cbiAgICAvLyBUT0RPKHY1KTogdXNlICdzdGFydCcgfCAnZW5kJyBpbnN0ZWFkXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGl2ZVRodW1iQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjwnbGVmdCcgfCAncmlnaHQnPigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGxldCBhY3RpdmVUaHVtYjogJ2VuZCcgfCAnc3RhcnQnO1xuXG4gICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KHRoaXMuZWwsICdwb2ludGVyZG93bicsIHtcbiAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICBjYXB0dXJlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCh7Y2xpZW50WCwgdGFyZ2V0LCBwb2ludGVySWR9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRodW1iID0gdGhpcy5kZXRlY3RBY3RpdmVUaHVtYihjbGllbnRYLCB0YXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmdlLnNsaWRlcnNSZWZzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZ2V0KGFjdGl2ZVRodW1iID09PSAnc3RhcnQnID8gMCA6IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICA/Lm5hdGl2ZUVsZW1lbnQuc2V0UG9pbnRlckNhcHR1cmUocG9pbnRlcklkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETyh2NSk6IHJlbW92ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGh1bWJDaGFuZ2UuZW1pdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRodW1iID09PSAnc3RhcnQnID8gJ2xlZnQnIDogJ3JpZ2h0JyxcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yYW5nZS5mb2N1c2FibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoZXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgIHR1aVR5cGVkRnJvbUV2ZW50KHRoaXMuZG9jLCAncG9pbnRlcm1vdmUnKS5waXBlKHN0YXJ0V2l0aChldmVudCkpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgbWFwKCh7Y2xpZW50WH0pID0+IHRoaXMuZ2V0RnJhY3Rpb25Gcm9tRXZlbnRzKGNsaWVudFggPz8gMCkpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0dWlUeXBlZEZyb21FdmVudCh0aGlzLmRvYywgJ3BvaW50ZXJ1cCcsIHtwYXNzaXZlOiB0cnVlfSkpLFxuICAgICAgICAgICAgICAgIHJlcGVhdCgpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZnJhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmFuZ2UudG9WYWx1ZShmcmFjdGlvbik7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJhbmdlLnByb2Nlc3NWYWx1ZSh2YWx1ZSwgYWN0aXZlVGh1bWIgPT09ICdlbmQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RnJhY3Rpb25Gcm9tRXZlbnRzKGNsaWNrQ2xpZW50WDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qge2xlZnQsIHJpZ2h0LCB3aWR0aH0gPSB0aGlzLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZWwubWF0Y2hlcygnW2Rpcj1cInJ0bFwiXSA6c2NvcGUnKSA/IHJpZ2h0IDogbGVmdDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBNYXRoLmFicyh0dWlDbGFtcChjbGlja0NsaWVudFgsIGxlZnQsIHJpZ2h0KSAtIHN0YXJ0KTtcblxuICAgICAgICByZXR1cm4gdHVpUm91bmQodmFsdWUgLyB3aWR0aCwgVFVJX0ZMT0FUSU5HX1BSRUNJU0lPTik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkZXRlY3RBY3RpdmVUaHVtYihcbiAgICAgICAgY2xpZW50WDogbnVtYmVyLFxuICAgICAgICB0YXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCxcbiAgICApOiAnZW5kJyB8ICdzdGFydCcge1xuICAgICAgICBjb25zdCBbc3RhcnRTbGlkZXJSZWYsIGVuZFNsaWRlclJlZl0gPSB0aGlzLnJhbmdlLnNsaWRlcnNSZWZzO1xuXG4gICAgICAgIHN3aXRjaCAodGFyZ2V0KSB7XG4gICAgICAgICAgICBjYXNlIGVuZFNsaWRlclJlZj8ubmF0aXZlRWxlbWVudDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuZCc7XG4gICAgICAgICAgICBjYXNlIHN0YXJ0U2xpZGVyUmVmPy5uYXRpdmVFbGVtZW50OlxuICAgICAgICAgICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTmVhcmVzdEFjdGl2ZVRodW1iKGNsaWVudFgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kTmVhcmVzdEFjdGl2ZVRodW1iKGNsaWVudFg6IG51bWJlcik6ICdlbmQnIHwgJ3N0YXJ0JyB7XG4gICAgICAgIGNvbnN0IGZyYWN0aW9uID0gdGhpcy5nZXRGcmFjdGlvbkZyb21FdmVudHMoY2xpZW50WCk7XG4gICAgICAgIGNvbnN0IGRlbHRhU3RhcnQgPSBmcmFjdGlvbiAqIDEwMCAtIHRoaXMucmFuZ2Uuc3RhcnQoKTtcbiAgICAgICAgY29uc3QgZGVsdGFFbmQgPSBmcmFjdGlvbiAqIDEwMCAtIDEwMCArIHRoaXMucmFuZ2UuZW5kKCk7XG5cbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGRlbHRhU3RhcnQpID4gTWF0aC5hYnMoZGVsdGFFbmQpIHx8XG4gICAgICAgICAgICBkZWx0YUVuZCA+IDAgfHxcbiAgICAgICAgICAgICh0aGlzLnJhbmdlLnN0YXJ0KCkgPT09IDAgJiYgdGhpcy5yYW5nZS5lbmQoKSA9PT0gMTAwKVxuICAgICAgICAgICAgPyAnZW5kJ1xuICAgICAgICAgICAgOiAnc3RhcnQnO1xuICAgIH1cbn1cbiJdfQ==