{"version":3,"file":"pepperi-addons-ngx-lib-bread-crumbs.mjs","sources":["../../../projects/ngx-lib/bread-crumbs/bread-crumbs.component.ts","../../../projects/ngx-lib/bread-crumbs/bread-crumbs.component.html","../../../projects/ngx-lib/bread-crumbs/bread-crumbs.module.ts","../../../projects/ngx-lib/bread-crumbs/bread-crumbs.model.ts","../../../projects/ngx-lib/bread-crumbs/public-api.ts","../../../projects/ngx-lib/bread-crumbs/pepperi-addons-ngx-lib-bread-crumbs.ts"],"sourcesContent":["import {\n    Component,\n    Input,\n    OnInit,\n    Injectable,\n    Output,\n    EventEmitter,\n} from '@angular/core';\nimport { PepLayoutService, PepScreenSizeType } from '@pepperi-addons/ngx-lib';\nimport {\n    IPepBreadCrumbItemClickEvent,\n    PepBreadCrumbItem,\n    PepBreadCrumbsDisplayType,\n} from './bread-crumbs.model';\nimport {\n    pepIconArrowLeft,\n    pepIconArrowRight,\n} from '@pepperi-addons/ngx-lib/icon';\n@Component({\n    selector: 'pep-bread-crumbs',\n    templateUrl: './bread-crumbs.component.html',\n    styleUrls: ['./bread-crumbs.component.scss', './bread-crumbs.component.theme.scss'],\n})\n@Injectable()\nexport class PepBreadCrumbsComponent implements OnInit {\n    private _items: Array<PepBreadCrumbItem> = [];\n    @Input()\n    set items(value: Array<PepBreadCrumbItem>) {\n        this._items = value;\n        this.setupShrinkItems();\n    }\n    get items(): Array<PepBreadCrumbItem> {\n        return this._items;\n    }\n\n    private _displayType: PepBreadCrumbsDisplayType = 'label';\n    @Input()\n    set displayType(value: PepBreadCrumbsDisplayType) {\n        this._displayType = value;\n        this.setupShrinkItems();\n    }\n    get displayType(): PepBreadCrumbsDisplayType {\n        return this._displayType;\n    }\n\n    @Input() addSpacing = false;\n\n    @Output()\n    itemClick: EventEmitter<IPepBreadCrumbItemClickEvent> = new EventEmitter<IPepBreadCrumbItemClickEvent>();\n\n    charSeparator = ' / ';\n    iconSeparator: string = pepIconArrowRight.name;\n    shrinkItems = false;\n    screenSize: PepScreenSizeType;\n\n    constructor(private layoutService: PepLayoutService) { }\n\n    ngOnInit(): void {\n        this.layoutService.onResize$.pipe().subscribe((size) => {\n            this.screenSize = size;\n            this.setupShrinkItems();\n        });\n\n        if (this.layoutService.isRtl()) {\n            this.charSeparator = ' \\\\ ';\n            this.iconSeparator = pepIconArrowLeft.name;\n        }\n    }\n\n    private setupShrinkItems() {\n        if (this.displayType === 'items' && this.items.length > 1) {\n            this.shrinkItems = this.screenSize > PepScreenSizeType.SM;\n        }\n    }\n\n    getLabelTitle(): string {\n        let labelTitle = '';\n\n        if (this.items && this.items.length > 0) {\n            for (let index = 0; index < this.items.length; index++) {\n                if (index < this.items.length - 1) {\n                    if (index > 0) {\n                        labelTitle += this.charSeparator;\n                    }\n\n                    labelTitle += this.items[index].text;\n                }\n            }\n        }\n\n        return labelTitle;\n    }\n\n    onBreadCrumbItemClick(item: PepBreadCrumbItem): void {\n        this.itemClick.emit({ source: item });\n    }\n}\n","<ng-container *ngIf=\"displayType === 'label'; then labelTemplate; else itemsTemplate\">\n</ng-container>\n<ng-template #labelTemplate>\n    <div *ngIf=\"items?.length > 0\" class=\"bread-crumbs-label color-dimmed ellipsis\" [ngClass]=\"{ 'pep-spacing-element': addSpacing }\"\n        [title]=\"getLabelTitle()\">\n        <div class=\"body-xs ellipsis\">\n            <ng-container *ngFor=\"let item of items; let isFirst = first; let isLast = last\">\n                <span *ngIf=\"!isFirst && !isLast\">&nbsp;{{ charSeparator }}&nbsp;</span>\n                <span *ngIf=\"!isLast\">{{ item.text }}</span>\n            </ng-container>\n        </div>\n        <div class=\" title-md ellipsis current color-main\" title=\"{{ items[items.length - 1]?.text }}\">\n            <span>{{ items[items.length - 1]?.text }}</span>\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #itemsTemplate>\n    <ul *ngIf=\"items?.length > 0\" class=\"bread-crumbs-items body-sm ellipsis\">\n        <ng-container *ngIf=\"shrinkItems; then shrinkTemplate; else regularTemplate\">\n        </ng-container>\n\n        <ng-template #shrinkTemplate>\n            <li>\n                <a class=\"color-link\" [matMenuTriggerFor]=\"menu\" href=\"javascript:void(0)\">...</a>\n                <mat-menu #menu=\"matMenu\">\n                    <ng-container *ngFor=\"let menuItem of items; let isLast = last\">\n                        <button mat-menu-item *ngIf=\"!isLast\" (click)=\"onBreadCrumbItemClick(menuItem)\"\n                            [title]=\"menuItem.title || menuItem.text\" [disabled]=\"menuItem.disabled\"\n                            [ngClass]=\"{ disabled: menuItem.disabled }\">\n                            <span>\n                                {{ menuItem.text }}\n                            </span>\n                        </button>\n                    </ng-container>\n                </mat-menu>\n            </li>\n            <li>\n                <mat-icon class=\"separator pep-spacing-element\">\n                    <pep-icon [name]=\"iconSeparator\">\n                    </pep-icon>\n                </mat-icon>\n            </li>\n            <li>\n                <span [title]=\"items[items.length - 1]?.title || items[items.length - 1]?.text\">\n                    {{ items[items.length - 1]?.text }}\n                </span>\n            </li>\n        </ng-template>\n        <ng-template #regularTemplate>\n            <ng-container *ngFor=\"let item of items; let isFirst = first; let isLast = last\">\n                <li>\n                    <a *ngIf=\"!item.disabled\" [title]=\"item.title || item.text\" href=\"javascript:void(0)\"\n                        class=\" color-link\" (click)=\"onBreadCrumbItemClick(item)\">{{ item.text }}</a>\n                    <span *ngIf=\"item.disabled\" [title]=\"item.title || item.text\">{{ item.text }}</span>\n                </li>\n                <li *ngIf=\"!isLast\">\n                    <mat-icon class=\"separator pep-spacing-element\">\n                        <pep-icon [name]=\"iconSeparator\">\n                        </pep-icon>\n                    </mat-icon>\n                </li>\n            </ng-container>\n        </ng-template>\n    </ul>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport {\n    PepIconModule,\n    PepIconRegistry,\n    pepIconArrowRight,\n    pepIconArrowLeft,\n} from '@pepperi-addons/ngx-lib/icon';\n\nimport { PepBreadCrumbsComponent } from './bread-crumbs.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        // Material modules\n        MatIconModule,\n        MatMenuModule,\n        // ngx-lib modules\n        PepNgxLibModule,\n        PepIconModule\n    ],\n    exports: [PepBreadCrumbsComponent],\n    declarations: [PepBreadCrumbsComponent]\n})\nexport class PepBreadCrumbsModule {\n    constructor(private pepIconRegistry: PepIconRegistry) {\n        this.pepIconRegistry.registerIcons([\n            pepIconArrowRight,\n            pepIconArrowLeft,\n        ]);\n    }\n}\n","export type PepBreadCrumbsDisplayType = 'label' | 'items';\n\nexport class PepBreadCrumbItem {\n    key: string;\n    text: string;\n    title?: string;\n    disabled?: boolean = false;\n\n    constructor(data: Partial<PepBreadCrumbItem>) {\n        Object.assign(this, data);\n    }\n}\n\nexport interface IPepBreadCrumbItemClickEvent {\n    source: PepBreadCrumbItem;\n}\n","/*\n * Public API Surface of ngx-lib/bread-crumbs\n */\nexport * from './bread-crumbs.module';\nexport * from './bread-crumbs.model';\nexport * from './bread-crumbs.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i5","i1"],"mappings":"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"}