{"version":3,"file":"tstdl-angular-data-grid.mjs","sources":["../../../../projects/tstdl/angular/data-grid/source/directives/grid-content.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-label.directive.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-value.directive.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-item.directive.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-column.directive.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-header-item.directive.ts","../../../../projects/tstdl/angular/data-grid/source/directives/grid-row.directive.ts","../../../../projects/tstdl/angular/data-grid/source/models/data-grid-options.ts","../../../../projects/tstdl/angular/data-grid/source/components/grid-label/grid-label.component.ts","../../../../projects/tstdl/angular/data-grid/source/components/grid-label/grid-label.component.html","../../../../projects/tstdl/angular/data-grid/source/components/grid-value/grid-value.component.ts","../../../../projects/tstdl/angular/data-grid/source/components/grid-value/grid-value.component.html","../../../../projects/tstdl/angular/data-grid/source/components/data-grid/data-grid.component.ts","../../../../projects/tstdl/angular/data-grid/source/components/data-grid/data-grid.component.html","../../../../projects/tstdl/angular/data-grid/source/data-grid.module.ts","../../../../projects/tstdl/angular/data-grid/tstdl-angular-data-grid.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport type { GridColumnDirective } from './grid-column.directive';\nimport type { GridItemDirective } from './grid-item.directive';\nimport type { GridRowDirective } from './grid-row.directive';\n\nexport const GRID_CONTENT = new InjectionToken<GridItemDirective | GridRowDirective | GridColumnDirective>('GridContent');\n","import { Directive, Inject, Optional, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[gridLabel]',\n  exportAs: 'gridLabel',\n  standalone: true\n})\nexport class GridLabelDirective {\n  readonly templateRef: TemplateRef<void> | null;\n\n  constructor(@Inject(TemplateRef) @Optional() templateRef: TemplateRef<void> | null) {\n    this.templateRef = templateRef;\n  }\n}\n","import { Directive, Inject, Optional, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[gridValue]',\n  exportAs: 'gridValue',\n  standalone: true\n})\nexport class GridValueDirective {\n  readonly templateRef: TemplateRef<void> | null;\n\n  constructor(@Inject(TemplateRef) @Optional() templateRef: TemplateRef<void> | null) {\n    this.templateRef = templateRef;\n  }\n}\n","import { ContentChild, Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport type { DynamicText } from '@tstdl/base/text';\nimport type { Enumeration } from '@tstdl/base/types';\nimport type { GridValue } from '../models/grid-value';\nimport type { GridValueType } from '../models/grid-value-type';\nimport { GRID_CONTENT } from './grid-content';\nimport { GridLabelDirective } from './grid-label.directive';\nimport { GridValueDirective } from './grid-value.directive';\nimport { isString } from '@tstdl/base/utils';\n\n@Directive({\n  selector: '[gridItem]',\n  exportAs: 'gridItem',\n  standalone: true,\n  providers: [\n    { provide: GRID_CONTENT, useExisting: GridItemDirective }\n  ]\n})\nexport class GridItemDirective {\n  private readonly templateRef: TemplateRef<void> | null;\n\n  @Input() label: DynamicText | null | undefined;\n  @Input() value: GridValue | null | undefined;\n  @Input() valueType: GridValueType | null | undefined;\n  @Input() enum: Enumeration | null | undefined;\n  @Input() nullValue: GridValue | null | undefined;\n  @Input() suffix: string | null | undefined;\n  @Input() colSpan: number | null | undefined;\n  @Input() rowSpan: number | null | undefined;\n  @Input() booleanTrueText: DynamicText | null | undefined;\n  @Input() booleanFalseText: DynamicText | null | undefined;\n  @Input() noValueText: DynamicText | null | undefined;\n\n  @ContentChild(GridLabelDirective) labelRef: GridLabelDirective | null | undefined;\n  @ContentChild(GridValueDirective) valueRef: GridValueDirective | null | undefined;\n\n  @Input()\n  set gridItem(label: DynamicText | null | undefined) {\n    this.label = (isString(label) && (label.length == 0)) ? null : label;\n  }\n\n  get labelTemplateRef(): TemplateRef<void> | null | undefined {\n    return this.labelRef?.templateRef;\n  }\n\n  get valueTemplateRef(): TemplateRef<void> | null | undefined {\n    return this.templateRef ?? this.valueRef?.templateRef;\n  }\n\n  constructor(@Inject(TemplateRef) @Optional() templateRef: TemplateRef<void> | null) {\n    this.templateRef = templateRef;\n  }\n}\n","import { ContentChildren, Directive, QueryList } from '@angular/core';\nimport { GRID_CONTENT } from './grid-content';\nimport { GridItemDirective } from './grid-item.directive';\n\n@Directive({\n  selector: '[gridColumn]',\n  exportAs: 'gridColumn',\n  standalone: true,\n  providers: [\n    { provide: GRID_CONTENT, useExisting: GridColumnDirective }\n  ]\n})\nexport class GridColumnDirective {\n  @ContentChildren(GridItemDirective) items: QueryList<GridItemDirective>;\n}\n","import { Directive, Inject, Input, Optional, TemplateRef } from '@angular/core';\nimport type { DynamicText } from '@tstdl/base/text';\nimport type { Enumeration } from '@tstdl/base/types';\n\n@Directive({\n  selector: '[gridHeaderItem]',\n  exportAs: 'gridHeaderItem',\n  standalone: true\n})\nexport class GridHeaderItemDirective {\n  readonly templateRef: TemplateRef<void> | null;\n\n  @Input() label: DynamicText | null | undefined;\n  @Input() enum: Enumeration | null | undefined;\n\n  constructor(@Inject(TemplateRef) @Optional() templateRef: TemplateRef<void> | null) {\n    this.templateRef = templateRef;\n  }\n}\n","import { ContentChildren, Directive, QueryList } from '@angular/core';\nimport { GRID_CONTENT } from './grid-content';\nimport { GridItemDirective } from './grid-item.directive';\n\n@Directive({\n  selector: '[gridRow]',\n  exportAs: 'gridRow',\n  standalone: true,\n  providers: [\n    { provide: GRID_CONTENT, useExisting: GridRowDirective }\n  ]\n})\nexport class GridRowDirective {\n  @ContentChildren(GridItemDirective) items: QueryList<GridItemDirective>;\n}\n","import type { Provider } from '@angular/core';\nimport type { DynamicText } from '@tstdl/base/text';\n\nexport class DataGridOptions {\n  booleanTrueText?: DynamicText;\n  booleanFalseText?: DynamicText;\n  noValueText?: DynamicText;\n  itemColumns?: number;\n}\n\nexport function provideDataGridOptions(options: DataGridOptions): Provider {\n  return { provide: DataGridOptions, useValue: options };\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { TemplateRef } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { DynamicTextPipe, LocalizeEnumPipe } from '@tstdl/angular';\nimport type { DynamicText } from '@tstdl/base/text';\nimport type { Enumeration } from '@tstdl/base/types';\n\n@Component({\n  selector: 'tsl-grid-label',\n  imports: [NgTemplateOutlet, DynamicTextPipe, LocalizeEnumPipe],\n  templateUrl: './grid-label.component.html',\n  styleUrls: ['./grid-label.component.scss'],\n  changeDetection: ChangeDetectionStrategy.Default,\n  host: {\n    class: 'leading-4 font-semibold'\n  }\n})\nexport class GridLabelComponent {\n  @Input() label: DynamicText | null | undefined;\n  @Input() enum: Enumeration | null | undefined;\n  @Input() templateRef: TemplateRef<void> | null | undefined;\n  @Input() colon: boolean;\n\n  constructor(_changeDetector: ChangeDetectorRef) {\n    this.colon = false;\n  }\n}\n","@if (templateRef) {\n  <ng-container [ngTemplateOutlet]=\"templateRef\" />\n}\n\n@if (label != undefined) {\n  {{ label | dynamicText }} {{ colon ? \":\" : \"\" }}\n} @else {\n  @if (enum) {\n    {{ enum | localizeEnum }} {{ colon ? \":\" : \"\" }}\n  }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport type { OnChanges } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DateTimeLocalePipe, DynamicTextPipe, LocalizeEnumPipe, NumberLocalePipe, NumericDateToDateTimePipe, NumericTimeToDateTimePipe } from '@tstdl/angular';\nimport type { DynamicText } from '@tstdl/base/text';\nimport { isBoolean, isDate, isNotNullOrUndefined, isNullOrUndefined, isNumber, isString } from '@tstdl/base/utils';\nimport { DateTime, Duration } from 'luxon';\nimport type { GridItemDirective } from '../../directives/grid-item.directive';\nimport type { GridValue, GridValueType } from '../../models';\n\nconst dateShort: Intl.DateTimeFormatOptions = {\n  year: 'numeric',\n  month: '2-digit',\n  day: '2-digit'\n};\n\nconst timeShort: Intl.DateTimeFormatOptions = {\n  hour: '2-digit',\n  minute: '2-digit'\n};\n\n@Component({\n  selector: 'tsl-grid-value',\n  imports: [NgTemplateOutlet, DynamicTextPipe, NumberLocalePipe, DateTimeLocalePipe, NumericDateToDateTimePipe, LocalizeEnumPipe, NumericTimeToDateTimePipe],\n  templateUrl: './grid-value.component.html',\n  styleUrls: ['./grid-value.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'leading-4'\n  }\n})\nexport class GridValueComponent implements OnChanges {\n  readonly dateShort = dateShort;\n  readonly timeShort = timeShort;\n\n  actualValue: any;\n  actualValueType: GridValueType | null;\n\n  @Input() item: GridItemDirective | null | undefined;\n  @Input() numberFormat: Intl.NumberFormatOptions | null | undefined;\n  @Input() dateFormat: Intl.DateTimeFormatOptions | null | undefined;\n  @Input() timeFormat: Intl.DateTimeFormatOptions | null | undefined;\n  @Input() booleanTrueText: DynamicText | null | undefined;\n  @Input() booleanFalseText: DynamicText | null | undefined;\n  @Input() noValueText: DynamicText | null | undefined;\n\n  get percentFormat(): Intl.NumberFormatOptions {\n    return { style: 'percent', minimumFractionDigits: 2, ...this.numberFormat };\n  }\n\n  get percentPointFormat(): Intl.NumberFormatOptions {\n    return { style: 'percent', minimumFractionDigits: 2, ...this.numberFormat };\n  }\n\n  get currencyFormat(): Intl.NumberFormatOptions {\n    return { style: 'currency', currency: 'EUR', ...this.numberFormat };\n  }\n\n  ngOnChanges(): void {\n    if (isNullOrUndefined(this.item)) {\n      this.actualValue = null;\n      this.actualValueType = null;\n    }\n    else if (isNullOrUndefined(this.item.value)) {\n      this.actualValue = this.item.nullValue;\n      this.actualValueType = this.getActualValueType(this.item.nullValue);\n    }\n    else {\n      this.actualValue = this.item.value;\n      this.actualValueType = this.item.valueType ?? this.getActualValueType(this.item.value);\n    }\n  }\n\n  private getActualValueType(value: GridValue): GridValueType | null {\n    if (isNullOrUndefined(value) || isNullOrUndefined(this.item)) {\n      return null;\n    }\n\n    if (isNotNullOrUndefined(this.item.enum)) {\n      return 'enum';\n    }\n\n    if (isNumber(value)) {\n      return 'number';\n    }\n\n    if (isString(value)) {\n      return 'text';\n    }\n\n    if ((value instanceof DateTime) || isDate(value)) {\n      return 'date';\n    }\n\n    if (value instanceof Duration) {\n      return 'time';\n    }\n\n    if (isBoolean(value)) {\n      return 'boolean';\n    }\n\n    return null;\n  }\n}\n","@if (item) {\n  @if (item.valueTemplateRef) {\n    <ng-container [ngTemplateOutlet]=\"item.valueTemplateRef\"></ng-container>\n  } @else {\n    @if (actualValueType != undefined) {\n      @if (actualValue != undefined) {\n        @switch (actualValueType) {\n          @case ('plain') {\n            {{ actualValue }}\n          }\n          @case ('text') {\n            {{ actualValue | dynamicText }}\n          }\n          @case ('number') {\n            {{ actualValue | numberLocale: numberFormat }}\n          }\n          @case ('boolean') {\n            {{ (actualValue ?? false) ? (booleanTrueText ?? 'Yes' | dynamicText) : (booleanFalseText ?? 'No' | dynamicText) }}\n          }\n          @case ('percent') {\n            {{ actualValue | numberLocale: percentFormat }}\n          }\n          @case ('percent-point') {\n            {{ actualValue / 100 | numberLocale: percentPointFormat }}\n          }\n          @case ('currency') {\n            {{ actualValue | numberLocale: currencyFormat }}\n          }\n          @case ('date') {\n            {{ actualValue | dateTimeLocale: dateFormat ?? dateShort }}\n          }\n          @case ('numeric-date') {\n            {{ actualValue | numericDateToDateTime | dateTimeLocale: dateFormat ?? dateShort }}\n          }\n          @case ('time') {\n            {{ actualValue | dateTimeLocale: timeFormat ?? timeShort }}\n          }\n          @case ('numeric-time') {\n            {{ actualValue | numericTimeToDateTime | dateTimeLocale: timeFormat ?? timeShort }}\n          }\n          @case ('enum') {\n            @if (item.enum) {\n              {{ actualValue | localizeEnum: item.enum }}\n            } @else {\n              MISSING_ENUM\n            }\n          }\n        }\n      } @else {\n        {{ noValueText ?? 'N/A' | dynamicText }}\n      }\n      @if (item.suffix) {\n        {{ item.suffix }}\n      }\n    } @else {\n      {{ noValueText ?? 'N/A' | dynamicText }}\n    }\n  }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport type { AfterContentInit, OnChanges } from '@angular/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, Inject, Input, Optional, QueryList } from '@angular/core';\nimport { DynamicTextPipe } from '@tstdl/angular';\nimport type { DynamicText } from '@tstdl/base/text';\nimport type { Record } from '@tstdl/base/types';\nimport { isDefined } from '@tstdl/base/utils';\nimport { createArray } from '@tstdl/base/utils/array';\nimport { merge, startWith, switchMap } from 'rxjs';\nimport { GridColumnDirective } from '../../directives/grid-column.directive';\nimport { GridHeaderItemDirective } from '../../directives/grid-header-item.directive';\nimport { GridItemDirective } from '../../directives/grid-item.directive';\nimport { GridRowDirective } from '../../directives/grid-row.directive';\nimport { DataGridOptions } from '../../models';\nimport { GridLabelComponent } from '../grid-label/grid-label.component';\nimport { GridValueComponent } from '../grid-value/grid-value.component';\n\nexport type DataGridDisplayType = 'columns' | 'table' | 'items';\n\nconst columnClasses: Record<number, string> = {\n  1: 'grid-cols-1',\n  2: 'grid-cols-2',\n  3: 'grid-cols-3',\n  4: 'grid-cols-4',\n  5: 'grid-cols-5',\n  6: 'grid-cols-6',\n  7: 'grid-cols-7',\n  8: 'grid-cols-8',\n  9: 'grid-cols-9',\n  10: 'grid-cols-10'\n};\n\nconst colSpanClasses: Record<number, string> = {\n  1: 'col-span-1',\n  2: 'col-span-2',\n  3: 'col-span-3',\n  4: 'col-span-4',\n  5: 'col-span-5',\n  6: 'col-span-6',\n  7: 'col-span-7',\n  8: 'col-span-8',\n  9: 'col-span-9',\n  10: 'col-span-10'\n};\n\nconst rowSpanClasses: Record<number, string> = {\n  1: 'row-span-1',\n  2: 'row-span-2',\n  3: 'row-span-3',\n  4: 'row-span-4',\n  5: 'row-span-5',\n  6: 'row-span-6',\n  7: 'row-span-7',\n  8: 'row-span-8',\n  9: 'row-span-9',\n  10: 'row-span-10'\n};\n\n@Component({\n  selector: 'tsl-data-grid',\n  imports: [NgClass, NgTemplateOutlet, GridLabelComponent, GridValueComponent, DynamicTextPipe],\n  templateUrl: './data-grid.component.html',\n  styleUrls: ['./data-grid.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'tsl-tw block bg-white dark:bg-neutral-800 text-neutral-800 dark:text-neutral-200 border-[1.5px] border-neutral-300 dark:border-neutral-800 rounded-lg overflow-hidden break-words text-sm leading-4 break-inside-avoid isolate'\n  }\n})\nexport class DataGridComponent implements AfterContentInit, OnChanges {\n  private readonly changeDetector: ChangeDetectorRef;\n\n  private contentInit: boolean;\n\n  readonly columnClasses = columnClasses;\n  readonly colSpanClasses = colSpanClasses;\n  readonly rowSpanClasses = rowSpanClasses;\n\n  @Input() heading: DynamicText | undefined;\n  @Input() displayType: DataGridDisplayType;\n  @Input() itemColumns: number;\n  @Input() booleanTrueText: DynamicText | null | undefined;\n  @Input() booleanFalseText: DynamicText | null | undefined;\n  @Input() noValueText: DynamicText | null | undefined;\n\n  @ContentChildren(GridHeaderItemDirective) headerItemRefs: QueryList<GridHeaderItemDirective>;\n  @ContentChildren(GridItemDirective) itemRefs: QueryList<GridItemDirective>;\n  @ContentChildren(GridColumnDirective) columnRefs: QueryList<GridColumnDirective>;\n  @ContentChildren(GridRowDirective) rowRefs: QueryList<GridRowDirective>;\n\n  matrix: (GridItemDirective | undefined)[][];\n  columns: number;\n  actualDisplayType: DataGridDisplayType;\n\n  get empty(): boolean {\n    return this.matrix.length == 0;\n  }\n\n  constructor(changeDetector: ChangeDetectorRef, @Inject(DataGridOptions) @Optional() options?: DataGridOptions | null) {\n    this.changeDetector = changeDetector;\n\n    this.itemColumns = options?.itemColumns ?? 4;\n    this.booleanTrueText = options?.booleanTrueText;\n    this.booleanFalseText = options?.booleanFalseText;\n    this.noValueText = options?.noValueText;\n\n    this.contentInit = false;\n  }\n\n  ngAfterContentInit(): void {\n    this.contentInit = true;\n\n    const columnItemsChange$ = this.columnRefs.changes.pipe(\n      switchMap(() => merge(this.columnRefs.map((column) => column.items.changes)))\n    );\n\n    const rowItemsChange$ = this.rowRefs.changes.pipe(\n      switchMap(() => merge(this.rowRefs.map((row) => row.items.changes)))\n    );\n\n    merge(this.headerItemRefs.changes, this.itemRefs.changes, this.columnRefs.changes, this.rowRefs.changes, columnItemsChange$, rowItemsChange$)\n      .pipe(startWith(undefined))\n      .subscribe(() => this.update());\n  }\n\n  ngOnChanges(): void {\n    this.update();\n  }\n\n  isOddItemsRow(index: number): boolean {\n    return Math.floor(index / this.itemColumns) % 2 == 1;\n  }\n\n  private update(): void {\n    if (!this.contentInit) {\n      return;\n    }\n\n    this.updateMatrix();\n    this.updateActualDisplayType();\n    this.changeDetector.markForCheck();\n  }\n\n  private updateMatrix(): void {\n    if (this.rowRefs.length > 0) {\n      this.columns = this.rowRefs.map((row) => row.items.length).reduce((max, length) => Math.max(max, length), 0);\n      this.matrix = this.rowRefs.map((row) => createArray(this.columns, (column) => row.items.get(column)));\n    }\n    else if (this.columnRefs.length > 0) {\n      this.columns = this.columnRefs.length;\n      const rows = this.columnRefs.map((column) => column.items.length).reduce((max, length) => Math.max(max, length), 0);\n      this.matrix = createArray(rows, (row) => createArray(this.columns, (column) => this.columnRefs.get(column)?.items.get(row)));\n    }\n    else if (this.itemRefs.length > 0) {\n      this.columns = this.itemColumns;\n      const rows = Math.ceil(this.itemRefs.length / this.itemColumns);\n      this.matrix = createArray(rows, (row) => createArray(this.itemColumns, (column) => this.itemRefs.get((row * this.itemColumns) + column)));\n    }\n    else {\n      this.matrix = [];\n      this.columns = this.headerItemRefs.length;\n    }\n  }\n\n  private updateActualDisplayType(): void {\n    if (isDefined(this.displayType)) {\n      this.actualDisplayType = this.displayType;\n    }\n    else if (this.rowRefs.length > 0) {\n      this.actualDisplayType = 'table';\n    }\n    else if (this.columnRefs.length > 0) {\n      this.actualDisplayType = 'columns';\n    }\n    else {\n      this.actualDisplayType = 'items';\n    }\n  }\n}\n","@if (heading) {\n  <div class=\"bg-neutral-300 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100 px-2 py-0.5 text-base font-bold\">{{ heading | dynamicText }}</div>\n}\n\n@if (actualDisplayType == \"items\") {\n  <div class=\"grid\" [ngClass]=\"columnClasses[columns]\">\n    <ng-container [ngTemplateOutlet]=\"headerRow\"></ng-container>\n    @if (empty) {\n      <div class=\"text-center py-2\" [ngClass]=\"colSpanClasses[columns]\">{{ noValueText ?? \"N/A\" | dynamicText }}</div>\n    }\n    @for (matrixRow of matrix; track matrixRow; let rowIndex = $index; let firstRow = $first; let lastRow = $last; let oddRow = $odd) {\n      @for (item of matrixRow; track item; let columnIndex = $index; let firstColumn = $first; let lastColumn = $last) {\n        <div\n          class=\"flex flex-col gap-1.5 p-2\"\n          [ngClass]=\"colSpanClasses[item?.colSpan ?? 0] + ' ' + rowSpanClasses[item?.rowSpan ?? 0]\"\n          [class.border-t]=\"!firstRow\"\n          [class.bg-white]=\"!oddRow\"\n          [class.dark:bg-neutral-700]=\"!oddRow\"\n          [class.bg-neutral-100]=\"oddRow\"\n          [class.dark:bg-neutral-800]=\"oddRow\">\n          @if (item) {\n            <tsl-grid-label [templateRef]=\"item?.labelRef?.templateRef\" [label]=\"item?.label\" [enum]=\"item?.enum\"></tsl-grid-label>\n            <tsl-grid-value [booleanTrueText]=\"booleanTrueText\" [booleanFalseText]=\"booleanFalseText\" [noValueText]=\"noValueText\" [item]=\"item\"></tsl-grid-value>\n          }\n        </div>\n      }\n    }\n  </div>\n}\n\n@if (actualDisplayType == \"table\") {\n  <div class=\"grid\" [ngClass]=\"columnClasses[columns]\">\n    <ng-container [ngTemplateOutlet]=\"headerRow\"></ng-container>\n    @if (empty) {\n      <div class=\"text-center py-2\" [ngClass]=\"colSpanClasses[columns]\">{{ noValueText ?? \"N/A\" | dynamicText }}</div>\n    }\n    @for (matrixRow of matrix; track matrixRow; let rowIndex = $index; let firstRow = $first; let lastRow = $last; let oddRow = $odd) {\n      @for (item of matrixRow; track item; let columnIndex = $index; let firstColumn = $first; let lastColumn = $last) {\n        <tsl-grid-value\n          [item]=\"item\"\n          [booleanTrueText]=\"booleanTrueText\"\n          [booleanFalseText]=\"booleanFalseText\"\n          [noValueText]=\"noValueText\"\n          class=\"px-2 py-1.5\"\n          [class.border-t]=\"!firstRow\"\n          [class.bg-white]=\"!oddRow\"\n          [class.dark:bg-neutral-700]=\"!oddRow\"\n          [class.bg-neutral-100]=\"oddRow\"\n          [class.dark:bg-neutral-800]=\"oddRow\"></tsl-grid-value>\n      }\n    }\n  </div>\n}\n\n@if (actualDisplayType == \"columns\") {\n  <div class=\"grid\" [ngClass]=\"columnClasses[columns * 2]\">\n    <ng-container [ngTemplateOutlet]=\"headerRow\"></ng-container>\n    @if (empty) {\n      <div class=\"text-center py-2\" [ngClass]=\"colSpanClasses[columns]\">{{ noValueText ?? \"N/A\" | dynamicText }}</div>\n    }\n    @for (matrixRow of matrix; track matrixRow; let rowIndex = $index; let firstRow = $first; let lastRow = $last; let oddRow = $odd) {\n      @for (item of matrixRow; track item; let columnIndex = $index; let firstColumn = $first; let lastColumn = $last) {\n        <tsl-grid-label\n          [templateRef]=\"item?.labelRef?.templateRef\"\n          [label]=\"item?.label\"\n          [enum]=\"item?.enum\"\n          class=\"p-2\"\n          [class.border-t]=\"!firstRow\"\n          [class.bg-white]=\"!oddRow\"\n          [class.dark:bg-neutral-700]=\"!oddRow\"\n          [class.bg-neutral-100]=\"oddRow\"\n          [class.dark:bg-neutral-800]=\"oddRow\" />\n        <tsl-grid-value\n          [item]=\"item\"\n          [booleanTrueText]=\"booleanTrueText\"\n          [booleanFalseText]=\"booleanFalseText\"\n          [noValueText]=\"noValueText\"\n          class=\"p-2\"\n          [class.border-t]=\"!firstRow\"\n          [class.bg-white]=\"!oddRow\"\n          [class.dark:bg-neutral-700]=\"!oddRow\"\n          [class.bg-neutral-100]=\"oddRow\"\n          [class.dark:bg-neutral-800]=\"oddRow\" />\n      }\n    }\n  </div>\n}\n\n<ng-template #headerRow>\n  @for (headerItem of headerItemRefs; track headerItem; let first = $first; let last = $last) {\n    <tsl-grid-label\n      [templateRef]=\"headerItem?.templateRef\"\n      [label]=\"headerItem?.label\"\n      [enum]=\"headerItem?.enum\"\n      class=\"px-2 pb-1.5 bg-neutral-300 dark:bg-neutral-800 text-neutral-900 dark:text-neutral-100\"\n      [class.pt-1.5]=\"heading == undefined\" />\n  }\n</ng-template>\n","import { NgModule } from '@angular/core';\n\nimport { DataGridComponent } from './components';\nimport { GridColumnDirective, GridHeaderItemDirective, GridItemDirective, GridLabelDirective, GridRowDirective, GridValueDirective } from './directives';\n\n@NgModule({\n  imports: [\n    DataGridComponent,\n\n    GridColumnDirective,\n    GridHeaderItemDirective,\n    GridItemDirective,\n    GridLabelDirective,\n    GridRowDirective,\n    GridValueDirective\n  ],\n  exports: [\n    DataGridComponent,\n\n    GridColumnDirective,\n    GridHeaderItemDirective,\n    GridItemDirective,\n    GridLabelDirective,\n    GridRowDirective,\n    GridValueDirective\n  ]\n})\nexport class TstdlDataGridModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}