UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

72 lines 13.2 kB
import { inject, Injectable } from '@angular/core'; import { MutationObserverService } from '@ng-web-apis/mutation-observer'; import { ResizeObserverService } from '@ng-web-apis/resize-observer'; import { tuiZonefreeScheduler, tuiZoneOptimized } from '@taiga-ui/cdk/observables'; import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom'; import { tuiClamp } from '@taiga-ui/cdk/utils/math'; import { debounceTime, distinctUntilChanged, map, merge, Observable, share } from 'rxjs'; import { TuiItemsWithMoreDirective } from './items-with-more.directive'; import * as i0 from "@angular/core"; class TuiItemsWithMoreService extends Observable { constructor() { super((subscriber) => this.stream$.subscribe(subscriber)); this.el = tuiInjectElement(); this.directive = inject(TuiItemsWithMoreDirective); this.stream$ = merge(this.directive.change$, inject(MutationObserverService, { self: true }), inject(ResizeObserverService, { self: true })).pipe(debounceTime(0, tuiZonefreeScheduler()), map(() => this.getOverflowIndex()), distinctUntilChanged(), tuiZoneOptimized(), share()); } getOverflowIndex() { const { side, itemsLimit } = this.directive; const { clientWidth, children } = this.el; const items = Array.from(children, ({ clientWidth }) => clientWidth); const index = side === 'start' ? 0 : items.length - 1; const more = children[index]?.tagName === 'SPAN' ? (items[index] ?? 0) : 0; const total = items.reduce((sum, width) => sum + width, 0) - more; if (total <= clientWidth && itemsLimit >= items.length) { return side === 'end' ? itemsLimit : 0; } return side === 'start' ? this.getIndexStart(items, total, more) : this.getIndexEnd(items, total, more); } getIndexStart(items, total, more) { const { required, itemsLimit } = this.directive; const { clientWidth } = this.el; const min = Number.isFinite(itemsLimit) ? items.length - itemsLimit - 1 : 0; const last = items.length - 1; const mandatory = required === -1 ? last : required; for (let i = 1; i < last; i++) { if (i === mandatory + 1) { continue; } total -= items[i] ?? 0; if (total + more <= clientWidth) { return tuiClamp(i, mandatory < min ? min + 1 : min, items.length); } } return items.length; } getIndexEnd(items, total, more) { const { required, itemsLimit } = this.directive; const { clientWidth } = this.el; const max = itemsLimit > required ? itemsLimit - 1 : itemsLimit - 2; const last = items.length - 1; const mandatory = required === -1 ? 0 : required; for (let i = last - 1; i > 0; i--) { if (i === mandatory) { continue; } total -= items[i] ?? 0; if (total + more <= clientWidth) { return tuiClamp(i - 1, -1, max); } } return -1; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreService }); } } export { TuiItemsWithMoreService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreService, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtd2l0aC1tb3JlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9pdGVtcy13aXRoLW1vcmUvaXRlbXMtd2l0aC1tb3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFDLG9CQUFvQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDakYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXZGLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZCQUE2QixDQUFDOztBQUV0RSxNQUNhLHVCQUF3QixTQUFRLFVBQWtCO0lBZ0IzRDtRQUNJLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQWhCN0MsT0FBRSxHQUFHLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsY0FBUyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBRTVDLFlBQU8sR0FBRyxLQUFLLENBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUN0QixNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBQyxJQUFJ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QUMsQ0FBQztJQUNkLENBQUM7K0dBL0VRLHVCQUF1QjttSEFBdkIsdUJBQXVCOztTQUF2Qix1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TXV0YXRpb25PYnNlcnZlclNlcnZpY2V9IGZyb20gJ0BuZy13ZWItYXBpcy9tdXRhdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQge1Jlc2l6ZU9ic2VydmVyU2VydmljZX0gZnJvbSAnQG5nLXdlYi1hcGlzL3Jlc2l6ZS1vYnNlcnZlcic7XG5pbXBvcnQge3R1aVpvbmVmcmVlU2NoZWR1bGVyLCB0dWlab25lT3B0aW1pemVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL29ic2VydmFibGVzJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgc2hhcmV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1R1aUl0ZW1zV2l0aE1vcmVEaXJlY3RpdmV9IGZyb20gJy4vaXRlbXMtd2l0aC1tb3JlLmRpcmVjdGl2ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUdWlJdGVtc1dpdGhNb3JlU2VydmljZSBleHRlbmRzIE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGl2ZSA9IGluamVjdChUdWlJdGVtc1dpdGhNb3JlRGlyZWN0aXZlKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdHJlYW0kID0gbWVyZ2UoXG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLmNoYW5nZSQsXG4gICAgICAgIGluamVjdChNdXRhdGlvbk9ic2VydmVyU2VydmljZSwge3NlbGY6IHRydWV9KSxcbiAgICAgICAgaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSwge3NlbGY6IHRydWV9KSxcbiAgICApLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgwLCB0dWlab25lZnJlZVNjaGVkdWxlcigpKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZ2V0T3ZlcmZsb3dJbmRleCgpKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdHVpWm9uZU9wdGltaXplZCgpLFxuICAgICAgICBzaGFyZSgpLFxuICAgICk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKHN1YnNjcmliZXIpID0+IHRoaXMuc3RyZWFtJC5zdWJzY3JpYmUoc3Vic2NyaWJlcikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3ZlcmZsb3dJbmRleCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7c2lkZSwgaXRlbXNMaW1pdH0gPSB0aGlzLmRpcmVjdGl2ZTtcbiAgICAgICAgY29uc3Qge2NsaWVudFdpZHRoLCBjaGlsZHJlbn0gPSB0aGlzLmVsO1xuICAgICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmZyb20oY2hpbGRyZW4sICh7Y2xpZW50V2lkdGh9KSA9PiBjbGllbnRXaWR0aCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2lkZSA9PT0gJ3N0YXJ0JyA/IDAgOiBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBtb3JlID0gY2hpbGRyZW5baW5kZXhdPy50YWdOYW1lID09PSAnU1BBTicgPyAoaXRlbXNbaW5kZXhdID8/IDApIDogMDtcbiAgICAgICAgY29uc3QgdG90YWwgPSBpdGVtcy5yZWR1Y2UoKHN1bSwgd2lkdGgpID0+IHN1bSArIHdpZHRoLCAwKSAtIG1vcmU7XG5cbiAgICAgICAgaWYgKHRvdGFsIDw9IGNsaWVudFdpZHRoICYmIGl0ZW1zTGltaXQgPj0gaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gc2lkZSA9PT0gJ2VuZCcgPyBpdGVtc0xpbWl0IDogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzaWRlID09PSAnc3RhcnQnXG4gICAgICAgICAgICA/IHRoaXMuZ2V0SW5kZXhTdGFydChpdGVtcywgdG90YWwsIG1vcmUpXG4gICAgICAgICAgICA6IHRoaXMuZ2V0SW5kZXhFbmQoaXRlbXMsIHRvdGFsLCBtb3JlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEluZGV4U3RhcnQoaXRlbXM6IG51bWJlcltdLCB0b3RhbDogbnVtYmVyLCBtb3JlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7cmVxdWlyZWQsIGl0ZW1zTGltaXR9ID0gdGhpcy5kaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IHtjbGllbnRXaWR0aH0gPSB0aGlzLmVsO1xuICAgICAgICBjb25zdCBtaW4gPSBOdW1iZXIuaXNGaW5pdGUoaXRlbXNMaW1pdCkgPyBpdGVtcy5sZW5ndGggLSBpdGVtc0xpbWl0IC0gMSA6IDA7XG4gICAgICAgIGNvbnN0IGxhc3QgPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBtYW5kYXRvcnkgPSByZXF1aXJlZCA9PT0gLTEgPyBsYXN0IDogcmVxdWlyZWQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBsYXN0OyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpID09PSBtYW5kYXRvcnkgKyAxKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvdGFsIC09IGl0ZW1zW2ldID8/IDA7XG5cbiAgICAgICAgICAgIGlmICh0b3RhbCArIG1vcmUgPD0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHVpQ2xhbXAoaSwgbWFuZGF0b3J5IDwgbWluID8gbWluICsgMSA6IG1pbiwgaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpdGVtcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRJbmRleEVuZChpdGVtczogbnVtYmVyW10sIHRvdGFsOiBudW1iZXIsIG1vcmU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHtyZXF1aXJlZCwgaXRlbXNMaW1pdH0gPSB0aGlzLmRpcmVjdGl2ZTtcbiAgICAgICAgY29uc3Qge2NsaWVudFdpZHRofSA9IHRoaXMuZWw7XG4gICAgICAgIGNvbnN0IG1heCA9IGl0ZW1zTGltaXQgPiByZXF1aXJlZCA/IGl0ZW1zTGltaXQgLSAxIDogaXRlbXNMaW1pdCAtIDI7XG4gICAgICAgIGNvbnN0IGxhc3QgPSBpdGVtcy5sZW5ndGggLSAxO1xuICAgICAgICBjb25zdCBtYW5kYXRvcnkgPSByZXF1aXJlZCA9PT0gLTEgPyAwIDogcmVxdWlyZWQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGxhc3QgLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gbWFuZGF0b3J5KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvdGFsIC09IGl0ZW1zW2ldID8/IDA7XG5cbiAgICAgICAgICAgIGlmICh0b3RhbCArIG1vcmUgPD0gY2xpZW50V2lkdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHVpQ2xhbXAoaSAtIDEsIC0xLCBtYXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbiJdfQ==