@fundamental-ngx/core 0.52.2-rc.2 → 0.52.2-rc.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dialog/base/dialog-ref-base.class.d.ts +1 -1
- package/esm2022/datetime-picker/datetime-picker.component.mjs +9 -5
- package/esm2022/dialog/base/dialog-ref-base.class.mjs +4 -2
- package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +154 -38
- package/esm2022/grid-list/components/grid-list-item/grid-list-item.component.mjs +45 -17
- package/esm2022/grid-list/models/grid-list-selection.models.mjs +10 -1
- package/esm2022/multi-combobox/base-multi-combobox.class.mjs +1 -1
- package/esm2022/multi-combobox/multi-announcer/multi-announcer.directive.mjs +7 -12
- package/esm2022/multi-combobox/multi-combobox.component.mjs +10 -5
- package/esm2022/shared/interfaces/popover-position.mjs +19 -1
- package/esm2022/slider/slider.component.mjs +3 -3
- package/esm2022/wizard/wizard.component.mjs +12 -12
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +8 -4
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs +3 -1
- package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-grid-list.mjs +203 -50
- package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +14 -14
- package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-shared.mjs +19 -1
- package/fesm2022/fundamental-ngx-core-shared.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-wizard.mjs +11 -11
- package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
- package/grid-list/components/grid-list/grid-list.component.d.ts +20 -0
- package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +7 -2
- package/grid-list/models/grid-list-selection.models.d.ts +8 -0
- package/multi-combobox/base-multi-combobox.class.d.ts +1 -1
- package/multi-combobox/multi-combobox.component.d.ts +9 -2
- package/package.json +3 -3
- package/shared/interfaces/popover-position.d.ts +17 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 standalone: true,\n imports: [ToolbarComponent, ToolbarSpacerDirective, IconComponent, FdTranslatePipe]\n})\nexport class GridListFilterBarComponent {\n /** Event is thrown, when the control button is clicked */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n 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 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, 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} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { KeyUtil, Nullable } 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 { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { GridListItemBodyDirective } from '../../directives/grid-list-item-body.directive';\nimport { parseLayoutPattern } from '../../helpers/parse-layout-pattern';\nimport { GridListSelectionActions, GridListSelectionMode } 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 standalone: true,\n imports: [\n NgTemplateOutlet,\n GridListTitleBarSpacerComponent,\n ButtonComponent,\n IconComponent,\n TitleComponent,\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 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, 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 !== 'delete' && mode !== '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 = this.selectionMode !== 'multiSelect' ? 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 /** @hidden */\n _index?: number;\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 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 ) {\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 !== 'multiSelect'\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 return;\n }\n\n if (this.type === 'navigation') {\n this._onNavigate(event);\n return;\n }\n\n this.press.emit(this._outputEventValue);\n }\n\n /** @hidden */\n _onKeyDown(event: KeyboardEvent): void {\n const target = event.target as HTMLDivElement;\n\n const isSelectionKeyDown = KeyUtil.isKeyCode(event, [ENTER, SPACE]);\n\n if (isSelectionKeyDown && this.selectionMode === 'none') {\n this.press.emit(this._outputEventValue);\n }\n\n if (!isSelectionKeyDown || this.selectionMode === 'none' || !target.classList.contains('fd-grid-list__item')) {\n return;\n }\n\n this._preventDefault(event);\n\n if (this.selectionMode === 'multiSelect') {\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=\"-1\"\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 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 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 standalone: true,\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, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\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 { KeyUtil, Nullable, RangeSelector, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, Observable, Subscription, filter } from 'rxjs';\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: [{ 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 /** @hidden */\n private readonly _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n private _elRef: ElementRef\n ) {\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._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 = new Array(state.to - state.from + 1).fill(null).map((e, 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 if (document.activeElement?.classList.contains('fd-grid-list__item')) {\n if (KeyUtil.isKeyCode(event, [UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW])) {\n this._handleArrowKeydown(event);\n } else if (\n event.shiftKey &&\n this.selectionMode === 'multiSelect' &&\n KeyUtil.isKeyCode(event, [HOME, END])\n ) {\n this._handleHomeEndKeydown(event);\n }\n }\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 _handleArrowKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n for (let index = 0; index < this._gridListItems.length; index++) {\n const currentItem = this._gridListItems.toArray()[index];\n if (document.activeElement === currentItem._gridListItem.nativeElement) {\n let indexToFocus;\n if (KeyUtil.isKeyCode(event, LEFT_ARROW) || (this._rtl$() && KeyUtil.isKeyCode(event, [RIGHT_ARROW]))) {\n indexToFocus = index - 1;\n } else if (\n KeyUtil.isKeyCode(event, RIGHT_ARROW) ||\n (this._rtl$() && KeyUtil.isKeyCode(event, [LEFT_ARROW]))\n ) {\n indexToFocus = index + 1;\n } else if (KeyUtil.isKeyCode(event, UP_ARROW)) {\n indexToFocus = index - this._getItemsPerRow(currentItem._gridListItem.nativeElement);\n } else if (KeyUtil.isKeyCode(event, DOWN_ARROW)) {\n indexToFocus = index + this._getItemsPerRow(currentItem._gridListItem.nativeElement);\n }\n const itemToFocus = this.gridListItems.toArray()[indexToFocus];\n if (itemToFocus && itemToFocus._gridListItem) {\n if (this.selectionMode === 'multiSelect' && event.shiftKey) {\n this.setSelectedItem(\n currentItem as any,\n indexToFocus,\n currentItem._selectedItem ? GridListSelectionActions.ADD : GridListSelectionActions.REMOVE\n );\n }\n itemToFocus._gridListItem.nativeElement.focus();\n }\n break;\n }\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';\n\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\nconst components = [\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\n@NgModule({\n imports: [...components],\n exports: [...components]\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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"}
|
|
1
|
+
{"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 standalone: true,\n imports: [ToolbarComponent, ToolbarSpacerDirective, IconComponent, FdTranslatePipe]\n})\nexport class GridListFilterBarComponent {\n /** Event is thrown, when the control button is clicked */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n 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 { TitleComponent } from '@fundamental-ngx/core/title';\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 standalone: true,\n imports: [\n NgTemplateOutlet,\n GridListTitleBarSpacerComponent,\n ButtonComponent,\n IconComponent,\n TitleComponent,\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, 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 return;\n }\n\n if (this.type === 'navigation') {\n this._onNavigate(event);\n return;\n }\n\n this.press.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 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 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 standalone: true,\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 { KeyUtil, KeyboardSupportService, Nullable, RangeSelector, RtlService } 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 _rtlService = inject(RtlService, {\n optional: true\n });\n\n /** @hidden */\n private readonly _rtl$ = computed<boolean>(() => !!this._rtlService?.rtlSignal());\n\n /** @hidden */\n constructor(\n private readonly _cd: ChangeDetectorRef,\n private _elRef: ElementRef\n ) {\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 = new Array(state.to - state.from + 1).fill(null).map((e, 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._rtl$() && KeyUtil.isKeyCode(event, [RIGHT_ARROW]))) {\n return currentItemIndex - 1;\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW) || (this._rtl$() && 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';\n\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\nconst components = [\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\n@NgModule({\n imports: [...components],\n exports: [...components]\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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"}
|
|
@@ -4,7 +4,7 @@ import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
|
4
4
|
import * as i1$1 from '@fundamental-ngx/cdk/utils';
|
|
5
5
|
import { KeyUtil, isJsObject, isFunction, isString, RangeSelector, coerceArraySafe, TemplateDirective, resizeObservable, DynamicComponentService, AutoCompleteDirective, SearchHighlightPipe, TruncatedTitleDirective } from '@fundamental-ngx/cdk/utils';
|
|
6
6
|
import { TokenComponent, TokenizerComponent } from '@fundamental-ngx/core/token';
|
|
7
|
-
import { resolveTranslationSyncFn, FdTranslatePipe } from '@fundamental-ngx/i18n';
|
|
7
|
+
import { resolveTranslationSyncFn, FdTranslatePipe, FD_LANGUAGE, TranslationResolver } from '@fundamental-ngx/i18n';
|
|
8
8
|
import { BACKSPACE, ESCAPE, ENTER, CONTROL, TAB, SHIFT, UP_ARROW, RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, ALT, A, SPACE } from '@angular/cdk/keycodes';
|
|
9
9
|
import * as i3$1 from '@fundamental-ngx/cdk/data-source';
|
|
10
10
|
import { MatchingStrategy, DataSourceDirective, BaseDataSource, DataProvider, isDataSource, FD_DATA_SOURCE_TRANSFORMER } from '@fundamental-ngx/cdk/data-source';
|
|
@@ -53,27 +53,22 @@ class MultiAnnouncerDirective {
|
|
|
53
53
|
_makeSearchTermChangeAnnouncements(event) {
|
|
54
54
|
if (KeyUtil.isKeyType(event, 'alphabetical') || KeyUtil.isKeyType(event, 'numeric')) {
|
|
55
55
|
this._liveAnnouncer.clear();
|
|
56
|
-
|
|
56
|
+
const count = this.multiAnnouncerOptions?.length;
|
|
57
|
+
if (!count && !this._noResultsAnnounced) {
|
|
57
58
|
this._buildAnnouncement(this._resolveTranslation('coreMultiInput.noResults'));
|
|
58
59
|
this._noResultsAnnounced = true;
|
|
59
60
|
this._resultsAnnounced = false;
|
|
60
61
|
}
|
|
61
|
-
else if (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this._buildAnnouncement(this._resolveTranslation('coreMultiInput.countListResultsPlural', {
|
|
67
|
-
count: this.multiAnnouncerOptions.length
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
62
|
+
else if (count) {
|
|
63
|
+
const trKey = count === 1 ? 'coreMultiInput.countListResultsSingular' : 'coreMultiInput.countListResultsPlural';
|
|
64
|
+
this._buildAnnouncement(this._resolveTranslation(trKey, { count }));
|
|
70
65
|
this._buildAnnouncement(this._resolveTranslation('coreMultiInput.navigateSelectionsWithArrows'));
|
|
71
66
|
if (!this._resultsAnnounced) {
|
|
72
67
|
this._noResultsAnnounced = false;
|
|
73
68
|
this._resultsAnnounced = true;
|
|
74
69
|
}
|
|
75
70
|
}
|
|
76
|
-
if (this._tokens
|
|
71
|
+
if (this._tokens?.length) {
|
|
77
72
|
this._buildAnnouncement(this._resolveTranslation('coreMultiInput.escapeNavigateTokens'));
|
|
78
73
|
}
|
|
79
74
|
this._makeAnnouncement(this._announcement);
|
|
@@ -912,8 +907,6 @@ class MultiComboboxComponent extends BaseMultiCombobox {
|
|
|
912
907
|
* * 'fit-content' will apply width needed to properly display items inside, independent of control.
|
|
913
908
|
*/
|
|
914
909
|
this.fillControlMode = 'at-least';
|
|
915
|
-
/** Sets invalid entry message. */
|
|
916
|
-
this.invalidEntryMessage = 'Invalid entry';
|
|
917
910
|
/** Time in ms for how long message of invalid entry should be displayed. */
|
|
918
911
|
this.invalidEntryDisplayTime = 3000;
|
|
919
912
|
/**
|
|
@@ -942,6 +935,10 @@ class MultiComboboxComponent extends BaseMultiCombobox {
|
|
|
942
935
|
this.openChange = new Subject();
|
|
943
936
|
/** @hidden */
|
|
944
937
|
this._selectedItems = [];
|
|
938
|
+
/** @hidden */
|
|
939
|
+
this._lang$ = inject(FD_LANGUAGE);
|
|
940
|
+
/** @hidden */
|
|
941
|
+
this._translationResolver = new TranslationResolver();
|
|
945
942
|
/**
|
|
946
943
|
* @hidden
|
|
947
944
|
* Method that selects all possible options.
|
|
@@ -960,6 +957,9 @@ class MultiComboboxComponent extends BaseMultiCombobox {
|
|
|
960
957
|
ngOnInit() {
|
|
961
958
|
this.cvaControl.listenToChanges();
|
|
962
959
|
this._openDataStream(this.matchingStrategy);
|
|
960
|
+
this._lang$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((lang) => {
|
|
961
|
+
this.invalidEntryMessage = this._translationResolver.resolve(lang, 'platformMultiCombobox.invalidEntryError');
|
|
962
|
+
});
|
|
963
963
|
}
|
|
964
964
|
/** @hidden */
|
|
965
965
|
async ngAfterViewInit() {
|