{"version":3,"file":"clr-angular-data-datagrid.mjs","sources":["../../../projects/angular/data/datagrid/built-in/nested-property.ts","../../../projects/angular/data/datagrid/built-in/comparators/datagrid-property-comparator.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-property-numeric-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-property-string-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-string-filter-impl.ts","../../../projects/angular/data/datagrid/enums/sort-order.enum.ts","../../../projects/angular/data/datagrid/providers/custom-filter.ts","../../../projects/angular/data/datagrid/render/constants.ts","../../../projects/angular/data/datagrid/providers/state-debouncer.provider.ts","../../../projects/angular/data/datagrid/providers/page.ts","../../../projects/angular/data/datagrid/providers/filters.ts","../../../projects/angular/data/datagrid/utils/datagrid-filter-registrar.ts","../../../projects/angular/data/datagrid/wrapped-column.ts","../../../projects/angular/data/datagrid/providers/sort.ts","../../../projects/angular/data/datagrid/providers/detail.service.ts","../../../projects/angular/data/datagrid/enums/render-step.enum.ts","../../../projects/angular/data/datagrid/render/render-organizer.ts","../../../projects/angular/data/datagrid/providers/column-resizer.service.ts","../../../projects/angular/data/datagrid/providers/table-size.service.ts","../../../projects/angular/data/datagrid/datagrid-column-separator.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/default.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/expanded-row.ts","../../../projects/angular/data/datagrid/utils/key-navigation-strategies/expanded-columns-row.ts","../../../projects/angular/data/datagrid/utils/key-navigation-utils.ts","../../../projects/angular/data/datagrid/utils/key-navigation-grid.controller.ts","../../../projects/angular/data/datagrid/datagrid-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-numeric-filter.ts","../../../projects/angular/data/datagrid/built-in/filters/datagrid-string-filter.ts","../../../projects/angular/data/datagrid/datagrid-column.ts","../../../projects/angular/data/datagrid/providers/items.ts","../../../projects/angular/data/datagrid/datagrid-items.ts","../../../projects/angular/data/datagrid/datagrid-placeholder.ts","../../../projects/angular/data/datagrid/wrapped-cell.ts","../../../projects/angular/data/datagrid/datagrid-cell.ts","../../../projects/angular/data/datagrid/datagrid-if-expanded.service.ts","../../../projects/angular/data/datagrid/enums/display-mode.enum.ts","../../../projects/angular/data/datagrid/enums/selection-type.ts","../../../projects/angular/data/datagrid/wrapped-row.ts","../../../projects/angular/data/datagrid/providers/selection.ts","../../../projects/angular/data/datagrid/providers/row-action-service.ts","../../../projects/angular/data/datagrid/providers/global-expandable-rows.ts","../../../projects/angular/data/datagrid/providers/display-mode.service.ts","../../../projects/angular/data/datagrid/datagrid-single-selection.directive.ts","../../../projects/angular/data/datagrid/datagrid-selection-cell.directive.ts","../../../projects/angular/data/datagrid/datagrid-row.ts","../../../projects/angular/data/datagrid/datagrid-row.html","../../../projects/angular/data/datagrid/datagrid-virtual-scroll.directive.ts","../../../projects/angular/data/datagrid/enums/column-changes.enum.ts","../../../projects/angular/data/datagrid/providers/columns.service.ts","../../../projects/angular/data/datagrid/providers/state.provider.ts","../../../projects/angular/data/datagrid/render/cell-renderer.ts","../../../projects/angular/data/datagrid/render/row-renderer.ts","../../../projects/angular/data/datagrid/chocolate/datagrid-willy-wonka.ts","../../../projects/angular/data/datagrid/chocolate/actionable-oompa-loompa.ts","../../../projects/angular/data/datagrid/chocolate/expandable-oompa-loompa.ts","../../../projects/angular/data/datagrid/datagrid.ts","../../../projects/angular/data/datagrid/datagrid.html","../../../projects/angular/data/datagrid/datagrid-action-bar.ts","../../../projects/angular/data/datagrid/datagrid-action-overflow.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle-trackby.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle-button.ts","../../../projects/angular/data/datagrid/datagrid-column-toggle.ts","../../../projects/angular/data/datagrid/datagrid-detail-header.ts","../../../projects/angular/data/datagrid/datagrid-detail.ts","../../../projects/angular/data/datagrid/datagrid-detail-body.ts","../../../projects/angular/data/datagrid/providers/column-state.provider.ts","../../../projects/angular/data/datagrid/datagrid-hideable-column.ts","../../../projects/angular/data/datagrid/datagrid-if-detail.ts","../../../projects/angular/data/datagrid/datagrid-row-detail.ts","../../../projects/angular/data/datagrid/datagrid-footer.ts","../../../projects/angular/data/datagrid/datagrid-page-size.ts","../../../projects/angular/data/datagrid/datagrid-pagination.ts","../../../projects/angular/data/datagrid/interfaces/state.interface.ts","../../../projects/angular/data/datagrid/interfaces/filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/string-filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/numeric-filter.interface.ts","../../../projects/angular/data/datagrid/interfaces/comparator.interface.ts","../../../projects/angular/data/datagrid/interfaces/virtual-scroll-data-range.interface.ts","../../../projects/angular/data/datagrid/datagrid-detail-registerer.ts","../../../projects/angular/data/datagrid/render/header-renderer.ts","../../../projects/angular/data/datagrid/render/noop-dom-adapter.ts","../../../projects/angular/data/datagrid/render/main-renderer.ts","../../../projects/angular/data/datagrid/render/row-detail-renderer.ts","../../../projects/angular/data/datagrid/datagrid.module.ts","../../../projects/angular/data/datagrid/index.ts","../../../projects/angular/data/datagrid/clr-angular-data-datagrid.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Generic accessor for deep object properties\n * that can be specified as simple dot-separated strings.\n */\nexport class NestedProperty<T = any> {\n  private splitProp: string[];\n\n  constructor(private prop: string) {\n    if (prop.indexOf('.') >= 0) {\n      this.splitProp = prop.split('.');\n    }\n  }\n\n  // Safe getter for a deep object property, will not throw an error but return\n  // undefined if one of the intermediate properties is null or undefined.\n  getPropValue(item: T): any {\n    if (this.splitProp) {\n      let value = item;\n      for (const nestedProp of this.splitProp) {\n        if (\n          value === null ||\n          typeof value === 'undefined' ||\n          typeof (value as Record<string, any>)[nestedProp] === 'undefined'\n        ) {\n          return undefined;\n        }\n        value = (value as Record<string, any>)[nestedProp];\n      }\n      return value;\n    } else {\n      return (item as Record<string, any>)[this.prop];\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridComparatorInterface } from '../../interfaces/comparator.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyComparator<T = any> implements ClrDatagridComparatorInterface<T> {\n  private nestedProp: NestedProperty<T>;\n\n  constructor(public prop: string) {\n    this.nestedProp = new NestedProperty(prop);\n  }\n\n  compare(a: T, b: T): number {\n    let propA = this.nestedProp.getPropValue(a);\n    let propB = this.nestedProp.getPropValue(b);\n\n    if (typeof propA === 'string') {\n      propA = propA.toLowerCase();\n    }\n\n    if (typeof propB === 'string') {\n      propB = propB.toLowerCase();\n    }\n\n    if (typeof propA === 'undefined' || propA === null) {\n      if (typeof propB === 'undefined' || propB === null) {\n        return 0;\n      } else {\n        return 1;\n      }\n    } else {\n      if (typeof propB === 'undefined' || propB === null) {\n        return -1;\n      } else if (propA < propB) {\n        return -1;\n      } else if (propA > propB) {\n        return 1;\n      } else {\n        return 0;\n      }\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyNumericFilter<T = any> implements ClrDatagridNumericFilterInterface<T> {\n  private nestedProp: NestedProperty<T>;\n\n  constructor(\n    public prop: string,\n    public exact = false\n  ) {\n    this.nestedProp = new NestedProperty(prop);\n  }\n\n  accepts(item: T, low: number, high: number): boolean {\n    const propValue = this.nestedProp.getPropValue(item);\n    if (propValue === undefined) {\n      return false;\n    }\n    if (low !== null && (typeof propValue !== 'number' || propValue < low)) {\n      return false;\n    }\n    if (high !== null && (typeof propValue !== 'number' || propValue > high)) {\n      return false;\n    }\n    return true;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { DatagridPropertyNumericFilter } from './datagrid-property-numeric-filter';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\n\nexport class DatagridNumericFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n  /**\n   * The Observable required as part of the Filter interface\n   */\n  private _changes = new Subject<[number, number]>();\n\n  /**\n   * Internal values and accessor\n   */\n  private _low: number | null = null;\n  private _high: number | null = null;\n\n  constructor(public filterFn: ClrDatagridNumericFilterInterface<T>) {}\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get changes(): Observable<[number, number]> {\n    return this._changes.asObservable();\n  }\n\n  get value(): [number, number] {\n    return [this._low, this._high];\n  }\n  set value(vals: [number, number]) {\n    const low = vals[0];\n    const high = vals[1];\n    if (low !== this._low || high !== this._high) {\n      this._low = low;\n      this._high = high;\n      this._changes.next([this._low, this._high]);\n    }\n  }\n\n  get low() {\n    return this._low;\n  }\n  set low(low: number) {\n    if (low !== this._low) {\n      this._low = low;\n      this._changes.next([this._low, this._high]);\n    }\n  }\n\n  get high() {\n    return this._high;\n  }\n  set high(high: number) {\n    if (high !== this._high) {\n      this._high = high;\n      this._changes.next([this._low, this._high]);\n    }\n  }\n\n  get state() {\n    if (this.filterFn instanceof DatagridPropertyNumericFilter) {\n      return {\n        property: this.filterFn.prop,\n        low: this._low,\n        high: this._high,\n      };\n    }\n    return this;\n  }\n\n  /**\n   * Indicates if the filter is currently active, (at least one input is set)\n   */\n  isActive(): boolean {\n    return this._low !== null || this.high !== null;\n  }\n\n  /**\n   * Tests if an item matches a search text\n   */\n  accepts(item: T): boolean {\n    // We have a filter function in case someone wants to implement a numeric\n    // filter that always passes nulls or similar\n    return this.filterFn.accepts(item, this._low, this._high);\n  }\n\n  equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n    if (other instanceof DatagridNumericFilterImpl) {\n      if (other.filterFn instanceof DatagridPropertyNumericFilter) {\n        return (\n          this.filterFn instanceof DatagridPropertyNumericFilter &&\n          other.filterFn.prop === this.filterFn.prop &&\n          other.low === this._low &&\n          other.high === this._high\n        );\n      }\n      return other === this;\n    }\n    return false;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyStringFilter<T = any> implements ClrDatagridStringFilterInterface<T> {\n  private nestedProp: NestedProperty<T>;\n\n  constructor(\n    public prop: string,\n    public exact = false\n  ) {\n    this.nestedProp = new NestedProperty(prop);\n  }\n\n  accepts(item: T, search: string): boolean {\n    const propValue = this.nestedProp.getPropValue(item);\n    if (typeof propValue === 'undefined') {\n      return false;\n    } else if (this.exact) {\n      return ('' + propValue).toLowerCase() === search;\n    } else {\n      return ('' + propValue).toLowerCase().indexOf(search) >= 0;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { DatagridPropertyStringFilter } from './datagrid-property-string-filter';\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\n\nexport class DatagridStringFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n  /**\n   * The Observable required as part of the Filter interface\n   */\n  private _changes = new Subject<string>();\n\n  /**\n   * Input value converted to lowercase\n   */\n  private _lowerCaseValue = '';\n\n  /**\n   * Raw input value\n   */\n  private _rawValue = '';\n\n  constructor(public filterFn: ClrDatagridStringFilterInterface<T>) {}\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get changes(): Observable<string> {\n    return this._changes.asObservable();\n  }\n\n  get lowerCaseValue() {\n    return this._lowerCaseValue;\n  }\n\n  get state() {\n    if (this.filterFn instanceof DatagridPropertyStringFilter) {\n      return {\n        property: this.filterFn.prop,\n        value: this.value,\n      };\n    }\n    return this;\n  }\n\n  get value(): string {\n    return this._rawValue;\n  }\n  /**\n   * Common setter for the input value\n   */\n  set value(value: string) {\n    if (!value) {\n      value = '';\n    }\n    if (value !== this._rawValue) {\n      this._rawValue = value;\n      this._lowerCaseValue = value.toLowerCase().trim();\n      this._changes.next(value);\n    }\n  }\n\n  /**\n   * Indicates if the filter is currently active, meaning the input is not empty\n   */\n  isActive(): boolean {\n    return !!this.value;\n  }\n\n  /**\n   * Tests if an item matches a search text\n   */\n  accepts(item: T): boolean {\n    // We always test with the lowercase value of the input, to stay case insensitive\n    return this.filterFn.accepts(item, this.lowerCaseValue);\n  }\n\n  equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n    if (other instanceof DatagridStringFilterImpl) {\n      if (other.filterFn instanceof DatagridPropertyStringFilter) {\n        return (\n          this.filterFn instanceof DatagridPropertyStringFilter &&\n          other.filterFn.prop === this.filterFn.prop &&\n          other.value === this.value\n        );\n      }\n      return other === this;\n    }\n    return false;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Enumeration representing the sorting order of a datagrid column. It is a constant Enum,\n * i.e. each value needs to be treated as a `number`, starting at index 0.\n *\n * @export\n * @enum {number}\n */\nexport enum ClrDatagridSortOrder {\n  UNSORTED = 0,\n  ASC = 1,\n  DESC = -1,\n}\n\nexport enum ClrDatagridAriaSortOrder {\n  UNSORTED = 'none',\n  ASC = 'ascending',\n  DESC = 'descending',\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport abstract class CustomFilter {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';\nexport const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n/*\n * This provider implements some form of synchronous debouncing through a lock pattern\n * to avoid emitting multiple state changes for a single user action.\n */\n@Injectable()\nexport class StateDebouncer {\n  /*\n   * This is the lock, to only emit once all the changes have finished processing\n   */\n  private nbChanges = 0;\n\n  /**\n   * The Observable that lets other classes subscribe to global state changes\n   */\n  private _change = new Subject<void>();\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<void> {\n    return this._change.asObservable();\n  }\n\n  changeStart() {\n    this.nbChanges++;\n  }\n\n  changeDone() {\n    if (--this.nbChanges === 0) {\n      this._change.next();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Page {\n  activated = false;\n\n  /**\n   * Page size, a value of 0 means no pagination\n   */\n  private _size = 0;\n\n  /**\n   * Total items (needed to guess the last page)\n   */\n  private _totalItems?: number;\n\n  /**\n   * Last page\n   */\n  private _last: number;\n\n  /**\n   * Current page\n   */\n  private _current = 1;\n\n  /**\n   * The Observable that lets other classes subscribe to page changes\n   */\n  private _change = new Subject<number>();\n\n  private preventEmit = false;\n  private _sizeChange = new Subject<number>();\n\n  constructor(private stateDebouncer: StateDebouncer) {}\n\n  get size(): number {\n    return this._size;\n  }\n  set size(size: number) {\n    const oldSize = this._size;\n    if (size !== oldSize) {\n      if (!this.preventEmit) {\n        this.stateDebouncer.changeStart();\n      }\n      this._size = size;\n      if (size === 0) {\n        this._current = 1;\n      } else {\n        // Yeap. That's the formula to keep the first item from the old page still\n        // displayed in the new one.\n        this._current = Math.floor((oldSize / size) * (this._current - 1)) + 1;\n      }\n      // We always emit an event even if the current page index didn't change, because\n      // the size changing means the items inside the page are different\n      if (!this.preventEmit) {\n        this._change.next(this._current);\n        this._sizeChange.next(this._size);\n        this.stateDebouncer.changeDone();\n      }\n    }\n    this.preventEmit = false;\n  }\n\n  get totalItems(): number {\n    return this._totalItems || 0; // remains 0 if not set to avoid breaking change\n  }\n  set totalItems(total: number) {\n    this._totalItems = total;\n    // If we have less items than before, we might need to change the current page\n    if (this.current > this.last) {\n      this.current = this.last;\n    }\n  }\n\n  get last(): number {\n    if (this._last) {\n      return this._last;\n    }\n    // If the last page isn't known, we compute it from the last item's index\n    if (this.size > 0 && this.totalItems) {\n      return Math.ceil(this.totalItems / this.size);\n    }\n    return 1;\n  }\n  set last(page: number) {\n    this._last = page;\n  }\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<number> {\n    return this._change.asObservable();\n  }\n\n  get sizeChange(): Observable<number> {\n    return this._sizeChange.asObservable();\n  }\n\n  get current(): number {\n    return this._current;\n  }\n  set current(page: number) {\n    if (page !== this._current) {\n      this.stateDebouncer.changeStart();\n      this._current = page;\n      this._change.next(page);\n      this.stateDebouncer.changeDone();\n    }\n  }\n\n  /**\n   * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n   */\n  get firstItem(): number {\n    if (this._totalItems === 0) {\n      return -1;\n    }\n\n    if (this.size === 0) {\n      return 0;\n    }\n    return (this.current - 1) * this.size;\n  }\n\n  /**\n   * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n   */\n  get lastItem(): number {\n    if (this._totalItems === 0) {\n      return -1;\n    }\n\n    if (this.size === 0) {\n      return this.totalItems - 1;\n    }\n    let lastInPage = this.current * this.size - 1;\n    if (this.totalItems) {\n      lastInPage = Math.min(lastInPage, this.totalItems - 1);\n    }\n    return lastInPage;\n  }\n\n  /**\n   * Moves to the previous page if it exists\n   */\n  previous() {\n    if (this.current > 1) {\n      this.current--;\n    }\n  }\n\n  /**\n   * Moves to the next page if it exists\n   */\n  next() {\n    if (this.current < this.last) {\n      this.current++;\n    }\n  }\n\n  /**\n   * Resets the page size to 0\n   */\n  resetPageSize(preventEmit = false): void {\n    this.preventEmit = preventEmit;\n    this.size = 0;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { Page } from './page';\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\n\n@Injectable()\nexport class FiltersProvider<T = any> {\n  /**\n   * This subject is the list of filters that changed last, not the whole list.\n   * We emit a list rather than just one filter to allow batch changes to several at once.\n   */\n  private _change = new Subject<ClrDatagridFilterInterface<T>[]>();\n\n  /**\n   * List of all filters, whether they're active or not\n   */\n  private _all: RegisteredFilter<T, ClrDatagridFilterInterface<T>>[] = [];\n\n  constructor(\n    private _page: Page,\n    private stateDebouncer: StateDebouncer\n  ) {}\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<ClrDatagridFilterInterface<T>[]> {\n    return this._change.asObservable();\n  }\n\n  /**\n   * Tests if at least one filter is currently active\n   */\n  hasActiveFilters(): boolean {\n    // We do not use getActiveFilters() because this function will be called much more often\n    // and stopping the loop early might be relevant.\n    for (const { filter } of this._all) {\n      if (filter && filter.isActive()) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Returns a list of all currently active filters\n   */\n  getActiveFilters(): ClrDatagridFilterInterface<T>[] {\n    const ret: ClrDatagridFilterInterface<T>[] = [];\n    for (const { filter } of this._all) {\n      if (filter && filter.isActive()) {\n        ret.push(filter);\n      }\n    }\n    return ret;\n  }\n\n  /**\n   * Registers a filter, and returns a deregistration function\n   */\n  add<F extends ClrDatagridFilterInterface<T>>(filter: F): RegisteredFilter<T, F> {\n    const subscription = filter.changes.subscribe(() => this.resetPageAndEmitFilterChange([filter]));\n    let hasUnregistered = false;\n    const registered = new RegisteredFilter(filter, () => {\n      if (hasUnregistered) {\n        return;\n      }\n      subscription.unsubscribe();\n      const matchIndex = this._all.findIndex(item => item.filter === filter);\n      if (matchIndex >= 0) {\n        this._all.splice(matchIndex, 1);\n      }\n      if (filter.isActive()) {\n        this.resetPageAndEmitFilterChange([]);\n      }\n      hasUnregistered = true;\n    });\n    this._all.push(registered);\n    if (filter.isActive()) {\n      this.resetPageAndEmitFilterChange([filter]);\n    }\n    return registered;\n  }\n\n  /**\n   * Accepts an item if it is accepted by all currently active filters\n   */\n  accepts(item: T): boolean {\n    for (const { filter } of this._all) {\n      if (filter && filter.isActive() && !filter.accepts(item)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private resetPageAndEmitFilterChange(filters: ClrDatagridFilterInterface<T>[]) {\n    this.stateDebouncer.changeStart();\n    // filtering may change the page number such that current page number doesn't exist in the filtered dataset.\n    // So here we always set the current page to 1 so that it'll fetch first page's data with the given filter.\n    this._page.current = 1;\n    this._change.next(filters);\n    this.stateDebouncer.changeDone();\n  }\n}\n\nexport class RegisteredFilter<T, F extends ClrDatagridFilterInterface<T>> {\n  constructor(\n    public filter: F,\n    public unregister: () => void\n  ) {}\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, OnDestroy } from '@angular/core';\n\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { FiltersProvider, RegisteredFilter } from '../providers/filters';\n\n@Directive()\nexport abstract class DatagridFilterRegistrar<T, F extends ClrDatagridFilterInterface<T>> implements OnDestroy {\n  /**\n   * @NOTEe Type `any` is set here to be able to pass templateStrictMode\n   */\n  registered: any;\n\n  protected constructor(private filters: FiltersProvider<T>) {}\n\n  get filter(): F {\n    return this.registered && this.registered.filter;\n  }\n\n  ngOnDestroy(): void {\n    this.deleteFilter();\n  }\n\n  setFilter(filter: F | RegisteredFilter<T, F>) {\n    // If we previously had another filter, we unregister it\n    this.deleteFilter();\n    if (filter instanceof RegisteredFilter) {\n      this.registered = filter;\n    } else if (filter) {\n      this.registered = this.filters.add(filter);\n    }\n  }\n\n  deleteFilter() {\n    if (this.registered) {\n      this.registered.unregister();\n      delete this.registered;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'dg-wrapped-column',\n  template: `\n    <ng-template #columnPortal>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  standalone: false,\n})\nexport class WrappedColumn implements AfterViewInit, OnDestroy {\n  @ViewChild('columnPortal') templateRef: TemplateRef<void>;\n  columnView: EmbeddedViewRef<void>; // the columns projected view (in memory)\n\n  ngAfterViewInit() {\n    // Create the cells view in memory, not the DOM.\n    this.columnView = this.templateRef.createEmbeddedView(null);\n  }\n\n  ngOnDestroy() {\n    this.columnView.destroy();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { ClrDatagridComparatorInterface } from '../interfaces/comparator.interface';\n\n@Injectable()\nexport class Sort<T = any> {\n  /**\n   * Currently active comparator\n   */\n  private _comparator: ClrDatagridComparatorInterface<T>;\n\n  /**\n   * Ascending order if false, descending if true\n   */\n  private _reverse = false;\n\n  /**\n   * The Observable that lets other classes subscribe to sort changes\n   */\n  private _change = new Subject<Sort<T>>();\n\n  constructor(private stateDebouncer: StateDebouncer) {}\n\n  get comparator(): ClrDatagridComparatorInterface<T> {\n    return this._comparator;\n  }\n  set comparator(value: ClrDatagridComparatorInterface<T>) {\n    this.stateDebouncer.changeStart();\n    this._comparator = value;\n    this.emitChange();\n    this.stateDebouncer.changeDone();\n  }\n\n  get reverse(): boolean {\n    return this._reverse;\n  }\n  set reverse(value: boolean) {\n    this.stateDebouncer.changeStart();\n    this._reverse = value;\n    this.emitChange();\n    this.stateDebouncer.changeDone();\n  }\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<Sort<T>> {\n    return this._change.asObservable();\n  }\n\n  /**\n   * Sets a comparator as the current one, or toggles reverse if the comparator is already used. The\n   * optional forceReverse input parameter allows to override that toggling behavior by sorting in\n   * reverse order if `true`.\n   *\n   * @memberof Sort\n   */\n  toggle(sortBy: ClrDatagridComparatorInterface<T>, forceReverse?: boolean) {\n    this.stateDebouncer.changeStart();\n    // We modify private properties directly, to batch the change event\n    if (this.comparator === sortBy) {\n      this._reverse = typeof forceReverse !== 'undefined' ? forceReverse || !this._reverse : !this._reverse;\n    } else {\n      this._comparator = sortBy;\n      this._reverse = typeof forceReverse !== 'undefined' ? forceReverse : false;\n    }\n    this.emitChange();\n    this.stateDebouncer.changeDone();\n  }\n\n  /**\n   * Clears the current sorting order\n   */\n  clear() {\n    this.comparator = null;\n  }\n\n  /**\n   * Compares two objects according to the current comparator\n   */\n  compare(a: T, b: T): number {\n    return (this.reverse ? -1 : 1) * this.comparator.compare(a, b);\n  }\n\n  private emitChange() {\n    this._change.next(this);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ModalStackService } from '@clr/angular/modal';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class DetailService {\n  id: string;\n\n  private preventScroll = false;\n  private toggleState = false;\n  private cache: any;\n  private button: HTMLButtonElement;\n  private _enabled = false;\n  private _state = new BehaviorSubject<boolean | null>(this.toggleState);\n\n  constructor(private readonly modalStackService: ModalStackService) {}\n\n  get enabled(): boolean {\n    return this._enabled;\n  }\n  set enabled(state: boolean) {\n    this._enabled = state;\n  }\n\n  get preventFocusScroll(): boolean {\n    return this.preventScroll;\n  }\n  set preventFocusScroll(preventScroll: boolean) {\n    this.preventScroll = preventScroll;\n  }\n\n  get state() {\n    return this.cache;\n  }\n\n  get stateChange(): Observable<boolean | null> {\n    return this._state.asObservable();\n  }\n\n  get isOpen() {\n    return this.toggleState === true;\n  }\n\n  open(item: any, button?: HTMLButtonElement) {\n    this.cache = item;\n    this.button = button;\n    this.toggleState = true;\n    this._state.next(this.toggleState);\n    this.modalStackService.trackModalOpen(this);\n  }\n\n  close() {\n    this.toggleState = false;\n    this.returnFocus();\n    this._state.next(this.toggleState);\n    this.modalStackService.trackModalClose(this);\n  }\n\n  returnFocus() {\n    if (this.button) {\n      this.button.focus({ preventScroll: this.preventFocusScroll });\n      this.button = null;\n    }\n  }\n\n  toggle(item: any, button?: HTMLButtonElement) {\n    if (this.isRowOpen(item) || !item) {\n      this.close();\n    } else {\n      this.open(item, button);\n    }\n  }\n\n  isRowOpen(item: any) {\n    return !!(this.toggleState && this.cache === item);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridRenderStep {\n  ALIGN_COLUMNS,\n  CALCULATE_MODE_ON,\n  CALCULATE_MODE_OFF,\n  CLEAR_WIDTHS, // Note this is listened to by both cells and columns\n  COMPUTE_COLUMN_WIDTHS,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\n\n@Injectable()\nexport class DatagridRenderOrganizer {\n  protected _renderStep = new Subject<DatagridRenderStep>();\n\n  private alreadySized = false;\n\n  get renderStep(): Observable<DatagridRenderStep> {\n    return this._renderStep.asObservable();\n  }\n\n  filterRenderSteps(step: DatagridRenderStep) {\n    return this.renderStep.pipe(filter(testStep => step === testStep));\n  }\n\n  resize() {\n    this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_ON);\n    if (this.alreadySized) {\n      this._renderStep.next(DatagridRenderStep.CLEAR_WIDTHS);\n    }\n    this._renderStep.next(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS);\n    this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS); // NOT USED\n    this.alreadySized = true;\n    this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ElementRef, Injectable } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\n\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\nconst MIN_COLUMN_WIDTH = 96;\n\n// This service allows DatagridHeaderRenderer and ClrDatagridColumnSeparator\n// to share column resize data with each other.\n\n@Injectable()\nexport class ColumnResizerService {\n  // is it within the maximum resize range to the left\n  isWithinMaxResizeRange: boolean;\n\n  private widthBeforeResize: number;\n  private _resizedBy = 0;\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private domAdapter: DomAdapter,\n    private organizer: DatagridRenderOrganizer\n  ) {}\n\n  get resizedBy() {\n    return this._resizedBy;\n  }\n\n  get minColumnWidth() {\n    return this.domAdapter.minWidth(this.el.nativeElement) || MIN_COLUMN_WIDTH;\n  }\n\n  get maxResizeRange() {\n    return this.widthBeforeResize - this.minColumnWidth;\n  }\n\n  get widthAfterResize(): number {\n    return this.widthBeforeResize + this._resizedBy;\n  }\n\n  startResize(): void {\n    this._resizedBy = 0;\n    this.isWithinMaxResizeRange = true;\n    this.widthBeforeResize = this.domAdapter.clientRect(this.el.nativeElement).width;\n  }\n\n  endResize(): void {\n    this.organizer.resize();\n  }\n\n  calculateResize(resizedBy: number): void {\n    // calculates the resize amount within the allowed range\n    if (resizedBy < -this.maxResizeRange) {\n      this._resizedBy = -this.maxResizeRange;\n      this.isWithinMaxResizeRange = false;\n    } else {\n      this._resizedBy = resizedBy;\n      this.isWithinMaxResizeRange = true;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n/**\n * @description\n * Internal datagrid service that holds a reference to the clr-dg-table element and exposes a method to get height.\n */\n@Injectable()\nexport class TableSizeService {\n  private _tableRef: HTMLElement;\n\n  constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n  get tableRef(): HTMLElement {\n    return this._tableRef;\n  }\n  set tableRef(element: HTMLElement) {\n    this._tableRef = element;\n  }\n\n  set table(table: ElementRef<HTMLElement>) {\n    if (isPlatformBrowser(this.platformId) && table.nativeElement) {\n      this.tableRef = table.nativeElement.querySelector('.datagrid-table');\n    }\n  }\n\n  // Used when resizing columns to show the column border being dragged.\n  getColumnDragHeight(): string {\n    if (!this.tableRef) {\n      return null;\n    }\n    return `${this.tableRef.clientHeight}px`;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  AfterViewInit,\n  Component,\n  DOCUMENT,\n  ElementRef,\n  Inject,\n  NgZone,\n  OnDestroy,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService, Keys, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ColumnResizerService } from './providers/column-resizer.service';\nimport { TableSizeService } from './providers/table-size.service';\n\n// Default resize length on each keyboard move event\nconst KEYBOARD_RESIZE_LENGTH = 12;\n\n@Component({\n  selector: 'clr-dg-column-separator',\n  template: `\n    <button\n      type=\"button\"\n      class=\"datagrid-column-handle\"\n      [attr.aria-label]=\"commonString.keys.columnSeparatorAriaLabel\"\n      [attr.aria-describedby]=\"descriptionId\"\n      cdkDrag\n      cdkDragLockAxis=\"x\"\n      (cdkDragStarted)=\"showTracker()\"\n      (cdkDragMoved)=\"moveTracker($event.distance.x)\"\n      (cdkDragEnded)=\"hideTracker(); $event.source._dragRef.reset()\"\n      #columnHandle\n    ></button>\n    <span class=\"clr-sr-only\" [attr.id]=\"descriptionId\">\n      {{ commonString.keys.columnSeparatorDescription }}\n    </span>\n    <div class=\"datagrid-column-resize-tracker\" #resizeTracker></div>\n  `,\n  host: {\n    '[class.datagrid-column-separator]': 'true',\n  },\n  standalone: false,\n})\nexport class ClrDatagridColumnSeparator implements AfterViewInit, OnDestroy {\n  columnSeparatorId = uniqueIdFactory();\n\n  private resizeStartedOnKeyDown = false;\n  private isWithinMaxResizeRange: boolean;\n  private unlisteners: (() => void)[] = [];\n\n  @ViewChild('resizeTracker') private resizeTrackerRef: ElementRef<HTMLElement>;\n  @ViewChild('columnHandle') private columnHandleRef: ElementRef<HTMLElement>;\n\n  constructor(\n    private columnResizerService: ColumnResizerService,\n    private renderer: Renderer2,\n    private ngZone: NgZone,\n    private tableSizeService: TableSizeService,\n    public commonString: ClrCommonStringsService,\n    @Inject(DOCUMENT) private document: any\n  ) {}\n\n  get descriptionId(): string {\n    return `${this.columnSeparatorId}-aria-describedby`;\n  }\n\n  private get resizeTrackerEl() {\n    return this.resizeTrackerRef.nativeElement;\n  }\n\n  private get columnHandleEl() {\n    return this.columnHandleRef.nativeElement;\n  }\n\n  ngAfterViewInit() {\n    this.ngZone.runOutsideAngular(() => {\n      this.unlisteners.push(\n        this.renderer.listen(this.columnHandleEl, 'keydown', event => {\n          this.showTrackerOnFirstKeyDown(event);\n          this.moveTrackerOnKeyDown(event);\n        })\n      );\n      this.unlisteners.push(\n        this.renderer.listen(this.columnHandleEl, 'keyup', event => {\n          this.hideTrackerOnKeyUp(event);\n        })\n      );\n    });\n  }\n\n  ngOnDestroy() {\n    this.unlisteners.forEach(unlistener => unlistener());\n  }\n\n  showTracker(): void {\n    this.columnResizerService.startResize();\n    const tableHeight = this.tableSizeService.getColumnDragHeight();\n    this.renderer.setStyle(this.resizeTrackerEl, 'height', tableHeight);\n    this.renderer.setStyle(this.resizeTrackerEl, 'display', 'block');\n  }\n\n  moveTracker(movedBy: number): void {\n    this.columnResizerService.calculateResize(movedBy);\n    this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(${this.columnResizerService.resizedBy}px)`);\n    this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');\n    this.redFlagTracker();\n  }\n\n  hideTracker(): void {\n    this.columnResizerService.endResize();\n    this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');\n    this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);\n    this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);\n    this.renderer.setStyle(this.document.body, 'cursor', 'auto');\n  }\n\n  private showTrackerOnFirstKeyDown(event: KeyboardEvent): void {\n    if (!this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n      this.resizeStartedOnKeyDown = true;\n      this.renderer.addClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n      this.showTracker();\n    }\n  }\n\n  private moveTrackerOnKeyDown(event: KeyboardEvent): void {\n    if (this.isArrowLeftKeyEvent(event)) {\n      event.stopPropagation();\n      this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);\n    } else if (this.isArrowRightKeyEvent(event)) {\n      event.stopPropagation();\n      this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);\n    }\n  }\n\n  private hideTrackerOnKeyUp(event: KeyboardEvent): void {\n    if (this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n      this.resizeStartedOnKeyDown = false;\n      this.renderer.removeClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n      this.hideTracker();\n      this.columnHandleEl.focus();\n    }\n  }\n\n  private redFlagTracker(): void {\n    if (this.isWithinMaxResizeRange !== this.columnResizerService.isWithinMaxResizeRange) {\n      this.isWithinMaxResizeRange = this.columnResizerService.isWithinMaxResizeRange;\n      if (!this.isWithinMaxResizeRange) {\n        this.renderer.addClass(this.resizeTrackerEl, 'exceeded-max');\n      } else {\n        this.renderer.removeClass(this.resizeTrackerEl, 'exceeded-max');\n      }\n    }\n  }\n\n  private isArrowLeftKeyEvent(event: KeyboardEvent) {\n    return event.key === Keys.ArrowLeft;\n  }\n\n  private isArrowRightKeyEvent(event: KeyboardEvent) {\n    return event.key === Keys.ArrowRight;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { KeyNavigationGridStrategyInterface } from '../../interfaces/key-nav-grid-strategy.interface';\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { KeyNavigationUtils } from '../key-navigation-utils';\n\nexport class DefaultKeyNavigationStrategy implements KeyNavigationGridStrategyInterface {\n  constructor(protected utils: KeyNavigationUtils) {}\n\n  keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n    if (\n      this.utils.isSingleCellExpandedRow(nextCellCoords.y) &&\n      !isActionCell &&\n      this.utils.isDetailsRow(nextCellCoords.y)\n    ) {\n      nextCellCoords.x = 0;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      if (isActionCell) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      } else {\n        nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (!isActionCell && this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y + 1;\n\n      nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n        ? 0\n        : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n\n  keyLeft(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.x === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.x = currentCellCoords.x - 1;\n\n    return nextCellCoords;\n  }\n\n  keyRight(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    // calculate numOfColumns based on header cells.\n    const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    nextCellCoords.x = currentCellCoords.x < numOfColumns ? nextCellCoords.x + 1 : nextCellCoords.x;\n\n    return nextCellCoords;\n  }\n\n  keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n\n    // calculate X based on header cells.\n    nextCellCoords.x = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (ctrlKey) {\n      nextCellCoords.y = numOfRows;\n\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = this.utils.getCellsForRow(nextCellCoords.y).length - 1;\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    nextCellCoords.x = 0;\n\n    if (ctrlKey) {\n      nextCellCoords.y = 0;\n    }\n\n    return nextCellCoords;\n  }\n\n  keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n          ? 0\n          : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y + 1;\n\n        nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n          ? 0\n          : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else {\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      }\n    }\n\n    return nextCellCoords;\n  }\n\n  keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (this.utils.isActionCell(currentCellCoords) && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y) && this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      nextCellCoords.x = 0;\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y + 1;\n      nextCellCoords.x = this.utils.isSingleCellExpandedRow(nextCellCoords.y)\n        ? 0\n        : nextCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { DefaultKeyNavigationStrategy } from './default';\n\nexport class ExpandedRowKeyNavigationStrategy extends DefaultKeyNavigationStrategy {\n  override keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(currentCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y - 1;\n      }\n\n      switch (true) {\n        case this.utils.isDetailsRow(nextCellCoords.y):\n          nextCellCoords.x = 0;\n          break;\n        case this.utils.isDetailsRow(currentCellCoords.y) === false:\n          nextCellCoords.x = currentCellCoords.x;\n          break;\n        default:\n          nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y) && nextCellCoords.y > 0) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y + 1;\n      }\n\n      if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = 0;\n      } else {\n        nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else {\n      nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyLeft(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyLeft(currentCellCoords);\n    }\n\n    if (currentCellCoords.x !== 0) {\n      nextCellCoords.x = currentCellCoords.x - 1;\n    } else if (!this.utils.isActionCell(currentCellCoords)) {\n      nextCellCoords.y = currentCellCoords.y - 1;\n      nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y) - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyRight(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyRight(currentCellCoords);\n    }\n\n    // calculate numOfColumns based on header cells.\n    const numOfColumns = this.utils.rows?.length - 1 ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (currentCellCoords.x >= numOfColumns) {\n      return nextCellCoords;\n    }\n\n    if (\n      this.utils.isActionCell(currentCellCoords) &&\n      currentCellCoords.x === this.utils.actionCellCount(currentCellCoords.x) - 1 &&\n      this.utils.isRowReplaced(currentCellCoords.y) &&\n      !this.utils.isDetailsRow(currentCellCoords.y)\n    ) {\n      nextCellCoords.y = currentCellCoords.y + 1;\n      nextCellCoords.x = 0;\n    } else {\n      nextCellCoords.x = currentCellCoords.x + 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if ((!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) || ctrlKey) {\n      return super.keyEnd(currentCellCoords, ctrlKey);\n    }\n\n    nextCellCoords.x = this.utils.getCellsForRow(currentCellCoords.y).length - 1;\n\n    return nextCellCoords;\n  }\n\n  override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (!this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isRowReplaced(currentCellCoords.y)) {\n      return super.keyHome(currentCellCoords, ctrlKey);\n    }\n\n    nextCellCoords.x = 0;\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (ctrlKey) {\n      nextCellCoords.y = 0;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = 0;\n        }\n      } else if (!this.utils.isDetailsRow(currentCellCoords.y)) {\n        if (this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.x = 0;\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.x = this.utils.actionCellCount(nextCellCoords.y);\n        }\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (nextCellCoords.y < numOfRows && !this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = 0;\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CellCoordinates } from '../key-navigation-grid.controller';\nimport { ExpandedRowKeyNavigationStrategy } from './expanded-row';\n\nexport class ExpandedColumnsRowKeyNavigationStrategy extends ExpandedRowKeyNavigationStrategy {\n  override keyUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    if (currentCellCoords.y === 0) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y - 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyUp(currentCellCoords);\n    }\n\n    const isActionCell = this.utils.isActionCell(currentCellCoords);\n\n    if (isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    } else if (this.utils.isRowReplaced(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n\n      if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n    } else if (!isActionCell && this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const numOfColumns = numOfRows ? this.utils.getCellsForRow(0).length - 1 : 0;\n\n    if (currentCellCoords.y >= numOfRows) {\n      return nextCellCoords;\n    }\n\n    nextCellCoords.y = currentCellCoords.y + 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyDown(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n      } else if (this.utils.getCellsForRow(currentCellCoords.y).length > numOfColumns) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      } else {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      }\n    } else {\n      nextCellCoords.y = nextCellCoords.y < numOfRows ? nextCellCoords.y + 1 : nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyLeft(currentCellCoords: CellCoordinates) {\n    return super.keyLeft(currentCellCoords);\n  }\n\n  override keyRight(currentCellCoords: CellCoordinates) {\n    return super.keyRight(currentCellCoords);\n  }\n\n  override keyEnd(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    return super.keyEnd(currentCellCoords, ctrlKey);\n  }\n\n  override keyHome(currentCellCoords: CellCoordinates, ctrlKey: boolean) {\n    return super.keyHome(currentCellCoords, ctrlKey);\n  }\n\n  override keyPageUp(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y - itemsPerPage > 0 ? currentCellCoords.y - itemsPerPage + 1 : 1;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyPageUp(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y)) {\n        if (!this.utils.isDetailsRow(nextCellCoords.y)) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n\n  override keyPageDown(currentCellCoords: CellCoordinates) {\n    const nextCellCoords = this.utils.createNextCellCoords(currentCellCoords);\n\n    const numOfRows = this.utils.rows ? this.utils.rows.length - 1 : 0;\n    const itemsPerPage = this.utils.itemsPerPage;\n\n    nextCellCoords.y = currentCellCoords.y + itemsPerPage >= numOfRows ? numOfRows : currentCellCoords.y + itemsPerPage;\n\n    if (this.utils.isSingleCellExpandedRow(nextCellCoords.y)) {\n      return super.keyPageDown(currentCellCoords);\n    }\n\n    if (!this.utils.isActionCell(currentCellCoords)) {\n      if (this.utils.isRowReplaced(nextCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        if (nextCellCoords.y < numOfRows) {\n          nextCellCoords.y = nextCellCoords.y + 1;\n          nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n        }\n      } else if (this.utils.isDetailsRow(currentCellCoords.y) && !this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x + this.utils.actionCellCount(nextCellCoords.y);\n      } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n        nextCellCoords.x = currentCellCoords.x - this.utils.actionCellCount(currentCellCoords.y);\n      }\n    } else if (this.utils.isDetailsRow(nextCellCoords.y)) {\n      nextCellCoords.y = nextCellCoords.y - 1;\n    }\n\n    return nextCellCoords;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Keys } from '@clr/angular/utils';\n\nimport { CellCoordinates, KeyNavigationGridConfig } from './key-navigation-grid.controller';\nimport { KeyNavigationGridStrategyInterface } from '../interfaces/key-nav-grid-strategy.interface';\nimport { DefaultKeyNavigationStrategy } from './key-navigation-strategies/default';\nimport { ExpandedColumnsRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-columns-row';\nimport { ExpandedRowKeyNavigationStrategy } from './key-navigation-strategies/expanded-row';\n\nexport class KeyNavigationUtils {\n  constructor(\n    public host: HTMLElement,\n    public config: KeyNavigationGridConfig\n  ) {}\n\n  get grid() {\n    return this.host?.querySelector(this.config.keyGrid);\n  }\n\n  get rows() {\n    return this.host?.querySelectorAll(this.config.keyGridRows) as NodeListOf<HTMLElement>;\n  }\n\n  get cells() {\n    return this.host?.querySelectorAll(this.config.keyGridCells) as NodeListOf<HTMLElement>;\n  }\n\n  get currentCellCoordinates() {\n    const currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;\n    const currentRow: HTMLElement = currentCell ? currentCell.closest(this.config.keyGridRows) : null;\n\n    const coordinates: CellCoordinates = {\n      x:\n        currentRow && currentCell\n          ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)\n          : 0,\n      y: currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0,\n    };\n\n    return coordinates;\n  }\n\n  get averageRowHeight() {\n    const heightSum = Array.from(this.rows.values()).reduce((sum, row) => {\n      return sum + row.clientHeight;\n    }, 0);\n\n    return Math.round(heightSum / this.rows.length);\n  }\n\n  get itemsPerPage() {\n    return Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.averageRowHeight) - 1 || 0;\n  }\n\n  setAriaRowIndexTo(cellCoords: CellCoordinates) {\n    let ariaRowIndex = this.rows[cellCoords.y].getAttribute('aria-rowindex');\n\n    if (!ariaRowIndex) {\n      ariaRowIndex = this.rows[cellCoords.y - 1].getAttribute('aria-rowindex');\n    }\n\n    cellCoords.ariaRowIndex = ariaRowIndex;\n  }\n\n  getNextItemCoordinate(e: KeyboardEvent) {\n    const currentCellCoords = this.currentCellCoordinates;\n    const strategy = this.getNavStrategy(currentCellCoords);\n\n    const inlineStart = this.host.dir === 'rtl' ? Keys.ArrowRight : Keys.ArrowLeft;\n    const inlineEnd = this.host.dir === 'rtl' ? Keys.ArrowLeft : Keys.ArrowRight;\n\n    switch (e.key) {\n      case Keys.ArrowUp:\n        return strategy.keyUp(currentCellCoords);\n      case Keys.ArrowDown:\n        return strategy.keyDown(currentCellCoords);\n      case inlineStart:\n        return strategy.keyLeft(currentCellCoords);\n      case inlineEnd:\n        return strategy.keyRight(currentCellCoords);\n      case Keys.Home:\n        return strategy.keyHome(currentCellCoords, e.ctrlKey);\n      case Keys.End:\n        return strategy.keyEnd(currentCellCoords, e.ctrlKey);\n      case Keys.PageUp:\n        return strategy.keyPageUp(currentCellCoords);\n      case Keys.PageDown:\n        return strategy.keyPageDown(currentCellCoords);\n      default:\n        return currentCellCoords;\n    }\n  }\n\n  getCellsForRow(index: number) {\n    return this.rows[index].querySelectorAll(this.config.keyGridCells);\n  }\n\n  isExpandedRow(index: number) {\n    const selectedElement: HTMLElement = this.rows[index].querySelector('.datagrid-row-detail');\n\n    return selectedElement ? selectedElement.style.display !== 'none' : false;\n  }\n\n  isDetailsRow(index: number) {\n    return this.rows[index].classList.contains('datagrid-row-detail');\n  }\n\n  isRowReplaced(index: number) {\n    return !!this.rows[index].closest('clr-dg-row.datagrid-row-replaced');\n  }\n\n  isSingleCellExpandedRow(index: number) {\n    return this.rows[index]?.querySelectorAll(this.config.keyGridCells).length === 1;\n  }\n\n  actionCellCount(index: number) {\n    return this.actionCellsAsArray(index).length;\n  }\n\n  actionCellsAsArray(index: number) {\n    return Array.from(\n      this.rows[index].querySelectorAll('.datagrid-row-sticky .datagrid-cell, .datagrid-row-sticky .datagrid-column')\n    );\n  }\n\n  isActionCell(cellCoords: CellCoordinates) {\n    return !!this.actionCellsAsArray(cellCoords.y)[cellCoords.x];\n  }\n\n  createNextCellCoords(cellCoords: CellCoordinates): CellCoordinates {\n    return {\n      x: cellCoords.x,\n      y: cellCoords.y,\n    };\n  }\n\n  private getNavStrategy(currentCellCoords: CellCoordinates): KeyNavigationGridStrategyInterface {\n    switch (true) {\n      case this.isSingleCellExpandedRow(currentCellCoords.y):\n        return new ExpandedRowKeyNavigationStrategy(this);\n      case this.isDetailsRow(currentCellCoords.y):\n      case this.isExpandedRow(currentCellCoords.y):\n        return new ExpandedColumnsRowKeyNavigationStrategy(this);\n      default:\n        return new DefaultKeyNavigationStrategy(this);\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { EventEmitter, Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { Keys } from '@clr/angular/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { KeyNavigationUtils } from './key-navigation-utils';\n\nconst actionableItemSelectors = [\n  'a[href]',\n  'area[href]',\n  'input:not([disabled])',\n  'button:not([disabled])',\n  'select:not([disabled])',\n  'textarea:not([disabled])',\n  'iframe',\n  'object',\n  'embed',\n  '[contenteditable=true]',\n  '[role=button]:not([disabled])',\n];\n\nexport function getTabbableItems(el: HTMLElement) {\n  const tabbableItemSelectors = [...actionableItemSelectors, '[tabindex=\"0\"]:not([disabled])'];\n  const tabbableSelector = tabbableItemSelectors.join(',');\n  return Array.from(el.querySelectorAll(tabbableSelector)) as HTMLElement[];\n}\n\nfunction isActionableItem(el: HTMLElement) {\n  const actionableSelector = actionableItemSelectors.join(',');\n  return el.matches(actionableSelector);\n}\n\nexport interface KeyNavigationGridConfig {\n  keyGrid: string;\n  keyGridRows: string;\n  keyGridCells: string;\n}\n\nexport interface CellCoordinates {\n  x: number;\n  y: number;\n  ariaRowIndex?: string;\n}\n\n@Injectable()\nexport class KeyNavigationGridController implements OnDestroy {\n  nextCellCoordsEmitter = new EventEmitter<CellCoordinates>(false);\n\n  skipItemFocus = false;\n  preventScrollOnFocus = false;\n\n  config: KeyNavigationGridConfig = {\n    keyGridRows: '[role=row]:not(.datagrid-placeholder):not([style*=\"display: none\"])',\n    keyGridCells:\n      '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',\n    keyGrid: '[role=grid]',\n  };\n  private keyNavUtils: KeyNavigationUtils;\n  private listenersAdded = false;\n  private destroy$ = new Subject<void>();\n\n  constructor(private zone: NgZone) {}\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  addListeners() {\n    if (this.listenersAdded) {\n      return;\n    }\n\n    this.zone.runOutsideAngular(() => {\n      fromEvent(this.keyNavUtils.grid, 'mousedown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((e: MouseEvent) => {\n          // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard\n          if (e.buttons === 1 && !e.ctrlKey) {\n            const activeCell = this.keyNavUtils.cells\n              ? Array.from(this.keyNavUtils.cells).find(\n                  c => c === e.target || c === (e.target as HTMLElement).closest(this.config.keyGridCells)\n                )\n              : null;\n            if (activeCell) {\n              this.setActiveCell(activeCell);\n\n              if (!isActionableItem(e.target as HTMLElement)) {\n                this.focusElement(activeCell);\n              }\n            }\n          }\n        });\n\n      fromEvent(this.keyNavUtils.grid, 'wheel')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe(() => {\n          this.nextCellCoordsEmitter.emit(null);\n        });\n\n      fromEvent(this.keyNavUtils.grid, 'keydown')\n        .pipe(takeUntil(this.destroy$))\n        .subscribe((e: KeyboardEvent) => {\n          // Skip column resize events\n          if (\n            (e.target as HTMLElement).classList.contains('drag-handle') &&\n            (e.key === Keys.ArrowLeft || e.key === Keys.ArrowRight)\n          ) {\n            return;\n          }\n          if (\n            e.key === Keys.ArrowUp ||\n            e.key === Keys.ArrowDown ||\n            e.key === Keys.ArrowLeft ||\n            e.key === Keys.ArrowRight ||\n            e.key === Keys.End ||\n            e.key === Keys.Home ||\n            e.key === Keys.PageUp ||\n            e.key === Keys.PageDown\n          ) {\n            const nextCellCoords = this.keyNavUtils.getNextItemCoordinate(e);\n\n            if (\n              nextCellCoords.y > 0 &&\n              (e.key === Keys.ArrowUp || e.key === Keys.ArrowDown || e.key === Keys.PageUp || e.key === Keys.PageDown)\n            ) {\n              this.keyNavUtils.setAriaRowIndexTo(nextCellCoords);\n\n              this.nextCellCoordsEmitter.emit(nextCellCoords);\n            }\n\n            const activeItem = this.keyNavUtils.rows\n              ? (Array.from(this.keyNavUtils.getCellsForRow(nextCellCoords.y))[nextCellCoords.x] as HTMLElement)\n              : null;\n\n            if (activeItem) {\n              this.setActiveCell(activeItem);\n              this.focusElement(activeItem, {\n                preventScroll: this.preventScrollOnFocus && !!nextCellCoords.ariaRowIndex,\n              });\n            }\n\n            e.preventDefault();\n          }\n        });\n    });\n    this.listenersAdded = true;\n  }\n\n  initializeKeyGrid(host: HTMLElement) {\n    this.keyNavUtils = new KeyNavigationUtils(host, this.config);\n    this.addListeners();\n    this.resetKeyGrid();\n  }\n\n  resetKeyGrid() {\n    this.keyNavUtils.cells?.forEach((i: HTMLElement) => i.setAttribute('tabindex', '-1'));\n    const firstCell = this.keyNavUtils.cells ? this.keyNavUtils.cells[0] : null;\n    firstCell?.setAttribute('tabindex', '0');\n  }\n\n  setActiveCell(activeCell: HTMLElement) {\n    const prior = this.keyNavUtils.cells\n      ? Array.from(this.keyNavUtils.cells).find(c => c.getAttribute('tabindex') === '0')\n      : null;\n\n    if (prior) {\n      prior.setAttribute('tabindex', '-1');\n    }\n\n    activeCell.setAttribute('tabindex', '0');\n  }\n\n  focusElement(activeCell: HTMLElement, options: FocusOptions = { preventScroll: false }) {\n    if (this.skipItemFocus) {\n      return;\n    }\n\n    let elementToFocus: HTMLElement;\n\n    if (activeCell.getAttribute('role') === 'columnheader') {\n      elementToFocus = activeCell;\n    } else {\n      const tabbableElements = getTabbableItems(activeCell);\n      elementToFocus = tabbableElements.length ? tabbableElements[0] : activeCell;\n    }\n\n    elementToFocus.focus(options);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  booleanAttribute,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ClrPopoverPosition, ClrPopoverService, ClrPopoverType } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from './providers/filters';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { KeyNavigationGridController } from './utils/key-navigation-grid.controller';\n\n/**\n * Custom filter that can be added in any column to override the default object property string filter.\n * The reason this is not just an input on DatagridColumn is because we need the filter's template to be projected,\n * since it can be anything (not just a text input).\n */\n@Component({\n  selector: 'clr-dg-filter',\n  // We register this component as a CustomFilter, for the parent column to detect it.\n  providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],\n  template: `\n    <button\n      class=\"datagrid-filter-toggle\"\n      type=\"button\"\n      #anchor\n      [attr.aria-expanded]=\"ariaExpanded\"\n      [attr.aria-controls]=\"popoverId\"\n      clrPopoverOrigin\n      clrPopoverOpenCloseButton\n      [class.datagrid-filter-open]=\"open\"\n      [class.datagrid-filtered]=\"active\"\n    >\n      <cds-icon\n        [status]=\"active ? 'info' : null\"\n        [shape]=\"active ? 'filter-grid-circle' : 'filter-grid'\"\n        solid\n      ></cds-icon>\n    </button>\n\n    <div\n      class=\"datagrid-filter\"\n      [id]=\"popoverId\"\n      cdkTrapFocus\n      *clrPopoverContent=\"open; at: popoverPosition; type: popoverType; outsideClickToClose: true; scrollToClose: false\"\n      role=\"dialog\"\n      [attr.aria-label]=\"commonStrings.keys.datagridFilterDialogAriaLabel\"\n    >\n      <div class=\"datagrid-filter-close-wrapper\">\n        <button type=\"button\" class=\"close\" clrPopoverCloseButton>\n          <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n        </button>\n      </div>\n\n      <ng-content></ng-content>\n    </div>\n  `,\n  standalone: false,\n})\nexport class ClrDatagridFilter<T = any>\n  extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n  implements CustomFilter, OnDestroy\n{\n  @Output('clrDgFilterOpenChange') openChange = new EventEmitter<boolean>(false);\n\n  ariaExpanded = false;\n  popoverId = uniqueIdFactory();\n\n  // Smart Popover\n  popoverPosition = ClrPopoverPosition.BOTTOM_RIGHT;\n  popoverType = ClrPopoverType.DROPDOWN;\n\n  @ViewChild('anchor', { read: ElementRef }) anchor: ElementRef<HTMLButtonElement>;\n\n  private subs: Subscription[] = [];\n\n  constructor(\n    _filters: FiltersProvider<T>,\n    public commonStrings: ClrCommonStringsService,\n    private popoverService: ClrPopoverService,\n    @Optional() private keyNavigation: KeyNavigationGridController\n  ) {\n    super(_filters);\n    this.subs.push(\n      popoverService.openChange.subscribe(change => {\n        this.ariaExpanded = change;\n        this.openChange.emit(change);\n      })\n    );\n  }\n\n  @Input({ alias: 'clrDgFilterOpen', transform: booleanAttribute })\n  get open() {\n    return this.popoverService.open;\n  }\n  set open(open: boolean) {\n    if (this.popoverService.open !== open) {\n      this.popoverService.open = open;\n      this.openChange.emit(open);\n\n      if (this.keyNavigation) {\n        this.keyNavigation.skipItemFocus = open;\n      }\n    }\n  }\n\n  @Input('clrDgFilter')\n  set customFilter(filter: ClrDatagridFilterInterface<T> | RegisteredFilter<T, ClrDatagridFilterInterface<T>>) {\n    this.setFilter(filter);\n  }\n\n  /**\n   * Indicates if the filter is currently active\n   */\n  get active() {\n    return !!this.filter && this.filter.isActive();\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this.subs.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridNumericFilterImpl } from './datagrid-numeric-filter-impl';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\n\n@Component({\n  selector: 'clr-dg-numeric-filter',\n  providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }],\n  template: `\n    <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n      <div class=\"datagrid-numeric-filter-form\">\n        <clr-number-input-container>\n          <label class=\"clr-control-label\">{{ fromLabelValue }}</label>\n          <input\n            clrNumberInput\n            class=\"datagrid-numeric-filter-input\"\n            #input_low\n            type=\"number\"\n            autocomplete=\"off\"\n            name=\"low\"\n            [(ngModel)]=\"low\"\n            [placeholder]=\"minPlaceholderValue\"\n            [attr.aria-label]=\"minPlaceholderValue\"\n          />\n        </clr-number-input-container>\n        <clr-number-input-container>\n          <label class=\"clr-control-label\">{{ toLabelValue }}</label>\n          <input\n            clrNumberInput\n            class=\"datagrid-numeric-filter-input\"\n            #input_high\n            type=\"number\"\n            autocomplete=\"off\"\n            name=\"high\"\n            [(ngModel)]=\"high\"\n            [placeholder]=\"maxPlaceholderValue\"\n            [attr.aria-label]=\"maxPlaceholderValue\"\n          />\n        </clr-number-input-container>\n      </div>\n    </clr-dg-filter>\n  `,\n  standalone: false,\n})\nexport class DatagridNumericFilter<T = any>\n  extends DatagridFilterRegistrar<T, DatagridNumericFilterImpl<T>>\n  implements CustomFilter, AfterViewInit\n{\n  @Input('clrFilterMinPlaceholder') minPlaceholder: string;\n  @Input('clrFilterMaxPlaceholder') maxPlaceholder: string;\n  @Input('clrFilterFromLabel') fromLabel: string;\n  @Input('clrFilterToLabel') toLabel: string;\n\n  @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n  /**\n   * Indicates if the filter dropdown is open\n   */\n  open = false;\n\n  /**\n   * We need the actual input element to automatically focus on it\n   */\n  @ViewChild('input_low') input: ElementRef<HTMLInputElement>;\n\n  /**\n   * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n   */\n  @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n  private initFilterValues: [number, number];\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    filters: FiltersProvider<T>,\n    private domAdapter: DomAdapter,\n    public commonStrings: ClrCommonStringsService,\n    private popoverService: ClrPopoverService,\n    private ngZone: NgZone\n  ) {\n    super(filters);\n  }\n\n  /**\n   * Common setter for the input values\n   */\n  @Input('clrFilterValue')\n  get value() {\n    return [this.filter.low, this.filter.high];\n  }\n  set value(values: [number, number]) {\n    if (this.filter && Array.isArray(values)) {\n      if (values && (values[0] !== this.filter.low || values[1] !== this.filter.high)) {\n        if (typeof values[0] === 'number') {\n          this.filter.low = values[0];\n        } else {\n          this.filter.low = null;\n        }\n        if (typeof values[1] === 'number') {\n          this.filter.high = values[1];\n        } else {\n          this.filter.high = null;\n        }\n        this.filterValueChange.emit(values);\n      }\n    } else {\n      this.initFilterValues = values;\n    }\n  }\n\n  /**\n   * Customizable filter logic based on high and low values\n   */\n  @Input('clrDgNumericFilter')\n  set customNumericFilter(\n    value: ClrDatagridNumericFilterInterface<T> | RegisteredFilter<T, DatagridNumericFilterImpl<T>>\n  ) {\n    if (value instanceof RegisteredFilter) {\n      this.setFilter(value);\n    } else {\n      this.setFilter(new DatagridNumericFilterImpl(value));\n    }\n    if (this.initFilterValues) {\n      this.value = this.initFilterValues;\n      // This initFilterValues should be used only once after the filter registration\n      // So deleting this property value to prevent it from being used again\n      // if this customStringFilter property is set again\n      delete this.initFilterValues;\n    }\n  }\n\n  get maxPlaceholderValue() {\n    return this.maxPlaceholder || this.commonStrings.keys.maxValue;\n  }\n\n  get minPlaceholderValue() {\n    return this.minPlaceholder || this.commonStrings.keys.minValue;\n  }\n\n  get fromLabelValue() {\n    return this.fromLabel || this.commonStrings.keys.fromLabel;\n  }\n\n  get toLabelValue() {\n    return this.toLabel || this.commonStrings.keys.toLabel;\n  }\n\n  get low() {\n    if (typeof this.filter.low === 'number' && isFinite(this.filter.low)) {\n      return this.filter.low;\n    } else {\n      // There's not a low limit\n      return null;\n    }\n  }\n  set low(low: number | string) {\n    if (typeof low === 'number' && low !== this.filter.low) {\n      this.filter.low = low;\n      this.filterValueChange.emit([this.filter.low, this.filter.high]);\n    } else if (typeof low !== 'number') {\n      this.filter.low = null;\n      this.filterValueChange.emit([this.filter.low, this.filter.high]);\n    }\n  }\n\n  get high() {\n    if (typeof this.filter.high === 'number' && isFinite(this.filter.high)) {\n      return this.filter.high;\n    } else {\n      // There's not a high limit\n      return null;\n    }\n  }\n  set high(high: number | string) {\n    if (typeof high === 'number' && high !== this.filter.high) {\n      this.filter.high = high;\n      this.filterValueChange.emit([this.filter.low, this.filter.high]);\n    } else if (typeof high !== 'number') {\n      this.filter.high = null;\n      this.filterValueChange.emit([this.filter.low, this.filter.high]);\n    }\n  }\n\n  ngAfterViewInit() {\n    this.subscriptions.push(\n      this.popoverService.openChange.subscribe(openChange => {\n        this.open = openChange;\n        // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n        // running change detection.\n        this.ngZone.runOutsideAngular(() => {\n          // The animation frame in used because when this executes, the input isn't displayed.\n          // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n          // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n          // Animation tasks are executed within the next rendering frame.\n          requestAnimationFrame(() => {\n            this.domAdapter.focus(this.input.nativeElement);\n          });\n        });\n      })\n    );\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this.subscriptions.forEach(sub => {\n      sub.unsubscribe();\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridStringFilterImpl } from './datagrid-string-filter-impl';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\n\n@Component({\n  selector: 'clr-dg-string-filter',\n  providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],\n  template: `\n    <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n      <clr-input-container>\n        <label>{{ labelValue }}</label>\n        <input\n          #input\n          type=\"text\"\n          autocomplete=\"off\"\n          name=\"search\"\n          [(ngModel)]=\"value\"\n          clrInput\n          [attr.aria-label]=\"placeholderValue\"\n          [placeholder]=\"placeholderValue\"\n        />\n      </clr-input-container>\n    </clr-dg-filter>\n  `,\n  standalone: false,\n})\nexport class DatagridStringFilter<T = any>\n  extends DatagridFilterRegistrar<T, DatagridStringFilterImpl<T>>\n  implements CustomFilter, OnChanges, OnDestroy, AfterViewInit\n{\n  /**\n   * Provide a way to pass external placeholder and aria-label to the filter input\n   */\n  @Input('clrFilterPlaceholder') placeholder: string;\n  @Input('clrFilterLabel') label: string;\n\n  @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n  /**\n   * Indicates if the filter dropdown is open\n   */\n  open = false;\n\n  /**\n   * We need the actual input element to automatically focus on it\n   */\n  @ViewChild('input') input: ElementRef<HTMLInputElement>;\n\n  /**\n   * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n   */\n  @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n  labelValue = '';\n  private initFilterValue: string;\n  private subs: Subscription[] = [];\n\n  constructor(\n    filters: FiltersProvider<T>,\n    private domAdapter: DomAdapter,\n    public commonStrings: ClrCommonStringsService,\n    private popoverService: ClrPopoverService,\n    private elementRef: ElementRef<HTMLElement>,\n    private cdr: ChangeDetectorRef,\n    private ngZone: NgZone\n  ) {\n    super(filters);\n  }\n\n  /**\n   * Customizable filter logic based on a search text\n   */\n  @Input('clrDgStringFilter')\n  set customStringFilter(\n    value: ClrDatagridStringFilterInterface<T> | RegisteredFilter<T, DatagridStringFilterImpl<T>>\n  ) {\n    if (value instanceof RegisteredFilter) {\n      this.setFilter(value);\n    } else {\n      this.setFilter(new DatagridStringFilterImpl(value));\n    }\n    if (this.initFilterValue) {\n      this.value = this.initFilterValue;\n      // This initFilterValue should be used only once after the filter registration\n      // So deleting this property value to prevent it from being used again\n      // if this customStringFilter property is set again\n      delete this.initFilterValue;\n    }\n  }\n\n  /**\n   * Common setter for the input value\n   */\n  @Input('clrFilterValue')\n  get value() {\n    return this.filter.value;\n  }\n  set value(value: string) {\n    if (this.filter && typeof value === 'string') {\n      if (!value) {\n        value = '';\n      }\n      if (value !== this.filter.value) {\n        this.filter.value = value;\n        this.filterValueChange.emit(value);\n      }\n    } else {\n      this.initFilterValue = value;\n    }\n  }\n\n  get placeholderValue() {\n    return this.placeholder || this.commonStrings.keys.filterItems;\n  }\n\n  ngAfterViewInit() {\n    this.subs.push(\n      this.popoverService.openChange.subscribe(openChange => {\n        this.open = openChange;\n        // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n        // running change detection.\n        this.ngZone.runOutsideAngular(() => {\n          // The animation frame in used because when this executes, the input isn't displayed.\n          // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n          // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n          // Animation tasks are executed within the next rendering frame.\n          requestAnimationFrame(() => {\n            this.domAdapter.focus(this.input.nativeElement);\n          });\n        });\n      })\n    );\n  }\n\n  ngOnChanges() {\n    setTimeout(() => {\n      this.setFilterLabel();\n      this.cdr.markForCheck();\n    });\n  }\n\n  override ngOnDestroy(): void {\n    super.ngOnDestroy();\n    this.subs.forEach(sub => sub.unsubscribe());\n  }\n\n  /**\n   * This is not in a getter to prevent \"expression has changed after it was checked\" errors.\n   */\n  private setFilterLabel() {\n    if (this.label) {\n      this.labelValue = this.label;\n\n      return;\n    }\n\n    const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');\n    const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');\n\n    this.labelValue = this.commonStrings.parse(this.commonStrings.keys.datagridFilterLabel, {\n      COLUMN: columnTitleElement?.textContent.trim() || '',\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport { ClrPopoverHostDirective } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, HostWrapper } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridPropertyComparator } from './built-in/comparators/datagrid-property-comparator';\nimport { DatagridNumericFilterImpl } from './built-in/filters/datagrid-numeric-filter-impl';\nimport { DatagridPropertyNumericFilter } from './built-in/filters/datagrid-property-numeric-filter';\nimport { DatagridPropertyStringFilter } from './built-in/filters/datagrid-property-string-filter';\nimport { DatagridStringFilterImpl } from './built-in/filters/datagrid-string-filter-impl';\nimport { ClrDatagridAriaSortOrder, ClrDatagridSortOrder } from './enums/sort-order.enum';\nimport { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { DetailService } from './providers/detail.service';\nimport { FiltersProvider } from './providers/filters';\nimport { Sort } from './providers/sort';\nimport { HIDDEN_COLUMN_CLASS } from './render/constants';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { WrappedColumn } from './wrapped-column';\n\n@Component({\n  selector: 'clr-dg-column',\n  template: `\n    <div class=\"datagrid-column-flex\">\n      @if (sortable) {\n        <button class=\"datagrid-column-title\" (click)=\"sort()\" type=\"button\" #titleContainer>\n          <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n          <cds-icon\n            [shape]=\"sortDirection ? 'arrow' : 'two-way-arrows'\"\n            [direction]=\"sortDirection ? sortDirection : 'left'\"\n            aria-hidden=\"true\"\n            class=\"sort-icon\"\n          ></cds-icon>\n        </button>\n      }\n      <!-- I'm really not happy with that select since it's not very scalable -->\n      <ng-content select=\"clr-dg-filter, clr-dg-string-filter, clr-dg-numeric-filter\"></ng-content>\n\n      @if (field && !customFilter && colType == 'string') {\n        <clr-dg-string-filter\n          [clrFilterPlaceholder]=\"filterStringPlaceholder\"\n          [clrDgStringFilter]=\"registered\"\n          [(clrFilterValue)]=\"filterValue\"\n        ></clr-dg-string-filter>\n      }\n      @if (field && !customFilter && colType == 'number') {\n        <clr-dg-numeric-filter\n          [clrFilterMaxPlaceholder]=\"filterNumberMaxPlaceholder\"\n          [clrFilterMinPlaceholder]=\"filterNumberMinPlaceholder\"\n          [clrDgNumericFilter]=\"registered\"\n          [(clrFilterValue)]=\"filterValue\"\n        ></clr-dg-numeric-filter>\n      }\n\n      <ng-template #columnTitle>\n        <ng-content></ng-content>\n      </ng-template>\n\n      @if (!sortable) {\n        <span class=\"datagrid-column-title\" #titleContainer>\n          <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n        </span>\n      }\n      @if (showSeparator) {\n        <clr-dg-column-separator></clr-dg-column-separator>\n      }\n    </div>\n  `,\n  hostDirectives: [ClrPopoverHostDirective],\n  host: {\n    '[class.datagrid-column]': 'true',\n    '[attr.aria-sort]': 'ariaSort',\n    role: 'columnheader',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ClrDatagridColumn<T = any>\n  extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n  implements OnDestroy, OnInit, OnChanges\n{\n  @Input('clrFilterStringPlaceholder') filterStringPlaceholder: string;\n  @Input('clrFilterNumberMaxPlaceholder') filterNumberMaxPlaceholder: string;\n  @Input('clrFilterNumberMinPlaceholder') filterNumberMinPlaceholder: string;\n  @Input('clrDgDisableUnsort') disableUnsort = false;\n\n  @Output('clrDgSortOrderChange') sortOrderChange = new EventEmitter<ClrDatagridSortOrder>();\n  @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n  @ViewChild('titleContainer', { read: ElementRef }) titleContainer: ElementRef<HTMLElement>;\n\n  /**\n   * A custom filter for this column that can be provided in the projected content\n   */\n  customFilter = false;\n\n  /*\n   * What type is this column?  This defaults to STRING, but can also be\n   * set to NUMBER.  Unsupported types default to STRING. Users can set it\n   * via the [clrDgColType] input by setting it to 'string' or 'number'.\n   */\n  private _colType: 'string' | 'number' = 'string';\n\n  /*\n   * Simple object property shortcut, activates both sorting and filtering\n   * based on native comparison of the specified property on the items.\n   */\n  private _field: string;\n\n  /**\n   * ClrDatagridComparatorInterface to use when sorting the column\n   */\n  private _sortBy: ClrDatagridComparatorInterface<T>;\n\n  /**\n   * Indicates how the column is currently sorted\n   */\n  private _sortOrder: ClrDatagridSortOrder = ClrDatagridSortOrder.UNSORTED;\n\n  private _sortDirection: 'up' | 'down' | null;\n\n  // This property holds filter value temporarily while this.filter property is not yet registered\n  // When this.filter is registered, this property value would be used update this.filter.value\n  //\n  private initFilterValue: string | [number, number];\n\n  private wrappedInjector: Injector;\n\n  /**\n   * Subscription to the sort service changes\n   */\n  private subscriptions: Subscription[] = [];\n\n  private _showSeparator = true;\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private _sort: Sort<T>,\n    filters: FiltersProvider<T>,\n    private vcr: ViewContainerRef,\n    private detailService: DetailService,\n    private changeDetectorRef: ChangeDetectorRef,\n    private commonStrings: ClrCommonStringsService\n  ) {\n    super(filters);\n    this.subscriptions.push(this.listenForSortingChanges());\n    this.subscriptions.push(this.listenForDetailPaneChanges());\n  }\n\n  get isHidden() {\n    return this.el.nativeElement.classList.contains(HIDDEN_COLUMN_CLASS);\n  }\n\n  get showSeparator() {\n    return this._showSeparator;\n  }\n  set showSeparator(value: boolean) {\n    this._showSeparator = value;\n    this.changeDetectorRef.markForCheck();\n  }\n\n  // TODO: We might want to make this an enum in the future\n  @Input('clrDgColType')\n  get colType() {\n    return this._colType;\n  }\n  set colType(value: 'string' | 'number') {\n    this._colType = value;\n  }\n\n  @Input('clrDgField')\n  get field() {\n    return this._field;\n  }\n  set field(field: string) {\n    if (typeof field === 'string') {\n      this._field = field;\n\n      if (!this._sortBy) {\n        this._sortBy = new DatagridPropertyComparator(field);\n      }\n    }\n  }\n\n  @Input('clrDgSortBy')\n  get sortBy() {\n    return this._sortBy;\n  }\n  set sortBy(comparator: ClrDatagridComparatorInterface<T> | string) {\n    if (typeof comparator === 'string') {\n      this._sortBy = new DatagridPropertyComparator(comparator);\n    } else if (comparator) {\n      this._sortBy = comparator;\n    } else if (this.field) {\n      this._sortBy = new DatagridPropertyComparator(this.field);\n    } else {\n      delete this._sortBy;\n    }\n  }\n\n  @Input('clrDgSortOrder')\n  get sortOrder() {\n    return this._sortOrder;\n  }\n  set sortOrder(value: ClrDatagridSortOrder) {\n    if (typeof value === 'undefined') {\n      return;\n    }\n\n    // only if the incoming order is different from the current one\n    if (this._sortOrder === value) {\n      return;\n    }\n\n    switch (value) {\n      case ClrDatagridSortOrder.ASC:\n        this.sort(false);\n        break;\n      case ClrDatagridSortOrder.DESC:\n        this.sort(true);\n        break;\n      // the Unsorted case happens when the current state is neither Asc nor Desc\n      case ClrDatagridSortOrder.UNSORTED:\n      default:\n        this._sort.clear();\n        this._sortDirection = null;\n        break;\n    }\n  }\n\n  @Input('clrFilterValue')\n  set updateFilterValue(newValue: string | [number, number]) {\n    if (this.filter) {\n      if (this.filter instanceof DatagridStringFilterImpl) {\n        if (!newValue || typeof newValue !== 'string') {\n          newValue = '';\n        }\n        if (newValue !== this.filter.value) {\n          this.filter.value = newValue;\n        }\n      } else if (this.filter instanceof DatagridNumericFilterImpl) {\n        if (!newValue || !(newValue instanceof Array)) {\n          newValue = [null, null];\n        }\n        if (newValue.length === 2 && (newValue[0] !== this.filter.value[0] || newValue[1] !== this.filter.value[1])) {\n          this.filter.value = newValue;\n        }\n      }\n    } else {\n      this.initFilterValue = newValue;\n    }\n  }\n\n  @ContentChild(CustomFilter)\n  set projectedFilter(custom: any) {\n    if (custom) {\n      this.deleteFilter();\n      this.customFilter = true;\n    }\n  }\n\n  /**\n   * Indicates if the column is sortable\n   */\n  get sortable(): boolean {\n    return !!this._sortBy;\n  }\n\n  get ariaSort(): ClrDatagridAriaSortOrder {\n    switch (this._sortOrder) {\n      case ClrDatagridSortOrder.ASC:\n        return ClrDatagridAriaSortOrder.ASC;\n      case ClrDatagridSortOrder.DESC:\n        return ClrDatagridAriaSortOrder.DESC;\n      case ClrDatagridSortOrder.UNSORTED:\n      default:\n        return ClrDatagridAriaSortOrder.UNSORTED;\n    }\n  }\n\n  get sortDirection(): 'up' | 'down' | null {\n    return this._sortDirection;\n  }\n\n  /**\n   * @NOTE type `any` here is to let us pass templateStrictMode, because in our code we try to handle\n   * two types of filters String and Number with the same variable but both of them work with different\n   * format we got an error for casting. We could not cast anything inside the template so to not mess the\n   * casting, the last type is set to `any`\n   *\n   * Orignial types: string | [number, number]\n   */\n  get filterValue() {\n    if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n      return this.filter.value;\n    }\n    return null;\n  }\n  set filterValue(newValue: any) {\n    if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n      this.updateFilterValue = newValue;\n      this.filterValueChange.emit(this.filter.value);\n    }\n  }\n\n  get _view() {\n    return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;\n  }\n\n  ngOnInit() {\n    this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);\n  }\n\n  ngAfterViewInit() {\n    this.setFilterToggleAriaLabel();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (\n      changes.colType &&\n      changes.colType.currentValue &&\n      changes.colType.currentValue !== changes.colType.previousValue\n    ) {\n      if (!this.customFilter && !this.filter && this.colType && this.field) {\n        this.setupDefaultFilter(this.field, this.colType);\n      }\n    }\n    if (changes.field && changes.field.currentValue && changes.field.currentValue !== changes.field.previousValue) {\n      if (!this.customFilter && this.colType) {\n        this.setupDefaultFilter(this.field, this.colType);\n      }\n    }\n  }\n\n  override ngOnDestroy() {\n    super.ngOnDestroy();\n    this.subscriptions.forEach(s => s.unsubscribe());\n  }\n\n  /**\n   * Sorts the datagrid based on this column\n   */\n  sort(reverse?: boolean) {\n    if (!this.sortable) {\n      return;\n    }\n\n    if (!this.disableUnsort && reverse === undefined && this.sortOrder === ClrDatagridSortOrder.DESC) {\n      this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n      this._sort.clear();\n      this._sortDirection = null;\n      this.sortOrderChange.emit(this._sortOrder);\n      return;\n    }\n\n    this._sort.toggle(this._sortBy, reverse);\n\n    // setting the private variable to not retrigger the setter logic\n    this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;\n    // Sets the correct icon for current sort order\n    this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';\n    this.sortOrderChange.emit(this._sortOrder);\n  }\n\n  private listenForDetailPaneChanges() {\n    return this.detailService.stateChange.subscribe(state => {\n      if (this.showSeparator !== !state) {\n        this.showSeparator = !state;\n      }\n    });\n  }\n\n  private setFilterToggleAriaLabel() {\n    const filterToggle = this.el.nativeElement.querySelector('.datagrid-filter-toggle');\n    if (filterToggle) {\n      filterToggle.ariaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {\n        COLUMN: this?.titleContainer?.nativeElement.textContent.trim().toLocaleLowerCase(),\n      });\n    }\n  }\n\n  private listenForSortingChanges() {\n    return this._sort.change.subscribe(sort => {\n      // Need to manually mark the component to be checked\n      // for both activating and deactivating sorting\n      this.changeDetectorRef.markForCheck();\n      // We're only listening to make sure we emit an event when the column goes from sorted to unsorted\n      if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {\n        this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n        this.sortOrderChange.emit(this._sortOrder);\n        this._sortDirection = null;\n      }\n    });\n  }\n\n  private setupDefaultFilter(field: string, colType: 'string' | 'number') {\n    if (colType === 'number') {\n      this.setFilter(new DatagridNumericFilterImpl(new DatagridPropertyNumericFilter(field)));\n    } else if (colType === 'string') {\n      this.setFilter(new DatagridStringFilterImpl(new DatagridPropertyStringFilter(field)));\n    }\n    if (this.filter && this.initFilterValue) {\n      this.updateFilterValue = this.initFilterValue;\n      // This initFilterValue should be used only once after the filter registration\n      // So deleting this property value to prevent it from being used again\n      // if this field property is set again\n      delete this.initFilterValue;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\n\nexport type ClrDatagridItemsIdentityFunction<T> = (item: T) => any;\n\n@Injectable()\nexport class Items<T = any> {\n  /**\n   * Indicates if the data is currently loading\n   */\n  loading = false;\n\n  /**\n   * Subscriptions to the other providers changes.\n   */\n  private _filtersSub: Subscription;\n  private _sortSub: Subscription;\n  private _pageSub: Subscription;\n\n  /**\n   * Whether we should use smart items for this datagrid or let the user handle\n   * everything.\n   */\n  private _smart = false;\n\n  /**\n   * List of all items in the datagrid\n   */\n  private _all: T[];\n\n  /**\n   * Internal temporary step, which we preserve to avoid re-filtering or re-sorting if not necessary\n   */\n  private _filtered: T[];\n\n  /**\n   * List of items currently displayed\n   */\n  private _displayed: T[] = [];\n\n  /**\n   * The Observable that lets other classes subscribe to items changes\n   */\n  private _change = new Subject<T[]>();\n\n  private _allChanges = new Subject<T[]>();\n\n  constructor(\n    private _filters: FiltersProvider<T>,\n    private _sort: Sort<T>,\n    private _page: Page\n  ) {}\n\n  get smart(): boolean {\n    return this._smart;\n  }\n\n  get all() {\n    return this._all;\n  }\n  set all(items: T[]) {\n    this._all = items;\n    this.emitAllChanges(items);\n    if (this.smart) {\n      this._filterItems();\n    } else {\n      this._displayed = items;\n      this.emitChange();\n    }\n  }\n\n  get displayed(): T[] {\n    // Ideally we could return an immutable array, but we don't have it in Clarity yet.\n    return this._displayed;\n  }\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<T[]> {\n    return this._change.asObservable();\n  }\n\n  get allChanges(): Observable<T[]> {\n    return this._allChanges.asObservable();\n  }\n\n  /**\n   * Checks if we don't have data to process yet, to abort early operations\n   */\n  private get uninitialized() {\n    return !this._all;\n  }\n\n  /**\n   * Tracking function to identify objects.\n   */\n  identifyBy: ClrDatagridItemsIdentityFunction<T> = item => item;\n\n  /**\n   * Cleans up our subscriptions to other providers\n   */\n  destroy() {\n    if (this._filtersSub) {\n      this._filtersSub.unsubscribe();\n    }\n    if (this._sortSub) {\n      this._sortSub.unsubscribe();\n    }\n    if (this._pageSub) {\n      this._pageSub.unsubscribe();\n    }\n  }\n\n  smartenDown() {\n    this._smart = false;\n\n    this.destroy();\n  }\n\n  smartenUp() {\n    this._smart = true;\n    /*\n     * These observers trigger a chain of function: filter -> sort -> paginate\n     * An observer up the chain re-triggers all the operations that follow it.\n     */\n    this._filtersSub = this._filters.change.subscribe(() => this._filterItems());\n    this._sortSub = this._sort.change.subscribe(() => {\n      // Special case, if the datagrid went from sorted to unsorted, we have to re-filter\n      // to get the original order back\n      if (!this._sort.comparator) {\n        this._filterItems();\n      } else {\n        this._sortItems();\n      }\n    });\n    this._pageSub = this._page.change.subscribe(() => this._changePage());\n  }\n\n  /**\n   * Manually recompute the list of displayed items\n   */\n  refresh() {\n    if (this.smart) {\n      this._filterItems();\n    }\n  }\n\n  private emitChange() {\n    this._change.next(this.displayed);\n  }\n\n  private emitAllChanges(items: T[]): void {\n    this._allChanges.next(items);\n  }\n\n  /**\n   * FiltersProvider items from the raw list\n   */\n  private _filterItems() {\n    if (this.uninitialized) {\n      return;\n    }\n    if (this._filters.hasActiveFilters()) {\n      this._filtered = this._all.filter(item => this._filters.accepts(item));\n    } else {\n      // Work on a shallow copy of the array, to not modify the user's model\n      this._filtered = this._all.slice();\n    }\n    this._page.totalItems = this._filtered.length;\n    this._sortItems();\n  }\n\n  /**\n   * Sorts items in the filtered list\n   */\n  private _sortItems() {\n    if (this.uninitialized) {\n      return;\n    }\n    if (this._sort.comparator) {\n      this._filtered.sort((a, b) => this._sort.compare(a, b));\n    }\n    this._changePage();\n  }\n\n  /**\n   * Extracts the current page from the sorted list\n   */\n  private _changePage() {\n    // If we know we have pagination but the page size hasn't been set yet, we wait for it.\n    if (this.uninitialized || (this._page.activated && this._page.size === 0)) {\n      return;\n    }\n    if (this._page.size > 0) {\n      this._displayed = this._filtered.slice(this._page.firstItem, this._page.lastItem + 1);\n    } else {\n      this._displayed = this._filtered;\n    }\n    this.emitChange();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n  Directive,\n  DoCheck,\n  Input,\n  IterableDiffer,\n  IterableDiffers,\n  OnDestroy,\n  TemplateRef,\n  TrackByFunction,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Items } from './providers/items';\n\n@Directive({\n  selector: '[clrDgItems][clrDgItemsOf]',\n  standalone: false,\n})\nexport class ClrDatagridItems<T> implements DoCheck, OnDestroy {\n  private iterableProxy: NgForOf<T>;\n  private _rawItems: T[];\n  private differ: IterableDiffer<T> | null = null;\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    public template: TemplateRef<NgForOfContext<T>>,\n    private differs: IterableDiffers,\n    private items: Items,\n    vcr: ViewContainerRef\n  ) {\n    items.smartenUp();\n    this.iterableProxy = new NgForOf<T>(vcr, template, differs);\n    this.subscriptions.push(\n      items.change.subscribe(newItems => {\n        this.iterableProxy.ngForOf = newItems;\n        this.iterableProxy.ngDoCheck();\n      })\n    );\n  }\n\n  @Input('clrDgItemsOf')\n  set rawItems(items: T[]) {\n    this._rawItems = items ? items : []; // local copy for ngOnChange diffing\n  }\n\n  @Input('clrDgItemsTrackBy')\n  set trackBy(value: TrackByFunction<T>) {\n    this.iterableProxy.ngForTrackBy = value;\n  }\n\n  /**\n   * Asserts the correct type of the template context that the directive will render.\n   * See https://angular.io/guide/structural-directives#typing-the-directives-context\n   *\n   * The presence of this method is a signal to the Ivy template type-check compiler that the\n   * structural directive renders its template with a specific context type.\n   */\n  static ngTemplateContextGuard<T>(_dir: ClrDatagridItems<T>, _ctx: unknown): _ctx is NgForOfContext<T> {\n    return true;\n  }\n\n  ngDoCheck() {\n    if (!this.differ) {\n      this.differ = this.differs.find(this._rawItems).create(this.iterableProxy.ngForTrackBy);\n    }\n    if (this.differ) {\n      const changes = this.differ.diff(this._rawItems);\n      if (changes) {\n        // TODO: not very efficient right now,\n        // but premature optimization is the root of all evil.\n        this.items.all = this._rawItems;\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { Items } from './providers/items';\n\n@Component({\n  selector: 'clr-dg-placeholder',\n  template: `\n    <div class=\"datagrid-placeholder\" [class.datagrid-empty]=\"emptyDatagrid\">\n      @if (emptyDatagrid) {\n        <div class=\"datagrid-placeholder-image\"></div>\n      }\n      <span class=\"datagrid-placeholder-content\">\n        @if (emptyDatagrid) {\n          <ng-content></ng-content>\n        }\n      </span>\n    </div>\n  `,\n  host: { '[class.datagrid-placeholder-container]': 'true' },\n  standalone: false,\n})\nexport class ClrDatagridPlaceholder<T = any> {\n  constructor(private items: Items<T>) {}\n\n  /**\n   * Tests if the datagrid is empty, meaning it doesn't contain any items\n   */\n  get emptyDatagrid() {\n    return !this.items.loading && (!this.items.displayed || this.items.displayed.length === 0);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'dg-wrapped-cell',\n  template: `\n    <ng-template #cellPortal>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  standalone: false,\n})\nexport class WrappedCell implements AfterViewInit, OnDestroy {\n  @ViewChild('cellPortal') templateRef: TemplateRef<void>;\n  cellView: EmbeddedViewRef<void>; // the cells projected view\n\n  ngAfterViewInit() {\n    this.cellView = this.templateRef.createEmbeddedView(null);\n  }\n\n  ngOnDestroy() {\n    this.cellView.destroy();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChildren, Injector, OnInit, QueryList, ViewContainerRef } from '@angular/core';\nimport { ClrSignpost } from '@clr/angular/popover/signpost';\nimport { HostWrapper } from '@clr/angular/utils';\n\nimport { WrappedCell } from './wrapped-cell';\n\n@Component({\n  selector: 'clr-dg-cell',\n  template: `<ng-content></ng-content>`,\n  host: {\n    '[class.datagrid-cell]': 'true',\n    '[class.datagrid-signpost-trigger]': 'signpost.length > 0',\n    role: 'gridcell',\n  },\n  standalone: false,\n})\nexport class ClrDatagridCell implements OnInit {\n  /*********\n   * @property signpost\n   *\n   * @description\n   * @ContentChild is used to detect the presence of a Signpost in the projected content.\n   * On the host, we set the .datagrid-signpost-trigger class on the cell when signpost.length is greater than 0.\n   *\n   */\n  @ContentChildren(ClrSignpost) signpost: QueryList<ClrSignpost>;\n\n  private wrappedInjector: Injector;\n\n  constructor(private vcr: ViewContainerRef) {}\n\n  get _view() {\n    return this.wrappedInjector.get(WrappedCell, this.vcr).cellView;\n  }\n\n  ngOnInit() {\n    this.wrappedInjector = new HostWrapper(WrappedCell, this.vcr);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ClrLoadingState, IfExpandService } from '@clr/angular/utils';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nlet nbRow = 0;\n\n@Injectable()\nexport class DatagridIfExpandService extends IfExpandService {\n  expandableId = '';\n\n  private _replace = new BehaviorSubject(false);\n  private _animate = new Subject<void>();\n\n  constructor() {\n    super();\n    nbRow++;\n    this.expandableId = 'clr-dg-expandable-row-' + nbRow;\n  }\n  // due to the es5 spec if the set is overridden on base class the getter must also be overridden\n  override get expanded(): boolean {\n    return this._expanded;\n  }\n  override set expanded(value: boolean) {\n    value = !!value;\n    if (value !== this._expanded) {\n      this._expanded = value;\n      this._animate.next();\n      this._expandChange.next(value);\n    }\n  }\n\n  get replace(): Observable<boolean> {\n    return this._replace.asObservable();\n  }\n\n  get animate(): Observable<void> {\n    return this._animate.asObservable();\n  }\n\n  override loadingStateChange(state: ClrLoadingState) {\n    super.loadingStateChange(state);\n    if (state !== ClrLoadingState.LOADING) {\n      this._animate.next();\n    }\n  }\n\n  setReplace(replaceValue: boolean) {\n    this._replace.next(replaceValue);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridDisplayMode {\n  DISPLAY,\n  CALCULATE,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum SelectionType {\n  /**\n   * User cannot select any row in the Datagrid\n   */\n  None = 'none',\n\n  /**\n   * User can select only one row at a time in the Datagrid.\n   */\n  Single = 'single',\n\n  /**\n   * User can select any number of rows in the Datagrid.\n   */\n  Multi = 'multi',\n}\n\nconst SELECTION_TYPE_VALUES = new Set<string>(Object.values(SelectionType));\n\nexport function selectionTypeAttribute(value: SelectionType | string): SelectionType {\n  if (SELECTION_TYPE_VALUES.has(value as string)) {\n    return value as SelectionType;\n  }\n  throw new Error(`Invalid SelectionType: \"${value}\". Expected one of: ${[...SELECTION_TYPE_VALUES].join(', ')}`);\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'dg-wrapped-row',\n  template: `\n    <ng-template #rowPortal>\n      <ng-content></ng-content>\n    </ng-template>\n  `,\n  standalone: false,\n})\nexport class WrappedRow implements AfterViewInit, OnDestroy {\n  @ViewChild('rowPortal') templateRef: TemplateRef<void>;\n  rowView: EmbeddedViewRef<void>; // the rows projected view (in memory)\n\n  ngAfterViewInit() {\n    // Create the cells view in memory, not the DOM.\n    this.rowView = this.templateRef.createEmbeddedView(null);\n  }\n\n  ngOnDestroy() {\n    this.rowView.destroy();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, IterableDiffer, IterableDiffers, TrackByFunction } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, delay } from 'rxjs/operators';\n\nimport { FiltersProvider } from './filters';\nimport { ClrDatagridItemsIdentityFunction, Items } from './items';\nimport { SelectionType } from '../enums/selection-type';\n\nlet nbSelection = 0;\n\n@Injectable()\nexport class Selection<T = any> {\n  id: string;\n  preserveSelection = false;\n\n  /**\n   * Last selection, for use in range selection.\n   */\n  rangeStart: T;\n\n  /**\n   * Shift key state, for use in range selection.\n   */\n  shiftPressed = false;\n\n  /** @deprecated since 2.0, remove in 3.0 */\n  rowSelectionMode = false;\n\n  private lockedRefs: T[] = []; // Ref of locked items\n  private _currentSelectionRefs: T[] = [];\n  private valueCollector = new Subject<T[]>();\n  private _selectionType: SelectionType = SelectionType.None;\n\n  /**\n   * The current selection\n   */\n  private _current: T[];\n\n  /**\n   * The Observable that lets other classes subscribe to selection changes\n   */\n  private _change = new Subject<T[]>();\n\n  /**\n   * Subscriptions to the other providers changes.\n   */\n  private subscriptions: Subscription[] = [];\n\n  /**\n   * Differ to track changes of multi selection.\n   */\n  private _differ!: IterableDiffer<T>;\n  private identifyBy: ClrDatagridItemsIdentityFunction<T>;\n\n  constructor(\n    private _items: Items<T>,\n    filters: FiltersProvider<T>,\n    differs: IterableDiffers\n  ) {\n    this.id = 'clr-dg-selection' + nbSelection++;\n    this.identifyBy = _items.identifyBy;\n    this._differ = differs.find(this._current || []).create<T>(this.identifyBy as TrackByFunction<T>);\n\n    this.subscriptions.push(\n      filters.change.subscribe(() => {\n        if (!this.selectable || this.preserveSelection) {\n          return;\n        }\n        this.clearSelection();\n      })\n    );\n\n    this.subscriptions.push(\n      _items.allChanges.pipe(delay(0)).subscribe(updatedItems => {\n        // Reset the lockedRefs;\n        const updateLockedRef: T[] = [];\n\n        switch (this.selectionType) {\n          case SelectionType.None: {\n            break;\n          }\n\n          case SelectionType.Single: {\n            let newSingle: any;\n            let selectionUpdated = false;\n\n            updatedItems.forEach(item => {\n              if (item === null || item === undefined) {\n                // Virtual scroll may emit a dense array of undefined slot placeholders. Those must\n                // never match the empty single-selection ref (see virtual-scroll + Single).\n                return;\n              }\n              const ref = _items.identifyBy(item);\n              // If one of the updated items is the previously selectedSingle, set it as the new one\n              if (this.currentSelectionRefs[0] === ref) {\n                newSingle = item;\n                selectionUpdated = true;\n              }\n              if (this.lockedRefs.indexOf(ref) > -1) {\n                updateLockedRef.push(ref);\n              }\n            });\n\n            if (selectionUpdated) {\n              this.current = [newSingle];\n            }\n            break;\n          }\n\n          case SelectionType.Multi: {\n            let leftOver: any[] = this.current.slice();\n            let selectionUpdated = false;\n\n            // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that\n            // we need to go over every updated item and check to see if there are valid to be\n            // locked or not and update it. When only add items that are found in the lockedRefs back.\n            //\n            // The both loops below that goes over updatedItems could be combined into one.\n            updatedItems.forEach(item => {\n              if (item === null || item === undefined) {\n                return;\n              }\n              const ref = _items.identifyBy(item);\n              if (this.lockedRefs.indexOf(ref) > -1) {\n                updateLockedRef.push(ref);\n              }\n            });\n\n            // TODO: revisit this when we work on https://github.com/vmware/clarity/issues/2342\n            // currently, the selection is cleared when filter is applied, so the logic inside\n            // the if statement below results in broken behavior.\n            if (leftOver.length > 0) {\n              updatedItems.forEach(item => {\n                if (item === null || item === undefined) {\n                  return;\n                }\n                const ref = _items.identifyBy(item);\n                // Look in current selected refs array if item is selected, and update actual value\n                const selectedIndex = this.currentSelectionRefs.indexOf(ref);\n                if (selectedIndex > -1) {\n                  leftOver[selectedIndex] = item;\n                  selectionUpdated = true;\n                }\n              });\n\n              // Filter out any unmatched items if we're using smart datagrids where we expect all items to be\n              // present\n              if (_items.smart) {\n                leftOver = leftOver.filter(selected => updatedItems.indexOf(selected) > -1);\n                if (this.current.length !== leftOver.length) {\n                  selectionUpdated = true;\n                }\n              }\n\n              if (selectionUpdated) {\n                this.current = leftOver;\n              }\n            }\n            break;\n          }\n\n          default: {\n            break;\n          }\n        }\n        // Sync locked items\n        this.lockedRefs = updateLockedRef;\n      })\n    );\n\n    this.subscriptions.push(this.valueCollector.pipe(debounceTime(0)).subscribe(() => this.emitChange()));\n  }\n\n  get selectionType(): SelectionType {\n    return this._selectionType;\n  }\n  set selectionType(value: SelectionType) {\n    if (value === this.selectionType) {\n      return;\n    }\n\n    this._selectionType = value ?? SelectionType.None;\n\n    if (!this._current && this._selectionType !== SelectionType.None) {\n      this._current = [];\n    }\n  }\n\n  get current(): T[] {\n    return this._current;\n  }\n  set current(value: T[]) {\n    this.updateCurrent(value, true);\n    this.updateCurrentSelectionRefs();\n  }\n\n  get currentSingle(): T {\n    return this._current?.length ? this._current[0] : undefined;\n  }\n\n  // We do not want to expose the Subject itself, but the Observable which is read-only\n  get change(): Observable<T[]> {\n    return this._change.asObservable();\n  }\n\n  get selectable(): boolean {\n    return this._selectionType !== SelectionType.None;\n  }\n\n  // Refs of currently selected items\n  private get currentSelectionRefs(): T[] {\n    return this._currentSelectionRefs;\n  }\n\n  checkForChanges(): void {\n    const changes = this._differ.diff(this._current);\n    // @TODO move the identifyBy from items to selection as it's used only here and is not needed in items\n    if (this.identifyBy !== this._items.identifyBy) {\n      this.identifyBy = this._items.identifyBy;\n    }\n    if (changes) {\n      this.updateCurrentSelectionRefs();\n    }\n  }\n\n  clearSelection(): void {\n    this._current = [];\n    this._currentSelectionRefs = [];\n    this.emitChange();\n  }\n\n  /**\n   * Cleans up our subscriptions to other providers\n   */\n  destroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  updateCurrent(value: T[], emit: boolean) {\n    this._current = value;\n    if (emit) {\n      this.valueCollector.next(value);\n    }\n  }\n\n  /**\n   * Checks if an item is currently selected\n   */\n  isSelected(item: T): boolean {\n    const refIndex = this.currentSelectionRefs.indexOf(this._items.identifyBy(item));\n    if (this._selectionType === SelectionType.Single) {\n      return refIndex === 0;\n    } else if (this._selectionType === SelectionType.Multi) {\n      return refIndex >= 0;\n    }\n\n    return false;\n  }\n\n  /**\n   * Selects or deselects an item\n   */\n  setSelected(item: T, selected: boolean) {\n    const ref = this._items.identifyBy(item);\n    const index = this.currentSelectionRefs ? this.currentSelectionRefs.indexOf(ref) : -1;\n\n    switch (this._selectionType) {\n      case SelectionType.None:\n        break;\n      case SelectionType.Single:\n        if (selected) {\n          this.current = [item];\n        }\n        // in single selection, set currentSingle method should be used\n        break;\n      case SelectionType.Multi:\n        if (index >= 0 && !selected) {\n          this.deselectItem(index);\n        } else if (index < 0 && selected) {\n          this.selectItem(item);\n        }\n        break;\n      default:\n        break;\n    }\n  }\n\n  /**\n   * Checks if all currently displayed items are selected\n   */\n  isAllSelected(): boolean {\n    if (this._selectionType !== SelectionType.Multi || !this._items.displayed) {\n      return false;\n    }\n    // make sure to exclude the locked items from the list when counting\n    const displayedItems: T[] = this._items.displayed.filter(item => {\n      return this.isLocked(item) === false;\n    });\n\n    const nbDisplayed = displayedItems.length;\n    if (nbDisplayed < 1) {\n      return false;\n    }\n    const temp: T[] = displayedItems.filter(item => {\n      const ref = this._items.identifyBy(item);\n      return this.currentSelectionRefs.indexOf(ref) > -1;\n    });\n    return temp.length === displayedItems.length;\n  }\n\n  /**\n   * Lock and unlock item\n   */\n  lockItem(item: T, lock: boolean) {\n    if (this.canItBeLocked()) {\n      const ref = this._items.identifyBy(item);\n      if (lock === true) {\n        // Add to lockedRef\n        this.lockedRefs.push(ref);\n      } else {\n        // Remove from lockedRef\n        this.lockedRefs = this.lockedRefs.filter(lockedItem => ref !== lockedItem);\n      }\n    }\n  }\n\n  /**\n   * Check is item locked or not by searching into lockedRefs for entry\n   */\n  isLocked(item: T): boolean {\n    /**\n     * The check for selectionType will boost the performance by NOT searching\n     * into the array when there is no need for that.\n     */\n    if (this.canItBeLocked()) {\n      const ref = this._items.identifyBy(item);\n      return this.lockedRefs.indexOf(ref) > -1;\n    }\n\n    return false;\n  }\n\n  /**\n   * Selects or deselects all currently displayed items\n   */\n  toggleAll() {\n    if (this._selectionType === SelectionType.None || this._selectionType === SelectionType.Single) {\n      return;\n    }\n    /**\n     * If every currently displayed item is already selected, we clear them.\n     * If at least one item isn't selected, we select every currently displayed item.\n     */\n    if (this.isAllSelected()) {\n      this._items.displayed.forEach(item => {\n        const ref = this._items.identifyBy(item);\n        const currentIndex = this.currentSelectionRefs.indexOf(ref);\n        if (currentIndex > -1 && this.isLocked(item) === false) {\n          this.deselectItem(currentIndex);\n        }\n      });\n    } else {\n      this._items.displayed.forEach(item => {\n        if (!this.isSelected(item) && this.isLocked(item) === false) {\n          this.selectItem(item);\n        }\n      });\n    }\n  }\n\n  /**\n   * Selects an item\n   */\n  private selectItem(item: T): void {\n    this.current = this.current.concat(item);\n  }\n\n  /**\n   * Deselects an item\n   */\n  private deselectItem(indexOfItem: number): void {\n    this.current = this.current.slice(0, indexOfItem).concat(this.current.slice(indexOfItem + 1));\n    if (indexOfItem < this.currentSelectionRefs.length) {\n      // Keep selected refs array in sync\n      const removedItems = this.currentSelectionRefs[indexOfItem];\n      // locked reference is no longer needed (if any)\n      this.lockedRefs = this.lockedRefs.filter(locked => locked !== removedItems[0]);\n    }\n  }\n\n  /**\n   * Make sure that it could be locked\n   */\n  private canItBeLocked(): boolean {\n    return this._selectionType !== SelectionType.None;\n  }\n\n  private emitChange() {\n    this._change.next(this.current);\n  }\n\n  private updateCurrentSelectionRefs() {\n    this._currentSelectionRefs = this._current?.map(item => this._items.identifyBy(item)) || [];\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class RowActionService {\n  private actionableCount = 0;\n\n  /**\n   * false means no rows with action\n   */\n  get hasActionableRow(): boolean {\n    return this.actionableCount > 0;\n  }\n\n  register() {\n    this.actionableCount++;\n  }\n\n  unregister() {\n    this.actionableCount--;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { DetailService } from './detail.service';\n\n@Injectable()\nexport class ExpandableRowsCount {\n  private expandableCount = 0;\n\n  constructor(private detailService: DetailService) {}\n\n  /**\n   * false means no rows with action\n   * check if details are on, and disable rows entirely\n   */\n  get hasExpandableRow(): boolean {\n    return !this.detailService.enabled && this.expandableCount > 0;\n  }\n\n  register() {\n    this.expandableCount++;\n  }\n\n  unregister() {\n    this.expandableCount--;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { DatagridDisplayMode } from '../enums/display-mode.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\n@Injectable()\nexport class DisplayModeService implements OnDestroy {\n  protected _view = new BehaviorSubject(DatagridDisplayMode.DISPLAY);\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(renderOrganizer: DatagridRenderOrganizer) {\n    this.subscriptions.push(\n      renderOrganizer\n        .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_ON)\n        .subscribe(() => this._view.next(DatagridDisplayMode.CALCULATE))\n    );\n\n    this.subscriptions.push(\n      renderOrganizer\n        .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_OFF)\n        .subscribe(() => this._view.next(DatagridDisplayMode.DISPLAY))\n    );\n  }\n\n  get view(): Observable<DatagridDisplayMode> {\n    return this._view.asObservable();\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=radio][clrDgSingleSelectionRadio]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => ClrDatagridSingleSelectionValueAccessor),\n      multi: true,\n    },\n  ],\n  host: {\n    '(change)': 'onChange(value)',\n    '(blur)': 'onTouched()',\n  },\n})\nexport class ClrDatagridSingleSelectionValueAccessor implements ControlValueAccessor {\n  @Input() value;\n  @Input() clrDgIdentityFn!: (value: any) => unknown;\n\n  private state: any;\n\n  constructor(\n    private renderer: Renderer2,\n    private elementRef: ElementRef<HTMLInputElement>\n  ) {}\n\n  onChange: (value: any) => void = () => {};\n\n  onTouched: () => void = () => {};\n\n  registerOnChange(fn: (value: any) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n  }\n\n  writeValue(value: any): void {\n    this.state = value;\n    this.updateChecked();\n  }\n\n  private keyOf(value: any): unknown {\n    if (value && this.clrDgIdentityFn) {\n      return this.clrDgIdentityFn(value);\n    }\n    return value;\n  }\n\n  private updateChecked(): void {\n    // Never mark the radio as checked when there is no real selection (state is null/undefined)\n    // or the row item itself is a virtual-scroll placeholder slot (value is null/undefined).\n    // Otherwise keyOf(undefined) === keyOf(undefined) would falsely check the radio.\n    if (this.state === null || this.state === undefined || this.value === null || this.value === undefined) {\n      this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n      return;\n    }\n    const state = this.keyOf(this.state);\n    const value = this.keyOf(this.value);\n    this.renderer.setProperty(this.elementRef.nativeElement, 'checked', state === value);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener } from '@angular/core';\n\nimport { Selection } from './providers/selection';\n\n@Directive({\n  selector: '.datagrid-select',\n  standalone: false,\n})\nexport class ClrDatagridSelectionCellDirective {\n  constructor(private readonly selection: Selection) {}\n\n  @HostListener('click', ['$event'])\n  private onSelectionCellClick(event: MouseEvent & { target: HTMLElement }) {\n    // We want to effectively expand the selection click target to the entire selection cell.\n\n    // If row selection is enabled, do nothing because the entire selection cell is already clickable.\n    if (this.selection.rowSelectionMode) {\n      return;\n    }\n\n    // If click was outside the label/input, forward the click to the input.\n    if (event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT') {\n      event.target.querySelector('input')?.click();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChildren,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Injector,\n  Input,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef,\n} from '@angular/core';\nimport {\n  ClrCommonStringsService,\n  ClrExpandableAnimationDirective,\n  HostWrapper,\n  IfExpandService,\n  LoadingListener,\n} from '@clr/angular/utils';\nimport { combineLatest, ReplaySubject, Subscription } from 'rxjs';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType } from './enums/selection-type';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { Items } from './providers/items';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { WrappedRow } from './wrapped-row';\n\nlet nbRow = 0;\n\n@Component({\n  selector: 'clr-dg-row',\n  templateUrl: './datagrid-row.html',\n  host: {\n    '[class.datagrid-row]': 'true',\n    '[class.datagrid-row-skeleton]': 'skeletonLoading',\n    '[class.datagrid-selected]': 'selected',\n    '[attr.aria-owns]': 'id',\n    role: 'rowgroup',\n  },\n  providers: [\n    DatagridIfExpandService,\n    { provide: IfExpandService, useExisting: DatagridIfExpandService },\n    { provide: LoadingListener, useExisting: DatagridIfExpandService },\n  ],\n  standalone: false,\n})\nexport class ClrDatagridRow<T = any> implements AfterContentInit, AfterViewInit {\n  @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<boolean>(false);\n  @Output('clrDgExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n  @Input('clrDgDetailDisabled') detailDisabled = false;\n  @Input('clrDgDetailHidden') detailHidden = false;\n  @Input('clrDgSkeletonLoading') skeletonLoading = false;\n\n  id: string;\n  radioId: string;\n  checkboxId: string;\n  expandableId: string;\n  replaced: boolean;\n  displayCells = false;\n  expandAnimationTrigger = false;\n\n  /* reference to the enum so that template can access */\n  SELECTION_TYPE = SelectionType;\n\n  /**\n   * @internal\n   */\n  itemChanges = new ReplaySubject<T>(1);\n\n  /*****\n   * property dgCells\n   *\n   * @description\n   * A Query List of the ClrDatagrid cells in this row.\n   *\n   */\n  @ContentChildren(ClrDatagridCell) dgCells: QueryList<ClrDatagridCell>;\n\n  @ViewChild(ClrExpandableAnimationDirective) expandAnimation: ClrExpandableAnimationDirective;\n  @ViewChild('detailButton') detailButton: ElementRef<HTMLButtonElement>;\n  @ViewChild('stickyCells', { read: ViewContainerRef }) _stickyCells: ViewContainerRef;\n  @ViewChild('scrollableCells', { read: ViewContainerRef }) _scrollableCells: ViewContainerRef;\n  @ViewChild('calculatedCells', { read: ViewContainerRef }) _calculatedCells: ViewContainerRef;\n  @ViewChild('fixedCellTemplate') _fixedCellTemplate: TemplateRef<any>;\n\n  private _item: T;\n  private _selected = false;\n  private _detailOpenLabel = '';\n  private _detailCloseLabel = '';\n  private _rowSelectionLabel = '';\n  private wrappedInjector: Injector;\n  private subscriptions: Subscription[] = [];\n\n  // By default, every item is selectable; it becomes not selectable only if it's explicitly set to false\n  private _selectable: boolean | string = true;\n\n  constructor(\n    public selection: Selection<T>,\n    public rowActionService: RowActionService,\n    public globalExpandable: ExpandableRowsCount,\n    public expand: DatagridIfExpandService,\n    public detailService: DetailService,\n    private displayMode: DisplayModeService,\n    private vcr: ViewContainerRef,\n    renderer: Renderer2,\n    public el: ElementRef<HTMLElement>,\n    public commonStrings: ClrCommonStringsService,\n    private items: Items,\n    @Inject(DOCUMENT) private document: any\n  ) {\n    nbRow++;\n    this.id = 'clr-dg-row' + nbRow;\n    this.radioId = 'clr-dg-row-rd' + nbRow;\n    this.checkboxId = 'clr-dg-row-cb' + nbRow;\n    this.expandableId = expand.expandableId;\n\n    this.subscriptions.push(\n      combineLatest(expand.replace, expand.expandChange).subscribe(([expandReplaceValue, expandChangeValue]) => {\n        if (expandReplaceValue && expandChangeValue) {\n          // replaced and expanding\n          this.replaced = true;\n          renderer.addClass(el.nativeElement, 'datagrid-row-replaced');\n        } else {\n          this.replaced = false;\n          // Handles these cases: not replaced and collapsing & replaced and\n          // collapsing and not replaced and expanding.\n          renderer.removeClass(el.nativeElement, 'datagrid-row-replaced');\n        }\n      })\n    );\n  }\n\n  /**\n   * Model of the row, to use for selection\n   */\n  @Input('clrDgItem')\n  get item(): T {\n    return this._item;\n  }\n  set item(item: T) {\n    this._item = item;\n    this.itemChanges.next(item);\n    this.clrDgSelectable = this._selectable;\n  }\n\n  @Input('clrDgSelectable')\n  get clrDgSelectable() {\n    return !this.selection.isLocked(this.item);\n  }\n  set clrDgSelectable(value: boolean | string) {\n    if (this.item) {\n      this.selection.lockItem(this.item, value === 'false' || value === false);\n    }\n    // Store this value locally, to be initialized when item is initialized\n    this._selectable = value;\n  }\n\n  /**\n   * Indicates if the row is selected\n   */\n  @Input('clrDgSelected')\n  get selected() {\n    if (this.selection.selectionType === SelectionType.None) {\n      return this._selected;\n    } else {\n      return this.selection.isSelected(this.item);\n    }\n  }\n  set selected(value: boolean | string) {\n    if (this.selection.selectionType === SelectionType.None) {\n      this._selected = value as boolean;\n    } else {\n      if (value && this.selection.selectionType === SelectionType.Multi) {\n        this.rangeSelect();\n      } else {\n        this.selection.rangeStart = null;\n      }\n      this.selection.setSelected(this.item, value as boolean);\n    }\n  }\n\n  @Input('clrDgExpanded')\n  get expanded() {\n    return this.expand.expanded;\n  }\n  set expanded(value: boolean | string) {\n    this.expand.expanded = value as boolean;\n  }\n\n  @Input()\n  get clrDgDetailOpenLabel(): string {\n    return this._detailOpenLabel ? this._detailOpenLabel : this.commonStrings.keys.open;\n  }\n  set clrDgDetailOpenLabel(label: string) {\n    this._detailOpenLabel = label;\n  }\n\n  @Input()\n  get clrDgDetailCloseLabel(): string {\n    return this._detailCloseLabel ? this._detailCloseLabel : this.commonStrings.keys.close;\n  }\n  set clrDgDetailCloseLabel(label: string) {\n    this._detailCloseLabel = label;\n  }\n\n  // CDE-151: Rename this field to clrDgRowSelectionLabel in v16\n  @Input()\n  get clrDgRowSelectionLabel(): string {\n    return this._rowSelectionLabel ? this._rowSelectionLabel : this.commonStrings.keys.select;\n  }\n  set clrDgRowSelectionLabel(label: string) {\n    this._rowSelectionLabel = label;\n  }\n\n  get _view() {\n    return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n  }\n\n  get identifyBy() {\n    return this.items.identifyBy;\n  }\n\n  ngOnInit() {\n    this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);\n    this.selection.lockItem(this.item, this.clrDgSelectable === false);\n  }\n\n  ngAfterContentInit() {\n    this.dgCells.changes.subscribe(() => {\n      this.dgCells.forEach(cell => {\n        if (!cell._view.destroyed) {\n          this._scrollableCells.insert(cell._view);\n        }\n      });\n    });\n  }\n\n  ngAfterViewInit() {\n    this.subscriptions.push(\n      this.displayMode.view.subscribe(viewChange => {\n        // Listen for view changes and move cells around depending on the current displayType\n        // remove cell views from display view\n        for (let i = this._scrollableCells.length; i > 0; i--) {\n          this._scrollableCells.detach();\n        }\n        // remove cell views from calculated view\n        for (let i = this._calculatedCells.length; i > 0; i--) {\n          this._calculatedCells.detach();\n        }\n        if (viewChange === DatagridDisplayMode.CALCULATE) {\n          this.displayCells = false;\n          // Inserts a fixed cell if any of these conditions are true.\n          const fixedCellConditions = [\n            this.selection.selectionType !== this.SELECTION_TYPE.None,\n            this.rowActionService.hasActionableRow,\n            this.globalExpandable.hasExpandableRow,\n            this.detailService.enabled,\n          ];\n          fixedCellConditions\n            .filter(Boolean)\n            .forEach(() => this._calculatedCells.insert(this._fixedCellTemplate.createEmbeddedView(null)));\n          this.dgCells.forEach(cell => {\n            if (!cell._view.destroyed) {\n              this._calculatedCells.insert(cell._view);\n            }\n          });\n        } else {\n          this.displayCells = true;\n          this.dgCells.forEach(cell => {\n            if (!cell._view.destroyed) {\n              this._scrollableCells.insert(cell._view);\n            }\n          });\n        }\n      }),\n      this.expand.animate.subscribe(() => {\n        this.expandAnimationTrigger = !this.expandAnimationTrigger;\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n  }\n\n  toggle(selected = !this.selected) {\n    if (selected !== this.selected) {\n      this.selected = selected;\n      this.selectedChanged.emit(selected);\n    }\n  }\n\n  toggleExpand() {\n    if (this.expand.expandable) {\n      this.expandAnimation.updateStartHeight();\n      this.expanded = !this.expanded;\n      this.expandedChange.emit(this.expanded);\n    }\n  }\n\n  /**\n   * The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.\n   * This prevents our intended range-selection, because this text-selection overrides our shift-click event.\n   * We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click\n   * selection browser functionality, which is inconsistently implemented in browsers anyway.\n   */\n  clearRanges(event: MouseEvent) {\n    if (this.selection.rowSelectionMode && event.shiftKey) {\n      this.document.getSelection().removeAllRanges();\n      // Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();\n      // We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by\n      // the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.\n      if (window.navigator.userAgent.indexOf('Firefox') !== -1) {\n        event.preventDefault();\n        this.toggle(true);\n      }\n    }\n  }\n\n  /**\n   * @deprecated related to clrDgRowSelection, which is deprecated\n   */\n  protected selectRow(selected = !this.selected, $event) {\n    // The label also captures clicks that bubble up to the row event listener, causing\n    // this handler to run twice. This exits early to prevent toggling the checkbox twice.\n    if (!this.selection.rowSelectionMode || $event.target.tagName === 'LABEL' || !this._selectable) {\n      return;\n    }\n    if (this.selection.selectionType === this.SELECTION_TYPE.Single) {\n      this.selection.current = [this.item];\n    } else {\n      this.toggle(selected);\n    }\n  }\n\n  private rangeSelect() {\n    const items = this.items.displayed;\n    if (!items) {\n      return;\n    }\n    const startIx = items.indexOf(this.selection.rangeStart);\n    if (\n      this.selection.rangeStart &&\n      this.selection.current.includes(this.selection.rangeStart) &&\n      this.selection.shiftPressed &&\n      startIx !== -1\n    ) {\n      const endIx = items.indexOf(this.item);\n      // Using Set to remove duplicates\n      const newSelection = new Set(\n        this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1))\n      );\n      this.selection.current = [...newSelection];\n    } else {\n      // page number has changed or\n      // no Shift was pressed or\n      // rangeStart not yet set\n      this.selection.rangeStart = this.item;\n    }\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n<div\n  role=\"row\"\n  [id]=\"id\"\n  class=\"datagrid-row-master datagrid-row-flex\"\n  [clrExpandableAnimation]=\"expandAnimationTrigger\"\n  (mousedown)=\"clearRanges($event)\"\n  (click)=\"selectRow(!selected, $event)\"\n  [class.datagrid-row-clickable]=\"selection.rowSelectionMode\"\n  [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n>\n  <div class=\"datagrid-row-sticky\">\n    <!-- Sticky elements here -->\n    <ng-container #stickyCells>\n      @if (selection.selectionType === SELECTION_TYPE.Multi) {\n      <div\n        class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n        [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n        role=\"gridcell\"\n      >\n        <div class=\"clr-checkbox-wrapper\">\n          <input\n            tabindex=\"-1\"\n            type=\"checkbox\"\n            [ngModel]=\"selected\"\n            (ngModelChange)=\"toggle($event)\"\n            [id]=\"checkboxId\"\n            [disabled]=\"clrDgSelectable ? null : true\"\n            [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n          />\n          <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n          <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n            <span class=\"clr-sr-only\">{{clrDgRowSelectionLabel || commonStrings.keys.select}}</span>\n          </label>\n        </div>\n      </div>\n      } @if (selection.selectionType === SELECTION_TYPE.Single) {\n      <div\n        class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n        [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n        role=\"gridcell\"\n      >\n        <clr-radio-wrapper>\n          <input\n            tabindex=\"-1\"\n            type=\"radio\"\n            clrRadio\n            clrDgSingleSelectionRadio\n            [clrDgIdentityFn]=\"identifyBy\"\n            [id]=\"radioId\"\n            [name]=\"selection.id + '-radio'\"\n            [value]=\"item\"\n            [ngModel]=\"selection.currentSingle\"\n            (ngModelChange)=\"selection.current = [$event]\"\n            [disabled]=\"clrDgSelectable ? null : true\"\n            [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n          />\n          <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n            <span class=\"clr-sr-only\">{{ clrDgRowSelectionLabel || commonStrings.keys.select }}</span>\n          </label>\n        </clr-radio-wrapper>\n      </div>\n      } @if (rowActionService.hasActionableRow) {\n      <div class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n        <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n      </div>\n      } @if (globalExpandable.hasExpandableRow) {\n      <div class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n        @if (expand.expandable) { @if (!expand.loading) {\n        <button\n          tabindex=\"-1\"\n          (click)=\"toggleExpand()\"\n          type=\"button\"\n          class=\"datagrid-expandable-caret-button\"\n          [attr.aria-expanded]=\"expand.expanded\"\n          [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n          [attr.aria-controls]=\"expand.hasExpandTemplate && !expand.expanded ? null : expandableId\"\n        >\n          <cds-icon\n            shape=\"angle\"\n            class=\"datagrid-expandable-caret-icon\"\n            [direction]=\"expand.expanded ? 'down' : 'right'\"\n            [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n          ></cds-icon>\n        </button>\n        } @if (expand.loading) {\n        <clr-spinner clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n        } }\n      </div>\n      } @if (detailService.enabled) {\n      <div class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\" role=\"gridcell\">\n        @if (!detailHidden) {\n        <button\n          tabindex=\"-1\"\n          (click)=\"detailService.toggle(item, detailButton)\"\n          type=\"button\"\n          #detailButton\n          class=\"datagrid-detail-caret-button\"\n          [disabled]=\"detailDisabled\"\n          [class.is-open]=\"detailService.isRowOpen(item)\"\n          [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n          [attr.aria-expanded]=\"detailService.isRowOpen(item)\"\n          [attr.aria-controls]=\"detailService.id\"\n          aria-haspopup=\"dialog\"\n        >\n          <cds-icon\n            shape=\"angle-double\"\n            [direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n            class=\"datagrid-detail-caret-icon\"\n            [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n          ></cds-icon>\n        </button>\n        }\n      </div>\n      }\n    </ng-container>\n    <!-- placeholder for projecting other sticky cells as pinned-->\n  </div>\n  <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n    <div class=\"datagrid-scrolling-cells\">\n      <ng-content select=\"clr-dg-cell\"></ng-content>\n      <ng-container #scrollableCells></ng-container>\n    </div>\n    <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n    @if (replaced && !expand.loading) {\n    <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n    } @if (!replaced && !expand.loading) {\n    <ng-template [ngTemplateOutlet]=\"detail\"></ng-template>\n    }\n  </div>\n</div>\n<!--\nWe need the \"project into template\" hacks because we need this in 2 different places\ndepending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n  <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n\n<ng-template #fixedCellTemplate>\n  <div class=\"datagrid-fixed-column datagrid-cell\" role=\"gridcell\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { ListRange } from '@angular/cdk/collections';\nimport {\n  CDK_VIRTUAL_SCROLL_VIEWPORT,\n  CdkFixedSizeVirtualScroll,\n  CdkVirtualForOf,\n  CdkVirtualForOfContext,\n  CdkVirtualScrollable,\n  CdkVirtualScrollableElement,\n  CdkVirtualScrollViewport,\n  FixedSizeVirtualScrollStrategy,\n  ScrollDispatcher,\n  ViewportRuler,\n  VIRTUAL_SCROLL_STRATEGY,\n  VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Directive,\n  DoCheck,\n  ElementRef,\n  EmbeddedViewRef,\n  EnvironmentInjector,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  inject,\n  Injector,\n  Input,\n  IterableDiffers,\n  NgZone,\n  OnDestroy,\n  Output,\n  Renderer2,\n  runInInjectionContext,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridVirtualScrollRangeInterface } from './interfaces/virtual-scroll-data-range.interface';\nimport { Items } from './providers/items';\n\ntype CdkVirtualForInputKey =\n  | 'cdkVirtualForOf'\n  | 'cdkVirtualForTrackBy'\n  | 'cdkVirtualForTemplate'\n  | 'cdkVirtualForTemplateCacheSize';\n\ntype CdkVirtualForInputs<T> = Partial<Pick<CdkVirtualForOf<T>, CdkVirtualForInputKey>>;\n\ntype CdkFixedSizeVirtualScrollInputs = Pick<CdkFixedSizeVirtualScroll, 'itemSize' | 'minBufferPx' | 'maxBufferPx'>;\n\n@Directive({\n  selector: '[clrVirtualScroll],[ClrVirtualScroll]',\n  providers: [Items],\n  standalone: false,\n})\nexport class ClrDatagridVirtualScrollDirective<T> implements AfterViewInit, DoCheck, OnDestroy {\n  @Output() renderedRangeChange = new EventEmitter<ListRange>();\n  @Input('clrVirtualPersistItems') persistItems = true;\n\n  private _isUserProvidedItemSize = false;\n  private _itemSize = 33;\n  private _minBufferPx = 200;\n  private _maxBufferPx = 400;\n\n  private shouldUpdateAriaRowIndexes = false;\n\n  private readonly datagridElementRef: ElementRef<HTMLElement>;\n\n  private gridRoleElement: HTMLElement | null | undefined;\n  private readonly virtualScrollStrategy: FixedSizeVirtualScrollStrategy;\n  private virtualScrollViewport: CdkVirtualScrollViewport;\n  private cdkVirtualFor: CdkVirtualForOf<T>;\n  private subscriptions: Subscription[] = [];\n  private topIndex = 0;\n\n  // @deprecated remove the mutation observer when `datagrid-compact` class is deleted\n  private mutationChanges: MutationObserver = new MutationObserver((mutations: MutationRecord[]) => {\n    mutations.forEach((mutation: MutationRecord) => {\n      // it is possible this to be called twice because the old class is removed and the new added\n      if (\n        !this._isUserProvidedItemSize &&\n        (mutation.target as HTMLElement).classList.contains('datagrid-compact') &&\n        this.itemSize > 25\n      ) {\n        this.updateItemSize(25);\n      }\n    });\n  });\n\n  private cdkVirtualForInputs: CdkVirtualForInputs<T> = {\n    cdkVirtualForTrackBy: index => index,\n  };\n  private _totalItems: number;\n\n  constructor(\n    private readonly changeDetectorRef: ChangeDetectorRef,\n    private iterableDiffers: IterableDiffers,\n    private items: Items<T>,\n    private readonly ngZone: NgZone,\n    private readonly renderer2: Renderer2,\n    private readonly templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n    private readonly viewContainerRef: ViewContainerRef,\n    private readonly directionality: Directionality,\n    private readonly scrollDispatcher: ScrollDispatcher,\n    private readonly viewportRuler: ViewportRuler,\n    @Inject(forwardRef(() => ClrDatagrid)) private readonly datagrid: ClrDatagrid,\n    private readonly injector: EnvironmentInjector\n  ) {\n    items.smartenUp();\n    datagrid.detailService.preventFocusScroll = true;\n\n    this.datagridElementRef = datagrid.el;\n\n    // default\n    this.cdkVirtualForTemplateCacheSize = 20;\n\n    const cellHeightToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-cell-height');\n    const cellHeightValue = +/calc\\(([0-9]+) \\* calc\\(\\(1rem \\/ 20\\) \\* 1\\)\\)/.exec(cellHeightToken)?.[1];\n\n    const borderWidthToken = window.getComputedStyle(document.body).getPropertyValue('--clr-table-borderwidth');\n    const borderWidthValue = +/calc\\(([0-9]+) \\* \\(1rem \\/ 20\\)\\)/.exec(borderWidthToken)?.[1];\n\n    // initially rowHeightValue is calculated based on `--clr-table-row-height` that had a discreet value.\n    // currently `--clr-table-row-height` is calculated based on `--clr-table-cell-height` + `--clr-table-borderwidth`\n    const rowHeightValue = cellHeightValue + borderWidthValue;\n\n    if (rowHeightValue && this.itemSize > rowHeightValue) {\n      this.updateItemSize(rowHeightValue);\n    }\n\n    this.mutationChanges.observe(this.datagridElementRef.nativeElement, {\n      attributeFilter: ['class'],\n      attributeOldValue: true,\n    });\n\n    this.virtualScrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n  }\n\n  get totalContentHeight() {\n    return this.virtualScrollViewport?._totalContentHeight() || '';\n  }\n\n  @Input('clrVirtualRowsOf')\n  get cdkVirtualForOf() {\n    return this.cdkVirtualForInputs.cdkVirtualForOf;\n  }\n  set cdkVirtualForOf(value: CdkVirtualForInputs<T>['cdkVirtualForOf']) {\n    this.cdkVirtualForInputs.cdkVirtualForOf = value;\n    this.items.all = value as T[];\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTrackBy')\n  get cdkVirtualForTrackBy() {\n    return this.cdkVirtualForInputs.cdkVirtualForTrackBy;\n  }\n  set cdkVirtualForTrackBy(value: CdkVirtualForInputs<T>['cdkVirtualForTrackBy']) {\n    this.cdkVirtualForInputs.cdkVirtualForTrackBy = value;\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTemplate')\n  get cdkVirtualForTemplate() {\n    return this?.cdkVirtualForInputs?.cdkVirtualForTemplate;\n  }\n  set cdkVirtualForTemplate(value: CdkVirtualForInputs<T>['cdkVirtualForTemplate']) {\n    this.cdkVirtualForInputs.cdkVirtualForTemplate = value;\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsTemplateCacheSize')\n  get cdkVirtualForTemplateCacheSize() {\n    return this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize;\n  }\n  set cdkVirtualForTemplateCacheSize(value: CdkVirtualForInputs<T>['cdkVirtualForTemplateCacheSize']) {\n    this.cdkVirtualForInputs.cdkVirtualForTemplateCacheSize = coerceNumberProperty(value);\n    this.updateCdkVirtualForInputs();\n  }\n\n  @Input('clrVirtualRowsItemSize')\n  get itemSize() {\n    return this._itemSize;\n  }\n  set itemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n    this._isUserProvidedItemSize = true;\n    this.updateItemSize(value);\n  }\n\n  @Input('clrVirtualRowsMinBufferPx')\n  get minBufferPx() {\n    return this._minBufferPx;\n  }\n  set minBufferPx(value: CdkFixedSizeVirtualScrollInputs['minBufferPx']) {\n    this._minBufferPx = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  @Input('clrVirtualRowsMaxBufferPx')\n  get maxBufferPx() {\n    return this._maxBufferPx;\n  }\n  set maxBufferPx(value: CdkFixedSizeVirtualScrollInputs['maxBufferPx']) {\n    this._maxBufferPx = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  @Input('clrVirtualDataRange')\n  set dataRange(range: ClrDatagridVirtualScrollRangeInterface<T>) {\n    if (!range) {\n      return;\n    }\n\n    if (this.items.smart) {\n      this.items.smartenDown();\n    }\n\n    this.totalItems = range.total;\n\n    this.updateDataRange(range.skip, range.data);\n  }\n\n  get totalItems() {\n    return this._totalItems;\n  }\n\n  private set totalItems(value: number) {\n    this._totalItems = value;\n  }\n\n  ngAfterViewInit() {\n    runInInjectionContext(this.injector, () => {\n      this.virtualScrollViewport = this.createVirtualScrollViewportForDatagrid(\n        this.changeDetectorRef,\n        this.ngZone,\n        this.renderer2,\n        this.directionality,\n        this.scrollDispatcher,\n        this.viewportRuler,\n        this.datagridElementRef,\n        this.virtualScrollStrategy\n      );\n\n      this.cdkVirtualFor = createCdkVirtualForOfDirective(\n        this.viewContainerRef,\n        this.templateRef,\n        this.iterableDiffers,\n        this.virtualScrollViewport,\n        this.ngZone\n      );\n\n      this.virtualScrollViewport.ngOnInit();\n    });\n\n    this.gridRoleElement = this.datagridElementRef.nativeElement.querySelector<HTMLElement>('[role=\"grid\"]');\n\n    this.updateCdkVirtualForInputs();\n\n    this.subscriptions.push(\n      this.items.change.subscribe(newItems => {\n        if (this.items.smart) {\n          this.cdkVirtualFor.cdkVirtualForOf = newItems;\n        }\n        this.shouldUpdateAriaRowIndexes = true;\n      }),\n      this.cdkVirtualFor.dataStream.subscribe(data => {\n        this.updateAriaRowCount(data.length);\n      }),\n      this.virtualScrollViewport.scrolledIndexChange.subscribe(index => {\n        this.topIndex = index;\n      }),\n      this.virtualScrollViewport.renderedRangeStream.subscribe(renderedRange => {\n        this.renderedRangeChange.emit(renderedRange);\n        this.shouldUpdateAriaRowIndexes = true;\n      }),\n      this.datagrid.refresh.subscribe(datagridState => {\n        if (datagridState.filters) {\n          this.scrollToIndex(0);\n        }\n      })\n    );\n  }\n\n  ngDoCheck() {\n    this.cdkVirtualFor?.ngDoCheck();\n    if (this.shouldUpdateAriaRowIndexes) {\n      this.updateAriaRowIndexes();\n\n      this.shouldUpdateAriaRowIndexes = false;\n    }\n  }\n\n  ngOnDestroy() {\n    this.cdkVirtualFor?.ngOnDestroy();\n    this.virtualScrollViewport?.ngOnDestroy();\n    this.mutationChanges?.disconnect();\n    this.subscriptions.forEach(subscription => {\n      subscription.unsubscribe();\n    });\n  }\n\n  scrollUp(offset: number, behavior: ScrollBehavior = 'auto') {\n    this.scrollToIndex(this.topIndex - offset, behavior);\n  }\n\n  scrollDown(offset: number, behavior: ScrollBehavior = 'auto') {\n    this.scrollToIndex(this.topIndex + offset, behavior);\n  }\n\n  scrollToIndex(index: number, behavior: ScrollBehavior = 'auto') {\n    this.virtualScrollViewport?.scrollToIndex(index, behavior);\n  }\n\n  private updateDataRange(skip: number, data: T[]) {\n    let items = this.cdkVirtualForOf as T[];\n\n    if (!this.persistItems || !items || items?.length !== this.totalItems) {\n      items = Array(this.totalItems);\n    }\n\n    items.splice(skip, data.length, ...data);\n\n    this.cdkVirtualForOf = Array.from(items);\n  }\n\n  private updateItemSize(value: CdkFixedSizeVirtualScrollInputs['itemSize']) {\n    this._itemSize = coerceNumberProperty(value);\n    this.updateFixedSizeVirtualScrollInputs();\n  }\n\n  private updateCdkVirtualForInputs() {\n    if (this.cdkVirtualFor) {\n      for (const cdkVirtualForInputKey of Object.keys(this.cdkVirtualForInputs) as CdkVirtualForInputKey[]) {\n        if (this.cdkVirtualFor[cdkVirtualForInputKey] !== this.cdkVirtualForInputs[cdkVirtualForInputKey]) {\n          (this.cdkVirtualFor as any)[cdkVirtualForInputKey] = this.cdkVirtualForInputs[cdkVirtualForInputKey];\n        }\n      }\n    }\n  }\n\n  private updateFixedSizeVirtualScrollInputs() {\n    if (this.virtualScrollStrategy) {\n      this.virtualScrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n    }\n  }\n\n  private updateAriaRowCount(rowCount: number) {\n    this.gridRoleElement?.setAttribute('aria-rowcount', rowCount.toString());\n  }\n\n  private updateAriaRowIndexes() {\n    for (let i = 0; i < this.viewContainerRef.length; i++) {\n      const viewRef = this.viewContainerRef.get(i) as EmbeddedViewRef<CdkVirtualForOfContext<T>>;\n\n      const rootElements: HTMLElement[] = viewRef.rootNodes;\n      const datagridRowElement = rootElements.find(rowElement => rowElement.tagName === 'CLR-DG-ROW');\n      const rowRoleElement = datagridRowElement?.querySelector('[role=\"row\"]');\n\n      const newAriaRowIndex = (viewRef.context.index + 1).toString();\n      if (rowRoleElement?.getAttribute('aria-rowindex') !== newAriaRowIndex) {\n        // aria-rowindex should start with one, not zero, so we have to add one to the zero-based index\n        rowRoleElement?.setAttribute('aria-rowindex', newAriaRowIndex);\n      }\n    }\n  }\n\n  private createVirtualScrollViewportForDatagrid(\n    changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    renderer2: Renderer2,\n    directionality: Directionality,\n    scrollDispatcher: ScrollDispatcher,\n    viewportRuler: ViewportRuler,\n    datagridElementRef: ElementRef<HTMLElement>,\n    virtualScrollStrategy: FixedSizeVirtualScrollStrategy\n  ) {\n    const datagridContentElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-content');\n    const datagridRowsElement = datagridElementRef.nativeElement.querySelector<HTMLElement>('.datagrid-rows');\n\n    const virtualScrollViewport = createCdkVirtualScrollViewport(\n      new ElementRef(datagridContentElement),\n      new ElementRef(datagridRowsElement),\n      changeDetectorRef,\n      ngZone,\n      renderer2,\n      virtualScrollStrategy,\n      directionality,\n      scrollDispatcher,\n      viewportRuler,\n      null as any as CdkVirtualScrollableElement\n    );\n\n    return virtualScrollViewport;\n  }\n}\n\nfunction createCdkVirtualScrollViewport(\n  datagridDivElementRef: ElementRef<HTMLElement>,\n  contentWrapper: ElementRef<HTMLElement>,\n  changeDetectorRef: ChangeDetectorRef,\n  ngZone: NgZone,\n  renderer2: Renderer2,\n  virtualScrollStrategy: VirtualScrollStrategy,\n  directionality: Directionality,\n  scrollDispatcher: ScrollDispatcher,\n  viewportRuler: ViewportRuler,\n  scrollable: CdkVirtualScrollable\n) {\n  const virtualScrollViewportInjector = Injector.create({\n    parent: inject(EnvironmentInjector),\n    providers: [\n      { provide: ElementRef, useValue: datagridDivElementRef },\n      { provide: ChangeDetectorRef, useValue: changeDetectorRef },\n      { provide: NgZone, useValue: ngZone },\n      { provide: Renderer2, useValue: renderer2 },\n      { provide: VIRTUAL_SCROLL_STRATEGY, useValue: virtualScrollStrategy },\n      { provide: Directionality, useValue: directionality },\n      { provide: ScrollDispatcher, useValue: scrollDispatcher },\n      { provide: ViewportRuler, useValue: viewportRuler },\n      { provide: CdkVirtualScrollable, useValue: scrollable },\n      { provide: CdkVirtualScrollViewport, useClass: CdkVirtualScrollViewport },\n    ],\n  });\n  const viewPort = virtualScrollViewportInjector.get(CdkVirtualScrollViewport);\n  viewPort._contentWrapper = contentWrapper;\n  return viewPort;\n}\n\nfunction createCdkVirtualForOfDirective<T>(\n  viewContainerRef: ViewContainerRef,\n  templateRef: TemplateRef<CdkVirtualForOfContext<T>>,\n  iterableDiffers: IterableDiffers,\n  virtualScrollViewport: CdkVirtualScrollViewport,\n  ngZone: NgZone\n) {\n  const virtualScrollViewportInjector = Injector.create({\n    parent: inject(EnvironmentInjector),\n    providers: [{ provide: CDK_VIRTUAL_SCROLL_VIEWPORT, useValue: virtualScrollViewport }],\n  });\n\n  const cdkVirtualForInjector = Injector.create({\n    parent: virtualScrollViewportInjector,\n    providers: [\n      { provide: ViewContainerRef, useValue: viewContainerRef },\n      { provide: TemplateRef, useValue: templateRef },\n      { provide: IterableDiffers, useValue: iterableDiffers },\n      { provide: NgZone, useValue: ngZone },\n      { provide: CdkVirtualForOf, useClass: CdkVirtualForOf },\n    ],\n  });\n\n  return cdkVirtualForInjector.get(CdkVirtualForOf);\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridColumnChanges {\n  WIDTH,\n  HIDDEN,\n  INITIALIZE,\n}\n\nexport const ALL_COLUMN_CHANGES: DatagridColumnChanges[] = Object.keys(DatagridColumnChanges)\n  .map(key => (DatagridColumnChanges as Record<string, any>)[key])\n  .filter(key => key === parseInt(key, 10) && key !== DatagridColumnChanges.INITIALIZE); // extracts only integer keys\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES } from '../enums/column-changes.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\n\n@Injectable()\nexport class ColumnsService {\n  columns: BehaviorSubject<ColumnState>[] = [];\n  columnsStateChange: BehaviorSubject<ColumnState> = new BehaviorSubject(null);\n\n  private _cache: ColumnState[] = [];\n\n  get columnStates(): ColumnState[] {\n    return this.columns.map(column => column.value);\n  }\n\n  get hasHideableColumns(): boolean {\n    return this.columnStates.filter(state => state.hideable).length > 0;\n  }\n\n  get visibleColumns(): ColumnState[] {\n    return this.columnStates.filter(state => !state.hidden);\n  }\n\n  cache() {\n    this._cache = this.columns.map(subject => {\n      const value = { ...subject.value };\n      delete value.changes;\n      return value;\n    });\n  }\n\n  hasCache() {\n    return !!this._cache.length;\n  }\n\n  resetToLastCache() {\n    this._cache.forEach((state, index) => {\n      // Just emit the exact value from the cache\n      const cachedState = { ...state, changes: ALL_COLUMN_CHANGES };\n      this.columns[index].next(cachedState);\n      this.columnsStateChange.next(cachedState);\n    });\n    this._cache = [];\n  }\n\n  // Helper method to emit a change to a column only when there is an actual diff to process for that column\n  emitStateChangeAt(columnIndex: number, diff: ColumnStateDiff) {\n    if (!this.columns[columnIndex]) {\n      return;\n    }\n    this.emitStateChange(this.columns[columnIndex], diff);\n  }\n\n  emitStateChange(column: BehaviorSubject<ColumnState>, diff: ColumnStateDiff) {\n    const changedState = { ...column.value, ...diff };\n    column.next(changedState);\n    this.columnsStateChange.next(changedState);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\nimport { StateDebouncer } from './state-debouncer.provider';\nimport { DatagridPropertyComparator } from '../built-in/comparators/datagrid-property-comparator';\nimport { ClrDatagridStateInterface } from '../interfaces/state.interface';\n\n/**\n * This provider aggregates state changes from the various providers of the Datagrid\n */\n@Injectable()\nexport class StateProvider<T> {\n  /**\n   * The Observable that lets other classes subscribe to global state changes\n   */\n  change: Observable<ClrDatagridStateInterface<T>> = this.debouncer.change.pipe(map(() => this.state));\n\n  constructor(\n    private filters: FiltersProvider<T>,\n    private sort: Sort<T>,\n    private page: Page,\n    private debouncer: StateDebouncer\n  ) {}\n\n  /*\n   * By making this a getter, we open the possibility for a setter in the future.\n   * It's been requested a couple times.\n   */\n  get state(): ClrDatagridStateInterface<T> {\n    const state: ClrDatagridStateInterface<T> = {};\n    if (this.page.size > 0) {\n      state.page = {\n        from: this.page.firstItem,\n        to: this.page.lastItem,\n        size: this.page.size,\n        current: this.page.current,\n      };\n    }\n    if (this.sort.comparator) {\n      if (this.sort.comparator instanceof DatagridPropertyComparator) {\n        /*\n         * Special case for the default object property comparator,\n         * we give the property name instead of the actual comparator.\n         */\n        state.sort = { by: (this.sort.comparator as DatagridPropertyComparator<T>).prop, reverse: this.sort.reverse };\n      } else {\n        state.sort = { by: this.sort.comparator, reverse: this.sort.reverse };\n      }\n    }\n\n    const activeFilters = this.filters.getActiveFilters();\n    if (activeFilters.length > 0) {\n      state.filters = [];\n      for (const filter of activeFilters) {\n        if (filter.state) {\n          state.filters.push(filter.state);\n        } else {\n          state.filters.push(filter);\n        }\n      }\n    }\n    return state;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\n\n@Directive({\n  selector: 'clr-dg-cell',\n  standalone: false,\n})\nexport class DatagridCellRenderer implements OnDestroy {\n  private stateSubscription: Subscription;\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    organizer: DatagridRenderOrganizer\n  ) {\n    this.subscriptions.push(\n      organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    if (this.stateSubscription) {\n      this.stateSubscription.unsubscribe();\n    }\n  }\n\n  resetState(state: ColumnState) {\n    this.setWidth(state);\n    this.setHidden(state);\n  }\n\n  setWidth(state: ColumnState) {\n    if (state.strictWidth) {\n      this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n    } else {\n      this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n    }\n    this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n  }\n\n  setHidden(state: ColumnState) {\n    if (state.hidden) {\n      this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n    } else {\n      this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n    }\n  }\n\n  private clearWidth() {\n    this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n    this.renderer.setStyle(this.el.nativeElement, 'width', null);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  AfterContentInit,\n  afterNextRender,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  OnDestroy,\n  QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DatagridCellRenderer } from './cell-renderer';\nimport { DatagridRowDetailRenderer } from './row-detail-renderer';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n  selector: 'clr-dg-row',\n  standalone: false,\n})\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n  @ContentChildren(DatagridCellRenderer) cells: QueryList<DatagridCellRenderer>;\n  expandableRows: DatagridRowDetailRenderer[] = [];\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    private columnsService: ColumnsService,\n    private el: ElementRef<HTMLElement>\n  ) {\n    afterNextRender(() => this.addDetachedRowsColumnStateChangesListener());\n  }\n\n  ngAfterContentInit() {\n    this.setCellsState(); // case #3 and #4\n    this.subscriptions.push(\n      this.cells.changes.subscribe(() => {\n        this.setCellsState(); // case #2\n        // Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,\n        // this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer\n        // when this.headers.changes emits as well. So that means there will be n+1 column state providers\n        // when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called\n        // right after again when this.headers.changes emits. By then, there will be the same number of column state\n        // providers as column headers.\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  setCellsState() {\n    // This method runs in four cases:\n    // 1. When the initial rows appear on the first page.\n    //    In this case, the method will be called in DatagridMainRenderer.\n    // 2. When columns (corresponding header/cells) get added and deleted.\n    //    In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).\n    // 3. When rows load asynchronously.\n    //    In this case, the method will be called in this class.\n    // 4. When rows load after switching pages.\n    //    In this case, the method will be called in this class (Basically, same as the case 3).\n    if (this.cells.length === this.columnsService.columns.length) {\n      this.cells.forEach((cell, index) => {\n        if (this.columnsService.columns[index]) {\n          cell.resetState(this.columnsService.columns[index].value);\n        }\n      });\n    }\n  }\n\n  private addDetachedRowsColumnStateChangesListener() {\n    this.subscriptions.push(\n      // Active rows are already handled by DatagridMainRenderer.columnStateChanged via @ContentChildren.\n      // Rows sitting in CDK virtual scroll's template cache for example are detached from the document\n      // (element.isConnected = false) and invisible to @ContentChildren, so they miss column state\n      // changes. This subscription self-updates the row only when it is detached state.\n      this.columnsService.columnsStateChange.subscribe(() => {\n        if (!this.el.nativeElement.isConnected) {\n          this.setCellsState();\n        }\n      })\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\nimport { WillyWonka } from '@clr/angular/utils';\n\n@Directive({\n  selector: 'clr-datagrid',\n  standalone: false,\n})\nexport class DatagridWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '@clr/angular/utils';\n\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\nimport { RowActionService } from '../providers/row-action-service';\n\n@Directive({\n  selector: 'clr-datagrid, clr-dg-row',\n  standalone: false,\n})\nexport class ActionableOompaLoompa extends OompaLoompa {\n  private rowActions: RowActionService;\n\n  constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: DatagridWillyWonka, rowActions: RowActionService) {\n    if (!willyWonka) {\n      throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n    }\n    super(cdr, willyWonka);\n    this.rowActions = rowActions;\n  }\n\n  get flavor() {\n    return this.rowActions.hasActionableRow;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\nimport { OompaLoompa } from '@clr/angular/utils';\n\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\nimport { ExpandableRowsCount } from '../providers/global-expandable-rows';\n\n@Directive({\n  selector: 'clr-datagrid, clr-dg-row',\n  standalone: false,\n})\nexport class ExpandableOompaLoompa extends OompaLoompa {\n  private expandableCount: ExpandableRowsCount;\n\n  constructor(\n    cdr: ChangeDetectorRef,\n    @Optional() willyWonka: DatagridWillyWonka,\n    expandableCount: ExpandableRowsCount\n  ) {\n    if (!willyWonka) {\n      throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n    }\n    super(cdr, willyWonka);\n    this.expandableCount = expandableCount;\n  }\n\n  get flavor() {\n    return this.expandableCount.hasExpandableRow;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DoCheck,\n  DOCUMENT,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  NgZone,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n  ViewContainerRef,\n} from '@angular/core';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { combineLatest, fromEvent, merge, of, Subscription } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType, selectionTypeAttribute } from './enums/selection-type';\nimport { ClrDatagridStateInterface } from './interfaces/state.interface';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { FiltersProvider } from './providers/filters';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { ClrDatagridItemsIdentityFunction, Items } from './providers/items';\nimport { Page } from './providers/page';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { Sort } from './providers/sort';\nimport { StateDebouncer } from './providers/state-debouncer.provider';\nimport { StateProvider } from './providers/state.provider';\nimport { TableSizeService } from './providers/table-size.service';\nimport { DatagridRenderOrganizer } from './render/render-organizer';\nimport { CellCoordinates, KeyNavigationGridController } from './utils/key-navigation-grid.controller';\n\n@Component({\n  selector: 'clr-datagrid',\n  templateUrl: './datagrid.html',\n  providers: [\n    Selection,\n    Sort,\n    FiltersProvider,\n    Page,\n    Items,\n    DatagridRenderOrganizer,\n    RowActionService,\n    ExpandableRowsCount,\n    StateDebouncer,\n    DetailService,\n    StateProvider,\n    TableSizeService,\n    ColumnsService,\n    DisplayModeService,\n    KeyNavigationGridController,\n  ],\n  host: {\n    '[class.datagrid-host]': 'true',\n    '[class.datagrid-detail-open]': 'detailService.isOpen',\n    '[class.datagrid-virtual-scroll]': '!!virtualScroll',\n  },\n  standalone: false,\n})\nexport class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy, DoCheck {\n  @Input('clrLoadingMoreItems') loadingMoreItems: boolean;\n\n  @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n  @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n  @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n\n  // Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)\n  @Input() clrDgDisablePageFocus = false;\n\n  @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<T[]>(false);\n\n  /**\n   * Output emitted whenever the data needs to be refreshed, based on user action or external ones\n   */\n  @Output('clrDgRefresh') refresh = new EventEmitter<ClrDatagridStateInterface<T>>(false);\n\n  /**\n   * The application can provide custom select all logic.\n   */\n  @Input('clrDgCustomSelectAllEnabled') customSelectAllEnabled = false;\n  @Output('clrDgCustomSelectAll') customSelectAll = new EventEmitter<boolean>();\n\n  /**\n   * Expose virtual scroll directive for applications to access its public methods\n   */\n  @ContentChildren(forwardRef(() => ClrDatagridVirtualScrollDirective)) _virtualScroll: QueryList<\n    ClrDatagridVirtualScrollDirective<any>\n  >;\n  /**\n   * We grab the smart iterator from projected content\n   */\n  @ContentChild(ClrDatagridItems) iterator: ClrDatagridItems<T>;\n\n  /**\n   * Custom placeholder detection\n   */\n  @ContentChild(ClrDatagridPlaceholder) placeholder: ClrDatagridPlaceholder<T>;\n\n  /**\n   * Hideable Column data source / detection.\n   */\n  @ContentChildren(ClrDatagridColumn) columns: QueryList<ClrDatagridColumn<T>>;\n\n  /**\n   * When the datagrid is user-managed without the smart iterator, we get the items displayed\n   * by querying the projected content. This is needed to keep track of the models currently\n   * displayed, typically for selection.\n   */\n  @ContentChildren(ClrDatagridRow, { emitDistinctChangesOnly: false }) rows: QueryList<ClrDatagridRow<T>>;\n\n  @ViewChild('datagrid', { read: ElementRef }) datagrid: ElementRef<HTMLElement>;\n  @ViewChild('datagridTable', { read: ElementRef }) datagridTable: ElementRef<HTMLElement>;\n  @ViewChild('datagridHeader', { read: ElementRef }) datagridHeader: ElementRef<HTMLElement>;\n  @ViewChild('contentWrapper', { read: ElementRef, static: true }) contentWrapper: ElementRef<HTMLElement>;\n  @ViewChild('rowsWrapper', { read: ElementRef, static: true }) rowsWrapper: ElementRef<HTMLElement>;\n  @ViewChild('scrollableColumns', { read: ViewContainerRef }) scrollableColumns: ViewContainerRef;\n  @ViewChild('projectedDisplayColumns', { read: ViewContainerRef }) _projectedDisplayColumns: ViewContainerRef;\n  @ViewChild('projectedCalculationColumns', { read: ViewContainerRef }) _projectedCalculationColumns: ViewContainerRef;\n  @ViewChild('displayedRows', { read: ViewContainerRef }) _displayedRows: ViewContainerRef;\n  @ViewChild('calculationRows', { read: ViewContainerRef }) _calculationRows: ViewContainerRef;\n  @ViewChild('fixedColumnTemplate') _fixedColumnTemplate: TemplateRef<any>;\n  @ViewChildren('stickyHeader', { emitDistinctChangesOnly: true }) stickyHeaders: QueryList<ElementRef>;\n\n  selectAllId: string;\n  activeCellCoords: CellCoordinates;\n\n  /* reference to the enum so that template can access */\n  SELECTION_TYPE = SelectionType;\n\n  @ViewChild('selectAllCheckbox') private selectAllCheckbox: ElementRef<HTMLInputElement>;\n\n  /**\n   * Subscriptions to all the services and queries changes\n   */\n  private _subscriptions: Subscription[] = [];\n  private _virtualScrollSubscriptions: Subscription[] = [];\n\n  private cachedRowsHeight = 0;\n  private cachedContentHeight = 0;\n  private resizeObserver: ResizeObserver = new ResizeObserver(entries => {\n    requestAnimationFrame(() => {\n      this.handleResizeChanges(entries);\n    });\n  });\n\n  constructor(\n    private organizer: DatagridRenderOrganizer,\n    public items: Items<T>,\n    public expandableRows: ExpandableRowsCount,\n    public selection: Selection<T>,\n    public rowActionService: RowActionService,\n    private stateProvider: StateProvider<T>,\n    private displayMode: DisplayModeService,\n    private renderer: Renderer2,\n    public detailService: DetailService,\n    @Inject(DOCUMENT) private document: any,\n    public el: ElementRef<HTMLElement>,\n    private page: Page,\n    public commonStrings: ClrCommonStringsService,\n    public keyNavigation: KeyNavigationGridController,\n    private zone: NgZone\n  ) {\n    const datagridId = uniqueIdFactory();\n\n    this.selectAllId = 'clr-dg-select-all-' + datagridId;\n    detailService.id = datagridId;\n  }\n\n  /**\n   * Freezes the datagrid while data is loading\n   */\n  @Input('clrDgLoading')\n  get loading(): boolean {\n    return this.items.loading;\n  }\n  set loading(value: boolean) {\n    this.items.loading = value;\n  }\n\n  /**\n   * Selection type\n   * - `None`: No rows are selectable.\n   * - `Single`: Only one row can be selected at a time.\n   * - `Multi`: Multiple rows can be selected.\n   *\n   * Defaults to `None`.\n   */\n  @Input({ alias: 'clrDgSelectionType', transform: selectionTypeAttribute })\n  get selectionType(): SelectionType {\n    return this.selection.selectionType;\n  }\n  set selectionType(value: SelectionType) {\n    this.selection.selectionType = value;\n  }\n\n  /**\n   * Array of all selected items\n   */\n  @Input('clrDgSelected')\n  set selected(value: T[]) {\n    value = value || [];\n\n    if (value === this.selection.current) {\n      return;\n    }\n\n    this.selection.updateCurrent(value, false);\n  }\n\n  @Input()\n  set clrDgPreserveSelection(state: boolean) {\n    this.selection.preserveSelection = state;\n  }\n\n  /**\n   * @deprecated since 2.0, remove in 3.0\n   *\n   * Selection/Deselection on row click mode\n   */\n  @Input('clrDgRowSelection')\n  set rowSelectionMode(value: boolean) {\n    this.selection.rowSelectionMode = value;\n  }\n\n  @Input('clrDgItemsIdentityFn')\n  set identityFn(value: ClrDatagridItemsIdentityFunction<T>) {\n    this.items.identifyBy = value;\n  }\n\n  /**\n   * Indicates if all currently displayed items are selected\n   */\n  get allSelected() {\n    return this.selection.isAllSelected();\n  }\n  set allSelected(value: boolean) {\n    if (this.customSelectAllEnabled) {\n      this.customSelectAll.emit(value);\n    } else {\n      /**\n       * This is a setter but we ignore the value.\n       * It's strange, but it lets us have an indeterminate state where only\n       * some of the items are selected.\n       */\n      this.selection.toggleAll();\n    }\n  }\n\n  get virtualScroll(): ClrDatagridVirtualScrollDirective<any> {\n    return this._virtualScroll?.get(0);\n  }\n\n  ngAfterContentInit() {\n    if (!this.items.smart) {\n      this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n    }\n\n    const rowItemsChanges = this.rows.changes.pipe(\n      switchMap((rows: ClrDatagridRow<T>[]) =>\n        merge(\n          // immediate update\n          of(rows.map(row => row.item)),\n          // subsequent updates once per tick\n          combineLatest(rows.map(row => row.itemChanges)).pipe(debounceTime(0))\n        )\n      )\n    );\n\n    this._subscriptions.push(\n      rowItemsChanges.subscribe(all => {\n        if (!this.items.smart) {\n          this.items.all = all;\n        }\n      }),\n      this._virtualScroll.changes.subscribe(() => {\n        this.toggleVirtualScrollSubscriptions();\n      }),\n      this.rows.changes.subscribe(() => {\n        // Remove any projected rows from the displayedRows container\n        // Necessary with Ivy off. See https://github.com/vmware/clarity/issues/4692\n        for (let i = this._displayedRows.length - 1; i >= 0; i--) {\n          if (this._displayedRows.get(i).destroyed) {\n            this._displayedRows.remove(i);\n          }\n        }\n        this.rows.forEach(row => {\n          this._displayedRows.insert(row._view);\n        });\n        this.updateDetailState();\n\n        // retain active cell when navigating with Up/Down Arrows, PageUp and PageDown buttons in virtual scroller\n        if (this.virtualScroll && this.activeCellCoords) {\n          this.zone.runOutsideAngular(() => {\n            const row = Array.from(this.rows).find(row => {\n              return row.el.nativeElement.children[0].ariaRowIndex === this.activeCellCoords.ariaRowIndex;\n            });\n\n            if (!row) {\n              return;\n            }\n\n            const activeCell = row.el.nativeElement.querySelectorAll(this.keyNavigation.config.keyGridCells)[\n              this.activeCellCoords.x\n            ] as HTMLElement;\n\n            this.keyNavigation.setActiveCell(activeCell);\n            this.keyNavigation.focusElement(activeCell, { preventScroll: true });\n          });\n        }\n      })\n    );\n  }\n\n  /**\n   * Our setup happens in the view of some of our components, so we wait for it to be done before starting\n   */\n  ngAfterViewInit() {\n    this.keyNavigation.initializeKeyGrid(this.el.nativeElement);\n\n    this.updateDetailState();\n\n    // Emit the state only if it is not an empty object.\n    // Default state of `ClrDatagridStateInterface` is an empty object.\n    // The refresh emit is needed in Server-driven datagrid when pagination is set, but the data is still not requested.\n    // The refresh emit should trigger the data request based on the state provided.\n    // Alternately because pagination might not be set on initialization emit an empty state will trigger a refresh.\n    if (Object.keys(this.stateProvider.state).length > 0) {\n      this.refresh.emit(this.stateProvider.state);\n    }\n\n    this._subscriptions.push(\n      this.stickyHeaders.changes.subscribe(() => this.resize()),\n      this.stateProvider.change.subscribe(state => this.refresh.emit(state)),\n      this.selection.change.subscribe(selection => {\n        if (this.selection.selectable) {\n          this.selectedChanged.emit(selection);\n        }\n      }),\n      // Reinitialize arrow key navigation on page changes\n      this.page.change.subscribe(() => {\n        this.keyNavigation.resetKeyGrid();\n        if (!this.clrDgDisablePageFocus) {\n          this.datagridTable.nativeElement.focus();\n        }\n      }),\n      // A subscription that listens for displayMode changes on the datagrid\n      this.displayMode.view.subscribe(viewChange => {\n        // Remove any projected columns from the projectedDisplayColumns container\n        for (let i = this._projectedDisplayColumns.length; i > 0; i--) {\n          this._projectedDisplayColumns.detach();\n        }\n        // Remove any projected columns from the projectedCalculationColumns container\n        for (let i = this._projectedCalculationColumns.length; i > 0; i--) {\n          this._projectedCalculationColumns.detach();\n        }\n        // Remove any projected rows from the calculationRows container\n        for (let i = this._calculationRows.length; i > 0; i--) {\n          this._calculationRows.detach();\n        }\n        // Remove any projected rows from the displayedRows container\n        for (let i = this._displayedRows.length; i > 0; i--) {\n          this._displayedRows.detach();\n        }\n        if (viewChange === DatagridDisplayMode.DISPLAY) {\n          // Set state, style for the datagrid to DISPLAY and insert row & columns into containers\n          this.renderer.removeClass(this.el.nativeElement, 'datagrid-calculate-mode');\n          this.columns.forEach(column => {\n            this._projectedDisplayColumns.insert(column._view);\n          });\n          this.rows.forEach(row => {\n            this._displayedRows.insert(row._view);\n          });\n        } else {\n          // Set state, style for the datagrid to CALCULATE and insert row & columns into containers\n          this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');\n          // Inserts a fixed column if any of these conditions are true.\n          const fixedColumnConditions = [\n            this.rowActionService.hasActionableRow,\n            this.selection.selectionType !== this.SELECTION_TYPE.None,\n            this.expandableRows.hasExpandableRow || this.detailService.enabled,\n          ];\n          fixedColumnConditions\n            .filter(Boolean)\n            .forEach(() =>\n              this._projectedCalculationColumns.insert(this._fixedColumnTemplate.createEmbeddedView(null))\n            );\n          this.columns.forEach(column => {\n            this._projectedCalculationColumns.insert(column._view);\n          });\n          this.rows.forEach(row => {\n            this._calculationRows.insert(row._view);\n          });\n        }\n      })\n    );\n\n    if (this.virtualScroll) {\n      this.toggleVirtualScrollSubscriptions();\n    }\n\n    // We need to preserve shift state, so it can be used on selection change, regardless of the input event\n    // that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.\n    this.zone.runOutsideAngular(() => {\n      this._subscriptions.push(\n        fromEvent(this.document.body, 'keydown').subscribe((event: KeyboardEvent) => {\n          if (event.key === 'Shift') {\n            this.selection.shiftPressed = true;\n          }\n        }),\n        fromEvent(this.document.body, 'keyup').subscribe((event: KeyboardEvent) => {\n          if (event.key === 'Shift') {\n            this.selection.shiftPressed = false;\n          }\n        })\n      );\n    });\n  }\n\n  ngDoCheck() {\n    // we track for changes on selection.current because it can happen with pushing items\n    // instead of overriding the variable\n    this.selection.checkForChanges();\n  }\n\n  ngOnDestroy() {\n    this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n    this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n    this.resizeObserver.disconnect();\n  }\n\n  toggleAllSelected($event: any) {\n    $event.preventDefault();\n    this.selectAllCheckbox?.nativeElement.click();\n  }\n\n  resize(): void {\n    this.organizer.resize();\n  }\n\n  /**\n   * Checks the state of detail panel and if it's opened then\n   * find the matching row and trigger the detail panel\n   */\n  updateDetailState() {\n    // Try to update only when there is something cached and its open.\n    if (this.detailService.state && this.detailService.isOpen) {\n      const row = this.rows.find(\n        row => this.items.identifyBy(row.item) === this.items.identifyBy(this.detailService.state)\n      );\n\n      /**\n       * Reopen updated row or close it\n       */\n      if (row) {\n        this.detailService.open(row.item, row.detailButton.nativeElement);\n        // always keep open when virtual scroll is available otherwise close it\n      } else if (!this.virtualScroll) {\n        // Using setTimeout to make sure the inner cycles in rows are done\n        setTimeout(() => {\n          this.detailService.close();\n        });\n      }\n    }\n  }\n\n  /**\n   * Public method to re-trigger the computation of displayed items manually\n   */\n  dataChanged() {\n    this.items.refresh();\n  }\n\n  private toggleVirtualScrollSubscriptions() {\n    const hasVirtualScroll = !!this.virtualScroll;\n\n    // the virtual scroll will handle the scrolling\n    this.keyNavigation.preventScrollOnFocus = hasVirtualScroll;\n\n    if (hasVirtualScroll && this._virtualScrollSubscriptions.length === 0) {\n      // TODO: use `resizeObserver` for all datagrid variants\n      this.resizeObserver.observe(this.contentWrapper.nativeElement);\n      this.resizeObserver.observe(this.rowsWrapper.nativeElement);\n\n      this._virtualScrollSubscriptions.push(\n        fromEvent(this.contentWrapper.nativeElement, 'scroll').subscribe(() => {\n          if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n            this.datagridHeader.nativeElement.scrollLeft = this.contentWrapper.nativeElement.scrollLeft;\n          }\n        }),\n        fromEvent(this.datagridHeader.nativeElement, 'scroll').subscribe(() => {\n          if (this.datagridHeader.nativeElement.scrollLeft !== this.contentWrapper.nativeElement.scrollLeft) {\n            this.contentWrapper.nativeElement.scrollLeft = this.datagridHeader.nativeElement.scrollLeft;\n          }\n        }),\n        this.keyNavigation.nextCellCoordsEmitter.subscribe(cellCoords => {\n          if (!cellCoords?.ariaRowIndex) {\n            this.activeCellCoords = null;\n            return;\n          }\n\n          if (cellCoords.ariaRowIndex === this.activeCellCoords?.ariaRowIndex) {\n            this.activeCellCoords = cellCoords;\n            return;\n          }\n\n          this.activeCellCoords = cellCoords;\n\n          // aria-rowindex is always + 1. Check virtual scroller updateAriaRowIndexes method.\n          const rowIndex = Number(cellCoords.ariaRowIndex) - 1;\n\n          this.virtualScroll.scrollToIndex(rowIndex);\n        })\n      );\n    } else if (!hasVirtualScroll) {\n      this.resizeObserver.disconnect();\n      this._virtualScrollSubscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n      this._virtualScrollSubscriptions = [];\n    }\n  }\n\n  private handleResizeChanges(entries: ResizeObserverEntry[]) {\n    const rowsWrapper = this.rowsWrapper.nativeElement;\n\n    for (const entry of entries) {\n      if (entry.target === this.contentWrapper.nativeElement) {\n        this.cachedContentHeight = entry.contentRect.height;\n      }\n      if (entry.target === rowsWrapper) {\n        this.cachedRowsHeight = entry.contentRect.height;\n      }\n    }\n\n    const scrollClass = 'datagrid-scrollbar-visible';\n\n    if (this.cachedRowsHeight > this.cachedContentHeight) {\n      this.renderer.addClass(rowsWrapper, scrollClass);\n    } else {\n      this.renderer.removeClass(rowsWrapper, scrollClass);\n    }\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n  <div class=\"datagrid-inner-wrapper\">\n    <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n      <div class=\"datagrid-table-wrapper\">\n        <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n          <div role=\"rowgroup\" class=\"datagrid-header\" #datagridHeader>\n            <div role=\"row\" class=\"datagrid-row\">\n              <div class=\"datagrid-row-master datagrid-row-flex\">\n                <div class=\"datagrid-row-sticky\">\n                  <!--header for datagrid where you can select multiple rows -->\n                  @if (selection.selectionType === SELECTION_TYPE.Multi) {\n                  <div\n                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n                    (keydown.space)=\"toggleAllSelected($event)\"\n                  >\n                    @if (!virtualScroll || customSelectAllEnabled) {\n                    <div class=\"clr-checkbox-wrapper\">\n                      <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n                          which is not able to transfer focus directly on the input when focused with the tab key -->\n                      <input\n                        #selectAllCheckbox\n                        type=\"checkbox\"\n                        [id]=\"selectAllId\"\n                        [(ngModel)]=\"allSelected\"\n                        [attr.aria-label]=\"commonStrings.keys.selectAll\"\n                        tabindex=\"-1\"\n                      />\n                      <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n                      <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n                        <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n                      </label>\n                    </div>\n                    }\n                    <div class=\"datagrid-column-separator\"></div>\n                  </div>\n                  }\n                  <!-- header for datagrid where you can select one row only -->\n                  @if (selection.selectionType === SELECTION_TYPE.Single) {\n                  <div #stickyHeader role=\"columnheader\" class=\"datagrid-column datagrid-select datagrid-fixed-column\">\n                    <div class=\"clr-sr-only\">{{clrDgSingleSelectionAriaLabel}}</div>\n                    <div class=\"datagrid-column-separator\"></div>\n                  </div>\n                  }\n                  <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n                  @if (rowActionService.hasActionableRow) {\n                  <div\n                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n                  >\n                    <div class=\"clr-sr-only\">{{clrDgSingleActionableAriaLabel}}</div>\n                    <div class=\"datagrid-column-separator\"></div>\n                  </div>\n                  }\n                  <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n                  @if (expandableRows.hasExpandableRow || detailService.enabled) {\n                  <div\n                    #stickyHeader\n                    role=\"columnheader\"\n                    class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n                  >\n                    <div class=\"clr-sr-only\">{{clrDetailExpandableAriaLabel}}</div>\n                    <div class=\"datagrid-column-separator\"></div>\n                  </div>\n                  }\n                </div>\n                <div class=\"datagrid-row-scrollable\">\n                  <ng-container #projectedDisplayColumns></ng-container>\n                </div>\n                @if (virtualScroll) {\n                <div class=\"datagrid-row-sticky datagrid-row-sticky-scroll\">\n                  <div class=\"datagrid-column\"></div>\n                </div>\n                }\n              </div>\n            </div>\n          </div>\n\n          <div class=\"datagrid-content\" [class.datagrid-content-virtual]=\"virtualScroll\" #contentWrapper>\n            @if (virtualScroll) {\n            <div class=\"datagrid-content-virtual-spacer\" [style.height]=\"virtualScroll?.totalContentHeight\"></div>\n            }\n            <div role=\"presentation\" #rowsWrapper class=\"datagrid-rows\">\n              @if (loadingMoreItems) {\n              <clr-dg-row class=\"datagrid-row-loading\">\n                <clr-dg-cell>\n                  <clr-spinner clrMedium></clr-spinner>\n                  <span>{{ commonStrings.keys.loading }}</span>\n                </clr-dg-cell>\n              </clr-dg-row>\n              }\n\n              <ng-container #displayedRows></ng-container>\n\n              @if (loadingMoreItems) {\n              <clr-dg-row class=\"datagrid-row-loading\">\n                <clr-dg-cell>\n                  <clr-spinner clrMedium></clr-spinner>\n                  <span>{{ commonStrings.keys.loading }}</span>\n                </clr-dg-cell>\n              </clr-dg-row>\n              }\n\n              <!-- Custom placeholder overrides the default empty one -->\n              <ng-content select=\"clr-dg-placeholder\"></ng-content>\n              @if (!placeholder) {\n              <clr-dg-placeholder></clr-dg-placeholder>\n              }\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n    <ng-content select=\"clr-dg-footer\"></ng-content>\n    @if (loading) {\n    <div class=\"datagrid-spinner\">\n      <clr-spinner clrMedium>Loading</clr-spinner>\n    </div>\n    }\n  </div>\n  <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n  <div class=\"datagrid-calculation-header\">\n    <ng-container #projectedCalculationColumns></ng-container>\n  </div>\n  <ng-container #calculationRows></ng-container>\n</div>\n\n<ng-template #fixedColumnTemplate>\n  <div class=\"datagrid-column datagrid-fixed-column\"></div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'clr-dg-action-bar',\n  template: `<ng-content></ng-content>`,\n  host: { '[class.datagrid-action-bar]': 'true' },\n  standalone: false,\n})\nexport class ClrDatagridActionBar {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, EventEmitter, Inject, Input, OnDestroy, Output, PLATFORM_ID, ViewChild } from '@angular/core';\nimport {\n  ClrPopoverHostDirective,\n  ClrPopoverPosition,\n  ClrPopoverService,\n  ClrPopoverType,\n  mapPopoverKeyToPosition,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, ClrKeyFocus, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { RowActionService } from './providers/row-action-service';\n\nlet clrDgActionId = 0;\n\n@Component({\n  selector: 'clr-dg-action-overflow',\n  hostDirectives: [ClrPopoverHostDirective],\n  template: `\n    <button\n      tabindex=\"-1\"\n      class=\"datagrid-action-toggle\"\n      type=\"button\"\n      role=\"button\"\n      aria-haspopup=\"true\"\n      #anchor\n      [attr.aria-controls]=\"popoverId\"\n      [attr.aria-expanded]=\"open\"\n      [attr.aria-label]=\"buttonLabel || commonStrings.keys.rowActions\"\n      clrPopoverOrigin\n      clrPopoverOpenCloseButton\n    >\n      <cds-icon shape=\"ellipsis-vertical\" [attr.title]=\"buttonLabel || commonStrings.keys.rowActions\"></cds-icon>\n    </button>\n\n    <div\n      class=\"datagrid-action-overflow\"\n      [id]=\"popoverId\"\n      [attr.aria-hidden]=\"!open\"\n      [attr.id]=\"popoverId\"\n      clrKeyFocus\n      cdkTrapFocus\n      (click)=\"closeOverflowContent($event)\"\n      *clrPopoverContent=\"\n        open;\n        at: smartPosition;\n        availablePositions: positions;\n        outsideClickToClose: true;\n        scrollToClose: true\n      \"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  standalone: false,\n})\nexport class ClrDatagridActionOverflow implements OnDestroy {\n  @Input('clrDgActionOverflowButtonLabel') buttonLabel: string;\n\n  @Output('clrDgActionOverflowOpenChange') openChange = new EventEmitter<boolean>(false);\n\n  popoverId = uniqueIdFactory();\n\n  smartPosition = ClrPopoverPosition.RIGHT_MIDDLE;\n  protected positions = [\n    mapPopoverKeyToPosition(ClrPopoverPosition.RIGHT_BOTTOM, ClrPopoverType.DROPDOWN),\n    mapPopoverKeyToPosition(ClrPopoverPosition.RIGHT_TOP, ClrPopoverType.DROPDOWN),\n  ];\n\n  @ViewChild(ClrKeyFocus) private readonly keyFocus: ClrKeyFocus;\n\n  private _open = false;\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    private rowActionService: RowActionService,\n    public commonStrings: ClrCommonStringsService,\n    @Inject(PLATFORM_ID) private platformId: any,\n    private popoverService: ClrPopoverService\n  ) {\n    rowActionService.register();\n    this.subscriptions.push(\n      popoverService.openChange.subscribe(openState => {\n        this.open = openState;\n      }),\n      popoverService.popoverVisible.subscribe(visible => {\n        if (visible) {\n          this.initializeFocus();\n        }\n      })\n    );\n    this.popoverId = 'clr-action-menu' + clrDgActionId++;\n  }\n\n  @Input('clrDgActionOverflowOpen')\n  get open() {\n    return this._open;\n  }\n  set open(open: boolean) {\n    const openState = !!open;\n    if (!!openState !== this.open) {\n      // prevents chocolate mess\n      this.popoverService.open = openState;\n      this.openChange.emit(openState);\n      this._open = openState;\n    }\n  }\n\n  ngOnDestroy() {\n    this.rowActionService.unregister();\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  closeOverflowContent(event: Event): void {\n    this.popoverService.toggleWithEvent(event);\n  }\n\n  private initializeFocus(): void {\n    if (isPlatformBrowser(this.platformId)) {\n      const buttons = Array.from(document.querySelectorAll<HTMLButtonElement>('button.action-item'));\n\n      if (buttons.length) {\n        this.keyFocus.current = 0;\n        this.keyFocus.focusableItems = buttons;\n\n        this.keyFocus.focusCurrent();\n      }\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This file prevents an import cycle.\n */\n\nimport { TrackByFunction } from '@angular/core';\n\nimport { ColumnState } from './interfaces/column-state.interface';\n\nexport const columnToggleTrackByFn: TrackByFunction<ColumnState> = index => index;\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n  selector: 'clr-dg-column-toggle-button',\n  template: `\n    <button\n      class=\"btn btn-sm btn-link switch-button\"\n      (click)=\"selectAll()\"\n      [disabled]=\"allHideablesVisible\"\n      type=\"button\"\n    >\n      {{ commonStrings.keys.selectAll }}\n    </button>\n  `,\n  standalone: false,\n})\nexport class ClrDatagridColumnToggleButton {\n  private allSelected: Subject<boolean> = new EventEmitter();\n\n  constructor(\n    public commonStrings: ClrCommonStringsService,\n    private columnsService: ColumnsService\n  ) {}\n\n  @Output('clrAllSelected')\n  get clrAllSelected(): Observable<boolean> {\n    return this.allSelected.asObservable();\n  }\n\n  get allHideablesVisible() {\n    return this.hideableColumns().filter(column => column.value.hidden).length === 0;\n  }\n\n  selectAll() {\n    this.hideableColumns().forEach(hideableColumn =>\n      this.columnsService.emitStateChange(hideableColumn, {\n        hidden: false,\n        changes: [DatagridColumnChanges.HIDDEN],\n      })\n    );\n    this.allSelected.next(true);\n  }\n\n  private hideableColumns(): BehaviorSubject<ColumnState>[] {\n    return this.columnsService.columns.filter(column => column.value.hideable);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport {\n  ClrPopoverHostDirective,\n  ClrPopoverPosition,\n  ClrPopoverService,\n  ClrPopoverType,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n  selector: 'clr-dg-column-toggle',\n  template: `\n    <button\n      role=\"button\"\n      type=\"button\"\n      class=\"btn btn-sm column-toggle-action\"\n      clrPopoverOrigin\n      clrPopoverOpenCloseButton\n      [attr.aria-controls]=\"popoverId\"\n      [attr.aria-expanded]=\"openState\"\n      [attr.aria-haspopup]=\"'menu'\"\n    >\n      {{ commonStrings.keys.pickColumns }}\n    </button>\n    <div\n      class=\"column-switch\"\n      role=\"dialog\"\n      [attr.aria-label]=\"commonStrings.keys.showColumnsMenuDescription\"\n      [id]=\"popoverId\"\n      cdkTrapFocus\n      cdkTrapFocusAutoCapture\n      *clrPopoverContent=\"\n        openState;\n        at: popoverPosition;\n        type: popoverType;\n        outsideClickToClose: true;\n        scrollToClose: true\n      \"\n    >\n      <div class=\"switch-header\">\n        <div class=\"clr-sr-only\" tabindex=\"-1\" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>\n        <h2>{{ commonStrings.keys.showColumns }}</h2>\n        <button\n          class=\"btn btn-sm btn-link-neutral toggle-switch-close-button\"\n          clrPopoverCloseButton\n          type=\"button\"\n          [attr.aria-label]=\"commonStrings.keys.close\"\n        >\n          <cds-icon shape=\"window-close\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n          <span class=\"clr-sr-only\">{{ commonStrings.keys.close }}</span>\n        </button>\n      </div>\n      <ul class=\"switch-content list-unstyled\">\n        @for (columnState of hideableColumnStates; track trackByFn($index, columnState)) {\n          <li>\n            <clr-checkbox-wrapper>\n              <input\n                clrCheckbox\n                type=\"checkbox\"\n                [disabled]=\"hasOnlyOneVisibleColumn && !columnState.hidden\"\n                [ngModel]=\"!columnState.hidden\"\n                (ngModelChange)=\"toggleColumnState(columnState, !$event)\"\n              />\n              <label>\n                <ng-template [ngTemplateOutlet]=\"columnState.titleTemplateRef\"></ng-template>\n              </label>\n            </clr-checkbox-wrapper>\n          </li>\n        }\n      </ul>\n      <div class=\"switch-footer\">\n        <clr-dg-column-toggle-button (clrAllSelected)=\"allColumnsSelected()\"></clr-dg-column-toggle-button>\n      </div>\n    </div>\n  `,\n  host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },\n  hostDirectives: [ClrPopoverHostDirective],\n  standalone: false,\n})\nexport class ClrDatagridColumnToggle implements OnDestroy {\n  popoverId = uniqueIdFactory();\n  openState = false;\n\n  // Smart Popover\n  popoverPosition = ClrPopoverPosition.TOP_LEFT;\n  popoverType = ClrPopoverType.DROPDOWN;\n\n  // Without tracking the checkboxes get rerendered on model update, which leads\n  // to loss of focus after checkbox toggle.\n  readonly trackByFn = columnToggleTrackByFn;\n\n  private _allColumnsVisible: boolean;\n  private subscription: Subscription;\n\n  @ViewChild('allSelected', { read: ElementRef }) private allSelectedElement: ElementRef<HTMLElement>;\n\n  constructor(\n    public commonStrings: ClrCommonStringsService,\n    private columnsService: ColumnsService,\n    popoverService: ClrPopoverService\n  ) {\n    this.subscription = popoverService.openChange.subscribe(change => (this.openState = change));\n  }\n\n  get allColumnsVisible(): boolean {\n    return this._allColumnsVisible;\n  }\n  set allColumnsVisible(value: boolean) {\n    this._allColumnsVisible = value;\n  }\n\n  get hideableColumnStates(): ColumnState[] {\n    const hideables = this.columnsService.columns.filter(column => column.value.hideable);\n    return hideables.map(column => column.value);\n  }\n\n  get hasOnlyOneVisibleColumn(): boolean {\n    const nbNonHideableColumns = this.columnsService.columns.length - this.hideableColumnStates.length;\n    // this should only return true when there is no non-hideable columns.\n    return (\n      nbNonHideableColumns === 0 && this.hideableColumnStates.filter(columnState => !columnState.hidden).length === 1\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n  toggleColumnState(columnState: ColumnState, event: boolean) {\n    const columnToToggle = this.columnsService.columns.filter(column => column.value === columnState)[0];\n    this.columnsService.emitStateChange(columnToToggle, {\n      hidden: event,\n      changes: [DatagridColumnChanges.HIDDEN],\n    });\n  }\n\n  toggleSwitchPanel() {\n    this.openState = !this.openState;\n  }\n\n  allColumnsSelected() {\n    this.allSelectedElement.nativeElement.focus();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n  selector: 'clr-dg-detail-header',\n  host: {\n    '[class.datagrid-detail-header]': 'true',\n  },\n  template: `\n    <div #title class=\"datagrid-detail-header-title\" tabindex=\"-1\" [id]=\"titleId\">\n      <ng-content></ng-content>\n    </div>\n    <div class=\"datagrid-detail-pane-close\">\n      <button\n        type=\"button\"\n        class=\"btn btn-icon btn-link\"\n        (click)=\"detailService.close()\"\n        [attr.aria-label]=\"commonStrings.keys.close\"\n      >\n        <cds-icon shape=\"times\"></cds-icon>\n      </button>\n    </div>\n  `,\n  standalone: false,\n})\nexport class ClrDatagridDetailHeader implements AfterViewInit {\n  @ViewChild('title') title: ElementRef<HTMLElement>;\n\n  constructor(\n    public detailService: DetailService,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  get titleId() {\n    return `${this.detailService.id}-title`;\n  }\n\n  ngAfterViewInit(): void {\n    this.title.nativeElement.focus();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, Input } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n  selector: 'clr-dg-detail',\n  host: {\n    '[class.datagrid-detail-pane]': 'true',\n  },\n  // We put the @if on the cdkTrapFocus so it doesn't always exist on the page\n  // have to test for presence of header for aria-describedby because it was causing unit tests to crash\n  template: `\n    @if (detailService.isOpen) {\n      <div\n        cdkTrapFocus\n        [cdkTrapFocusAutoCapture]=\"!header\"\n        class=\"datagrid-detail-pane-content\"\n        role=\"dialog\"\n        [id]=\"detailService.id\"\n        aria-modal=\"true\"\n        [attr.aria-labelledby]=\"labelledBy\"\n        [attr.aria-label]=\"label\"\n      >\n        <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneStart }}</div>\n        <ng-content></ng-content>\n        <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneEnd }}</div>\n      </div>\n    }\n  `,\n  standalone: false,\n})\nexport class ClrDatagridDetail {\n  @Input('clrDetailAriaLabelledBy') ariaLabelledBy: string;\n  @Input('clrDetailAriaLabel') ariaLabel: string;\n\n  @ContentChild(ClrDatagridDetailHeader) header: ClrDatagridDetailHeader;\n\n  constructor(\n    public detailService: DetailService,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  get labelledBy(): string {\n    if (this.ariaLabelledBy) {\n      return this.header ? `${this.header.titleId} ${this.ariaLabelledBy}` : this.ariaLabelledBy;\n    } else if (this.ariaLabel) {\n      // If aria-label is set by the end user, do not set aria-labelledby\n      return null;\n    } else {\n      return this.header?.titleId || '';\n    }\n  }\n\n  get label(): string {\n    if (!this.ariaLabelledBy) {\n      return this.ariaLabel || null;\n    } else {\n      return null;\n    }\n  }\n\n  close(): void {\n    this.detailService.close();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n  selector: 'clr-dg-detail-body',\n  template: `\n    <div class=\"clr-dg-detail-body-wrapper\">\n      <ng-content></ng-content>\n    </div>\n  `,\n  host: {\n    '[class.datagrid-detail-body]': 'true',\n  },\n  standalone: false,\n})\nexport class ClrDatagridDetailBody {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ColumnState } from '../interfaces/column-state.interface';\n\nexport const COLUMN_STATE = new InjectionToken<ColumnState>('COLUMN_STATE');\n\nexport function columnStateFactory() {\n  return new BehaviorSubject<ColumnState>({\n    changes: [],\n  });\n}\n\nexport const COLUMN_STATE_PROVIDER = {\n  provide: COLUMN_STATE,\n  useFactory: columnStateFactory,\n};\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  Directive,\n  EventEmitter,\n  Inject,\n  Input,\n  OnDestroy,\n  Optional,\n  Output,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { COLUMN_STATE } from './providers/column-state.provider';\nimport { ColumnsService } from './providers/columns.service';\n\n@Directive({\n  selector: '[clrDgHideableColumn]',\n  standalone: false,\n})\n\n/**\n *\n * @description\n * A structural directive meant to be used inside a clr-dg-column component.\n *\n * <clr-dg-column>\n *       <ng-container *clrDgHideableColumn=\"{ hidden: true }\">\n *           User ID\n *       </ng-container>\n *   </clr-dg-column>\n *\n * It sets up state and properties so that columns can be manges for hide/show by a service and an internal\n * datagrid toggle component.\n *\n */\nexport class ClrDatagridHideableColumn implements OnDestroy {\n  @Output('clrDgHiddenChange') hiddenChange = new EventEmitter<boolean>();\n\n  /**\n   *\n   * @description\n   * Used to initialize the column with either hidden or visible state.\n   *\n   */\n  private _hidden: boolean;\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    private titleTemplateRef: TemplateRef<any>,\n    viewContainerRef: ViewContainerRef,\n    private columnsService: ColumnsService,\n    @Optional()\n    @Inject(COLUMN_STATE)\n    private columnState: BehaviorSubject<ColumnState>\n  ) {\n    viewContainerRef.createEmbeddedView(titleTemplateRef);\n\n    if (!columnState) {\n      throw new Error('The *clrDgHideableColumn directive can only be used inside of a clr-dg-column component.');\n    }\n  }\n\n  /**\n   *\n   * @description\n   * Setter fn for the @Input with the same name as this structural directive.\n   * It allows the user to pre-configure the column's hide/show state. { hidden: true }\n   * It's more verbose but has more Clarity.\n   *\n   * @example\n   * *clrDgHideableColumn\n   * *clrDgHideableColumn={hidden: false}\n   * *clrDgHideableColumn={hidden: true}\n   *\n   */\n  @Input('clrDgHideableColumn')\n  set clrDgHideableColumn(value: { hidden: boolean } | string) {\n    if (typeof value === 'string') {\n      this.clrDgHidden = false;\n      return;\n    }\n    this.clrDgHidden = value && value.hidden ? value.hidden : false;\n  }\n\n  @Input('clrDgHidden')\n  set clrDgHidden(hidden: boolean) {\n    this._hidden = hidden ? hidden : false;\n    this.columnsService.emitStateChange(this.columnState, {\n      hidden: this._hidden,\n      changes: [DatagridColumnChanges.HIDDEN],\n    });\n  }\n\n  ngOnInit() {\n    this.columnsService.emitStateChange(this.columnState, {\n      hideable: true,\n      titleTemplateRef: this.titleTemplateRef,\n      hidden: this._hidden,\n      changes: [DatagridColumnChanges.HIDDEN],\n    });\n\n    this.subscriptions.push(\n      this.columnState.subscribe((state: ColumnState) => {\n        if (state.changes && state.changes.indexOf(DatagridColumnChanges.HIDDEN) > -1) {\n          this.hiddenChange.emit(state.hidden); // Can emit through @Output when desugared syntax is used\n        }\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  Directive,\n  EmbeddedViewRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DetailService } from './providers/detail.service';\n\n@Directive({\n  selector: '[clrIfDetail]',\n  standalone: false,\n})\nexport class ClrIfDetail implements OnInit, OnDestroy {\n  @Output('clrIfDetailChange') stateChange = new EventEmitter<any>(null);\n\n  private subscriptions: Subscription[] = [];\n  private skip = false; // This keeps us from resetting the input and calling the toggle twice\n  private embeddedViewRef: EmbeddedViewRef<any>;\n\n  constructor(\n    private templateRef: TemplateRef<any>,\n    private viewContainer: ViewContainerRef,\n    private detailService: DetailService\n  ) {\n    detailService.enabled = true;\n  }\n\n  @Input('clrIfDetail')\n  set state(model: any) {\n    if (!this.skip) {\n      this.detailService.toggle(model);\n    }\n    this.skip = false;\n  }\n\n  get viewContext() {\n    return { $implicit: this.detailService.state };\n  }\n\n  ngOnInit() {\n    this.subscriptions.push(\n      this.detailService.stateChange.subscribe(state => {\n        if (state === true) {\n          this.togglePanel(true);\n        } else {\n          this.togglePanel(false);\n        }\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  private togglePanel(showPanel: boolean) {\n    let stateChangeParams = null;\n\n    if (showPanel === true) {\n      if (!this.embeddedViewRef) {\n        // Create a context forward `Proxy` that will always bind to the user-specified context,\n        // without having to re-assign it whenever changes.\n        const viewContext = this._createContextForwardProxy();\n        this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef, viewContext);\n      }\n\n      this.skip = true;\n      stateChangeParams = this.detailService.state;\n    } else {\n      this.viewContainer.clear();\n      this.embeddedViewRef = null;\n    }\n\n    this.stateChange.emit(stateChangeParams);\n  }\n\n  /**\n   * For a given outlet instance, we create a proxy object that delegates\n   * to the user-specified context. This allows changing, or swapping out\n   * the context object completely without having to destroy/re-create the view.\n   */\n  private _createContextForwardProxy() {\n    return new Proxy(\n      {},\n      {\n        set: (_target, prop, newValue) => {\n          if (!this.viewContext) {\n            return false;\n          }\n          return Reflect.set(this.viewContext, prop, newValue);\n        },\n        get: (_target, prop, receiver) => {\n          if (!this.viewContext) {\n            return undefined;\n          }\n          return Reflect.get(this.viewContext, prop, receiver);\n        },\n      }\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { SelectionType } from './enums/selection-type';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\n\n/**\n * Generic bland container serving various purposes for Datagrid.\n * For instance, it can help span a text over multiple rows in detail view.\n */\n@Component({\n  selector: 'clr-dg-row-detail',\n  template: `\n    <div class=\"clr-sr-only\">\n      {{ beginningOfExpandableContentAriaText }}\n      {{ commonStrings.keys.datagridExpandableRowsHelperText }}\n    </div>\n    @if (this.cells?.length > 0) {\n      <ng-container [ngTemplateOutlet]=\"noCells\"></ng-container>\n    }\n    @if (this.cells?.length === 0) {\n      <clr-dg-cell class=\"datagrid-container\">\n        <ng-container [ngTemplateOutlet]=\"noCells\"></ng-container>\n      </clr-dg-cell>\n    }\n\n    <ng-template #noCells>\n      <ng-content></ng-content>\n    </ng-template>\n    <div class=\"clr-sr-only\">{{ endOfExpandableContentAriaText }}</div>\n  `,\n  host: {\n    '[class.datagrid-row-flex]': 'true',\n    '[class.datagrid-row-detail]': 'true',\n    '[attr.id]': 'expand.expandableId',\n    role: 'row',\n  },\n  standalone: false,\n})\nexport class ClrDatagridRowDetail implements AfterContentInit, OnDestroy {\n  @Input('clrRowDetailBeginningAriaText') _beginningOfExpandableContentAriaText: string;\n  @Input('clrRowDetailEndAriaText') _endOfExpandableContentAriaText: string;\n\n  replacedRow = false;\n\n  /* reference to the enum so that template can access it */\n  SELECTION_TYPE = SelectionType;\n\n  @ContentChildren(ClrDatagridCell) cells: QueryList<ClrDatagridCell>;\n\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    public selection: Selection,\n    public rowActionService: RowActionService,\n    public expand: DatagridIfExpandService,\n    public expandableRows: ExpandableRowsCount,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  @Input('clrDgReplace')\n  set replace(value: boolean) {\n    this.expand.setReplace(!!value);\n  }\n\n  get beginningOfExpandableContentAriaText() {\n    return (\n      this._beginningOfExpandableContentAriaText ||\n      `${this.commonStrings.keys.datagridExpandableBeginningOf} ${this.commonStrings.keys.datagridExpandableRowContent}`\n    );\n  }\n\n  get endOfExpandableContentAriaText() {\n    return (\n      this._endOfExpandableContentAriaText ||\n      `${this.commonStrings.keys.datagridExpandableEndOf} ${this.commonStrings.keys.datagridExpandableRowContent}`\n    );\n  }\n\n  ngAfterContentInit() {\n    this.subscriptions.push(\n      this.expand.replace.subscribe(replaceChange => {\n        this.replacedRow = replaceChange;\n      })\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { Selection } from './providers/selection';\n\n@Component({\n  selector: 'clr-dg-footer',\n  template: `\n    @if (selection.selectionType === SELECTION_TYPE.Multi && selection.current?.length > 0) {\n      <div class=\"clr-form-control-disabled\">\n        <clr-checkbox-wrapper class=\"datagrid-footer-select\">\n          <input clrCheckbox type=\"checkbox\" checked=\"checked\" disabled />\n          <label>{{ selection.current.length }}</label>\n          <span class=\"clr-sr-only\">{{ commonStrings.keys.selectedRows }}</span>\n        </clr-checkbox-wrapper>\n      </div>\n    }\n    @if (!detailService.isOpen) {\n      @if (hasHideableColumns) {\n        <clr-dg-column-toggle></clr-dg-column-toggle>\n      }\n      <div class=\"datagrid-footer-description\">\n        <ng-content></ng-content>\n      </div>\n    }\n    <ng-content select=\"clr-dg-pagination\"></ng-content>\n  `,\n  host: {\n    '[class.datagrid-footer]': 'true',\n  },\n  standalone: false,\n})\nexport class ClrDatagridFooter<T = any> {\n  /* reference to the enum so that template can access */\n  SELECTION_TYPE = SelectionType;\n\n  constructor(\n    public selection: Selection<T>,\n    public detailService: DetailService,\n    private columnsService: ColumnsService,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  get hasHideableColumns(): boolean {\n    return this.columnsService.hasHideableColumns;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, ViewChild } from '@angular/core';\nimport { ClrControlLabel } from '@clr/angular/forms/common';\nimport { uniqueIdFactory } from '@clr/angular/utils';\n\nimport { Page } from './providers/page';\n\n@Component({\n  selector: 'clr-dg-page-size',\n  template: `\n    <label [for]=\"pageSizeOptionsId\"><ng-content></ng-content></label>\n    <div class=\"clr-select-wrapper\">\n      <select [id]=\"pageSizeOptionsId\" [class.clr-page-size-select]=\"true\" [(ngModel)]=\"page.size\">\n        @for (option of pageSizeOptions; track option) {\n          <option [ngValue]=\"option\">{{ option }}</option>\n        }\n      </select>\n    </div>\n  `,\n  standalone: false,\n})\nexport class ClrDatagridPageSize {\n  @Input('clrPageSizeOptions') pageSizeOptions: number[];\n  @Input('clrPageSizeOptionsId') pageSizeOptionsId = uniqueIdFactory();\n\n  constructor(public page: Page) {}\n\n  @ViewChild(ClrControlLabel, { static: true })\n  set label(label: ClrControlLabel) {\n    if (label) {\n      label.disableGrid();\n    }\n  }\n\n  ngOnInit() {\n    if (!this.pageSizeOptions || this.pageSizeOptions.length === 0) {\n      this.pageSizeOptions = [this.page.size];\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { DetailService } from './providers/detail.service';\nimport { Page } from './providers/page';\n\n@Component({\n  selector: 'clr-dg-pagination',\n  template: `\n    @if (!detailService.isOpen) {\n      @if (_pageSizeComponent) {\n        <div class=\"pagination-size\">\n          <ng-content select=\"clr-dg-page-size\"></ng-content>\n        </div>\n      }\n      <div class=\"pagination-description\">\n        <ng-content></ng-content>\n      </div>\n      @if (page.last > 1) {\n        <div class=\"pagination-list\">\n          <button\n            type=\"button\"\n            class=\"pagination-first\"\n            [disabled]=\"page.current <= 1\"\n            (click)=\"page.current = 1\"\n            [attr.aria-label]=\"commonStrings.keys.firstPage\"\n          >\n            <span class=\"clr-sr-only\">{{ commonStrings.keys.firstPage }}</span>\n            <cds-icon shape=\"step-forward-2\" direction=\"down\"></cds-icon>\n          </button>\n          <button\n            type=\"button\"\n            class=\"pagination-previous\"\n            [disabled]=\"page.current <= 1\"\n            (click)=\"page.current = page.current - 1\"\n            [attr.aria-label]=\"commonStrings.keys.previousPage\"\n          >\n            <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n            <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n          </button>\n          <div class=\"pagination-pages\">\n            @if (!disableCurrentPageInput) {\n              <input\n                #currentPageInput\n                type=\"text\"\n                class=\"pagination-current clr-input\"\n                [size]=\"page.last.toString().length\"\n                [value]=\"page.current\"\n                (keydown.enter)=\"updateCurrentPage($event)\"\n                (blur)=\"verifyCurrentPage($event)\"\n                [attr.aria-label]=\"commonStrings.keys.currentPage\"\n              />\n            } @else {\n              <span>{{ page.current }}</span>\n            }\n            &nbsp;/&nbsp;<span [attr.aria-label]=\"commonStrings.keys.totalPages\">{{ page.last }}</span>\n          </div>\n          <button\n            type=\"button\"\n            class=\"pagination-next\"\n            [disabled]=\"page.current >= page.last\"\n            (click)=\"page.current = page.current + 1\"\n            [attr.aria-label]=\"commonStrings.keys.nextPage\"\n          >\n            <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n            <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n          </button>\n          <button\n            type=\"button\"\n            class=\"pagination-last\"\n            [disabled]=\"page.current >= page.last\"\n            (click)=\"page.current = page.last\"\n            [attr.aria-label]=\"commonStrings.keys.lastPage\"\n          >\n            <span class=\"clr-sr-only\">{{ commonStrings.keys.lastPage }}</span>\n            <cds-icon shape=\"step-forward-2\" direction=\"up\"></cds-icon>\n          </button>\n        </div>\n      }\n    }\n    @if (detailService.isOpen) {\n      <div class=\"pagination-description-compact\">\n        {{ page.firstItem + 1 }}-{{ page.lastItem + 1 }} / {{ page.totalItems }}\n      </div>\n      <div class=\"pagination-list\">\n        <button\n          type=\"button\"\n          class=\"pagination-previous\"\n          [disabled]=\"page.current <= 1\"\n          (click)=\"page.current = page.current - 1\"\n          [attr.aria-label]=\"commonStrings.keys.previousPage\"\n        >\n          <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n          <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n        </button>\n        <span>{{ page.current }}</span>\n        <button\n          type=\"button\"\n          class=\"pagination-next\"\n          [disabled]=\"page.current >= page.last\"\n          (click)=\"page.current = page.current + 1\"\n          [attr.aria-label]=\"commonStrings.keys.nextPage\"\n        >\n          <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n          <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n        </button>\n      </div>\n    }\n  `,\n  host: { '[class.pagination]': 'true' },\n  standalone: false,\n})\nexport class ClrDatagridPagination implements OnDestroy, OnInit {\n  @Input('clrDgPageInputDisabled') disableCurrentPageInput: boolean;\n\n  @Output('clrDgPageChange') currentChanged = new EventEmitter<number>(false);\n\n  @ContentChild(ClrDatagridPageSize) _pageSizeComponent: ClrDatagridPageSize;\n\n  @ViewChild('currentPageInput') currentPageInputRef: ElementRef<HTMLInputElement>;\n\n  /**\n   * Subscription to the page service changes\n   */\n  private _pageSubscription: Subscription;\n\n  constructor(\n    public page: Page,\n    public commonStrings: ClrCommonStringsService,\n    public detailService: DetailService\n  ) {\n    page.activated = true;\n  }\n\n  /**\n   * Page size\n   */\n  @Input('clrDgPageSize')\n  get pageSize(): number {\n    return this.page.size;\n  }\n  set pageSize(size: number) {\n    // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n    if (typeof size === 'number') {\n      this.page.size = size;\n    }\n  }\n\n  /**\n   * Total items (needed to guess the last page)\n   */\n  @Input('clrDgTotalItems')\n  get totalItems(): number {\n    return this.page.totalItems;\n  }\n  set totalItems(total: number) {\n    // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n    if (typeof total === 'number') {\n      this.page.totalItems = total;\n    }\n  }\n\n  /**\n   * Last page\n   */\n  @Input('clrDgLastPage')\n  get lastPage(): number {\n    return this.page.last;\n  }\n  set lastPage(last: number) {\n    // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n    if (typeof last === 'number') {\n      this.page.last = last;\n    }\n  }\n\n  /**\n   * Current page\n   */\n  @Input('clrDgPage')\n  get currentPage(): number {\n    return this.page.current;\n  }\n  set currentPage(page: number) {\n    // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n    if (typeof page === 'number') {\n      this.page.current = page;\n    }\n  }\n\n  /**\n   * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n   */\n  get firstItem(): number {\n    return this.page.firstItem;\n  }\n\n  /**\n   * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n   */\n  get lastItem(): number {\n    return this.page.lastItem;\n  }\n\n  /**\n   * Conditionally adds page numbers before and after the current page\n   */\n  get middlePages(): number[] {\n    const middlePages: number[] = [];\n    if (this.page.current > 1) {\n      middlePages.push(this.page.current - 1);\n    }\n    middlePages.push(this.page.current);\n    if (this.page.current < this.page.last) {\n      middlePages.push(this.page.current + 1);\n    }\n    return middlePages;\n  }\n\n  /**********\n   * Subscription to the Page service for page changes.\n   * Note: this only emits after the datagrid is initialized/stabalized and the page changes.\n   */\n  ngOnInit() {\n    /*\n     * Default page size is 10.\n     * The reason we set it here and not in the provider itself is because\n     * we don't want pagination if this component isn't present in the datagrid.\n     */\n    if (!this.page.size) {\n      this.page.size = 10;\n    }\n    this._pageSubscription = this.page.change.subscribe(current => this.currentChanged.emit(current));\n  }\n\n  ngOnDestroy() {\n    this.page.resetPageSize(true);\n    if (this._pageSubscription) {\n      this._pageSubscription.unsubscribe();\n    }\n  }\n\n  /**\n   * Moves to the previous page if it exists\n   */\n  previous() {\n    this.page.previous();\n  }\n\n  /**\n   * Moves to the next page if it exists\n   */\n  next() {\n    this.page.next();\n  }\n\n  verifyCurrentPage(event: any): void {\n    const parsed = parseInt(event.target.value, 10);\n    if (parsed !== this.page.current) {\n      event.target.value = this.page.current;\n    }\n  }\n\n  /**\n   * We only update the pagination's current page on enter.\n   */\n  updateCurrentPage(event: any): void {\n    const parsed = parseInt(event.target.value, 10);\n\n    // if the input value, is not a number, we don't update the page\n    if (!isNaN(parsed)) {\n      if (parsed < 1) {\n        this.page.current = 1;\n      } else if (parsed > this.page.last) {\n        this.page.current = this.page.last;\n      } else {\n        this.page.current = parsed;\n      }\n    }\n\n    /**\n     * Set the input's value to the new current page. This is needed because the code\n     * above may have changed the value from what the user entered in.\n     */\n    this.currentPageInputRef.nativeElement.value = this.page.current.toString();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridComparatorInterface } from './comparator.interface';\n\nexport interface ClrDatagridStateInterface<T = any> {\n  page?: { from?: number; to?: number; size?: number; current?: number };\n  sort?: { by: string | ClrDatagridComparatorInterface<T>; reverse: boolean };\n  filters?: any[];\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\n\nexport interface ClrDatagridFilterInterface<T, S = any> {\n  readonly state?: S;\n\n  changes: Observable<any>;\n\n  isActive(): boolean;\n\n  accepts(item: T): boolean;\n\n  equals?(other: ClrDatagridFilterInterface<T, any>): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridStringFilterInterface<T> {\n  accepts(item: T, search: string): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridNumericFilterInterface<T> {\n  accepts(item: T, low: number, high: number): boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridComparatorInterface<T> {\n  compare(a: T, b: T): number;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridVirtualScrollRangeInterface<T> {\n  total: number;\n  skip: number;\n  data: T[];\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\n\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\n\n/*\n * I don't think this deserves to be in IfExpanded itself,\n * so I'm adding a second directive on the same selector for now just for the datagrid\n */\n@Directive({\n  selector: '[clrIfExpanded]',\n  standalone: false,\n})\nexport class DatagridDetailRegisterer {\n  constructor(@Optional() private expandableRowsCount: ExpandableRowsCount) {\n    if (expandableRowsCount) {\n      expandableRowsCount.register();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.expandableRowsCount) {\n      this.expandableRowsCount.unregister();\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, EventEmitter, Inject, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { ColumnResizerService } from '../providers/column-resizer.service';\nimport { COLUMN_STATE, COLUMN_STATE_PROVIDER } from '../providers/column-state.provider';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n  selector: 'clr-dg-column',\n  providers: [ColumnResizerService, COLUMN_STATE_PROVIDER],\n  standalone: false,\n})\nexport class DatagridHeaderRenderer implements OnDestroy {\n  @Output('clrDgColumnResize') resizeEmitter = new EventEmitter<number>();\n\n  /**\n   * Indicates if the column has a strict width, so it doesn't shrink or expand based on the content.\n   */\n  private widthSet = false;\n  private autoSet = false;\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    private el: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    organizer: DatagridRenderOrganizer,\n    private domAdapter: DomAdapter,\n    private columnResizerService: ColumnResizerService,\n    private columnsService: ColumnsService,\n    @Inject(COLUMN_STATE) private columnState: BehaviorSubject<ColumnState>\n  ) {\n    this.subscriptions.push(\n      organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n    );\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n  }\n\n  getColumnWidthState(): Partial<ColumnState> {\n    const strictWidth = this.detectStrictWidth();\n    return {\n      width: this.computeWidth(strictWidth),\n      strictWidth: strictWidth,\n    };\n  }\n\n  setColumnState(index: number) {\n    this.columnsService.columns[index] = this.columnState;\n  }\n\n  setWidth(state: ColumnState) {\n    if (state.strictWidth) {\n      if (this.columnResizerService.resizedBy) {\n        this.resizeEmitter.emit(state.width);\n        this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n        this.widthSet = false;\n      }\n      // Don't set width if there is a user-defined one. Just add the strict width class.\n      this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n      this.autoSet = false;\n    } else {\n      this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n      this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n      this.widthSet = true;\n      this.autoSet = true;\n    }\n  }\n\n  setHidden(state: ColumnState) {\n    if (state.hidden) {\n      this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n    } else {\n      this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n    }\n  }\n\n  private clearWidth() {\n    // remove the width only if we set it, and it is not changed by dragging.\n    if (this.widthSet && !this.columnResizerService.resizedBy) {\n      this.renderer.setStyle(this.el.nativeElement, 'width', null);\n    }\n    if (this.autoSet) {\n      this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n    }\n  }\n\n  private detectStrictWidth(): number {\n    if (this.columnResizerService.resizedBy) {\n      return this.columnResizerService.widthAfterResize;\n    } else if (this.autoSet) {\n      return 0;\n    } else {\n      return this.domAdapter.userDefinedWidth(this.el.nativeElement);\n    }\n  }\n\n  private computeWidth(strictWidth: number): number {\n    let width: number = strictWidth;\n    if (!width) {\n      width = this.domAdapter.scrollWidth(this.el.nativeElement);\n    }\n    return width;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * This version of the DomAdapter is for use on non-browser platforms, where there are no\n * nativeElements to use for calculations.\n */\n\nimport { Injectable } from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\n\n@Injectable()\nexport class NoopDomAdapter implements DomAdapter {\n  userDefinedWidth(_element: any): number {\n    return 0;\n  }\n\n  scrollBarWidth(_element: any) {\n    return 0;\n  }\n\n  scrollWidth(_element: any) {\n    return 0;\n  }\n\n  computedHeight(_element: any): number {\n    return 0;\n  }\n\n  clientRect(_element: any): DOMRect {\n    return {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0,\n      width: 0,\n      height: 0,\n    } as DOMRect;\n  }\n\n  minWidth(_element: any): number {\n    return 0;\n  }\n\n  focus(_element: any): void {\n    // Do nothing\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  AfterContentInit,\n  AfterViewChecked,\n  AfterViewInit,\n  ChangeDetectorRef,\n  ContentChildren,\n  Directive,\n  ElementRef,\n  NgZone,\n  OnDestroy,\n  PLATFORM_ID,\n  QueryList,\n  Renderer2,\n} from '@angular/core';\nimport { DomAdapter } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { ClrDatagrid } from '../datagrid';\nimport { DatagridHeaderRenderer } from './header-renderer';\nimport { NoopDomAdapter } from './noop-dom-adapter';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRowRenderer } from './row-renderer';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\nimport { ColumnsService } from '../providers/columns.service';\nimport { DetailService } from '../providers/detail.service';\nimport { Items } from '../providers/items';\nimport { Page } from '../providers/page';\nimport { TableSizeService } from '../providers/table-size.service';\nimport { KeyNavigationGridController } from '../utils/key-navigation-grid.controller';\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\nexport const domAdapterFactory = (platformId: any) => {\n  if (isPlatformBrowser(platformId)) {\n    return new DomAdapter();\n  } else {\n    return new NoopDomAdapter();\n  }\n};\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\n@Directive({\n  selector: 'clr-datagrid',\n  providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],\n  standalone: false,\n})\nexport class DatagridMainRenderer implements AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy {\n  @ContentChildren(DatagridHeaderRenderer) private headers: QueryList<DatagridHeaderRenderer>;\n  @ContentChildren(DatagridRowRenderer) private rows: QueryList<DatagridRowRenderer>;\n\n  private _heightSet = false;\n  private shouldStabilizeColumns = true;\n  private subscriptions: Subscription[] = [];\n  private intersectionObserver: IntersectionObserver = null;\n\n  /**\n   * Indicates if we want to re-compute columns width. This should only happen:\n   * 1) When headers change, with columns being added or removed\n   * 2) When rows are lazily loaded for the first time\n   */\n  private columnsSizesStable = false;\n\n  constructor(\n    private datagrid: ClrDatagrid,\n    private organizer: DatagridRenderOrganizer,\n    private items: Items,\n    private page: Page,\n    private el: ElementRef<HTMLElement>,\n    private renderer: Renderer2,\n    detailService: DetailService,\n    private tableSizeService: TableSizeService,\n    private columnsService: ColumnsService,\n    private ngZone: NgZone,\n    private keyNavigation: KeyNavigationGridController,\n    private changeDetectorRef: ChangeDetectorRef\n  ) {\n    this.subscriptions.push(\n      organizer.filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS).subscribe(() => this.computeHeadersWidth())\n    );\n\n    this.subscriptions.push(\n      page.sizeChange.subscribe(() => {\n        if (this._heightSet) {\n          this.resetDatagridHeight();\n        }\n      })\n    );\n    this.subscriptions.push(detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));\n    this.subscriptions.push(items.change.subscribe(() => (this.shouldStabilizeColumns = true)));\n  }\n\n  ngOnInit() {\n    this.columnsService.columnsStateChange.subscribe(change => this.columnStateChanged(change));\n    // Datagrid used in other components like Accordion, Tabs or wrapped in onPush component which have their content\n    // hidden by default gets initialised without being visible and breakes rendering cycle.\n    // Should run only the first time if the datagrid is not visible on first initialization.\n    if (this.el.nativeElement.offsetParent === null) {\n      this.intersectionObserver = new IntersectionObserver(([entry]) => {\n        if ((this.el.nativeElement.offsetParent || entry.isIntersecting) && this.columnsSizesStable) {\n          this.columnsSizesStable = false;\n          this.changeDetectorRef.markForCheck();\n          this.intersectionObserver.disconnect();\n        }\n      });\n      this.intersectionObserver.observe(this.el.nativeElement);\n    }\n  }\n\n  ngAfterContentInit() {\n    this.setupColumns();\n\n    this.subscriptions.push(\n      this.headers.changes.subscribe(() => {\n        // TODO: only re-stabilize if a column was added or removed. Reordering is fine.\n        // Need to setup columns before stabalizing them\n        this.setupColumns();\n        this.columnsSizesStable = false;\n        this.stabilizeColumns();\n      })\n    );\n  }\n\n  // Initialize and set Table width for horizontal scrolling here.\n  ngAfterViewInit() {\n    this.tableSizeService.table = this.el;\n  }\n\n  ngAfterViewChecked() {\n    if (this.shouldStabilizeColumns) {\n      this.stabilizeColumns();\n    }\n\n    if (this.shouldComputeHeight()) {\n      this.ngZone.runOutsideAngular(() => {\n        setTimeout(() => {\n          this.computeDatagridHeight();\n        });\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach(sub => sub.unsubscribe());\n    this.intersectionObserver?.disconnect();\n  }\n\n  toggleDetailPane(state: boolean) {\n    if (this.headers) {\n      if (state && !this.columnsService.hasCache()) {\n        this.columnsService.cache();\n        this.columnsService.visibleColumns.forEach((header, index) => {\n          if (index > 0) {\n            this.columnsService.emitStateChangeAt(header.columnIndex, {\n              changes: [DatagridColumnChanges.HIDDEN],\n              hidden: state,\n            });\n          }\n        });\n      } else if (!state) {\n        this.columnsService.resetToLastCache();\n      }\n    }\n  }\n\n  private setupColumns() {\n    this.headers.forEach((header, index) => header.setColumnState(index));\n    this.columnsService.columns.splice(this.headers.length); // Trim any old columns\n    // Sets columnIndex for each column\n    this.columnsService.columns.forEach((column, index) => {\n      this.columnsService.emitStateChange(column, { changes: [DatagridColumnChanges.INITIALIZE], columnIndex: index });\n    });\n  }\n\n  private shouldComputeHeight(): boolean {\n    if (!this._heightSet && this.page.size > 0) {\n      if (this.items.displayed.length === this.page.size) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private computeDatagridHeight() {\n    const height = window.getComputedStyle(this.el.nativeElement).height;\n    this.renderer.setStyle(this.el.nativeElement, 'height', height);\n    this._heightSet = true;\n  }\n\n  private resetDatagridHeight() {\n    this.renderer.setStyle(this.el.nativeElement, 'height', '');\n    this._heightSet = false;\n  }\n\n  /**\n   * Makes each header compute its width.\n   */\n  private computeHeadersWidth() {\n    const nbColumns: number = this.headers.length;\n    const headerWidths = this.headers.map(header => {\n      return header.getColumnWidthState();\n    });\n    let allStrict = true;\n    this.headers.forEach((header, index) => {\n      // On the last header column check whether all columns have strict widths.\n      // If all columns have strict widths, remove the strict width from the last column and make it the column's\n      // minimum width so that when all previous columns shrink, it will get a flexible width and cover the empty\n      // gap in the Datagrid.\n      const state: ColumnStateDiff = {\n        changes: [DatagridColumnChanges.WIDTH],\n        ...headerWidths[index],\n      };\n\n      if (!state.strictWidth) {\n        allStrict = false;\n      }\n\n      if (nbColumns === index + 1 && allStrict) {\n        state.strictWidth = 0;\n      }\n\n      this.columnsService.emitStateChangeAt(index, state);\n    });\n  }\n\n  private columnStateChanged(state: ColumnState) {\n    // eslint-disable-next-line eqeqeq\n    if (!this.headers || state.columnIndex == null) {\n      return;\n    }\n    const columnIndex = state.columnIndex;\n    if (state.changes && state.changes.length) {\n      state.changes.forEach(change => {\n        switch (change) {\n          case DatagridColumnChanges.WIDTH:\n            this.headers.get(columnIndex).setWidth(state);\n            this.rows.forEach(row => {\n              if (row?.cells.length === this.columnsService.columns.length) {\n                row.cells.get(columnIndex).setWidth(state);\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.cells.get(columnIndex)?.setWidth(state);\n                });\n              }\n            });\n            break;\n          case DatagridColumnChanges.HIDDEN:\n            this.headers.get(columnIndex).setHidden(state);\n            this.rows.forEach(row => {\n              if (row.cells && row.cells.length) {\n                row.cells.get(columnIndex).setHidden(state);\n\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.cells.get(columnIndex)?.setHidden(state);\n                });\n              }\n            });\n            this.updateColumnSeparatorsVisibility();\n            this.keyNavigation.resetKeyGrid();\n            break;\n          case DatagridColumnChanges.INITIALIZE:\n            if (state.hideable && state.hidden) {\n              this.headers.get(columnIndex).setHidden(state);\n              this.rows.forEach(row => {\n                row.setCellsState();\n                row.expandableRows.forEach(expandableRow => {\n                  expandableRow.setCellsState();\n                });\n              });\n            }\n            break;\n          default:\n            break;\n        }\n      });\n    }\n  }\n\n  /**\n   * Triggers a whole re-rendring cycle to set column sizes, if needed.\n   */\n  private stabilizeColumns() {\n    if (this.columnsSizesStable) {\n      // Nothing to do.\n      return;\n    }\n    // Resize when the rows are loaded.\n    if (this.items.displayed.length > 0) {\n      this.organizer.resize();\n      this.columnsSizesStable = true;\n    }\n  }\n\n  private updateColumnSeparatorsVisibility() {\n    const visibleColumns = this.datagrid.columns.filter(column => !column.isHidden);\n    visibleColumns.forEach((column, index) => {\n      if (index === visibleColumns.length - 1) {\n        column.showSeparator = false;\n      } else if (!column.showSeparator) {\n        column.showSeparator = true;\n      }\n    });\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, OnDestroy } from '@angular/core';\n\nimport { DatagridRowRenderer } from './row-renderer';\nimport { ColumnsService } from '../providers/columns.service';\n\n@Directive({\n  selector: 'clr-dg-row-detail',\n  standalone: false,\n})\nexport class DatagridRowDetailRenderer extends DatagridRowRenderer implements OnDestroy {\n  constructor(\n    private parentRow: DatagridRowRenderer,\n    columnsService: ColumnsService,\n    el: ElementRef<HTMLElement>\n  ) {\n    super(columnsService, el);\n\n    parentRow.expandableRows.push(this);\n  }\n\n  override ngOnDestroy() {\n    this.parentRow.expandableRows = [];\n    super.ngOnDestroy();\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ClrCheckboxModule } from '@clr/angular/forms/checkbox';\nimport { ClrInputModule } from '@clr/angular/forms/input';\nimport { ClrNumberInputModule } from '@clr/angular/forms/number-input';\nimport { ClrRadioModule } from '@clr/angular/forms/radio';\nimport { ClrSelectModule } from '@clr/angular/forms/select';\nimport {\n  angleDoubleIcon,\n  arrowIcon,\n  ClarityIcons,\n  ClrIcon,\n  ellipsisVerticalIcon,\n  filterGridCircleIcon,\n  filterGridIcon,\n  stepForward2Icon,\n  timesIcon,\n  twoWayArrowsIcon,\n  viewColumnsIcon,\n  windowCloseIcon,\n} from '@clr/angular/icon';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\nimport { ClrSpinnerModule } from '@clr/angular/progress/spinner';\nimport {\n  CdkDragModule,\n  CdkTrapFocusModule,\n  ClrConditionalModule,\n  ClrExpandableAnimationModule,\n  ClrIfExpanded,\n  ClrKeyFocusModule,\n  ClrLoadingModule,\n  ClrOutsideClickModule,\n} from '@clr/angular/utils';\n\nimport { DatagridNumericFilter } from './built-in/filters/datagrid-numeric-filter';\nimport { DatagridStringFilter } from './built-in/filters/datagrid-string-filter';\nimport { ActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nimport { DatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\nimport { ExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridActionBar } from './datagrid-action-bar';\nimport { ClrDatagridActionOverflow } from './datagrid-action-overflow';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridColumnSeparator } from './datagrid-column-separator';\nimport { ClrDatagridColumnToggle } from './datagrid-column-toggle';\nimport { ClrDatagridColumnToggleButton } from './datagrid-column-toggle-button';\nimport { ClrDatagridDetail } from './datagrid-detail';\nimport { ClrDatagridDetailBody } from './datagrid-detail-body';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nimport { ClrDatagridFilter } from './datagrid-filter';\nimport { ClrDatagridFooter } from './datagrid-footer';\nimport { ClrDatagridHideableColumn } from './datagrid-hideable-column';\nimport { ClrIfDetail } from './datagrid-if-detail';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrDatagridPagination } from './datagrid-pagination';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridRowDetail } from './datagrid-row-detail';\nimport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nimport { ClrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.directive';\nimport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nimport { DatagridCellRenderer } from './render/cell-renderer';\nimport { DatagridHeaderRenderer } from './render/header-renderer';\nimport { DatagridMainRenderer } from './render/main-renderer';\nimport { DatagridRowDetailRenderer } from './render/row-detail-renderer';\nimport { DatagridRowRenderer } from './render/row-renderer';\nimport { WrappedCell } from './wrapped-cell';\nimport { WrappedColumn } from './wrapped-column';\nimport { WrappedRow } from './wrapped-row';\n\nexport const CLR_DATAGRID_DIRECTIVES: Type<any>[] = [\n  // Core\n  ClrDatagrid,\n  ClrDatagridActionBar,\n  ClrDatagridActionOverflow,\n  ClrDatagridCell,\n  ClrDatagridColumn,\n  ClrDatagridColumnSeparator,\n  ClrDatagridDetail,\n  ClrDatagridDetailBody,\n  ClrDatagridDetailHeader,\n  ClrDatagridFilter,\n  ClrDatagridFooter,\n  ClrDatagridHideableColumn,\n  ClrDatagridItems,\n  ClrDatagridPageSize,\n  ClrDatagridPagination,\n  ClrDatagridPlaceholder,\n  ClrDatagridRow,\n  ClrDatagridRowDetail,\n  ClrDatagridSelectionCellDirective,\n  ClrDatagridVirtualScrollDirective,\n  ClrIfDetail,\n  DatagridDetailRegisterer,\n  WrappedCell,\n  WrappedColumn,\n  WrappedRow,\n\n  // Renderers\n  DatagridCellRenderer,\n  DatagridHeaderRenderer,\n  DatagridMainRenderer,\n  DatagridRowDetailRenderer,\n  DatagridRowRenderer,\n\n  // Chocolate\n  ActionableOompaLoompa,\n  DatagridWillyWonka,\n  ExpandableOompaLoompa,\n\n  // Built-in shortcuts\n  DatagridNumericFilter,\n  DatagridStringFilter,\n];\n\nconst CLR_DATAGRID_INTERNAL_DIRECTIVES = [ClrDatagridColumnToggle, ClrDatagridColumnToggleButton];\nconst CLR_DATAGRID_STANDALONE_DIRECTIVES = [ClrDatagridSingleSelectionValueAccessor];\nconst CLR_DATAGRID_SHARED_DIRECTIVES = [ClrIfExpanded];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CdkDragModule,\n    CdkTrapFocusModule,\n    ClrIcon,\n    ClrInputModule,\n    ClrRadioModule,\n    ClrCheckboxModule,\n    ClrNumberInputModule,\n    ClrSelectModule,\n    FormsModule,\n    ClrLoadingModule,\n    ClrConditionalModule,\n    ClrOutsideClickModule,\n    ClrExpandableAnimationModule,\n    ClrSpinnerModule,\n    ClrPopoverModuleNext,\n    ClrKeyFocusModule,\n    CLR_DATAGRID_STANDALONE_DIRECTIVES,\n    CLR_DATAGRID_SHARED_DIRECTIVES,\n  ],\n  declarations: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_INTERNAL_DIRECTIVES],\n  exports: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_STANDALONE_DIRECTIVES, CLR_DATAGRID_SHARED_DIRECTIVES],\n})\nexport class ClrDatagridModule {\n  constructor() {\n    ClarityIcons.addIcons(\n      ellipsisVerticalIcon,\n      viewColumnsIcon,\n      windowCloseIcon,\n      arrowIcon,\n      timesIcon,\n      twoWayArrowsIcon,\n      stepForward2Icon,\n      angleDoubleIcon,\n      filterGridCircleIcon,\n      filterGridIcon\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './datagrid';\nexport * from './datagrid-action-bar';\nexport * from './datagrid-action-overflow';\nexport * from './datagrid-column';\nexport * from './datagrid-column-toggle';\nexport * from './datagrid-column-toggle-button';\nexport * from './datagrid-column-separator';\nexport * from './datagrid-detail';\nexport * from './datagrid-detail-body';\nexport * from './datagrid-detail-header';\nexport * from './datagrid-hideable-column';\nexport * from './datagrid-filter';\nexport * from './datagrid-if-detail';\nexport * from './datagrid-items';\nexport * from './datagrid-row';\nexport * from './datagrid-row-detail';\nexport * from './datagrid-cell';\nexport * from './datagrid-footer';\nexport * from './datagrid-page-size';\nexport * from './datagrid-pagination';\nexport * from './datagrid-placeholder';\n\nexport * from './interfaces/state.interface';\nexport * from './enums/sort-order.enum';\nexport * from './enums/selection-type';\nexport * from './interfaces/filter.interface';\nexport * from './interfaces/string-filter.interface';\nexport * from './interfaces/numeric-filter.interface';\nexport * from './interfaces/comparator.interface';\nexport * from './interfaces/virtual-scroll-data-range.interface';\n\nexport * from './built-in/filters/datagrid-string-filter';\nexport * from './built-in/filters/datagrid-numeric-filter';\nexport * from './built-in/filters/datagrid-property-string-filter';\nexport * from './built-in/filters/datagrid-property-numeric-filter';\nexport * from './built-in/comparators/datagrid-property-comparator';\n\nexport * from './chocolate/expandable-oompa-loompa';\nexport * from './chocolate/actionable-oompa-loompa';\nexport * from './chocolate/datagrid-willy-wonka';\n\nexport * from './datagrid.module';\n\nexport { Selection } from './providers/selection'; // exported specifically for appfx datagrid;\nexport { ClrDatagridItemsIdentityFunction } from './providers/items';\nexport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nexport { ClrDatagridVirtualScrollDirective } from './datagrid-virtual-scroll.directive';\nexport { ClrDatagridSingleSelectionValueAccessor } from './datagrid-single-selection.directive';\nexport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nexport { WrappedCell } from './wrapped-cell';\nexport { WrappedColumn } from './wrapped-column';\nexport { WrappedRow } from './wrapped-row';\nexport { DatagridMainRenderer } from './render/main-renderer';\nexport { DatagridHeaderRenderer } from './render/header-renderer';\nexport { DatagridCellRenderer } from './render/cell-renderer';\nexport { DatagridRowRenderer } from './render/row-renderer';\nexport { DatagridRowDetailRenderer } from './render/row-detail-renderer';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.StateDebouncer","i1.Page","i2.StateDebouncer","i1.FiltersProvider","i1","i2.DatagridRenderOrganizer","i3","i4.KeyNavigationGridController","i5","i6","i7.ClrDatagridFilter","i1.Sort","i2.FiltersProvider","i3.DetailService","i4","i7","i8.ClrDatagridColumnSeparator","i9.DatagridNumericFilter","i10.DatagridStringFilter","i2.Sort","i3.Page","i1.Items","nbRow","i1.DetailService","i1.DatagridRenderOrganizer","i1.Selection","i10","i11","i15.ClrDatagridSingleSelectionValueAccessor","i16.ClrDatagridSelectionCellDirective","i4.StateDebouncer","i1.ColumnsService","i1.DatagridWillyWonka","i2.RowActionService","i2.ExpandableRowsCount","i9.Page","i11.KeyNavigationGridController","i12","i15.ClrDatagridCell","i16.ClrDatagridPlaceholder","i17.ClrDatagridRow","i18.ClrDatagridSelectionCellDirective","i19.DatagridCellRenderer","i20.DatagridRowRenderer","i21.ActionableOompaLoompa","i22.ExpandableOompaLoompa","i2.ColumnsService","i8","i9.ClrDatagridColumnToggleButton","i3.DatagridIfExpandService","i4.ExpandableRowsCount","i7.ClrDatagridCell","i8.DatagridCellRenderer","i2.DetailService","i3.ColumnsService","i7.ClrDatagridColumnToggle","i2","i1.ExpandableRowsCount","i1.ClrDatagrid","i3.Items","i4.Page","i5.DetailService","i6.TableSizeService","i7.ColumnsService","i8.KeyNavigationGridController","i1.DatagridRowRenderer"],"mappings":"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"}