@taiga-ui/kit 4.30.0-canary.4acc066 → 4.30.0-canary.d74a2d2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/components/index.d.ts +1 -0
  2. package/components/items-with-more/items-with-more.component.d.ts +4 -2
  3. package/components/items-with-more/items-with-more.directive.d.ts +5 -1
  4. package/components/items-with-more/items-with-more.service.d.ts +1 -0
  5. package/components/line-clamp/line-clamp-box.component.d.ts +1 -1
  6. package/components/pager/index.d.ts +1 -0
  7. package/components/pager/pager.component.d.ts +23 -0
  8. package/esm2022/components/block/block.directive.mjs +2 -2
  9. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +1 -1
  10. package/esm2022/components/index.mjs +2 -1
  11. package/esm2022/components/items-with-more/items-with-more.component.mjs +16 -13
  12. package/esm2022/components/items-with-more/items-with-more.directive.mjs +17 -2
  13. package/esm2022/components/items-with-more/items-with-more.service.mjs +21 -8
  14. package/esm2022/components/line-clamp/line-clamp-box.component.mjs +4 -4
  15. package/esm2022/components/pager/index.mjs +2 -0
  16. package/esm2022/components/pager/pager.component.mjs +97 -0
  17. package/esm2022/components/pager/taiga-ui-kit-components-pager.mjs +5 -0
  18. package/esm2022/components/progress/progress-bar/progress-bar.component.mjs +2 -2
  19. package/fesm2022/taiga-ui-kit-components-block.mjs +2 -2
  20. package/fesm2022/taiga-ui-kit-components-block.mjs.map +1 -1
  21. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs +1 -1
  22. package/fesm2022/taiga-ui-kit-components-breadcrumbs.mjs.map +1 -1
  23. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs +51 -21
  24. package/fesm2022/taiga-ui-kit-components-items-with-more.mjs.map +1 -1
  25. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs +3 -3
  26. package/fesm2022/taiga-ui-kit-components-line-clamp.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-kit-components-pager.mjs +103 -0
  28. package/fesm2022/taiga-ui-kit-components-pager.mjs.map +1 -0
  29. package/fesm2022/taiga-ui-kit-components-progress.mjs +2 -2
  30. package/fesm2022/taiga-ui-kit-components.mjs +1 -0
  31. package/fesm2022/taiga-ui-kit-components.mjs.map +1 -1
  32. package/package.json +13 -7
  33. package/styles/components/block.less +1 -0
  34. package/styles/components/progress-bar.less +1 -1
@@ -0,0 +1,97 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject, Input, signal, ViewChildren, } from '@angular/core';
3
+ import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MutationObserverService, WA_MUTATION_OBSERVER_INIT, } from '@ng-web-apis/mutation-observer';
6
+ import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
7
+ import { tuiWatch } from '@taiga-ui/cdk/observables';
8
+ import { delay, map } from 'rxjs';
9
+ import * as i0 from "@angular/core";
10
+ class TuiPager {
11
+ constructor() {
12
+ this.start = 0;
13
+ this.end = 0;
14
+ this.left = signal(0);
15
+ this.maxWidth = toSignal(inject(MutationObserverService, { self: true }).pipe(delay(0), map(() => this.visibleWidth), tuiWatch(), takeUntilDestroyed()));
16
+ this.max = 6;
17
+ this.count = this.max;
18
+ this.size = 'm';
19
+ this.index = 0;
20
+ }
21
+ ngOnChanges() {
22
+ this.move();
23
+ }
24
+ ngAfterViewInit() {
25
+ this.move();
26
+ }
27
+ get gap() {
28
+ return this.size === 'm' ? 9 : 7;
29
+ }
30
+ get visibleRange() {
31
+ const max = this.max > this.count ? this.count : this.max;
32
+ const start = Math.min(Math.max(this.index - Math.floor(max / 2), 0), this.count - max);
33
+ return [start, start + (max - 1)];
34
+ }
35
+ get visibleWidth() {
36
+ return ((this.items?.map((item) => item.nativeElement.offsetWidth ?? 0) ?? [])
37
+ .slice(this.start, this.end + 1)
38
+ .reduce((sum, item) => sum + item + this.gap, 0) - this.gap);
39
+ }
40
+ move() {
41
+ const [start, end] = this.visibleRange;
42
+ this.start = start;
43
+ this.end = end;
44
+ let left = this.start * this.gap;
45
+ for (let i = 0; i < this.start; i++) {
46
+ left += this.items?.get(i)?.nativeElement.offsetWidth ?? 0;
47
+ }
48
+ this.left.set(-1 * left);
49
+ }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPager, isStandalone: true, selector: "tui-pager", inputs: { max: "max", count: "count", size: "size", valueContent: "valueContent", index: "index" }, host: { properties: { "attr.data-size": "size", "style.--t-gap.px": "gap", "style.max-width.px": "maxWidth()" } }, providers: [
52
+ MutationObserverService,
53
+ {
54
+ provide: WA_MUTATION_OBSERVER_INIT,
55
+ useValue: {
56
+ attributeOldValue: true,
57
+ characterData: true,
58
+ childList: true,
59
+ subtree: true,
60
+ },
61
+ },
62
+ ], viewQueries: [{ propertyName: "items", predicate: ["item"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"t-items\"\n [style.transform]=\"'translateX(' + left() + 'px)'\"\n>\n <div\n *tuiRepeatTimes=\"let i of count\"\n #item\n class=\"t-item\"\n [attr.data-index]=\"i\"\n [class._active]=\"i === index\"\n [class._last]=\"i === count - 1\"\n [class._post-active]=\"i === index + 1\"\n [class._pre-active]=\"i === index - 1\"\n [class._pre-last]=\"i === count - 2\"\n [class._visible]=\"i >= start && i <= end\"\n >\n <ng-container *ngTemplateOutlet=\"valueContent || null; context: {$implicit: i}\" />\n </div>\n</div>\n", styles: [":host{--t-size: .5rem;display:flex;align-items:center;overflow:hidden}:host :host-context(tui-root._mobile){--t-size: .375rem}:host[data-size=m]{min-block-size:1.25rem;--t-small-dot: scale(.75);--t-super-small-dot: scale(.5);--t-icon-size: 1rem}:host-context(tui-root._mobile) :host[data-size=m]{--t-icon-size: .875rem}:host[data-size=s]{min-block-size:1rem;--t-small-dot: scale(.5);--t-super-small-dot: scale(.25);--t-icon-size: .875rem}:host-context(tui-root._mobile) :host[data-size=s]{--t-icon-size: .6875rem}.t-items{display:flex;gap:var(--t-gap);transition:transform var(--tui-duration-fast, .15s) var(--tui-curve-productive-standard, cubic-bezier(.2, 0, .4, .9))}.t-item{display:flex;align-self:center;align-items:center;justify-content:center;color:var(--tui-background-neutral-2)}.t-item._active{color:var(--tui-background-accent-1)}.t-item:empty:before{content:\"\";display:flex;min-inline-size:var(--t-size);min-block-size:var(--t-size);border-radius:100%;background:currentColor;transition:inherit}.t-item:empty:not(._visible):before,.t-item:empty:not(._visible)+.t-item:not(._active):not(._pre-active):empty:before,.t-item:empty:not(._last):not(._post-active):not(._active):nth-last-child(1 of._visible):before{transform:var(--t-super-small-dot)!important}.t-item:empty:not(._last)._post-active:nth-last-child(1 of._visible):before,.t-item:empty:not(._visible)+.t-item._pre-active:empty:before,.t-item:empty:not(._visible)+.t-item:empty+.t-item:not(._active):empty:before,.t-item:empty:not(._pre-last):nth-last-child(2 of._visible):not(._active):before{transform:var(--t-small-dot)}.t-item:empty+.t-item:not(:empty)._pre-last{transform:scale(.64)}.t-item:empty+.t-item:not(:empty)._pre-last:nth-last-child(2 of._visible){transform:scale(1)}.t-item::ng-deep>tui-icon{inline-size:var(--t-icon-size);block-size:var(--t-icon-size)}.t-item,.t-item::ng-deep>tui-icon{transition:all var(--tui-duration-fast, .15s) var(--tui-curve-productive-standard, cubic-bezier(.2, 0, .4, .9))}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
63
+ }
64
+ export { TuiPager };
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPager, decorators: [{
66
+ type: Component,
67
+ args: [{ standalone: true, selector: 'tui-pager', imports: [FormsModule, NgTemplateOutlet, TuiRepeatTimes], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
68
+ MutationObserverService,
69
+ {
70
+ provide: WA_MUTATION_OBSERVER_INIT,
71
+ useValue: {
72
+ attributeOldValue: true,
73
+ characterData: true,
74
+ childList: true,
75
+ subtree: true,
76
+ },
77
+ },
78
+ ], host: {
79
+ '[attr.data-size]': 'size',
80
+ '[style.--t-gap.px]': 'gap',
81
+ '[style.max-width.px]': 'maxWidth()',
82
+ }, template: "<div\n class=\"t-items\"\n [style.transform]=\"'translateX(' + left() + 'px)'\"\n>\n <div\n *tuiRepeatTimes=\"let i of count\"\n #item\n class=\"t-item\"\n [attr.data-index]=\"i\"\n [class._active]=\"i === index\"\n [class._last]=\"i === count - 1\"\n [class._post-active]=\"i === index + 1\"\n [class._pre-active]=\"i === index - 1\"\n [class._pre-last]=\"i === count - 2\"\n [class._visible]=\"i >= start && i <= end\"\n >\n <ng-container *ngTemplateOutlet=\"valueContent || null; context: {$implicit: i}\" />\n </div>\n</div>\n", styles: [":host{--t-size: .5rem;display:flex;align-items:center;overflow:hidden}:host :host-context(tui-root._mobile){--t-size: .375rem}:host[data-size=m]{min-block-size:1.25rem;--t-small-dot: scale(.75);--t-super-small-dot: scale(.5);--t-icon-size: 1rem}:host-context(tui-root._mobile) :host[data-size=m]{--t-icon-size: .875rem}:host[data-size=s]{min-block-size:1rem;--t-small-dot: scale(.5);--t-super-small-dot: scale(.25);--t-icon-size: .875rem}:host-context(tui-root._mobile) :host[data-size=s]{--t-icon-size: .6875rem}.t-items{display:flex;gap:var(--t-gap);transition:transform var(--tui-duration-fast, .15s) var(--tui-curve-productive-standard, cubic-bezier(.2, 0, .4, .9))}.t-item{display:flex;align-self:center;align-items:center;justify-content:center;color:var(--tui-background-neutral-2)}.t-item._active{color:var(--tui-background-accent-1)}.t-item:empty:before{content:\"\";display:flex;min-inline-size:var(--t-size);min-block-size:var(--t-size);border-radius:100%;background:currentColor;transition:inherit}.t-item:empty:not(._visible):before,.t-item:empty:not(._visible)+.t-item:not(._active):not(._pre-active):empty:before,.t-item:empty:not(._last):not(._post-active):not(._active):nth-last-child(1 of._visible):before{transform:var(--t-super-small-dot)!important}.t-item:empty:not(._last)._post-active:nth-last-child(1 of._visible):before,.t-item:empty:not(._visible)+.t-item._pre-active:empty:before,.t-item:empty:not(._visible)+.t-item:empty+.t-item:not(._active):empty:before,.t-item:empty:not(._pre-last):nth-last-child(2 of._visible):not(._active):before{transform:var(--t-small-dot)}.t-item:empty+.t-item:not(:empty)._pre-last{transform:scale(.64)}.t-item:empty+.t-item:not(:empty)._pre-last:nth-last-child(2 of._visible){transform:scale(1)}.t-item::ng-deep>tui-icon{inline-size:var(--t-icon-size);block-size:var(--t-icon-size)}.t-item,.t-item::ng-deep>tui-icon{transition:all var(--tui-duration-fast, .15s) var(--tui-curve-productive-standard, cubic-bezier(.2, 0, .4, .9))}\n"] }]
83
+ }], propDecorators: { items: [{
84
+ type: ViewChildren,
85
+ args: ['item']
86
+ }], max: [{
87
+ type: Input
88
+ }], count: [{
89
+ type: Input
90
+ }], size: [{
91
+ type: Input
92
+ }], valueContent: [{
93
+ type: Input
94
+ }], index: [{
95
+ type: Input
96
+ }] } });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcGFnZXIvcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcGFnZXIvcGFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFRakQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxrQkFBa0IsRUFBRSxRQUFRLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUNILHVCQUF1QixFQUN2Qix5QkFBeUIsR0FDNUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN4QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRW5ELE9BQU8sRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUVoQyxNQXlCYSxRQUFRO0lBekJyQjtRQTZCYyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFNBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDUixhQUFRLEdBQUcsUUFBUSxDQUNsQyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUM1QixRQUFRLEVBQUUsRUFDVixrQkFBa0IsRUFBRSxDQUN2QixDQUNKLENBQUM7UUFHSyxRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBR1IsVUFBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFHakIsU0FBSSxHQUFhLEdBQUcsQ0FBQztRQU1yQixVQUFLLEdBQUcsQ0FBQyxDQUFDO0tBK0NwQjtJQTdDVSxXQUFXO1FBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBYyxHQUFHO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FDbkIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVksWUFBWTtRQUNwQixPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ2pFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQy9CLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUNsRSxDQUFDO0lBQ04sQ0FBQztJQUVPLElBQUk7UUFDUixNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFFZixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFakMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDakMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1NBQzlEO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0EzRVEsUUFBUTttR0FBUixRQUFRLCtRQWxCTjtZQUNQLHVCQUF1QjtZQUN2QjtnQkFDSSxPQUFPLEVBQUUseUJBQXlCO2dCQUNsQyxRQUFRLEVBQUU7b0JBQ04saUJBQWlCLEVBQUUsSUFBSTtvQkFDdkIsYUFBYSxFQUFFLElBQUk7b0JBQ25CLFNBQVMsRUFBRSxJQUFJO29CQUNmLE9BQU8sRUFBRSxJQUFJO2lCQUNoQjthQUNKO1NBQ0osaUlDN0NMLGduQkFtQkEsNi9ERFdjLFdBQVcsK0JBQUUsZ0JBQWdCLG9KQUFFLGNBQWM7O1NBc0I5QyxRQUFROzRGQUFSLFFBQVE7a0JBekJwQixTQUFTO2lDQUNNLElBQUksWUFDTixXQUFXLFdBQ1osQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLG1CQUd2Qyx1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDO3dCQUNQLHVCQUF1Qjt3QkFDdkI7NEJBQ0ksT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsUUFBUSxFQUFFO2dDQUNOLGlCQUFpQixFQUFFLElBQUk7Z0NBQ3ZCLGFBQWEsRUFBRSxJQUFJO2dDQUNuQixTQUFTLEVBQUUsSUFBSTtnQ0FDZixPQUFPLEVBQUUsSUFBSTs2QkFDaEI7eUJBQ0o7cUJBQ0osUUFDSzt3QkFDRixrQkFBa0IsRUFBRSxNQUFNO3dCQUMxQixvQkFBb0IsRUFBRSxLQUFLO3dCQUMzQixzQkFBc0IsRUFBRSxZQUFZO3FCQUN2Qzs4QkFJUyxLQUFLO3NCQURkLFlBQVk7dUJBQUMsTUFBTTtnQkFnQmIsR0FBRztzQkFEVCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyxLQUFLO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge05nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIHNpZ25hbCxcbiAgICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgIFdBX01VVEFUSU9OX09CU0VSVkVSX0lOSVQsXG59IGZyb20gJ0BuZy13ZWItYXBpcy9tdXRhdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQge1R1aVJlcGVhdFRpbWVzfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvcmVwZWF0LXRpbWVzJztcbmltcG9ydCB7dHVpV2F0Y2h9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHR5cGUge1R1aVNpemVTfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5pbXBvcnQge2RlbGF5LCBtYXB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLXBhZ2VyJyxcbiAgICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXQsIFR1aVJlcGVhdFRpbWVzXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcGFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3BhZ2VyLnN0eWxlcy5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBXQV9NVVRBVElPTl9PQlNFUlZFUl9JTklULFxuICAgICAgICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVPbGRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1thdHRyLmRhdGEtc2l6ZV0nOiAnc2l6ZScsXG4gICAgICAgICdbc3R5bGUuLS10LWdhcC5weF0nOiAnZ2FwJyxcbiAgICAgICAgJ1tzdHlsZS5tYXgtd2lkdGgucHhdJzogJ21heFdpZHRoKCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVBhZ2VyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkcmVuKCdpdGVtJylcbiAgICBwcm90ZWN0ZWQgaXRlbXM/OiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+O1xuXG4gICAgcHJvdGVjdGVkIHN0YXJ0ID0gMDtcbiAgICBwcm90ZWN0ZWQgZW5kID0gMDtcbiAgICBwcm90ZWN0ZWQgbGVmdCA9IHNpZ25hbCgwKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4V2lkdGggPSB0b1NpZ25hbChcbiAgICAgICAgaW5qZWN0KE11dGF0aW9uT2JzZXJ2ZXJTZXJ2aWNlLCB7c2VsZjogdHJ1ZX0pLnBpcGUoXG4gICAgICAgICAgICBkZWxheSgwKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLnZpc2libGVXaWR0aCksXG4gICAgICAgICAgICB0dWlXYXRjaCgpLFxuICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heCA9IDY7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb3VudCA9IHRoaXMubWF4O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2l6ZTogVHVpU2l6ZVMgPSAnbSc7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNvbnRlbnQ/OiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluZGV4ID0gMDtcblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3ZlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3ZlKCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBnYXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ20nID8gOSA6IDc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgdmlzaWJsZVJhbmdlKCk6IFtzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcl0ge1xuICAgICAgICBjb25zdCBtYXggPSB0aGlzLm1heCA+IHRoaXMuY291bnQgPyB0aGlzLmNvdW50IDogdGhpcy5tYXg7XG5cbiAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIE1hdGgubWF4KHRoaXMuaW5kZXggLSBNYXRoLmZsb29yKG1heCAvIDIpLCAwKSxcbiAgICAgICAgICAgIHRoaXMuY291bnQgLSBtYXgsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFtzdGFydCwgc3RhcnQgKyAobWF4IC0gMSldO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHZpc2libGVXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHRoaXMuaXRlbXM/Lm1hcCgoaXRlbSkgPT4gaXRlbS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID8/IDApID8/IFtdKVxuICAgICAgICAgICAgICAgIC5zbGljZSh0aGlzLnN0YXJ0LCB0aGlzLmVuZCArIDEpXG4gICAgICAgICAgICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyBpdGVtICsgdGhpcy5nYXAsIDApIC0gdGhpcy5nYXBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1vdmUoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmlzaWJsZVJhbmdlO1xuXG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy5lbmQgPSBlbmQ7XG5cbiAgICAgICAgbGV0IGxlZnQgPSB0aGlzLnN0YXJ0ICogdGhpcy5nYXA7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YXJ0OyBpKyspIHtcbiAgICAgICAgICAgIGxlZnQgKz0gdGhpcy5pdGVtcz8uZ2V0KGkpPy5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID8/IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxlZnQuc2V0KC0xICogbGVmdCk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwidC1pdGVtc1wiXG4gICAgW3N0eWxlLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlWCgnICsgbGVmdCgpICsgJ3B4KSdcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGkgb2YgY291bnRcIlxuICAgICAgICAjaXRlbVxuICAgICAgICBjbGFzcz1cInQtaXRlbVwiXG4gICAgICAgIFthdHRyLmRhdGEtaW5kZXhdPVwiaVwiXG4gICAgICAgIFtjbGFzcy5fYWN0aXZlXT1cImkgPT09IGluZGV4XCJcbiAgICAgICAgW2NsYXNzLl9sYXN0XT1cImkgPT09IGNvdW50IC0gMVwiXG4gICAgICAgIFtjbGFzcy5fcG9zdC1hY3RpdmVdPVwiaSA9PT0gaW5kZXggKyAxXCJcbiAgICAgICAgW2NsYXNzLl9wcmUtYWN0aXZlXT1cImkgPT09IGluZGV4IC0gMVwiXG4gICAgICAgIFtjbGFzcy5fcHJlLWxhc3RdPVwiaSA9PT0gY291bnQgLSAyXCJcbiAgICAgICAgW2NsYXNzLl92aXNpYmxlXT1cImkgPj0gc3RhcnQgJiYgaSA8PSBlbmRcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInZhbHVlQ29udGVudCB8fCBudWxsOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpfVwiIC8+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpZ2EtdWkta2l0LWNvbXBvbmVudHMtcGFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9wYWdlci90YWlnYS11aS1raXQtY29tcG9uZW50cy1wYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -8,7 +8,7 @@ class TuiProgressBar {
8
8
  this.size = this.options.size;
9
9
  }
10
10
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiProgressBar, isStandalone: true, selector: "progress[tuiProgressBar]", inputs: { color: "color", size: "size" }, host: { properties: { "style.--tui-progress-color": "color", "attr.data-size": "size" } }, ngImport: i0, template: '', isInline: true, styles: ["@keyframes tuiIndeterminateAnimation{50%{background-position:left}}[tuiProgressBar]{-webkit-appearance:none;appearance:none;border:none;--t-height: .75rem;display:block;inline-size:100%;block-size:var(--t-height);color:var(--tui-background-accent-1);background:var(--tui-background-neutral-1);clip-path:inset(0 .5px round var(--tui-radius-m));overflow:hidden;border-radius:1rem;flex-shrink:0}[tuiProgressBar]::-webkit-progress-value{-webkit-transition:width var(--tui-duration) linear;transition:width var(--tui-duration) linear}[tuiProgressBar]::-webkit-progress-value{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar]::-moz-progress-bar{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar][data-size=xxs]{--t-height: .125rem}[tuiProgressBar][data-size=xs]{--t-height: .25rem}[tuiProgressBar][data-size=s]{--t-height: .5rem}[tuiProgressBar][data-size=l]{--t-height: 1rem}[tuiProgressBar][data-size=xl]{--t-height: 1.25rem}[tuiProgressBar][data-size=xxl]{--t-height: 1.5rem}[tuiProgressBar]:indeterminate{background:linear-gradient(to right,var(--tui-background-neutral-1) 0 45%,var(--tui-progress-color, currentColor) 45% 55%,var(--tui-background-neutral-1) 55% 100%) right;background-size:225%;animation:tuiIndeterminateAnimation 3s infinite ease-in-out}[tuiProgressBar]:indeterminate::-webkit-progress-value{background:transparent}[tuiProgressBar]:indeterminate::-moz-progress-bar{background:transparent}[tuiProgressBar]::-webkit-progress-inner-element{border-radius:inherit}[tuiProgressBar]::-webkit-progress-bar{background:transparent;border-radius:inherit}label[tuiProgressLabel] [tuiProgressBar]:not(:first-child){position:absolute;top:0;left:0;inline-size:100%;block-size:100%;background:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiProgressBar, isStandalone: true, selector: "progress[tuiProgressBar]", inputs: { color: "color", size: "size" }, host: { properties: { "style.--tui-progress-color": "color", "attr.data-size": "size" } }, ngImport: i0, template: '', isInline: true, styles: ["@keyframes tuiIndeterminateAnimation{50%{background-position:left}}[tuiProgressBar]{-webkit-appearance:none;appearance:none;border:none;--t-height: .75rem;display:block;inline-size:100%;block-size:var(--t-height);color:var(--tui-background-accent-1);background:var(--tui-background-neutral-2);clip-path:inset(0 .5px round var(--tui-radius-m));overflow:hidden;border-radius:1rem;flex-shrink:0}[tuiProgressBar]::-webkit-progress-value{-webkit-transition:width var(--tui-duration) linear;transition:width var(--tui-duration) linear}[tuiProgressBar]::-webkit-progress-value{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar]::-moz-progress-bar{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar][data-size=xxs]{--t-height: .125rem}[tuiProgressBar][data-size=xs]{--t-height: .25rem}[tuiProgressBar][data-size=s]{--t-height: .5rem}[tuiProgressBar][data-size=l]{--t-height: 1rem}[tuiProgressBar][data-size=xl]{--t-height: 1.25rem}[tuiProgressBar][data-size=xxl]{--t-height: 1.5rem}[tuiProgressBar]:indeterminate{background:linear-gradient(to right,var(--tui-background-neutral-2) 0 45%,var(--tui-progress-color, currentColor) 45% 55%,var(--tui-background-neutral-2) 55% 100%) right;background-size:225%;animation:tuiIndeterminateAnimation 3s infinite ease-in-out}[tuiProgressBar]:indeterminate::-webkit-progress-value{background:transparent}[tuiProgressBar]:indeterminate::-moz-progress-bar{background:transparent}[tuiProgressBar]::-webkit-progress-inner-element{border-radius:inherit}[tuiProgressBar]::-webkit-progress-bar{background:transparent;border-radius:inherit}label[tuiProgressLabel] [tuiProgressBar]:not(:first-child){position:absolute;top:0;left:0;inline-size:100%;block-size:100%;background:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
12
12
  }
13
13
  export { TuiProgressBar };
14
14
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiProgressBar, decorators: [{
@@ -16,7 +16,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
16
16
  args: [{ standalone: true, selector: 'progress[tuiProgressBar]', template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
17
17
  '[style.--tui-progress-color]': 'color',
18
18
  '[attr.data-size]': 'size',
19
- }, styles: ["@keyframes tuiIndeterminateAnimation{50%{background-position:left}}[tuiProgressBar]{-webkit-appearance:none;appearance:none;border:none;--t-height: .75rem;display:block;inline-size:100%;block-size:var(--t-height);color:var(--tui-background-accent-1);background:var(--tui-background-neutral-1);clip-path:inset(0 .5px round var(--tui-radius-m));overflow:hidden;border-radius:1rem;flex-shrink:0}[tuiProgressBar]::-webkit-progress-value{-webkit-transition:width var(--tui-duration) linear;transition:width var(--tui-duration) linear}[tuiProgressBar]::-webkit-progress-value{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar]::-moz-progress-bar{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar][data-size=xxs]{--t-height: .125rem}[tuiProgressBar][data-size=xs]{--t-height: .25rem}[tuiProgressBar][data-size=s]{--t-height: .5rem}[tuiProgressBar][data-size=l]{--t-height: 1rem}[tuiProgressBar][data-size=xl]{--t-height: 1.25rem}[tuiProgressBar][data-size=xxl]{--t-height: 1.5rem}[tuiProgressBar]:indeterminate{background:linear-gradient(to right,var(--tui-background-neutral-1) 0 45%,var(--tui-progress-color, currentColor) 45% 55%,var(--tui-background-neutral-1) 55% 100%) right;background-size:225%;animation:tuiIndeterminateAnimation 3s infinite ease-in-out}[tuiProgressBar]:indeterminate::-webkit-progress-value{background:transparent}[tuiProgressBar]:indeterminate::-moz-progress-bar{background:transparent}[tuiProgressBar]::-webkit-progress-inner-element{border-radius:inherit}[tuiProgressBar]::-webkit-progress-bar{background:transparent;border-radius:inherit}label[tuiProgressLabel] [tuiProgressBar]:not(:first-child){position:absolute;top:0;left:0;inline-size:100%;block-size:100%;background:transparent}\n"] }]
19
+ }, styles: ["@keyframes tuiIndeterminateAnimation{50%{background-position:left}}[tuiProgressBar]{-webkit-appearance:none;appearance:none;border:none;--t-height: .75rem;display:block;inline-size:100%;block-size:var(--t-height);color:var(--tui-background-accent-1);background:var(--tui-background-neutral-2);clip-path:inset(0 .5px round var(--tui-radius-m));overflow:hidden;border-radius:1rem;flex-shrink:0}[tuiProgressBar]::-webkit-progress-value{-webkit-transition:width var(--tui-duration) linear;transition:width var(--tui-duration) linear}[tuiProgressBar]::-webkit-progress-value{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar]::-moz-progress-bar{background:var(--tui-progress-color, currentColor);border-radius:inherit}[tuiProgressBar][data-size=xxs]{--t-height: .125rem}[tuiProgressBar][data-size=xs]{--t-height: .25rem}[tuiProgressBar][data-size=s]{--t-height: .5rem}[tuiProgressBar][data-size=l]{--t-height: 1rem}[tuiProgressBar][data-size=xl]{--t-height: 1.25rem}[tuiProgressBar][data-size=xxl]{--t-height: 1.5rem}[tuiProgressBar]:indeterminate{background:linear-gradient(to right,var(--tui-background-neutral-2) 0 45%,var(--tui-progress-color, currentColor) 45% 55%,var(--tui-background-neutral-2) 55% 100%) right;background-size:225%;animation:tuiIndeterminateAnimation 3s infinite ease-in-out}[tuiProgressBar]:indeterminate::-webkit-progress-value{background:transparent}[tuiProgressBar]:indeterminate::-moz-progress-bar{background:transparent}[tuiProgressBar]::-webkit-progress-inner-element{border-radius:inherit}[tuiProgressBar]::-webkit-progress-bar{background:transparent;border-radius:inherit}label[tuiProgressLabel] [tuiProgressBar]:not(:first-child){position:absolute;top:0;left:0;inline-size:100%;block-size:100%;background:transparent}\n"] }]
20
20
  }], propDecorators: { color: [{
21
21
  type: Input
22
22
  }], size: [{
@@ -21,13 +21,13 @@ function tuiBlockOptionsProvider(options) {
21
21
 
22
22
  class TuiBlockStyles {
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBlockStyles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBlockStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-block" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiBlock]{--t-height: var(--tui-height-l);--t-radius: var(--tui-radius-l);position:relative;display:inline-flex;gap:.75rem;color:var(--tui-text-primary);border-radius:var(--t-radius);min-block-size:var(--t-height);margin:0;box-sizing:border-box;cursor:pointer;overflow:hidden;font:var(--tui-font-text-m);padding:var(--tui-padding-l);isolation:isolate}[tuiBlock][data-size=s]{gap:.5rem;font:var(--tui-font-text-ui-s);padding:.5rem;--t-height: var(--tui-height-s);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=s] [tuiSubtitle]{font:var(--tui-font-text-ui-xs)}[tuiBlock][data-size=s] [tuiTooltip]{margin:0 .125rem}[tuiBlock][data-size=m]{gap:.625rem;font:var(--tui-font-text-ui-m);padding:var(--tui-padding-m);--t-height: var(--tui-height-m);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=m] input:not([tuiBlock]){margin:.125rem}[tuiBlock][data-size=m] [tuiTooltip]{margin:.125rem}[tuiBlock]._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}[tuiBlock]._disabled :focus{visibility:hidden}[tuiBlock][data-appearance=\"\"]{justify-content:center}[tuiBlock] input[tuiBlock]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;min-block-size:0;pointer-events:none;border-radius:inherit}[tuiBlock] tui-avatar{margin:-.25rem}[tuiBlock] [tuiTitle]{flex:1;gap:0;font:inherit;color:var(--tui-text-primary)}[tuiBlock] [tuiSubtitle]{color:var(--tui-text-secondary)}[tuiBlock] [tuiTooltip]{vertical-align:bottom;margin:.25rem;font-size:1rem;border:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBlockStyles, isStandalone: true, selector: "ng-component", host: { classAttribute: "tui-block" }, ngImport: i0, template: '', isInline: true, styles: ["[tuiBlock]{--t-height: var(--tui-height-l);--t-radius: var(--tui-radius-l);position:relative;display:inline-flex;gap:.75rem;color:var(--tui-text-primary);border-radius:var(--t-radius);min-block-size:var(--t-height);margin:0;box-sizing:border-box;cursor:pointer;overflow:hidden;font:var(--tui-font-text-m);padding:var(--tui-padding-l);isolation:isolate}[tuiBlock][data-size=s]{gap:.5rem;font:var(--tui-font-text-ui-s);padding:.5rem;--t-height: var(--tui-height-s);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=s] [tuiSubtitle]{font:var(--tui-font-text-ui-xs)}[tuiBlock][data-size=s] [tuiTooltip]{margin:0 .125rem}[tuiBlock][data-size=m]{gap:.625rem;font:var(--tui-font-text-ui-m);padding:var(--tui-padding-m);--t-height: var(--tui-height-m);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=m] input:not([tuiBlock]){margin:.125rem}[tuiBlock][data-size=m] [tuiTooltip]{margin:.125rem}[tuiBlock]._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}[tuiBlock]._disabled :focus{visibility:hidden}[tuiBlock][data-appearance=\"\"]{justify-content:center}[tuiBlock] input[tuiBlock]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;min-block-size:0;pointer-events:none;border-radius:inherit;padding:0}[tuiBlock] tui-avatar{margin:-.25rem}[tuiBlock] [tuiTitle]{flex:1;gap:0;font:inherit;color:var(--tui-text-primary)}[tuiBlock] [tuiSubtitle]{color:var(--tui-text-secondary)}[tuiBlock] [tuiTooltip]{vertical-align:bottom;margin:.25rem;font-size:1rem;border:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBlockStyles, decorators: [{
27
27
  type: Component,
28
28
  args: [{ standalone: true, template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
29
29
  class: 'tui-block',
30
- }, styles: ["[tuiBlock]{--t-height: var(--tui-height-l);--t-radius: var(--tui-radius-l);position:relative;display:inline-flex;gap:.75rem;color:var(--tui-text-primary);border-radius:var(--t-radius);min-block-size:var(--t-height);margin:0;box-sizing:border-box;cursor:pointer;overflow:hidden;font:var(--tui-font-text-m);padding:var(--tui-padding-l);isolation:isolate}[tuiBlock][data-size=s]{gap:.5rem;font:var(--tui-font-text-ui-s);padding:.5rem;--t-height: var(--tui-height-s);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=s] [tuiSubtitle]{font:var(--tui-font-text-ui-xs)}[tuiBlock][data-size=s] [tuiTooltip]{margin:0 .125rem}[tuiBlock][data-size=m]{gap:.625rem;font:var(--tui-font-text-ui-m);padding:var(--tui-padding-m);--t-height: var(--tui-height-m);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=m] input:not([tuiBlock]){margin:.125rem}[tuiBlock][data-size=m] [tuiTooltip]{margin:.125rem}[tuiBlock]._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}[tuiBlock]._disabled :focus{visibility:hidden}[tuiBlock][data-appearance=\"\"]{justify-content:center}[tuiBlock] input[tuiBlock]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;min-block-size:0;pointer-events:none;border-radius:inherit}[tuiBlock] tui-avatar{margin:-.25rem}[tuiBlock] [tuiTitle]{flex:1;gap:0;font:inherit;color:var(--tui-text-primary)}[tuiBlock] [tuiSubtitle]{color:var(--tui-text-secondary)}[tuiBlock] [tuiTooltip]{vertical-align:bottom;margin:.25rem;font-size:1rem;border:none}\n"] }]
30
+ }, styles: ["[tuiBlock]{--t-height: var(--tui-height-l);--t-radius: var(--tui-radius-l);position:relative;display:inline-flex;gap:.75rem;color:var(--tui-text-primary);border-radius:var(--t-radius);min-block-size:var(--t-height);margin:0;box-sizing:border-box;cursor:pointer;overflow:hidden;font:var(--tui-font-text-m);padding:var(--tui-padding-l);isolation:isolate}[tuiBlock][data-size=s]{gap:.5rem;font:var(--tui-font-text-ui-s);padding:.5rem;--t-height: var(--tui-height-s);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=s] [tuiSubtitle]{font:var(--tui-font-text-ui-xs)}[tuiBlock][data-size=s] [tuiTooltip]{margin:0 .125rem}[tuiBlock][data-size=m]{gap:.625rem;font:var(--tui-font-text-ui-m);padding:var(--tui-padding-m);--t-height: var(--tui-height-m);--t-radius: var(--tui-radius-m)}[tuiBlock][data-size=m] input:not([tuiBlock]){margin:.125rem}[tuiBlock][data-size=m] [tuiTooltip]{margin:.125rem}[tuiBlock]._disabled{pointer-events:none;opacity:var(--tui-disabled-opacity)}[tuiBlock]._disabled :focus{visibility:hidden}[tuiBlock][data-appearance=\"\"]{justify-content:center}[tuiBlock] input[tuiBlock]{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;z-index:-1;min-block-size:0;pointer-events:none;border-radius:inherit;padding:0}[tuiBlock] tui-avatar{margin:-.25rem}[tuiBlock] [tuiTitle]{flex:1;gap:0;font:inherit;color:var(--tui-text-primary)}[tuiBlock] [tuiSubtitle]{color:var(--tui-text-secondary)}[tuiBlock] [tuiTooltip]{vertical-align:bottom;margin:.25rem;font-size:1rem;border:none}\n"] }]
31
31
  }] });
32
32
  class TuiBlock {
33
33
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-block.mjs","sources":["../../../projects/kit/components/block/block.options.ts","../../../projects/kit/components/block/block.directive.ts","../../../projects/kit/components/block/taiga-ui-kit-components-block.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiBlockOptions extends TuiAppearanceOptions {\n readonly size: TuiSizeL | TuiSizeS;\n}\n\nexport const TUI_BLOCK_DEFAULT_OPTIONS: TuiBlockOptions = {\n appearance: 'outline-grayscale',\n size: 'l',\n};\n\nexport const TUI_BLOCK_OPTIONS = tuiCreateToken(TUI_BLOCK_DEFAULT_OPTIONS);\n\nexport function tuiBlockOptionsProvider(options: Partial<TuiBlockOptions>): Provider {\n return tuiProvideOptions(TUI_BLOCK_OPTIONS, options, TUI_BLOCK_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\n\nimport {TUI_BLOCK_OPTIONS} from './block.options';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/block.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-block',\n },\n})\nclass TuiBlockStyles {}\n\n@Directive({\n standalone: true,\n selector: 'label[tuiBlock],input[tuiBlock]',\n providers: [\n tuiAppearanceOptionsProvider(TUI_BLOCK_OPTIONS),\n tuiAvatarOptionsProvider({size: 's'}),\n ],\n hostDirectives: [TuiNativeValidator, TuiWithAppearance, TuiWithIcons],\n host: {\n tuiBlock: '',\n '[attr.data-size]': 'size || \"l\"',\n '[class._disabled]': '!!this.control?.disabled',\n },\n})\nexport class TuiBlock {\n @ContentChild(NgControl)\n protected readonly control?: NgControl;\n\n protected readonly nothing = tuiWithStyles(TuiBlockStyles);\n\n @Input('tuiBlock')\n public size: TuiSizeL | TuiSizeS | '' = inject(TUI_BLOCK_OPTIONS).size;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-block.mjs","sources":["../../../projects/kit/components/block/block.options.ts","../../../projects/kit/components/block/block.directive.ts","../../../projects/kit/components/block/taiga-ui-kit-components-block.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiAppearanceOptions} from '@taiga-ui/core/directives/appearance';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\n\nexport interface TuiBlockOptions extends TuiAppearanceOptions {\n readonly size: TuiSizeL | TuiSizeS;\n}\n\nexport const TUI_BLOCK_DEFAULT_OPTIONS: TuiBlockOptions = {\n appearance: 'outline-grayscale',\n size: 'l',\n};\n\nexport const TUI_BLOCK_OPTIONS = tuiCreateToken(TUI_BLOCK_DEFAULT_OPTIONS);\n\nexport function tuiBlockOptionsProvider(options: Partial<TuiBlockOptions>): Provider {\n return tuiProvideOptions(TUI_BLOCK_OPTIONS, options, TUI_BLOCK_DEFAULT_OPTIONS);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Directive,\n inject,\n Input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TuiNativeValidator} from '@taiga-ui/cdk/directives/native-validator';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {\n tuiAppearanceOptionsProvider,\n TuiWithAppearance,\n} from '@taiga-ui/core/directives/appearance';\nimport {TuiWithIcons} from '@taiga-ui/core/directives/icons';\nimport type {TuiSizeL, TuiSizeS} from '@taiga-ui/core/types';\nimport {tuiAvatarOptionsProvider} from '@taiga-ui/kit/components/avatar';\n\nimport {TUI_BLOCK_OPTIONS} from './block.options';\n\n@Component({\n standalone: true,\n template: '',\n styles: ['@import \"@taiga-ui/kit/styles/components/block.less\";'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'tui-block',\n },\n})\nclass TuiBlockStyles {}\n\n@Directive({\n standalone: true,\n selector: 'label[tuiBlock],input[tuiBlock]',\n providers: [\n tuiAppearanceOptionsProvider(TUI_BLOCK_OPTIONS),\n tuiAvatarOptionsProvider({size: 's'}),\n ],\n hostDirectives: [TuiNativeValidator, TuiWithAppearance, TuiWithIcons],\n host: {\n tuiBlock: '',\n '[attr.data-size]': 'size || \"l\"',\n '[class._disabled]': '!!this.control?.disabled',\n },\n})\nexport class TuiBlock {\n @ContentChild(NgControl)\n protected readonly control?: NgControl;\n\n protected readonly nothing = tuiWithStyles(TuiBlockStyles);\n\n @Input('tuiBlock')\n public size: TuiSizeL | TuiSizeS | '' = inject(TUI_BLOCK_OPTIONS).size;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ class TuiBreadcrumbs {
48
48
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiBreadcrumbs, isStandalone: true, selector: "tui-breadcrumbs", inputs: { size: "size", itemsLimit: "itemsLimit" }, host: { properties: { "attr.data-size": "size" } }, providers: [
49
49
  tuiLinkOptionsProvider({ appearance: 'action-grayscale' }),
50
50
  tuiHintOptionsProvider({ direction: 'bottom' }),
51
- ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i3.TuiItemsWithMoreComponent, selector: "tui-items-with-more" }, { kind: "directive", type: i3.TuiMore, selector: "[tuiMore]" }, { kind: "directive", type: i4.TuiItem, selector: "[tuiItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
+ ], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-font-text-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-font-text-m);line-height:2.5rem;block-size:2.5rem}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important}.t-icon{margin:0 .5rem;font-size:1rem}.t-char{margin:0 .375rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i1.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i2.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i2.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: i3.TuiItemsWithMoreComponent, selector: "tui-items-with-more", outputs: ["lastIndexChange"] }, { kind: "directive", type: i3.TuiMore, selector: "[tuiMore]" }, { kind: "directive", type: i4.TuiItem, selector: "[tuiItem]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiBreadcrumbs, decorators: [{
54
54
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const TUI_BREADCRUMBS_OPTIONS = tuiCreateToken(TUI_BREADCRUMBS_DEFAULT_OPTIONS);\n\nexport function tuiBreadcrumbsOptionsProvider(\n options: Partial<TuiBreadcrumbsOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_BREADCRUMBS_OPTIONS,\n options,\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport type {TuiBreadcrumbsOptions} from './breadcrumbs.options';\nimport {TUI_BREADCRUMBS_OPTIONS} from './breadcrumbs.options';\n\n@Component({\n standalone: true,\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = toSignal(inject(TUI_MORE_WORD), {initialValue: ''});\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-kit-components-breadcrumbs.mjs","sources":["../../../projects/kit/components/breadcrumbs/breadcrumbs.options.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.component.ts","../../../projects/kit/components/breadcrumbs/breadcrumbs.template.html","../../../projects/kit/components/breadcrumbs/taiga-ui-kit-components-breadcrumbs.ts"],"sourcesContent":["import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiSizeL} from '@taiga-ui/core/types';\n\nexport interface TuiBreadcrumbsOptions {\n readonly icon: string;\n readonly size: TuiSizeL;\n readonly itemsLimit: number;\n}\n\nexport const TUI_BREADCRUMBS_DEFAULT_OPTIONS: TuiBreadcrumbsOptions = {\n icon: '@tui.chevron-right',\n size: 'm',\n itemsLimit: 0,\n};\n\nexport const TUI_BREADCRUMBS_OPTIONS = tuiCreateToken(TUI_BREADCRUMBS_DEFAULT_OPTIONS);\n\nexport function tuiBreadcrumbsOptionsProvider(\n options: Partial<TuiBreadcrumbsOptions>,\n): Provider {\n return tuiProvideOptions(\n TUI_BREADCRUMBS_OPTIONS,\n options,\n TUI_BREADCRUMBS_DEFAULT_OPTIONS,\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n inject,\n Input,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TuiDataList} from '@taiga-ui/core/components/data-list';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\nimport {tuiLinkOptionsProvider} from '@taiga-ui/core/components/link';\nimport {TuiDropdown} from '@taiga-ui/core/directives/dropdown';\nimport {tuiHintOptionsProvider} from '@taiga-ui/core/directives/hint';\nimport {TUI_COMMON_ICONS} from '@taiga-ui/core/tokens';\nimport {TuiItemsWithMore} from '@taiga-ui/kit/components/items-with-more';\nimport {TUI_MORE_WORD} from '@taiga-ui/kit/tokens';\n\nimport type {TuiBreadcrumbsOptions} from './breadcrumbs.options';\nimport {TUI_BREADCRUMBS_OPTIONS} from './breadcrumbs.options';\n\n@Component({\n standalone: true,\n selector: 'tui-breadcrumbs',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n TuiButton,\n TuiDataList,\n TuiDropdown,\n TuiIcon,\n TuiItemsWithMore,\n ],\n templateUrl: './breadcrumbs.template.html',\n styleUrls: ['./breadcrumbs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiLinkOptionsProvider({appearance: 'action-grayscale'}),\n tuiHintOptionsProvider({direction: 'bottom'}),\n ],\n host: {\n '[attr.data-size]': 'size',\n },\n})\nexport class TuiBreadcrumbs {\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected readonly options = inject(TUI_BREADCRUMBS_OPTIONS);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly more = toSignal(inject(TUI_MORE_WORD), {initialValue: ''});\n\n @Input()\n public size: TuiBreadcrumbsOptions['size'] = this.options.size;\n\n @Input()\n public itemsLimit = this.options.itemsLimit;\n\n protected get limit(): number {\n return this.itemsLimit ? this.itemsLimit - 2 : Infinity;\n }\n\n protected get offset(): number {\n return this.itemsLimit === 2 ? 1 : 0;\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container *ngIf=\"itemsLimit > 1; else plain\">\n <ng-container *ngIf=\"itemsLimit !== 2\">\n <ng-container [ngTemplateOutlet]=\"items.first\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </ng-container>\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit - 2\"\n [required]=\"items.length + offset - 2\"\n >\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container *ngIf=\"item !== items.first || itemsLimit === 2\">\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownOpen\n tuiIconButton\n type=\"button\"\n [iconStart]=\"icons.ellipsis\"\n [tuiDropdown]=\"dropdown\"\n >\n {{ more() }}\n </button>\n <ng-container [ngTemplateOutlet]=\"separator\" />\n </span>\n <ng-template #dropdown>\n <tui-data-list size=\"s\">\n <ng-container *ngFor=\"let item of items; let i = index\">\n <span\n *ngIf=\"i + offset && i <= index && item !== items.last\"\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n </ng-container>\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n</ng-container>\n<ng-template #separator>\n <tui-icon\n *ngIf=\"options.icon.length > 1; else char\"\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n <ng-template #char>\n <span class=\"t-char\">{{ options.icon }}</span>\n </ng-template>\n</ng-template>\n<ng-template #plain>\n <ng-container *ngFor=\"let item of items; let last = last\">\n <ng-container [ngTemplateOutlet]=\"item\" />\n <ng-container\n *ngIf=\"!last\"\n [ngTemplateOutlet]=\"separator\"\n />\n </ng-container>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,39 +1,53 @@
1
1
  import { TuiItem } from '@taiga-ui/cdk/directives/item';
2
2
  import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Directive, Input, inject, Injectable, TemplateRef, Component, ChangeDetectionStrategy, ContentChildren, ContentChild } from '@angular/core';
4
+ import { Directive, Input, inject, Injectable, TemplateRef, Component, ChangeDetectionStrategy, ContentChildren, ContentChild, Output } from '@angular/core';
5
5
  import { toSignal } from '@angular/core/rxjs-interop';
6
6
  import { MutationObserverService, WA_MUTATION_OBSERVER_INIT } from '@ng-web-apis/mutation-observer';
7
7
  import { ResizeObserverService } from '@ng-web-apis/resize-observer';
8
8
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
9
+ import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
9
10
  import { Subject, Observable, merge, debounceTime, map, distinctUntilChanged, share } from 'rxjs';
10
11
  import { tuiZonefreeScheduler, tuiZoneOptimized } from '@taiga-ui/cdk/observables';
11
- import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
12
12
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
13
13
 
14
14
  class TuiItemsWithMoreDirective {
15
15
  constructor() {
16
+ this.el = tuiInjectElement();
16
17
  this.itemsLimit = Infinity;
17
18
  this.required = -1;
19
+ this.linesLimit = 1;
18
20
  this.side = 'end';
19
21
  // TODO: refactor to signal inputs after Angular update
20
22
  this.change$ = new Subject();
21
23
  }
24
+ get computedSide() {
25
+ return this.linesLimit > 1 ? 'end' : this.side;
26
+ }
22
27
  ngOnChanges() {
23
28
  this.change$.next();
24
29
  }
30
+ maxWidth() {
31
+ return Math.max(...Array.from(this.el.children, ({ clientWidth }) => clientWidth));
32
+ }
25
33
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiItemsWithMoreDirective, isStandalone: true, inputs: { itemsLimit: "itemsLimit", required: "required", side: "side" }, usesOnChanges: true, ngImport: i0 }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiItemsWithMoreDirective, isStandalone: true, inputs: { itemsLimit: "itemsLimit", required: "required", linesLimit: "linesLimit", side: "side" }, host: { properties: { "class._multiline": "linesLimit > 1", "style.--t-min-width.px": "maxWidth()" } }, usesOnChanges: true, ngImport: i0 }); }
27
35
  }
28
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreDirective, decorators: [{
29
37
  type: Directive,
30
38
  args: [{
31
39
  standalone: true,
40
+ host: {
41
+ '[class._multiline]': 'linesLimit > 1',
42
+ '[style.--t-min-width.px]': 'maxWidth()',
43
+ },
32
44
  }]
33
45
  }], propDecorators: { itemsLimit: [{
34
46
  type: Input
35
47
  }], required: [{
36
48
  type: Input
49
+ }], linesLimit: [{
50
+ type: Input
37
51
  }], side: [{
38
52
  type: Input
39
53
  }] } });
@@ -43,19 +57,21 @@ class TuiItemsWithMoreService extends Observable {
43
57
  super((subscriber) => this.stream$.subscribe(subscriber));
44
58
  this.el = tuiInjectElement();
45
59
  this.directive = inject(TuiItemsWithMoreDirective);
46
- this.stream$ = merge(this.directive.change$, inject(MutationObserverService, { self: true }), inject(ResizeObserverService, { self: true })).pipe(debounceTime(0, tuiZonefreeScheduler()), map(() => this.getOverflowIndex()), distinctUntilChanged(), tuiZoneOptimized(), share());
60
+ this.stream$ = merge(this.directive.change$, inject(MutationObserverService, { self: true }), inject(ResizeObserverService, { self: true })).pipe(debounceTime(0, tuiZonefreeScheduler()), map(() => this.directive.linesLimit > 1
61
+ ? this.getOverflowIndexMultiline()
62
+ : this.getOverflowIndex(Array.from(this.el.children))), distinctUntilChanged(), tuiZoneOptimized(), share());
47
63
  }
48
- getOverflowIndex() {
49
- const { side, itemsLimit } = this.directive;
50
- const { clientWidth, children } = this.el;
64
+ getOverflowIndex(children) {
65
+ const { computedSide, itemsLimit } = this.directive;
66
+ const { clientWidth } = this.el;
51
67
  const items = Array.from(children, ({ clientWidth }) => clientWidth);
52
- const index = side === 'start' ? 0 : items.length - 1;
68
+ const index = computedSide === 'start' ? 0 : items.length - 1;
53
69
  const more = children[index]?.tagName === 'SPAN' ? (items[index] ?? 0) : 0;
54
70
  const total = items.reduce((sum, width) => sum + width, 0) - more;
55
71
  if (total <= clientWidth && itemsLimit >= items.length) {
56
- return side === 'end' ? itemsLimit : 0;
72
+ return computedSide === 'end' ? itemsLimit : 0;
57
73
  }
58
- return side === 'start'
74
+ return computedSide === 'start'
59
75
  ? this.getIndexStart(items, total, more)
60
76
  : this.getIndexEnd(items, total, more);
61
77
  }
@@ -93,6 +109,17 @@ class TuiItemsWithMoreService extends Observable {
93
109
  }
94
110
  return -1;
95
111
  }
112
+ getOverflowIndexMultiline() {
113
+ const { children } = this.el;
114
+ const { linesLimit, itemsLimit } = this.directive;
115
+ const items = Array.from(children);
116
+ const rows = new Set(items.map((item) => item.offsetTop));
117
+ const offset = Array.from(rows)[linesLimit - 1];
118
+ const firstItemLastRow = items.findIndex((i) => i.offsetTop === offset);
119
+ const lastRow = items.slice(firstItemLastRow);
120
+ const index = firstItemLastRow + this.getOverflowIndex(lastRow);
121
+ return Math.min(itemsLimit - 1, index);
122
+ }
96
123
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
97
124
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreService }); }
98
125
  }
@@ -119,22 +146,23 @@ class TuiItemsWithMoreComponent {
119
146
  constructor() {
120
147
  this.items = EMPTY_QUERY;
121
148
  this.directive = inject(TuiItemsWithMoreDirective);
122
- this.lastIndex = toSignal(inject(TuiItemsWithMoreService), {
149
+ this.lastIndexChange = inject(TuiItemsWithMoreService);
150
+ this.lastIndex = toSignal(this.lastIndexChange, {
123
151
  initialValue: 0,
124
152
  });
125
153
  }
126
154
  get isMoreHidden() {
127
- const { side } = this.directive;
128
- return ((this.lastIndex() >= this.items.length - 1 && side === 'end') ||
129
- (!this.lastIndex() && side === 'start'));
155
+ const { computedSide } = this.directive;
156
+ return ((this.lastIndex() >= this.items.length - 1 && computedSide === 'end') ||
157
+ (!this.lastIndex() && computedSide === 'start'));
130
158
  }
131
159
  isHidden(index) {
132
- const { side, required } = this.directive;
133
- return ((index > this.lastIndex() && index !== required && side === 'end') ||
134
- (index < this.lastIndex() && index !== required && side === 'start'));
160
+ const { computedSide, required } = this.directive;
161
+ return ((index > this.lastIndex() && index !== required && computedSide === 'end') ||
162
+ (index < this.lastIndex() && index !== required && computedSide === 'start'));
135
163
  }
136
164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiItemsWithMoreComponent, isStandalone: true, selector: "tui-items-with-more", providers: [
165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiItemsWithMoreComponent, isStandalone: true, selector: "tui-items-with-more", outputs: { lastIndexChange: "lastIndexChange" }, providers: [
138
166
  MutationObserverService,
139
167
  ResizeObserverService,
140
168
  TuiItemsWithMoreService,
@@ -146,7 +174,7 @@ class TuiItemsWithMoreComponent {
146
174
  subtree: true,
147
175
  },
148
176
  },
149
- ], queries: [{ propertyName: "more", first: true, predicate: TuiMore, descendants: true, read: TemplateRef }, { propertyName: "items", predicate: TuiItem, descendants: true, read: TemplateRef }], hostDirectives: [{ directive: TuiItemsWithMoreDirective, inputs: ["itemsLimit", "itemsLimit", "required", "required", "side", "side"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;visibility:hidden}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
177
+ ], queries: [{ propertyName: "more", first: true, predicate: TuiMore, descendants: true, read: TemplateRef }, { propertyName: "items", predicate: TuiItem, descendants: true, read: TemplateRef }], hostDirectives: [{ directive: TuiItemsWithMoreDirective, inputs: ["itemsLimit", "itemsLimit", "required", "required", "side", "side", "linesLimit", "linesLimit"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item t-item_more\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}:host._multiline{flex-wrap:wrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;bottom:0;visibility:hidden}:host._multiline .t-item_more{min-inline-size:var(--t-min-width, 0)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
150
178
  }
151
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreComponent, decorators: [{
152
180
  type: Component,
@@ -165,15 +193,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
165
193
  ], hostDirectives: [
166
194
  {
167
195
  directive: TuiItemsWithMoreDirective,
168
- inputs: ['itemsLimit', 'required', 'side'],
196
+ inputs: ['itemsLimit', 'required', 'side', 'linesLimit'],
169
197
  },
170
- ], template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;visibility:hidden}\n"] }]
198
+ ], template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item t-item_more\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}:host._multiline{flex-wrap:wrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;bottom:0;visibility:hidden}:host._multiline .t-item_more{min-inline-size:var(--t-min-width, 0)}\n"] }]
171
199
  }], propDecorators: { items: [{
172
200
  type: ContentChildren,
173
201
  args: [TuiItem, { read: TemplateRef, descendants: true }]
174
202
  }], more: [{
175
203
  type: ContentChild,
176
204
  args: [TuiMore, { read: TemplateRef }]
205
+ }], lastIndexChange: [{
206
+ type: Output
177
207
  }] } });
178
208
 
179
209
  const TuiItemsWithMore = [
@@ -1 +1 @@
1
- {"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 type {OnChanges} from '@angular/core';\nimport {Directive, Input} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class TuiItemsWithMoreDirective implements OnChanges {\n @Input()\n public itemsLimit = Infinity;\n\n @Input()\n public required = -1;\n\n @Input()\n public side: 'end' | 'start' = 'end';\n\n // TODO: refactor to signal inputs after Angular update\n public readonly change$ = new Subject<void>();\n\n public ngOnChanges(): void {\n this.change$.next();\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} 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(MutationObserverService, {self: true}),\n inject(ResizeObserverService, {self: true}),\n ).pipe(\n debounceTime(0, tuiZonefreeScheduler()),\n map(() => this.getOverflowIndex()),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n );\n\n constructor() {\n super((subscriber) => this.stream$.subscribe(subscriber));\n }\n\n private getOverflowIndex(): number {\n const {side, itemsLimit} = this.directive;\n const {clientWidth, children} = this.el;\n const items = Array.from(children, ({clientWidth}) => clientWidth);\n const index = side === '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 side === 'end' ? itemsLimit : 0;\n }\n\n return side === '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","import {Directive} from '@angular/core';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\n\n@Directive({\n standalone: true,\n selector: '[tuiMore]',\n})\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 {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n inject,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\n\nimport {TuiItemsWithMoreDirective} from './items-with-more.directive';\nimport {TuiItemsWithMoreService} from './items-with-more.service';\nimport {TuiMore} from './more.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-items-with-more',\n imports: [AsyncPipe, NgForOf, NgIf, NgTemplateOutlet],\n templateUrl: './items-with-more.template.html',\n styleUrls: ['./items-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MutationObserverService,\n ResizeObserverService,\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'],\n },\n ],\n})\nexport class TuiItemsWithMoreComponent {\n @ContentChildren(TuiItem, {read: TemplateRef, descendants: true})\n protected readonly items: QueryList<TemplateRef<unknown>> = EMPTY_QUERY;\n\n @ContentChild(TuiMore, {read: TemplateRef})\n protected readonly more?: TemplateRef<TuiContext<number>>;\n\n protected readonly directive = inject(TuiItemsWithMoreDirective);\n protected readonly lastIndex = toSignal(inject(TuiItemsWithMoreService), {\n initialValue: 0,\n });\n\n protected get isMoreHidden(): boolean {\n const {side} = this.directive;\n\n return (\n (this.lastIndex() >= this.items.length - 1 && side === 'end') ||\n (!this.lastIndex() && side === 'start')\n );\n }\n\n protected isHidden(index: number): boolean {\n const {side, required} = this.directive;\n\n return (\n (index > this.lastIndex() && index !== required && side === 'end') ||\n (index < this.lastIndex() && index !== required && side === 'start')\n );\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\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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"}
1
+ {"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 type {OnChanges} from '@angular/core';\nimport {Directive, Input} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {Subject} from 'rxjs';\n\n@Directive({\n standalone: true,\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\n @Input()\n public itemsLimit = Infinity;\n\n @Input()\n public required = -1;\n\n @Input()\n public linesLimit = 1;\n\n @Input()\n public side: 'end' | 'start' = 'end';\n\n // TODO: refactor to signal inputs after Angular update\n public readonly change$ = new Subject<void>();\n\n public get computedSide(): 'end' | 'start' {\n return this.linesLimit > 1 ? 'end' : this.side;\n }\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 {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} 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(MutationObserverService, {self: true}),\n inject(ResizeObserverService, {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 {computedSide, itemsLimit} = this.directive;\n const {clientWidth} = this.el;\n const items = Array.from(children, ({clientWidth}) => clientWidth);\n const index = computedSide === '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 computedSide === 'end' ? itemsLimit : 0;\n }\n\n return computedSide === '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({\n standalone: true,\n selector: '[tuiMore]',\n})\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 {AsyncPipe, NgForOf, NgIf, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n inject,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {toSignal} from '@angular/core/rxjs-interop';\nimport {\n MutationObserverService,\n WA_MUTATION_OBSERVER_INIT,\n} from '@ng-web-apis/mutation-observer';\nimport {ResizeObserverService} from '@ng-web-apis/resize-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport type {TuiContext} from '@taiga-ui/cdk/types';\n\nimport {TuiItemsWithMoreDirective} from './items-with-more.directive';\nimport {TuiItemsWithMoreService} from './items-with-more.service';\nimport {TuiMore} from './more.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-items-with-more',\n imports: [AsyncPipe, NgForOf, NgIf, NgTemplateOutlet],\n templateUrl: './items-with-more.template.html',\n styleUrls: ['./items-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MutationObserverService,\n ResizeObserverService,\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 @ContentChildren(TuiItem, {read: TemplateRef, descendants: true})\n protected readonly items: QueryList<TemplateRef<unknown>> = EMPTY_QUERY;\n\n @ContentChild(TuiMore, {read: TemplateRef})\n protected readonly more?: TemplateRef<TuiContext<number>>;\n\n protected readonly directive = inject(TuiItemsWithMoreDirective);\n\n @Output()\n public readonly lastIndexChange = inject(TuiItemsWithMoreService);\n\n public readonly lastIndex = toSignal(this.lastIndexChange, {\n initialValue: 0,\n });\n\n protected get isMoreHidden(): boolean {\n const {computedSide} = this.directive;\n\n return (\n (this.lastIndex() >= this.items.length - 1 && computedSide === 'end') ||\n (!this.lastIndex() && computedSide === 'start')\n );\n }\n\n protected isHidden(index: number): boolean {\n const {computedSide, required} = this.directive;\n\n return (\n (index > this.lastIndex() && index !== required && computedSide === 'end') ||\n (index < this.lastIndex() && index !== required && computedSide === 'start')\n );\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item t-item_more\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\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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"}