{"version":3,"file":"ppwcode-ng-common-components.mjs","sources":["../../../../projects/ppwcode/ng-common-components/src/lib/enum/severity.ts","../../../../projects/ppwcode/ng-common-components/src/lib/message-bar/message-bar.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/message-bar/message-bar.component.html","../../../../projects/ppwcode/ng-common-components/src/lib/expandable-card/expandable-card.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/expandable-card/expandable-card.component.html","../../../../projects/ppwcode/ng-common-components/src/lib/search-filter/search-filter.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/search-filter/search-filter.component.html","../../../../projects/ppwcode/ng-common-components/src/lib/table/columns/column.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/columns/date-column.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/columns/number-column.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/columns/template-column.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/columns/text-column.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/providers.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/column-directives/ppw-column-cell.directive.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/column-directives/ppw-column-header.directive.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/column-directives/ppw-column.directive.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/empty-page/ppw-empty-table-page.directive.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/abstract-table.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/mixins/cell-component.mixin.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/date-cell/date-cell.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/number-cell/number-cell.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/template-cell/template-cell.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/text-cell/text-cell.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/cells/directives/dynamic-cell.directive.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/table.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/table.component.html","../../../../projects/ppwcode/ng-common-components/src/lib/table/form-table.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/table/table.module.ts","../../../../projects/ppwcode/ng-common-components/src/lib/loader/loader.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/loader/loader.component.html","../../../../projects/ppwcode/ng-common-components/src/lib/dashboard-items/dashboard-items-table/dashboard-items-table.component.ts","../../../../projects/ppwcode/ng-common-components/src/lib/dashboard-items/dashboard-items-table/dashboard-items-table.component.html","../../../../projects/ppwcode/ng-common-components/src/public-api.ts","../../../../projects/ppwcode/ng-common-components/src/ppwcode-ng-common-components.ts"],"sourcesContent":["export enum Severity {\n    success = 'success',\n    error = 'error',\n    warning = 'warning',\n    info = 'info'\n}\n","import { Component, input, InputSignal } from '@angular/core'\n\nimport { MatCardModule } from '@angular/material/card'\nimport { Severity } from '../enum/severity'\n\n@Component({\n    selector: 'ppw-message-bar',\n    templateUrl: './message-bar.component.html',\n    styleUrls: ['./message-bar.component.scss'],\n    imports: [MatCardModule]\n})\nexport class MessageBarComponent {\n    public severity: InputSignal<Severity> = input.required<Severity>()\n    public message: InputSignal<string | null> = input<string | null>(null)\n}\n","<mat-card class=\"ppw-message-bar ppw-message-severity-{{ severity() }}\">\n    <mat-card-content class=\"ppw-message-bar-content\">\n        @if (message() === null) {\n            <ng-content></ng-content>\n        } @else {\n            {{ message() }}\n        }\n    </mat-card-content>\n</mat-card>\n","import { Component, input, InputSignal, ViewEncapsulation, OnInit } from '@angular/core'\n\nimport { MatExpansionModule } from '@angular/material/expansion'\n\n@Component({\n    selector: 'ppw-expandable-card',\n    templateUrl: './expandable-card.component.html',\n    styleUrls: ['./expandable-card.component.scss', './expandable-card.component.theme.scss'],\n    imports: [MatExpansionModule],\n    encapsulation: ViewEncapsulation.None\n})\nexport class ExpandableCardComponent implements OnInit {\n    // Inputs\n    cardTitle: InputSignal<string | undefined> = input()\n    cardDescription: InputSignal<string | undefined> = input()\n    canBeCollapsed: InputSignal<boolean> = input(true)\n    openAsExpanded: InputSignal<boolean> = input(true)\n\n    public panelOpenState!: boolean\n\n    public ngOnInit(): void {\n        this.panelOpenState = this.openAsExpanded()\n    }\n}\n","<mat-accordion class=\"ppw-expandable-card-accordion\">\n    <mat-expansion-panel\n        class=\"ppw-expandable-panel\"\n        [expanded]=\"openAsExpanded()\"\n        [disabled]=\"!canBeCollapsed()\"\n        (opened)=\"panelOpenState = true\"\n        (closed)=\"panelOpenState = false\"\n    >\n        <mat-expansion-panel-header class=\"ppw-expandable-panel-header\">\n            <mat-panel-title class=\"ppw-expandable-card-title\">\n                @if (cardTitle()) {\n                    {{ cardTitle() }}\n                } @else {\n                    <ng-content select=\"[ppw-expandable-card-title]\"> </ng-content>\n                }\n            </mat-panel-title>\n            <mat-panel-description class=\"ppw-expandable-card-description\">\n                @if (cardDescription()) {\n                    {{ cardDescription() }}\n                } @else {\n                    <ng-content select=\"[ppw-expandable-card-description]\"> </ng-content>\n                }\n            </mat-panel-description>\n        </mat-expansion-panel-header>\n        <ng-content></ng-content>\n    </mat-expansion-panel>\n</mat-accordion>\n","import { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core'\nimport { MatButtonModule } from '@angular/material/button'\nimport { MatCardModule } from '@angular/material/card'\n\n@Component({\n    selector: 'ppw-search-filter',\n    templateUrl: './search-filter.component.html',\n    styleUrls: ['./search-filter.component.scss'],\n    imports: [MatCardModule, MatButtonModule]\n})\nexport class SearchFilterComponent {\n    // Inputs\n    public submitDisabled: InputSignal<boolean> = input(false)\n    public clearDisabled: InputSignal<boolean> = input(false)\n    public allowReset: InputSignal<boolean> = input(true)\n    public searchLabel: InputSignal<string> = input('Search')\n    public resetLabel: InputSignal<string> = input('Reset')\n\n    // Outputs\n    public performSearch: OutputEmitterRef<void> = output<void>()\n    public clear: OutputEmitterRef<void> = output<void>()\n\n    protected executeSearch(): void {\n        this.performSearch.emit()\n    }\n\n    protected executeClear(): void {\n        this.clear.emit()\n    }\n}\n","<mat-card>\n    <mat-card-content\n        (keyup.enter)=\"submitDisabled() ? undefined : executeSearch()\"\n        (keyup.control.enter)=\"allowReset() ? executeClear() : undefined\"\n    >\n        <ng-content></ng-content>\n    </mat-card-content>\n    <mat-card-actions align=\"end\" class=\"gap-8\">\n        @if (allowReset()) {\n            <button mat-button (click)=\"executeClear()\" [disabled]=\"clearDisabled()\">{{ resetLabel() }}</button>\n        }\n        <button mat-raised-button color=\"primary\" (click)=\"executeSearch()\" [disabled]=\"submitDisabled()\">\n            {{ searchLabel() }}\n        </button>\n    </mat-card-actions>\n</mat-card>\n","import { Signal } from '@angular/core'\n\n/**\n * Enum containing the different column types supported by the DataTablesModule.\n */\nexport enum ColumnType {\n    /** A column that will display the value as it is given. */\n    Text = 'text',\n    Date = 'date',\n    Number = 'number',\n    Template = 'template'\n}\n\n/**\n * The representation of a column.\n * TRecord is the type of object in the items array.\n * TValue is the type of the resulting value.\n */\nexport interface Column<TRecord, TValue> {\n    /** The type of the column. */\n    readonly type: ColumnType\n    /** The unique name of the column within a set of columns. */\n    name: string\n\n    /** The label to display in the column header. */\n    label: string\n\n    /** Whether the column should be sticky. */\n    sticky: boolean\n\n    /** Whether the column should be sticky at the end of the row. */\n    stickyEnd: boolean\n\n    /** Whether the column is sortable. */\n    sortable: Signal<boolean>\n\n    /** Whether the sort clear should be disabled. */\n    disableSortClear: Signal<boolean>\n\n    value?: string | ((record: TRecord) => TValue)\n}\n","import { Signal } from '@angular/core'\nimport { Column, ColumnType } from './column'\n\n/**\n * Represents a column with text inside.\n */\nexport class DateColumn<TDate, TRecord> implements Column<TRecord, TDate> {\n    public readonly type = ColumnType.Date\n\n    public constructor(\n        /**\n         * The unique name of the column within a set of columns.\n         */\n        public name: string,\n\n        /**\n         * The label to show in the header of the column.\n         */\n        public label: string,\n\n        /**\n         * Whether the column should be sticky.\n         */\n        public sticky: boolean,\n\n        /**\n         * Whether the column should be sticky at the end of the row.\n         */\n        public stickyEnd: boolean,\n\n        /**\n         * The format to show the date value.\n         */\n        public formatFn: (value: TDate) => string,\n\n        /**\n         * Whether the column is sortable.\n         */\n        public sortable: Signal<boolean>,\n\n        /** Whether the sort clear should be disabled. */\n        public disableSortClear: Signal<boolean>,\n\n        /**\n         * The name of the property to get the value from or a function that can be called\n         * to retrieve the value from the current record.\n         */\n        public value?: string | ((record: TRecord) => TDate)\n    ) {}\n}\n","import { Signal } from '@angular/core'\nimport { Column, ColumnType } from './column'\n\n/**\n * Represents a column with text inside.\n */\nexport class NumberColumn<TRecord> implements Column<TRecord, number> {\n    public readonly type = ColumnType.Number\n\n    public constructor(\n        /**\n         * The unique name of the column within a set of columns.\n         */\n        public name: string,\n\n        /**\n         * The label to show in the header of the column.\n         */\n        public label: string,\n\n        /**\n         * Whether the column should be sticky.\n         */\n        public sticky: boolean,\n\n        /**\n         * Whether the column should be sticky at the end of the row.\n         */\n        public stickyEnd: boolean,\n\n        /**\n         * Whether the column is sortable.\n         */\n        public sortable: Signal<boolean>,\n\n        /** Whether the sort clear should be disabled. */\n        public disableSortClear: Signal<boolean>,\n\n        /**\n         * The name of the property to get the value from or a function that can be called\n         * to retrieve the value from the current record.\n         */\n        public value?: string | ((record: TRecord) => number),\n\n        /**\n         * The format to show the date value.\n         */\n        public formatFn?: (value: number) => string\n    ) {}\n}\n","import { Signal, TemplateRef } from '@angular/core'\nimport { Column, ColumnType } from './column'\n\n/**\n * Represents a column with text inside.\n */\nexport class TemplateColumn<TRecord> implements Column<TRecord, TemplateRef<any>> {\n    public readonly type = ColumnType.Template\n\n    public constructor(\n        /**\n         * The unique name of the column within a set of columns.\n         */\n        public name: string,\n\n        /**\n         * The label to show in the header of the column.\n         */\n        public label: string,\n\n        /**\n         * Whether the column should be sticky.\n         */\n        public sticky: boolean,\n\n        /**\n         * Whether the column should be sticky at the end of the row.\n         */\n        public stickyEnd: boolean,\n\n        /**\n         * Whether the column is sortable.\n         */\n        public sortable: Signal<boolean>,\n\n        /** Whether the sort clear should be disabled. */\n        public disableSortClear: Signal<boolean>,\n\n        /**\n         * The name of the property to get the value from or a function that can be called\n         * to retrieve the value from the current record.\n         */\n        public value?: string | ((record: TRecord) => TemplateRef<any>)\n    ) {}\n}\n","import { Signal } from '@angular/core'\nimport { Column, ColumnType } from './column'\n\n/**\n * Represents a column with text inside.\n */\nexport class TextColumn<TRecord> implements Column<TRecord, string> {\n    public readonly type = ColumnType.Text\n\n    public constructor(\n        /**\n         * The unique name of the column within a set of columns.\n         */\n        public name: string,\n\n        /**\n         * The label to show in the header of the column.\n         */\n        public label: string,\n\n        /**\n         * Whether the column should be sticky.\n         */\n        public sticky: boolean,\n\n        /**\n         * Whether the column should be sticky at the end of the row.\n         */\n        public stickyEnd: boolean,\n\n        /**\n         * Whether the column is sortable.\n         */\n        public sortable: Signal<boolean>,\n\n        /** Whether the sort clear should be disabled. */\n        public disableSortClear: Signal<boolean>,\n\n        /**\n         * The name of the property to get the value from or a function that can be called\n         * to retrieve the value from the current record.\n         */\n        public value?: string | ((record: TRecord) => string)\n    ) {}\n}\n","import { InjectionToken, Type } from '@angular/core'\n\nexport const PPW_TABLE_DEFAULT_OPTIONS = new InjectionToken<PpwTableDefaultOptions>('PPW_TABLE_DEFAULT_OPTIONS')\n\nexport interface PpwTableDefaultOptions {\n    dateColumnFormatter?: (value: unknown) => string\n    numberColumnFormatter?: (value: unknown) => string\n    emptyPageComponent?: Type<unknown>\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n/**\n * Directive used to identify the template for the cell of a column.\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[ppw-column-cell]',\n    standalone: false\n})\nexport class PpwColumnCellDirective {\n    public templateRef: TemplateRef<unknown> = inject(TemplateRef)\n}\n","import { Directive, inject, TemplateRef } from '@angular/core'\n\n/**\n * Directive used to identify the template for the header of a column.\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[ppw-column-header]',\n    standalone: false\n})\nexport class PpwColumnHeaderDirective {\n    public templateRef: TemplateRef<unknown> = inject(TemplateRef)\n}\n","import {\n    booleanAttribute,\n    computed,\n    contentChild,\n    Directive,\n    inject,\n    input,\n    InputSignal,\n    InputSignalWithTransform,\n    Signal,\n    TemplateRef\n} from '@angular/core'\nimport { notUndefined } from '@ppwcode/ng-utils'\nimport { Column, ColumnType } from '../columns/column'\nimport { DateColumn } from '../columns/date-column'\nimport { NumberColumn } from '../columns/number-column'\nimport { TemplateColumn } from '../columns/template-column'\nimport { TextColumn } from '../columns/text-column'\nimport { PPW_TABLE_DEFAULT_OPTIONS, PpwTableDefaultOptions } from '../providers'\nimport { PpwColumnCellDirective } from './ppw-column-cell.directive'\nimport { PpwColumnHeaderDirective } from './ppw-column-header.directive'\n\n/**\n * This directive represents what a column should look like in the table.\n *\n * It can be used in the template, between the `ppw-table` tags.\n * @example\n * `<ppw-table [data]=\"myDataArray\">\n *     <ppw-column name=\"name\" label=\"Name\" type=\"Text\"></ppw-column>\n * </ppw-table>`\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'ppw-column',\n    standalone: false\n})\nexport class PpwColumnDirective<TRecord> {\n    #tableDefaultOptions: PpwTableDefaultOptions | null = inject(PPW_TABLE_DEFAULT_OPTIONS, { optional: true })\n\n    // Inputs\n    /** The name of the column, this should be unique within the table. */\n    public name: InputSignal<string | keyof TRecord> = input.required()\n\n    /** The type of the column, this determines the way its value is rendered and is optional if a cell template is set. */\n    public type: InputSignal<ColumnType | Lowercase<keyof typeof ColumnType>> = input.required()\n\n    /** The label of the column, this is shown in the header of the column if no header template is set. */\n    public label: InputSignal<string | undefined> = input<string | undefined>(undefined)\n\n    /** Whether the column should be sticky. */\n    public sticky: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute })\n\n    /** Whether the column should be sticky at the end of the row. */\n    public stickyEnd: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute })\n\n    /** The formatting function to format number values. When not provided, the default from PPW_TABLE_OPTIONS is used. */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public numberFormatFn: InputSignal<((value: any) => string) | undefined> = input<\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        ((value: any) => string) | undefined\n    >(undefined)\n\n    /** The formatting function to format date values. */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public dateFormatFn: InputSignal<((value: any) => string) | undefined> = input<\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        ((value: any) => string) | undefined\n    >(undefined)\n\n    /** The name of the property to get the value from, or a custom function providing the value. */\n    public valueRetrieval: InputSignal<string | ((record: TRecord) => unknown) | undefined> = input<\n        string | ((record: TRecord) => unknown) | undefined\n    >(undefined)\n\n    /** Whether the column is sortable. */\n    public sortable: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute })\n\n    /** Whether the sort clear should be disabled. */\n    public disableSortClear: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute })\n\n    // Content children\n    /** Reference to the optional header cell template. */\n    private headerCellDirective: Signal<PpwColumnHeaderDirective | undefined> = contentChild(PpwColumnHeaderDirective)\n\n    /** Reference to the optional row cell template. */\n    private columnCellDirective: Signal<PpwColumnCellDirective | undefined> = contentChild(PpwColumnCellDirective)\n\n    /** Gets the template reference from the found header cell directive. */\n    public get headerTemplate(): TemplateRef<unknown> | undefined {\n        return this.headerCellDirective()?.templateRef\n    }\n\n    /** Gets the number formatting function to use. This is the `numberFormatFn` input or the default from PPW_TABLE_OPTIONS. */\n    private get numberFormatter(): ((value: unknown) => string) | undefined {\n        return this.numberFormatFn() ?? this.#tableDefaultOptions?.numberColumnFormatter\n    }\n\n    /** Gets the date formatting function to use. This is the `dateFormatFn` input or the default from PPW_TABLE_OPTIONS. */\n    private get dateFormatter(): ((value: unknown) => string) | undefined {\n        return this.dateFormatFn() ?? this.#tableDefaultOptions?.dateColumnFormatter\n    }\n\n    public columnDefinition: Signal<Column<TRecord, unknown> | undefined> = computed(() => {\n        /**\n         * When a column cell is given, the column should always be a TemplateColumn. Other columns have no support\n         * for custom templates to be used.\n         */\n        if (this.columnCellDirective()) {\n            if (this.type() !== ColumnType.Template) {\n                throw new Error(\n                    `When providing a cell template for column ${\n                        this.name() as string\n                    }, the column type should be set to ${ColumnType.Template}}`\n                )\n            }\n            return new TemplateColumn(\n                this.name() as string,\n                this.label() ?? '',\n                this.sticky(),\n                this.stickyEnd(),\n                this.sortable,\n                this.disableSortClear,\n                () => notUndefined(this.columnCellDirective()).templateRef\n            )\n        }\n\n        switch (this.type()) {\n            case ColumnType.Date:\n                if (!this.dateFormatter) {\n                    throw new Error(\n                        `There is no date formatter available. Either pass one or use the ${PPW_TABLE_DEFAULT_OPTIONS} provider to provide one.`\n                    )\n                }\n\n                return new DateColumn(\n                    this.name() as string,\n                    this.label() ?? '',\n                    this.sticky(),\n                    this.stickyEnd(),\n                    this.dateFormatter,\n                    this.sortable,\n                    this.disableSortClear,\n                    this.valueRetrieval() ?? (this.name() as string)\n                )\n            case ColumnType.Number:\n                return new NumberColumn(\n                    this.name() as string,\n                    this.label() ?? '',\n                    this.sticky(),\n                    this.stickyEnd(),\n                    this.sortable,\n                    this.disableSortClear,\n                    (this.valueRetrieval() as string | ((record: TRecord) => number)) ?? (this.name() as string),\n                    this.numberFormatter\n                )\n            case ColumnType.Template:\n                return new TemplateColumn(\n                    this.name() as string,\n                    this.label() ?? '',\n                    this.sticky(),\n                    this.stickyEnd(),\n                    this.sortable,\n                    this.disableSortClear,\n                    () => notUndefined(this.columnCellDirective()).templateRef\n                )\n            case ColumnType.Text:\n                return new TextColumn(\n                    this.name() as string,\n                    this.label() ?? '',\n                    this.sticky(),\n                    this.stickyEnd(),\n                    this.sortable,\n                    this.disableSortClear,\n                    (this.valueRetrieval() as string | ((record: TRecord) => string)) ?? (this.name() as string)\n                )\n            default:\n                throw new Error(`Unsupported column type ${this.type}`)\n        }\n    })\n}\n","import { Directive } from '@angular/core'\n\n/**\n * Directive used to identify the template for when the table has an empty page.\n */\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: '[ppw-empty-page]',\n    standalone: false\n})\nexport class PpwEmptyTablePageDirective {}\n","import { SelectionModel } from '@angular/cdk/collections'\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop'\nimport {\n    booleanAttribute,\n    computed,\n    contentChild,\n    contentChildren,\n    Directive,\n    ElementRef,\n    inject,\n    input,\n    InputSignal,\n    InputSignalWithTransform,\n    linkedSignal,\n    OnInit,\n    output,\n    OutputEmitterRef,\n    signal,\n    Signal,\n    TemplateRef,\n    TrackByFunction,\n    Type,\n    viewChild,\n    WritableSignal\n} from '@angular/core'\nimport { FormArray, FormGroup } from '@angular/forms'\nimport { MatTable, MatTableDataSource } from '@angular/material/table'\nimport { Sort } from '@angular/material/sort'\nimport { assert, notUndefined } from '@ppwcode/ng-utils'\nimport { mixinHandleSubscriptions } from '@ppwcode/ng-common'\nimport { PpwColumnDirective } from './column-directives/ppw-column.directive'\nimport { Column, ColumnType } from './columns/column'\nimport { DateColumn } from './columns/date-column'\nimport { NumberColumn } from './columns/number-column'\nimport { TemplateColumn } from './columns/template-column'\nimport { TextColumn } from './columns/text-column'\nimport { PpwEmptyTablePageDirective } from './empty-page/ppw-empty-table-page.directive'\nimport { TableRecord } from './models/table-record.model'\nimport { PpwTableOptions } from './options/table-options'\nimport { PPW_TABLE_DEFAULT_OPTIONS, PpwTableDefaultOptions } from './providers'\nimport { toSignal } from '@angular/core/rxjs-interop'\nimport { map } from 'rxjs'\nimport { SortChange } from './models/sort-change.model'\n\n@Directive()\nexport abstract class AbstractTableComponent<TRecord, TData = FormArray<FormGroup> | Array<Record<string, unknown>>>\n    extends mixinHandleSubscriptions()\n    implements OnInit\n{\n    public headerTemplates: Record<string | keyof TRecord, TemplateRef<unknown>> = {} as Record<\n        string | keyof TRecord,\n        TemplateRef<unknown>\n    >\n    // Inputs\n    public data: InputSignal<TData> = input.required()\n    public footerData: InputSignal<Record<string, unknown> | undefined> = input()\n    public trackBy: InputSignal<TrackByFunction<TRecord>> = input.required()\n    public disableAnimations: InputSignal<boolean> = input(false)\n    public enableRowSelection: InputSignal<boolean> = input(false)\n    public enableRowDrag: InputSignal<boolean> = input(false)\n    public expandable: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute })\n    public expandableTemplate: InputSignal<TemplateRef<{ $implicit: TRecord }> | undefined> = input()\n    public options: InputSignal<PpwTableOptions<TRecord> | undefined> = input<PpwTableOptions<TRecord> | undefined>(\n        undefined\n    )\n    public sort: InputSignal<Sort | undefined> = input<Sort | undefined>(undefined)\n\n    // Outputs\n    public selectionChanged: OutputEmitterRef<TableRecord<TRecord>[]> = output<TableRecord<TRecord>[]>()\n    public orderChanged: OutputEmitterRef<TableRecord<TRecord>[]> = output<TableRecord<TRecord>[]>()\n    public sortChanged: OutputEmitterRef<SortChange> = output<SortChange>()\n    // Content children\n    public emptyPageTemplate: Signal<TemplateRef<unknown> | undefined> = contentChild(PpwEmptyTablePageDirective, {\n        read: TemplateRef\n    })\n    public columnDirectives: Signal<readonly PpwColumnDirective<TRecord>[]> = contentChildren(PpwColumnDirective)\n    // View children\n    table: Signal<MatTable<TRecord>> = viewChild.required(MatTable)\n    public columns: Signal<Array<Column<TRecord, unknown>>> = computed(() => {\n        const columnDirectives = this.columnDirectives()\n\n        columnDirectives.forEach((columnDirective) => {\n            if (columnDirective.headerTemplate) {\n                this.headerTemplates[columnDirective.name()] = columnDirective.headerTemplate\n            }\n        })\n\n        // Generate the columns from the found ppw-column instances in the content children.\n        return columnDirectives.map((columnDirective) => {\n            assert(\n                columnDirective.columnDefinition(),\n                () => !!columnDirective.columnDefinition(),\n                `A column definition could not be found, make sure your ppw-column templates are defined correctly.`\n            )\n            return notUndefined(columnDirective.columnDefinition())\n        })\n    })\n    /** The names of the columns that are displayed. */\n    public columnNames: Signal<Array<string>> = computed(() => {\n        const names = this.columns().map((column) => column.name)\n\n        // The following columns available by the table component itself. Their visibility is handled by the input bindings.\n        if (this.enableRowSelection()) {\n            names.unshift('rowSelection')\n        }\n        if (this.enableRowDrag()) {\n            names.unshift('rowDrag')\n        }\n        if (this.expandable()) {\n            names.push('expand')\n        }\n\n        return names\n    })\n\n    protected readonly localRecords = computed(() =>\n        this._mapToLocalKeyValuePairs(this.data(), this.columns(), this.options()?.rows?.disableRowSelection)\n    )\n\n    protected readonly selectableRows = computed(() => this.localRecords().filter((record) => record.selectable))\n\n    /** The data source for the material table. */\n    public dataSource: WritableSignal<MatTableDataSource<TableRecord<TRecord>>> = linkedSignal(() => {\n        return new MatTableDataSource(this.localRecords())\n    })\n    public arrowPositions = computed(() => {\n        const columns = this.columns()\n        const headerStyles = this.options()?.header?.styles\n        const textAlignConst = 'text-align'\n        const alignRightConst = 'right'\n\n        return columns.reduce<Record<string, 'before' | 'after'>>((positionsByColumn, column) => {\n            const textAlign = headerStyles?.[column.name]?.()?.[textAlignConst]\n            positionsByColumn[column.name] =\n                textAlign === alignRightConst || column.type === ColumnType.Number ? 'before' : 'after'\n            return positionsByColumn\n        }, {})\n    })\n\n    public selection = new SelectionModel<TableRecord<TRecord>>(\n        true,\n        [],\n        true,\n        (o1: TableRecord<TRecord>, o2: TableRecord<TRecord>) => {\n            return o1.trackByValue === o2.trackByValue\n        }\n    )\n\n    readonly #selectedRows = toSignal(\n        this.stopOnDestroy(this.selection.changed).pipe(map(() => this.selection.selected)),\n        { initialValue: this.selection.selected }\n    )\n\n    readonly #currentPageSelectedRows = computed(() => {\n        const selected = this.#selectedRows().map((r) => r.initialRecord)\n        const selectable = this.selectableRows().map((r) => r.initialRecord)\n\n        return selectable.filter((row) => selected.includes(row))\n    })\n\n    public readonly isAllSelected = computed(() => {\n        const selectableCount = this.selectableRows().length\n        const selectedCount = this.#currentPageSelectedRows().length\n\n        return selectableCount > 0 && selectableCount === selectedCount\n    })\n\n    public readonly isSomeSelected = computed(() => {\n        const selectableCount = this.selectableRows().length\n        const selectedCount = this.#currentPageSelectedRows().length\n\n        return selectedCount > 0 && selectedCount < selectableCount\n    })\n\n    protected readonly notUndefined = notUndefined\n    #elementRef: ElementRef = inject(ElementRef)\n    #tableDefaultOptions: PpwTableDefaultOptions | null = inject(PPW_TABLE_DEFAULT_OPTIONS, { optional: true })\n    #expandedRecord: WritableSignal<TRecord | undefined> = signal(undefined)\n\n    public get emptyPageComponent(): Type<unknown> | undefined {\n        return this.#tableDefaultOptions?.emptyPageComponent\n    }\n\n    /** Gets whether a custom height has been set by the --ppw-table-height CSS variable. */\n    public get hasFixedHeight(): boolean {\n        const cssHeightValue = getComputedStyle(this.#elementRef.nativeElement).getPropertyValue('--ppw-table-height')\n        return cssHeightValue !== 'auto' && cssHeightValue !== ''\n    }\n\n    /** Whether the given record is expanded. */\n    isExpanded(record: TRecord): boolean {\n        return this.#expandedRecord() === record\n    }\n\n    public isRowSelectionDisabled(row: TableRecord<TRecord>): boolean {\n        return !row.selectable\n    }\n\n    /** Selects all rows if they are not all selected; otherwise clear selection. */\n    public masterToggle() {\n        if (this.isAllSelected()) {\n            this.selection.clear()\n        } else {\n            this.dataSource().data.forEach((row: TableRecord<TRecord>) => {\n                if (row.selectable) {\n                    this.selection.select(row)\n                }\n            })\n        }\n    }\n\n    public ngOnInit(): void {\n        this.stopOnDestroy(this.selection.changed).subscribe(() => {\n            this.selectionChanged.emit(this.selection.selected)\n        })\n    }\n\n    public trackByFn(_index: number, item: TableRecord<TRecord>): unknown {\n        return item.trackByValue\n    }\n\n    public mapValue(column: Column<TRecord, unknown>, record: unknown) {\n        switch (column.type) {\n            case ColumnType.Date: {\n                const dateColumn = column as DateColumn<unknown, unknown>\n                const mappedDateValue: unknown | undefined = getColumnValue(dateColumn, record)\n\n                return mappedDateValue ? dateColumn.formatFn(mappedDateValue) : undefined\n            }\n            case ColumnType.Number: {\n                const numberColumn = column as NumberColumn<unknown>\n                const mappedNumberValue: unknown | undefined = getColumnValue(numberColumn, record)\n\n                return numberColumn.formatFn && mappedNumberValue !== null && mappedNumberValue !== undefined\n                    ? numberColumn.formatFn(mappedNumberValue as number)\n                    : mappedNumberValue !== null && mappedNumberValue !== undefined\n                      ? mappedNumberValue\n                      : undefined\n            }\n            case ColumnType.Template: {\n                const templateColumn = column as TemplateColumn<unknown>\n                return getColumnValue(templateColumn, record)\n            }\n            case ColumnType.Text:\n            default:\n                return getColumnValue(column as TextColumn<unknown>, record)\n        }\n    }\n\n    public executeRowClick(event: MouseEvent, record: TRecord, columnName: string): void {\n        if (this.expandable()) {\n            this.toggleExpand(record)\n        } else {\n            const onClick = event.ctrlKey ? this.options()?.rows?.onCtrlClick : this.options()?.rows?.onClick\n            // A click on the column should not be ignored if\n            // - There are no columns to ignore (ignoreClick is undefined) -> fallback -1\n            // - The column could not be found in the array of ignoreClick -> Array.indexOf returns -1\n            // Only if the column is found in the ignoreClick array will the value be different from -1\n            const indexOfColumnInColumnsToIgnore = this.options()?.columns?.ignoreClick?.indexOf(columnName) ?? -1\n            const columnClickShouldNotBeIgnored = indexOfColumnInColumnsToIgnore === -1\n            if (onClick && columnClickShouldNotBeIgnored) {\n                onClick(record)\n            }\n        }\n    }\n\n    public toggleExpand(record: TRecord): void {\n        this.#expandedRecord.update((expandedRecord) => (expandedRecord === record ? undefined : record))\n    }\n\n    public dropTable(event: CdkDragDrop<MatTableDataSource<TableRecord<TRecord>>, unknown>): void {\n        moveItemInArray(this.dataSource().data, event.previousIndex, event.currentIndex)\n        this.table().renderRows()\n        this.orderChanged.emit(this.dataSource().data)\n    }\n\n    public handleSortChange(sort: Sort): void {\n        this.sortChanged.emit({\n            column: sort.active,\n            direction: sort.direction\n        })\n    }\n\n    /**\n     * Maps the given items into a local key-value pair to be used within\n     * the template. The original record is left intact so that it can still\n     * be passed along where necessary.\n     * @param items The items to map.\n     */\n    protected abstract _mapToLocalKeyValuePairs(\n        items: TData,\n        columns: Array<Column<TRecord, unknown>>,\n        disabledFn?: (record: TRecord) => boolean\n    ): Array<TableRecord<TRecord>>\n}\n\n/**\n * This function will search the record to see if there is a value nested within it.\n * @param record\n * @param selector\n */\nexport function getPossibleNestedValue<TValue>(record: never, selector: string): TValue | undefined {\n    selector = selector.replace(/\\[(\\w+)]/g, '.$1') // convert indexes to properties\n    selector = selector.replace(/^\\./, '') // strip a leading dot\n    const a = selector.split('.')\n    for (let i = 0, n = a.length; i < n; ++i) {\n        const k = a[i]\n        if (record != null && k in record) {\n            record = record[k]\n        } else {\n            return\n        }\n    }\n    return record\n}\n\n/**\n * This function wil get the value from the record to further map the values.\n * @param column\n * @param record\n */\nexport function getColumnValue<TRecord, TValue>(column: Column<TRecord, TValue>, record: TRecord): TValue | undefined {\n    let mappedValue: TValue | undefined\n    if (typeof column.value === 'undefined' || column.value === null) {\n        mappedValue = getPossibleNestedValue<TValue | undefined>(record as never, column.name)\n    } else if (typeof column.value === 'string') {\n        mappedValue = getPossibleNestedValue<TValue | undefined>(record as never, column.value)\n    } else {\n        mappedValue = column.value(record)\n    }\n\n    return mappedValue\n}\n","import { Signal } from '@angular/core'\nimport { Constructor } from '@ppwcode/ng-common'\nimport { Column } from '../../columns/column'\n\n/**\n * Defines that the implementation has the API of a cell component.\n *\n * Generic type TColumn is the corresponding configuration of the related column.\n * Generic type TValue is the type of value that is expected and defaults to any.\n *      This allows for type safety in the implementation where the component needs to\n *      manipulate the value it was given.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface IsCellComponent<TColumn extends Column<any, unknown>, TValue = any> {\n    /** The row index of the record in the ngFor loop */\n    rowIndex: Signal<number>\n    /** The configuration of the column the cell is related to. */\n    column: Signal<TColumn>\n    /** The original record data the cell is rendered for. */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    record: Signal<{ [key: string]: any }>\n    /** The value for the cell component to continue with. */\n    value: Signal<TValue>\n}\n\n/** Defines that it is a constructable component implementing the IsCellComponent interface. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type IsCellComponentCtor<TValue> = Constructor<IsCellComponent<Column<any, unknown>, TValue>>\n\n/**\n * Mixin that applies a default cell component implementation on the given class.\n *\n * Generic type TColumn is the corresponding configuration of the related column.\n * Generic type TBase is the type of the class that the implementation will be done for.\n * Generic type TValue is the type of value that is expected and defaults to any.\n *      This allows for type safety in the actual implementation where the component needs to\n *      manipulate the value it was given.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function mixinCellComponent<\n    TColumn extends Column<any, unknown>,\n    TBase extends Constructor<object>,\n    TValue = any\n>(base?: TBase): IsCellComponentCtor<TValue> & TBase {\n    base ??= class {} as TBase\n\n    return class extends base implements IsCellComponent<TColumn, TValue> {\n        public rowIndex!: Signal<number>\n        public column!: Signal<TColumn>\n        public record!: Signal<Record<string, unknown>>\n        public value!: Signal<TValue>\n    }\n}\n","import { Component } from '@angular/core'\nimport { Constructor } from '@ppwcode/ng-common'\nimport { DateColumn } from '../../columns/date-column'\nimport { mixinCellComponent } from '../mixins/cell-component.mixin'\n\n/**\n * This component acts as a cell within a table. Its purpose is to display\n * the value that it was given as a date representation.\n *\n * No transformation will be applied to the given value.\n */\n@Component({\n    selector: 'ppw-date-cell',\n    template: `{{ value() }}`,\n    standalone: true\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class DateCellComponent extends mixinCellComponent<DateColumn<any, any>, Constructor<object>, string>() {}\n","import { Component } from '@angular/core'\nimport { Constructor } from '@ppwcode/ng-common'\nimport { NumberColumn } from '../../columns/number-column'\nimport { mixinCellComponent } from '../mixins/cell-component.mixin'\n\n/**\n * This component acts as a cell within a table. It's purpose is to display\n * the value that it was given as a numeric representation.\n *\n * No transformation will be applied to the given value.\n */\n@Component({\n    selector: 'ppw-number-cell',\n    template: `{{ value() }}`,\n    standalone: true\n})\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class NumberCellComponent extends mixinCellComponent<NumberColumn<any>, Constructor<object>, string>() {}\n","import { CommonModule } from '@angular/common'\nimport { Component, computed, TemplateRef } from '@angular/core'\nimport { Constructor } from '@ppwcode/ng-common'\nimport { TemplateColumn } from '../../columns/template-column'\nimport { mixinCellComponent } from '../mixins/cell-component.mixin'\n\n@Component({\n    selector: 'ppw-template-cell',\n    template: `<ng-container *ngTemplateOutlet=\"value(); context: context()\"></ng-container>`,\n    imports: [CommonModule]\n})\nexport class TemplateCellComponent extends mixinCellComponent<\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    TemplateColumn<any>,\n    Constructor<object>,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    TemplateRef<any>\n>() {\n    public readonly context = computed(() => ({\n        record: this.record(),\n        rowIndex: this.rowIndex(),\n        $implicit: this.record()\n    }))\n}\n","import { Component } from '@angular/core'\nimport { Constructor } from '@ppwcode/ng-common'\n\nimport { TextColumn } from '../../columns/text-column'\nimport { mixinCellComponent } from '../mixins/cell-component.mixin'\n\n/**\n * This component acts as a cell within a table. It's purpose is to display\n * the value that it was given as a textual representation.\n *\n * No transformation will be applied to the given value.\n */\n@Component({\n    selector: 'ppw-text-cell',\n    template: `{{ value() }}`,\n    standalone: true\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class TextCellComponent extends mixinCellComponent<TextColumn<any>, Constructor<object>, string>() {}\n","import { ComponentRef, Directive, input, InputSignal, OnInit, Type, ViewContainerRef } from '@angular/core'\n\nimport { Column, ColumnType } from '../../columns/column'\nimport { DateCellComponent } from '../date-cell/date-cell.component'\nimport { IsCellComponent } from '../mixins/cell-component.mixin'\nimport { NumberCellComponent } from '../number-cell/number-cell.component'\nimport { TemplateCellComponent } from '../template-cell/template-cell.component'\nimport { TextCellComponent } from '../text-cell/text-cell.component'\n\n@Directive({\n    selector: '[ppwDynamicCell]',\n    standalone: true\n})\nexport class DynamicCellDirective<TRecord> implements OnInit {\n    // Inputs\n    public column: InputSignal<Column<TRecord, any>> = input.required()\n    public record: InputSignal<Record<string, unknown>> = input.required()\n    public value: InputSignal<any> = input.required()\n    public rowIndex: InputSignal<number> = input.required()\n\n    /** A reference to the instantiated component. */\n    public componentRef!: ComponentRef<IsCellComponent<Column<TRecord, any>>>\n\n    private _componentTypeMap = {\n        [ColumnType.Date]: DateCellComponent,\n        [ColumnType.Text]: TextCellComponent,\n        [ColumnType.Number]: NumberCellComponent,\n        [ColumnType.Template]: TemplateCellComponent\n    }\n\n    public constructor(private _viewContainerRef: ViewContainerRef) {}\n\n    public ngOnInit(): void {\n        this._instantiateComponent(this._componentTypeMap[this.column().type ?? ColumnType.Text])\n\n        this.componentRef.instance.rowIndex = this.rowIndex\n        this.componentRef.instance.column = this.column\n        this.componentRef.instance.record = this.record\n        this.componentRef.instance.value = this.value\n    }\n\n    /**\n     * Creates a new instance of the component on the view container.\n     */\n    private _instantiateComponent(component: Type<any>): void {\n        this.componentRef = this._viewContainerRef.createComponent(component)\n    }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core'\nimport { NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { AbstractTableComponent } from './abstract-table.component'\nimport { Column } from './columns/column'\nimport { TableRecord } from './models/table-record.model'\n\n@Component({\n    selector: 'ppw-table',\n    templateUrl: './table.component.html',\n    styleUrls: ['./table.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => TableComponent),\n            multi: true\n        }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class TableComponent<TRecord>\n    extends AbstractTableComponent<TRecord, Array<Record<string, unknown>>>\n    implements OnInit\n{\n    /**\n     * Maps the given items into a local key-value pair to be used within\n     * the template. The original record is left intact so that it can still\n     * be passed along where necessary.\n     * @param items The items to map.\n     */\n    protected _mapToLocalKeyValuePairs(\n        items: Array<Record<string, unknown>>,\n        columns: Array<Column<TRecord, unknown>>,\n        disabledFn?: (record: TRecord) => boolean\n    ): Array<TableRecord<TRecord>> {\n        disabledFn ??= () => false\n\n        const records: Array<Record<string, unknown>> = items ?? []\n\n        return records.map((record, index) => {\n            const mappedValues: Record<string, unknown> = {}\n            for (const column of columns) {\n                mappedValues[column.name] = this.mapValue(column, record)\n            }\n\n            // Ensure that properties that have no corresponding column are still available in the mapped local record.\n            return {\n                initialRecord: record,\n                mappedValues,\n                trackByValue: this.trackBy()(index, record as TRecord),\n                selectable: !disabledFn(record as TRecord)\n            } as TableRecord<TRecord>\n        })\n    }\n}\n","<section class=\"ppw-table-container\" [class.fixed-height]=\"hasFixedHeight\">\n    <table\n        mat-table\n        matSort\n        [matSortActive]=\"sort()?.active ?? ''\"\n        [matSortDirection]=\"sort()?.direction ?? ''\"\n        (matSortChange)=\"handleSortChange($event)\"\n        class=\"ppw-table\"\n        [class.ppw-table-header-hidden]=\"!!options()?.header?.hidden\"\n        [class.ppw-table-header-hidden-first-row-add-top-border]=\"\n            !!options()?.header?.hidden && !!options()?.header?.showFirstRowTopBorder\n        \"\n        [dataSource]=\"dataSource()\"\n        [trackBy]=\"trackByFn\"\n        cdkDropList\n        [cdkDropListData]=\"dataSource()\"\n        (cdkDropListDropped)=\"dropTable($event)\"\n        [multiTemplateDataRows]=\"expandable()\"\n    >\n        <!-- Draghandle column -->\n        @if (enableRowDrag()) {\n            <ng-container matColumnDef=\"rowDrag\">\n                <th mat-header-cell *matHeaderCellDef></th>\n                <td mat-cell *matCellDef=\"let element\" class=\"drag-table-cell\">\n                    <mat-icon cdkDragHandle mat-ripple class=\"drag-handle\">drag_indicator </mat-icon>\n                </td>\n                @if (footerData() !== undefined) {\n                    <td mat-footer-cell *matFooterCellDef></td>\n                }\n            </ng-container>\n        }\n\n        <!-- Checkbox Column -->\n        @if (enableRowSelection()) {\n            <ng-container matColumnDef=\"rowSelection\">\n                <th mat-header-cell *matHeaderCellDef>\n                    <mat-checkbox\n                        color=\"primary\"\n                        [disabled]=\"selectableRows().length === 0\"\n                        [style.width]=\"options()?.columns?.widths?.['rowSelection']\"\n                        (change)=\"$event ? masterToggle() : null\"\n                        [checked]=\"isAllSelected()\"\n                        [indeterminate]=\"isSomeSelected()\"\n                    >\n                    </mat-checkbox>\n                </th>\n                <td mat-cell *matCellDef=\"let row\">\n                    <mat-checkbox\n                        color=\"primary\"\n                        [style.width]=\"options()?.columns?.widths?.['rowSelection']\"\n                        (change)=\"$event ? selection.toggle(row) : null\"\n                        [checked]=\"selection.isSelected(row)\"\n                        [disabled]=\"!row.selectable\"\n                    >\n                    </mat-checkbox>\n                </td>\n                @if (footerData() !== undefined) {\n                    <td mat-footer-cell *matFooterCellDef></td>\n                }\n            </ng-container>\n        }\n\n        @for (column of columns(); track column) {\n            <ng-container [matColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\n                <th\n                    mat-header-cell\n                    mat-sort-header\n                    [arrowPosition]=\"arrowPositions()[column.name]\"\n                    [disabled]=\"!column.sortable()\"\n                    [disableClear]=\"column.disableSortClear()\"\n                    [style.width]=\"options()?.columns?.widths?.[column.name]\"\n                    [ngStyle]=\"options()?.header?.styles?.[column.name]?.()\"\n                    *matHeaderCellDef\n                    class=\"ppw-column-type-{{ column.type }}\"\n                >\n                    @if (headerTemplates[column.name]) {\n                        <ng-container *ngTemplateOutlet=\"headerTemplates[column.name]\"></ng-container>\n                    } @else {\n                        <ng-container\n                            *ngTemplateOutlet=\"headerTextCellTemplate; context: { column: columns()[$index] }\"\n                        ></ng-container>\n                    }\n                </th>\n                <td\n                    mat-cell\n                    [style.width]=\"options()?.columns?.widths?.[column.name]\"\n                    [class.ppw-table-sticky-column]=\"column.sticky\"\n                    [ngStyle]=\"options()?.columns?.styles?.[column.name]?.(record.initialRecord)\"\n                    *matCellDef=\"let record; let idx = index\"\n                    (click)=\"executeRowClick($event, record.initialRecord, column.name)\"\n                    class=\"ppw-column-type-{{ column.type }}\"\n                >\n                    <ng-container\n                        ppwDynamicCell\n                        [rowIndex]=\"idx\"\n                        [column]=\"column\"\n                        [record]=\"record.initialRecord\"\n                        [value]=\"record.mappedValues[column.name]\"\n                    ></ng-container>\n                </td>\n                @if (footerData() !== undefined) {\n                    <td\n                        mat-footer-cell\n                        *matFooterCellDef=\"let record\"\n                        [style.width]=\"options()?.columns?.widths?.[column.name]\"\n                        [ngStyle]=\"options()?.footer?.styles?.[column.name]?.()\"\n                        class=\"ppw-column-type-{{ column.type }}\"\n                    >\n                        @if (footerData()?.[column.name] !== undefined) {\n                            <ng-container\n                                ppwDynamicCell\n                                [rowIndex]=\"0\"\n                                [column]=\"column\"\n                                [record]=\"notUndefined(footerData())\"\n                                [value]=\"mapValue(column, footerData())\"\n                            ></ng-container>\n                        }\n                    </td>\n                }\n            </ng-container>\n        }\n        @if (expandable()) {\n            <ng-container matColumnDef=\"expand\">\n                <th mat-header-cell *matHeaderCellDef>&nbsp;</th>\n                <td mat-cell *matCellDef=\"let record\" [style.width]=\"'48px'\">\n                    <button\n                        mat-icon-button\n                        (click)=\"toggleExpand(record.initialRecord); $event.stopPropagation()\"\n                        class=\"ppw-table-expand-toggle-button\"\n                        [class.ppw-table-expand-toggle-button--expanded]=\"isExpanded(record.initialRecord)\"\n                    >\n                        <mat-icon>keyboard_arrow_down</mat-icon>\n                    </button>\n                </td>\n                @if (footerData() !== undefined) {\n                    <td mat-footer-cell *matFooterCellDef></td>\n                }\n            </ng-container>\n            <ng-container matColumnDef=\"expandedDetail\">\n                <td mat-cell *matCellDef=\"let record\" [attr.colspan]=\"columnNames().length\">\n                    <div\n                        class=\"ppw-table-expanded-row-container\"\n                        [class.ppw-table-expanded-row-container--expanded]=\"isExpanded(record.initialRecord)\"\n                    >\n                        <div class=\"ppw-table-expanded-row-content\">\n                            @if (expandableTemplate()) {\n                                <ng-container\n                                    *ngTemplateOutlet=\"\n                                        expandableTemplate()!;\n                                        context: { $implicit: record.initialRecord }\n                                    \"\n                                ></ng-container>\n                            }\n                        </div>\n                    </div>\n                </td>\n            </ng-container>\n        }\n\n        <tr mat-header-row *matHeaderRowDef=\"columnNames(); sticky: !!options()?.header?.sticky\"></tr>\n        <tr\n            mat-row\n            cdkDrag\n            [cdkDragDisabled]=\"!enableRowDrag()\"\n            *matRowDef=\"let row; columns: columnNames()\"\n            [class.ppw-table-row-enter]=\"!disableAnimations()\"\n            [class.highlight]=\"options()?.rows?.highlightOnHover\"\n            [class.clickable]=\"options()?.rows?.onClick || options()?.rows?.onCtrlClick || expandable()\"\n            [cdkDragLockAxis]=\"'y'\"\n            [cdkDragBoundary]=\"'tbody'\"\n        ></tr>\n        @if (expandable()) {\n            <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"ppw-table-expanded-row\"></tr>\n        }\n        @if (footerData() !== undefined) {\n            <tr mat-footer-row *matFooterRowDef=\"columnNames(); sticky: !!options()?.header?.sticky\"></tr>\n        }\n        <tr *matNoDataRow>\n            <td [attr.colspan]=\"columnNames().length\" class=\"ppw-table-no-data-row\">\n                @if (emptyPageTemplate(); as empty) {\n                    <ng-container *ngTemplateOutlet=\"empty\"></ng-container>\n                } @else if (emptyPageComponent) {\n                    <ng-container *ngComponentOutlet=\"emptyPageComponent\"></ng-container>\n                }\n            </td>\n        </tr>\n    </table>\n</section>\n\n<ng-template #headerTextCellTemplate let-column=\"column\">\n    {{ column.label }}\n</ng-template>\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core'\nimport { FormArray, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms'\nimport { MatTableDataSource } from '@angular/material/table'\nimport { AbstractTableComponent } from './abstract-table.component'\nimport { Column } from './columns/column'\nimport { TableRecord } from './models/table-record.model'\n\n@Component({\n    selector: 'ppw-form-table',\n    templateUrl: './table.component.html',\n    styleUrls: ['./table.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => FormTableComponent),\n            multi: true\n        }\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class FormTableComponent<TRecord> extends AbstractTableComponent<TRecord> implements OnInit {\n    /**\n     * Maps the given items into a local key-value pair to be used within\n     * the template. The original record is left intact so that it can still\n     * be passed along where necessary.\n     * @param items The items to map.\n     */\n    protected _mapToLocalKeyValuePairs(\n        items: FormArray<FormGroup>,\n        columns: Array<Column<TRecord, unknown>>,\n        disabledFn?: (record: TRecord) => boolean\n    ): Array<TableRecord<TRecord>> {\n        disabledFn ??= () => false\n\n        const records: FormGroup[] = items.controls ?? []\n\n        return records.map((record, index) => {\n            const mappedValues: Record<string, unknown> = {}\n            for (const column of columns) {\n                mappedValues[column.name] = this.mapValue(column, record)\n            }\n\n            // Ensure that properties that have no corresponding column are still available in the mapped local record.\n            return {\n                initialRecord: record,\n                mappedValues,\n                trackByValue: this.trackBy()(index, record as TRecord),\n                selectable: !disabledFn(record as TRecord)\n            } as TableRecord<TRecord>\n        })\n    }\n\n    public addControl(control: FormGroup): void {\n        const formGroups = this.data() as FormArray<FormGroup>\n        formGroups.push(control)\n        this.refreshDataSource(formGroups)\n    }\n\n    public removeControl(control: FormGroup): void {\n        const formGroups = (this.data() as FormArray<FormGroup>) ?? []\n        formGroups.removeAt(formGroups.controls.findIndex((fg) => fg === control))\n        this.refreshDataSource(formGroups)\n    }\n\n    private refreshDataSource(control: FormArray<FormGroup>): void {\n        const localRecords = this._mapToLocalKeyValuePairs(control, this.columns())\n        this.dataSource.set(new MatTableDataSource(localRecords))\n    }\n}\n","import { CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDropList } from '@angular/cdk/drag-drop'\nimport { NgComponentOutlet, NgForOf, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common'\nimport { NgModule } from '@angular/core'\nimport { MatCheckboxModule } from '@angular/material/checkbox'\nimport { MatRippleModule } from '@angular/material/core'\nimport { MatIconModule } from '@angular/material/icon'\nimport { MatTableModule } from '@angular/material/table'\nimport { DynamicCellDirective } from './cells/directives/dynamic-cell.directive'\nimport { PpwColumnCellDirective } from './column-directives/ppw-column-cell.directive'\nimport { PpwColumnHeaderDirective } from './column-directives/ppw-column-header.directive'\nimport { PpwColumnDirective } from './column-directives/ppw-column.directive'\nimport { PpwEmptyTablePageDirective } from './empty-page/ppw-empty-table-page.directive'\nimport { TableComponent } from './table.component'\nimport { FormTableComponent } from './form-table.component'\nimport { MatButtonModule } from '@angular/material/button'\nimport { MatSortModule } from '@angular/material/sort'\n\n@NgModule({\n    declarations: [\n        TableComponent,\n        FormTableComponent,\n        PpwColumnDirective,\n        PpwColumnHeaderDirective,\n        PpwColumnCellDirective,\n        PpwEmptyTablePageDirective\n    ],\n    imports: [\n        MatTableModule,\n        CdkDropList,\n        MatIconModule,\n        CdkDragHandle,\n        MatRippleModule,\n        MatCheckboxModule,\n        MatButtonModule,\n        NgStyle,\n        DynamicCellDirective,\n        CdkDrag,\n        NgIf,\n        NgForOf,\n        NgTemplateOutlet,\n        CdkDragPlaceholder,\n        NgComponentOutlet,\n        MatSortModule\n    ],\n    exports: [\n        TableComponent,\n        FormTableComponent,\n        PpwColumnDirective,\n        PpwColumnHeaderDirective,\n        PpwColumnCellDirective,\n        PpwEmptyTablePageDirective,\n        MatSortModule\n    ]\n})\nexport class PpwTableModule {}\n","import { Component, input, InputSignal } from '@angular/core'\nimport { MatProgressBar } from '@angular/material/progress-bar'\n\n@Component({\n    selector: 'ppw-loader',\n    imports: [MatProgressBar],\n    templateUrl: './loader.component.html',\n    styleUrl: './loader.component.scss'\n})\nexport class LoaderComponent {\n    public loading: InputSignal<boolean | null> = input<boolean | null>(false)\n}\n","<div class=\"ppw-loader\">\n    @if (loading()) {\n        <mat-progress-bar mode=\"indeterminate\" type=\"progressbar\"></mat-progress-bar>\n    } @else {\n        <div class=\"ppw-no-loader\">&nbsp;</div>\n    }\n    <div class=\"ppw-loader-content\">\n        <ng-content></ng-content>\n    </div>\n</div>\n<div [class.ppw-content-loading]=\"loading()\"></div>\n","import { NgTemplateOutlet, UpperCasePipe } from '@angular/common'\nimport { Component, input, InputSignal, output, OutputEmitterRef } from '@angular/core'\nimport { MatBadge } from '@angular/material/badge'\nimport { MatButton } from '@angular/material/button'\nimport { MatCard, MatCardActions, MatCardContent, MatCardHeader, MatCardTitle } from '@angular/material/card'\nimport { MatRipple } from '@angular/material/core'\nimport { TranslatePipe } from '@ngx-translate/core'\nimport { DashboardItemAction } from '../models/dashboard-item-action.model'\nimport { DashboardItem } from '../models/dashboard-item.model'\nimport { DashboardOptions } from '../models/dashboard-options.model'\n\n@Component({\n    selector: 'ppw-dashboard-items-table',\n    imports: [\n        MatCard,\n        MatCardTitle,\n        MatCardHeader,\n        MatBadge,\n        TranslatePipe,\n        NgTemplateOutlet,\n        MatRipple,\n        MatCardContent,\n        MatCardActions,\n        UpperCasePipe,\n        MatButton\n    ],\n    templateUrl: './dashboard-items-table.component.html',\n    styleUrl: './dashboard-items-table.component.scss'\n})\nexport class DashboardItemsTableComponent {\n    public dashboardItems: InputSignal<Array<DashboardItem>> = input.required()\n    public dashboardOptions: InputSignal<DashboardOptions | undefined> = input()\n    public executeAction: OutputEmitterRef<DashboardItemAction | undefined> = output()\n}\n","<div\n    class=\"ppw-dashboard-wrapper-container\"\n    [class.ppw-dashboard-items-left]=\"dashboardOptions()?.cardsAlignment === 'left'\"\n>\n    <div class=\"ppw-dashboard-wrapper\">\n        @for (item of dashboardItems(); track item) {\n            <mat-card class=\"dashboard-item\">\n                <mat-card-header\n                    [matBadge]=\"item.badgeContent\"\n                    [matBadgeHidden]=\"!item.badgeContent?.length\"\n                    [matBadgeOverlap]=\"true\"\n                    matBadgePosition=\"above after\"\n                    matBadgeSize=\"large\"\n                >\n                    <mat-card-title>{{ item.titleKey | translate }}</mat-card-title>\n                </mat-card-header>\n                @if (item.template) {\n                    <a\n                        href=\"\"\n                        (click)=\"\n                            $event.stopPropagation(); $event.preventDefault(); executeAction.emit(item.defaultAction)\n                        \"\n                        class=\"ppw-dashboard-anchor\"\n                    >\n                        <ng-container [ngTemplateOutlet]=\"item.template\"></ng-container>\n                    </a>\n                } @else {\n                    <i\n                        class=\"{{ item.iconClass }} ppw-dashboard-card-image\"\n                        mat-ripple\n                        [tabindex]=\"0\"\n                        (keyup.enter)=\"executeAction.emit(item.defaultAction)\"\n                        (click)=\"executeAction.emit(item.defaultAction)\"\n                    ></i>\n                }\n                <mat-card-content class=\"ppw-dashboard-item-content\">\n                    <p>{{ item.descriptionKey | translate }}</p>\n                </mat-card-content>\n                <mat-card-actions\n                    class=\"ppw-dashboard-item-actions ppw-dashboard-item-actions-direction--{{\n                        item.actionsDirection ?? 'row'\n                    }} ppw-dashboard-item-actions-alignment--{{ item.actionsAlignment ?? 'end' }}\"\n                >\n                    @for (action of item.actions; track action) {\n                        <button mat-button color=\"primary\" (click)=\"executeAction.emit(action)\">\n                            {{ action.labelKey | translate | uppercase }}\n                        </button>\n                    }\n                </mat-card-actions>\n            </mat-card>\n        }\n    </div>\n</div>\n","/*\n * Public API Surface of ng-common-components\n */\n\nexport * from './lib/enum/severity'\nexport * from './lib/message-bar/message-bar.component'\nexport * from './lib/expandable-card/expandable-card.component'\nexport * from './lib/search-filter/search-filter.component'\nexport * from './lib/table/column-directives/ppw-column.directive'\nexport * from './lib/table/column-directives/ppw-column-cell.directive'\nexport * from './lib/table/column-directives/ppw-column-header.directive'\nexport * from './lib/table/empty-page/ppw-empty-table-page.directive'\nexport * from './lib/table/options/table-options'\nexport * from './lib/table/providers'\nexport * from './lib/table/models/table-record.model'\nexport * from './lib/table/models/sort-change.model'\nexport * from './lib/table/table.component'\nexport * from './lib/table/table.module'\nexport * from './lib/loader/loader.component'\nexport * from './lib/table/form-table.component'\nexport * from './lib/dashboard-items/models/dashboard-item.model'\nexport * from './lib/dashboard-items/models/dashboard-item-action.model'\nexport * from './lib/dashboard-items/models/dashboard-options.model'\nexport * from './lib/dashboard-items/dashboard-items-table/dashboard-items-table.component'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i8.DynamicCellDirective"],"mappings":"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"}