UNPKG

@taiga-ui/kit

Version:

Taiga UI Angular main components kit

1 lines • 18.6 kB
{"version":3,"file":"taiga-ui-kit-components-items-with-more.mjs","sources":["../../../projects/kit/components/items-with-more/items-with-more.directive.ts","../../../projects/kit/components/items-with-more/items-with-more.service.ts","../../../projects/kit/components/items-with-more/more.directive.ts","../../../projects/kit/components/items-with-more/items-with-more.component.ts","../../../projects/kit/components/items-with-more/items-with-more.template.html","../../../projects/kit/components/items-with-more/items-with-more.ts","../../../projects/kit/components/items-with-more/taiga-ui-kit-components-items-with-more.ts"],"sourcesContent":["import {computed, Directive, input, type OnChanges} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {Subject} from 'rxjs';\n\n@Directive({\n host: {\n '[class._multiline]': 'linesLimit() > 1',\n '[style.--t-min-width.px]': 'maxWidth()',\n },\n})\nexport class TuiItemsWithMoreDirective implements OnChanges {\n private readonly el = tuiInjectElement();\n public readonly itemsLimit = input(Infinity);\n public readonly required = input(-1);\n public readonly linesLimit = input(1);\n public readonly side = input<'end' | 'start'>('end');\n public readonly align = computed(() => (this.linesLimit() > 1 ? 'end' : this.side()));\n public readonly change$ = new Subject<void>();\n\n public ngOnChanges(): void {\n this.change$.next();\n }\n\n protected maxWidth(): number {\n return Math.max(...Array.from(this.el.children, ({clientWidth}) => clientWidth));\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {WaMutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {tuiZonefreeScheduler, tuiZoneOptimized} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {debounceTime, distinctUntilChanged, map, merge, Observable, share} from 'rxjs';\n\nimport {TuiItemsWithMoreDirective} from './items-with-more.directive';\n\n@Injectable()\nexport class TuiItemsWithMoreService extends Observable<number> {\n private readonly el = tuiInjectElement();\n private readonly directive = inject(TuiItemsWithMoreDirective);\n\n protected readonly stream$ = merge(\n this.directive.change$,\n inject(WaMutationObserverService, {self: true}),\n inject(WaResizeObserverService, {self: true}),\n ).pipe(\n debounceTime(0, tuiZonefreeScheduler()),\n map(() =>\n this.directive.linesLimit() > 1\n ? this.getOverflowIndexMultiline()\n : this.getOverflowIndex(Array.from(this.el.children)),\n ),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private getOverflowIndex(children: Element[]): number {\n const {align, itemsLimit} = this.directive;\n const {clientWidth} = this.el;\n const items = Array.from(children, ({clientWidth}) => clientWidth);\n const index = align() === 'start' ? 0 : items.length - 1;\n const more = children[index]?.tagName === 'SPAN' ? (items[index] ?? 0) : 0;\n const total = items.reduce((sum, width) => sum + width, 0) - more;\n\n if (total <= clientWidth && itemsLimit() >= items.length) {\n return align() === 'end' ? itemsLimit() : 0;\n }\n\n return align() === 'start'\n ? this.getIndexStart(items, total, more)\n : this.getIndexEnd(items, total, more);\n }\n\n private getIndexStart(items: number[], total: number, more: number): number {\n const {required, itemsLimit} = this.directive;\n const {clientWidth} = this.el;\n const min = Number.isFinite(itemsLimit()) ? items.length - itemsLimit() - 1 : 0;\n const last = items.length - 1;\n const mandatory = required() === -1 ? last : required();\n\n for (let i = 1; i < last; i++) {\n if (i === mandatory + 1) {\n continue;\n }\n\n total -= items[i] ?? 0;\n\n if (total + more <= clientWidth) {\n return tuiClamp(i, mandatory < min ? min + 1 : min, items.length);\n }\n }\n\n return items.length;\n }\n\n private getIndexEnd(items: number[], total: number, more: number): number {\n const {required, itemsLimit} = this.directive;\n const {clientWidth} = this.el;\n const max = itemsLimit() > required() ? itemsLimit() - 1 : itemsLimit() - 2;\n const last = items.length - 1;\n const mandatory = required() === -1 ? 0 : required;\n\n for (let i = last - 1; i > 0; i--) {\n if (i === mandatory) {\n continue;\n }\n\n total -= items[i] ?? 0;\n\n if (total + more <= clientWidth) {\n return tuiClamp(i - 1, -1, max);\n }\n }\n\n return -1;\n }\n\n private getOverflowIndexMultiline(): number {\n const {children} = this.el;\n const {linesLimit, itemsLimit} = this.directive;\n const items = Array.from(children) as HTMLElement[];\n const rows = new Set(items.map((item) => item.offsetTop));\n const offset = Array.from(rows)[linesLimit() - 1];\n const firstItemLastRow = items.findIndex((i) => i.offsetTop === offset);\n const lastRow = items.slice(firstItemLastRow);\n const index = firstItemLastRow + this.getOverflowIndex(lastRow);\n\n return Math.min(itemsLimit() - 1, index);\n }\n}\n","import {Directive} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\n\n@Directive({selector: '[tuiMore]'})\nexport class TuiMore {\n public static ngTemplateContextGuard(\n _dir: TuiMore,\n _ctx: unknown,\n ): _ctx is TuiContext<number> {\n return true;\n }\n}\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n contentChildren,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport {outputFromObservable, toSignal} from '@angular/core/rxjs-interop';\nimport {\n WA_MUTATION_OBSERVER_INIT,\n WaMutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {WaResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiItemsWithMoreDirective} from './items-with-more.directive';\nimport {TuiItemsWithMoreService} from './items-with-more.service';\nimport {TuiMore} from './more.directive';\n\n@Component({\n selector: 'tui-items-with-more',\n imports: [NgTemplateOutlet],\n templateUrl: './items-with-more.template.html',\n styleUrl: './items-with-more.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WaMutationObserverService,\n WaResizeObserverService,\n TuiItemsWithMoreService,\n {\n provide: WA_MUTATION_OBSERVER_INIT,\n useValue: {\n childList: true,\n characterData: true,\n subtree: true,\n },\n },\n ],\n hostDirectives: [\n {\n directive: TuiItemsWithMoreDirective,\n inputs: ['itemsLimit', 'required', 'side', 'linesLimit'],\n },\n ],\n})\nexport class TuiItemsWithMoreComponent {\n protected readonly service = inject(TuiItemsWithMoreService);\n protected readonly directive = inject(TuiItemsWithMoreDirective);\n protected readonly more = contentChild(TuiMore, {read: TemplateRef});\n\n protected readonly items = contentChildren(TuiItem, {\n read: TemplateRef,\n descendants: true,\n });\n\n protected readonly isMoreHidden = computed(\n (index = this.lastIndex()) =>\n (index >= this.items().length - 1 && this.directive.align() === 'end') ||\n (!index && this.directive.align() === 'start'),\n );\n\n public readonly lastIndexChange = outputFromObservable(this.service);\n public readonly lastIndex = toSignal(this.service, {initialValue: 0});\n\n protected isHidden(index: number): boolean {\n const {align, required} = this.directive;\n\n return (\n (index > this.lastIndex() && index !== required() && align() === 'end') ||\n (index < this.lastIndex() && index !== required() && align() === 'start')\n );\n }\n}\n","@if (directive.side() === 'start') {\n <ng-container [ngTemplateOutlet]=\"template\" />\n}\n@for (item of items(); track item) {\n <div\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden($index)\"\n >\n <ng-container *ngTemplateOutlet=\"item\" />\n </div>\n}\n@if (directive.side() === 'end') {\n <ng-container [ngTemplateOutlet]=\"template\" />\n}\n<ng-template #template>\n @if (!isMoreHidden()) {\n <span class=\"t-item t-item_more\">\n <ng-container\n [ngTemplateOutlet]=\"more() || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n }\n</ng-template>\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiItemsWithMoreComponent} from './items-with-more.component';\nimport {TuiItemsWithMoreDirective} from './items-with-more.directive';\nimport {TuiMore} from './more.directive';\n\nexport const TuiItemsWithMore = [\n TuiItemsWithMoreComponent,\n TuiItemsWithMoreDirective,\n TuiMore,\n TuiItem,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TuiItemsWithMoreDirective"],"mappings":"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"}