{"version":3,"file":"igniteui-angular-list.mjs","sources":["../../../projects/igniteui-angular/list/src/list/list.common.ts","../../../projects/igniteui-angular/list/src/list/list-item.component.ts","../../../projects/igniteui-angular/list/src/list/list-item.component.html","../../../projects/igniteui-angular/list/src/list/list.component.ts","../../../projects/igniteui-angular/list/src/list/list.component.html","../../../projects/igniteui-angular/list/src/list/public_api.ts","../../../projects/igniteui-angular/list/src/list/list.module.ts","../../../projects/igniteui-angular/list/src/igniteui-angular-list.ts"],"sourcesContent":["import { Directive, TemplateRef, EventEmitter, QueryList, ElementRef, inject } from '@angular/core';\n\nexport interface IListChild {\n    index: number;\n}\n\n/** @hidden */\n@Directive({\n    selector: '[igxListBase]',\n    standalone: true\n})\nexport class IgxListBaseDirective {\n    protected el = inject(ElementRef, { optional: true });\n\n    public itemClicked: EventEmitter<any>;\n    public allowLeftPanning: boolean;\n    public allowRightPanning: boolean;\n    public panEndTriggeringThreshold: number;\n    public leftPan: EventEmitter<any>;\n    public rightPan: EventEmitter<any>;\n    public startPan: EventEmitter<any>;\n    public endPan: EventEmitter<any>;\n    public resetPan: EventEmitter<any>;\n    public panStateChange: EventEmitter<any>;\n    public children: QueryList<any>;\n    public listItemLeftPanningTemplate: IgxListItemLeftPanningTemplateDirective;\n    public listItemRightPanningTemplate: IgxListItemRightPanningTemplateDirective;\n}\n\nexport enum IgxListPanState { NONE, LEFT, RIGHT }\n\n@Directive({\n    selector: '[igxEmptyList]',\n    standalone: true\n})\nexport class IgxEmptyListTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n    selector: '[igxDataLoading]',\n    standalone: true\n})\nexport class IgxDataLoadingTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n    selector: '[igxListItemLeftPanning]',\n    standalone: true\n})\nexport class IgxListItemLeftPanningTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n    selector: '[igxListItemRightPanning]',\n    standalone: true\n})\nexport class IgxListItemRightPanningTemplateDirective {\n    public template = inject<TemplateRef<any>>(TemplateRef);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, HostListener, Input, Renderer2, ViewChild, booleanAttribute, inject } from '@angular/core';\n\nimport {\n    IgxListPanState,\n    IListChild,\n    IgxListBaseDirective\n} from './list.common';\n\nimport { HammerGesturesManager } from 'igniteui-angular/core';\nimport { rem } from 'igniteui-angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * The Ignite UI List Item component is a container intended for row items in the Ignite UI for Angular List component.\n *\n * Example:\n * ```html\n * <igx-list>\n *   <igx-list-item isHeader=\"true\">Contacts</igx-list-item>\n *   <igx-list-item *ngFor=\"let contact of contacts\">\n *     <span class=\"name\">{{ contact.name }}</span>\n *     <span class=\"phone\">{{ contact.phone }}</span>\n *   </igx-list-item>\n * </igx-list>\n * ```\n */\n@Component({\n    providers: [HammerGesturesManager],\n    selector: 'igx-list-item',\n    templateUrl: 'list-item.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgTemplateOutlet]\n})\nexport class IgxListItemComponent implements IListChild {\n    public list = inject(IgxListBaseDirective);\n    private elementRef = inject(ElementRef);\n    private _renderer = inject(Renderer2);\n\n    /**\n     * Provides a reference to the template's base element shown when left panning a list item.\n     * ```typescript\n     * const leftPanTmpl = this.listItem.leftPanningTemplateElement;\n     * ```\n     */\n    @ViewChild('leftPanningTmpl')\n    public leftPanningTemplateElement;\n\n    /**\n     * Provides a reference to the template's base element shown when right panning a list item.\n     * ```typescript\n     * const rightPanTmpl = this.listItem.rightPanningTemplateElement;\n     * ```\n     */\n    @ViewChild('rightPanningTmpl')\n    public rightPanningTemplateElement;\n\n    /**\n     * Sets/gets whether the `list item` is a header.\n     * ```html\n     * <igx-list-item [isHeader] = \"true\">Header</igx-list-item>\n     * ```\n     * ```typescript\n     * let isHeader =  this.listItem.isHeader;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @Input({ transform: booleanAttribute })\n    public isHeader: boolean;\n\n    /**\n     * Sets/gets whether the `list item` is hidden.\n     * By default the `hidden` value is `false`.\n     * ```html\n     * <igx-list-item [hidden] = \"true\">Hidden Item</igx-list-item>\n     * ```\n     * ```typescript\n     * let isHidden =  this.listItem.hidden;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @Input({ transform: booleanAttribute })\n    public hidden = false;\n\n    /**\n     * Sets/gets the `aria-label` attribute of the `list item`.\n     * ```typescript\n     * this.listItem.ariaLabel = \"Item1\";\n     * ```\n     * ```typescript\n     * let itemAriaLabel = this.listItem.ariaLabel;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('attr.aria-label')\n    public ariaLabel: string;\n\n    /**\n     * Gets the `touch-action` style of the `list item`.\n     * ```typescript\n     * let touchAction = this.listItem.touchAction;\n     * ```\n     */\n    @HostBinding('style.touch-action')\n    public touchAction = 'pan-y';\n\n    /**\n     * @hidden\n     */\n    private _panState: IgxListPanState = IgxListPanState.NONE;\n\n    /**\n     * @hidden\n     */\n    private panOffset = 0;\n\n    /**\n     * @hidden\n     */\n    private _index: number = null;\n\n    /**\n     * @hidden\n     */\n    private lastPanDir = IgxListPanState.NONE;\n\n    private _role: string = '';\n    private _selected = false;;\n\n    /**\n     * Gets the `panState` of a `list item`.\n     * ```typescript\n     * let itemPanState =  this.listItem.panState;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get panState(): IgxListPanState {\n        return this._panState;\n    }\n\n    /**\n     * Gets the `index` of a `list item`.\n     * ```typescript\n     * let itemIndex =  this.listItem.index;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @Input()\n    public get index(): number {\n        return this._index !== null ? this._index : this.list.children.toArray().indexOf(this);\n    }\n\n    /**\n     * Sets the `index` of the `list item`.\n     * ```typescript\n     * this.listItem.index = index;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public set index(value: number) {\n        this._index = value;\n    }\n\n    /**\n     * Returns an element reference to the list item.\n     * ```typescript\n     * let listItemElement =  this.listItem.element.\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get element() {\n        return this.elementRef.nativeElement;\n    }\n\n    /**\n     * Returns a reference container which contains the list item's content.\n     * ```typescript\n     * let listItemContainer =  this.listItem.contentElement.\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get contentElement() {\n        const candidates = this.element.getElementsByClassName('igx-list__item-content');\n        return (candidates && candidates.length > 0) ? candidates[0] : null;\n    }\n\n    /**\n     * Returns the `context` object which represents the `template context` binding into the `list item container`\n     * by providing the `$implicit` declaration which is the `IgxListItemComponent` itself.\n     * ```typescript\n     * let listItemComponent = this.listItem.context;\n     * ```\n     */\n    public get context(): any {\n        return {\n            $implicit: this\n        };\n    }\n\n    /**\n     * Gets the width of a `list item`.\n     * ```typescript\n     * let itemWidth = this.listItem.width;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get width() {\n        if (this.element) {\n            return this.element.offsetWidth;\n        }\n    }\n\n    /**\n     * Gets the maximum left position of the `list item`.\n     * ```typescript\n     * let maxLeft = this.listItem.maxLeft;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get maxLeft() {\n        return -this.width;\n    }\n\n    /**\n     * Gets the maximum right position of the `list item`.\n     * ```typescript\n     * let maxRight = this.listItem.maxRight;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    public get maxRight() {\n        return this.width;\n    }\n\n    /** @hidden @internal */\n    public get offsetWidthInRem() {\n        return rem(this.element.offsetWidth);\n    }\n\n    /** @hidden @internal */\n    public get offsetHeightInRem() {\n        return rem(this.element.offsetHeight);\n    }\n\n    /**\n     * Gets/Sets the `role` attribute of the `list item`.\n     * ```typescript\n     * let itemRole =  this.listItem.role;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('attr.role')\n    @Input()\n    public get role() {\n        return this._role ? this._role : this.isHeader ? 'separator' : 'listitem';\n    }\n\n    public set role(val: string) {\n        this._role = val;\n    }\n\n    /**\n     * Sets/gets whether the `list item` is selected.\n     * Selection is only applied to non-header items.\n     * When selected, the CSS class 'igx-list__item-base--selected' is added to the item.\n     * ```html\n     * <igx-list-item [selected]=\"true\">Selected Item</igx-list-item>\n     * ```\n     * ```typescript\n     * let isSelected = this.listItem.selected;\n     * this.listItem.selected = true;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('class.igx-list__item-base--selected')\n    @Input({ transform: booleanAttribute })\n    public get selected() {\n        return this._selected && !this.isHeader;\n    }\n\n    public set selected(value: boolean) {\n        this._selected = value;\n    }\n\n    /**\n     * Indicates whether `list item` should have header style.\n     * ```typescript\n     * let headerStyle =  this.listItem.headerStyle;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('class.igx-list__header')\n    public get headerStyle(): boolean {\n        return this.isHeader;\n    }\n\n    /**\n     * Applies the inner style of the `list item` if the item is not counted as header.\n     * ```typescript\n     * let innerStyle =  this.listItem.innerStyle;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('class.igx-list__item-base')\n    public get innerStyle(): boolean {\n        return !this.isHeader;\n    }\n\n    /**\n     * Returns string value which describes the display mode of the `list item`.\n     * ```typescript\n     * let isHidden = this.listItem.display;\n     * ```\n     *\n     * @memberof IgxListItemComponent\n     */\n    @HostBinding('style.display')\n    public get display(): string {\n        return this.hidden ? 'none' : '';\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('click', ['$event'])\n    public clicked(evt) {\n        this.list.itemClicked.emit({ item: this, event: evt, direction: this.lastPanDir });\n        this.lastPanDir = IgxListPanState.NONE;\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('panstart')\n    public panStart() {\n        if (this.isTrue(this.isHeader)) {\n            return;\n        }\n        if (!this.isTrue(this.list.allowLeftPanning) && !this.isTrue(this.list.allowRightPanning)) {\n            return;\n        }\n\n        this.list.startPan.emit({ item: this, direction: this.lastPanDir, keepitem: false });\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('pancancel')\n    public panCancel() {\n        this.resetPanPosition();\n        this.list.endPan.emit({ item: this, direction: this.lastPanDir, keepItem: false });\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('panmove', ['$event'])\n    public panMove(ev) {\n        if (this.isTrue(this.isHeader)) {\n            return;\n        }\n        if (!this.isTrue(this.list.allowLeftPanning) && !this.isTrue(this.list.allowRightPanning)) {\n            return;\n        }\n        const isPanningToLeft = ev.deltaX < 0;\n        if (isPanningToLeft && this.isTrue(this.list.allowLeftPanning)) {\n            this.showLeftPanTemplate();\n            this.setContentElementLeft(Math.max(this.maxLeft, ev.deltaX));\n        } else if (!isPanningToLeft && this.isTrue(this.list.allowRightPanning)) {\n            this.showRightPanTemplate();\n            this.setContentElementLeft(Math.min(this.maxRight, ev.deltaX));\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('panend')\n    public panEnd() {\n        if (this.isTrue(this.isHeader)) {\n            return;\n        }\n        if (!this.isTrue(this.list.allowLeftPanning) && !this.isTrue(this.list.allowRightPanning)) {\n            return;\n        }\n\n        // the translation offset of the current list item content\n        const relativeOffset = this.panOffset;\n        const widthTriggeringGrip = this.width * this.list.panEndTriggeringThreshold;\n\n        if (relativeOffset === 0) {\n            return; // no panning has occured\n        }\n\n        const dir = relativeOffset > 0 ? IgxListPanState.RIGHT : IgxListPanState.LEFT;\n        this.lastPanDir = dir;\n\n        const args = { item: this, direction: dir, keepItem: false };\n        this.list.endPan.emit(args);\n\n        const oldPanState = this._panState;\n        if (Math.abs(relativeOffset) < widthTriggeringGrip) {\n            this.resetPanPosition();\n            this.list.resetPan.emit(this);\n            return;\n        }\n\n        if (dir === IgxListPanState.LEFT) {\n            this.list.leftPan.emit(args);\n        } else {\n            this.list.rightPan.emit(args);\n        }\n\n        if (args.keepItem === true) {\n            this.setContentElementLeft(0);\n            this._panState = IgxListPanState.NONE;\n        } else {\n            if (dir === IgxListPanState.LEFT) {\n                this.setContentElementLeft(this.maxLeft);\n                this._panState = IgxListPanState.LEFT;\n            } else {\n                this.setContentElementLeft(this.maxRight);\n                this._panState = IgxListPanState.RIGHT;\n            }\n        }\n\n        if (oldPanState !== this._panState) {\n            const args2 = { oldState: oldPanState, newState: this._panState, item: this };\n            this.list.panStateChange.emit(args2);\n        }\n        this.hideLeftAndRightPanTemplates();\n    }\n\n    /**\n     * @hidden\n     */\n    private showLeftPanTemplate() {\n        this.setLeftAndRightTemplatesVisibility('visible', 'hidden');\n    }\n\n    /**\n     * @hidden\n     */\n    private showRightPanTemplate() {\n        this.setLeftAndRightTemplatesVisibility('hidden', 'visible');\n    }\n\n    /**\n     * @hidden\n     */\n    private hideLeftAndRightPanTemplates() {\n        setTimeout(() => {\n            this.setLeftAndRightTemplatesVisibility('hidden', 'hidden');\n        }, 500);\n    }\n\n    /**\n     * @hidden\n     */\n    private setLeftAndRightTemplatesVisibility(leftVisibility, rightVisibility) {\n        if (this.leftPanningTemplateElement && this.leftPanningTemplateElement.nativeElement) {\n            this.leftPanningTemplateElement.nativeElement.style.visibility = leftVisibility;\n        }\n        if (this.rightPanningTemplateElement && this.rightPanningTemplateElement.nativeElement) {\n            this.rightPanningTemplateElement.nativeElement.style.visibility = rightVisibility;\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    private setContentElementLeft(value: number) {\n        this.panOffset = value;\n        this.contentElement.style.transform = 'translateX(' + value + 'px)';\n    }\n\n    /**\n     * @hidden\n     */\n    private isTrue(value: boolean): boolean {\n        if (typeof (value) === 'boolean') {\n            return value;\n        } else {\n            return value === 'true';\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    private resetPanPosition() {\n        this.setContentElementLeft(0);\n        this._panState = IgxListPanState.NONE;\n        this.hideLeftAndRightPanTemplates();\n    }\n}\n","\n@if (!isHeader && list.listItemLeftPanningTemplate) {\n    <div #leftPanningTmpl class=\"igx-list__item-right\"\n        [style.width.rem]=\"offsetWidthInRem\" [style.height.rem]=\"offsetHeightInRem\">\n        <ng-container *ngTemplateOutlet=\"list.listItemLeftPanningTemplate.template; context: context\">\n        </ng-container>\n    </div>\n}\n\n@if (!isHeader && list.listItemRightPanningTemplate) {\n    <div #rightPanningTmpl class=\"igx-list__item-left\"\n        [style.width.rem]=\"offsetWidthInRem\" [style.height.rem]=\"offsetHeightInRem\">\n        <ng-container *ngTemplateOutlet=\"list.listItemRightPanningTemplate.template; context: context\">\n        </ng-container>\n    </div>\n}\n\n<ng-template #itemsContent>\n    <ng-content></ng-content>\n</ng-template>\n\n<ng-template #itemThumbnails>\n    <div class=\"igx-list__item-thumbnail\">\n        <ng-content select=\"[igxListThumbnail], igx-list__item-thumbnail, igx-avatar\"></ng-content>\n    </div>\n</ng-template>\n\n<ng-template #itemLines>\n    <div class=\"igx-list__item-lines\">\n        <ng-content select=\"[igxListLine], .igx-list__item-lines, [igxListLineTitle], [igxListLineSubTitle], .igx-list__item-line-title, .igx-list__item-line-subtitle\"></ng-content>\n    </div>\n</ng-template>\n\n<ng-template #itemActions>\n    <div class=\"igx-list__item-actions\">\n        <ng-content select=\"[igxListAction], .igx-list__item-actions\"></ng-content>\n    </div>\n</ng-template>\n\n@if (isHeader) {\n    <ng-container *ngTemplateOutlet=\"itemsContent\"></ng-container>\n}\n\n@if (!isHeader) {\n    <div class=\"igx-list__item-content\">\n        <ng-container *ngTemplateOutlet=\"itemThumbnails\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"itemLines\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"itemActions\"></ng-container>\n        <ng-container *ngTemplateOutlet=\"itemsContent\"></ng-container>\n    </div>\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n    Component,\n    ContentChild,\n    ContentChildren,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    HostBinding,\n    Input,\n    Output,\n    QueryList,\n    TemplateRef,\n    ViewChild,\n    Directive,\n    booleanAttribute,\n    inject,\n    DestroyRef\n} from '@angular/core';\n\n\n\nimport { IgxListItemComponent } from './list-item.component';\nimport {\n    IgxListBaseDirective,\n    IgxDataLoadingTemplateDirective,\n    IgxEmptyListTemplateDirective,\n    IgxListPanState,\n    IgxListItemLeftPanningTemplateDirective,\n    IgxListItemRightPanningTemplateDirective\n} from './list.common';\nimport { IBaseEventArgs } from 'igniteui-angular/core';\nimport { IListResourceStrings, ListResourceStringsEN } from 'igniteui-angular/core';\nimport { getCurrentResourceStrings, onResourceChangeHandle } from 'igniteui-angular/core';\n\nlet NEXT_ID = 0;\n\n/**\n * Interface for the panStateChange igxList event arguments\n */\nexport interface IPanStateChangeEventArgs extends IBaseEventArgs {\n    oldState: IgxListPanState;\n    newState: IgxListPanState;\n    item: IgxListItemComponent;\n}\n\n/**\n * Interface for the listItemClick igxList event arguments\n */\nexport interface IListItemClickEventArgs extends IBaseEventArgs {\n    item: IgxListItemComponent;\n    event: Event;\n    direction: IgxListPanState;\n}\n\n/**\n * Interface for the listItemPanning igxList event arguments\n */\nexport interface IListItemPanningEventArgs extends IBaseEventArgs {\n    item: IgxListItemComponent;\n    direction: IgxListPanState;\n    keepItem: boolean;\n}\n\n/**\n * igxListThumbnail is container for the List media\n * Use it to wrap anything you want to be used as a thumbnail.\n */\n@Directive({\n    selector: '[igxListThumbnail]',\n    standalone: true\n})\nexport class IgxListThumbnailDirective { }\n\n/**\n * igxListAction is container for the List action\n * Use it to wrap anything you want to be used as a list action: icon, checkbox...\n */\n@Directive({\n    selector: '[igxListAction]',\n    standalone: true\n})\nexport class IgxListActionDirective { }\n\n/**\n * igxListLine is container for the List text content\n * Use it to wrap anything you want to be used as a plane text.\n */\n@Directive({\n    selector: '[igxListLine]',\n    standalone: true\n})\nexport class IgxListLineDirective { }\n\n/**\n * igxListLineTitle is a directive that add class to the target element\n * Use it to make anything to look like list Title.\n */\n@Directive({\n    selector: '[igxListLineTitle]',\n    standalone: true\n})\nexport class IgxListLineTitleDirective {\n    @HostBinding('class.igx-list__item-line-title')\n    public cssClass = 'igx-list__item-line-title';\n}\n\n/**\n * igxListLineSubTitle is a directive that add class to the target element\n * Use it to make anything to look like list Subtitle.\n */\n@Directive({\n    selector: '[igxListLineSubTitle]',\n    standalone: true\n})\nexport class IgxListLineSubTitleDirective {\n    @HostBinding('class.igx-list__item-line-subtitle')\n    public cssClass = 'igx-list__item-line-subtitle';\n}\n\n/**\n * Displays a collection of data items in a templatable list format\n *\n * @igxModule IgxListModule\n *\n * @igxTheme igx-list-theme\n *\n * @igxKeywords list, data\n *\n * @igxGroup Grids & Lists\n *\n * @remarks\n * The Ignite UI List displays rows of items and supports one or more header items as well as search and filtering\n * of list items. Each list item is completely templatable and will support any valid HTML or Angular component.\n *\n * @example\n * ```html\n * <igx-list>\n *   <igx-list-item isHeader=\"true\">Contacts</igx-list-item>\n *   <igx-list-item *ngFor=\"let contact of contacts\">\n *     <span class=\"name\">{{ contact.name }}</span>\n *     <span class=\"phone\">{{ contact.phone }}</span>\n *   </igx-list-item>\n * </igx-list>\n * ```\n */\n@Component({\n    selector: 'igx-list',\n    templateUrl: 'list.component.html',\n    providers: [{ provide: IgxListBaseDirective, useExisting: IgxListComponent }],\n    imports: [NgTemplateOutlet]\n})\nexport class IgxListComponent extends IgxListBaseDirective {\n    public element = inject(ElementRef);\n    private destroyRef = inject(DestroyRef);\n\n    /**\n     * Returns a collection of all items and headers in the list.\n     *\n     * @example\n     * ```typescript\n     * let listChildren: QueryList = this.list.children;\n     * ```\n     */\n    @ContentChildren(forwardRef(() => IgxListItemComponent), { descendants: true })\n    public override children: QueryList<IgxListItemComponent>;\n\n    /**\n     * Sets/gets the empty list template.\n     *\n     * @remarks\n     * This template is used by IgxList in case there are no list items\n     * defined and `isLoading` is set to `false`.\n     *\n     * @example\n     * ```html\n     * <igx-list>\n     *   <ng-template igxEmptyList>\n     *     <p class=\"empty\">No contacts! :(</p>\n     *   </ng-template>\n     * </igx-list>\n     * ```\n     * ```typescript\n     * let emptyTemplate = this.list.emptyListTemplate;\n     * ```\n     */\n    @ContentChild(IgxEmptyListTemplateDirective, { read: IgxEmptyListTemplateDirective })\n    public emptyListTemplate: IgxEmptyListTemplateDirective;\n\n    /**\n     * Sets/gets the list loading template.\n     *\n     * @remarks\n     * This template is used by IgxList in case there are no list items defined and `isLoading` is set to `true`.\n     *\n     * @example\n     * ```html\n     * <igx-list>\n     *   <ng-template igxDataLoading>\n     *     <p>Patience, we are currently loading your data...</p>\n     *   </ng-template>\n     * </igx-list>\n     * ```\n     * ```typescript\n     * let loadingTemplate = this.list.dataLoadingTemplate;\n     * ```\n     */\n    @ContentChild(IgxDataLoadingTemplateDirective, { read: IgxDataLoadingTemplateDirective })\n    public dataLoadingTemplate: IgxDataLoadingTemplateDirective;\n\n    /**\n     * Sets/gets the template for left panning a list item.\n     *\n     * @remarks\n     * Default value is `null`.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowLeftPanning]=\"true\">\n     *   <ng-template igxListItemLeftPanning>\n     *     <igx-icon>delete</igx-icon>Delete\n     *   </ng-template>\n     * </igx-list>\n     * ```\n     * ```typescript\n     * let itemLeftPanTmpl = this.list.listItemLeftPanningTemplate;\n     * ```\n     */\n    @ContentChild(IgxListItemLeftPanningTemplateDirective, { read: IgxListItemLeftPanningTemplateDirective })\n    public override listItemLeftPanningTemplate: IgxListItemLeftPanningTemplateDirective;\n\n    /**\n     * Sets/gets the template for right panning a list item.\n     *\n     * @remarks\n     * Default value is `null`.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowRightPanning] = \"true\">\n     *   <ng-template igxListItemRightPanning>\n     *     <igx-icon>call</igx-icon>Dial\n     *   </ng-template>\n     * </igx-list>\n     * ```\n     * ```typescript\n     * let itemRightPanTmpl = this.list.listItemRightPanningTemplate;\n     * ```\n     */\n    @ContentChild(IgxListItemRightPanningTemplateDirective, { read: IgxListItemRightPanningTemplateDirective })\n    public override listItemRightPanningTemplate: IgxListItemRightPanningTemplateDirective;\n\n    /**\n     * Provides a threshold after which the item's panning will be completed automatically.\n     *\n     * @remarks\n     * By default this property is set to 0.5 which is 50% of the list item's width.\n     *\n     * @example\n     * ```html\n     * <igx-list [panEndTriggeringThreshold]=\"0.8\"></igx-list>\n     * ```\n     */\n    @Input()\n    public override panEndTriggeringThreshold = 0.5;\n\n    /**\n     * Sets/gets the `id` of the list.\n     *\n     * @remarks\n     * If not set, the `id` of the first list component will be `\"igx-list-0\"`.\n     *\n     * @example\n     * ```html\n     * <igx-list id=\"my-first-list\"></igx-list>\n     * ```\n     * ```typescript\n     * let listId = this.list.id;\n     * ```\n     */\n    @HostBinding('attr.id')\n    @Input()\n    public id = `igx-list-${NEXT_ID++}`;\n\n    /**\n     * Sets/gets whether the left panning of an item is allowed.\n     *\n     * @remarks\n     * Default value is `false`.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowLeftPanning]=\"true\"></igx-list>\n     * ```\n     * ```typescript\n     * let isLeftPanningAllowed = this.list.allowLeftPanning;\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public override allowLeftPanning = false;\n\n    /**\n     * Sets/gets whether the right panning of an item is allowed.\n     *\n     * @remarks\n     * Default value is `false`.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowRightPanning]=\"true\"></igx-list>\n     * ```\n     * ```typescript\n     * let isRightPanningAllowed = this.list.allowRightPanning;\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public override allowRightPanning = false;\n\n    /**\n     * Sets/gets whether the list is currently loading data.\n     *\n     * @remarks\n     * Set it to display the dataLoadingTemplate while data is being retrieved.\n     * Default value is `false`.\n     *\n     * @example\n     * ```html\n     *  <igx-list [isLoading]=\"true\"></igx-list>\n     * ```\n     * ```typescript\n     * let isLoading = this.list.isLoading;\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public isLoading = false;\n\n    /**\n     * Event emitted when a left pan gesture is executed on a list item.\n     *\n     * @remarks\n     * Provides a reference to an object of type `IListItemPanningEventArgs` as an event argument.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowLeftPanning]=\"true\" (leftPan)=\"leftPan($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override leftPan = new EventEmitter<IListItemPanningEventArgs>();\n\n    /**\n     * Event emitted when a right pan gesture is executed on a list item.\n     *\n     * @remarks\n     * Provides a reference to an object of type `IListItemPanningEventArgs` as an event argument.\n     *\n     * @example\n     * ```html\n     * <igx-list [allowRightPanning]=\"true\" (rightPan)=\"rightPan($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override rightPan = new EventEmitter<IListItemPanningEventArgs>();\n\n    /**\n     * Event emitted when a pan gesture is started.\n     *\n     * @remarks\n     * Provides a reference to an object of type `IListItemPanningEventArgs` as an event argument.\n     *\n     * @example\n     * ```html\n     * <igx-list (startPan)=\"startPan($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override startPan = new EventEmitter<IListItemPanningEventArgs>();\n\n    /**\n     * Event emitted when a pan gesture is completed or canceled.\n     *\n     * @remarks\n     * Provides a reference to an object of type `IListItemPanningEventArgs` as an event argument.\n     *\n     * @example\n     * ```html\n     * <igx-list (endPan)=\"endPan($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override endPan = new EventEmitter<IListItemPanningEventArgs>();\n\n    /**\n     * Event emitted when a pan item is returned to its original position.\n     *\n     * @remarks\n     * Provides a reference to an object of type `IgxListComponent` as an event argument.\n     *\n     * @example\n     * ```html\n     * <igx-list (resetPan)=\"resetPan($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override resetPan = new EventEmitter<IgxListComponent>();\n\n    /**\n     *\n     * Event emitted when a pan gesture is executed on a list item.\n     *\n     * @remarks\n     * Provides references to the `IgxListItemComponent` and `IgxListPanState` as event arguments.\n     *\n     * @example\n     * ```html\n     * <igx-list (panStateChange)=\"panStateChange($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override panStateChange = new EventEmitter<IPanStateChangeEventArgs>();\n\n    /**\n     * Event emitted when a list item is clicked.\n     *\n     * @remarks\n     * Provides references to the `IgxListItemComponent` and `Event` as event arguments.\n     *\n     * @example\n     * ```html\n     * <igx-list (itemClicked)=\"onItemClicked($event)\"></igx-list>\n     * ```\n     */\n    @Output()\n    public override itemClicked = new EventEmitter<IListItemClickEventArgs>();\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @ViewChild('defaultEmptyList', { read: TemplateRef, static: true })\n    protected defaultEmptyListTemplate: TemplateRef<any>;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @ViewChild('defaultDataLoading', { read: TemplateRef, static: true })\n    protected defaultDataLoadingTemplate: TemplateRef<any>;\n\n    private _resourceStrings: IListResourceStrings = null;\n    private _defaultResourceStrings = getCurrentResourceStrings(ListResourceStringsEN);\n\n    /**\n     * Sets the resource strings.\n     * By default it uses EN resources.\n     */\n    @Input()\n    public set resourceStrings(value: IListResourceStrings) {\n        this._resourceStrings = Object.assign({}, this._resourceStrings, value);\n    }\n\n    /**\n     * Returns the resource strings.\n     */\n    public get resourceStrings(): IListResourceStrings {\n        return this._resourceStrings || this._defaultResourceStrings;\n    }\n\n    constructor() {\n        super();\n        onResourceChangeHandle(this.destroyRef, () => {\n            this._defaultResourceStrings = getCurrentResourceStrings(ListResourceStringsEN, false);\n        }, this);\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    protected get sortedChildren(): IgxListItemComponent[] {\n        if (this.children !== undefined) {\n            return this.children.toArray()\n                .sort((a: IgxListItemComponent, b: IgxListItemComponent) => a.index - b.index);\n        }\n        return null;\n    }\n\n    private _role = 'list';\n\n    /**\n     * Gets/Sets the `role` attribute value.\n     *\n     * @example\n     * ```typescript\n     * let listRole =  this.list.role;\n     * ```\n     */\n    @HostBinding('attr.role')\n    @Input()\n    public get role() {\n        return this._role;\n    }\n\n    public set role(val: string) {\n        this._role = val;\n    }\n\n    /**\n     * Gets a boolean indicating if the list is empty.\n     *\n     * @example\n     * ```typescript\n     * let isEmpty =  this.list.isListEmpty;\n     * ```\n     */\n    @HostBinding('class.igx-list--empty')\n    public get isListEmpty(): boolean {\n        return !this.children || this.children.length === 0;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostBinding('class.igx-list')\n    public get cssClass(): boolean {\n        return !this.isListEmpty;\n    }\n\n    /**\n     * Gets the list `items` excluding the header ones.\n     *\n     * @example\n     * ```typescript\n     * let listItems: IgxListItemComponent[] = this.list.items;\n     * ```\n     */\n    public get items(): IgxListItemComponent[] {\n        const items: IgxListItemComponent[] = [];\n        if (this.children !== undefined) {\n            for (const child of this.sortedChildren) {\n                if (!child.isHeader) {\n                    items.push(child);\n                }\n            }\n        }\n        return items;\n    }\n\n    /**\n     * Gets the header list `items`.\n     *\n     * @example\n     * ```typescript\n     * let listHeaders: IgxListItemComponent[] =  this.list.headers;\n     * ```\n     */\n    public get headers(): IgxListItemComponent[] {\n        const headers: IgxListItemComponent[] = [];\n        if (this.children !== undefined) {\n            for (const child of this.children.toArray()) {\n                if (child.isHeader) {\n                    headers.push(child);\n                }\n            }\n        }\n        return headers;\n    }\n\n    /**\n     * Gets the `context` object of the template binding.\n     *\n     * @remarks\n     * Gets the `context` object which represents the `template context` binding into the `list container`\n     * by providing the `$implicit` declaration which is the `IgxListComponent` itself.\n     *\n     * @example\n     * ```typescript\n     * let listComponent =  this.list.context;\n     * ```\n     */\n    public get context(): any {\n        return {\n            $implicit: this\n        };\n    }\n\n    /**\n     * Gets a `TemplateRef` to the currently used template.\n     *\n     * @example\n     * ```typescript\n     * let listTemplate = this.list.template;\n     * ```\n     */\n    public get template(): TemplateRef<any> {\n        if (this.isLoading) {\n            return this.dataLoadingTemplate ? this.dataLoadingTemplate.template : this.defaultDataLoadingTemplate;\n        } else {\n            return this.emptyListTemplate ? this.emptyListTemplate.template : this.defaultEmptyListTemplate;\n        }\n    }\n}\n\n/**\n * @hidden\n */\n\n","<ng-content></ng-content>\n\n<ng-template #defaultEmptyList>\n    <article class=\"igx-list__message\">\n        {{resourceStrings.igx_list_no_items}}\n    </article>\n</ng-template>\n\n<ng-template #defaultDataLoading>\n    <article class=\"igx-list__message\">\n        {{resourceStrings.igx_list_loading}}\n    </article>\n</ng-template>\n\n@if (!children || children.length === 0 || isLoading) {\n    <ng-container *ngTemplateOutlet=\"template; context: context\">\n    </ng-container>\n}\n","import { IgxListItemComponent } from './list-item.component';\nimport { IgxDataLoadingTemplateDirective, IgxEmptyListTemplateDirective, IgxListItemLeftPanningTemplateDirective, IgxListItemRightPanningTemplateDirective } from './list.common';\nimport { IgxListActionDirective, IgxListComponent, IgxListLineDirective, IgxListLineSubTitleDirective, IgxListLineTitleDirective, IgxListThumbnailDirective } from './list.component';\n\nexport * from './list.component';\nexport {\n    IgxListBaseDirective,\n    IgxListPanState,\n    IgxEmptyListTemplateDirective,\n    IgxDataLoadingTemplateDirective,\n    IgxListItemLeftPanningTemplateDirective,\n    IgxListItemRightPanningTemplateDirective\n} from './list.common';\nexport * from './list-item.component';\n\n/* NOTE: List directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_LIST_DIRECTIVES = [\n    IgxListComponent,\n    IgxListItemComponent,\n    IgxListThumbnailDirective,\n    IgxListActionDirective,\n    IgxListLineDirective,\n    IgxListLineTitleDirective,\n    IgxListLineSubTitleDirective,\n    IgxDataLoadingTemplateDirective,\n    IgxEmptyListTemplateDirective,\n    IgxListItemLeftPanningTemplateDirective,\n    IgxListItemRightPanningTemplateDirective\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IGX_LIST_DIRECTIVES } from './public_api';\n\n/**\n * @hidden\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [\n        ...IGX_LIST_DIRECTIVES\n    ],\n    exports: [\n        ...IGX_LIST_DIRECTIVES\n    ]\n})\n\nexport class IgxListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.IgxListComponent","i2.IgxListItemComponent","i1.IgxListThumbnailDirective","i1.IgxListActionDirective","i1.IgxListLineDirective","i1.IgxListLineTitleDirective","i1.IgxListLineSubTitleDirective","i3.IgxDataLoadingTemplateDirective","i3.IgxEmptyListTemplateDirective","i3.IgxListItemLeftPanningTemplateDirective","i3.IgxListItemRightPanningTemplateDirective"],"mappings":"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"}