@taiga-ui/kit
Version:
Taiga UI Angular main components kit
64 lines (59 loc) • 11.3 kB
JavaScript
import { NgTemplateOutlet } from '@angular/common';
import * as i0 from '@angular/core';
import { contentChildren, TemplateRef, inject, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
import * as i4 from '@taiga-ui/cdk/directives/item';
import { TuiItem } from '@taiga-ui/cdk/directives/item';
import { TuiButton } from '@taiga-ui/core/components/button';
import * as i1 from '@taiga-ui/core/components/data-list';
import { TuiDataList } from '@taiga-ui/core/components/data-list';
import { TuiIcon } from '@taiga-ui/core/components/icon';
import { tuiLinkOptionsProvider } from '@taiga-ui/core/components/link';
import * as i2 from '@taiga-ui/core/portals/dropdown';
import { TuiDropdown } from '@taiga-ui/core/portals/dropdown';
import { tuiHintOptionsProvider } from '@taiga-ui/core/portals/hint';
import { TUI_COMMON_ICONS } from '@taiga-ui/core/tokens';
import * as i3 from '@taiga-ui/kit/components/items-with-more';
import { TuiItemsWithMore } from '@taiga-ui/kit/components/items-with-more';
import { TUI_MORE_WORD } from '@taiga-ui/kit/tokens';
import { tuiCreateOptions } from '@taiga-ui/cdk/utils/di';
const TUI_BREADCRUMBS_DEFAULT_OPTIONS = {
icon: '.chevron-right',
size: 'm',
itemsLimit: 0,
};
const [TUI_BREADCRUMBS_OPTIONS, tuiBreadcrumbsOptionsProvider] = tuiCreateOptions(TUI_BREADCRUMBS_DEFAULT_OPTIONS);
class TuiBreadcrumbs {
constructor() {
this.items = contentChildren(TuiItem, { read: TemplateRef });
this.options = inject(TUI_BREADCRUMBS_OPTIONS);
this.icons = inject(TUI_COMMON_ICONS);
this.more = inject(TUI_MORE_WORD);
this.size = input(this.options.size);
this.itemsLimit = input(this.options.itemsLimit);
this.offset = computed(() => (this.itemsLimit() === 2 ? 1 : 0));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiBreadcrumbs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: TuiBreadcrumbs, isStandalone: true, selector: "tui-breadcrumbs", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, itemsLimit: { classPropertyName: "itemsLimit", publicName: "itemsLimit", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-size": "size()" } }, providers: [
tuiLinkOptionsProvider({ appearance: 'action-grayscale' }),
tuiHintOptionsProvider({ direction: 'bottom' }),
], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef, isSignal: true }], ngImport: i0, template: "@if (itemsLimit() > 1) {\n @if (itemsLimit() !== 2) {\n <ng-container [ngTemplateOutlet]=\"items()[0] || null\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit() - 2\"\n [required]=\"items().length + offset() - 2\"\n >\n @for (item of items(); track item) {\n @if (item !== items()[0] || itemsLimit() === 2) {\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n </ng-container>\n }\n }\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownAuto\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 @for (item of items(); track item) {\n @if ($index + offset() && $index <= index && item !== items()[items().length - 1]) {\n <span\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n }\n }\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n} @else {\n @for (item of items(); track item) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n }\n}\n<ng-template #separator>\n @if (options.icon.length > 1) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n } @else {\n <span class=\"t-char\">{{ options.icon }}</span>\n }\n</ng-template>\n\n<ng-content />\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-typography-body-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-typography-body-m);line-height:2.5rem;block-size:2.5rem}:host ::ng-deep [tuiLink]{text-decoration:none}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important;text-decoration:none}.t-icon{margin:0 .5rem;font-size:1rem;transform:scaleX(var(--tui-inline))}.t-char{margin:0 .375rem}\n"], dependencies: [{ 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][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["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 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: TuiBreadcrumbs, decorators: [{
type: Component,
args: [{ selector: 'tui-breadcrumbs', imports: [
NgTemplateOutlet,
TuiButton,
TuiDataList,
TuiDropdown,
TuiIcon,
TuiItemsWithMore,
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
tuiLinkOptionsProvider({ appearance: 'action-grayscale' }),
tuiHintOptionsProvider({ direction: 'bottom' }),
], host: { '[attr.data-size]': 'size()' }, template: "@if (itemsLimit() > 1) {\n @if (itemsLimit() !== 2) {\n <ng-container [ngTemplateOutlet]=\"items()[0] || null\" />\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n <tui-items-with-more\n side=\"start\"\n [itemsLimit]=\"itemsLimit() - 2\"\n [required]=\"items().length + offset() - 2\"\n >\n @for (item of items(); track item) {\n @if (item !== items()[0] || itemsLimit() === 2) {\n <ng-container *tuiItem>\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n </ng-container>\n }\n }\n <ng-template\n let-index\n tuiMore\n >\n <span class=\"t-more\">\n <button\n appearance=\"flat\"\n size=\"xs\"\n tuiDropdownAuto\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 @for (item of items(); track item) {\n @if ($index + offset() && $index <= index && item !== items()[items().length - 1]) {\n <span\n tuiOption\n class=\"t-option\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </span>\n }\n }\n </tui-data-list>\n </ng-template>\n </ng-template>\n </tui-items-with-more>\n} @else {\n @for (item of items(); track item) {\n <ng-container [ngTemplateOutlet]=\"item\" />\n @if (!$last) {\n <ng-container [ngTemplateOutlet]=\"separator\" />\n }\n }\n}\n<ng-template #separator>\n @if (options.icon.length > 1) {\n <tui-icon\n class=\"t-icon\"\n [icon]=\"options.icon\"\n />\n } @else {\n <span class=\"t-char\">{{ options.icon }}</span>\n }\n</ng-template>\n\n<ng-content />\n", styles: [":host{display:flex;align-items:center;white-space:nowrap;color:var(--tui-text-secondary)}:host[data-size=m]{font:var(--tui-typography-body-s);line-height:1.5rem;block-size:1.5rem}:host[data-size=l]{font:var(--tui-typography-body-m);line-height:2.5rem;block-size:2.5rem}:host ::ng-deep [tuiLink]{text-decoration:none}.t-more{display:flex;align-items:center}.t-option ::ng-deep>*{color:var(--tui-text-primary)!important;background:transparent!important;text-decoration:none}.t-icon{margin:0 .5rem;font-size:1rem;transform:scaleX(var(--tui-inline))}.t-char{margin:0 .375rem}\n"] }]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { TUI_BREADCRUMBS_DEFAULT_OPTIONS, TUI_BREADCRUMBS_OPTIONS, TuiBreadcrumbs, tuiBreadcrumbsOptionsProvider };
//# sourceMappingURL=taiga-ui-kit-components-breadcrumbs.mjs.map