{"version":3,"file":"fundamental-ngx-core-grid-list.mjs","sources":["../../../../libs/core/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.ts","../../../../libs/core/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.html","../../../../libs/core/grid-list/components/grid-list-footer/grid-list-footer.component.ts","../../../../libs/core/grid-list/components/grid-list-footer/grid-list-footer.component.html","../../../../libs/core/grid-list/components/grid-list-group-header/grid-list-group-header.component.ts","../../../../libs/core/grid-list/components/grid-list-group-header/grid-list-group-header.component.html","../../../../libs/core/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.ts","../../../../libs/core/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.html","../../../../libs/core/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.ts","../../../../libs/core/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.html","../../../../libs/core/grid-list/directives/grid-list-item-body.directive.ts","../../../../libs/core/grid-list/helpers/parse-layout-pattern.ts","../../../../libs/core/grid-list/models/grid-list-selection.models.ts","../../../../libs/core/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.ts","../../../../libs/core/grid-list/components/grid-list/grid-list-base.component.ts","../../../../libs/core/grid-list/components/grid-list-item/grid-list-item.component.ts","../../../../libs/core/grid-list/components/grid-list-item/grid-list-item.component.html","../../../../libs/core/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.ts","../../../../libs/core/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.html","../../../../libs/core/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.ts","../../../../libs/core/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.html","../../../../libs/core/grid-list/components/grid-list-title-bar/grid-list-title-bar.directive.ts","../../../../libs/core/grid-list/components/grid-list/grid-list.component.ts","../../../../libs/core/grid-list/components/grid-list/grid-list.component.html","../../../../libs/core/grid-list/directives/grid-list-item-image.directive.ts","../../../../libs/core/grid-list/grid-list.module.ts","../../../../libs/core/grid-list/fundamental-ngx-core-grid-list.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Output } from '@angular/core';\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ToolbarComponent, ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\n\n@Component({\n    selector: 'fd-grid-list-filter-bar',\n    templateUrl: './grid-list-filter-bar.component.html',\n    host: {\n        class: 'fd-col fd-col--12'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ToolbarComponent, ToolbarSpacerDirective, IconComponent, FdTranslatePipe]\n})\nexport class GridListFilterBarComponent {\n    /** Event is thrown, when the control button is clicked */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() readonly close = new EventEmitter<void>();\n}\n","<fd-toolbar\n    fdType=\"info\"\n    [active]=\"true\"\n    [tabindex]=\"0\"\n    class=\"fd-grid-list__filter\"\n    [attr.aria-label]=\"('coreGridList.filterBarCancelButtonTitle' | fdTranslate)()\"\n    (click)=\"close.emit()\"\n    (keydown.space)=\"$event.preventDefault()\"\n    (keyup.space)=\"close.emit()\"\n    (keydown.enter)=\"close.emit()\"\n>\n    <ng-content></ng-content>\n\n    <fd-toolbar-spacer></fd-toolbar-spacer>\n\n    <fd-icon glyph=\"decline\"></fd-icon>\n</fd-toolbar>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'fd-grid-list-footer',\n    templateUrl: './grid-list-footer.component.html',\n    host: {\n        class: 'fd-col fd-col--12'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class GridListFooterComponent {}\n","<div tabindex=\"0\" class=\"fd-grid-list__footer\">\n    <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n@Component({\n    selector: 'fd-grid-list-group-header',\n    templateUrl: './grid-list-group-header.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-col fd-col--12'\n    },\n    standalone: true\n})\nexport class GridListGroupHeaderComponent {\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabel: Nullable<string>;\n}\n","<div class=\"fd-grid-list__group-header fd-grid-list__group-header--no-margin\" [attr.aria-label]=\"ariaLabel\">\n    <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n    selector: 'fd-grid-list-item-footer-bar',\n    templateUrl: './grid-list-item-footer-bar.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class GridListItemFooterBarComponent {\n    /** @hidden */\n    @ViewChild(TemplateRef)\n    contentTemplateRef: TemplateRef<any>;\n}\n","<ng-template>\n    <ng-content></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n    selector: 'fd-grid-list-item-toolbar',\n    templateUrl: './grid-list-item-toolbar.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class GridListItemToolbarComponent {\n    /** @hidden */\n    @ViewChild(TemplateRef)\n    contentTemplateRef: TemplateRef<any>;\n}\n","<ng-template>\n    <ng-content></ng-content>\n</ng-template>\n","import { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-grid-list-item-body]',\n    standalone: true\n})\nexport class GridListItemBodyDirective {\n    /** @hidden */\n    constructor(public readonly templateRef: TemplateRef<any>) {}\n}\n","interface ParseLayout {\n    [key: string]: {\n        pattern: string;\n        value: number;\n        size: string;\n    };\n}\n\n/** Parse layout pattern */\nexport function parseLayoutPattern(pattern: string | undefined, isBaseLayout = true): string[] {\n    const parseLayout = pattern && validateAndParseLayoutPattern(pattern, isBaseLayout);\n\n    if (!parseLayout) {\n        throw new Error('Invalid layoutPattern.');\n    }\n\n    return generateLayoutClasses(parseLayout);\n}\n\nfunction validateAndParseLayoutPattern(pattern: string, isBaseLayout: boolean): ParseLayout | undefined {\n    const columnsNames = 'XL|L|M|S';\n    const columnNumbers = isBaseLayout ? '12|6|4|3|2|1' : '12|11|10|9|8|7|6|5|4|3|2|1';\n    const reg = new RegExp(`(?!-)((${columnsNames})(${columnNumbers}))`, 'gi');\n    const match = pattern.match(reg);\n    if (!match) {\n        return;\n    }\n\n    return match.reduce((res, item) => {\n        const size = item.replace(reg, '$2').toLocaleLowerCase();\n        const num = +item.replace(reg, '$3');\n\n        res[size] = {\n            pattern: item,\n            size,\n            value: isBaseLayout ? 12 / num : num\n        };\n\n        return res;\n    }, {});\n}\n\nfunction generateLayoutClasses({ xl, l, m, s }: ParseLayout): string[] {\n    const classes: string[] = ['fd-col'];\n\n    if (s) {\n        classes.push(`fd-col--${s.value}`);\n    }\n\n    if (m) {\n        classes.push(`fd-col-md--${m.value}`);\n    }\n\n    if (l) {\n        classes.push(`fd-col-lg--${l.value}`);\n    }\n\n    if (xl) {\n        classes.push(`fd-col-xl--${xl.value}`);\n    }\n\n    return classes;\n}\n","export type GridListSelectionMode =\n    | 'none'\n    | 'delete'\n    | 'singleSelect'\n    | 'singleSelectLeft'\n    | 'singleSelectRight'\n    | 'multiSelect';\n\nexport enum GridListSelectionActions {\n    ADD = 'add',\n    REMOVE = 'remove'\n}\n\nexport enum GridListSelectionModeEnum {\n    NONE = 'none',\n    DELETE = 'delete',\n    SINGLE_SELECT = 'singleSelect',\n    SINGLE_SELECT_LEFT = 'singleSelectLeft',\n    SINGLE_SELECT_RIGHT = 'singleSelectRight',\n    MULTI_SELECT = 'multiSelect'\n}\n\nexport interface GridListSelectionEvent<T> {\n    /** currently selected items */\n    selection: T[];\n    /** items added */\n    added: T[];\n    /** items removed */\n    removed: T[];\n    /** indexes location of additions or removals */\n    index: number[];\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ToolbarSpacerDirective } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n    selector: 'fd-grid-list-title-bar-spacer',\n    template: '',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class GridListTitleBarSpacerComponent extends ToolbarSpacerDirective {}\n","import { Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { GridListSelectionActions, GridListSelectionEvent } from '../../models/grid-list-selection.models';\n\n@Directive()\nexport abstract class GridList<T> {\n    /** an observable of selection state event */\n    abstract _selectedItems$: Observable<GridListSelectionEvent<T>>;\n    /** method to be used by list items to register the selection */\n    abstract setSelectedItem(\n        item: T,\n        componentIndex: number,\n        action?: GridListSelectionActions | null,\n        event?: MouseEvent\n    ): void;\n}\n","import { ENTER, ESCAPE, F2, F7, MAC_ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    HostBinding,\n    Input,\n    OnDestroy,\n    Output,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n    booleanAttribute,\n    signal\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { KeyUtil, Nullable, TabbableElementService } from '@fundamental-ngx/cdk/utils';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport {\n    ContentDensityModule,\n    ContentDensityObserver,\n    contentDensityObserverProviders\n} from '@fundamental-ngx/core/content-density';\n\nimport { IconComponent } from '@fundamental-ngx/core/icon';\nimport { ObjectStatusComponent } from '@fundamental-ngx/core/object-status';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { GridListItemBodyDirective } from '../../directives/grid-list-item-body.directive';\nimport { parseLayoutPattern } from '../../helpers/parse-layout-pattern';\nimport {\n    GridListSelectionActions,\n    GridListSelectionMode,\n    GridListSelectionModeEnum\n} from '../../models/grid-list-selection.models';\nimport { GridListItemFooterBarComponent } from '../grid-list-item-footer-bar/grid-list-item-footer-bar.component';\nimport { GridListItemToolbarComponent } from '../grid-list-item-toolbar/grid-list-item-toolbar.component';\nimport { GridListTitleBarSpacerComponent } from '../grid-list-title-bar-spacer/grid-list-title-bar-spacer.component';\nimport { GridList } from '../grid-list/grid-list-base.component';\n\nlet gridListItemUniqueId = 0;\n\nexport interface GridListItemOutputEvent<T> {\n    index?: number;\n    value?: T;\n}\n\nexport type GridListItemType = 'inactive' | 'active' | 'detail' | 'detailsAndActive' | 'navigation';\nexport type GridListItemState = 'unread' | 'locked' | 'error' | 'draft';\nexport type GridListItemStatus = 'success' | 'warning' | 'error' | 'neutral';\n\n@Component({\n    selector: 'fd-grid-list-item',\n    templateUrl: './grid-list-item.component.html',\n    styleUrl: './grid-list-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        NgTemplateOutlet,\n        GridListTitleBarSpacerComponent,\n        ButtonComponent,\n        IconComponent,\n        FormsModule,\n        ObjectStatusComponent,\n        FdTranslatePipe,\n        ContentDensityModule\n    ],\n    providers: [contentDensityObserverProviders()]\n})\nexport class GridListItemComponent<T> implements AfterViewInit, OnDestroy {\n    /** id for the Element */\n    @Input()\n    id = `fd-grid-list-item-${gridListItemUniqueId++}`;\n\n    /** width of the element */\n    @Input()\n    @HostBinding('style.max-width')\n    @HostBinding('style.min-width')\n    width: string;\n\n    /**\n     * specify the cell layout in the format `XLn-Ln-Mn-Sn` where n is\n     * the number of occupied columns and n can be different for each size.\n     */\n    @Input()\n    set layoutItemPattern(value: Nullable<string>) {\n        this.gridLayoutClasses = value ? parseLayoutPattern(value, false) : [];\n    }\n\n    /**\n     * Defines the status of Grid List Item\n     * (Statuses: success | warning | error | neutral)\n     */\n    @Input()\n    status?: GridListItemStatus;\n\n    /** Sets number of sub items */\n    @Input()\n    counter: Nullable<number>;\n\n    /**\n     * Value field stores information for radio button value, checkbox button and for GridListSelectionEvent\n     * The field is mandatory for modes like singleSelect, singleSelectLeft, singleSelectRight or multiSelect\n     */\n    @Input()\n    value?: T;\n\n    /** Whether click on the custom toolbar is disabled */\n    @Input()\n    disableToolbarClick = false;\n\n    /** Allows an item to be selected programmatically */\n    @Input({ transform: booleanAttribute })\n    selected = false;\n\n    /** Remove the padding from the Item body */\n    @Input()\n    noPadding = false;\n\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabelledBy: Nullable<string>;\n\n    /**\n     * Defines the type of Grid List Item\n     * Types:\n     * - active: indicates that the item is clickable via active feedback when item is pressed\n     * - detail: enables detail button of the list item that fires event.\n     * - detailsAndActive: enables \"detail\" and \"active\" enumerations together\n     * - inactive: indicates the list item does not have any active feedback when item is pressed\n     * - navigation: indicates the list item is navigable to show extra information about the item\n     * Default: inactive\n     */\n    @Input()\n    set type(value: Nullable<GridListItemType>) {\n        this._type = value ?? 'inactive';\n    }\n\n    get type(): GridListItemType {\n        return this._type;\n    }\n\n    /**\n     * Sets the state of Grid List Item\n     * (States: unread | error | locked | draft)\n     */\n    @Input()\n    state?: GridListItemState;\n\n    /**\n     * The navigated state of the list item.\n     * If set to true, a navigation indicator is displayed at the end of the list item.\n     */\n    @Input()\n    isNavigated = false;\n\n    /** Title of the item */\n    @Input()\n    title: string;\n\n    /**\n     * Aria-level of the title\n     * Available options: 1, 2, 3, 4, 5, 6\n     * Default: 4\n     */\n    @Input()\n    titleLevel: 1 | 2 | 3 | 4 | 5 | 6 = 4;\n\n    /** Description of the item */\n    @Input()\n    description: string;\n\n    /** When set to true the grid list item's height will be set to auto */\n    @Input()\n    autoHeight = false;\n\n    /**\n     * Event is thrown, when type is active\n     * and item is pressed\n     */\n    @Output()\n    press = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown, when type is detail or detailsAndActive\n     * and Detail button was pressed\n     */\n    @Output()\n    detail = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown, when mode delete\n     * and Delete button was pressed\n     */\n    @Output()\n    delete = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown, when type is navigation\n     * and Navigate button was pressed\n     */\n    @Output()\n    navigate = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown on grid list item click.\n     */\n    @Output()\n    cardClick = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown, when state is error, not used GridListItemFooterBarComponent\n     * and Draft button was pressed\n     */\n    @Output()\n    draft = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /**\n     * Event is thrown, when state is locked, not used GridListItemFooterBarComponent\n     * and Locked button was pressed\n     */\n    @Output()\n    locked = new EventEmitter<GridListItemOutputEvent<T>>();\n\n    /** @hidden */\n    @ViewChild('gridListItem')\n    _gridListItem: ElementRef<HTMLDivElement>;\n\n    /** @hidden */\n    @ContentChild(GridListItemFooterBarComponent)\n    footerBarComponent: Nullable<GridListItemFooterBarComponent>;\n    /** @hidden */\n    @ContentChild(GridListItemToolbarComponent)\n    itemToolbarComponent: Nullable<GridListItemToolbarComponent>;\n\n    /** @hidden */\n    @ContentChild(GridListItemBodyDirective)\n    body: Nullable<GridListItemBodyDirective>;\n\n    /** @hidden\n     * The active state of the list item.\n     * If set to true, the whole card has active state. Becomes false only when the Edit button is clicked.\n     */\n    _isActive = true;\n\n    /** @hidden */\n    set gridLayoutClasses(value: string[]) {\n        this._removeClassesNames(this._gridLayoutClasses);\n        this._gridLayoutClasses = value;\n        this._addClassesNames(this._gridLayoutClasses);\n    }\n\n    get gridLayoutClasses(): string[] {\n        return this._gridLayoutClasses;\n    }\n\n    /** @hidden */\n    _selectedItem?: T;\n\n    /** @hidden */\n    set selectionMode(mode: GridListSelectionMode | undefined) {\n        this._selectionMode = mode;\n\n        if (mode !== GridListSelectionModeEnum.DELETE && mode !== GridListSelectionModeEnum.NONE && !this.value) {\n            throw new Error('Grid List Item must have [value] attribute.');\n        }\n\n        if (this.selected && this.value && this._index != null) {\n            const action =\n                this.selectionMode !== GridListSelectionModeEnum.MULTI_SELECT ? null : GridListSelectionActions.ADD;\n\n            this._gridList.setSelectedItem(this.value, this._index, action);\n        }\n\n        this._cd.detectChanges();\n    }\n\n    get selectionMode(): GridListSelectionMode | undefined {\n        return this._selectionMode;\n    }\n\n    /** @hidden */\n    _index?: number;\n\n    /** tabIndex of the element */\n    tabIndex = signal(-1);\n\n    /** @hidden */\n    private _type: GridListItemType = 'inactive';\n\n    /** @hidden */\n    private _selectionMode?: GridListSelectionMode;\n\n    /** @hidden */\n    private _gridLayoutClasses: string[] = [];\n\n    /** @hidden */\n    private readonly subscription = new Subscription();\n\n    /** @hidden */\n    private _innerElementFocused = signal<boolean>(false);\n\n    /** @hidden */\n    constructor(\n        private readonly _cd: ChangeDetectorRef,\n        private readonly _elementRef: ElementRef,\n        private readonly _render: Renderer2,\n        private readonly _gridList: GridList<T>,\n        readonly _contentDensityObserver: ContentDensityObserver,\n        private readonly _tabbableElementService: TabbableElementService\n    ) {\n        const selectedItemsSub = this._gridList._selectedItems$.subscribe((items) => {\n            this._selectedItem = items.selection.find((item) => item === this.value);\n            this._cd.markForCheck();\n        });\n        this.subscription.add(selectedItemsSub);\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this._cd.detectChanges();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.subscription.unsubscribe();\n    }\n\n    /** Focus grid list item programmatically */\n    focus(options?: FocusOptions): void {\n        this._gridListItem?.nativeElement.focus(options);\n    }\n\n    /** @hidden */\n    _setActive(event: MouseEvent, isActive: boolean): void {\n        if (this._isElementCanBeClicked(event)) {\n            return;\n        }\n\n        this._isActive = isActive;\n    }\n\n    /** @hidden */\n    _singleSelect(event: Event): void {\n        this._preventDefault(event);\n\n        if (typeof this._selectedItem !== 'undefined' || !this.value || this._index == null) {\n            return;\n        }\n\n        this._gridList.setSelectedItem(this.value, this._index);\n    }\n\n    /** @hidden */\n    _checkboxClick(event: MouseEvent): void {\n        const checked = (<HTMLInputElement>event.target).checked;\n        this._selectionItem(checked, event);\n    }\n\n    /** @hidden */\n    _checkboxEscape(): void {\n        this._gridListItem.nativeElement.focus();\n    }\n\n    /** @hidden */\n    _selectionItem(value: boolean | number | T, event?: MouseEvent): void {\n        if (!this.value || this._index == null) {\n            return;\n        }\n        const action =\n            this.selectionMode !== GridListSelectionModeEnum.MULTI_SELECT\n                ? null\n                : value || value === 0\n                  ? GridListSelectionActions.ADD\n                  : GridListSelectionActions.REMOVE;\n\n        this._gridList.setSelectedItem(this.value, this._index, action, event);\n    }\n\n    /** @hidden */\n    _onDetail(event: MouseEvent): void {\n        this._preventDefault(event);\n\n        this.detail.emit(this._outputEventValue);\n    }\n\n    /** @hidden */\n    _onNavigate(event: MouseEvent): void {\n        this._preventDefault(event);\n\n        this.navigate.emit(this._outputEventValue);\n    }\n\n    /** @hidden */\n    _onDelete(event: MouseEvent): void {\n        this._preventDefault(event);\n\n        this.delete.emit(this._outputEventValue);\n    }\n\n    /** @hidden */\n    _clickOnDraft(event: MouseEvent): void {\n        this._preventDefault(event);\n\n        this.draft.emit(this._outputEventValue);\n    }\n\n    /** @hidden */\n    _clickOnLocked(event: MouseEvent): void {\n        this._preventDefault(event);\n\n        this.locked.emit(this._outputEventValue);\n    }\n\n    /** @hidden */\n    _onClick(event: MouseEvent): void {\n        if (!this._isElementCanBeClicked(event)) {\n            return;\n        }\n\n        if (this.type !== 'active' && this.type !== 'detailsAndActive' && this.type !== 'navigation') {\n            this.cardClick.emit(this._outputEventValue);\n            return;\n        }\n\n        if (this.type === 'navigation') {\n            this._onNavigate(event);\n            return;\n        }\n        this.press.emit(this._outputEventValue);\n        this.cardClick.emit(this._outputEventValue);\n    }\n    /** @hidden */\n    _onKeyDown(event: KeyboardEvent): void {\n        const activeElement = document.activeElement as HTMLElement;\n        const isFocused = activeElement === this._gridListItem.nativeElement;\n        const shouldFocusChild = KeyUtil.isKeyCode(event, [ENTER, MAC_ENTER, F2, F7]) && !event.shiftKey && isFocused;\n        if (shouldFocusChild) {\n            event.stopPropagation();\n            const interactiveElements = this._gridListItem.nativeElement.querySelectorAll(\n                'a, button, input, select, textarea'\n            );\n\n            const firstInteractiveElement = interactiveElements[0] as HTMLElement;\n            firstInteractiveElement.focus();\n            interactiveElements.forEach((element) => {\n                element.setAttribute('tabindex', '0');\n            });\n            this._innerElementFocused.set(true);\n            return;\n        } else if (this._innerElementFocused() && KeyUtil.isKeyCode(event, [F2, F7, ESCAPE])) {\n            event.stopPropagation();\n            this._gridListItem.nativeElement.focus();\n            this._innerElementFocused.set(false);\n            return;\n        }\n        const target = event.target as HTMLDivElement;\n\n        const isSelectionKeyDown = KeyUtil.isKeyCode(event, [ENTER, SPACE]);\n\n        if (isSelectionKeyDown && this.selectionMode === GridListSelectionModeEnum.NONE) {\n            this.press.emit(this._outputEventValue);\n        }\n\n        if (\n            !isSelectionKeyDown ||\n            this.selectionMode === GridListSelectionModeEnum.NONE ||\n            !target.classList.contains('fd-grid-list__item')\n        ) {\n            return;\n        }\n\n        this._preventDefault(event);\n\n        if (this.selectionMode === GridListSelectionModeEnum.MULTI_SELECT) {\n            this._selectionItem(!this._selectedItem);\n\n            return;\n        }\n\n        if (typeof this._selectedItem === 'undefined') {\n            this._singleSelect(event);\n        }\n    }\n\n    /** @hidden */\n    private _isElementCanBeClicked(event: MouseEvent): boolean {\n        if (!event?.target) {\n            return false;\n        }\n\n        const element = event.target as HTMLElement;\n        const { classList } = element;\n\n        return (\n            !(this._isToolbarElement(element) && this.disableToolbarClick) &&\n            !classList.contains('fd-grid-list__action-button') &&\n            !classList.contains('fd-grid-list__radio-label') &&\n            !classList.contains('fd-grid-list__radio-input') &&\n            !classList.contains('fd-grid-list__checkbox-label') &&\n            !classList.contains('fd-grid-list__checkbox-input') &&\n            !classList.contains('fd-checkbox__checkmark')\n        );\n    }\n\n    /** @hidden */\n    private _isToolbarElement(element: HTMLElement): boolean {\n        if (!this.itemToolbarComponent) {\n            return false;\n        }\n\n        while (element.parentElement && !element.parentElement.classList.contains('fd-grid-list__item')) {\n            if (element.classList.contains('fd-toolbar--extra-content')) {\n                return true;\n            }\n\n            element = element.parentElement;\n        }\n\n        return false;\n    }\n\n    /** @hidden */\n    private _preventDefault(event: Event): void {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    /** @hidden */\n    private get _outputEventValue(): GridListItemOutputEvent<T> {\n        return {\n            value: this.value,\n            index: this._index\n        };\n    }\n\n    /** @hidden */\n    private _addClassesNames(classesNames: string[]): void {\n        for (const className of classesNames) {\n            this._render.addClass(this._elementRef.nativeElement, className);\n        }\n    }\n\n    /** @hidden */\n    private _removeClassesNames(classesNames: string[]): void {\n        for (const className of classesNames) {\n            this._render.removeClass(this._elementRef.nativeElement, className);\n        }\n    }\n}\n","<div\n    #gridListItem\n    [id]=\"id\"\n    [tabindex]=\"tabIndex()\"\n    class=\"fd-grid-list__item\"\n    role=\"option\"\n    [class.is-navigated]=\"isNavigated\"\n    [class.is-selected]=\"!!_selectedItem\"\n    [class.fd-grid-list__item--link]=\"\n        _isActive && (type === 'active' || type === 'detailsAndActive' || type === 'navigation')\n    \"\n    [class.fd-grid-list__item--unread]=\"state === 'unread'\"\n    [class.fd-grid-list__item--locked]=\"state === 'locked'\"\n    [class.fd-grid-list__item--draft]=\"state === 'draft'\"\n    [class.fd-grid-list__item--error]=\"state === 'error'\"\n    [class.fd-grid-list__item--height-auto]=\"autoHeight\"\n    (keydown)=\"_onKeyDown($event)\"\n    (click)=\"selectionMode === 'singleSelect' && _singleSelect($event); _onClick($event)\"\n    [attr.aria-label]=\"ariaLabel\"\n    [attr.aria-labelledby]=\"ariaLabelledBy\"\n    (mouseover)=\"_setActive($event, false)\"\n    (mouseout)=\"_setActive($event, true)\"\n    [attr.aria-selected]=\"selectionMode === 'none' ? null : !!_selectedItem\"\n>\n    @if (status) {\n        <span\n            class=\"fd-grid-list__highlight\"\n            [class.fd-grid-list__highlight--positive]=\"status === 'success'\"\n            [class.fd-grid-list__highlight--critical]=\"status === 'warning'\"\n            [class.fd-grid-list__highlight--negative]=\"status === 'error'\"\n            [class.fd-grid-list__highlight--neutral]=\"status === 'neutral'\"\n            [attr.aria-label]=\"('coreGridList.listItemStatusAriaLabel' | fdTranslate: { status: status })()\"\n        ></span>\n    }\n    @if (selectionMode === 'singleSelect') {\n        <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\n    }\n    @if (\n        counter ||\n        itemToolbarComponent?.contentTemplateRef ||\n        (type && type !== 'inactive' && type !== 'active') ||\n        (selectionMode !== 'none' && selectionMode !== 'singleSelect')\n    ) {\n        <div class=\"fd-toolbar fd-grid-list__item-toolbar\">\n            @if (selectionMode === 'singleSelectLeft') {\n                <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\n            }\n            @if (selectionMode === 'multiSelect') {\n                <ng-template [ngTemplateOutlet]=\"checkbox\"></ng-template>\n            }\n            @if (itemToolbarComponent?.contentTemplateRef) {\n                <div class=\"fd-toolbar--extra-content\">\n                    <ng-template [ngTemplateOutlet]=\"itemToolbarComponent!.contentTemplateRef\"></ng-template>\n                </div>\n            }\n            <fd-grid-list-title-bar-spacer></fd-grid-list-title-bar-spacer>\n            @if (counter) {\n                <span\n                    class=\"fd-grid-list__item-counter\"\n                    [attr.aria-label]=\"('coreGridList.listItemCounterAriaLabel' | fdTranslate: { count: counter })()\"\n                    >{{ counter }}</span\n                >\n            }\n            @if (type === 'detail' || type === 'detailsAndActive') {\n                <button\n                    fd-button\n                    fdType=\"transparent\"\n                    glyph=\"edit\"\n                    class=\"fd-grid-list__action-button\"\n                    [attr.aria-label]=\"('coreGridList.listItemButtonDetailsTitle' | fdTranslate)()\"\n                    [title]=\"('coreGridList.listItemButtonDetailsTitle' | fdTranslate)()\"\n                    fdCompact\n                    (click)=\"_onDetail($event)\"\n                ></button>\n            }\n            @if (selectionMode === 'delete') {\n                <button\n                    fd-button\n                    fdType=\"transparent\"\n                    glyph=\"decline\"\n                    class=\"fd-grid-list__action-button\"\n                    [attr.aria-label]=\"('coreGridList.listItemButtonDeleteTitle' | fdTranslate)()\"\n                    [title]=\"('coreGridList.listItemButtonDeleteTitle' | fdTranslate)()\"\n                    title=\"Delete\"\n                    fdCompact\n                    (click)=\"_onDelete($event)\"\n                ></button>\n            }\n            @if (type === 'navigation') {\n                <span class=\"fd-grid-list__item-navigation-indicator\">\n                    <fd-icon glyph=\"navigation-right-arrow\"></fd-icon>\n                </span>\n            }\n            @if (selectionMode === 'singleSelectRight') {\n                <ng-template [ngTemplateOutlet]=\"radio\"></ng-template>\n            }\n        </div>\n    }\n    <div class=\"fd-grid-list__item-body\" [class.fd-grid-list__item-body--no-padding]=\"noPadding\">\n        <ng-content select=\"[fd-grid-list-item-image]\"></ng-content>\n        @if (title || description) {\n            <div class=\"fd-grid-list__item-header\">\n                @if (title) {\n                    <div\n                        role=\"heading\"\n                        [attr.aria-level]=\"titleLevel\"\n                        class=\"fd-title fd-title--h4 fd-grid-list__item-title\"\n                    >\n                        {{ title }}\n                    </div>\n                }\n                @if (description) {\n                    <span class=\"fd-grid-list__item-subtitle\">{{ description }}</span>\n                }\n            </div>\n        }\n        @if (body?.templateRef) {\n            <div class=\"fd-grid-list__item-content\">\n                <ng-template [ngTemplateOutlet]=\"body!.templateRef\"></ng-template>\n            </div>\n        }\n        @if (state || footerBarComponent?.contentTemplateRef) {\n            <ng-template [ngTemplateOutlet]=\"itemFooter\"></ng-template>\n        }\n    </div>\n</div>\n<ng-template #radio>\n    <input\n        [attr.tabindex]=\"selectionMode === 'singleSelect' ? -1 : 0\"\n        type=\"radio\"\n        class=\"fd-radio fd-grid-list__radio-input\"\n        [style.display]=\"selectionMode === 'singleSelect' ? 'none' : ''\"\n        [id]=\"id + '-radio'\"\n        [name]=\"'fd-grid-list-item-toolbar-' + selectionMode\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n        [value]=\"value\"\n        [ngModel]=\"_selectedItem\"\n        (ngModelChange)=\"$event && _selectionItem($event)\"\n    />\n    <label\n        class=\"fd-radio__label fd-grid-list__radio-label\"\n        [for]=\"id + '-radio'\"\n        tabindex=\"-1\"\n        (mouseover)=\"_setActive($event, false)\"\n        (mouseout)=\"_setActive($event, true)\"\n    ></label>\n</ng-template>\n<ng-template #checkbox>\n    <input\n        type=\"checkbox\"\n        class=\"fd-checkbox fd-grid-list__checkbox-input\"\n        [id]=\"id + '-checkbox'\"\n        [attr.aria-label]=\"ariaLabel\"\n        [attr.aria-labelledby]=\"ariaLabelledBy\"\n        [ngModel]=\"_selectedItem\"\n        (click)=\"_checkboxClick($event)\"\n        (keydown.escape)=\"_checkboxEscape()\"\n        (keydown.shift)=\"_checkboxEscape()\"\n    />\n    <label class=\"fd-checkbox__label fd-grid-list__checkbox-label\" [for]=\"id + '-checkbox'\" tabindex=\"-1\">\n        <span class=\"fd-checkbox__checkmark\" aria-hidden=\"true\"></span>\n    </label>\n</ng-template>\n<ng-template #itemFooter>\n    @if (footerBarComponent || state) {\n        <div class=\"fd-grid-list__item-body-actions\">\n            @if (footerBarComponent?.contentTemplateRef) {\n                <ng-template [ngTemplateOutlet]=\"footerBarComponent!.contentTemplateRef\"></ng-template>\n            }\n            @if (!footerBarComponent?.contentTemplateRef && state) {\n                @if (state === 'error') {\n                    <span\n                        fd-object-status\n                        status=\"negative\"\n                        [label]=\"('coreGridList.listItemStatusContainsErrors' | fdTranslate)()\"\n                        [attr.aria-label]=\"('coreGridList.listItemStatusContainsErrors' | fdTranslate)()\"\n                    ></span>\n                }\n                @if (state === 'locked') {\n                    <button\n                        class=\"fd-grid-list__action-button\"\n                        fd-button\n                        fdType=\"transparent\"\n                        glyph=\"private\"\n                        [label]=\"('coreGridList.listItemStatusLocked' | fdTranslate)()\"\n                        [attr.aria-label]=\"('coreGridList.listItemStatusLocked' | fdTranslate)()\"\n                        [attr.data-test-id]=\"('coreGridList.listItemStatusLocked' | fdTranslate)()\"\n                        fdCompact\n                        (click)=\"_clickOnLocked($event)\"\n                    ></button>\n                }\n                @if (state === 'draft') {\n                    <button\n                        class=\"fd-grid-list__action-button\"\n                        fd-button\n                        fdType=\"transparent\"\n                        [attr.aria-label]=\"('coreGridList.listItemStatusDraft' | fdTranslate)()\"\n                        [label]=\"('coreGridList.listItemStatusDraft' | fdTranslate)()\"\n                        [attr.data-test-id]=\"('coreGridList.listItemStatusDraft' | fdTranslate)()\"\n                        fdCompact\n                        (click)=\"_clickOnDraft($event)\"\n                    ></button>\n                }\n            }\n        </div>\n    }\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { KeyUtil } from '@fundamental-ngx/cdk/utils';\n\n@Component({\n    selector: 'fd-grid-list-more-btn',\n    templateUrl: './grid-list-more-btn.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-col fd-col--12'\n    },\n    standalone: true\n})\nexport class GridListMoreBtnComponent {\n    /** Sets title of the button */\n    @Input()\n    title: string;\n\n    /** Sets the number of total items. */\n    @Input()\n    totalCount: number;\n\n    /** Sets the number of display items. */\n    @Input()\n    displayCount: number;\n\n    /** Event is thrown, when the control button is clicked */\n    @Output()\n    showMore = new EventEmitter<void>();\n\n    /** @hidden */\n    _onKeyDown(event: KeyboardEvent): void {\n        if (!KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n            return;\n        }\n\n        event.preventDefault();\n\n        this.showMore.emit();\n    }\n}\n","<div tabindex=\"0\" role=\"button\" class=\"fd-grid-list__more\" (keydown)=\"_onKeyDown($event)\" (click)=\"showMore.emit()\">\n    <h5 class=\"fd-title fd-title--h6 fd-grid-list__more-title\">{{ title }}</h5>\n    <p class=\"fd-grid-list__more-description\">{{ '[ ' + displayCount + ' / ' + totalCount + ' ]' }}</p>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ToolbarComponent, ToolbarLabelDirective } from '@fundamental-ngx/core/toolbar';\n\n@Component({\n    selector: 'fd-grid-list-title-bar',\n    templateUrl: './grid-list-title-bar.component.html',\n    host: {\n        class: 'fd-col fd-col--12'\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ToolbarComponent, ToolbarLabelDirective]\n})\nexport class GridListTitleBarComponent {\n    /** Sets title of the Grid List */\n    @Input()\n    title: string;\n}\n","<fd-toolbar fdType=\"solid\">\n    <label fd-toolbar-label>\n        {{ title }}\n        <ng-content select=\"[fd-grid-list-title-bar-additional-title-item]\"></ng-content>\n    </label>\n\n    <ng-content></ng-content>\n</fd-toolbar>\n","import { Directive } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-grid-list-title-bar-additional-title-item]',\n    standalone: true\n})\nexport class GridListTitleBarAdditionalTitleItemDirective {}\n","import { DOWN_ARROW, END, HOME, LEFT_ARROW, RIGHT_ARROW, TAB, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n    AfterContentInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChildren,\n    DestroyRef,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewEncapsulation,\n    computed,\n    inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n    KeyUtil,\n    KeyboardSupportService,\n    Nullable,\n    RangeSelector,\n    RtlService,\n    range\n} from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, Observable, Subscription, filter } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { parseLayoutPattern } from '../../helpers/parse-layout-pattern';\nimport {\n    GridListSelectionActions,\n    GridListSelectionEvent,\n    GridListSelectionMode\n} from '../../models/grid-list-selection.models';\nimport { GridListItemComponent } from '../grid-list-item/grid-list-item.component';\nimport { GridList } from './grid-list-base.component';\n\nlet gridListUniqueId = 0;\n\n@Component({\n    selector: 'fd-grid-list',\n    templateUrl: './grid-list.component.html',\n    styleUrls: ['./grid-list.component.scss', '../../../../cdk/utils/drag-and-drop/drag-and-drop.scss'],\n    encapsulation: ViewEncapsulation.None,\n    providers: [KeyboardSupportService, { provide: GridList, useExisting: GridListComponent }],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: true\n})\nexport class GridListComponent<T> extends GridList<T> implements OnChanges, AfterContentInit, OnDestroy {\n    /** id for the Element */\n    @Input()\n    id = `fd-grid-list-${gridListUniqueId++}`;\n\n    /** width of the element */\n    @Input()\n    width: string;\n\n    /** Sets the `aria-label` attribute to the element. */\n    @Input()\n    ariaLabel: Nullable<string>;\n\n    /**\n     * Defines the mode of Grid List\n     * Modes:\n     * - none: Default mode (no selection)\n     * - delete: Delete mode (only one list item can be deleted via provided delete button)\n     * - singleSelect: Selected item is highlighted but no selection control is visible (only one list item can be selected)\n     * - singleSelectLeft: Left-positioned single selection mode (only one list item can be selected)\n     * - singleSelectRight: Right-positioned single selection mode (only one list item can be selected)\n     * - multiSelect: Multi-selection mode (more than one list item can be selected)\n     *  */\n    @Input()\n    selectionMode: GridListSelectionMode = 'none';\n\n    /**\n     * specify the column layout in the format `XLn-Ln-Mn-Sn` where n is the number of columns and can be different for each size.\n     * eg: XL2-L2-M2-S1 would create 2-column layouts for XL, L, and M sizes and single-column layout for S size.\n     */\n    @Input()\n    layoutPattern: string;\n\n    /** Event is thrown, when mode is singleSelect, singleSelectLeft, singleSelectRight or multiSelect and item was selected */\n    @Output()\n    selectionChange = new EventEmitter<GridListSelectionEvent<T>>();\n\n    /** @hidden */\n    @ContentChildren(GridListItemComponent, { descendants: true })\n    set gridListItems(components: QueryList<GridListItemComponent<T>>) {\n        this._gridListItems = components;\n        this._updateGridListItemsProperties(components);\n    }\n\n    get gridListItems(): QueryList<GridListItemComponent<T>> {\n        return this._gridListItems;\n    }\n\n    /** @hidden */\n    readonly _selectedItems$: Observable<GridListSelectionEvent<T>>;\n\n    /** @hidden */\n    private _gridListItems: QueryList<GridListItemComponent<T>>;\n\n    /** @hidden */\n    private readonly _rangeSelector = new RangeSelector();\n\n    /** @hidden */\n    private readonly _selectedItems: GridListSelectionEvent<T> = {\n        added: [],\n        index: [],\n        removed: [],\n        selection: []\n    };\n\n    /** @hidden */\n    private readonly _selectedItemsSubject$ = new BehaviorSubject<GridListSelectionEvent<T>>(this._selectedItems);\n\n    /** @hidden */\n    private readonly subscription = new Subscription();\n\n    /** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)  */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    private readonly _cd = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private readonly _elRef = inject(ElementRef);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, {\n        optional: true\n    });\n\n    /** @hidden */\n    private readonly _isRtl = computed<boolean>(() => this._rtlService?.rtl() ?? false);\n\n    /** @hidden */\n    constructor() {\n        super();\n        this._selectedItems$ = this._selectedItemsSubject$.asObservable();\n        const selectedItemsSub = this._selectedItems$\n            .pipe(filter(() => !!this._gridListItems))\n            .subscribe(this.selectionChange);\n\n        this.subscription.add(selectedItemsSub);\n    }\n\n    /** @hidden */\n    ngOnChanges(changes: SimpleChanges): void {\n        if (\n            changes.layoutPattern &&\n            !changes.layoutPattern.firstChange &&\n            changes.layoutPattern.previousValue !== changes.layoutPattern.currentValue\n        ) {\n            const baseLayoutItemPattern = parseLayoutPattern(this.layoutPattern);\n            this._updateGridListItemsProperty('gridLayoutClasses', baseLayoutItemPattern);\n        }\n\n        if (\n            changes.selectionMode &&\n            !changes.selectionMode.firstChange &&\n            changes.selectionMode.previousValue !== changes.selectionMode.currentValue\n        ) {\n            this._updateGridListItemsProperty('selectionMode', this.selectionMode);\n        }\n    }\n\n    /** @hidden */\n    ngAfterContentInit(): void {\n        this._setFirstFocusableItem();\n        this._listenOnQueryChange();\n        this._cd.detectChanges();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this.subscription.unsubscribe();\n    }\n\n    /**\n     * Clears previous selection of the items.\n     */\n    clearSelection(): void {\n        this._selectedItems.added = [];\n        this._selectedItems.index = [];\n        this._selectedItems.removed = this._selectedItems.selection;\n        this._selectedItems.selection = [];\n\n        this._selectedItemsSubject$.next(this._selectedItems);\n    }\n\n    /** @hidden */\n    setSelectedItem(\n        item: T,\n        componentIndex: number,\n        action?: GridListSelectionActions | null,\n        event?: PointerEvent\n    ): void {\n        if (!action) {\n            this._selectedItems.added = [item];\n            const selectedItem = this._selectedItems.selection[0];\n            if (selectedItem) {\n                this._selectedItems.removed = [selectedItem];\n            }\n\n            this._selectedItems.selection = [item];\n            this._selectedItems.index = [componentIndex];\n\n            this._selectedItemsSubject$.next(this._selectedItems);\n\n            return;\n        }\n\n        this._rangeSelector.onRangeElementToggled(componentIndex, event);\n        const state = this._rangeSelector.lastRangeSelectionState;\n        if (!state) {\n            return;\n        }\n        const itemIndexes = range(state.to - state.from + 1, (i) => state.from + i);\n        const selectedItems = itemIndexes.map((idx) => this.gridListItems.get(idx)?.value).filter((v): v is T => !!v);\n        const itemsSet = new Set<T>(selectedItems);\n\n        if (action === GridListSelectionActions.ADD) {\n            this._selectedItems.added = [...itemsSet.values()];\n            this._selectedItems.index = [...itemIndexes];\n            this._selectedItems.removed = [];\n\n            // remove \"itemsSet\" values from selection and add them back from \"itemsSet\"\n            // this is needed to avoid duplicates as some of the items can be already selected\n            this._selectedItems.selection = this._selectedItems.selection.filter((e) => !itemsSet.has(e));\n            this._selectedItems.selection.push(...itemsSet.values());\n        }\n\n        if (action === GridListSelectionActions.REMOVE) {\n            this._selectedItems.added = [];\n            this._selectedItems.index = [...itemIndexes];\n            this._selectedItems.removed = [...itemsSet.values()];\n\n            this._selectedItems.selection = this._selectedItems.selection.filter(\n                (selectedItem) => !itemsSet.has(selectedItem)\n            );\n        }\n\n        this._selectedItemsSubject$.next(this._selectedItems);\n    }\n\n    /** @hidden */\n    handleKeydown(event: KeyboardEvent): void {\n        this._handleTabKeydown(event);\n        if (KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n            if (event.shiftKey && this.selectionMode === 'multiSelect') {\n                this._handleShiftArrowKeydown(event);\n            } else {\n                this._handleArrowKeydown(event);\n            }\n        } else if (event.shiftKey && this.selectionMode === 'multiSelect' && KeyUtil.isKeyCode(event, [HOME, END])) {\n            this._handleHomeEndKeydown(event);\n        }\n    }\n    /** @hidden */\n    private _handleHomeEndKeydown(event: KeyboardEvent): void {\n        event.preventDefault();\n        let shouldSelect = false;\n        let selectionAction;\n        const isEndKeydown = KeyUtil.isKeyCode(event, END);\n        const loopStartingIndex = isEndKeydown ? 0 : this._gridListItems.length - 1;\n        /**\n         * Ternary loop - if isEndKeydown is true, loop iterates from zero to the end of the grid list items.\n         * If isEndKeydown is false, loop iterates backwards\n         **/\n        for (\n            let index = loopStartingIndex;\n            isEndKeydown ? index < this._gridListItems.length : index >= 0;\n            isEndKeydown ? index++ : index--\n        ) {\n            const currentItem = this._gridListItems.toArray()[index];\n            if (document.activeElement === currentItem._gridListItem.nativeElement) {\n                shouldSelect = true;\n                selectionAction = currentItem._selectedItem\n                    ? GridListSelectionActions.ADD\n                    : GridListSelectionActions.REMOVE;\n            }\n            if (shouldSelect) {\n                this.setSelectedItem(currentItem as any, index, selectionAction);\n            }\n        }\n        const itemToFocus = isEndKeydown\n            ? this._gridListItems.last._gridListItem\n            : this._gridListItems.first._gridListItem;\n        itemToFocus.nativeElement.focus();\n    }\n\n    /** @hidden */\n    private _handleTabKeydown(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, TAB) && !event.shiftKey) {\n            const isFocused = this._gridListItems\n                .toArray()\n                .some((item) => item._gridListItem.nativeElement.contains(document.activeElement));\n            const isChildFocused = this._gridListItems\n                .toArray()\n                .some((item) => item._gridListItem.nativeElement.querySelector(':focus'));\n            if (isFocused && !isChildFocused) {\n                this._gridListItems.forEach((item) => {\n                    const interactiveElements = item._gridListItem.nativeElement.querySelectorAll(\n                        'a, button, input, select, textarea'\n                    );\n\n                    // Set tabindex to -1 for all interactive elements in the grid\n                    interactiveElements.forEach((element) => {\n                        element.setAttribute('tabindex', '-1');\n                    });\n                });\n                return;\n            } else {\n                this._gridListItems.forEach((item) => {\n                    const interactiveElements = item._gridListItem.nativeElement.querySelectorAll(\n                        'a, button, input, select, textarea'\n                    );\n                    interactiveElements.forEach((element) => {\n                        element.setAttribute('tabindex', '0');\n                    });\n                });\n                return;\n            }\n        }\n    }\n\n    /** @hidden */\n    private _handleShiftArrowKeydown(event: KeyboardEvent): void {\n        event.preventDefault();\n        const activeElement = document.activeElement as HTMLElement;\n\n        const currentItemIndex = this._getCurrentItemIndex(activeElement);\n        if (currentItemIndex === -1) {\n            return;\n        }\n\n        const indexToFocus = this._calculateIndexToFocus(event, currentItemIndex);\n        if (indexToFocus === undefined) {\n            return;\n        }\n\n        // Persist the selection state from the current item to the next item\n        this._persistSelectionState(currentItemIndex, indexToFocus);\n\n        // Focus the new item\n        this._focusItemAtIndex(indexToFocus, activeElement);\n    }\n\n    /** @hidden */\n    private _handleArrowKeydown(event: KeyboardEvent, isShiftPressed = false): void {\n        event.preventDefault();\n        const activeElement = document.activeElement as HTMLElement;\n\n        const currentItemIndex = this._getCurrentItemIndex(activeElement);\n        if (currentItemIndex === -1) {\n            return;\n        }\n\n        const indexToFocus = this._calculateIndexToFocus(event, currentItemIndex);\n        if (indexToFocus === undefined) {\n            return;\n        }\n\n        if (isShiftPressed) {\n            this._toggleSelection(indexToFocus);\n        }\n\n        this._focusItemAtIndex(indexToFocus, activeElement);\n    }\n\n    /** hidden */\n    private _calculateIndexToFocus(event: KeyboardEvent, currentItemIndex: number): number | undefined {\n        const itemsPerRow = this._getItemsPerRow(\n            this._gridListItems.toArray()[currentItemIndex]._gridListItem.nativeElement\n        );\n        if (KeyUtil.isKeyCode(event, LEFT_ARROW) || (this._isRtl() && KeyUtil.isKeyCode(event, [RIGHT_ARROW]))) {\n            return currentItemIndex - 1;\n        } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW) || (this._isRtl() && KeyUtil.isKeyCode(event, [LEFT_ARROW]))) {\n            return currentItemIndex + 1;\n        } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n            return currentItemIndex - itemsPerRow;\n        } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n            return currentItemIndex + itemsPerRow;\n        }\n        return undefined;\n    }\n\n    /** hidden */\n    private _persistSelectionState(currentIndex: number, indexToFocus: number): void {\n        const currentItem = this._gridListItems.toArray()[currentIndex];\n        const nextItem = this._gridListItems.toArray()[indexToFocus];\n\n        // Persist the selection state from the current item to the next item\n        if (currentItem._selectedItem) {\n            // If the current item is selected, ensure the next item is selected as well\n            if (!nextItem._selectedItem) {\n                this.setSelectedItem(nextItem as any, indexToFocus, GridListSelectionActions.ADD);\n            }\n        } else {\n            // If the current item is not selected, ensure the next item remains not selected\n            if (nextItem._selectedItem) {\n                this.setSelectedItem(nextItem as any, indexToFocus, GridListSelectionActions.REMOVE);\n            }\n        }\n    }\n\n    /** hidden */\n    private _getCurrentItemIndex(activeElement: HTMLElement): number {\n        return this._gridListItems\n            .toArray()\n            .findIndex((item) => item._gridListItem.nativeElement.contains(activeElement));\n    }\n\n    /** hidden */\n    private _focusItemAtIndex(indexToFocus: number, activeElement: HTMLElement): void {\n        if (indexToFocus >= 0 && indexToFocus < this._gridListItems.length) {\n            const itemToFocus = this._gridListItems.toArray()[indexToFocus];\n            if (itemToFocus && itemToFocus._gridListItem) {\n                const elementToFocus = itemToFocus._gridListItem.nativeElement?.parentElement?.querySelector(\n                    activeElement.tagName\n                ) as HTMLElement;\n                if (elementToFocus) {\n                    elementToFocus.focus();\n                }\n            }\n        }\n    }\n\n    /** hidden */\n    private _toggleSelection(indexToFocus: number): void {\n        const currentItem = this._gridListItems.toArray()[indexToFocus];\n        const selectionAction = currentItem._selectedItem\n            ? GridListSelectionActions.REMOVE\n            : GridListSelectionActions.ADD;\n\n        this.setSelectedItem(currentItem as any, indexToFocus, selectionAction);\n    }\n\n    /** @hidden */\n    private _listenOnQueryChange(): void {\n        this._gridListItems.changes.pipe(startWith(0), takeUntilDestroyed(this._destroyRef)).subscribe(() => {\n            setTimeout(() => {\n                this._setFirstFocusableItem();\n            });\n        });\n    }\n\n    /** @hidden */\n    private _setFirstFocusableItem(): void {\n        this._gridListItems.toArray().forEach((item, index) => {\n            item.tabIndex.set(index === 0 ? 0 : -1);\n        });\n    }\n\n    /** @hidden */\n    private _getItemsPerRow(activeElement: HTMLDivElement): number {\n        const itemWidth = activeElement.getBoundingClientRect().width;\n        const containerWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n        return Math.floor(containerWidth / itemWidth);\n    }\n\n    /** @hidden */\n    private _updateGridListItemsProperties(components: QueryList<GridListItemComponent<T>>): void {\n        const layoutPattern = this.layoutPattern ? this.layoutPattern : 'XL4-L3-M2-S1';\n        const baseLayoutItemPattern = parseLayoutPattern(layoutPattern);\n\n        components.forEach((component, index) => {\n            if (component._index !== index) {\n                component._index = index;\n            }\n\n            if (!component.selectionMode) {\n                component.selectionMode = this.selectionMode;\n            }\n\n            if (!component.layoutItemPattern) {\n                component.gridLayoutClasses = baseLayoutItemPattern;\n            }\n        });\n    }\n\n    /** @hidden */\n    private _updateGridListItemsProperty(key: string, value: string | string[]): void {\n        this._gridListItems.forEach((componenet) => {\n            componenet[key] = value;\n        });\n    }\n}\n","<div\n    [id]=\"id\"\n    [style.width]=\"width\"\n    class=\"fd-grid-list\"\n    [attr.aria-label]=\"ariaLabel\"\n    [class.fd-grid-list--mode-delete]=\"selectionMode === 'delete'\"\n    [class.fd-grid-list--mode-single-select]=\"selectionMode === 'singleSelect'\"\n    [class.fd-grid-list--mode-single-select-left]=\"selectionMode === 'singleSelectLeft'\"\n    [class.fd-grid-list--mode-single-select-right]=\"selectionMode === 'singleSelectRight'\"\n    [class.fd-grid-list--mode-multi-select]=\"selectionMode === 'multiSelect'\"\n    (keydown)=\"handleKeydown($event)\"\n>\n    <div class=\"fd-container\" role=\"listbox\">\n        <div class=\"fd-row\">\n            <ng-content></ng-content>\n        </div>\n    </div>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[fd-grid-list-item-image]',\n    host: {\n        class: 'fd-grid-list__item-image'\n    },\n    standalone: true\n})\nexport class GridListItemImageDirective {}\n","import { NgModule } from '@angular/core';\nimport { AvatarModule } from '@fundamental-ngx/core/avatar';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { ToolbarModule } from '@fundamental-ngx/core/toolbar';\nimport { GridListFilterBarComponent } from './components/grid-list-filter-bar/grid-list-filter-bar.component';\nimport { GridListFooterComponent } from './components/grid-list-footer/grid-list-footer.component';\nimport { GridListGroupHeaderComponent } from './components/grid-list-group-header/grid-list-group-header.component';\nimport { GridListItemFooterBarComponent } from './components/grid-list-item-footer-bar/grid-list-item-footer-bar.component';\nimport { GridListItemToolbarComponent } from './components/grid-list-item-toolbar/grid-list-item-toolbar.component';\nimport { GridListItemComponent } from './components/grid-list-item/grid-list-item.component';\nimport { GridListMoreBtnComponent } from './components/grid-list-more-btn/grid-list-more-btn.component';\nimport { GridListTitleBarSpacerComponent } from './components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component';\nimport { GridListTitleBarComponent } from './components/grid-list-title-bar/grid-list-title-bar.component';\nimport { GridListTitleBarAdditionalTitleItemDirective } from './components/grid-list-title-bar/grid-list-title-bar.directive';\nimport { GridListComponent } from './components/grid-list/grid-list.component';\nimport { GridListItemBodyDirective } from './directives/grid-list-item-body.directive';\nimport { GridListItemImageDirective } from './directives/grid-list-item-image.directive';\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [\n        ToolbarModule,\n        ButtonModule,\n        AvatarModule,\n        GridListComponent,\n        GridListItemComponent,\n        GridListTitleBarComponent,\n        GridListFilterBarComponent,\n        GridListMoreBtnComponent,\n        GridListFooterComponent,\n        GridListItemFooterBarComponent,\n        GridListItemToolbarComponent,\n        GridListGroupHeaderComponent,\n        GridListTitleBarSpacerComponent,\n        GridListTitleBarAdditionalTitleItemDirective,\n        GridListItemImageDirective,\n        GridListItemBodyDirective\n    ],\n    exports: [\n        GridListComponent,\n        GridListItemComponent,\n        GridListTitleBarComponent,\n        GridListFilterBarComponent,\n        GridListMoreBtnComponent,\n        GridListFooterComponent,\n        GridListItemFooterBarComponent,\n        GridListItemToolbarComponent,\n        GridListGroupHeaderComponent,\n        GridListTitleBarSpacerComponent,\n        GridListTitleBarAdditionalTitleItemDirective,\n        GridListItemImageDirective,\n        GridListItemBodyDirective\n    ]\n})\nexport class GridListModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.GridList"],"mappings":"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"}