{"version":3,"file":"mtxGrid.mjs","sources":["../../../projects/extensions/grid/column-resize/resize-strategy.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/common.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize.ts","../../../projects/extensions/grid/column-resize/column-resize-directives/column-resize-flex.ts","../../../projects/extensions/grid/column-resize/overlay-handle.ts","../../../projects/extensions/grid/column-resize/resizable-directives/common.ts","../../../projects/extensions/grid/column-resize/resizable-directives/resizable.ts","../../../projects/extensions/grid/column-resize/column-resize-module.ts","../../../projects/extensions/grid/grid-utils.ts","../../../projects/extensions/grid/grid-pipes.ts","../../../projects/extensions/grid/cell.ts","../../../projects/extensions/grid/cell.html","../../../projects/extensions/grid/column-menu.ts","../../../projects/extensions/grid/column-menu.html","../../../projects/extensions/grid/expansion-toggle.ts","../../../projects/extensions/grid/selectable-cell.ts","../../../projects/extensions/grid/grid.ts","../../../projects/extensions/grid/grid.html","../../../projects/extensions/grid/grid-module.ts","../../../projects/extensions/grid/mtxGrid.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { CSP_NONCE, Inject, Injectable, Optional, Provider } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { CdkTable, _CoalescedStyleScheduler, _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\n\nimport {\n  ColumnResize,\n  ResizeStrategy,\n  CdkFlexTableResizeStrategy,\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n} from '@ng-matero/extensions/column-resize';\n\nexport { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER };\n\n/**\n * Overrides CdkFlexTableResizeStrategy to match mat-column elements.\n */\n@Injectable()\nexport class MatFlexTableResizeStrategy extends CdkFlexTableResizeStrategy {\n  constructor(\n    columnResize: ColumnResize,\n    @Inject(_COALESCED_STYLE_SCHEDULER) styleScheduler: _CoalescedStyleScheduler,\n    table: CdkTable<unknown>,\n    @Inject(DOCUMENT) document: any,\n    @Inject(CSP_NONCE) @Optional() nonce?: string | null\n  ) {\n    super(columnResize, styleScheduler, table, document, nonce);\n  }\n\n  protected override getColumnCssClass(cssFriendlyColumnName: string): string {\n    return `mat-column-${cssFriendlyColumnName}`;\n  }\n}\n\nexport const FLEX_RESIZE_STRATEGY_PROVIDER: Provider = {\n  provide: ResizeStrategy,\n  useClass: MatFlexTableResizeStrategy,\n};\n","import { Provider } from '@angular/core';\n\nimport {\n  ColumnResize,\n  ColumnResizeNotifier,\n  ColumnResizeNotifierSource,\n  HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport {\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n  FLEX_RESIZE_STRATEGY_PROVIDER,\n} from '../resize-strategy';\n\nconst PROVIDERS: Provider[] = [\n  ColumnResizeNotifier,\n  HeaderRowEventDispatcher,\n  ColumnResizeNotifierSource,\n];\nexport const TABLE_PROVIDERS: Provider[] = [\n  ...PROVIDERS,\n  TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nexport const FLEX_PROVIDERS: Provider[] = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n\nexport const TABLE_HOST_BINDINGS = {\n  class: 'mat-column-resize-table',\n};\nexport const FLEX_HOST_BINDINGS = {\n  class: 'mat-column-resize-flex',\n};\n\nexport abstract class AbstractMatColumnResize extends ColumnResize {\n  getTableHeight() {\n    const table = this.elementRef.nativeElement;\n    const tableParent = table.parentNode as HTMLElement;\n    const isTableContainer = tableParent.classList.contains('mat-table-container');\n    return isTableContainer ? tableParent.offsetHeight : table.offsetHeight;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n  ColumnResize,\n  ColumnResizeNotifier,\n  ColumnResizeNotifierSource,\n  HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, TABLE_HOST_BINDINGS, TABLE_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a table-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n  selector: 'table[mat-table][columnResize]',\n  host: TABLE_HOST_BINDINGS,\n  providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }],\n  standalone: true,\n})\nexport class MatColumnResize extends AbstractMatColumnResize {\n  constructor(\n    readonly columnResizeNotifier: ColumnResizeNotifier,\n    readonly elementRef: ElementRef<HTMLElement>,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly ngZone: NgZone,\n    protected readonly notifier: ColumnResizeNotifierSource\n  ) {\n    super();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Directive, ElementRef, NgZone } from '@angular/core';\nimport {\n  ColumnResize,\n  ColumnResizeNotifier,\n  ColumnResizeNotifierSource,\n  HeaderRowEventDispatcher,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize, FLEX_HOST_BINDINGS, FLEX_PROVIDERS } from './common';\n\n/**\n * Explicitly enables column resizing for a flexbox-based mat-table.\n * Individual columns must be annotated specifically.\n */\n@Directive({\n  selector: 'mat-table[columnResize]',\n  host: FLEX_HOST_BINDINGS,\n  providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }],\n  standalone: true,\n})\nexport class MatColumnResizeFlex extends AbstractMatColumnResize {\n  constructor(\n    readonly columnResizeNotifier: ColumnResizeNotifier,\n    readonly elementRef: ElementRef<HTMLElement>,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly ngZone: NgZone,\n    protected readonly notifier: ColumnResizeNotifierSource\n  ) {\n    super();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ElementRef,\n  Inject,\n  NgZone,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  CdkColumnDef,\n  _CoalescedStyleScheduler,\n  _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n  ColumnResize,\n  ColumnResizeNotifierSource,\n  HeaderRowEventDispatcher,\n  ResizeOverlayHandle,\n  ResizeRef,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatColumnResize } from './column-resize-directives/common';\n\n/**\n * Component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying a vertical line along the column edge.\n */\n@Component({\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'mat-column-resize-overlay-thumb' },\n  template: '<div #top class=\"mat-column-resize-overlay-thumb-top\"></div>',\n  standalone: true,\n})\nexport class MatColumnResizeOverlayHandle extends ResizeOverlayHandle {\n  protected readonly document: Document;\n\n  @ViewChild('top', { static: true }) topElement!: ElementRef<HTMLElement>;\n\n  constructor(\n    protected readonly columnDef: CdkColumnDef,\n    protected readonly columnResize: ColumnResize,\n    protected readonly directionality: Directionality,\n    protected readonly elementRef: ElementRef,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly ngZone: NgZone,\n    protected readonly resizeNotifier: ColumnResizeNotifierSource,\n    protected readonly resizeRef: ResizeRef,\n    @Inject(_COALESCED_STYLE_SCHEDULER)\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\n    @Inject(DOCUMENT) document: any\n  ) {\n    super();\n    this.document = document;\n  }\n\n  protected override updateResizeActive(active: boolean): void {\n    super.updateResizeActive(active);\n\n    const originHeight = this.resizeRef.origin.nativeElement.offsetHeight;\n    this.topElement.nativeElement.style.height = `${originHeight}px`;\n    this.resizeRef.overlayRef.updateSize({\n      height: active\n        ? (this.columnResize as AbstractMatColumnResize).getTableHeight()\n        : originHeight,\n    });\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Type } from '@angular/core';\nimport { Resizable } from '@ng-matero/extensions/column-resize';\nimport { MatColumnResizeOverlayHandle } from '../overlay-handle';\n\nexport abstract class AbstractMatResizable extends Resizable<MatColumnResizeOverlayHandle> {\n  override minWidthPxInternal = 32;\n\n  protected override getInlineHandleCssClassName(): string {\n    return 'mat-resizable-handle';\n  }\n\n  protected override getOverlayHandleComponentType(): Type<MatColumnResizeOverlayHandle> {\n    return MatColumnResizeOverlayHandle;\n  }\n}\n\nexport const RESIZABLE_HOST_BINDINGS = {\n  class: 'mat-resizable',\n};\n\nexport const RESIZABLE_INPUTS = [\n  'minWidthPx: matResizableMinWidthPx',\n  'maxWidthPx: matResizableMaxWidthPx',\n];\n","import {\n  Directive,\n  ElementRef,\n  Inject,\n  Injector,\n  NgZone,\n  ViewContainerRef,\n  ChangeDetectorRef,\n  Input,\n  HostBinding,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { Overlay } from '@angular/cdk/overlay';\nimport {\n  CdkColumnDef,\n  _CoalescedStyleScheduler,\n  _COALESCED_STYLE_SCHEDULER,\n} from '@angular/cdk/table';\nimport {\n  ColumnResize,\n  ColumnResizeNotifierSource,\n  HeaderRowEventDispatcher,\n  ResizeStrategy,\n} from '@ng-matero/extensions/column-resize';\n\nimport { AbstractMatResizable, RESIZABLE_HOST_BINDINGS, RESIZABLE_INPUTS } from './common';\n\n/**\n * Explicitly enables column resizing for a mat-header-cell.\n */\n@Directive({\n  selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',\n  host: RESIZABLE_HOST_BINDINGS,\n  inputs: RESIZABLE_INPUTS,\n  standalone: true,\n})\nexport class MatResizable extends AbstractMatResizable {\n  isResizable = true;\n\n  @HostBinding('class') get hasResizableClass() {\n    return this.isResizable ? RESIZABLE_HOST_BINDINGS.class : '';\n  }\n\n  @Input()\n  get resizable() {\n    return this.isResizable;\n  }\n  set resizable(newValue: any) {\n    this.isResizable = newValue == null || newValue === '' || newValue;\n  }\n\n  protected readonly document: Document;\n\n  constructor(\n    protected readonly columnDef: CdkColumnDef,\n    protected readonly columnResize: ColumnResize,\n    protected readonly directionality: Directionality,\n    @Inject(DOCUMENT) document: any,\n    protected readonly elementRef: ElementRef,\n    protected readonly eventDispatcher: HeaderRowEventDispatcher,\n    protected readonly injector: Injector,\n    protected readonly ngZone: NgZone,\n    protected readonly overlay: Overlay,\n    protected readonly resizeNotifier: ColumnResizeNotifierSource,\n    protected readonly resizeStrategy: ResizeStrategy,\n    @Inject(_COALESCED_STYLE_SCHEDULER)\n    protected readonly styleScheduler: _CoalescedStyleScheduler,\n    protected readonly viewContainerRef: ViewContainerRef,\n    protected readonly changeDetectorRef: ChangeDetectorRef\n  ) {\n    super();\n    this.document = document;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatCommonModule } from '@angular/material/core';\n\nimport { MatColumnResize } from './column-resize-directives/column-resize';\nimport { MatColumnResizeFlex } from './column-resize-directives/column-resize-flex';\nimport { MatColumnResizeOverlayHandle } from './overlay-handle';\nimport { MatResizable } from './resizable-directives/resizable';\n\nconst ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];\n\n@NgModule({\n  imports: ENTRY_COMMON_COMPONENTS,\n  exports: ENTRY_COMMON_COMPONENTS,\n})\nexport class MatColumnResizeCommonModule {}\n\nconst IMPORTS = [MatCommonModule, OverlayModule, MatColumnResizeCommonModule];\n\n@NgModule({\n  imports: [...IMPORTS, MatColumnResize, MatColumnResizeFlex, MatResizable],\n  exports: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n})\nexport class MatColumnResizeModule {}\n","import { Injectable } from '@angular/core';\nimport { MtxGridColumn } from './interfaces';\n\n@Injectable({ providedIn: 'root' })\nexport class MtxGridUtils {\n  constructor() {}\n\n  /**\n   * Get cell's value based on the data and column's field (e.g. `a.b.c`)\n   * @param rowData Row data\n   * @param colDef Column definition\n   * @returns\n   */\n  getCellValue(rowData: Record<string, any>, colDef: MtxGridColumn): string {\n    const keyArr = colDef.field ? colDef.field.split('.') : [];\n    let tmp: any = '';\n    keyArr.forEach((key: string, i: number) => {\n      if (i === 0) {\n        tmp = rowData[key];\n      } else {\n        tmp = tmp && tmp[key];\n      }\n    });\n    return tmp;\n  }\n\n  /**\n   * Get all data of a col\n   * @param data All data\n   * @param colDef Column definition\n   * @returns\n   */\n  getColData(data: any[], colDef: MtxGridColumn): any[] {\n    return data.map(rowData => this.getCellValue(rowData, colDef));\n  }\n\n  /**\n   * Whether the value is empty (`null`, `undefined`, `''`, `[]`)\n   * @param value\n   * @returns\n   */\n  isEmpty(value: any) {\n    return value == null || value.toString() === '';\n  }\n\n  /**\n   * Whether the value contain HTML\n   * @param value\n   * @returns\n   */\n  isContainHTML(value: string) {\n    return /<\\/?[a-z][\\s\\S]*>/i.test(value);\n  }\n}\n","import { KeyValueChangeRecord, Pipe, PipeTransform } from '@angular/core';\nimport { isObservable } from 'rxjs';\nimport { MtxGridUtils } from './grid-utils';\nimport { MtxGridColumn, MtxGridColumnButton, MtxGridRowClassFormatter } from './interfaces';\n\n@Pipe({ name: 'colClass', standalone: true })\nexport class MtxGridColClassPipe implements PipeTransform {\n  transform(\n    colDef: MtxGridColumn,\n    rowData?: Record<string, any>,\n    rowChangeRecord?: KeyValueChangeRecord<string, any>,\n    currentValue?: any\n  ) {\n    if (typeof colDef.class === 'string') {\n      return colDef.class;\n    } else if (typeof colDef.class === 'function') {\n      return colDef.class(rowData, colDef);\n    }\n    return '';\n  }\n}\n\n@Pipe({ name: 'rowClass', standalone: true })\nexport class MtxGridRowClassPipe implements PipeTransform {\n  transform(\n    rowData: Record<string, any>,\n    index: number | undefined,\n    dataIndex: number,\n    rowClassFormatter?: MtxGridRowClassFormatter\n  ) {\n    const rowIndex = index === undefined ? dataIndex : index;\n    const classList: string[] = rowIndex % 2 === 1 ? ['mat-row-odd'] : [];\n    if (rowClassFormatter) {\n      for (const key of Object.keys(rowClassFormatter)) {\n        if (rowClassFormatter[key](rowData, rowIndex)) {\n          classList.push(key);\n        }\n      }\n    }\n    return classList.join(' ');\n  }\n}\n\n@Pipe({ name: 'cellActions', standalone: true })\nexport class MtxGridCellActionsPipe implements PipeTransform {\n  transform(\n    btns?: MtxGridColumnButton[] | ((rowData: any) => MtxGridColumnButton[]),\n    rowData?: Record<string, any>,\n    rowChangeRecord?: KeyValueChangeRecord<string, any>,\n    currentValue?: any\n  ) {\n    if (typeof btns === 'function') {\n      return btns(rowData);\n    } else if (Array.isArray(btns)) {\n      return btns;\n    }\n    return [];\n  }\n}\n\n@Pipe({ name: 'cellActionTooltip', standalone: true })\nexport class MtxGridCellActionTooltipPipe implements PipeTransform {\n  transform(btn: MtxGridColumnButton) {\n    if (typeof btn.tooltip === 'string' || isObservable(btn.tooltip)) {\n      return { message: btn.tooltip };\n    } else {\n      return btn.tooltip || { message: '' };\n    }\n  }\n}\n\n@Pipe({ name: 'cellActionBadge', standalone: true })\nexport class MtxGridCellActionBadgePipe implements PipeTransform {\n  transform(btn: MtxGridColumnButton) {\n    if (typeof btn.badge === 'number' || typeof btn.badge === 'string' || isObservable(btn.badge)) {\n      return { content: btn.badge };\n    } else {\n      return btn.badge || { content: '' };\n    }\n  }\n}\n\n@Pipe({ name: 'cellActionDisable', standalone: true })\nexport class MtxGridCellActionDisablePipe implements PipeTransform {\n  transform(\n    btn: MtxGridColumnButton,\n    rowData: Record<string, any>,\n    rowChangeRecord?: KeyValueChangeRecord<string, any>,\n    currentValue?: any\n  ) {\n    if (typeof btn.disabled === 'boolean') {\n      return btn.disabled;\n    } else if (typeof btn.disabled === 'function') {\n      return btn.disabled(rowData);\n    } else {\n      return false;\n    }\n  }\n}\n\n@Pipe({ name: 'cellSummary', standalone: true })\nexport class MtxGridCellSummaryPipe implements PipeTransform {\n  constructor(private utils: MtxGridUtils) {}\n  transform(data: any[], colDef: MtxGridColumn) {\n    if (typeof colDef.summary === 'string') {\n      return colDef.summary;\n    } else if (typeof colDef.summary === 'function') {\n      return (colDef.summary as (data: any[], colDef?: MtxGridColumn) => any)(\n        this.utils.getColData(data, colDef),\n        colDef\n      );\n    }\n  }\n}\n","import { AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, PercentPipe } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  DoCheck,\n  EventEmitter,\n  Input,\n  KeyValueChangeRecord,\n  KeyValueChanges,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  OnInit,\n  Output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { MatBadge } from '@angular/material/badge';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { MatChip, MatChipListbox } from '@angular/material/chips';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { isObservable } from 'rxjs';\n\nimport { MtxToObservablePipe } from '@ng-matero/extensions/core';\nimport { MtxDialog } from '@ng-matero/extensions/dialog';\nimport {\n  MtxGridCellActionBadgePipe,\n  MtxGridCellActionDisablePipe,\n  MtxGridCellActionTooltipPipe,\n  MtxGridCellActionsPipe,\n  MtxGridCellSummaryPipe,\n} from './grid-pipes';\nimport { MtxGridUtils } from './grid-utils';\nimport { MtxGridColumn, MtxGridColumnButton } from './interfaces';\n\n@Component({\n  selector: 'mtx-grid-cell',\n  exportAs: 'mtxGridCell',\n  templateUrl: './cell.html',\n  styleUrl: './cell.scss',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    AsyncPipe,\n    CurrencyPipe,\n    DatePipe,\n    DecimalPipe,\n    PercentPipe,\n    MatButton,\n    MatIconButton,\n    MatFabButton,\n    MatMiniFabButton,\n    MatIcon,\n    MatChipListbox,\n    MatChip,\n    MatTooltip,\n    MatBadge,\n    MtxToObservablePipe,\n    MtxGridCellActionsPipe,\n    MtxGridCellSummaryPipe,\n    MtxGridCellActionDisablePipe,\n    MtxGridCellActionTooltipPipe,\n    MtxGridCellActionBadgePipe,\n  ],\n})\nexport class MtxGridCell implements OnInit, DoCheck {\n  /** Row data */\n  @Input() rowData: Record<string, any> = {};\n\n  /** Column definition */\n  @Input() colDef!: MtxGridColumn;\n\n  /** Table data */\n  @Input() data: any[] = [];\n\n  /** Whether show summary */\n  @Input() summary = false;\n\n  /** Placeholder for the empty value (`null`, `''`, `[]`) */\n  @Input() placeholder: string = '--';\n\n  @Output() rowDataChange = new EventEmitter<KeyValueChangeRecord<string, any>>();\n\n  private rowDataDiffer?: KeyValueDiffer<string, any>;\n\n  rowChangeRecord?: KeyValueChangeRecord<string, any>;\n\n  get _value() {\n    return this._utils.getCellValue(this.rowData, this.colDef);\n  }\n\n  constructor(\n    private _dialog: MtxDialog,\n    private _utils: MtxGridUtils,\n    private _differs: KeyValueDiffers,\n    private _changeDetectorRef: ChangeDetectorRef\n  ) {}\n\n  ngOnInit(): void {\n    this.rowDataDiffer = this._differs.find(this.rowData).create();\n  }\n\n  ngDoCheck(): void {\n    const changes = this.rowDataDiffer?.diff(this.rowData);\n    if (changes) {\n      this._applyChanges(changes);\n    }\n  }\n\n  private _applyChanges(changes: KeyValueChanges<string, any>) {\n    changes.forEachChangedItem(record => {\n      this.rowChangeRecord = record;\n      this.rowDataChange.emit(record);\n      this._changeDetectorRef.markForCheck();\n    });\n  }\n\n  _getText(value: any) {\n    return value === undefined ? '' : this._utils.isEmpty(value) ? this.placeholder : value;\n  }\n\n  _getTooltip(value: any) {\n    return this._utils.isEmpty(value) ? '' : value;\n  }\n\n  _getFormatterTooltip(value: any) {\n    return this._utils.isContainHTML(value) || this._utils.isEmpty(value) ? '' : value;\n  }\n\n  _onActionClick(event: MouseEvent, btn: MtxGridColumnButton, rowData: Record<string, any>) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (typeof btn.pop === 'string' || isObservable(btn.pop)) {\n      this._dialog.open({\n        title: btn.pop,\n        buttons: [\n          { color: 'primary', text: 'OK', onClick: () => btn.click?.(rowData) || {} },\n          { text: 'CLOSE' },\n        ],\n      });\n    } else if (typeof btn.pop === 'object') {\n      this._dialog.open({\n        title: btn.pop?.title,\n        description: btn.pop?.description,\n        buttons: [\n          {\n            color: btn.pop?.okColor || 'primary',\n            text: btn.pop?.okText || 'OK',\n            onClick: () => btn.click?.(rowData) || {},\n          },\n          {\n            color: btn.pop?.closeColor,\n            text: btn.pop?.closeText || 'CLOSE',\n          },\n        ],\n      });\n    } else {\n      btn.click?.(rowData);\n    }\n  }\n}\n","@if (summary) {\n  <span\n    [title]=\"_getFormatterTooltip((data | cellSummary: colDef))\"\n    [innerHTML]=\"_getText((data | cellSummary: colDef))\">\n  </span>\n} @else {\n  <!-- Custom formatting -->\n  @if (colDef.formatter) {\n    <span\n      [title]=\"_getFormatterTooltip(colDef.formatter(rowData, colDef))\"\n      [innerHTML]=\"_getText(colDef.formatter(rowData, colDef))\">\n    </span>\n  } @else {\n    <!-- Default formatting -->\n    @switch (colDef.type) {\n      <!-- Buttons -->\n      @case ('button') {\n        @for (btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue; track btn) {\n          @if (!btn.iif || btn.iif(rowData)) {\n            @switch (btn.type) {\n              @case ('raised') {\n                <button mat-raised-button [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  @if (btn.icon) {\n                    <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                  }\n                  <span>{{btn.text | toObservable | async}}</span>\n                </button>\n              }\n              @case ('stroked') {\n                <button mat-stroked-button [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  @if (btn.icon) {\n                    <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                  }\n                  <span>{{btn.text | toObservable | async}}</span>\n                </button>\n              }\n              @case ('flat') {\n                <button mat-flat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  @if (btn.icon) {\n                    <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                  }\n                  <span>{{btn.text | toObservable | async}}</span>\n                </button>\n              }\n              @case ('icon') {\n                <button mat-icon-button [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                </button>\n              }\n              @case ('fab') {\n                <button mat-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                </button>\n              }\n              @case ('mini-fab') {\n                <button mat-mini-fab [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                </button>\n              }\n              @default {\n                <button mat-button [color]=\"btn.color || 'primary'\" type=\"button\"\n                  class=\"mtx-grid-action-button\" [class]=\"btn.class\"\n                  [disabled]=\"btn | cellActionDisable: rowData: rowChangeRecord: rowChangeRecord?.currentValue\"\n                  [matTooltip]=\"(btn | cellActionTooltip).message | toObservable | async\"\n                  [matTooltipClass]=\"(btn | cellActionTooltip).class\"\n                  [matTooltipHideDelay]=\"(btn | cellActionTooltip).hideDelay\"\n                  [matTooltipShowDelay]=\"(btn | cellActionTooltip).showDelay\"\n                  [matTooltipPosition]=\"(btn | cellActionTooltip).position || 'below'\"\n                  [matTooltipPositionAtOrigin]=\"(btn | cellActionTooltip).positionAtOrigin\"\n                  [matTooltipTouchGestures]=\"(btn | cellActionTooltip).touchGestures || 'auto'\"\n                  [matTooltipDisabled]=\"(btn | cellActionTooltip).disabled\"\n                  [matBadge]=\"(btn | cellActionBadge).content | toObservable | async\"\n                  [matBadgeDescription]=\"(btn | cellActionBadge).description | toObservable | async\"\n                  [matBadgeColor]=\"(btn | cellActionBadge).color\"\n                  [matBadgePosition]=\"(btn | cellActionBadge).position || 'above after'\"\n                  [matBadgeSize]=\"(btn | cellActionBadge).size || 'medium'\"\n                  [matBadgeOverlap]=\"(btn | cellActionBadge).overlap\"\n                  [matBadgeDisabled]=\"(btn | cellActionBadge).disabled\"\n                  [matBadgeHidden]=\"(btn | cellActionBadge).hidden\"\n                  (click)=\"_onActionClick($event, btn, rowData)\">\n                  @if (btn.icon) {\n                    <mat-icon class=\"mtx-grid-icon\">{{btn.icon}}</mat-icon>\n                  }\n                  <span>{{btn.text | toObservable | async}}</span>\n                </button>\n              }\n            }\n          }\n        }\n      }\n      <!-- Tag -->\n      @case ('tag') {\n        @if (colDef.tag && colDef.tag[_value]) {\n          <mat-chip-listbox>\n            <mat-chip color=\"primary\" [class]=\"'bg-' + colDef.tag[_value].color\">\n              {{colDef.tag[_value].text}}\n            </mat-chip>\n          </mat-chip-listbox>\n        } @else {\n          {{_value}}\n        }\n      }\n      <!-- Link -->\n      @case ('link') {\n        <a [href]=\"_value\" target=\"_blank\">{{_value}}</a>\n      }\n      <!-- Image -->\n      @case ('image') {\n        <img class=\"mtx-grid-img\" [src]=\"_value\">\n      }\n      <!-- Boolean -->\n      @case ('boolean') {\n        <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n      }\n      <!-- Number -->\n      @case ('number') {\n        <span [title]=\"_getTooltip(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n          {{_getText(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n        </span>\n      }\n      <!-- Currency -->\n      @case ('currency') {\n        <span [title]=\"_getTooltip(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n          {{_getText(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n        </span>\n      }\n      <!-- Percent -->\n      @case ('percent') {\n        <span [title]=\"_getTooltip(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)\">\n          {{_getText(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\n        </span>\n      }\n      <!-- Date -->\n      @case ('date') {\n        <span [title]=\"_getTooltip(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)\">\n          {{_getText(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)}}\n        </span>\n      }\n      <!-- Default -->\n      @default {\n        <span [title]=\"_getTooltip(_value)\">{{_getText(_value)}}</span>\n      }\n    }\n  }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButton, MatFabButton, MatIconButton, MatMiniFabButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';\n\nimport { MtxToObservablePipe } from '@ng-matero/extensions/core';\nimport {\n  MtxGridButtonType,\n  MtxGridColumn,\n  MtxGridColumnPinOption,\n  MtxGridColumnPinValue,\n} from './interfaces';\n\n@Component({\n  selector: 'mtx-grid-column-menu',\n  exportAs: 'mtxGridColumnMenu',\n  templateUrl: './column-menu.html',\n  styleUrl: './column-menu.scss',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [\n    AsyncPipe,\n    NgTemplateOutlet,\n    FormsModule,\n    MatButton,\n    MatIconButton,\n    MatFabButton,\n    MatMiniFabButton,\n    MatIcon,\n    MatMenu,\n    MatMenuTrigger,\n    MatMenuItem,\n    MatCheckbox,\n    CdkDrag,\n    CdkDropList,\n    MtxToObservablePipe,\n  ],\n})\nexport class MtxGridColumnMenu {\n  @ViewChild('menu', { static: true }) menuPanel!: MatMenu;\n  @ViewChild(MatMenuTrigger) menuTrigger!: MatMenuTrigger;\n\n  @Input() columns: MtxGridColumn[] = [];\n  @Input() selectable = true;\n  @Input() selectableChecked: 'show' | 'hide' = 'show';\n  @Input() sortable = true;\n  @Input() pinnable = true;\n\n  @Input()\n  get buttonText() {\n    const defaultText = `Columns ${this.selectableChecked === 'show' ? 'Shown' : 'Hidden'}`;\n    return this._buttonText ? this._buttonText : defaultText;\n  }\n  set buttonText(value: string) {\n    this._buttonText = value;\n  }\n  private _buttonText = '';\n\n  @Input() buttonType: MtxGridButtonType = 'stroked';\n  @Input() buttonColor: ThemePalette;\n  @Input() buttonClass = '';\n  @Input() buttonIcon = '';\n\n  @Input() showHeader = false;\n  @Input() headerText = 'Columns Header';\n  @Input() headerTemplate!: TemplateRef<any>;\n  @Input() showFooter = false;\n  @Input() footerText = 'Columns Footer';\n  @Input() footerTemplate!: TemplateRef<any>;\n\n  @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n\n  @Input()\n  get pinOptions() {\n    return this._pinOptions;\n  }\n  set pinOptions(value: MtxGridColumnPinOption[]) {\n    if (value.length > 0) {\n      this._pinOptions = value;\n    }\n  }\n  private _pinOptions: MtxGridColumnPinOption[] = [\n    { label: 'Pin Left', value: 'left' },\n    { label: 'Pin Right', value: 'right' },\n    { label: 'No Pin', value: null },\n  ];\n\n  _handleDroped(e: CdkDragDrop<string[]>) {\n    moveItemInArray(this.columns, e.previousIndex, e.currentIndex);\n    this.columnChange.emit(this.columns);\n  }\n\n  _handleChecked(col: MtxGridColumn) {\n    if (this.selectableChecked === 'show') {\n      col.hide = !col.show;\n    } else {\n      col.show = !col.hide;\n    }\n    this.columnChange.emit(this.columns);\n  }\n\n  _handlePinSelect(col: MtxGridColumn, val: MtxGridColumnPinValue) {\n    if (col.pinned != val) {\n      col.pinned = val;\n      this.columnChange.emit(this.columns);\n    }\n  }\n}\n","@switch (buttonType) {\n  @case ('raised') {\n    <button [class]=\"buttonClass\" mat-raised-button type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n  }\n  @case ('stroked') {\n    <button [class]=\"buttonClass\" mat-stroked-button type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n  }\n  @case ('flat') {\n    <button [class]=\"buttonClass\" mat-flat-button type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n    }\n  @case ('icon') {\n    <button [class]=\"buttonClass\" mat-icon-button type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n    </button>\n  }\n  @case ('fab') {\n    <button [class]=\"buttonClass\" mat-fab type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n  }\n  @case ('mini-fab') {\n    <button [class]=\"buttonClass\" mat-mini-fab type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n  }\n  @default {\n    <button [class]=\"buttonClass\" mat-button type=\"button\" [color]=\"buttonColor\"\n      [matMenuTriggerFor]=\"menu\">\n      @if (buttonIcon) {\n        <mat-icon>{{buttonIcon}}</mat-icon>\n      }\n      {{buttonText}}\n    </button>\n  }\n}\n\n<mat-menu #menu=\"matMenu\" class=\"mtx-grid-column-menu\">\n  <div class=\"mtx-grid-column-menu-content\"\n    (click)=\"$event.stopPropagation()\" (keydown)=\"$event.stopPropagation()\">\n    @if (showHeader) {\n      <div class=\"mtx-grid-column-menu-header\">\n        @if (headerTemplate) {\n          <ng-template [ngTemplateOutlet]=\"headerTemplate\"></ng-template>\n        } @else {\n          {{headerText}}\n        }\n      </div>\n    }\n\n    <div class=\"mtx-grid-column-menu-body\">\n      @if (sortable) {\n        <div class=\"mtx-grid-column-menu-list\"\n          cdkDropList (cdkDropListDropped)=\"_handleDroped($event)\">\n          @for (col of columns; track col) {\n            <div class=\"mtx-grid-column-menu-item\"\n              cdkDrag [cdkDragDisabled]=\"selectableChecked === 'show'? !col.show : col.hide\">\n              <svg class=\"mtx-grid-icon mtx-grid-column-drag-handle-icon\" viewBox=\"0 0 24 24\"\n                width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                <path d=\"M7,19V17H9V19H7M11,19V17H13V19H11M15,19V17H17V19H15M7,15V13H9V15H7M11,15V13H13V15H11M15,15V13H17V15H15M7,11V9H9V11H7M11,11V9H13V11H11M15,11V9H17V11H15M7,7V5H9V7H7M11,7V5H13V7H11M15,7V5H17V7H15Z\" />\n              </svg>\n              <ng-template [ngTemplateOutlet]=\"checkboxList\"\n                [ngTemplateOutletContext]=\"{ $implicit: col }\">\n              </ng-template>\n            </div>\n          }\n        </div>\n      }\n\n      @if (!sortable) {\n        <div class=\"mtx-grid-column-menu-list\">\n          @for (col of columns; track col) {\n            <div class=\"mtx-grid-column-menu-item\">\n              <ng-template [ngTemplateOutlet]=\"checkboxList\"\n                [ngTemplateOutletContext]=\"{ $implicit: col }\">\n              </ng-template>\n            </div>\n          }\n        </div>\n      }\n    </div>\n\n    @if (showFooter) {\n      <div class=\"mtx-grid-column-menu-footer\">\n        @if (footerTemplate) {\n          <ng-template [ngTemplateOutlet]=\"footerTemplate\"></ng-template>\n        } @else {\n          {{footerText}}\n        }\n      </div>\n    }\n  </div>\n</mat-menu>\n\n<ng-template #checkboxList let-col>\n  @if (pinnable) {\n    <button class=\"mtx-grid-column-pin-button\" mat-icon-button type=\"button\"\n      [matMenuTriggerFor]=\"pinList\">\n      @if (col.pinned) {\n        <svg class=\"mtx-grid-icon mtx-grid-column-pin-icon\"\n          viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n          <path d=\"M16,12V4H17V2H7V4H8V12L6,14V16H11.2V22H12.8V16H18V14L16,12Z\" />\n        </svg>\n      }\n      @if (!col.pinned) {\n        <svg class=\"mtx-grid-icon mtx-grid-column-pin-off-icon\"\n          viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n          <path d=\"M2,5.27L3.28,4L20,20.72L18.73,22L12.8,16.07V22H11.2V16H6V14L8,12V11.27L2,5.27M16,12L18,14V16H17.82L8,6.18V4H7V2H17V4H16V12Z\" />\n        </svg>\n      }\n      </button>\n      <mat-menu #pinList=\"matMenu\" class=\"mtx-grid-column-pin-list\">\n        @for (item of pinOptions; track item) {\n          <button class=\"mtx-grid-column-pin-option\" type=\"button\"\n            mat-menu-item\n            (click)=\"_handlePinSelect(col, item.value)\">\n            <span class=\"mtx-grid-column-pin-option-placeholder\">\n              <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n              @if (col.pinned==item.value) {\n                <svg class=\"mtx-grid-icon mtx-grid-column-pin-check-icon\"\n                  viewBox=\"0 0 24 24\" width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                  <path d=\"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" />\n                </svg>\n              }\n            </span>\n            <span class=\"mtx-grid-column-pin-option-text\">{{item.label | toObservable | async}}</span>\n          </button>\n        }\n      </mat-menu>\n  }\n\n  @if (selectable) {\n    <mat-checkbox class=\"mtx-grid-column-menu-item-label\"\n      [(ngModel)]=\"col[selectableChecked]\" [disabled]=\"col.disabled\"\n      (change)=\"_handleChecked(col)\">{{col.header | toObservable | async}}</mat-checkbox>\n  } @else {\n    <span class=\"mtx-grid-column-menu-item-label\">{{col.header | toObservable | async}}</span>\n  }\n</ng-template>\n","import {\n  Directive,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  Input,\n  Output,\n  TemplateRef,\n} from '@angular/core';\n\n@Directive({\n  selector: '[mtx-grid-expansion-toggle]',\n  standalone: true,\n})\nexport class MtxGridExpansionToggle {\n  private _opened = false;\n  private _row: any;\n  private _tplRef!: TemplateRef<any>;\n\n  @Input()\n  get opened() {\n    return this._opened;\n  }\n  set opened(newValue: boolean) {\n    this._opened = newValue;\n    this.openedChange.emit(newValue);\n  }\n  @Output() openedChange = new EventEmitter<boolean>();\n\n  @HostBinding('class.expanded')\n  get expanded(): boolean {\n    return this._opened;\n  }\n\n  @Input()\n  set expandableRow(value: any) {\n    if (value !== this._row) {\n      this._row = value;\n    }\n  }\n\n  @Input('expansionRowTpl')\n  set template(value: TemplateRef<any>) {\n    if (value !== this._tplRef) {\n      this._tplRef = value;\n    }\n  }\n\n  @Output() toggleChange = new EventEmitter<MtxGridExpansionToggle>();\n\n  constructor() {}\n\n  @HostListener('click', ['$event'])\n  onClick(event: MouseEvent): void {\n    event.preventDefault();\n    event.stopPropagation();\n    this.toggle();\n  }\n\n  toggle(): void {\n    this.opened = !this.opened;\n    this.toggleChange.emit(this);\n  }\n}\n","import { Directive, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\n\n@Directive({\n  selector: '[mtx-grid-selectable-cell]',\n  standalone: true,\n})\nexport class MtxGridSelectableCell {\n  ctrlKeyPressed = false;\n  shiftKeyPressed = false;\n\n  @HostBinding('class.selected')\n  get selected() {\n    return this._selected;\n  }\n  private _selected = false;\n\n  @Input() cellSelectable = true;\n\n  @Output() cellSelectedChange = new EventEmitter<MtxGridSelectableCell>();\n\n  @HostListener('click', ['$event'])\n  onClick(event: MouseEvent): void {\n    this.ctrlKeyPressed = event.ctrlKey;\n    this.shiftKeyPressed = event.shiftKey;\n\n    if (this.cellSelectable) {\n      this.select();\n    }\n  }\n\n  select(): void {\n    this._selected = true;\n    this.cellSelectedChange.emit(this);\n  }\n\n  deselect(): void {\n    this._selected = false;\n    this.cellSelectedChange.emit(this);\n  }\n\n  toggle(): void {\n    this._selected = !this._selected;\n    this.cellSelectedChange.emit(this);\n  }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  InjectionToken,\n  Input,\n  KeyValueChangeRecord,\n  OnChanges,\n  OnDestroy,\n  Optional,\n  Output,\n  QueryList,\n  SimpleChanges,\n  TemplateRef,\n  TrackByFunction,\n  ViewChild,\n  ViewEncapsulation,\n  booleanAttribute,\n} from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatSort, MatSortHeader, Sort, SortDirection } from '@angular/material/sort';\nimport {\n  MatCell,\n  MatCellDef,\n  MatColumnDef,\n  MatFooterCell,\n  MatFooterCellDef,\n  MatFooterRow,\n  MatFooterRowDef,\n  MatHeaderCell,\n  MatHeaderCellDef,\n  MatHeaderRow,\n  MatHeaderRowDef,\n  MatRow,\n  MatRowDef,\n  MatTable,\n  MatTableDataSource,\n} from '@angular/material/table';\n\nimport { MtxIsTemplateRefPipe, MtxToObservablePipe } from '@ng-matero/extensions/core';\nimport { MtxGridCell } from './cell';\nimport { MtxGridColumnMenu } from './column-menu';\nimport { MatColumnResize, MatResizable } from './column-resize';\nimport { MtxGridExpansionToggle } from './expansion-toggle';\nimport { MtxGridColClassPipe, MtxGridRowClassPipe } from './grid-pipes';\nimport { MtxGridUtils } from './grid-utils';\nimport {\n  MtxGridButtonType,\n  MtxGridCellTemplate,\n  MtxGridColumn,\n  MtxGridColumnPinOption,\n  MtxGridDefaultOptions,\n  MtxGridRowClassFormatter,\n  MtxGridRowSelectionFormatter,\n} from './interfaces';\nimport { MtxGridSelectableCell } from './selectable-cell';\n\n/** Injection token that can be used to specify default grid options. */\nexport const MTX_GRID_DEFAULT_OPTIONS = new InjectionToken<MtxGridDefaultOptions>(\n  'mtx-grid-default-options'\n);\n\n@Component({\n  selector: 'mtx-grid',\n  exportAs: 'mtxGrid',\n  templateUrl: './grid.html',\n  styleUrl: './grid.scss',\n  host: {\n    class: 'mtx-grid',\n  },\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [\n    trigger('expansion', [\n      state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\n      state('expanded', style({ height: '*', visibility: 'visible' })),\n      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n      transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n    ]),\n  ],\n  standalone: true,\n  imports: [\n    AsyncPipe,\n    NgTemplateOutlet,\n    MatProgressBar,\n    MatIconButton,\n    MatCheckbox,\n    MatTable,\n    MatColumnDef,\n    MatHeaderRowDef,\n    MatHeaderRow,\n    MatRowDef,\n    MatRow,\n    MatFooterRowDef,\n    MatFooterRow,\n    MatHeaderCellDef,\n    MatHeaderCell,\n    MatCellDef,\n    MatCell,\n    MatFooterCellDef,\n    MatFooterCell,\n    MatSort,\n    MatSortHeader,\n    MatPaginator,\n    MatResizable,\n    MatColumnResize,\n    MtxGridCell,\n    MtxGridColumnMenu,\n    MtxGridSelectableCell,\n    MtxGridExpansionToggle,\n    MtxIsTemplateRefPipe,\n    MtxGridColClassPipe,\n    MtxGridRowClassPipe,\n    MtxToObservablePipe,\n  ],\n})\nexport class MtxGrid implements OnChanges, AfterViewInit, OnDestroy {\n  @ViewChild(MatTable) table!: MatTable<any>;\n  @ViewChild(MatPaginator) paginator!: MatPaginator;\n  @ViewChild(MatSort) sort!: MatSort;\n  @ContentChildren(MatRowDef) rowDefs!: QueryList<MatRowDef<any>>;\n  @ContentChildren(MatHeaderRowDef) headerRowDefs!: QueryList<MatHeaderRowDef>;\n  @ContentChildren(MatFooterRow) footerRowDefs!: QueryList<MatFooterRowDef>;\n  @ViewChild('columnMenu') columnMenu!: MtxGridColumnMenu;\n  @ViewChild('tableContainer') tableContainer!: ElementRef<HTMLDivElement>;\n\n  dataSource = new MatTableDataSource();\n\n  /** The grid's displayed columns. */\n  @Input() displayedColumns: string[] = [];\n  /** The grid's columns. */\n  @Input() columns: MtxGridColumn[] = [];\n  /** The grid's data. */\n  @Input() data: any[] = [];\n  /** The total number of the data. */\n  @Input() length = 0;\n  /** Whether the grid is loading. */\n  @Input({ transform: booleanAttribute }) loading = false;\n  /** Tracking function that will be used to check the differences in data changes. */\n  @Input() trackBy!: TrackByFunction<any>;\n  /** Whether the column is resizable. */\n  @Input({ transform: booleanAttribute })\n  columnResizable = this._defaultOptions?.columnResizable ?? false;\n  /** Placeholder for the empty value (`null`, `''`, `[]`). */\n  @Input() emptyValuePlaceholder = this._defaultOptions?.emptyValuePlaceholder ?? '--';\n\n  // ===== Page =====\n\n  /** Whether to paginate the data on front end. */\n  @Input({ transform: booleanAttribute })\n  pageOnFront = this._defaultOptions?.pageOnFront ?? true;\n  /** Whether to show the paginator. */\n  @Input({ transform: booleanAttribute })\n  showPaginator = this._defaultOptions?.showPaginator ?? true;\n  /** Whether the paginator is disabled. */\n  @Input({ transform: booleanAttribute })\n  pageDisabled = this._defaultOptions?.pageDisabled ?? false;\n  /** Whether to show the first/last buttons UI to the user. */\n  @Input({ transform: booleanAttribute })\n  showFirstLastButtons = this._defaultOptions?.showFirstLastButtons ?? true;\n  /** The zero-based page index of the displayed list of items. */\n  @Input() pageIndex = this._defaultOptions?.pageIndex ?? 0;\n  /** Number of items to display on a page. */\n  @Input() pageSize = this._defaultOptions?.pageSize ?? 10;\n  /** The set of provided page size options to display to the user. */\n  @Input() pageSizeOptions = this._defaultOptions?.pageSizeOptions ?? [10, 50, 100];\n  /** Whether to hide the page size selection UI from the user. */\n  @Input({ transform: booleanAttribute })\n  hidePageSize = this._defaultOptions?.hidePageSize ?? false;\n  /** Event emitted when the paginator changes the page size or page index. */\n  @Output() page = new EventEmitter<PageEvent>();\n  /** The template for the pagination. */\n  @Input() paginationTemplate!: TemplateRef<any>;\n\n  // ===== Sort =====\n\n  /** Whether to sort the data on front end. */\n  @Input({ transform: booleanAttribute })\n  sortOnFront = this._defaultOptions?.sortOnFront ?? true;\n  /** The id of the most recently sorted MatSortable. */\n  @Input() sortActive = this._defaultOptions?.sortActive ?? '';\n  /** The sort direction of the currently active MatSortable. */\n  @Input() sortDirection: SortDirection = this._defaultOptions?.sortDirection ?? '';\n  /**\n   * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n   * May be overriden by the column's `disableClear` in `sortProp`.\n   */\n  @Input({ transform: booleanAttribute })\n  sortDisableClear = this._defaultOptions?.sortDisableClear ?? false;\n  /** Whether the sort is disabled. */\n  @Input({ transform: booleanAttribute })\n  sortDisabled = this._defaultOptions?.sortDisabled ?? false;\n  /**\n   * The direction to set when an MatSortable is initially sorted.\n   * May be overriden by the column's `start` in `sortProp`.\n   */\n  @Input() sortStart: 'asc' | 'desc' = this._defaultOptions?.sortStart ?? 'asc';\n  /** Event emitted when the user changes either the active sort or sort direction. */\n  @Output() sortChange = new EventEmitter<Sort>();\n\n  // ===== Row =====\n\n  /** Whether to use the row hover style. */\n  @Input({ transform: booleanAttribute })\n  rowHover = this._defaultOptions?.rowHover ?? false;\n  /** Whether to use the row striped style. */\n  @Input({ transform: booleanAttribute })\n  rowStriped = this._defaultOptions?.rowStriped ?? false;\n  /** Event emitted when the user clicks the row. */\n  @Output() rowClick = new EventEmitter<any>();\n  /** Event emitted when the user attempts to open a context menu. */\n  @Output() rowContextMenu = new EventEmitter<any>();\n\n  // ===== Expandable Row =====\n\n  expansionRowStates: any[] = [];\n\n  /** Whether the row is expandable. */\n  @Input({ transform: booleanAttribute }) expandable = false;\n  /** The template for the expandable row. */\n  @Input() expansionTemplate!: TemplateRef<any>;\n  /** Event emitted when the user toggles the expandable row. */\n  @Output() expansionChange = new EventEmitter<any>();\n\n  // ===== Row Selection =====\n\n  rowSelection: SelectionModel<any> = new SelectionModel<any>(true, []);\n\n  /** Whether to support multiple row/cell selection. */\n  @Input({ transform: booleanAttribute })\n  multiSelectable = this._defaultOptions?.multiSelectable ?? true;\n  /** Whether the user can select multiple rows with click. */\n  @Input({ transform: booleanAttribute })\n  multiSelectionWithClick = this._defaultOptions?.multiSelectionWithClick ?? false;\n  /** Whether the row is selectable. */\n  @Input({ transform: booleanAttribute })\n  rowSelectable = this._defaultOptions?.rowSelectable ?? false;\n  /** Whether to hide the row selection checkbox. */\n  @Input({ transform: booleanAttribute })\n  hideRowSelectionCheckbox = this._defaultOptions?.hideRowSelectionCheckbox ?? false;\n  /** Whether disable rows to be selected when clicked. */\n  @Input({ transform: booleanAttribute })\n  disableRowClickSelection = this._defaultOptions?.disableRowClickSelection ?? false;\n  /** The formatter to disable the row selection or hide the row's checkbox. */\n  @Input() rowSelectionFormatter: MtxGridRowSelectionFormatter = {};\n  /** The formatter to set the row's class. */\n  @Input() rowClassFormatter?: MtxGridRowClassFormatter;\n  /** The selected row items. */\n  @Input() rowSelected: any[] = [];\n  /** Event emitted when the row is selected. */\n  @Output() rowSelectedChange = new EventEmitter<any[]>();\n\n  // ===== Cell Selection =====\n\n  cellSelection: any[] = [];\n\n  /** Whether the cell is selectable. */\n  @Input({ transform: booleanAttribute })\n  cellSelectable = this._defaultOptions?.cellSelectable ?? true;\n  /** Event emitted when the cell is selected. */\n  @Output() cellSelectedChange = new EventEmitter<any[]>();\n\n  private _selectedCell?: MtxGridSelectableCell;\n\n  // ===== Toolbar =====\n\n  /** Whether to show the toolbar. */\n  @Input({ transform: booleanAttribute })\n  showToolbar = this._defaultOptions?.showToolbar ?? false;\n  /** The text of the toolbar's title. */\n  @Input() toolbarTitle = this._defaultOptions?.toolbarTitle ?? '';\n  /** The template for the toolbar. */\n  @Input() toolbarTemplate!: TemplateRef<any>;\n\n  // ===== Column Menu =====\n\n  /** Whether the column is hideable. */\n  @Input({ transform: booleanAttribute })\n  columnHideable = this._defaultOptions?.columnHideable ?? true;\n  /** Hide or show when the column's checkbox is checked. */\n  @Input() columnHideableChecked: 'show' | 'hide' =\n    this._defaultOptions?.columnHideableChecked ?? 'show';\n  /** Whether the column is sortable. */\n  @Input({ transform: booleanAttribute })\n  columnSortable = this._defaultOptions?.columnSortable ?? true;\n  /** Whether the column is pinnable. */\n  @Input({ transform: booleanAttribute })\n  columnPinnable = this._defaultOptions?.columnPinnable ?? true;\n  /** Event emitted when the column is hided or is sorted. */\n  @Output() columnChange = new EventEmitter<MtxGridColumn[]>();\n  /** The options for the column pin list. */\n  @Input() columnPinOptions: MtxGridColumnPinOption[] =\n    this._defaultOptions?.columnPinOptions ?? [];\n\n  /** Whether to show the column menu button. */\n  @Input({ transform: booleanAttribute })\n  showColumnMenuButton = this._defaultOptions?.showColumnMenuButton ?? true;\n  /** The text for the column menu button. */\n  @Input() columnMenuButtonText = this._defaultOptions?.columnMenuButtonText ?? '';\n  /** The type for the column menu button. */\n  @Input() columnMenuButtonType: MtxGridButtonType =\n    this._defaultOptions?.columnMenuButtonType ?? 'stroked';\n  /** The color for the column menu button. */\n  @Input() columnMenuButtonColor: ThemePalette = this._defaultOptions?.columnMenuButtonColor;\n  /** The class for the column menu button. */\n  @Input() columnMenuButtonClass = this._defaultOptions?.columnMenuButtonClass ?? '';\n  /** The icon for the column menu button. */\n  @Input() columnMenuButtonIcon = this._defaultOptions?.columnMenuButtonIcon ?? '';\n\n  /** Whether to show the column-menu's header. */\n  @Input({ transform: booleanAttribute })\n  showColumnMenuHeader = this._defaultOptions?.showColumnMenuHeader ?? false;\n  /** The text for the column-menu's header. */\n  @Input() columnMenuHeaderText = this._defaultOptions?.columnMenuHeaderText ?? 'Columns Header';\n  /** The template for the column-menu's header. */\n  @Input() columnMenuHeaderTemplate!: TemplateRef<any>;\n  /** Whether to show the the column-menu's footer. */\n  @Input({ transform: booleanAttribute })\n  showColumnMenuFooter = this._defaultOptions?.showColumnMenuFooter ?? false;\n  /** The text for the column-menu's footer. */\n  @Input() columnMenuFooterText = this._defaultOptions?.columnMenuFooterText ?? 'Columns Footer';\n  /** The template for the column-menu's footer. */\n  @Input() columnMenuFooterTemplate!: TemplateRef<any>;\n\n  // ===== No Result =====\n\n  /** The displayed text for the empty data. */\n  @Input() noResultText = this._defaultOptions?.noResultText ?? 'No records found';\n  /** The template for the empty data. */\n  @Input() noResultTemplate!: TemplateRef<any>;\n\n  get _hasNoResult() {\n    return (!this.dataSource.data || this.dataSource.data.length === 0) && !this.loading;\n  }\n\n  // ===== Cell Templates =====\n\n  /** The header's cell template for the grid. */\n  @Input() headerTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n  /** The header's cell template for the grid exclude sort. */\n  @Input() headerExtraTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n  /** The cell template for the grid. */\n  @Input() cellTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n\n  // ===== Row Templates =====\n\n  /** Whether to use custom row template. If true, you should define a matRowDef. */\n  @Input({ transform: booleanAttribute }) useContentRowTemplate = false;\n  // TODO: It can't use together with `useContentRowTemplate`\n  @Input({ transform: booleanAttribute }) useContentHeaderRowTemplate = false;\n  // TODO: It's not working\n  @Input({ transform: booleanAttribute }) useContentFooterRowTemplate = false;\n\n  // ===== Summary =====\n\n  /** Whether to show the summary. */\n  @Input({ transform: booleanAttribute }) showSummary = false;\n  /** The template for the summary. */\n  @Input() summaryTemplate!: TemplateRef<any> | MtxGridCellTemplate;\n\n  // TODO: Summary display conditions\n  get _whetherShowSummary() {\n    return this.showSummary;\n  }\n\n  // ===== Side Bar =====\n\n  /** Whether to show the sidebar. */\n  @Input({ transform: booleanAttribute }) showSidebar = false;\n  /** The template for the sidebar. */\n  @Input() sidebarTemplate!: TemplateRef<any>;\n\n  // ===== Status Bar =====\n\n  /** Whether to show the status bar. */\n  @Input({ transform: booleanAttribute }) showStatusbar = false;\n  /** The template for the status bar. */\n  @Input() statusbarTemplate!: TemplateRef<any>;\n\n  /** The changed record of row data. */\n  rowChangeRecord?: KeyValueChangeRecord<string, any>;\n\n  constructor(\n    private _utils: MtxGridUtils,\n    private _changeDetectorRef: ChangeDetectorRef,\n    @Optional()\n    @Inject(MTX_GRID_DEFAULT_OPTIONS)\n    private _defaultOptions?: MtxGridDefaultOptions\n  ) {}\n\n  detectChanges() {\n    this._changeDetectorRef.detectChanges();\n  }\n\n  _getColData(data: any[], colDef: MtxGridColumn) {\n    return this._utils.getColData(data, colDef);\n  }\n\n  _isColumnHide(item: MtxGridColumn) {\n    return item.hide !== undefined ? item.hide : item.show !== undefined ? !item.show : false;\n  }\n\n  // Waiting for async data\n  ngOnChanges(changes: SimpleChanges) {\n    this._countPinnedPosition();\n\n    this.displayedColumns = this.columns\n      .filter(item => !this._isColumnHide(item))\n      .map(item => item.field);\n\n    if (this.showColumnMenuButton) {\n      this.columns.forEach(item => {\n        item.hide = this._isColumnHide(item);\n        item.show = !item.hide;\n      });\n    }\n\n    if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n      this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n    }\n\n    // We should copy each item of data for expansion data\n    if (this.expandable) {\n      this.expansionRowStates = []; // reset\n\n      this.data?.forEach(_ => {\n        this.expansionRowStates.push({ expanded: false });\n      });\n    }\n\n    if (this.rowSelectable) {\n      this.rowSelection = new SelectionModel<any>(this.multiSelectable, this.rowSelected);\n    }\n\n    this.dataSource = new MatTableDataSource(this.data);\n\n    this.dataSource.paginator = this.pageOnFront ? this.paginator : null;\n    this.dataSource.sort = this.sortOnFront ? this.sort : null;\n\n    // Only scroll top with data change\n    if (changes.data) {\n      this.scrollTop(0);\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.pageOnFront) {\n      this.dataSource.paginator = this.paginator;\n    }\n\n    if (this.sortOnFront) {\n      this.dataSource.sort = this.sort;\n    }\n\n    if (this.rowDefs?.length > 0 && this.useContentRowTemplate) {\n      this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\n    }\n    if (this.headerRowDefs?.length > 0 && this.useContentHeaderRowTemplate) {\n      this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\n    }\n    if (this.footerRowDefs?.length > 0 && this.useContentFooterRowTemplate) {\n      this.footerRowDefs.forEach(footerRowDef => this.table.addFooterRowDef(footerRowDef));\n    }\n  }\n\n  ngOnDestroy() {}\n\n  _countPinnedPosition() {\n    const count = (acc: number, cur: MtxGridColumn) => acc + parseFloat(cur.width || '80px');\n\n    const pinnedLeftCols = this.columns.filter(col => col.pinned && col.pinned === 'left');\n    pinnedLeftCols.forEach((item, idx) => {\n      item.left = pinnedLeftCols.slice(0, idx).reduce(count, 0) + 'px';\n    });\n\n    const pinnedRightCols = this.columns\n      .filter(col => col.pinned && col.pinned === 'right')\n      .reverse();\n    pinnedRightCols.forEach((item, idx) => {\n      item.right = pinnedRightCols.slice(0, idx).reduce(count, 0) + 'px';\n    });\n  }\n\n  _getIndex(index: number | undefined, dataIndex: number) {\n    return index === undefined ? dataIndex : index;\n  }\n\n  _onSortChange(sort: Sort) {\n    this.sortChange.emit(sort);\n  }\n\n  _onRowDataChange(record: KeyValueChangeRecord<string, any>) {\n    this.rowChangeRecord = record;\n    this._changeDetectorRef.markForCheck();\n  }\n\n  /** Expansion change event */\n  _onExpansionChange(\n    expansionRef: MtxGridExpansionToggle,\n    rowData: Record<string, any>,\n    column: MtxGridColumn,\n    index: number\n  ) {\n    this.expansionChange.emit({ expanded: expansionRef.expanded, data: rowData, index, column });\n  }\n\n  /** Cell select event */\n  _selectCell(\n    cellRef: MtxGridSelectableCell,\n    rowData: Record<string, any>,\n    colDef: MtxGridColumn\n  ): void {\n    // If not the same cell\n    if (this._selectedCell !== cellRef) {\n      const colValue = this._utils.getCellValue(rowData, colDef);\n      this.cellSelection = []; // reset\n      this.cellSelection.push({ cellData: colValue, rowData, colDef });\n\n      this.cellSelectedChange.emit(this.cellSelection);\n\n      if (this._selectedCell) {\n        this._selectedCell.deselect(); // the selectedCell will be undefined\n      }\n    }\n\n    this._selectedCell = cellRef.selected ? cellRef : undefined;\n  }\n\n  /** Row select event */\n  _selectRow(event: MouseEvent, rowData: Record<string, any>, index: number) {\n    if (\n      this.rowSelectable &&\n      !this.rowSelectionFormatter.disabled?.(rowData, index) &&\n      !this.rowSelectionFormatter.hideCheckbox?.(rowData, index) &&\n      !this.disableRowClickSelection\n    ) {\n      // metaKey -> command key\n      if (!this.multiSelectionWithClick && !event.ctrlKey && !event.metaKey) {\n        this.rowSelection.clear();\n      }\n\n      this._toggleNormalCheckbox(rowData);\n    }\n\n    this.rowClick.emit({ event, rowData, index });\n  }\n\n  /** Whether the number of selected elements matches the total number of rows. */\n  _isAllSelected() {\n    const numSelected = this.rowSelection.selected.length;\n    const numRows = this.dataSource.data.filter(\n      (row, index) => !this.rowSelectionFormatter.disabled?.(row, index)\n    ).length;\n    return numSelected === numRows;\n  }\n\n  /** Select all rows if they are not all selected; otherwise clear selection. */\n  _toggleMasterCheckbox() {\n    this._isAllSelected()\n      ? this.rowSelection.clear()\n      : this.dataSource.data.forEach((row, index) => {\n          if (!this.rowSelectionFormatter.disabled?.(row, index)) {\n            this.rowSelection.select(row);\n          }\n        });\n    this.rowSelectedChange.emit(this.rowSelection.selected);\n  }\n\n  /** Select normal row */\n  _toggleNormalCheckbox(row: Record<string, any>) {\n    this.rowSelection.toggle(row);\n    this.rowSelectedChange.emit(this.rowSelection.selected);\n  }\n\n  /** Column change event */\n  _onColumnChange(columns: MtxGridColumn[]) {\n    this.columnChange.emit(columns);\n\n    this.displayedColumns = Object.assign([], this.getDisplayedColumnFields(columns));\n\n    if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n      this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n    }\n  }\n\n  getDisplayedColumnFields(columns: MtxGridColumn[]): string[] {\n    const fields = columns\n      .filter(item => (this.columnHideableChecked === 'show' ? item.show : !item.hide))\n      .map(item => item.field);\n    return fields;\n  }\n\n  /** Customize expansion event */\n  toggleExpansion(index: number) {\n    if (!this.expandable) {\n      throw new Error('The `expandable` should be set true.');\n    }\n    this.expansionRowStates[index].expanded = !this.expansionRowStates[index].expanded;\n    return this.expansionRowStates[index].expanded;\n  }\n\n  /** Scroll to top when turn to the next page. */\n  _onPage(e: PageEvent) {\n    if (this.pageOnFront) {\n      this.scrollTop(0);\n    }\n    this.page.emit(e);\n  }\n\n  scrollTop(value?: number): number | void {\n    if (value == null) {\n      return this.tableContainer?.nativeElement.scrollTop;\n    }\n    if (this.tableContainer && !this.loading) {\n      this.tableContainer.nativeElement.scrollTop = value;\n    }\n  }\n\n  scrollLeft(value?: number): number | void {\n    if (value == null) {\n      return this.tableContainer?.nativeElement.scrollLeft;\n    }\n    if (this.tableContainer && !this.loading) {\n      this.tableContainer.nativeElement.scrollLeft = value;\n    }\n  }\n\n  _contextmenu(event: MouseEvent, rowData: Record<string, any>, index: number) {\n    this.rowContextMenu.emit({ event, rowData, index });\n  }\n}\n","<!-- Progress bar-->\n@if (loading) {\n  <div class=\"mtx-grid-progress\">\n    <mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\n  </div>\n}\n\n<!-- Toolbar -->\n@if (showToolbar) {\n  <div class=\"mtx-grid-toolbar\">\n    <div class=\"mtx-grid-toolbar-content\">\n      @if (toolbarTemplate) {\n        <ng-template [ngTemplateOutlet]=\"toolbarTemplate\"></ng-template>\n      } @else {\n        @if (toolbarTitle) {\n          <div class=\"mtx-grid-toolbar-title\">{{toolbarTitle}}</div>\n        }\n      }\n    </div>\n    <div class=\"mtx-grid-toolbar-actions\">\n      @if (showColumnMenuButton) {\n        <mtx-grid-column-menu #columnMenu\n          [columns]=\"columns\"\n          [buttonText]=\"columnMenuButtonText\"\n          [buttonType]=\"columnMenuButtonType\"\n          [buttonColor]=\"columnMenuButtonColor\"\n          [buttonClass]=\"columnMenuButtonClass\"\n          [buttonIcon]=\"columnMenuButtonIcon\"\n          [selectable]=\"columnHideable\"\n          [selectableChecked]=\"columnHideableChecked\"\n          [sortable]=\"columnSortable\"\n          [pinnable]=\"columnPinnable\"\n          [showHeader]=\"showColumnMenuHeader\"\n          [headerText]=\"columnMenuHeaderText\"\n          [headerTemplate]=\"columnMenuHeaderTemplate\"\n          [showFooter]=\"showColumnMenuFooter\"\n          [footerText]=\"columnMenuFooterText\"\n          [footerTemplate]=\"columnMenuFooterTemplate\"\n          [pinOptions]=\"columnPinOptions\"\n          (columnChange)=\"_onColumnChange($event)\">\n        </mtx-grid-column-menu>\n      }\n    </div>\n  </div>\n}\n\n<div class=\"mtx-grid-main mtx-grid-layout\">\n  <!-- Table content -->\n  <div class=\"mtx-grid-content mtx-grid-layout\">\n    <div #tableContainer class=\"mat-table-container\" [class.mat-table-with-data]=\"!_hasNoResult\">\n      @if (!columnResizable) {\n        <table mat-table\n          [class]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\n          [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\n          matSort\n          [matSortActive]=\"sortActive\"\n          [matSortDirection]=\"sortDirection\"\n          [matSortDisableClear]=\"sortDisableClear\"\n          [matSortDisabled]=\"sortDisabled\"\n          [matSortStart]=\"sortStart\"\n          (matSortChange)=\"_onSortChange($event)\"\n          [trackBy]=\"trackBy\">\n          @if (rowSelectable && !hideRowSelectionCheckbox) {\n            <ng-container matColumnDef=\"MtxGridCheckboxColumnDef\">\n              <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\n                @if (multiSelectable) {\n                  <mat-checkbox\n                    [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\n                    [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\n                    (change)=\"$event ? _toggleMasterCheckbox() : null\">\n                  </mat-checkbox>\n                }\n              </th>\n              <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n                class=\"mtx-grid-checkbox-cell\">\n                @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\n                  <mat-checkbox\n                    [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\n                    [checked]=\"rowSelection.isSelected(row)\"\n                    (click)=\"$event.stopPropagation()\"\n                    (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\n                  </mat-checkbox>\n                }\n              </td>\n              <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\n            </ng-container>\n          }\n          @for (col of columns; track col) {\n            <ng-container [matColumnDef]=\"col.field\"\n              [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n              <th mat-header-cell *matHeaderCellDef\n                [class]=\"col | colClass\"\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\n                <div class=\"mat-header-cell-inner\">\n                  @if (headerTemplate | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)\"\n                      [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\n                      <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)[col.field]\"\n                        [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n                      </ng-template>\n                    } @else {\n                      <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n                        [disabled]=\"!col.sortable\"\n                        [disableClear]=\"col.sortProp?.disableClear ?? sortDisableClear\"\n                        [arrowPosition]=\"col.sortProp?.arrowPosition!\"\n                        [start]=\"col.sortProp?.start!\">\n                        @if (col.showExpand) {\n                          <span class=\"mtx-grid-expansion-placeholder\"></span>\n                        }\n                        <span>{{col.header | toObservable | async}}</span>\n                        @if (col.sortable) {\n                          <svg class=\"mtx-grid-icon mat-sort-header-icon\" viewBox=\"0 0 24 24\"\n                            width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                            <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\" />\n                          </svg>\n                        }\n                      </div>\n                      <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\n                        [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\n                      </ng-template>\n                    }\n                  }\n                </div>\n              </th>\n              <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n                [class]=\"col | colClass: row: rowChangeRecord: rowChangeRecord?.currentValue\"\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\"\n                mtx-grid-selectable-cell [cellSelectable]=\"cellSelectable\"\n                (cellSelectedChange)=\"_selectCell($event, row, col)\">\n                @if (cellTemplate | isTemplateRef) {\n                  <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                  </ng-template>\n                } @else {\n                  @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)[col.field]\"\n                      [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    @if (col.cellTemplate) {\n                      <ng-template\n                        [ngTemplateOutlet]=\"col.cellTemplate!\"\n                        [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                      </ng-template>\n                    } @else {\n                      @if (col.showExpand) {\n                        <button class=\"mtx-grid-row-expand-button\"\n                          mat-icon-button mtx-grid-expansion-toggle type=\"button\"\n                          [(opened)]=\"expansionRowStates[dataIndex].expanded\"\n                          (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\n                          <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\n                            width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                            <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n                          </svg>\n                        </button>\n                      }\n                      <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\"\n                        (rowDataChange)=\"_onRowDataChange($event)\"></mtx-grid-cell>\n                    }\n                  }\n                }\n              </td>\n              <td mat-footer-cell *matFooterCellDef\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'min-width': col.width, 'left': col.left, 'right': col.right}\">\n                @if (col.showExpand) {\n                  <span class=\"mtx-grid-expansion-placeholder\"></span>\n                }\n                @if (summaryTemplate | isTemplateRef) {\n                  <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\n                  </ng-template>\n                } @else {\n                  @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)[col.field]\"\n                      [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\n                      [placeholder]=\"emptyValuePlaceholder\"></mtx-grid-cell>\n                  }\n                }\n              </td>\n            </ng-container>\n          }\n          @if (!useContentHeaderRowTemplate) {\n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n          }\n          @if (!useContentRowTemplate) {\n            <tr mat-row\n              *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n              [class]=\"row | rowClass: index: dataIndex: rowClassFormatter\"\n              [class.selected]=\"rowSelection.isSelected(row)\"\n              (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\"\n              (contextmenu)=\"_contextmenu($event, row, _getIndex(index, dataIndex))\">\n            </tr>\n          }\n          @if (_whetherShowSummary) {\n            <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\n          }\n          @if (expandable) {\n            <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\n            <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\n              <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\n                [attr.colspan]=\"displayedColumns.length\">\n                <div class=\"mtx-grid-expansion-detail\"\n                  [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\n                  <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\n                    [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\n                  </ng-template>\n                </div>\n              </td>\n            </ng-container>\n            <tr mat-row\n              *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\n              class=\"mtx-grid-expansion\"\n              [class]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\n            </tr>\n          }\n        </table>\n      } @else {\n        <!-- TODO: Use flexbox-based mat-table -->\n        <table mat-table\n          columnResize\n          [class]=\"{'mat-table-hover': rowHover, 'mat-table-striped': rowStriped, 'mat-table-expandable': expandable}\"\n          [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"expandable\"\n          matSort\n          [matSortActive]=\"sortActive\"\n          [matSortDirection]=\"sortDirection\"\n          [matSortDisableClear]=\"sortDisableClear\"\n          [matSortDisabled]=\"sortDisabled\"\n          [matSortStart]=\"sortStart\"\n          (matSortChange)=\"_onSortChange($event)\"\n          [trackBy]=\"trackBy\">\n          @if (rowSelectable && !hideRowSelectionCheckbox) {\n            <ng-container matColumnDef=\"MtxGridCheckboxColumnDef\">\n              <th mat-header-cell *matHeaderCellDef class=\"mtx-grid-checkbox-cell\">\n                @if (multiSelectable) {\n                  <mat-checkbox\n                    [checked]=\"rowSelection.hasValue() && _isAllSelected()\"\n                    [indeterminate]=\"rowSelection.hasValue() && !_isAllSelected()\"\n                    (change)=\"$event ? _toggleMasterCheckbox() : null\">\n                  </mat-checkbox>\n                }\n              </th>\n              <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n                class=\"mtx-grid-checkbox-cell\">\n                @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\n                  <mat-checkbox\n                    [disabled]=\"rowSelectionFormatter.disabled && rowSelectionFormatter.disabled(row, _getIndex(index, dataIndex))\"\n                    [checked]=\"rowSelection.isSelected(row)\"\n                    (click)=\"$event.stopPropagation()\"\n                    (change)=\"$event ? _toggleNormalCheckbox(row) : null\">\n                  </mat-checkbox>\n                }\n              </td>\n              <td mat-footer-cell *matFooterCellDef class=\"mtx-grid-checkbox-cell\"></td>\n            </ng-container>\n          }\n          @for (col of columns; track col) {\n            <ng-container [matColumnDef]=\"col.field\"\n              [sticky]=\"col.pinned==='left'\" [stickyEnd]=\"col.pinned==='right'\">\n              <th mat-header-cell *matHeaderCellDef\n                [class]=\"col | colClass\"\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\n                [resizable]=\"col.resizable\"\n                [matResizableMinWidthPx]=\"col.minWidth\" [matResizableMaxWidthPx]=\"col.maxWidth\">\n                <div class=\"mat-header-cell-inner\">\n                  @if (headerTemplate | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)\"\n                      [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\n                      <ng-template [ngTemplateOutlet]=\"$any(headerTemplate)[col.field]\"\n                        [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n                      </ng-template>\n                    } @else {\n                      <div [mat-sort-header]=\"col.sortProp?.id || col.field\"\n                        [disabled]=\"!col.sortable\"\n                        [disableClear]=\"col.sortProp?.disableClear ?? sortDisableClear\"\n                        [arrowPosition]=\"col.sortProp?.arrowPosition!\"\n                        [start]=\"col.sortProp?.start!\">\n                        @if (col.showExpand) {\n                          <span class=\"mtx-grid-expansion-placeholder\"></span>\n                        }\n                        <span>{{col.header | toObservable | async}}</span>\n                        @if (col.sortable) {\n                          <svg class=\"mtx-grid-icon mat-sort-header-icon\" viewBox=\"0 0 24 24\"\n                            width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                            <path d=\"M3,13H15V11H3M3,6V8H21V6M3,18H9V16H3V18Z\" />\n                          </svg>\n                        }\n                      </div>\n                      <ng-template [ngTemplateOutlet]=\"headerExtraTplBase\"\n                        [ngTemplateOutletContext]=\"{ $implicit: headerExtraTemplate, colDef: col }\">\n                      </ng-template>\n                    }\n                  }\n                </div>\n              </th>\n              <td mat-cell *matCellDef=\"let row; let index = index; let dataIndex = dataIndex;\"\n                [class]=\"col | colClass: row: rowChangeRecord :rowChangeRecord?.currentValue\"\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'left': col.left, 'right': col.right}\"\n                mtx-grid-selectable-cell [cellSelectable]=\"cellSelectable\"\n                (cellSelectedChange)=\"_selectCell($event, row, col)\">\n                @if (cellTemplate | isTemplateRef) {\n                  <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                  </ng-template>\n                } @else {\n                  @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(cellTemplate)[col.field]\"\n                      [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    @if (col.cellTemplate) {\n                      <ng-template\n                        [ngTemplateOutlet]=\"col.cellTemplate!\"\n                        [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: _getIndex(index, dataIndex), colDef: col }\">\n                      </ng-template>\n                    } @else {\n                      @if (col.showExpand) {\n                        <button class=\"mtx-grid-row-expand-button\"\n                          mat-icon-button mtx-grid-expansion-toggle type=\"button\"\n                          [(opened)]=\"expansionRowStates[dataIndex].expanded\"\n                          (toggleChange)=\"_onExpansionChange($event, row, col, dataIndex);\">\n                          <svg class=\"mtx-grid-icon mtx-grid-row-expand-icon\" viewBox=\"0 0 24 24\"\n                            width=\"24px\" height=\"24px\" fill=\"currentColor\" focusable=\"false\">\n                            <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n                          </svg>\n                        </button>\n                      }\n                      <mtx-grid-cell [rowData]=\"row\" [colDef]=\"col\" [placeholder]=\"emptyValuePlaceholder\"\n                        (rowDataChange)=\"_onRowDataChange($event)\"></mtx-grid-cell>\n                    }\n                  }\n                }\n              </td>\n              <td mat-footer-cell *matFooterCellDef\n                [class.mat-table-sticky-left]=\"col.pinned === 'left'\"\n                [class.mat-table-sticky-right]=\"col.pinned === 'right'\"\n                [style]=\"{'width': col.width, 'left': col.left, 'right': col.right}\">\n                @if (col.showExpand) {\n                  <span class=\"mtx-grid-expansion-placeholder\"></span>\n                }\n                @if (summaryTemplate | isTemplateRef) {\n                  <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)\"\n                    [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col, data: data }\">\n                  </ng-template>\n                } @else {\n                  @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\n                    <ng-template [ngTemplateOutlet]=\"$any(summaryTemplate)[col.field]\"\n                      [ngTemplateOutletContext]=\"{ $implicit: _getColData(data, col), colData: _getColData(data, col), colDef: col }\">\n                    </ng-template>\n                  } @else {\n                    <mtx-grid-cell [summary]=\"true\" [data]=\"data\" [colDef]=\"col\"\n                      [placeholder]=\"emptyValuePlaceholder\"></mtx-grid-cell>\n                  }\n                }\n              </td>\n            </ng-container>\n          }\n          @if (!useContentHeaderRowTemplate) {\n            <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n          }\n          @if (!useContentRowTemplate) {\n            <tr mat-row\n              *matRowDef=\"let row; let index = index; let dataIndex = dataIndex; columns: displayedColumns;\"\n              [class]=\"row | rowClass: index: dataIndex: rowClassFormatter\"\n              [class.selected]=\"rowSelection.isSelected(row)\"\n              (click)=\"_selectRow($event, row, _getIndex(index, dataIndex))\"\n              (contextmenu)=\"_contextmenu($event, row, _getIndex(index, dataIndex))\">\n            </tr>\n          }\n          @if (_whetherShowSummary) {\n            <tr mat-footer-row *matFooterRowDef=\"displayedColumns; sticky: true\"></tr>\n          }\n          @if (expandable) {\n            <!-- Expanded Content Column - The expandable row is made up of this one column that spans across all columns -->\n            <ng-container matColumnDef=\"MtxGridExpansionColumnDef\">\n              <td mat-cell *matCellDef=\"let row; let dataIndex = dataIndex\"\n                [attr.colspan]=\"displayedColumns.length\">\n                <div class=\"mtx-grid-expansion-detail\"\n                  [@expansion]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\n                  <ng-template [ngTemplateOutlet]=\"expansionTemplate\"\n                    [ngTemplateOutletContext]=\"{ $implicit: row, rowData: row, index: dataIndex, expanded: expansionRowStates[dataIndex].expanded }\">\n                  </ng-template>\n                </div>\n              </td>\n            </ng-container>\n            <tr mat-row\n              *matRowDef=\"let row; columns: ['MtxGridExpansionColumnDef']; let dataIndex = dataIndex\"\n              class=\"mtx-grid-expansion\"\n              [class]=\"expansionRowStates[dataIndex].expanded ? 'expanded' : 'collapsed'\">\n            </tr>\n          }\n        </table>\n      }\n    </div>\n\n    <!-- No result -->\n    @if (_hasNoResult) {\n      <div class=\"mtx-grid-no-result\">\n        @if (noResultTemplate) {\n          <ng-template [ngTemplateOutlet]=\"noResultTemplate\"></ng-template>\n        } @else {\n          {{noResultText}}\n        }\n      </div>\n    }\n  </div>\n\n  <!-- Tool sidebar -->\n  @if (showSidebar) {\n    <div class=\"mtx-grid-sidebar\">\n      @if (sidebarTemplate) {\n        <ng-template [ngTemplateOutlet]=\"sidebarTemplate\"></ng-template>\n      }\n    </div>\n  }\n</div>\n\n<div class=\"mtx-grid-footer\">\n  <!-- Status Bar -->\n  @if (showStatusbar) {\n    <div class=\"mtx-grid-statusbar\">\n      @if (statusbarTemplate) {\n        <ng-template [ngTemplateOutlet]=\"statusbarTemplate\"></ng-template>\n      }\n    </div>\n  }\n\n  <!-- Pagination -->\n  <div class=\"mtx-grid-pagination\">\n    @if (paginationTemplate) {\n      <ng-template [ngTemplateOutlet]=\"paginationTemplate\"></ng-template>\n    } @else {\n      <mat-paginator [class.mat-paginator-hidden]=\"!showPaginator\"\n        [showFirstLastButtons]=\"showFirstLastButtons\"\n        [length]=\"length\"\n        [pageIndex]=\"pageIndex\"\n        [pageSize]=\"pageSize\"\n        [pageSizeOptions]=\"pageSizeOptions\"\n        [hidePageSize]=\"hidePageSize\"\n        (page)=\"_onPage($event)\"\n        [disabled]=\"pageDisabled\">\n      </mat-paginator>\n    }\n  </div>\n</div>\n\n<!-- Header template for extra content -->\n<ng-template #headerExtraTplBase let-headerExtraTemplate let-col=\"colDef\">\n  @if (headerExtraTemplate | isTemplateRef) {\n    <ng-template [ngTemplateOutlet]=\"headerExtraTemplate\"\n      [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n    </ng-template>\n  } @else {\n    @if ($any(headerExtraTemplate)?.[col.field] | isTemplateRef) {\n      <ng-template [ngTemplateOutlet]=\"headerExtraTemplate[col.field]\"\n        [ngTemplateOutletContext]=\"{ $implicit: col, colDef: col }\">\n      </ng-template>\n    }\n  }\n</ng-template>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatColumnResizeModule } from './column-resize/column-resize-module';\n\nimport { MtxPipesModule } from '@ng-matero/extensions/core';\nimport { MtxDialogModule } from '@ng-matero/extensions/dialog';\nimport { MtxGridCell } from './cell';\nimport { MtxGridColumnMenu } from './column-menu';\nimport { MtxGridExpansionToggle } from './expansion-toggle';\nimport { MtxGrid } from './grid';\nimport {\n  MtxGridCellActionBadgePipe,\n  MtxGridCellActionDisablePipe,\n  MtxGridCellActionTooltipPipe,\n  MtxGridCellActionsPipe,\n  MtxGridCellSummaryPipe,\n  MtxGridColClassPipe,\n  MtxGridRowClassPipe,\n} from './grid-pipes';\nimport { MtxGridUtils } from './grid-utils';\nimport { MtxGridSelectableCell } from './selectable-cell';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    MatTableModule,\n    MatSortModule,\n    MatPaginatorModule,\n    MatCheckboxModule,\n    MatButtonModule,\n    MatProgressBarModule,\n    MatChipsModule,\n    MatTooltipModule,\n    MatBadgeModule,\n    MatIconModule,\n    MatSelectModule,\n    MatFormFieldModule,\n    MatMenuModule,\n    DragDropModule,\n    MtxDialogModule,\n    MtxPipesModule,\n    MatColumnResizeModule,\n    MtxGrid,\n    MtxGridCell,\n    MtxGridColumnMenu,\n    MtxGridExpansionToggle,\n    MtxGridSelectableCell,\n    MtxGridRowClassPipe,\n    MtxGridColClassPipe,\n    MtxGridCellActionsPipe,\n    MtxGridCellActionTooltipPipe,\n    MtxGridCellActionBadgePipe,\n    MtxGridCellActionDisablePipe,\n    MtxGridCellSummaryPipe,\n  ],\n  exports: [\n    MatColumnResizeModule,\n    MtxGrid,\n    MtxGridCell,\n    MtxGridColumnMenu,\n    MtxGridExpansionToggle,\n    MtxGridSelectableCell,\n    MtxGridRowClassPipe,\n    MtxGridColClassPipe,\n    MtxGridCellActionsPipe,\n    MtxGridCellActionTooltipPipe,\n    MtxGridCellActionBadgePipe,\n    MtxGridCellActionDisablePipe,\n    MtxGridCellSummaryPipe,\n  ],\n  providers: [MtxGridUtils],\n})\nexport class MtxGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.MtxGridUtils","i2.MtxGridUtils"],"mappings":"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"}