@porscheinformatik/material-addons 22.0.11 → 22.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/porscheinformatik-material-addons.mjs +544 -578
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
- package/package.json +1 -1
- package/themes/pbv.scss +1 -0
- package/types/porscheinformatik-material-addons.d.ts +417 -401
- package/types/porscheinformatik-material-addons.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"porscheinformatik-material-addons.mjs","sources":["../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.ts","../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.html","../../../projects/material-addons/src/lib/material-action-button/material-action-button.module.ts","../../../projects/material-addons/src/lib/button/mad-basic-button.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.html","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.ts","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.html","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.ts","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.html","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.ts","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.html","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.ts","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.html","../../../projects/material-addons/src/lib/button/mad-button/mad-button.directive.ts","../../../projects/material-addons/src/lib/button/mad-button-group/mad-button-group.component.ts","../../../projects/material-addons/src/lib/button/button.module.ts","../../../projects/material-addons/src/lib/numeric-field/number-format.service.ts","../../../projects/material-addons/src/lib/size-change/size-change.directive.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.html","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.html","../../../projects/material-addons/src/lib/readonly/readonly-form-field.module.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.directive.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.module.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.directive.ts","../../../projects/material-addons/src/lib/card/card.component.ts","../../../projects/material-addons/src/lib/card/card.component.html","../../../projects/material-addons/src/lib/throttle-click/throttle-click.module.ts","../../../projects/material-addons/src/lib/card/card.module.ts","../../../projects/material-addons/src/lib/quick-list/base-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.html","../../../projects/material-addons/src/lib/quick-list/quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.component.html","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.html","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.html","../../../projects/material-addons/src/lib/quick-list/quick-list.module.ts","../../../projects/material-addons/src/lib/table/table.component.ts","../../../projects/material-addons/src/lib/table/table.component.html","../../../projects/material-addons/src/lib/table/table.module.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.html","../../../projects/material-addons/src/lib/data-table/configuration/data-table-action-type.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter.directive.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-sort-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-action-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-data-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-filter-util.ts","../../../projects/material-addons/src/lib/data-table/data-table-persistence.service.ts","../../../projects/material-addons/src/lib/data-table/configuration/data-table-global-configuration.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.html","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.html","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-header.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-column-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-expandable-column-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-expandable-cell-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.html","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-cell-definition.directive.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.html","../../../projects/material-addons/src/lib/stepper/mad-stepper-animation.ts","../../../projects/material-addons/src/lib/stepper/stepper.component.ts","../../../projects/material-addons/src/lib/stepper/step.component.html","../../../projects/material-addons/src/lib/stepper/stepper.component.html","../../../projects/material-addons/src/lib/stepper/stepper.module.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-header/content-header.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-header/content-header.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container/content-panel-container.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container/content-panel-container.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.html","../../../projects/material-addons/src/lib/layout/content-panel/main-container/main-container.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/main-container/main-container.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel.module.ts","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.component.ts","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.component.html","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.module.ts","../../../projects/material-addons/src/lib/carousel/carousel-short-text-directive/carousel-short-text.directive.ts","../../../projects/material-addons/src/lib/carousel/carousel-slide-directive/carousel-slide.directive.ts","../../../projects/material-addons/src/lib/carousel/carousel.component.ts","../../../projects/material-addons/src/lib/carousel/carousel.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.component.ts","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar-item/sidebar-item.component.ts","../../../projects/material-addons/src/lib/layout/sidebar/sidebar-item/sidebar-item.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.module.ts","../../../projects/material-addons/src/lib/layout/sidebar-layout/sidebar-layout.component.ts","../../../projects/material-addons/src/lib/layout/sidebar-layout/sidebar-layout.component.html","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.service.ts","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.component.ts","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.component.html","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.module.ts","../../../projects/material-addons/src/lib/material-addons.module.ts","../../../projects/material-addons/src/lib/file-upload/drag-and-drop.directive.ts","../../../projects/material-addons/src/lib/file-upload/file-upload.component.ts","../../../projects/material-addons/src/lib/file-upload/file-upload.component.html","../../../projects/material-addons/src/lib/tile/tile.component.ts","../../../projects/material-addons/src/lib/tile/tile.component.html","../../../projects/material-addons/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/material-addons/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/material-addons/src/version.ts","../../../projects/material-addons/src/lib/alert/alert-configuration.ts","../../../projects/material-addons/src/lib/alert/alert.component.ts","../../../projects/material-addons/src/lib/alert/alert.component.html","../../../projects/material-addons/src/public_api.ts","../../../projects/material-addons/src/porscheinformatik-material-addons.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'mad-material-action-button',\n templateUrl: './material-action-button.component.html',\n styleUrls: ['./material-action-button.component.scss'],\n imports: [RouterLink, MatButtonModule, MatTooltipModule, MatIconModule],\n})\nexport class MaterialActionButtonComponent {\n actionName = input<string>('');\n id = input<string>('');\n icon = input<string>('add');\n routerLink = input<string>('');\n liftHigher = input(true);\n liftHigher2 = input(false);\n}\n","<div class=\"material-action-button\" [class.lift-higher]=\"liftHigher()\" [class.lift-higher-2]=\"liftHigher2()\">\n @if (liftHigher2()) {\n <a\n mat-mini-fab\n class=\"mat-accent\"\n [attr.id]=\"id() || null\"\n [routerLink]=\"routerLink()\"\n [matTooltip]=\"actionName()\"\n matTooltipPosition=\"left\"\n [attr.aria-label]=\"actionName() || null\"\n >\n <mat-icon>{{ icon() }}</mat-icon>\n </a>\n } @else {\n <a\n mat-fab\n class=\"mat-primary\"\n [attr.id]=\"id() || null\"\n [routerLink]=\"routerLink()\"\n [matTooltip]=\"actionName()\"\n matTooltipPosition=\"left\"\n [attr.aria-label]=\"actionName() || null\"\n >\n <mat-icon>{{ icon() }}</mat-icon>\n </a>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { MaterialActionButtonComponent } from './material-action-button.component';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule, MaterialActionButtonComponent],\n exports: [MaterialActionButtonComponent],\n})\nexport class MaterialActionButtonModule {}\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n@Directive()\nexport abstract class MadBasicButton {\n readonly type = input<string | undefined>();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly title = input('');\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-danger-button',\n templateUrl: './danger-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DangerButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"filled\" class=\"mad-danger\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-link-button',\n templateUrl: './link-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"text\" class=\"mad-primary\" [title]=\"title()\" [type]=\"type()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-icon-button',\n templateUrl: './icon-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matIconButton class=\"mat-primary\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-outline-button',\n templateUrl: './outline-button.component.html',\n styleUrls: ['./outline-button.component.scss'],\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OutlineButtonComponent extends MadBasicButton {\n readonly color = input<ThemePalette>('primary');\n}\n","<button\n data-cy=\"button\"\n matButton=\"outlined\"\n class=\"mad-outline\"\n [class.mad-primary]=\"color() === 'primary'\"\n [class.mad-accent]=\"color() === 'accent'\"\n [class.mad-warn]=\"color() === 'warn'\"\n [type]=\"type()\"\n [title]=\"title()\"\n [disabled]=\"disabled()\"\n>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-primary-button',\n templateUrl: './primary-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PrimaryButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"filled\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { Directive, ElementRef, Optional, Renderer2, booleanAttribute, effect, input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatAnchor, MatButton } from '@angular/material/button';\n\n@Directive({\n selector: '[madButton]',\n standalone: true,\n})\nexport class MadButtonDirective {\n static readonly UPPERCASE_CLASS = 'mad-uppercase';\n static readonly OUTLINE_CLASS = 'mad-outline';\n static readonly DEFAULT_COLOR = 'primary';\n\n readonly color = input<ThemePalette>();\n readonly outline = input(true, { transform: booleanAttribute });\n readonly uppercase = input(true, { transform: booleanAttribute });\n\n private readonly matComponent: MatAnchor | MatButton;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLButtonElement | HTMLAnchorElement>,\n @Optional() anchor: MatAnchor,\n @Optional() button: MatButton,\n ) {\n this.matComponent = anchor || button;\n if (!this.matComponent) {\n console.error('MadButtonDirective needs to be applied on a MatButton');\n }\n\n effect(() => {\n this.setUppercase(this.uppercase());\n this.setOutline(this.outline());\n this.setColor(this.color());\n });\n }\n\n setUppercase(value: boolean): void {\n this.addOrRemoveClass(value, MadButtonDirective.UPPERCASE_CLASS);\n }\n\n setOutline(value: boolean): void {\n this.addOrRemoveClass(value, MadButtonDirective.OUTLINE_CLASS);\n }\n\n addOrRemoveClass(condition: boolean, className: string): void {\n if (condition) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n private setColor(color: ThemePalette | undefined): void {\n const resolvedColor = color || MadButtonDirective.DEFAULT_COLOR;\n\n if (this.matComponent) {\n this.matComponent.color = resolvedColor;\n }\n\n this.setColorClass(resolvedColor);\n }\n\n private setColorClass(color: ThemePalette): void {\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-primary');\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-accent');\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-warn');\n\n if (color) {\n this.renderer.addClass(this.elementRef.nativeElement, `mad-${color}`);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'mad-button-group',\n template: '<ng-content></ng-content>',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MadButtonGroupComponent {\n @HostBinding('class.mad-button-group') setClass = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from './primary-button/primary-button.component';\nimport { OutlineButtonComponent } from './outline-button/outline-button.component';\nimport { LinkButtonComponent } from './flat-button/link-button.component';\nimport { IconButtonComponent } from './icon-button/icon-button.component';\nimport { DangerButtonComponent } from './danger-button/danger-button.component';\nimport { MadButtonDirective } from './mad-button/mad-button.directive';\nimport { MadButtonGroupComponent } from './mad-button-group/mad-button-group.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n PrimaryButtonComponent,\n OutlineButtonComponent,\n LinkButtonComponent,\n DangerButtonComponent,\n IconButtonComponent,\n MadButtonDirective,\n MadButtonGroupComponent,\n ],\n exports: [\n PrimaryButtonComponent,\n OutlineButtonComponent,\n LinkButtonComponent,\n DangerButtonComponent,\n IconButtonComponent,\n MadButtonDirective,\n MadButtonGroupComponent,\n ],\n})\nexport class ButtonModule {}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\nexport declare interface FormatOptions {\n decimalPlaces?: number;\n\n finalFormatting?: boolean;\n\n autofillDecimals?: boolean;\n}\n\nexport declare interface StripOptions {\n decimalPlaces?: number;\n\n removeLeadingZeros?: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NumberFormatService {\n static readonly NEGATIVE = '-';\n static readonly NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n static readonly DEFAULT_FINAL_FORMATTING = true;\n static readonly DEFAULT_DECIMAL_PLACES = 2;\n static readonly DEFAULT_AUTOFILL_DECIMALS = false;\n static readonly DEFAULT_REMOVE_LEADING_ZEROS = false;\n\n decimalSeparator: ',' | '.';\n groupingSeparator: ',' | '.';\n\n allowedKeys: string[] = [];\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n this.prepareSeparators(locale);\n }\n\n /**\n * Call this if the locale is changed to update the separators.\n * @param locale the new locale\n */\n public prepareSeparators(locale: string) {\n // try to get the current formatting\n const localeDecimalSeparator = (1.1).toLocaleString(locale).charAt(1);\n this.decimalSeparator = localeDecimalSeparator === ',' ? ',' : '.';\n this.groupingSeparator = localeDecimalSeparator === ',' ? '.' : ',';\n\n this.allowedKeys = [...NumberFormatService.NUMBERS, NumberFormatService.NEGATIVE, this.decimalSeparator];\n }\n\n static valueIsSet(value: any): boolean {\n return typeof value !== 'undefined' && value !== null && (typeof value !== 'string' || value.length !== 0);\n }\n\n format(value: number, options?: Partial<FormatOptions>): string {\n return NumberFormatService.valueIsSet(value)\n ? this.formatNumber(value.toString().replace(new RegExp('[.]', 'g'), this.decimalSeparator), options)\n : '';\n }\n\n formatNumber(value: string, options?: Partial<FormatOptions>): string {\n const autofillDecimals = this.valueOrDefault(options?.autofillDecimals, NumberFormatService.DEFAULT_AUTOFILL_DECIMALS);\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const finalFormatting = this.valueOrDefault(options?.finalFormatting, NumberFormatService.DEFAULT_FINAL_FORMATTING);\n\n let result = this.strip(value, { decimalPlaces, removeLeadingZeros: finalFormatting });\n\n /* add grouping separator */\n const decimalIndex = result.indexOf(this.decimalSeparator);\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n let i = decimalIndex > -1 ? decimalIndex : result.length;\n while (i > (isNegative ? 4 : 3)) {\n i -= 3;\n result = result.substring(0, i) + this.groupingSeparator + result.substring(i, result.length);\n }\n\n if (finalFormatting) {\n if (decimalPlaces > 0 && !!result) {\n /* autofill decimal places */\n let actualDecimalIndex = result.indexOf(this.decimalSeparator);\n if (autofillDecimals) {\n if (actualDecimalIndex === -1) {\n actualDecimalIndex = result.length;\n result += this.decimalSeparator;\n }\n\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n actualDecimalIndex = result.indexOf(this.decimalSeparator);\n\n const actualDecimalPlaces = result.length - actualDecimalIndex - 1;\n for (let j = 0; j < decimalPlaces - actualDecimalPlaces; j++) {\n result += '0';\n }\n } else {\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n }\n }\n }\n return result;\n }\n\n strip(value: string, options?: StripOptions): string {\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const removeLeadingZeros = this.valueOrDefault(options?.removeLeadingZeros, NumberFormatService.DEFAULT_REMOVE_LEADING_ZEROS);\n\n let result = '';\n let indexDecimalSep = -1;\n let j = -1;\n let ignoredChars = 0;\n for (const char of value) {\n j++;\n if (this.allowedKeys.includes(char)) {\n if (char === this.decimalSeparator) {\n if (decimalPlaces === 0) {\n /* dismiss content after a decimal separator, when no places allowed */\n break;\n } else if (indexDecimalSep > -1) {\n /* ignore subsequent decimal separators */\n continue;\n }\n indexDecimalSep = j;\n }\n if (char === '0' && removeLeadingZeros) {\n /* remove leading zero only if it's not the only zero in the 'value' string */\n if ((result.length === 0 && j + 1 !== value.length) || result === NumberFormatService.NEGATIVE) {\n ignoredChars++;\n continue;\n }\n }\n if (char === NumberFormatService.NEGATIVE && j > 0) {\n /* dismiss content after a negative sign not on first position */\n break;\n }\n if (indexDecimalSep > -1 && result.length + ignoredChars > indexDecimalSep + decimalPlaces) {\n /* dismiss content after maximum decimal places reached */\n break;\n }\n result += char;\n } else if (char === this.groupingSeparator) {\n if (indexDecimalSep === -1) {\n ignoredChars++;\n }\n } else {\n /* dismiss content after a invalid character */\n break;\n }\n }\n return result;\n }\n\n private addMissingLeadingZero(result: string, actualDecimalIndex: number): string {\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n /* autoadd a zero before decimal separator, when it's missing */\n if (actualDecimalIndex === 0) {\n result = '0' + result;\n }\n /* autoadd a zero before decimal separator, when it's missing, for negative values */\n if (actualDecimalIndex === 1 && isNegative) {\n result = result[0] + '0' + result.substring(1, result.length);\n }\n return result;\n }\n\n private valueOrDefault(value: any, defaultValue: any): any {\n return NumberFormatService.valueIsSet(value) ? value : defaultValue;\n }\n}\n","import { Directive, ElementRef, OnDestroy, output } from '@angular/core';\n\n@Directive({\n selector: '[madSizeChange]',\n})\nexport class SizeChangeDirective implements OnDestroy {\n readonly madSizeChange = output<ResizeObserverEntry>();\n\n private readonly changes = new ResizeObserver((resizes) => {\n resizes.forEach((resize) => this.madSizeChange.emit(resize));\n });\n\n constructor(private elRef: ElementRef<HTMLElement>) {\n this.changes.observe(elRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.changes.disconnect();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n InjectionToken,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NumberFormatService } from '../../numeric-field/number-format.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { SizeChangeDirective } from '../../size-change/size-change.directive';\n\nexport interface FormFieldDefaultOptions {\n textAlign?: 'left' | 'right';\n unitPosition?: 'left' | 'right';\n textOverflow?: 'ellipsis' | 'clip' | '';\n\n multiline?: boolean;\n multilineAutosize?: boolean;\n rows?: number;\n shrinkIfEmpty?: boolean;\n\n autofillDecimals?: boolean;\n decimalPlaces?: number;\n formatNumber?: boolean;\n roundDisplayValue?: boolean;\n}\n\nexport const MAD_READONLY_FORM_FIELD_DEFAULT_CONFIGURATION = new InjectionToken<FormFieldDefaultOptions>(\n 'mad-readonly-form-field-configuration',\n);\n\nconst DEFAULT_TEXT_ALIGN = 'left';\nconst DEFAULT_UNIT_POSITION = 'left';\nconst DEFAULT_TEXT_OVERFLOW = 'ellipsis';\n\nconst DEFAULT_MULTILINE = false;\nconst DEFAULT_MULTILINE_AUTOSIZE = false;\nconst DEFAULT_ROWS = 2;\nconst DEFAULT_SHRINK_IF_EMPTY = false;\n\nconst DEFAULT_AUTOFILL_DECIMALS = false;\nconst DEFAULT_DECIMAL_PLACES = 2;\nconst DEFAULT_FORMAT_NUMBER = false;\nconst DEFAULT_ROUND_DISPLAY_VALUE = false;\n\nconst THIN_SPACE = ' ';\n\n/**\n * Read-only mat-form-field representation of provided value\n *\n * @author Stefan Laesser\n */\n\n@Component({\n selector: 'mad-readonly-form-field',\n templateUrl: './readonly-form-field.component.html',\n styleUrls: ['./readonly-form-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n NgStyle,\n NgClass,\n MatTooltipModule,\n TextFieldModule,\n MatIconModule,\n SizeChangeDirective,\n ],\n})\nexport class ReadOnlyFormFieldComponent {\n private readonly defaultConfig = inject(MAD_READONLY_FORM_FIELD_DEFAULT_CONFIGURATION, { optional: true });\n private readonly numberFormatService = inject(NumberFormatService);\n\n readonly inputEl = viewChild<ElementRef<HTMLInputElement> | undefined>('inputEl');\n\n readonly label = input<string>();\n\n readonly value = input<any>();\n readonly useProjectedContent = input(false);\n readonly textAlign = input<'right' | 'left'>(this.defaultConfig?.textAlign ?? DEFAULT_TEXT_ALIGN);\n readonly textOverflow = input<'ellipsis' | 'clip' | ''>(this.defaultConfig?.textOverflow ?? DEFAULT_TEXT_OVERFLOW);\n readonly errorMessage = input<string | null>(null);\n readonly id = input<string>();\n\n readonly unit = input<string | null>(null);\n readonly unitPosition = input<'right' | 'left'>(this.defaultConfig?.unitPosition ?? DEFAULT_UNIT_POSITION);\n\n readonly formatNumber = input(this.defaultConfig?.formatNumber ?? DEFAULT_FORMAT_NUMBER);\n readonly decimalPlaces = input(this.defaultConfig?.decimalPlaces ?? DEFAULT_DECIMAL_PLACES);\n readonly roundDisplayValue = input(this.defaultConfig?.roundDisplayValue ?? DEFAULT_ROUND_DISPLAY_VALUE);\n readonly autofillDecimals = input(this.defaultConfig?.autofillDecimals ?? DEFAULT_AUTOFILL_DECIMALS);\n\n readonly multiline = input(this.defaultConfig?.multiline ?? DEFAULT_MULTILINE);\n /**\n * if cdkTextareaAutosize is active for textareas\n */\n readonly multilineAutoSize = input(this.defaultConfig?.multilineAutosize ?? DEFAULT_MULTILINE_AUTOSIZE);\n /*\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n readonly shrinkIfEmpty = input(this.defaultConfig?.shrinkIfEmpty ?? DEFAULT_SHRINK_IF_EMPTY);\n readonly rows = input<number>(this.defaultConfig?.rows ?? DEFAULT_ROWS);\n\n /**\n * suffix iocon\n */\n readonly suffix = input<string>();\n /**\n * prefix iocon\n */\n readonly prefix = input<string>();\n\n readonly suffixClickedEmitter = output();\n readonly prefixClickedEmitter = output();\n\n protected readonly errorMatcher = computed(() => ({\n isErrorState: () => !!this.errorMessage(),\n }));\n\n private readonly displayValue = computed(() => {\n const value = this.value();\n if (!NumberFormatService.valueIsSet(value)) return '-';\n else if (this.formatNumber() && typeof value === 'number')\n return this.numberFormatService.format(value, {\n decimalPlaces: this.decimalPlaces(),\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals(),\n });\n else return value;\n });\n\n protected readonly displayValueWithUnit = computed(() => {\n // If the unit should be positioned to the right, and the text is left-aligned it needs to \"follow\" the text, hence we add it to it.\n const isUnitTrailing = this.unit() && this.unitPosition() === 'right' && this.textAlign() === 'left';\n if (this.multiline() || !isUnitTrailing) return this.displayValue();\n // The THIN_SPACE (U+2009) simulates the padding used previously the most.\n return `${this.displayValue()}${THIN_SPACE}${this.unit()}`;\n });\n\n protected readonly actualAmountOfRows = computed(() => {\n if (!NumberFormatService.valueIsSet(this.value()) && this.shrinkIfEmpty()) return 1;\n else return this.rows();\n });\n\n protected readonly sizeChanges = signal<ResizeObserverEntry | undefined>(undefined, {\n equal: (a, b) => a?.contentRect.width === b?.contentRect.width,\n });\n\n protected toolTipForInputEnabled = computed(() => {\n const input = this.inputEl()?.nativeElement;\n // This is needed to re-compute this signal when the size is updated\n const sizeChanges = this.sizeChanges();\n if (sizeChanges && input && this.textOverflow() === 'ellipsis') {\n return input.offsetWidth < input.scrollWidth;\n }\n return false;\n });\n\n protected toolTipText = computed(() => {\n if (!this.unit()) {\n return this.value();\n }\n return this.unitPosition() === 'left' ? `${this.unit()} ${this.value()}` : `${this.value()} ${this.unit()}`;\n });\n\n suffixClicked() {\n this.suffixClickedEmitter.emit();\n }\n\n prefixClicked() {\n this.prefixClickedEmitter.emit();\n }\n}\n","<mat-form-field class=\"form-group mad-read-only\">\n <mat-label>{{ label() }}</mat-label>\n @if (!multiline()) {\n <input\n #inputEl\n (madSizeChange)=\"sizeChanges.set($event)\"\n [style.text-overflow]=\"textOverflow()\"\n [disabled]=\"!useProjectedContent()\"\n [errorStateMatcher]=\"errorMatcher()\"\n [id]=\"id()\"\n [matTooltipDisabled]=\"!toolTipForInputEnabled()\"\n [matTooltip]=\"toolTipText()\"\n [ngClass]=\"'text-' + textAlign() + ' content'\"\n [ngModel]=\"displayValueWithUnit()\"\n [ngStyle]=\"{ display: useProjectedContent() ? 'none' : 'block' }\"\n matInput\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"right\"\n readonly\n />\n } @else {\n <textarea\n [ngStyle]=\"{ display: useProjectedContent() ? 'none' : 'block' }\"\n [rows]=\"actualAmountOfRows()\"\n [ngModel]=\"displayValueWithUnit()\"\n class=\"multiline content\"\n [errorStateMatcher]=\"errorMatcher()\"\n [id]=\"id()\"\n readonly\n [disabled]=\"!useProjectedContent()\"\n matInput\n [cdkTextareaAutosize]=\"multilineAutoSize()\"\n >\n </textarea>\n }\n\n @if (useProjectedContent()) {\n <ng-content />\n }\n <mat-error>{{ errorMessage() }}</mat-error>\n @if (suffix()) {\n <mat-icon data-cy=\"suffix-icon\" (click)=\"suffixClicked()\" class=\"pointer mat-primary\" matSuffix>{{ suffix() }} </mat-icon>\n }\n @if (prefix()) {\n <mat-icon data-cy=\"prefix-icon\" (click)=\"prefixClicked()\" class=\"pointer mat-primary\" matPrefix>{{ prefix() }} </mat-icon>\n }\n @if (unit() && unitPosition() === 'left') {\n <span [style.padding-right]=\"'5px'\" matTextPrefix>{{ unit() }}</span>\n } @else if (unit() && textAlign() === 'right') {\n <span [style.padding-left]=\"'25px'\" matTextSuffix>{{ unit() }}</span>\n }\n</mat-form-field>\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { ReadOnlyFormFieldComponent } from '../readonly-form-field/readonly-form-field.component';\n\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * Wraps a mat-form-field to replace it by a readOnly representation if necessary\n *\n * @author Stefan Laesser\n */\n@Component({\n selector: 'mad-readonly-form-field-wrapper',\n templateUrl: './readonly-form-field-wrapper.component.html',\n styleUrls: ['./readonly-form-field-wrapper.component.css'],\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n imports: [ReadOnlyFormFieldComponent, ObserversModule],\n})\nexport class ReadOnlyFormFieldWrapperComponent implements OnInit, AfterViewInit, OnChanges, AfterViewChecked {\n @ViewChild('contentWrapper', { static: false })\n originalContent: ElementRef;\n @ViewChild('readOnlyContentWrapper', { static: false })\n readOnlyContentWrapper: ElementRef;\n\n /**\n * If set to \"false\", the contained mat-form-field is rendered in all it's glory.\n * If set to \"true\", a readonly representation of the value is shown using the mat-form-fields label.\n */\n @Input() readonly = true;\n\n /**\n * This input *MUST MATCH* the mat-form-field value to ensure correct data\n * binding and formatting of readOnly representation!\n */\n @Input('value') value?: any;\n\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() id: string;\n /**\n * If set to \"false\", a readonly input will be rendered.\n * If set to \"true\", a readonly textarea will be rendered instead.\n */\n @Input() multiline = false;\n\n /**\n * Defines the rows for the readonly textarea.\n */\n @Input() rows: number;\n\n /**\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n @Input() hideIconInReadOnlyMode = false;\n /**\n * suffix iocon\n */\n @Input() suffix: string;\n /**\n * prefix iocon\n */\n @Input() prefix: string;\n /**\n * if cdkTextareaAutosize is active for textareas\n */\n @Input() multilineAutoSize = false;\n @Output() suffixClickedEmitter = new EventEmitter();\n @Output() prefixClickedEmitter = new EventEmitter();\n\n /**\n * Automatically taken from the contained <mat-label>\n */\n label: string;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private rootFormGroup: FormGroupDirective,\n ) {}\n\n ngOnInit(): void {\n this.doRendering();\n }\n\n ngAfterViewInit(): void {\n this.doRendering();\n this.extractValue();\n }\n\n ngAfterViewChecked(): void {}\n\n ngOnChanges(_: SimpleChanges): void {\n this.doRendering();\n }\n\n getLabel(): string {\n if (!this.label) {\n this.extractLabel();\n }\n return this.label;\n }\n\n suffixClicked() {\n this.suffixClickedEmitter.emit(null);\n }\n\n prefixClicked() {\n this.prefixClickedEmitter.emit(null);\n }\n\n private doRendering(): void {\n if (!this.originalContent) {\n return;\n }\n if (!this.readonly) {\n this.correctWidth();\n return;\n }\n\n setTimeout(() => {\n this.extractLabel();\n this.extractValue();\n });\n\n this.changeDetector.detectChanges();\n }\n\n private extractLabel(): void {\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return null;\n }\n const labelElement = this.originalContent.nativeElement.querySelector('mat-label');\n this.label = labelElement ? labelElement.innerHTML : 'mat-label is missing!';\n }\n\n private extractValue(): void {\n if (this.value) {\n return;\n }\n const form = this.rootFormGroup.form;\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return;\n }\n const input = this.originalContent?.nativeElement?.querySelector('input');\n if (!input) {\n return;\n }\n const formControlName = input.getAttribute('formControlName');\n if (!formControlName) {\n return;\n }\n if (form && form.get(formControlName)) {\n this.value = form.get(formControlName).getRawValue();\n }\n }\n\n private correctWidth(): void {\n const formField = this.originalContent.nativeElement.querySelector('mat-form-field');\n if (formField) {\n formField.setAttribute('style', 'width:100%');\n }\n }\n}\n","<div #contentWrapper [hidden]=\"readonly\">\n <ng-content></ng-content>\n</div>\n\n<div #readOnlyContentWrapper>\n @if (!!readonly) {\n <mad-readonly-form-field\n [label]=\"getLabel()\"\n [value]=\"value\"\n [textAlign]=\"textAlign\"\n [formatNumber]=\"formatNumber\"\n [decimalPlaces]=\"decimalPlaces\"\n [roundDisplayValue]=\"roundValue\"\n [autofillDecimals]=\"autofillDecimals\"\n [unit]=\"unit\"\n [unitPosition]=\"unitPosition\"\n [errorMessage]=\"errorMessage\"\n [multiline]=\"multiline\"\n [rows]=\"rows\"\n [shrinkIfEmpty]=\"shrinkIfEmpty\"\n [id]=\"id\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [multilineAutoSize]=\"multilineAutoSize\"\n (suffixClickedEmitter)=\"suffixClicked()\"\n (prefixClickedEmitter)=\"prefixClicked()\"\n >\n </mad-readonly-form-field>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ReadOnlyFormFieldWrapperComponent } from './readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nimport { ReadOnlyFormFieldComponent } from './readonly-form-field/readonly-form-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormGroupDirective, FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatTooltipModule,\n MatIconModule,\n ReadOnlyFormFieldComponent,\n ReadOnlyFormFieldWrapperComponent,\n ],\n exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n providers: [FormGroupDirective],\n})\nexport class ReadOnlyFormFieldModule {}\n","/*\n * Copyright (c) 2018-2020 Porsche Informatik. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatService } from './number-format.service';\n\nconst BACK_KEYCODE = 8;\nconst SPACE_KEYCODE = 32;\nconst DEL_KEYCODE = 46;\nconst CONTROL_KEYCODES_UPPER_BORDER = 46;\nconst OTHER_CONTROL_KEYS = new Set([224, 91, 93]);\n\n@Directive({\n selector: '[madNumericField]',\n host: {\n '[class.text-right]': 'textAlign === \"right\"',\n '(change)': 'onChange(getValueForFormControl())',\n '(input)': 'onChange(getValueForFormControl())',\n '(blur)': 'onTouched()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumericFieldDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class NumericFieldDirective implements OnInit, OnDestroy, AfterViewChecked, ControlValueAccessor {\n @Input('textAlign') textAlign: 'right' | 'left' = 'right';\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'right';\n @Output('numericValueChange') numericValueChanged = new EventEmitter<number>();\n\n private displayValue = '';\n private originalValue = NaN;\n private _numericValue: number;\n private inputChangeListener: () => void;\n private keyupListener: () => void;\n private keydownListener: () => void;\n\n @Input('numericValue')\n set numericValue(value: number) {\n if (this._numericValue !== value && !(isNaN(this._numericValue) && (isNaN(value) || value === null))) {\n this.originalValue = value;\n // Don't roundOrTruncate if value was set to empty otherwise input value will be set to 0 instead of empty\n // which happens when an input is being reset\n this._numericValue = value === null || value === undefined ? value : this.roundOrTruncate(value); // eslint-disable-line\n this.handleInputChanged();\n }\n }\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(\n private renderer: Renderer2,\n private inputEl: ElementRef,\n private numberFormatService: NumberFormatService,\n ) {}\n\n /* Control Values Accessor Stuff below */\n // eslint-disable-next-line\n onChange: any = () => {};\n // eslint-disable-next-line\n onTouched: any = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(): void {\n // Dont need to implement since its just a directive\n }\n\n writeValue(value: number): void {\n this.numericValue = value;\n }\n\n ngOnInit(): void {\n /* needs to be parsed as number explicitly as it comes as string from user input */\n this.decimalPlaces = parseInt(this.decimalPlaces.toString(), 10);\n\n this.inputChangeListener = this.renderer.listen(this.inputEl.nativeElement, 'blur', (event) => {\n this.formatInput(event.target, true);\n });\n\n this.keyupListener = this.renderer.listen(this.inputEl.nativeElement, 'keyup', (event) => {\n if (event.keyCode === BACK_KEYCODE || (event.keyCode >= CONTROL_KEYCODES_UPPER_BORDER && !OTHER_CONTROL_KEYS.has(event.keyCode))) {\n this.formatInput(event.target, false);\n }\n });\n\n this.keydownListener = this.renderer.listen(this.inputEl.nativeElement, 'keydown', (event) => {\n const value: string = event.target.value;\n if (\n this.numberFormatService.allowedKeys.includes(event.key) ||\n (event.keyCode <= CONTROL_KEYCODES_UPPER_BORDER && event.keyCode > 0 && event.keyCode !== SPACE_KEYCODE) ||\n event.metaKey ||\n event.ctrlKey ||\n event.altKey\n ) {\n /* allow negative sign only as first character and none exists outside of text selection */\n const indexNegativeSign = value.indexOf(NumberFormatService.NEGATIVE);\n if (\n event.key === NumberFormatService.NEGATIVE &&\n (event.target.selectionStart > 0 || indexNegativeSign > -1) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexNegativeSign >= event.target.selectionStart && indexNegativeSign <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* no duplicate decimal separators */\n const indexDecimalSep = value.indexOf(this.numberFormatService.decimalSeparator);\n if (\n event.key === this.numberFormatService.decimalSeparator &&\n (indexDecimalSep > -1 || this.decimalPlaces === 0) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexDecimalSep >= event.target.selectionStart && indexDecimalSep <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* prevent too many decimal places */\n if (\n NumberFormatService.NUMBERS.includes(event.key) &&\n indexDecimalSep > -1 &&\n indexDecimalSep < event.target.selectionStart &&\n event.target.selectionStart === event.target.selectionEnd &&\n value.length > indexDecimalSep + this.decimalPlaces\n ) {\n return false;\n }\n\n /* when deleting thousand separator, remove the digit before or after it */\n const cursorStart = event.target.selectionStart;\n\n if (cursorStart === event.target.selectionEnd) {\n if (event.keyCode === BACK_KEYCODE && value.substr(cursorStart - 1, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart - 2) + value.substring(cursorStart - 1, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart - 1;\n return false;\n } else if (event.keyCode === DEL_KEYCODE && value.substr(cursorStart, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart + 1) + value.substring(cursorStart + 2, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart + 1;\n return false;\n }\n }\n this.originalValue = NaN;\n } else {\n return false;\n }\n return true;\n });\n }\n\n ngOnDestroy(): void {\n this.detachListener();\n }\n\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n handleInputChanged(): void {\n // Call in set timeout to avoid Expression has changed after it has been checked error.\n // Sometimes the value changes because we cut off decimal places\n setTimeout(() => {\n this.updateInput(\n this.numberFormatService.format(this._numericValue, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals,\n }),\n );\n }, 1);\n }\n\n formatInput(element: HTMLInputElement, finalFormatting: boolean): void {\n const cursorPos = element.selectionStart;\n const length = element.value.length;\n const setCursor = this.displayValue !== element.value;\n const textFormatted = this.numberFormatService.formatNumber(element.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting,\n autofillDecimals: this.autofillDecimals,\n });\n\n // special handling to move unit symbol along with display value\n if (this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = textFormatted;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n\n this.updateInput(textFormatted);\n if (setCursor) {\n element.selectionStart = element.selectionEnd = Math.max(cursorPos + element.value.length - length, 0);\n }\n }\n\n updateInput(value: string): void {\n this.displayValue = value;\n this.inputEl.nativeElement.value = value;\n this._numericValue = parseFloat(\n this.numberFormatService.strip(value, { decimalPlaces: this.decimalPlaces }).replace(this.numberFormatService.decimalSeparator, '.'),\n );\n if (this._numericValue !== this.roundOrTruncate(this.originalValue)) {\n this.originalValue = this._numericValue;\n this.numericValueChanged.emit(this._numericValue);\n }\n }\n\n getValueForFormControl(): number | undefined {\n this.formatInput(this.inputEl.nativeElement, false);\n if (isNaN(this._numericValue)) {\n // Return undefined instead of NaN to support the default required validator.\n return undefined; // eslint-disable-line\n }\n return this._numericValue;\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // do not display unit symbol if the unit should move along display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n if (NumberFormatService.valueIsSet(this.displayValue)) {\n this.unitSpan.style.display = 'unset';\n } else {\n this.unitSpan.style.display = 'none';\n }\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n\n private detachListener(): void {\n if (this.inputChangeListener) {\n this.inputChangeListener();\n delete this.inputChangeListener;\n }\n if (this.keydownListener) {\n this.keydownListener();\n delete this.keydownListener;\n }\n if (this.keyupListener) {\n this.keyupListener();\n delete this.keyupListener;\n }\n }\n\n private roundOrTruncate(value: number): number {\n if (this.roundValue) {\n return Math.round(value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n\n const method = value < 0 ? 'ceil' : 'floor';\n return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toFixed(this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NumericFieldDirective } from './numeric-field.directive';\n\n@NgModule({\n imports: [NumericFieldDirective],\n exports: [NumericFieldDirective],\n})\nexport class NumericFieldModule {\n static forRoot(): ModuleWithProviders<NumericFieldModule> {\n return {\n ngModule: NumericFieldModule,\n };\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[madThrottleClick]',\n standalone: true,\n})\nexport class ThrottleClickDirective implements OnInit, OnDestroy {\n @Input() throttleTime = 300;\n @Output() throttleClick = new EventEmitter();\n private clicks = new Subject();\n private subscription: Subscription;\n\n @HostListener('click', ['$event'])\n clickEvent(event: any): void {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnInit(): void {\n this.subscription = this.clicks.pipe(throttleTime(this.throttleTime)).subscribe((e) => this.throttleClick.emit(e));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, computed, input, model, output } from '@angular/core';\nimport { OutlineButtonComponent } from '../button/outline-button/outline-button.component';\nimport { ThrottleClickDirective } from '../throttle-click/throttle-click.directive';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\n\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n imports: [MatCardModule, IconButtonComponent, MatIconModule, PrimaryButtonComponent, ThrottleClickDirective, OutlineButtonComponent],\n})\nexport class CardComponent {\n cancelDisabled = input(false);\n cancelText = input<string>('NOT SET');\n\n readonly = input<boolean>(true);\n editText = input<string>('NOT SET');\n\n expandable = input<boolean>(true);\n expanded = model<boolean>(true);\n\n saveDisabled = input<boolean>(false);\n saveText = input<string>('NOT SET');\n\n title = input<string | undefined>(undefined);\n editMode = input<boolean>(false);\n\n additionalActionIcon = input<string | undefined>(undefined);\n additionalActionText = input<string>('');\n\n edit = output<void>();\n cancel = output<void>();\n save = output<void>();\n additionalAction = output<void>();\n\n protected showHeader = computed(() => Boolean(this.title()) || this.expandable());\n protected showCollapseButton = computed(() => this.expandable() && !this.editMode());\n protected showAdditionalActionButton = computed(() => Boolean(this.additionalActionIcon()));\n protected showEditButton = computed(() => !this.readonly() && !this.editMode());\n protected showActions = computed(() => !this.readonly() && this.editMode());\n protected collapseIconClasses = computed(() => ({\n 'collapse-icon': true,\n 'collapse-icon--collapsed': !this.expanded(),\n }));\n\n onEdit(): void {\n this.expanded.set(true);\n this.edit.emit();\n }\n\n toggleCollapse(): void {\n this.expanded.update((expanded) => !expanded);\n }\n}\n","<mat-card>\n @if (showHeader()) {\n <mat-card-header class=\"card-header\">\n <mat-card-title-group class=\"card-title-group\">\n @if (title(); as cardTitle) {\n <mat-card-title data-cy=\"card-title\" class=\"card-title\">\n {{ cardTitle }}\n </mat-card-title>\n }\n <div data-cy=\"title-buttons-block\" class=\"header-actions\">\n @if (showCollapseButton()) {\n <mad-icon-button data-testid=\"collapse-btn\" (click)=\"toggleCollapse()\">\n <mat-icon [class]=\"collapseIconClasses()\"> keyboard_arrow_up </mat-icon>\n </mad-icon-button>\n }\n @if (showAdditionalActionButton()) {\n <mad-icon-button data-testid=\"additional-btn\" (click)=\"additionalAction.emit()\" [title]=\"additionalActionText()\" type=\"button\">\n <mat-icon>{{ additionalActionIcon() }}</mat-icon>\n </mad-icon-button>\n }\n @if (showEditButton()) {\n <mad-icon-button data-testid=\"edit-btn\" [title]=\"editText()\" (click)=\"onEdit()\" type=\"button\">\n <mat-icon>create</mat-icon>\n </mad-icon-button>\n }\n </div>\n </mat-card-title-group>\n </mat-card-header>\n }\n\n @if (expanded()) {\n <mat-card-content animate.enter=\"card-content-enter\" animate.leave=\"card-content-leave\">\n <ng-content />\n </mat-card-content>\n }\n\n @if (showActions()) {\n <mat-card-actions class=\"card-actions\">\n <mad-primary-button\n data-testid=\"save-btn\"\n [title]=\"saveText()\"\n [disabled]=\"saveDisabled()\"\n (throttleClick)=\"save.emit()\"\n madThrottleClick\n >\n {{ saveText() }}\n </mad-primary-button>\n <mad-outline-button data-testid=\"cancel-btn\" [title]=\"cancelText()\" [disabled]=\"cancelDisabled()\" (click)=\"cancel.emit()\">\n {{ cancelText() }}\n </mad-outline-button>\n </mat-card-actions>\n }\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThrottleClickDirective } from './throttle-click.directive';\n\n@NgModule({\n imports: [CommonModule, ThrottleClickDirective],\n exports: [ThrottleClickDirective],\n})\nexport class ThrottleClickModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CardComponent } from './card.component';\nimport { ButtonModule } from '../button/button.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThrottleClickModule } from '../throttle-click/throttle-click.module';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatIconModule, ButtonModule, MatButtonModule, ThrottleClickModule, CardComponent],\n exports: [CardComponent],\n})\nexport class CardModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder } from '@angular/forms';\n\nexport interface QuickListItem {\n id: string;\n}\n\n@Component({\n selector: 'mad-base-quick-list',\n template: '',\n styleUrls: [],\n standalone: true,\n})\nexport class BaseQuickListComponent<T> implements OnInit, AfterViewInit {\n @Input() allItems = [] as T[];\n @Input() addLabel = 'NOT SET';\n @Input() addPossible = true;\n @Input() removePossible = true;\n @Input() blankItem = {} as any;\n @Input() readonly: boolean;\n @Input() maxItems: number;\n @Input() minItems: number;\n @Input() formArray: FormArray;\n\n @Output() added = new EventEmitter<T>();\n @Output() removed = new EventEmitter<T>();\n @ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;\n @ViewChildren('row') itemRows: QueryList<ElementRef>;\n\n rowCountFocus: number;\n addEventFunction: Function;\n\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.addEventFunction = this.addItem.bind(this);\n if (this.minItems) {\n for (let n = this.allItems.length; n < this.minItems; n++) {\n this.interalAddItem();\n }\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.setFocusOnAdd(), 1);\n }\n\n addItem(): void {\n const newItem = this.interalAddItem();\n if (!!newItem) {\n this.added.emit(newItem);\n }\n }\n\n addReactiveItem() {\n if (this.isAddReactiveAllowed()) {\n this.added.emit(null);\n }\n }\n\n removeItem(item: T): void {\n if (this.isDeleteAllowed()) {\n this.allItems.splice(this.allItems.indexOf(item), 1);\n this.removed.emit(item);\n }\n }\n\n removeReactiveItem(item: AbstractControl<any>) {\n if (this.isDeleteReactiveAllowed()) {\n const index = this.formArray.controls.indexOf(item);\n if (index >= 0) {\n this.formArray.controls.splice(index, 1);\n this.formArray.updateValueAndValidity();\n this.removed.emit(null);\n }\n }\n }\n\n setFocusOnAdd(): void {\n this.rowCountFocus = this.itemRows.length;\n this.itemRows.changes.subscribe((els: QueryList<ElementRef>) => {\n if (els.length > this.rowCountFocus && !!els.last) {\n const firstFocusable = els.last.nativeElement.querySelector(\"button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])\");\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n this.rowCountFocus = els.length;\n });\n }\n\n isAddAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.allItems?.length < this.maxItems);\n }\n\n isAddReactiveAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.formArray?.controls.length < this.maxItems);\n }\n\n isDeleteAllowed(): boolean {\n return this.removePossible && (!this.minItems || this.allItems?.length > this.minItems);\n }\n\n isDeleteReactiveAllowed(): boolean {\n return this.removePossible && (!this.minItems || this.formArray?.controls.length > this.minItems);\n }\n\n private interalAddItem(): T {\n if (this.isAddAllowed()) {\n const newItem = { ...this.blankItem };\n // creates ids in the form of \"n5kdz1pljl8\"\n newItem.id = Math.random().toString(36).substring(2);\n this.allItems.push(newItem);\n this.changeDetectorRef.detectChanges();\n return newItem;\n }\n return null;\n }\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { LinkButtonComponent } from '../../button/flat-button/link-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, LinkButtonComponent],\n})\nexport class QuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of allItems; track item; let isLast = $last) {\n @if (itemTemplate) {\n <div class=\"flex-container\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n @if (!readonly && isLast) {\n <mad-icon-button data-cy=\"add-item-button\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly && !this.allItems.length) {\n <mad-link-button data-cy=\"add-first-item-button\" (click)=\"addItem()\" [disabled]=\"!isAddAllowed()\">\n {{ addLabel }}\n </mad-link-button>\n}\n","// Based on https://github.com/porscheinformatik/clarity-addons/blob/master/src/clr-addons/generic-quick-list/generic-quick-list.ts\n\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from './base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { OutlineButtonComponent } from '../button/outline-button/outline-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, OutlineButtonComponent],\n})\nexport class QuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of allItems; track item) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly) {\n <mad-outline-button data-cy=\"add-item-button\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n </mad-outline-button>\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { OutlineButtonComponent } from '../../button/outline-button/outline-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-reactive-form-quick-list',\n templateUrl: './reactive-form-quick-list.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, OutlineButtonComponent],\n})\nexport class ReactiveFormQuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of formArray.controls; track item) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteReactiveAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n\n@if (!readonly) {\n <mad-outline-button data-cy=\"add-item-button\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n </mad-outline-button>\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { LinkButtonComponent } from '../../button/flat-button/link-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-reactive-form-quick-list-compact',\n templateUrl: './reactive-form-quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, LinkButtonComponent],\n})\nexport class ReactiveFormQuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of formArray.controls; track item; let isLast = $last) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteReactiveAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n @if (!readonly && isLast) {\n <mad-icon-button data-cy=\"add-item-button\" [disabled]=\"!isAddReactiveAllowed()\" (click)=\"addReactiveItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly && !this.formArray?.controls.length) {\n <mad-link-button data-cy=\"add-first-item-button\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n </mad-link-button>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { QuickListComponent } from './quick-list.component';\nimport { ButtonModule } from '../button/button.module';\nimport { BaseQuickListComponent } from './base-quick-list.component';\nimport { QuickListCompactComponent } from './quick-list-compact/quick-list-compact.component';\nimport { ReactiveFormQuickListComponent } from './reactive-form-quick-list/reactive-form-quick-list.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ReactiveFormQuickListCompactComponent } from './reactive-form-quick-list-compact/reactive-form-quick-list-compact.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n ButtonModule,\n ReactiveFormsModule,\n QuickListComponent,\n BaseQuickListComponent,\n QuickListCompactComponent,\n ReactiveFormQuickListComponent,\n ReactiveFormQuickListCompactComponent,\n ],\n exports: [\n QuickListComponent,\n QuickListCompactComponent,\n BaseQuickListComponent,\n ReactiveFormQuickListComponent,\n ReactiveFormQuickListCompactComponent,\n ],\n})\nexport class QuickListModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, Sort, MatSortModule } from '@angular/material/sort';\nimport { ColumnHeader } from './column-header';\nimport { TableAction } from './table-action';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\n\n/**\n * @deprecated Use `data-table` instead.\n */\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [\n PrimaryButtonComponent,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n MatTableModule,\n MatSortModule,\n IconButtonComponent,\n MatIconModule,\n MatPaginatorModule,\n ],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() columns: ColumnHeader[] = [];\n @Input() filterLabel = 'NOT SET';\n @Input() filterPlaceholder = 'NOT SET';\n @Input() noDataText: string;\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() defaultPageSize = this.pageSizeOptions?.[0] || 10;\n @Input() rowActions: TableAction[] = [];\n @Input() tableActions: TableAction[] = [];\n\n @Output() tableAction = new EventEmitter<TableAction>();\n @Output() rowAction = new EventEmitter<TableAction>();\n @Output() sortEvent = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n dataSource: MatTableDataSource<any[]>;\n columnNames: string[];\n isRowClickable: boolean;\n defaultAction: TableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n\n @Input() set displayedData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n } else {\n this.dataSource.data = data;\n }\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n // eslint-disable-next-line\n const pageSize = this.isPaginationEnabled ? this.defaultPageSize : Number.MAX_VALUE;\n if (this.dataSource.paginator) {\n this.dataSource.paginator.pageSize = pageSize;\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = isFilterEnabled;\n this.setFilterValue(undefined);\n }\n\n ngOnInit(): void {\n this.columnNames = this.columns.map((column) => column.label);\n this.isRowClickable = this.rowActions.length > 0;\n if (this.isRowClickable) {\n this.columnNames.unshift(this.ACTION_COLUMN_NAME);\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n // set custom filter predicate to enable search for multiple search strings:\n // e.g. \"one two three\"\n this.dataSource.filterPredicate = (data: any, filter: string): any =>\n !filter || filter.split(/\\s+/).every((term) => !!Object.keys(data).find((key) => data[key].includes(term)));\n }\n\n onFilter(value: string): void {\n this.setFilterValue(value);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (!!action && !this.isClickOnRowMenuIcon(event)) {\n this.rowAction.emit({ ...action, outputRow: row });\n }\n }\n\n onSortingEvent(sortingParams: Sort): void {\n this.sortEvent.emit(sortingParams);\n }\n\n onTableAction(tableAction: TableAction): void {\n if (!!tableAction) {\n this.tableAction.emit(tableAction);\n }\n }\n\n private setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n private isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n}\n","<!-- Table actions -->\n@if (tableActions?.length) {\n <div>\n @for (tableAction of tableActions; track tableAction) {\n <mad-primary-button class=\"table-action\" (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label }}\n </mad-primary-button>\n }\n </div>\n}\n\n<!-- Row action buttons -->\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n @for (rowAction of rowActions; track rowAction) {\n <button mat-menu-item class=\"row-action\" (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- Table filter -->\n@if (isFilterEnabled) {\n <mat-form-field>\n <mat-label>{{ filterLabel }}</mat-label>\n <input matInput (keyup)=\"onFilter($event?.target?.value)\" placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n}\n\n<!-- Table -->\n@if (dataSource?.data?.length > 0) {\n <div class=\"mad-table\">\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column -->\n @if (rowActions?.length) {\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\" sticky>\n <th mat-header-cell *matHeaderCellDef class=\"row-action-button\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"row-action-button\">\n <mad-icon-button [matMenuTriggerData]=\"{ element: element }\" [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n </td>\n </ng-container>\n }\n <!-- Columns with data -->\n @for (column of columns; track column) {\n <ng-container [matColumnDef]=\"column.label\" [sticky]=\"column.isSticky\">\n @if (column.isSortable) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.label }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label }}\n </th>\n } @else {\n <th mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n }\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\">\n {{ element[column.dataPropertyName] }}\n </td>\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"columnNames\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnNames\"\n ></tr>\n </table>\n </div>\n} @else {\n <div class=\"noDataText\">\n {{ noDataText }}\n </div>\n}\n<!-- Pagination -->\n<mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n showFirstLastButtons\n>\n</mat-paginator>\n\n<!-- No data alert -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { TableComponent } from './table.component';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n ButtonModule,\n TableComponent,\n ],\n exports: [TableComponent],\n})\nexport class TableModule {}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DataTableColumn } from '../configuration/data-table-column';\nimport {\n DataTableColumnDefinition,\n DataTableColumnDefinitionChange,\n DataTableDialogData,\n} from '../configuration/data-table-column-definition';\nimport { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ButtonModule } from '../../button/button.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mad-data-table-columns-modal.component',\n templateUrl: './data-table-columns-modal.component.html',\n styleUrls: ['./data-table-columns-modal.component.scss'],\n imports: [DragDropModule, MatFormFieldModule, MatIconModule, FormsModule, ButtonModule, TranslateModule],\n})\nexport class DataTableColumnsModalComponent implements OnInit {\n definition: DataTableColumnDefinition;\n searchFilter: string;\n selectedColumns: DataTableColumn[] = [];\n availableColumns: DataTableColumn[] = [];\n filteredAvailableColumns: DataTableColumn[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<DataTableColumnsModalComponent>,\n @Inject(MAT_DIALOG_DATA)\n public data: DataTableDialogData,\n ) {}\n\n ngOnInit(): void {\n this.definition = this.data.definition;\n for (const column of this.data.allColumns) {\n const columnId = column.id;\n const selectedColumnIds: string[] = this.definition.displayedColumns.map((col) => col.id);\n if (selectedColumnIds.includes(columnId)) {\n this.selectedColumns.push(column);\n } else {\n this.availableColumns.push(column);\n }\n }\n this.clearFilterValue();\n }\n\n onDrop(event: CdkDragDrop<DataTableColumn[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);\n transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);\n this.clearFilterValue();\n this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));\n }\n }\n\n onSave(): void {\n this.definition.displayedColumns = this.selectedColumns;\n const saveChange: DataTableColumnDefinitionChange = {\n action: 'SAVE',\n definition: this.definition,\n };\n this.dialogRef.close(saveChange);\n }\n\n onDelete(): void {\n const deleteChange: DataTableColumnDefinitionChange = {\n action: 'DELETE',\n definition: this.definition,\n };\n this.dialogRef.close(deleteChange);\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n updateFilterValue(): void {\n if (this.searchFilter?.length > 0) {\n this.filteredAvailableColumns = this.availableColumns.filter((c) => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));\n } else {\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n }\n\n findMatchingItemIndex(previousContainer: CdkDropList, item: CdkDrag): number {\n const itemId = item.element.nativeElement.id;\n const previousContainerItems = [...previousContainer.data] as DataTableColumn[];\n if (previousContainerItems?.length < 1) {\n return 0;\n }\n for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {\n if (previousContainerItems[itemIndex].id === itemId) {\n return itemIndex;\n }\n }\n return 0;\n }\n\n clearFilterValue(): void {\n this.searchFilter = '';\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n}\n","<h1 mat-dialog-title>{{ data.titleLabel | translate }}</h1>\n<div mat-dialog-content>\n <div class=\"column-drag-main-content\">\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">{{ data.infoTextLabel | translate }}</div>\n <div class=\"column-drag-container-header\">{{ data.selectedLabel | translate }}</div>\n <div\n cdkDropList\n #selectedList=\"cdkDropList\"\n [cdkDropListData]=\"selectedColumns\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n class=\"column-drag-list selected-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n @for (selectedColumn of selectedColumns; track selectedColumn; let i = $index) {\n <div class=\"column-drag-box\" cdkDrag [id]=\"selectedColumn.id\">{{ i + 1 }}. {{ selectedColumn.label | translate }}</div>\n }\n </div>\n </div>\n\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">\n <!-- Table filter -->\n <mat-form-field>\n <mat-label>{{ data.filterColumnsLabel | translate }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n (keyup)=\"updateFilterValue()\"\n placeholder=\"{{ data.filterColumnsPlaceHolder | translate }}\"\n [(ngModel)]=\"searchFilter\"\n />\n @if (searchFilter) {\n <button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div class=\"column-drag-container-header\">{{ data.availableLabel | translate }}</div>\n <div\n cdkDropList\n cdkDropListSortingDisabled\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableColumns\"\n [cdkDropListConnectedTo]=\"[selectedList]\"\n class=\"column-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n @for (availableColumn of filteredAvailableColumns; track availableColumn) {\n <div class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{ availableColumn.label }}\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n<div mat-dialog-actions [align]=\"'end'\">\n <mad-outline-button (click)=\"onCancel()\">\n {{ data.cancelLabel | translate }}\n </mad-outline-button>\n @if (data.deleteDefinitionAllowed) {\n <mad-danger-button (click)=\"onDelete()\">\n {{ data.deleteLabel | translate }}\n </mad-danger-button>\n }\n <mad-primary-button (click)=\"onSave()\" [disabled]=\"!((this.selectedColumns.length || 0) > 0)\">\n {{ data.saveLabel | translate }}\n </mad-primary-button>\n</div>\n","export class DataTableActionType {\n static SINGLE = 'SINGLE';\n static BATCH = 'BATCH';\n static NONE = 'NONE';\n}\n","import { Directive, EventEmitter, Output } from '@angular/core';\nimport { DataTableFilterHeader } from './data-table-filter-header.directive';\nimport { DataTableFilterObject } from './data-table-filter-object';\n\n@Directive({\n selector: '[madFilter]',\n standalone: true,\n})\nexport class DataTableFilter {\n @Output('madFilterChange') readonly filterChange = new EventEmitter<DataTableFilterObject>();\n\n filterables = new Map<string, DataTableFilterHeader>();\n\n register(filterable: DataTableFilterHeader) {\n this.filterables.set(filterable.id, filterable);\n }\n\n unregister(filterable: DataTableFilterHeader) {\n this.filterables.delete(filterable.id);\n }\n\n changeFilter() {\n this.filterChange.emit(this.createFilter());\n }\n\n updateFilterables(dataTableFilterObject: DataTableFilterObject | undefined) {\n if (!!dataTableFilterObject) {\n Object.entries(dataTableFilterObject).forEach(([key, value]) => {\n const filterable = this.filterables.get(key);\n if (!!filterable) {\n filterable.filterValue = value;\n }\n });\n } else {\n this.filterables.forEach((value) => (value.filterValue = null));\n }\n }\n\n getActiveFilterCount(): number {\n return Array.from(this.filterables.values()).filter((value) => !!value.filterValue).length;\n }\n\n private createFilter(): DataTableFilterObject {\n return Array.from(this.filterables.values()).reduce((result, current) => ({ ...result, [current.id]: current.filterValue }), {});\n }\n}\n","import { MatSort, Sort } from '@angular/material/sort';\nimport { DateTime } from 'luxon';\nimport { NumberFormat } from '../configuration/data-table-global-configuration';\n\nexport class DataTableSortUtil {\n static sortData(dateTimeFormat?: string[], numberFormat?: NumberFormat): (tableData: any[], matSort: MatSort) => any[] {\n return (tableData: any[], matSort: MatSort) =>\n [...tableData].sort((a, b) => DataTableSortUtil.compare(a, b, matSort, dateTimeFormat, numberFormat));\n }\n\n static sortNothing(): (tableData: any[], matSort: MatSort) => any[] {\n return (tableData: any[], _: MatSort) => tableData;\n }\n\n static compare(\n a: Record<string, any>,\n b: Record<string, any>,\n sort: Sort,\n dateTimeFormat?: string[],\n numberFormat?: NumberFormat,\n ): number {\n const x = a[sort.active];\n const y = b[sort.active];\n const ascending = sort.direction === 'asc';\n\n if (typeof x === 'number' && typeof y === 'number') {\n return DataTableSortUtil.compareNumber(x, y, ascending);\n }\n if (typeof x === 'boolean' && typeof y === 'boolean') {\n return DataTableSortUtil.compareBoolean(x, y, ascending);\n }\n if (typeof x === 'string' || typeof y === 'string') {\n const stringX = String(x ?? '');\n const stringY = String(y ?? '');\n\n // a string could be a date\n if (!!dateTimeFormat.length) {\n const dates = dateTimeFormat\n .map((it) => ({\n x: DateTime.fromFormat(stringX, it),\n y: DateTime.fromFormat(stringY, it),\n }))\n .find(({ x, y }) => x.isValid && y.isValid);\n\n if (!!dates) {\n return DataTableSortUtil.compareDate(dates.x, dates.y, ascending);\n }\n }\n\n // .. but also a formatted number\n if (!!numberFormat) {\n const numberX = DataTableSortUtil.parseNumber(stringX, numberFormat);\n const numberY = DataTableSortUtil.parseNumber(stringY, numberFormat);\n\n if (typeof numberX === 'number' && typeof numberY === 'number') {\n return DataTableSortUtil.compareNumber(numberX, numberY, ascending);\n }\n }\n\n return DataTableSortUtil.compareString(stringX, stringY, ascending);\n }\n\n return 0;\n }\n\n static compareNumber(x: number, y: number, ascending: boolean): number {\n return ascending ? x - y : y - x;\n }\n\n static compareDate(x: DateTime, y: DateTime, ascending: boolean): number {\n return DataTableSortUtil.compareNumber(+x, +y, ascending);\n }\n\n static compareString(x: string, y: string, ascending: boolean): number {\n return ascending ? x.localeCompare(y) : y.localeCompare(x);\n }\n\n static compareBoolean(x: boolean, y: boolean, ascending: boolean): number {\n if (x === y) {\n return 0;\n }\n if (ascending) {\n // true first\n return x ? -1 : 1;\n } else {\n // false first\n return x ? 1 : -1;\n }\n }\n\n static parseNumber(value: string, numberFormat?: NumberFormat): number | string {\n const sanitized = value\n .replace(numberFormat.groupingSeparator ?? '', '')\n .replace(numberFormat.decimalSeparator ?? '', '.')\n .replace(new RegExp((numberFormat.units ?? []).join('|')), '');\n\n const numberValue = Number(sanitized);\n\n if (typeof numberValue === 'number' && !isNaN(numberValue)) {\n return numberValue;\n }\n\n return value;\n }\n}\n","import { DataTableAction, DataTableSelectionMode } from '../data-table';\n\nexport class DataTableActionUtil {\n public static getDisplayActions(\n actions: DataTableAction[],\n selectionMode: DataTableSelectionMode,\n ): {\n rowActions: DataTableAction[];\n groupedTableActions: DataTableAction[][];\n } {\n const rowActions = [];\n const tableActions = [];\n for (const action of actions) {\n if (selectionMode !== action.hiddenInMode) {\n switch (action.type) {\n case 'SINGLE':\n if (selectionMode === 'SINGLE') {\n rowActions.push(action);\n } else {\n tableActions.push(action);\n }\n break;\n case 'BATCH':\n if (selectionMode !== 'SINGLE') {\n tableActions.push(action);\n }\n break;\n default:\n tableActions.push(action);\n }\n }\n }\n\n return {\n rowActions: rowActions,\n groupedTableActions: DataTableActionUtil.getGroupedTableActions(tableActions),\n };\n }\n\n private static getGroupedTableActions(tableActions: DataTableAction[]): DataTableAction[][] {\n return Object.values(\n tableActions.reduce((result: { [key: number]: DataTableAction[] }, current) => {\n const index = Object.entries(result).findIndex(([, actions]) =>\n actions.find((it) => !!current.groupId && it.groupId === current.groupId),\n );\n const key = index !== -1 ? index : Object.keys(result).length || 0;\n (result[key] = result[key] || []).push(current);\n return result;\n }, {}),\n );\n }\n}\n","import { DataTableRow } from '../configuration/data-table-row';\nimport { DataTableColumn } from '../data-table';\nimport { v4 as uuidV4 } from 'uuid';\n\nexport class DataTableDataUtil {\n public static updateRowMap(\n rowMap: Map<string, DataTableRow>,\n data: any[] | undefined,\n columns: DataTableColumn[],\n idGenerator: (data: any) => string,\n parentIdGenerator: (data: any) => string,\n ): Map<string, DataTableRow> {\n rowMap.clear();\n\n data?.forEach((it) => {\n const rowId: string = DataTableDataUtil.createRowId(it, idGenerator);\n const dataRow: DataTableRow = DataTableDataUtil.createDataTableRow(it, rowId, parentIdGenerator, columns);\n rowMap.set(rowId, dataRow);\n });\n\n return rowMap;\n }\n\n private static createRowId(data: any, idGenerator: (data: any) => string): string {\n let id;\n if (!!idGenerator) {\n id = idGenerator(data);\n }\n return (!!id ? id : uuidV4()).toString();\n }\n\n private static createDataTableRow(data: any, rowId: string, parentIdGenerator: (data: any) => string, columns: DataTableColumn[]) {\n const parentId = parentIdGenerator ? parentIdGenerator(data) : undefined;\n const displayedData = DataTableDataUtil.createDisplayedData(rowId, parentId, data, columns);\n const dataRow: DataTableRow = {\n id: rowId,\n parentId: parentId,\n actualData: data,\n displayedData: displayedData,\n };\n return dataRow;\n }\n\n private static createDisplayedData(rowId: string, parentId: string | undefined, actualDataElement: any, columns: DataTableColumn[]): any {\n const displayedData: { [key: string]: any } = {};\n displayedData['rowId'] = rowId;\n displayedData['parentId'] = parentId;\n // keep non displayed data in row\n for (const key of Object.keys(actualDataElement)) {\n const column = columns.find((it) => it.dataPropertyName === key);\n const actualValue = actualDataElement[key];\n displayedData[key] = DataTableDataUtil.transformData(actualValue, column?.transformer, column?.transformerParams);\n }\n return displayedData;\n }\n\n static transformData(value: any, transformer: (data: any, transformerParams: any) => any, transformerParams: any): any {\n if (!transformer || !(transformer instanceof Function)) {\n return value;\n }\n return transformer(value, transformerParams);\n }\n}\n","import { DataTableFilterObject } from '../data-table-filter/data-table-filter-object';\n\nexport class DataTableFilterUtil {\n public static columnBasedFilterPredicate(rowMap: any): (row: any, filterString: any) => boolean {\n return (row: any, filterString: string): boolean => {\n const actualData = rowMap.get(row.rowId)?.actualData;\n const displayedData = row;\n const filters: DataTableFilterObject = JSON.parse(filterString);\n return Object.entries(filters).every(\n ([key, value]) => !value || this.contains(actualData, key, value) || this.contains(displayedData, key, value),\n );\n };\n }\n\n public static tableBasedFilterPredicate(): (data: any, filter: any) => boolean {\n return (data: any, filter: any) => {\n const transform = (str: string) =>\n str\n .trim()\n .toLowerCase()\n .replace(/^\"(.*)\"$/, '$1');\n const dataStr = transform(JSON.stringify(data));\n return dataStr.indexOf(transform(filter)) != -1;\n };\n }\n\n private static contains(data: any, key: string, searchTerm: string): boolean {\n return (String((data as any)[key]) ?? '').toLowerCase().includes(searchTerm.toLowerCase());\n }\n}\n","import { Sort } from '@angular/material/sort';\nimport { DataTableFilterObject } from './data-table-filter/data-table-filter-object';\nimport { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DataTablePersistenceService {\n sortKey = 'sort';\n filterKey = 'filter';\n pageSizeKey = 'pageSize';\n\n saveSort(tableId: string, sort: Sort | undefined): void {\n this.save(this.getId(tableId, this.sortKey), sort);\n }\n\n loadSort(tableId: string): Sort | undefined {\n return this.load(this.getId(tableId, this.sortKey));\n }\n\n saveFilter(tableId: string, filter: string | DataTableFilterObject | undefined): void {\n this.save(this.getId(tableId, this.filterKey), filter);\n }\n\n loadFilter(tableId: string): DataTableFilterObject | undefined {\n return this.load(this.getId(tableId, this.filterKey));\n }\n\n savePageSize(tableId: string, pageSize: number | undefined): void {\n this.save(this.getId(tableId, this.pageSizeKey), pageSize);\n }\n\n loadPageSize(tableId: string): number | undefined {\n return this.load(this.getId(tableId, this.pageSizeKey));\n }\n\n protected save<T>(id: string, item: T | undefined): void {\n if (!!item) {\n localStorage.setItem(id, JSON.stringify(item));\n } else {\n localStorage.removeItem(id);\n }\n }\n\n protected load<T>(id: string): T | undefined {\n const item = localStorage.getItem(id);\n return !!item ? JSON.parse(item) : undefined;\n }\n\n protected getId(tableId: string, key: string): string {\n return `${tableId}.${key}`;\n }\n}\n\nexport const MAD_DATA_TABLE_PERSISTENCE_SERVICE = new InjectionToken<DataTablePersistenceService>('mad-data-table-persistence-service');\n\nexport function DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER_FACTORY(persistenceService: DataTablePersistenceService) {\n return persistenceService || new DataTablePersistenceService();\n}\n\nexport const DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER = {\n // If there is a custom DataTablePersistenceService available, use that. Otherwise, provide the \"local storage\" default one.\n provide: MAD_DATA_TABLE_PERSISTENCE_SERVICE,\n deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_PERSISTENCE_SERVICE)]],\n useFactory: DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER_FACTORY,\n};\n","import { Inject, InjectionToken, Optional, SkipSelf } from '@angular/core';\n\nexport interface NumberFormat {\n decimalSeparator: string;\n groupingSeparator: string;\n units: string[]; // e.g. signs like €, $\n}\n\n// this could also be extended with e.g. labels or other general configuration stuff\nexport interface DataTableGlobalConfiguration {\n dateTimeFormat?: string | string[];\n numberFormat?: NumberFormat;\n}\n\nexport const MAD_DATA_TABLE_GLOBAL_CONFIGURATION = new InjectionToken<DataTableGlobalConfiguration>('mad-data-table-global-configuration');\n\n// If there is a custom DATA_TABLE_CONFIG_PROVIDER available, use that. Otherwise, provide the default one.\nexport const MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER = {\n provide: MAD_DATA_TABLE_GLOBAL_CONFIGURATION,\n deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_GLOBAL_CONFIGURATION)]],\n useFactory: (dataTableConfig?: DataTableGlobalConfiguration) =>\n dataTableConfig ?? {\n dateTimeFormat: dataTableConfig?.dateTimeFormat ?? ['dd.MM.yyyy', 'dd.MM.yyyy hh:mm:ss'],\n numberFormat: dataTableConfig?.numberFormat ?? {\n decimalSeparator: ',',\n groupingSeparator: '.',\n units: ['€', '$'],\n },\n },\n};\n","import { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { DataTableFilterOption } from '../../data-table-filter-options';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mad-data-table-filter-dialog',\n templateUrl: 'data-table-filter-dialog.component.html',\n styleUrls: ['./data-table-filter-dialog.component.scss'],\n imports: [MatFormFieldModule, MatInputModule, MatSelectModule, FormsModule, ReactiveFormsModule, TranslateModule],\n})\nexport class DataTableFilterDialogComponent implements OnDestroy {\n @Input()\n filterOptions: DataTableFilterOption[];\n\n @Input()\n set filterValue(value: string | null) {\n this.control.setValue(value);\n }\n\n @Output()\n filterChanged: EventEmitter<string | null> = new EventEmitter();\n\n control = new FormControl<string | null>(null);\n\n private _subscription: Subscription = new Subscription();\n\n constructor() {\n this._subscription.add(this.control.valueChanges.subscribe((value) => this.filterChanged.emit(value)));\n }\n\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n }\n}\n","<div class=\"filter-dialog-box\">\n @if (!filterOptions?.length) {\n <mat-form-field class=\"filter-dialog-input\">\n <mat-label>{{ 'common.filter.term' | translate }}</mat-label>\n <input matInput type=\"text\" required=\"false\" [formControl]=\"control\" />\n </mat-form-field>\n } @else {\n <mat-form-field class=\"filter-dialog-input\">\n <mat-label>{{ 'common.filter.term' | translate }}</mat-label>\n <mat-select [formControl]=\"control\">\n <mat-option></mat-option>\n @for (entry of filterOptions; track entry) {\n <mat-option [value]=\"entry.key\">{{ entry.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n</div>\n","import { Component, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\nimport { DataTableFilterOption } from '../data-table-filter-options';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { DataTableFilterDialogComponent } from './data-table-filter-dialog/data-table-filter-dialog.component';\n\n@Component({\n selector: 'mad-data-table-filter',\n templateUrl: './data-table-filter.component.html',\n styleUrls: ['./data-table-filter.component.scss'],\n imports: [MatIconModule, DataTableFilterDialogComponent],\n})\nexport class FilterComponent {\n @Output() filterValueChange: EventEmitter<string | null> = new EventEmitter();\n\n isHovered: boolean;\n isActive: boolean;\n showFilterDialog: boolean;\n\n filterValue: string | null;\n filterOptions: DataTableFilterOption[];\n\n constructor(private elementRef: ElementRef) {}\n\n toggleFilter(event: Event) {\n event.preventDefault();\n this.showFilterDialog = !this.showFilterDialog;\n }\n\n onFilterChanged(filterValue: string | null) {\n this.isActive = !!filterValue;\n this.filterValue = filterValue;\n this.filterValueChange.emit(this.filterValue);\n }\n\n @HostListener('document:click', ['$event'])\n onClick(event: Event): void {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.showFilterDialog = false;\n }\n }\n\n get opacity() {\n return this.isActive ? '1' : this.isHovered || this.showFilterDialog ? '0.54' : '0';\n }\n}\n","<div class=\"container\">\n <div class=\"overlay\" [style.opacity]=\"opacity\">\n <mat-icon class=\"colored-icon\" fontSet=\"material-icons-outlined\" (click)=\"toggleFilter($event)\">filter_alt</mat-icon>\n </div>\n <mad-data-table-filter-dialog\n class=\"filter-dialog\"\n [filterOptions]=\"filterOptions\"\n [hidden]=\"!showFilterDialog\"\n [filterValue]=\"filterValue\"\n (filterChanged)=\"onFilterChanged($event)\"\n />\n</div>\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n ViewContainerRef,\n} from '@angular/core';\nimport { FilterComponent } from './data-table-filter-component/data-table-filter.component';\nimport { MatSortHeader } from '@angular/material/sort';\nimport { DataTableFilter } from './data-table-filter.directive';\nimport { Subscription } from 'rxjs';\nimport { DataTableFilterOption } from './data-table-filter-options';\n\n@Directive({\n selector: 'th[mad-filter-header]',\n standalone: true,\n})\nexport class DataTableFilterHeader implements OnInit, AfterViewInit, OnDestroy {\n @Input('mad-filter-header')\n id: string;\n\n @Input()\n madFilterColumnRightAligned?: boolean;\n\n @Input()\n set madFilterOptions(filterOptions: DataTableFilterOption[] | undefined) {\n this._filterOptions = filterOptions || [];\n }\n\n private _filterComponent: ComponentRef<FilterComponent>;\n private _filterValue: string | null;\n private _filterOptions: DataTableFilterOption[];\n\n private _subscription: Subscription = new Subscription();\n\n constructor(\n private element: ElementRef,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2,\n @Optional() private madFilter: DataTableFilter,\n @Optional() private matSortHeader: MatSortHeader,\n ) {}\n\n ngOnInit() {\n this._filterComponent = this.viewContainerRef.createComponent(FilterComponent);\n this._filterComponent.instance.filterOptions = this._filterOptions;\n this._filterComponent.changeDetectorRef.detectChanges();\n\n this.insertFilterComponent();\n this.observeFilterComponent();\n }\n\n ngAfterViewInit(): void {\n if (!!this.matSortHeader) {\n const reference = this.matSortHeader._toggleOnInteraction.bind(this.matSortHeader);\n this.matSortHeader._toggleOnInteraction = () => {};\n this.findArrow(this.element.nativeElement)!.addEventListener('click', reference);\n }\n\n if (!!this.madFilter) {\n this.madFilter.register(this);\n }\n }\n\n ngOnDestroy(): void {\n this._subscription.unsubscribe();\n this.madFilter.unregister(this);\n }\n\n observeFilterComponent() {\n this._subscription.add(\n this._filterComponent.instance.filterValueChange.subscribe((value) => {\n this._filterValue = value;\n this.madFilter.changeFilter();\n }),\n );\n }\n\n get filterValue(): string | null {\n return this._filterValue;\n }\n\n set filterValue(filterValue: string | null) {\n this._filterComponent.instance.filterValue = filterValue;\n this._filterComponent.changeDetectorRef.detectChanges();\n }\n\n @HostListener('mouseenter')\n onMouseenter() {\n this._filterComponent.instance.isHovered = true;\n }\n\n @HostListener('mouseleave')\n onMouseleave() {\n this._filterComponent.instance.isHovered = false;\n }\n\n private insertFilterComponent() {\n const componentNativeElement = this._filterComponent.location.nativeElement;\n const div = this.getWrappedHeader();\n\n if (!!this.matSortHeader) {\n const sortHeader = div.firstChild;\n this.renderer.insertBefore(sortHeader, componentNativeElement, sortHeader.firstChild.nextSibling);\n } else {\n this.renderer.appendChild(div, componentNativeElement);\n }\n }\n\n private getWrappedHeader() {\n const headerContent = this.element.nativeElement.firstChild;\n\n this.renderer.removeChild(this.element.nativeElement, headerContent);\n const div = this.renderer.createElement('div');\n this.renderer.setStyle(div, 'display', 'flex');\n this.renderer.setStyle(div, 'align-items', 'center');\n if (this.madFilterColumnRightAligned) {\n this.renderer.setStyle(div, 'justify-content', 'flex-end');\n if (!!headerContent.firstChild) {\n this.renderer.setStyle(headerContent.firstChild, 'justify-content', 'flex-end');\n }\n }\n this.renderer.appendChild(div, headerContent);\n this.renderer.appendChild(this.element.nativeElement, div);\n\n return div;\n }\n\n private findArrow(element: Element): Element | null {\n return this.isArrowElement(element) ? element : this.findArrowInList(element.children);\n }\n\n private findArrowInList(nativeElements: HTMLCollection): Element | null {\n for (let nativeElement of Array.from(nativeElements)) {\n const foundElement = this.findArrow(nativeElement);\n if (!!foundElement) {\n return foundElement;\n }\n }\n\n return null;\n }\n\n private isArrowElement(nativeElement: Element) {\n return nativeElement.classList.contains('mat-sort-header-arrow');\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { DataTableTemplateCellDefinition } from './data-table-template-cell-definition.directive';\n\n@Directive({\n selector: '[madColumnDef]',\n standalone: true,\n})\nexport class DataTableTemplateColumnDefinition {\n @Input()\n madColumnDef: string;\n\n cellDef: DataTableTemplateCellDefinition | null;\n\n public register(cellDef: DataTableTemplateCellDefinition) {\n this.cellDef = cellDef;\n }\n\n public unregister() {\n this.cellDef = null;\n }\n}\n","import { Directive, Input } from '@angular/core';\nimport { DataTableTemplateExpandableCellDefinition } from './data-table-template-expandable-cell-definition.directive';\n\n@Directive({\n selector: '[madExpandableColumnDef]',\n standalone: true,\n})\nexport class DataTableTemplateExpandableColumnDefinition {\n @Input()\n madExpandableColumnDef: string;\n\n cellDef: DataTableTemplateExpandableCellDefinition | null;\n\n public register(cellDef: DataTableTemplateExpandableCellDefinition) {\n this.cellDef = cellDef;\n }\n\n public unregister() {\n this.cellDef = null;\n }\n}\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { DataTableTemplateExpandableColumnDefinition } from './data-table-template-expandable-column-definition.directive';\n\n@Directive({\n selector: '[madExpandableCellDef]',\n standalone: true,\n})\nexport class DataTableTemplateExpandableCellDefinition implements OnInit, OnDestroy {\n constructor(\n private templateRef: TemplateRef<any>,\n public columnDef: DataTableTemplateExpandableColumnDefinition,\n ) {}\n\n ngOnInit(): void {\n this.columnDef.register(this);\n }\n\n ngOnDestroy(): void {\n this.columnDef.unregister();\n }\n\n getCellTemplate(): TemplateRef<any> {\n return this.templateRef;\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSort, MatSortModule, Sort } from '@angular/material/sort';\nimport { DataTableColumn } from './configuration/data-table-column';\nimport { DataTableAction } from './configuration/data-table-action';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport {\n DataTableColumnDefinition,\n DataTableColumnDefinitionChange,\n DataTableDialogData,\n} from './configuration/data-table-column-definition';\nimport { DataTableRow } from './configuration/data-table-row';\nimport { DataTableHeaderType } from './configuration/data-table-header-type';\nimport { DataTableFilterMode } from './configuration/data-table-filter-mode';\nimport { DataTableFilterObject } from './data-table-filter/data-table-filter-object';\nimport { DataTableFilter } from './data-table-filter/data-table-filter.directive';\nimport { DataTableSelectionEmitType } from './configuration/data-table-selection-emit-type';\nimport { DataTableSelectionEmitMode } from './configuration/data-table-selection-emit-mode';\nimport { DataTableSelectionMode } from './configuration/data-table-selection-mode';\nimport { DataTableSortUtil } from './util/data-table-sort-util';\nimport { DataTableActionUtil } from './util/data-table-action-util';\nimport { DataTableDataUtil } from './util/data-table-data-util';\nimport { DataTableFilterUtil } from './util/data-table-filter-util';\nimport {\n DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER,\n DataTablePersistenceService,\n MAD_DATA_TABLE_PERSISTENCE_SERVICE,\n} from './data-table-persistence.service';\nimport {\n DataTableGlobalConfiguration,\n MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER,\n MAD_DATA_TABLE_GLOBAL_CONFIGURATION,\n} from './configuration/data-table-global-configuration';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '../button/button.module';\nimport { DataTableFilterHeader } from './data-table-filter/data-table-filter-header.directive';\nimport { DataTableTemplateColumnDefinition } from './data-table-template/data-table-template-column-definition.directive';\nimport { DataTableTemplateExpandableCellDefinition } from './data-table-template/data-table-template-expandable-cell-definition.directive';\nimport { DataTablePersistenceConfiguration } from './configuration/data-table-persistence-configuration';\nimport { MatTooltip } from '@angular/material/tooltip';\n\n@Component({\n selector: 'mad-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed,void', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n MatProgressSpinnerModule,\n ButtonModule,\n TranslateModule,\n MatCheckboxModule,\n MatRadioModule,\n MatBadgeModule,\n DragDropModule,\n FormsModule,\n DataTableFilterHeader,\n DataTableFilter,\n MatTooltip,\n ],\n providers: [DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER, MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER],\n})\nexport class DataTableComponent implements AfterViewInit, OnChanges {\n @Input() id: string;\n\n // Translations\n @Input() filterLabel = 'common.filter';\n @Input() filterPlaceholder = '';\n @Input() filterColumnsLabel = 'Filter';\n @Input() filterColumnsPlaceHolder = 'Filter available columns';\n @Input() showEmptyTable = false;\n @Input() noDataText = 'No matching data found';\n @Input() columnSettingsModalTitleLabel = 'Column settings';\n @Input() selectedLabel = 'Selected columns';\n @Input() availableLabel = 'Available columns';\n @Input() saveLabel = 'Save';\n @Input() deleteLabel = 'Delete';\n @Input() cancelLabel = 'Cancel';\n @Input() infoTextLabel = 'Drag and drop a column to select or reorder it.';\n @Input() tableClass: string;\n\n @Input() translateLabels = true;\n\n @Input() set useAsync(useAsync: boolean) {\n this._useAsync = useAsync;\n this.applySortData();\n }\n\n /**\n * @deprecated\n * Please use the more specific persistenceConfig instead\n */\n @Input() set stateful(stateful: boolean) {\n this.persistenceConfig = {\n persistSort: stateful,\n persistFilter: stateful,\n persistPageSize: stateful,\n };\n }\n\n @Input() persistenceConfig: DataTablePersistenceConfiguration = {\n persistSort: false,\n persistFilter: false,\n persistPageSize: false,\n };\n\n @Input() loading: boolean = false;\n\n @Input() tableData: any;\n @Input() idGenerator: any;\n @Input() parentIdGenerator: any;\n\n @Input() defaultSort: Sort;\n @Input() externalFilter: any;\n @Input() paginationEnabled: boolean = false;\n @Input() page: PageEvent = { pageIndex: 0, pageSize: 50, length: 0 };\n @Input() pageSizeOptions = [5, 10, 15];\n\n @Input() actions: DataTableAction[] = [];\n @Input() selectionEmitType: DataTableSelectionEmitType = 'ID';\n @Input() showDeleteFilterAction: boolean = true;\n @Input() disableRowClick: boolean = false;\n\n @Input() deleteDefinitionAllowed = false;\n @Input() rowExpandable: (data: any) => boolean = () => true;\n\n @Input() set selection(selection: string[] | any[]) {\n this._selection = selection;\n this.updateSelectionModel(selection);\n }\n\n /**\n * @deprecated\n * Please use \"filterMode\" instead\n */\n @Input() set filterEnabled(isFilterEnabled: boolean) {\n this._filterMode = isFilterEnabled ? 'TABLE_BASED' : 'NONE';\n this.applyFilterPredicate();\n }\n\n @Input() set filterMode(filterMode: DataTableFilterMode) {\n this._filterMode = filterMode;\n this.applyFilterPredicate();\n }\n\n @Input() set filterValue(filterValue: string | DataTableFilterObject | undefined) {\n this._filterValue = filterValue;\n this.applyFilterValue(this._filterValue);\n }\n\n @Input() set externalPaginator(paginator: any) {\n this.extPaginator = paginator;\n }\n\n @Input() set defaultPageSize(defaultSize: number) {\n this.page = {\n ...this.page,\n pageSize: defaultSize,\n };\n }\n\n @Input() set selectionEmitMode(selectionEmitMode: DataTableSelectionEmitMode) {\n this._selectionEmitMode = selectionEmitMode;\n }\n\n /**\n * @deprecated\n * This function mixes up 2 responsibilities:\n * - determining if actions should be displayed / handled\n * - determining whether actions are row based (single) or table based (batch)\n * Please use a combination of \"selectionEmitMode\" and \"selectionMode\" instead:\n * - selectionEmitMode determines how selected items are handled (as part of actions, as selections or not at all)\n * - selectionMode determines if selected items are treated separately (single) or together (batch)\n */\n @Input() set forceMode(selectionMode: string) {\n if (selectionMode === 'SINGLE' || selectionMode === 'BATCH') {\n this._selectionEmitMode = 'ON_ACTION';\n this._forceSelectionMode = <DataTableSelectionMode>selectionMode;\n this._selectionModel.clear();\n }\n }\n\n @Input() set forceSelectionMode(selectionMode: DataTableSelectionMode) {\n this._forceSelectionMode = selectionMode;\n this._selectionModel.clear();\n }\n\n @Input() set displayedColumns(cols: DataTableColumn[]) {\n if (!this.displayedColumnDefinition) {\n this.columns = cols ? [...cols] : [];\n this.columnIds = this.columns.map((column) => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n }\n }\n\n @Input() set displayedColumnDefinition(def: DataTableColumnDefinition) {\n this.columns = def.displayedColumns;\n this.columnIds = this.columns.map((column) => column.id);\n this.columnIds.unshift(this.ACTION_COLUMN_NAME);\n this._selectedColumnDefinition = def;\n }\n\n @Input() set columnDefinitions(definitions: DataTableColumnDefinition[]) {\n this.editableColumnDefinitions = [];\n this.viewableColumnDefinitions = [];\n this._allColumnDefinitions = [...definitions];\n for (const definition of definitions) {\n if (definition.editable) {\n this.editableColumnDefinitions.push(definition);\n }\n if (definition.displayedColumns?.length > 0) {\n this.viewableColumnDefinitions.push(definition);\n }\n }\n }\n\n @Input() set allColumns(allColumns: DataTableColumn[]) {\n this._allAvailableColumns = allColumns;\n if (allColumns && this._showColumnModal) {\n this.openColumnModal();\n }\n }\n\n @Output() actionEvent = new EventEmitter<DataTableAction>();\n @Output() selectionEvent = new EventEmitter<any[]>();\n\n @Output() sortEvent = new EventEmitter<Sort>();\n @Output() filterEvent = new EventEmitter<string | DataTableFilterObject | undefined>();\n @Output() pageEvent = new EventEmitter<PageEvent>();\n\n @Output() allColumnsEvent = new EventEmitter<void>();\n @Output() columnDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinitionChange>();\n @Output() viewDefinitionChangeEvent = new EventEmitter<DataTableColumnDefinition>();\n\n @ViewChild(MatPaginator) paginator: MatPaginator;\n\n // we need to have this as a setter due to the *ngIf it is in\n @ViewChild(MatSort) set matSort(matSort: MatSort) {\n this._sort = matSort;\n this.dataSource.sort = this._sort;\n }\n\n @ViewChild(DataTableFilter) filter: DataTableFilter;\n\n @ContentChildren(DataTableTemplateColumnDefinition)\n set columnDefs(columnDefs: QueryList<DataTableTemplateColumnDefinition> | undefined) {\n this._columnDefs = columnDefs;\n this.changeDetectorRef.detectChanges();\n }\n\n get columnDefs() {\n return this._columnDefs;\n }\n\n @ContentChild(DataTableTemplateExpandableCellDefinition)\n set expandableDef(expandableDef: DataTableTemplateExpandableCellDefinition | undefined) {\n this._expandableDef = expandableDef;\n this.changeDetectorRef.detectChanges();\n }\n\n get expandableDef() {\n return this._expandableDef;\n }\n\n dataSource: MatTableDataSource<any[]>;\n allSelected = false;\n\n extPaginator: MatPaginator;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n tableActions: DataTableAction[][] = [];\n rowActions: DataTableAction[] = [];\n\n columns: DataTableColumn[] = [];\n columnIds: string[];\n\n expandedElement: DataTableColumn | null;\n\n editableColumnDefinitions: DataTableColumnDefinition[];\n viewableColumnDefinitions: DataTableColumnDefinition[];\n\n private _useAsync: boolean = false;\n\n private _rowMap = new Map<string, DataTableRow>();\n private _selectionModel = new SelectionModel<string>(true);\n private _selection: string[] | any[];\n\n private _sort: MatSort;\n\n private _forceSelectionMode: DataTableSelectionMode;\n private _selectionEmitMode: DataTableSelectionEmitMode = 'NONE';\n private _filterMode: DataTableFilterMode = 'NONE';\n private _filterValue: string | DataTableFilterObject | undefined;\n\n private _allColumnDefinitions: DataTableColumnDefinition[] = [];\n private _allAvailableColumns: DataTableColumn[];\n private _selectedColumnDefinition: DataTableColumnDefinition;\n private _showColumnModal = false;\n\n private _columnDefs: QueryList<DataTableTemplateColumnDefinition> | undefined;\n private _expandableDef: DataTableTemplateExpandableCellDefinition | undefined;\n\n constructor(\n private changeDetectorRef: ChangeDetectorRef,\n private matDialog: MatDialog,\n @Inject(MAD_DATA_TABLE_PERSISTENCE_SERVICE) private persistenceService: DataTablePersistenceService,\n @Inject(MAD_DATA_TABLE_GLOBAL_CONFIGURATION) private dataTableGlobalConfig: DataTableGlobalConfiguration,\n ) {\n this.dataSource = new MatTableDataSource<any>();\n }\n\n ngAfterViewInit(): void {\n if (!this._useAsync) {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this._sort;\n }\n this.applySortData();\n this.initState();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('tableData' in changes) {\n this.updateDataTableData();\n this.updateSelectionModel(this.getSelection('ID').length ? this.getSelection('ID') : this._selection);\n if (this.showAll) {\n this.updatePaginator();\n }\n }\n if ('idGenerator' in changes || 'displayedColumns' in changes) {\n this.updateDataTableData();\n }\n\n // performance reasons (same behaviour could be achived in getters)\n if ('forceMode' in changes || 'forceSelectionMode' in changes || 'actions' in changes) {\n const actions = DataTableActionUtil.getDisplayActions(this.actions, this.selectionMode);\n this.rowActions = actions.rowActions;\n this.tableActions = actions.groupedTableActions;\n }\n }\n\n /** TABLE DISPLAY HANDLING */\n\n public getDataTableHeaderType(column: DataTableColumn): DataTableHeaderType {\n if (column.isSortable && !column.isFilterable) {\n return 'SORT';\n }\n if (!column.isSortable && column.isFilterable) {\n return 'FILTER';\n }\n if (column.isSortable && column.isFilterable) {\n return 'SORT_AND_FILTER';\n }\n return 'PLAIN';\n }\n\n public getCustomCellTemplate(columnId: string): TemplateRef<any> | null {\n const columnDef = this._columnDefs?.find((it) => it.madColumnDef === columnId);\n return columnDef && columnDef.cellDef ? columnDef.cellDef.getCellTemplate() : null;\n }\n\n public getCustomExpandableTemplate(): TemplateRef<any> | null {\n return this._expandableDef?.getCellTemplate() || null;\n }\n\n public get expandableColumnDef() {\n return this._expandableDef?.columnDef.madExpandableColumnDef || '';\n }\n\n public onExpand(event: MouseEvent, element: DataTableColumn) {\n if (this.rowExpandable(element)) {\n this.expandedElement = this.expandedElement === element ? null : element;\n }\n event.stopPropagation();\n }\n\n /** ACTION BUTTON DISPLAY HANDLING */\n\n public hasVisibleRowActions(displayedData: any): boolean {\n return !this.rowActions.every((action) => this.isHiddenForData(action, [this._rowMap.get(displayedData.rowId)?.actualData]));\n }\n\n public isHidden(action: DataTableAction): boolean {\n return this.isHiddenForData(action, this.getSelection('DATA'));\n }\n\n private isHiddenForData(action: DataTableAction, data: any[]) {\n return !!action.isHidden && action.isHidden(data);\n }\n\n public isDisabled(action: DataTableAction): boolean {\n return this.isDisabledForActionType(action.type) || (!!action.isDisabled && action.isDisabled(this.getSelection('DATA')));\n }\n\n private isDisabledForActionType(actionType: string): boolean {\n switch (actionType) {\n case 'SINGLE':\n return this.selectedCount !== 1;\n case 'BATCH':\n return this.selectedCount < 1;\n default:\n return false;\n }\n }\n\n public getSelectedCount(actionType: string): string {\n const count = this.selectedCount;\n if (actionType !== 'BATCH' || count < 2) {\n return '';\n }\n return ` (${count})`;\n }\n\n private get selectedCount(): number {\n return this._selectionModel?.selected ? this._selectionModel.selected.length : 0;\n }\n\n /** TABLE DATA CHANGE HANDLING */\n\n private updateDataTableData(): void {\n // do not make this function immutable - we desparately need the reference of rowMap to stay the same\n DataTableDataUtil.updateRowMap(this._rowMap, this.tableData, this.columns, this.idGenerator, this.parentIdGenerator);\n this.dataSource.data = Array.from(this._rowMap.values()).map((it) => it.displayedData);\n }\n\n private updateSelectionModel(selection: string[] | any[]) {\n this._selectionModel.clear();\n selection?.forEach((it) => {\n const item = this._rowMap.get(it) || [...this._rowMap.values()].find((row) => row.actualData === it);\n if (!!item) {\n this.onSelectionEvent(item.id);\n }\n });\n this.emitSelection();\n }\n\n /** ACTION & SELECTION HANDLING */\n\n public get selectionEmitMode(): DataTableSelectionEmitMode {\n return this._selectionEmitMode === 'NONE' && !!this.actions.length ? 'ON_ACTION' : this._selectionEmitMode;\n }\n\n public get selectionMode(): DataTableSelectionMode {\n return !!this._forceSelectionMode ? this._forceSelectionMode : this.actions.find((it) => it.type === 'BATCH') ? 'BATCH' : 'SINGLE';\n }\n\n // get filtered & sorted data of the current page\n public get displayedData(): any[] {\n return this.dataSource?._pageData(this.dataSource?.sortData(this.dataSource.filteredData, this.dataSource.sort));\n }\n\n public get showActionColumn(): boolean {\n return !(this.selectionEmitMode === 'NONE' || this.hideActionColumn) || !!this._expandableDef;\n }\n\n public showCheckbox(displayedData: any): boolean {\n return !displayedData.parentId && this.selectionMode === 'BATCH' && !this.hideActionColumn;\n }\n\n public showRowActionIcon(displayedData: any): boolean {\n return !displayedData.parentId && this.selectionEmitMode === 'ON_ACTION' && this.selectionMode === 'SINGLE' && !this.hideActionColumn;\n }\n\n public showRadioButton(displayedData: any): boolean {\n return !displayedData.parentId && this.selectionEmitMode === 'ON_SELECTION' && this.selectionMode === 'SINGLE';\n }\n\n public showExpandableButton(displayedData: any): boolean {\n return !displayedData.parentId && !!this._expandableDef && this.rowExpandable(displayedData);\n }\n\n public isSelected(rowId: string): boolean {\n return this._selectionModel.isSelected(rowId);\n }\n\n public onToggleSelectAll(): void {\n // clear all selection first\n this._selectionModel.clear();\n // toggle all checkbox\n this.allSelected = !this.allSelected;\n if (this.allSelected) {\n // select all rows of the current page\n this.displayedData.forEach((row) => {\n if (!row.parentId) {\n this._selectionModel.select(row.rowId);\n }\n });\n }\n this.emitSelection();\n }\n\n public onActionEvent(action: DataTableAction): void {\n const emitAction = { ...action };\n if (!!emitAction && this.selectionEmitMode !== 'NONE') {\n emitAction.selected = this.getSelection(this.selectionEmitType);\n this.actionEvent.emit(emitAction);\n }\n }\n\n public onSelectionEvent(id: any): void {\n switch (this.selectionMode) {\n case 'BATCH':\n this._selectionModel.toggle(id);\n break;\n case 'SINGLE':\n this._selectionModel.clear();\n this._selectionModel.toggle(id);\n break;\n }\n }\n\n public onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (this.selectionEmitMode === 'NONE' || row?.parentId) {\n return;\n }\n\n this.onSelectionEvent(row.rowId);\n this.processSelection(event, action);\n }\n\n private get defaultAction(): DataTableAction | undefined {\n return this.selectionEmitMode !== 'NONE' ? this.rowActions[0] : undefined;\n }\n\n private get hideActionColumn(): boolean {\n return this.selectionEmitMode === 'ON_ACTION' && this.actions.every((it) => it.type === 'NONE');\n }\n\n private processSelection(event: MouseEvent, action?: DataTableAction): void {\n if (\n this.selectionEmitMode === 'ON_ACTION' &&\n this.selectionMode === 'SINGLE' &&\n !!action &&\n !DataTableComponent.isClickOnRowMenuIcon(event)\n ) {\n this.onActionEvent(action);\n }\n\n this.emitSelection();\n }\n\n private emitSelection() {\n if (this.selectionEmitMode === 'ON_SELECTION') {\n this.selectionEvent.emit(this.getSelection(this.selectionEmitType));\n }\n }\n\n private getSelection(selectionEmitType: DataTableSelectionEmitType): any[] {\n const selection: any[] = [];\n this._selectionModel.selected.forEach((it) =>\n // if ID-generator is provided, return the ID, else return the ACTUAL data\n selection.push(this.idGenerator && selectionEmitType === 'ID' ? it : this._rowMap.get(it)?.actualData),\n );\n\n return selection;\n }\n\n private static isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n\n /** SORT HANDLING */\n\n onSortingEvent(sort: Sort): void {\n if (this._useAsync) {\n this.sortEvent.emit(sort);\n }\n\n if (this.persistenceConfig.persistSort) {\n this.persistenceService.saveSort(this.id, sort);\n }\n }\n\n private applySortData() {\n this.dataSource.sortData = this._useAsync\n ? DataTableSortUtil.sortNothing()\n : DataTableSortUtil.sortData([...this.dataTableGlobalConfig.dateTimeFormat], this.dataTableGlobalConfig.numberFormat);\n }\n\n /** FILTER HANDLING */\n\n public get filterMode() {\n return this._useAsync && this._filterMode === 'TABLE_BASED' ? 'NONE' : this._filterMode;\n }\n\n public onTableBasedFilterEvent(event: Event): void {\n this.onFilteringEvent((event.target as HTMLTextAreaElement).value);\n }\n\n public onColumnBasedFilterEvent(filter: DataTableFilterObject | undefined): void {\n this.onFilteringEvent(filter);\n }\n\n public onDeleteFilter(): void {\n this.onFilteringEvent(undefined);\n this.filter.updateFilterables(undefined);\n }\n\n private onFilteringEvent(filter: string | DataTableFilterObject | undefined): void {\n if (this._useAsync) {\n this.filterEvent.emit(filter);\n } else {\n this.allSelected = false;\n this._selectionModel.clear();\n this.applyFilterValue(filter);\n }\n\n if (this.persistenceConfig.persistFilter) {\n this.persistenceService.saveFilter(this.id, filter);\n }\n }\n\n private applyFilterPredicate(): void {\n this.dataSource.filterPredicate =\n this.filterMode === 'COLUMN_BASED'\n ? DataTableFilterUtil.columnBasedFilterPredicate(this._rowMap)\n : DataTableFilterUtil.tableBasedFilterPredicate();\n this.applyFilterValue(this._filterValue);\n }\n\n private applyFilterValue(value: string | DataTableFilterObject | undefined): void {\n const isString = typeof this._filterValue === 'string';\n this.dataSource.filter = !!value ? (isString ? value.trim().toLowerCase() : JSON.stringify(value)) : '';\n }\n\n /** PAGINATION HANDLING */\n\n onPageEvent(event: PageEvent): void {\n if (this._useAsync) {\n this.pageEvent.emit(event);\n }\n\n if (this.persistenceConfig.persistPageSize) {\n this.persistenceService.savePageSize(this.id, event.pageSize);\n }\n }\n\n get pageIndex(): number {\n return this.showAll ? 0 : this.page.pageIndex;\n }\n\n get pageSize(): number {\n return this.showAll ? this.dataLength : this.page.pageSize;\n }\n\n get pageLength(): number {\n return this.showAll ? this.dataLength : this.page.length;\n }\n\n private updatePaginator() {\n if (this.paginator) {\n this.paginator.pageSize = this.pageSize;\n this.paginator.page.emit(this.page);\n }\n }\n\n private get dataLength(): number {\n return this.dataSource.data?.length || 0;\n }\n\n private get showAll(): boolean {\n return !this._useAsync && !this.paginationEnabled;\n }\n\n /** INIT STATE */\n\n private initState(): void {\n // only set default sort if there is no other sort persisted\n if (!!this.defaultSort && !this.persistenceService.loadSort(this.id)?.direction) {\n this.setSort(this.defaultSort);\n }\n\n if (this.persistenceConfig.persistSort) {\n this.initSortState();\n }\n if (this.persistenceConfig.persistFilter) {\n this.initFilterState();\n }\n if (!!this._filterValue && typeof this._filterValue !== 'string') {\n this.filter.updateFilterables(this._filterValue);\n }\n if (this.persistenceConfig.persistPageSize) {\n this.initPaginatorState();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initSortState(): void {\n const sort = this.persistenceService.loadSort(this.id);\n if (!!sort) {\n this.setSort(sort);\n }\n }\n\n private setSort(sort: Sort): void {\n this._sort.active = sort.active;\n this._sort.direction = sort.direction;\n this._sort.sortChange.emit(sort);\n }\n\n private initFilterState(): void {\n const filter = this.persistenceService.loadFilter(this.id);\n this.filter.updateFilterables(filter);\n }\n\n private initPaginatorState(): void {\n this.page = {\n pageIndex: 0,\n pageSize: this.persistenceService.loadPageSize(this.id) || this.pageSize,\n length: 0,\n };\n\n this.updatePaginator();\n }\n\n /** COLUMN HANDLING */\n\n public onViewDefinition(definition: DataTableColumnDefinition): void {\n this._selectedColumnDefinition = definition;\n this.viewDefinitionChangeEvent.emit(definition);\n }\n\n public onColumnSettings(definition?: DataTableColumnDefinition): void {\n this._showColumnModal = true;\n this._selectedColumnDefinition = definition ? definition : this._allColumnDefinitions[0];\n if (this._allAvailableColumns) {\n this.openColumnModal();\n } else {\n // if no complete definitions have been loaded yet send an event so the app can load it\n this.allColumnsEvent.emit();\n }\n }\n\n public isCurrentDefinition(definition: DataTableColumnDefinition): boolean {\n return this._selectedColumnDefinition && this._selectedColumnDefinition.id === definition.id;\n }\n\n private openColumnModal(): void {\n const dialogData: DataTableDialogData = {\n allColumns: this._allAvailableColumns,\n definition: this._selectedColumnDefinition,\n deleteDefinitionAllowed: this.deleteDefinitionAllowed,\n filterColumnsLabel: this.filterColumnsLabel,\n filterColumnsPlaceHolder: this.filterColumnsPlaceHolder,\n noDataText: this.noDataText,\n titleLabel: this.columnSettingsModalTitleLabel,\n selectedLabel: this.selectedLabel,\n availableLabel: this.availableLabel,\n saveLabel: this.saveLabel,\n deleteLabel: this.deleteLabel,\n cancelLabel: this.cancelLabel,\n infoTextLabel: this.infoTextLabel,\n };\n const dialog = this.matDialog.open(DataTableColumnsModalComponent, { data: dialogData });\n dialog.afterClosed().subscribe((result) => {\n // no event on CANCEL\n if (result) {\n this.columnDefinitionChangeEvent.emit(result);\n }\n });\n }\n\n public getFilterBadgeContent(): string {\n if (this.filterMode === 'COLUMN_BASED') {\n const count = this.filter?.getActiveFilterCount();\n return count > 0 ? count.toString() : undefined;\n }\n return undefined;\n }\n\n public disableDeleteFilterButton(): boolean {\n return this.filter?.getActiveFilterCount() === 0;\n }\n}\n","<div data-cy=\"table-action-bar\" class=\"mad-datatable-action-bar\">\n <!-- Table actions: displayed before the table -->\n @if (tableActions?.length || (filterMode === 'COLUMN_BASED' && showDeleteFilterAction)) {\n <div>\n @for (actionGroup of tableActions; track actionGroup) {\n <mad-button-group class=\"table-action-group\">\n @for (tableAction of actionGroup; track $index) {\n <mad-outline-button [hidden]=\"isHidden(tableAction)\" [disabled]=\"isDisabled(tableAction)\" (click)=\"onActionEvent(tableAction)\">\n {{ translateLabels ? (tableAction.label | translate) : tableAction.label }}\n {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n }\n </mad-button-group>\n }\n @if (filterMode === 'COLUMN_BASED' && showDeleteFilterAction) {\n <mad-button-group class=\"table-action-group\">\n <button\n mat-icon-button\n [matTooltip]=\"'common.filter.delete.tooltip' | translate\"\n [disabled]=\"disableDeleteFilterButton()\"\n class=\"delete-filter-action mat-primary\"\n (click)=\"onDeleteFilter()\"\n >\n <mat-icon fontSet=\"material-icons-outlined\" matBadgeColor=\"warn\" [matBadge]=\"getFilterBadgeContent()\">\n filter_alt_off\n </mat-icon>\n </button>\n </mad-button-group>\n }\n </div>\n }\n @if (filterMode === 'TABLE_BASED') {\n <mat-form-field data-cy=\"filter-input\">\n <mat-label>{{ translateLabels ? (filterLabel | translate) : filterLabel }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"onTableBasedFilterEvent($event)\" placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n }\n</div>\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n @for (rowAction of rowActions; track rowAction) {\n @if (!isHidden(rowAction)) {\n <button\n data-cy=\"row-action-menu-button\"\n mat-menu-item\n class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\"\n [disabled]=\"isDisabled(rowAction)\"\n >\n {{ translateLabels ? (rowAction.label | translate) : rowAction.label }}\n </button>\n }\n }\n </ng-template>\n</mat-menu>\n\n<!-- editable definition menu -->\n<mat-menu #editableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (definition of editableColumnDefinitions; track definition) {\n <button\n mat-menu-item\n class=\"row-action\"\n (click)=\"onColumnSettings(definition)\"\n [ngClass]=\"{ 'active-column-definition': isCurrentDefinition(definition) }\"\n >\n {{ translateLabels ? (definition.label | translate) : definition.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- viewable definition menu -->\n<mat-menu #viewableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (definition of viewableColumnDefinitions; track definition) {\n <button\n mat-menu-item\n class=\"row-action\"\n (click)=\"onViewDefinition(definition)\"\n [ngClass]=\"{ 'active-column-definition': isCurrentDefinition(definition) }\"\n >\n {{ translateLabels ? (definition.label | translate) : definition.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n@if (filterMode === 'COLUMN_BASED' || showEmptyTable || !!dataSource.filteredData?.length) {\n <div class=\"datatable\" [class]=\"tableClass\">\n @if (loading) {\n <div class=\"mad-datatable-spinner-wrapper\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n }\n <table\n [id]=\"id\"\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"onSortingEvent($event)\"\n madFilter\n (madFilterChange)=\"onColumnBasedFilterEvent($event)\"\n [multiTemplateDataRows]=\"!!expandableDef\"\n >\n <!-- Row actions column-->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\">\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [ngClass]=\"showActionColumn ? 'row-action-cell' : 'no-action-cell'\">\n <!-- BATCH: master checkbox -->\n @if (selectionEmitMode !== 'NONE' && selectionMode === 'BATCH') {\n <div class=\"mad-datatable-checkbox-container\">\n <mat-checkbox (change)=\"onToggleSelectAll()\" [checked]=\"allSelected\"></mat-checkbox>\n </div>\n }\n <!-- SINGLE / NONE: nothing in header row -->\n </th>\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"showActionColumn ? 'row-action-cell' : 'no-action-cell'\">\n <!-- BATCH: row checkbox -->\n @if (showCheckbox(element)) {\n <div class=\"mad-datatable-checkbox-container\" (click)=\"onRowEvent($event, element)\">\n <mat-checkbox class=\"no-pointer-events\" [checked]=\"isSelected(element.rowId)\"></mat-checkbox>\n </div>\n }\n <!-- SINGLE: row action menu icon -->\n @if (showRowActionIcon(element) && hasVisibleRowActions(element)) {\n <mad-icon-button\n data-cy=\"row-action-button\"\n [matMenuTriggerData]=\"{ element: element }\"\n [matMenuTriggerFor]=\"rowActionMenu\"\n (click)=\"onSelectionEvent(element.rowId)\"\n >\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n }\n <!-- SINGLE: row radio button -->\n @if (showRadioButton(element)) {\n <div class=\"mad-datatable-checkbox-container\" (click)=\"onRowEvent($event, element)\">\n <mat-radio-button class=\"no-pointer-events\" [checked]=\"isSelected(element.rowId)\"></mat-radio-button>\n </div>\n }\n <!-- EXPANDABLE: row is expandable/collapsable -->\n @if (showExpandableButton(element)) {\n <mad-icon-button (click)=\"onExpand($event, element)\">\n @if (expandedElement !== element) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_up</mat-icon>\n }\n </mad-icon-button>\n }\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Cell definitions and rows with injected cells -->\n @for (column of columns; track column.id) {\n <ng-container [matColumnDef]=\"column.id\">\n <!-- header cell to be injected -->\n @switch (getDataTableHeaderType(column)) {\n @case ('SORT') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mat-sort-header=\"{{ column.orderByName ? column.orderByName : column.dataPropertyName }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n >\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n }\n @case ('FILTER') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mad-filter-header=\"{{ column.dataPropertyName }}\"\n [madFilterColumnRightAligned]=\"column.isRightAligned\"\n [madFilterOptions]=\"column.filterParams?.filterOptions\"\n >\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n }\n @case ('SORT_AND_FILTER') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mat-sort-header=\"{{ column.orderByName ? column.orderByName : column.dataPropertyName }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n mad-filter-header=\"{{ column.dataPropertyName }}\"\n [madFilterColumnRightAligned]=\"column.isRightAligned\"\n [madFilterOptions]=\"column.filterParams?.filterOptions\"\n >\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n }\n @default {\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n }\n }\n\n <!-- data cell to be injected -->\n <td\n mat-cell\n *matCellDef=\"let element\"\n [class.text-right]=\"column.isRightAligned\"\n [class.mad-dt-child-cell]=\"element.parentId\"\n (click)=\"!disableRowClick && onRowEvent($event, element)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getCustomCellTemplate(column.id) || defaultCellTemplate;\n context: { column: column, element: element, $implicit: element }\n \"\n ></ng-container>\n </td>\n </ng-container>\n }\n\n <!-- Expanded Content Column - The row is made up of this one column that spans across all columns -->\n @if (!!expandableDef) {\n <ng-container [matColumnDef]=\"expandableColumnDef\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columns.length + 1\">\n <div class=\"mad-data-table-expandable-area\" [@detailExpand]=\"element === expandedElement ? 'expanded' : 'collapsed'\">\n <ng-container\n *ngTemplateOutlet=\"\n getCustomExpandableTemplate() || defaultCellTemplate;\n context: { column: element, element: element, $implicit: element }\n \"\n ></ng-container>\n </div>\n </td>\n </ng-container>\n }\n\n <!-- header row where cells will be injected -->\n <tr mat-header-row *matHeaderRowDef=\"columnIds\"></tr>\n <!-- data row where cells will be injected -->\n <tr\n mat-row\n [class.clickable-table-row]=\"!row.parentId && selectionEmitMode !== 'NONE'\"\n *matRowDef=\"let row; columns: columnIds\"\n (click)=\"!!expandableColumnDef && onExpand($event, row)\"\n ></tr>\n @if (!!expandableDef) {\n <tr mat-row *matRowDef=\"let element; columns: [expandableColumnDef]\" class=\"mad-data-table-expandable-row\"></tr>\n }\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell noDataText columnBasedFilter\" [attr.colspan]=\"columnIds.length\">\n {{ translateLabels ? (noDataText | translate) : noDataText }}\n </td>\n </tr>\n </table>\n </div>\n} @else {\n <!-- No data alert -->\n <div data-cy=\"no-data-block\" class=\"noDataText\">\n @if (loading) {\n <div class=\"mad-datatable-spinner-wrapper\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n }\n {{ translateLabels ? (noDataText | translate) : noDataText }}\n </div>\n}\n<div data-cy=\"table-bottom-area\" class=\"mad-data-table-bottom-area\">\n <div data-cy=\"definition-button-block\" class=\"mad-data-table-bottom-info-area\">\n <!-- column settings: 1 definition -->\n @if (editableColumnDefinitions?.length === 1) {\n <mad-icon-button (click)=\"onColumnSettings()\">\n <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n </mad-icon-button>\n }\n <!-- column settings: multiple definitions -->\n @if ((editableColumnDefinitions?.length || 0) > 0) {\n <mad-icon-button [matMenuTriggerFor]=\"editableDefinitionMenu\">\n <mat-icon>view_column</mat-icon>\n </mad-icon-button>\n }\n <!-- column view: multiple definitions -->\n @if ((viewableColumnDefinitions?.length || 0) > 0) {\n <mad-icon-button [matMenuTriggerFor]=\"viewableDefinitionMenu\">\n <mat-icon>preview</mat-icon>\n </mad-icon-button>\n }\n </div>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"paginationEnabled ? 'block' : 'none'\"\n [length]=\"pageLength\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPageEvent($event)\"\n showFirstLastButtons\n >\n </mat-paginator>\n</div>\n\n<!-- default cell template -->\n<ng-template #defaultCellTemplate let-element=\"element\" let-column=\"column\">\n <span>\n {{ element[column.dataPropertyName] }}\n </span>\n</ng-template>\n\n<!-- custom cell templates injected from parent -->\n<ng-content></ng-content>\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { DataTableTemplateColumnDefinition } from './data-table-template-column-definition.directive';\n\n@Directive({\n selector: '[madCellDef]',\n standalone: true,\n})\nexport class DataTableTemplateCellDefinition implements OnInit, OnDestroy {\n constructor(\n private templateRef: TemplateRef<any>,\n private columnDef: DataTableTemplateColumnDefinition,\n ) {}\n\n ngOnInit(): void {\n this.columnDef.register(this);\n }\n\n ngOnDestroy(): void {\n this.columnDef.unregister();\n }\n\n getCellTemplate(): TemplateRef<any> {\n return this.templateRef;\n }\n}\n","import { CdkStepHeader } from '@angular/cdk/stepper';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'mad-step-header',\n templateUrl: './step-header.component.html',\n styleUrls: ['./step-header.component.scss'],\n inputs: ['color'],\n host: {\n class: 'mad-step-header',\n role: 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, MatIconModule],\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input()\n stepControl: any;\n\n @Input() errorMessage: string;\n\n @Input() selected: boolean;\n\n @Input() active: boolean;\n\n @Input() optional: boolean;\n\n @Input() hasError: boolean;\n\n @Input() completed: boolean;\n\n @Input() closed: boolean;\n\n constructor(\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n ) {\n super(_elementRef);\n }\n\n ngAfterViewInit(): void {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy(): void {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n getCssForState(): string {\n if (this.completed) {\n return 'step-state-complete';\n }\n if (this.hasError) {\n return 'step-state-error';\n }\n return 'step-state-neutral';\n }\n\n getIcon(): string {\n if (this.completed) {\n return 'check_circle_outline';\n } else if (this.hasError) {\n return 'error_outline';\n }\n return '';\n }\n}\n","<div\n class=\"header\"\n [ngClass]=\"{\n 'header-selected': this.selected && !this.closed,\n 'header-default': !this.selected || this.closed,\n 'error-border': this.hasError,\n 'check-border': !this.hasError,\n }\"\n>\n <div [ngClass]=\"this.getCssForState()\"></div>\n <div class=\"header-label\">\n <mat-icon class=\"material-icons-outlined\">\n {{ this.selected && !this.closed ? 'keyboard_arrow_down' : 'keyboard_arrow_right' }}\n </mat-icon>\n </div>\n @if (this.completed || this.hasError) {\n <div class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n }\n @if (!this.hasError && !this.completed) {\n <span data-testid=\"step-number\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\n }\n <div data-testid=\"step-label\" class=\"header-label\">{{ this.label }}</div>\n</div>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the MAD stepper.\n */\nexport const madStepperAnimations: {\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n state('current', style({ height: '*', visibility: 'visible' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStep, CdkStepper, STEP_STATE, StepContentPositionState } from '@angular/cdk/stepper';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { madStepperAnimations } from './mad-stepper-animation';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-step',\n templateUrl: './step.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{ provide: CdkStep, useExisting: StepComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PrimaryButtonComponent],\n})\nexport class StepComponent extends CdkStep implements AfterContentInit, OnDestroy {\n /** Action event for the next button. If not set the StepComponent will handle the step navigation */\n @Output()\n onNext = new EventEmitter<any>();\n\n /** Action event for the done button. If not set the StepComponent will handle the step navigation */\n @Output()\n onDone = new EventEmitter<any>();\n\n /*** Action event when the header is clicked. If not set the StepComponent will handle the step navigation*/\n @Output()\n onHeaderClick = new EventEmitter<any>();\n\n stepClosed = false;\n\n private _isSelected = Subscription.EMPTY;\n\n constructor(\n @Inject(forwardRef(() => StepperComponent)) private stepper: StepperComponent,\n private _viewContainerRef: ViewContainerRef,\n ) {\n super(stepper);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() =>\n this._stepper.selectionChange.pipe(\n map((event) => event.selectedStep === this),\n tap(() => (this.stepClosed = false)),\n startWith(this._stepper.selected === this),\n ),\n ),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n next(markFormAsTouched = true): void {\n this.stepValidation(markFormAsTouched);\n\n if (this.onNext.observers.length <= 0) {\n this.stepper.next();\n }\n this.onNext.emit();\n }\n\n selectAndMarkAsTouched(index: number): void {\n //Mark current selected step as touched before selecting to display errors in the from\n this._stepper.selected?.stepControl?.markAllAsTouched();\n this.stepClosed = false;\n if (this.onHeaderClick.observers.length <= 0) {\n this.select();\n }\n this.onHeaderClick.emit(index);\n }\n\n completeLast(): void {\n this.stepValidation(true);\n this.stepClosed = true;\n\n if (this.onDone.observers.length <= 0) {\n this.stepper.next();\n }\n\n this.onDone.emit();\n }\n\n resetValidations(): void {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n }\n\n private stepValidation(markFormAsTouched: boolean): void {\n if (markFormAsTouched) {\n this.stepControl?.markAllAsTouched();\n }\n if (this.stepControl?.valid) {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n } else {\n this.completed = false;\n this.hasError = true;\n this.state = STEP_STATE.ERROR;\n }\n }\n}\n\n@Component({\n selector: 'mad-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n host: {\n '[class.stepper-vertical]': 'true',\n '[attr.aria-orientation]': '\"vertical\"',\n role: 'tablist',\n },\n animations: [madStepperAnimations.verticalStepTransition],\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, StepHeaderComponent],\n})\nexport class StepperComponent extends CdkStepper implements OnInit, AfterContentInit {\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n @Input()\n nextButtonLabel: string;\n\n @Input()\n doneButtonLabel: string;\n /** Step headers of all steps inside the stepper */\n @ViewChildren(StepHeaderComponent) _stepHeader: QueryList<StepHeaderComponent>;\n\n /** Steps inside the Stepper */\n @ContentChildren(StepComponent, { descendants: true }) _steps: QueryList<StepComponent>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps: QueryList<StepComponent> = new QueryList<StepComponent>();\n\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(@Optional() dir: Directionality, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef<HTMLElement>) {\n super(dir, changeDetectorRef, elementRef);\n this.orientation = 'vertical';\n }\n\n ngOnInit() {\n // Only linear stepper implementation is supported\n this.linear = true;\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone\n .pipe(\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed),\n )\n .subscribe((event) => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n /**\n * Method patched to enable the closing of the last step.\n */\n _getAnimationDirection(index: number): StepContentPositionState {\n const closeLastStep = this.selectedIndex === this.steps.length - 1 && this._steps.last?.completed && this._steps.last?.stepClosed;\n if (closeLastStep) {\n return 'next';\n }\n return super._getAnimationDirection(index);\n }\n\n _stepIsNavigable(index: number, step: StepComponent): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n}\n","<ng-template let-last=\"last\" let-nextBtnLbl=\"nextBtnLbl\" let-doneBtnLbl=\"doneBtnLbl\">\n <div class=\"step-container\">\n <div class=\"step-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"step-buttons\">\n @if (last) {\n <div>\n <mad-primary-button data-cy=\"complete-step-button\" (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n } @else {\n <div>\n <mad-primary-button data-cy=\"next-step-button\" (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","<!-- Vertical stepper -->\n<ng-container>\n @for (step of steps; track step; let i = $index; let isLast = $last; let isFirst = $first) {\n <div data-cy=\"step-container\">\n <ng-container [ngTemplateOutlet]=\"stepTemplate\" [ngTemplateOutletContext]=\"{ step: step, i: i }\"></ng-container>\n <div class=\"vertical-content-container\" [class.mat-stepper-vertical-line]=\"!isLast\">\n <div\n class=\"vertical-stepper-content\"\n role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n (@stepTransition.done)=\"_animationDone.next($event)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div data-cy=\"stepper-content\">\n <ng-container\n [ngTemplateOutlet]=\"step.content\"\n [ngTemplateOutletContext]=\"{\n step: step,\n i: i,\n last: isLast,\n first: isFirst,\n nextBtnLbl: this.nextButtonLabel,\n doneBtnLbl: this.doneButtonLabel,\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n }\n</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\n [stepControl]=\"step.stepControl\"\n (click)=\"step.selectAndMarkAsTouched(i)\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"_getStepLabelId(i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"_getStepContentId(i)\"\n [attr.aria-selected]=\"selectedIndex == i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n [index]=\"i\"\n [hasError]=\"!!step.stepControl && step.stepControl.invalid && (step.stepControl.touched || step.stepControl.dirty)\"\n [completed]=\"!!step.stepControl && step.stepControl.valid && (step.stepControl.touched || step.stepControl.dirty)\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"_stepIsNavigable(i, step)\"\n [optional]=\"step.optional\"\n [closed]=\"step.stepClosed\"\n [errorMessage]=\"step.errorMessage\"\n ></mad-step-header>\n</ng-template>\n","import { StepComponent, StepperComponent } from './stepper.component';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgModule } from '@angular/core';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n CdkStepperModule,\n ButtonModule,\n StepperComponent,\n StepHeaderComponent,\n StepComponent,\n ],\n exports: [StepperComponent, StepHeaderComponent, StepComponent],\n})\nexport class StepperModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-header',\n templateUrl: './content-header.component.html',\n styleUrls: ['./content-header.component.scss'],\n standalone: true,\n})\nexport class ContentHeaderComponent {}\n","<div class=\"content-header\">\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container',\n templateUrl: './content-panel-container.component.html',\n styleUrls: ['./content-panel-container.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerComponent {}\n","<div class=\"content-panel-sidebar-wrapper\">\n <ng-content select=\"mad-content-panel-container-sidebar\"></ng-content>\n <div class=\"content-panel-outer-wrapper\">\n <ng-content select=\"mad-content-panel-container-content\"></ng-content>\n <ng-content select=\"mad-content-panel-container-footer\"></ng-content>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-content',\n templateUrl: './content-panel-container-content.component.html',\n styleUrls: ['./content-panel-container-content.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerContentComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-footer',\n templateUrl: './content-panel-container-footer.component.html',\n styleUrls: ['./content-panel-container-footer.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerFooterComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-sidebar',\n templateUrl: './content-panel-container-sidebar.component.html',\n styleUrls: ['./content-panel-container-sidebar.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerSidebarComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-main-container',\n templateUrl: './main-container.component.html',\n styleUrls: ['./main-container.component.scss'],\n standalone: true,\n})\nexport class MainContainerComponent {}\n","<div class=\"main-container\">\n <ng-content select=\"mad-content-header\"></ng-content>\n <ng-content select=\"mad-flowbar\"></ng-content>\n <ng-content select=\"mad-content-panel-container\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ContentHeaderComponent } from './content-header/content-header.component';\nimport { ContentPanelContainerComponent } from './content-panel-container/content-panel-container.component';\nimport { ContentPanelContainerContentComponent } from './content-panel-container-content/content-panel-container-content.component';\nimport { ContentPanelContainerFooterComponent } from './content-panel-container-footer/content-panel-container-footer.component';\nimport { ContentPanelContainerSidebarComponent } from './content-panel-container-sidebar/content-panel-container-sidebar.component';\n\nimport { MainContainerComponent } from './main-container/main-container.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n ContentPanelContainerSidebarComponent,\n MainContainerComponent,\n ],\n exports: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n ContentPanelContainerSidebarComponent,\n MainContainerComponent,\n ],\n})\nexport class ContentPanelModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\n\nexport interface IStep {\n label: string;\n enabled?: boolean;\n subSteps?: IStep[];\n activeSubStep?: IStep;\n}\n\n@Component({\n selector: 'mad-flowbar',\n templateUrl: './flowbar.component.html',\n styleUrls: ['./flowbar.component.scss'],\n imports: [MatStepperModule],\n})\nexport class FlowbarComponent implements OnInit {\n @Input('steps') _steps: IStep[] = [];\n @Input('activeStep') _activeStep: IStep;\n @Output('activeStepChange') _activeStepChange: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n /**\n * Event emitted when a step header is clicked.\n * When defined header navigation has to be implemented programmatically.\n * e.g. {@see changeActiveStepOnHeader}\n */\n @Output('headerClick') _headerClick: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n @ViewChild('stepper') private stepper: MatStepper;\n\n get currentStepLabel(): string {\n return this._activeStep.label;\n }\n\n get currentSubStepLabel(): string {\n return this._activeStep.activeSubStep?.label;\n }\n\n ngOnInit(): void {\n // If no active step is set as input or the active step is not enabled, select the first enabled step\n if (!this._activeStep || !this._activeStep.enabled) {\n this._activeStep = this._steps.find((step) => step.enabled);\n if (this._activeStep) {\n // If sub steps exist then set the first non disabled sub step per default\n if (this.activeTabHasSubSteps()) {\n this._activeStep.activeSubStep = this._activeStep.subSteps.find((step) => step.enabled);\n }\n this._activeStepChange.emit(this._activeStep);\n }\n }\n }\n\n getIndexForActiveStep(): number {\n const selectedIndex = this._steps.indexOf(this._activeStep);\n return selectedIndex === -1 ? 0 : selectedIndex;\n }\n\n changeActiveStep(step: IStep): void {\n const previousIndex = this._steps.indexOf(this._activeStep);\n this._activeStep = step;\n if (this.activeTabHasSubSteps()) {\n if (previousIndex < this._steps.indexOf(this._activeStep)) {\n this._activeStep.activeSubStep = this._activeStep.subSteps[0];\n } else {\n this._activeStep.activeSubStep = this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n }\n this._activeStepChange.emit(this._activeStep);\n }\n\n changeActiveStepOnHeader(step: IStep): void {\n const stepIndex = this._steps.indexOf(step);\n this._activeStep = step;\n this.stepper.selected = this.stepper._steps.find((_, i) => i === stepIndex);\n }\n\n changeActiveSubStep(subStep: IStep): void {\n this._activeStep.activeSubStep = subStep;\n }\n\n previous(): void {\n if (this.isPreviousAvailable()) {\n // If active step has no sub steps or first sub step is selected -> go to previous main step\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const previousEnabledStep = this.findPreviousEnabledStep();\n this.changeActiveStep(previousEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(previousEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex - 1];\n }\n }\n }\n\n next(): void {\n if (this.isNextAvailable()) {\n // If active step has no sub steps or last sub step is selected -> go to next main step\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const nextEnabledStep = this.findNextEnabledStep();\n this.changeActiveStep(nextEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(nextEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex + 1];\n }\n }\n }\n\n isPreviousAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const index = this.getCurrentIndex();\n return index > 0 && this.isAnyPreviousStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isNextAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const index = this.getCurrentIndex();\n return index < this._steps.length - 1 && this.isAnyFollowingStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isLastStep(): boolean {\n if (this.getCurrentIndex() === this._steps.length - 1) {\n if (this.activeTabHasSubSteps()) {\n return this.isLastSubStep();\n } else {\n return true;\n }\n }\n return false;\n }\n\n getCurrentIndex(): number {\n return this._steps.findIndex((value) => value === this._activeStep);\n }\n\n getCurrentSubStepIndex(): number {\n return this._activeStep.subSteps.findIndex((value) => value === this._activeStep.activeSubStep);\n }\n\n triggerClick(): void {\n const selectedStep = this._steps[this.stepper.selectedIndex];\n this.changeActiveStep(selectedStep);\n }\n\n headerClick(event: any, step: IStep): void {\n event.stopPropagation(); //stop processing current header click event\n this._headerClick.emit(step);\n }\n\n private activeTabHasSubSteps(): boolean {\n return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;\n }\n\n private isFirstSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[0];\n }\n\n private isLastSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n\n private isAnyPreviousStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(0, index).find((step) => step.enabled) !== undefined;\n }\n\n private isAnyFollowingStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled) !== undefined;\n }\n\n private findPreviousEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps\n .slice(0, index)\n .reverse()\n .find((step) => step.enabled);\n }\n\n private findNextEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled);\n }\n}\n","<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <!-- Always show numbers -->\n <ng-template matStepperIcon=\"number\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <!-- Replace edit/done/error with the same number -->\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <ng-template matStepperIcon=\"done\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <ng-template matStepperIcon=\"error\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n @for (step of _steps; track step) {\n <mat-step [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n @if (this._headerClick.observers.length > 0) {\n <div class=\"step-header-overlay\" (click)=\"headerClick($event, step)\"></div>\n }\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\n }\n </mat-horizontal-stepper>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FlowbarComponent } from './flowbar.component';\n\n@NgModule({\n imports: [CommonModule, MatStepperModule, FlowbarComponent],\n exports: [FlowbarComponent],\n})\nexport class FlowbarModule {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[madCarouselShortText]',\n})\nexport class CarouselShortTextDirective {\n text = input<string>('', { alias: 'madCarouselShortText' });\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { CarouselComponent } from '../carousel.component';\n\n@Directive({\n selector: '[madCarouselSlide]',\n})\nexport class CarouselSlideDirective {\n private readonly carousel = inject(CarouselComponent);\n\n @HostBinding('class')\n get hostClasses(): string {\n const loop = !!this.carousel.options()?.loop;\n const base = 'flex min-w-0 min-h-fit flex-[0_0_100%] items-center justify-center';\n const border = this.carousel.useSlideBorder() ? ' border border-gray-400' : '';\n const loopMargin = loop ? ' ml-4' : '';\n return base + border + loopMargin;\n }\n\n @HostBinding('style.height')\n get hostHeight(): string {\n return this.carousel.slideHeight();\n }\n\n @HostBinding('style.border-radius')\n get hostBorderRadius(): string {\n return this.carousel.slideBorderRadius();\n }\n}\n","import { Component, computed, contentChildren, effect, ElementRef, input, InputSignal, signal, viewChild } from '@angular/core';\nimport EmblaCarousel, { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel';\nimport { CarouselShortTextDirective } from './carousel-short-text-directive/carousel-short-text.directive';\nimport { CarouselSlideDirective } from './carousel-slide-directive/carousel-slide.directive';\n\n@Component({\n selector: 'mad-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n imports: [],\n})\nexport class CarouselComponent {\n readonly shortTexts = contentChildren(CarouselShortTextDirective);\n readonly slides = contentChildren(CarouselSlideDirective);\n readonly options: InputSignal<EmblaOptionsType | undefined> = input<EmblaOptionsType | undefined>(undefined);\n readonly width = input<string>('50%');\n readonly slideHeight = input<string>('12rem');\n readonly slideBorderRadius = input<string>('5px');\n readonly useSlideBorder = input<boolean>(true);\n\n protected readonly viewportRef = viewChild<ElementRef<HTMLElement>>('viewport');\n protected readonly containerRef = viewChild<ElementRef<HTMLElement>>('container');\n\n protected readonly selectedIndex = signal(0);\n protected readonly scrollSnaps = signal<number[]>([]);\n protected readonly prevBtnDisabled = signal(true);\n protected readonly nextBtnDisabled = signal(true);\n protected readonly containerLoopClass = computed(() => (this.options()?.loop ? '-mr-4' : ''));\n private emblaApi?: EmblaCarouselType;\n\n constructor() {\n effect(() => this.initEmbla());\n effect(() => {\n const slideCount = this.slides().length;\n if (slideCount > 0) {\n this.validateShortTexts(slideCount);\n }\n });\n }\n\n private initEmbla() {\n this.emblaApi = EmblaCarousel(this.viewportRef().nativeElement, this.options());\n\n this.onInit();\n this.onSelect();\n\n this.emblaApi.on('select', () => this.onSelect());\n this.emblaApi.on('reInit', () => {\n this.onInit();\n this.onSelect();\n });\n }\n\n private validateShortTexts(slideCount: number) {\n const shortTextCount = this.shortTexts().length;\n if (shortTextCount > 0 && shortTextCount !== slideCount) {\n console.error(\n `Found ${slideCount} slides but only ${shortTextCount} slides provide the \\`carouselShortText\\` directive! Make sure that either none, or all slides provide this value!`,\n );\n }\n }\n\n protected onInit(): void {\n if (!this.emblaApi) return;\n this.selectedIndex.set(this.emblaApi.selectedScrollSnap());\n this.scrollSnaps.set(this.emblaApi.scrollSnapList());\n this.prevBtnDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextBtnDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n protected onSelect(): void {\n if (!this.emblaApi) return;\n\n this.selectedIndex.set(this.emblaApi.selectedScrollSnap());\n this.prevBtnDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextBtnDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n protected scrollNext(): void {\n this.emblaApi?.scrollNext();\n }\n\n protected scrollPrev(): void {\n this.emblaApi?.scrollPrev();\n }\n\n protected scrollTo(index: number): void {\n this.emblaApi?.scrollTo(index);\n }\n}\n","<div class=\"h-fit min-w-fit\" [style.width]=\"width()\">\n <div class=\"flex flex-row items-center justify-center gap-4\">\n <button\n class=\"bg-(--carousel-button-background-color) cursor-pointer hover:border-[0.1rem] hover:border-(--carousel-button-border-color) w-7 h-7 rounded-full flex items-center justify-center disabled:opacity-50 disabled:hover:border-0 disabled:cursor-not-allowed\"\n [disabled]=\"prevBtnDisabled()\"\n (click)=\"scrollPrev()\"\n >\n <span class=\"material-symbols-outlined\">chevron_left</span>\n </button>\n\n <div class=\"flex-1 w-0 min-w-0 overflow-hidden\" #viewport>\n <div class=\"flex flex-row gap-4 w-full touch-pan-y touch-pinch-zoom\" [class]=\"containerLoopClass()\" #container>\n <ng-content></ng-content>\n </div>\n </div>\n\n <button\n class=\"bg-(--carousel-button-background-color) cursor-pointer hover:border-[0.1rem] hover:border-(--carousel-button-border-color) w-7 h-7 rounded-full flex items-center justify-center disabled:opacity-50 disabled:hover:border-0 disabled:cursor-not-allowed\"\n [disabled]=\"nextBtnDisabled()\"\n (click)=\"scrollNext()\"\n >\n <span class=\"material-symbols-outlined\">chevron_right</span>\n </button>\n </div>\n\n @let slideTexts = shortTexts();\n @let shouldDisplaySlideText = slideTexts.length > 0;\n <div class=\"flex gap-4 height-8 padding-x-4 mt-5 justify-center\">\n @for (snap of scrollSnaps(); let i = $index; track snap) {\n <button\n (click)=\"scrollTo(i)\"\n class=\"inline-flex items-center justify-center rounded-full border border-[0.1rem] border-(--carousel-dots-border-color) cursor-pointer hover:border-(carousel-dots-hover-border-color) transition-transform mx-w-6 max-h-6\"\n [class.scale-120]=\"i === selectedIndex()\"\n [class.border-gray-950]=\"i === selectedIndex()\"\n [class.py-1]=\"shouldDisplaySlideText\"\n [class.px-2]=\"shouldDisplaySlideText\"\n [class.size-4]=\"!shouldDisplaySlideText\"\n >\n @if (shouldDisplaySlideText) {\n {{ slideTexts[i]?.text() }}\n }\n </button>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n imports: [MatButtonModule, MatIconModule],\n})\nexport class SidebarComponent {\n @Input() collapsed = false;\n\n toggleCollapse() {\n this.collapsed = !this.collapsed;\n }\n}\n","<div [class.collapsed]=\"collapsed\" class=\"sidebar-wrapper\">\n <div class=\"sidebar-header\">\n <button (click)=\"toggleCollapse()\" color=\"basic\" mat-button>\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\n </button>\n </div>\n <div class=\"item-list\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: '[mad-sidebar-item]',\n templateUrl: 'sidebar-item.component.html',\n styleUrls: ['sidebar-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class SidebarItemComponent {}\n","<span class=\"content-wrapper\">\n <ng-content></ng-content>\n</span>\n<span class=\"focus-overlay\"></span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from './sidebar.component';\nimport { SidebarItemComponent } from './sidebar-item/sidebar-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n exports: [SidebarComponent, SidebarItemComponent],\n imports: [CommonModule, MatIconModule, MatButtonModule, SidebarComponent, SidebarItemComponent],\n})\nexport class SidebarModule {}\n","import { Component, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { ContentPanelModule } from '../content-panel/content-panel.module';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router, RouterModule } from '@angular/router';\n\n@Component({\n selector: 'mad-sidebar-layout',\n templateUrl: './sidebar-layout.component.html',\n styleUrl: './sidebar-layout.component.scss',\n imports: [CommonModule, ContentPanelModule, PortalModule, MatIconModule, RouterModule],\n})\nexport class SidebarLayoutComponent {\n @Input() title: string = '';\n @Input() hasBackButton = true;\n @Input() titleTemplate: TemplateRef<unknown> | null;\n\n @Input({ required: true }) set sideBarItems(ref: TemplateRef<unknown>) {\n this.sideBarItemsPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n sideBarItemsPortal?: TemplatePortal<unknown>;\n\n @Input() set headerContent(ref: TemplateRef<unknown>) {\n this.headerContentPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n headerContentPortal?: TemplatePortal<unknown>;\n\n @Input() set actionGroup(ref: TemplateRef<unknown>) {\n this.actionGroupPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n actionGroupPortal?: TemplatePortal<unknown>;\n\n @Input({ required: true }) set content(ref: TemplateRef<unknown>) {\n this.contentPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n contentPortal?: TemplatePortal<unknown>;\n\n @Input() set footer(ref: TemplateRef<unknown>) {\n this.footerPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n footerPortal?: TemplatePortal<unknown>;\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n private router: Router,\n private location: Location,\n ) {}\n\n public goToPreviousPage(): void {\n this.location.back();\n }\n}\n","<mad-main-container class=\"w-full\">\n <mad-content-header>\n @if (headerContentPortal) {\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n } @else {\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n @if (hasBackButton) {\n <button class=\"back-button\">\n <mat-icon (click)=\"goToPreviousPage()\" class=\"mat-primary\"> arrow_back</mat-icon>\n </button>\n }\n @if (titleTemplate) {\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n } @else {\n <h2 class=\"title\">{{ title }}</h2>\n }\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n }\n </mad-content-header>\n <mad-content-panel-container>\n @if (sideBarItemsPortal) {\n <mad-content-panel-container-sidebar>\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n }\n @if (contentPortal) {\n <mad-content-panel-container-content>\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n }\n @if (footerPortal) {\n <mad-content-panel-container-footer>\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\n }\n </mad-content-panel-container>\n</mad-main-container>\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Params, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarService implements OnDestroy {\n backAction: BackAction;\n mainActions: MainAction[] = []; // shown on the left, next to title, as big buttons\n toolbarActions: ToolbarAction[] = []; // shown on the right as icons\n toolbarActionsAlwaysAsMenu = false; // show the mobile view (burger menu) for toolbar actions\n dataTitle: string;\n routerSubscription: Subscription;\n private title: string;\n private toolbarActionsMenuTitle = 'More'; // title of the burger menu\n\n private currentUrl: string;\n\n constructor(\n private router: Router,\n private translate: TranslateService,\n ) {\n this.routerSubscription = this.router.events.subscribe((routingEvent) => {\n if (routingEvent instanceof NavigationEnd) {\n if (this.currentUrl !== routingEvent.urlAfterRedirects) {\n this.clearToolbarActions();\n this.clearMainActions();\n delete this.backAction;\n delete this.dataTitle;\n }\n this.currentUrl = router.url;\n }\n });\n }\n\n get toolbarTitle(): string {\n return this.title;\n }\n\n set toolbarTitle(toolbarTitle: string) {\n this.title = toolbarTitle;\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarActions;\n }\n\n addToolbarAction(action: ToolbarAction): void {\n this.translate\n .get(action.i18nActionKey)\n .toPromise()\n .then((translated) => {\n action.actionName = translated;\n this.toolbarActions.push(action);\n });\n }\n\n setDataTitle(dataTitle: string): void {\n this.dataTitle = dataTitle;\n }\n\n setToolbarActionsAlwaysAsMenu(toolbarActionsAlwaysAsMenu: boolean): void {\n this.toolbarActionsAlwaysAsMenu = toolbarActionsAlwaysAsMenu;\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarActionsAlwaysAsMenu;\n }\n\n getDataTitle(): string {\n return this.dataTitle;\n }\n\n clearToolbarActions(): void {\n this.toolbarActions = [];\n }\n\n getMainActions(): MainAction[] {\n return this.mainActions;\n }\n\n getBackAction(): BackAction {\n return this.backAction;\n }\n\n setToolbarActionsMenuTitle(toolbarActionsMenuTitle: string): void {\n this.toolbarActionsMenuTitle = toolbarActionsMenuTitle;\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarActionsMenuTitle;\n }\n\n addMainAction(mainAction: MainAction): void {\n this.translate\n .get(mainAction.i18nActionKey)\n .toPromise()\n .then((translated) => {\n mainAction.actionName = translated;\n this.mainActions.push(mainAction);\n });\n }\n\n /**\n * Per default the goBackRoute is a routerLink. But if a href should be used (for absolute browser routing) then isAbsoluteUrl can be set to true.\n */\n addBackAction(goBackRoute: string, isAbsoluteUrl = false): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n };\n if (!isAbsoluteUrl) {\n this.backAction.routerLink = goBackRoute;\n } else {\n this.backAction.href = goBackRoute;\n }\n }\n\n /**\n * Only supports routerLink (no href), but with additional query parameters\n */\n addBackActionRoute(goBackRoute: string, queryParams?: Params): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n routerLink: goBackRoute,\n queryParams: queryParams || {},\n };\n }\n\n addSimpleBackButton(overrideIfPresent = false): void {\n if (this.getBackAction() && !overrideIfPresent) {\n return;\n }\n\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n action(): void {\n window.history.back();\n },\n };\n }\n\n clearMainActions(): void {\n this.mainActions = [];\n }\n}\n","import { Component } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ToolbarService } from './toolbar.service';\nimport { Observable, of } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { Action, BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { MaterialActionButtonComponent } from '../../material-action-button/material-action-button.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from '../../button/primary-button/primary-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { AsyncPipe } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'mad-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n host: {\n class: 'mad-toolbar',\n },\n imports: [\n MatToolbarModule,\n RouterLink,\n MatButtonModule,\n MatIconModule,\n PrimaryButtonComponent,\n MatTooltipModule,\n MaterialActionButtonComponent,\n IconButtonComponent,\n MatBadgeModule,\n MatMenuModule,\n AsyncPipe,\n ],\n})\nexport class ToolbarComponent {\n isHandset$: Observable<boolean> = this.breakpointObserver.observe([Breakpoints.Handset]).pipe(map((result) => result.matches));\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private titleService: Title,\n private toolbarService: ToolbarService,\n ) {}\n\n getTitle(): string {\n const dataTitle = this.toolbarService.getDataTitle();\n const toolbarTitle = this.toolbarService.toolbarTitle;\n const title = !toolbarTitle || toolbarTitle.length <= 0 ? this.titleService.getTitle() : toolbarTitle;\n return !dataTitle || dataTitle.length <= 0 ? title : title + ': ' + dataTitle;\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarService.getToolbarActions();\n }\n\n getMainActions(): MainAction[] {\n return this.toolbarService.getMainActions();\n }\n\n hasPermission(action: Action): Observable<boolean> {\n if (!action || !action.showIf) {\n return of(true);\n }\n return action.showIf;\n }\n\n isRouterLink(action: BackAction | MainAction): boolean {\n return action && !!action.routerLink;\n }\n\n isAbsoluteLink(action: BackAction): boolean {\n return action && !!action.href;\n }\n\n isAction(action: BackAction | MainAction): boolean {\n return action && !!action.action;\n }\n\n getBackAction(): BackAction {\n return this.toolbarService.getBackAction();\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarService.getToolbarActionsAlwaysAsMenu();\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarService.getToolbarActionsMenuTitle();\n }\n\n showBadgeForMenu(): boolean {\n return (\n this.getToolbarActions()\n .slice(1) // the first icon is not shown in menu\n .filter((value) => value.badge && value.badge.value).length > 0\n );\n }\n\n hasImportantToolbarActions(): boolean {\n return this.getToolbarActions().filter((value) => !!value.importantAction).length > 0;\n }\n}\n","<mat-toolbar class=\"content-toolbar\">\n @if (isRouterLink(getBackAction())) {\n <a data-cy=\"back-link-button\" [routerLink]=\"getBackAction().routerLink\" [queryParams]=\"getBackAction().queryParams\">\n <button [id]=\"'go-back'\" class=\"mat-primary go-back-button\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n @if (isAbsoluteLink(getBackAction())) {\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\">\n <button [id]=\"'go-back'\" class=\"go-back-button mat-primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n @if (isAction(getBackAction())) {\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\">\n <button [id]=\"'go-back'\" class=\"mat-primary go-back-button\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n @for (mainAction of getMainActions(); track mainAction; let i = $index) {\n @if (hasPermission(mainAction) | async) {\n @if (!(isHandset$ | async)) {\n <div>\n @if (isRouterLink(mainAction)) {\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n }\n @if (isAction(mainAction)) {\n <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n }\n </div>\n }\n @if (isHandset$ | async) {\n <div>\n @if (isRouterLink(getBackAction())) {\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n />\n }\n @if (isAction(getBackAction())) {\n <mad-material-action-button\n data-cy=\"material-main-action-button\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n (click)=\"mainAction.action()\"\n [id]=\"mainAction.matIcon\"\n />\n }\n </div>\n }\n }\n }\n\n <div class=\"right-aligned no-print\">\n @for (action of getToolbarActions(); track action; let i = $index) {\n @if (hasPermission(action) | async) {\n @if (\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n ) {\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n }\n }\n }\n\n @if ((isHandset$ | async) || getToolbarActionsAlwaysAsMenu()) {\n @if (getToolbarActions().length > 2) {\n <mad-icon-button data-cy=\"burger-button\" type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '⁠' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print toolbar-menu\">\n @for (action of getToolbarActions(); track action; let i = $index) {\n @if (!action.importantAction) {\n @if (hasPermission(action) | async) {\n @if (i >= (hasImportantToolbarActions() ? 0 : 1)) {\n <button data-cy=\"burger-menu-button\" mat-menu-item (click)=\"action.action()\" [title]=\"action.actionName\">\n <mat-icon\n class=\"mat-primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n }\n }\n }\n }\n </mat-menu>\n }\n }\n </div>\n</mat-toolbar>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ToolbarComponent } from './toolbar.component';\nimport { MaterialActionButtonModule } from '../../material-action-button/material-action-button.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ButtonModule } from '../../button/button.module';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatMenuModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MaterialActionButtonModule,\n MatTooltipModule,\n ButtonModule,\n MatBadgeModule,\n ToolbarComponent,\n ],\n exports: [ToolbarComponent],\n})\nexport class ToolbarModule {}\n","import { NgModule } from '@angular/core';\nimport { ToolbarModule } from './layout/toolbar/toolbar.module';\nimport { ReadOnlyFormFieldModule } from './readonly/readonly-form-field.module';\nimport { MaterialActionButtonModule } from './material-action-button/material-action-button.module';\nimport { NumericFieldModule } from './numeric-field/numeric-field.module';\nimport { CardModule } from './card/card.module';\nimport { QuickListModule } from './quick-list/quick-list.module';\nimport { ButtonModule } from './button/button.module';\nimport { ThrottleClickModule } from './throttle-click/throttle-click.module';\nimport { SidebarModule } from './layout/sidebar/sidebar.module';\nimport { CarouselComponent } from './carousel/carousel.component';\nimport { CarouselShortTextDirective } from './carousel/carousel-short-text-directive/carousel-short-text.directive';\nimport { CarouselSlideDirective } from './carousel/carousel-slide-directive/carousel-slide.directive';\n\n@NgModule({\n imports: [CarouselComponent, CarouselShortTextDirective, CarouselSlideDirective],\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n SidebarModule,\n CarouselComponent,\n CarouselShortTextDirective,\n CarouselSlideDirective,\n ],\n})\nexport class MaterialAddonsModule {}\n","import { Directive, HostBinding, HostListener, output } from '@angular/core';\n\n@Directive({\n selector: '[madDragAndDrop]',\n})\nexport class DragAndDropDirective {\n @HostBinding('style.background-color')\n protected backgroundColor = '$background-color';\n\n @HostBinding('style.opacity')\n protected opacity = '1';\n\n onFileDropped = output<FileList>();\n\n @HostListener('dragover', ['$event'])\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.backgroundColor = '$selection-background';\n this.opacity = '0.8';\n }\n\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resetStyles();\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resetStyles();\n\n const files = event.dataTransfer?.files;\n if (files?.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n\n private resetStyles(): void {\n this.backgroundColor = '$background-color';\n this.opacity = '1';\n }\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\n\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '../button/button.module';\nimport { DragAndDropDirective } from './drag-and-drop.directive';\nimport { MatChipsModule } from '@angular/material/chips';\n\nexport type UploadError = 'ONLY_SINGLE_FILE' | 'FILETYPE_NOT_SUPPORTED';\n\n@Component({\n selector: 'mad-file-upload',\n imports: [MatCardModule, MatIconModule, ButtonModule, TranslateModule, DragAndDropDirective, MatChipsModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss',\n})\nexport class FileUploadComponent {\n id = input<string>('');\n multiple = input<boolean>(false);\n accept = input<string[]>([]);\n text = input<string>('');\n showFileList = input<boolean>(false);\n removable = input<boolean>(true);\n\n fileEmitter = output<FileList>();\n errorEmitter = output<UploadError>();\n\n protected readonly fileList = signal<File[]>([]);\n protected readonly acceptedFileTypes = computed(() => this.accept().map((ext) => `.${ext.toLowerCase()}`));\n protected readonly acceptAttribute = computed(() => this.acceptedFileTypes().join(','));\n protected readonly hasSingleFile = computed(() => !this.multiple() && this.fileList().length === 1);\n protected readonly uploadLabel = computed(() => this.text() || 'Upload');\n\n uploadFile(files: FileList | File[] | null): void {\n if (!files) {\n return;\n }\n\n const fileArray = Array.from(files);\n\n if (!this.validateFileList(fileArray)) {\n return;\n }\n\n this.addFiles(fileArray);\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList()));\n }\n\n openFile(file: File): void {\n window.open(window.URL.createObjectURL(file));\n }\n\n remove(file: File): void {\n this.fileList.update((files) => files.filter((existingFile) => existingFile !== file));\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList()));\n }\n\n private validateFileList(fileArray: File[]): boolean {\n if (!this.multiple() && fileArray.length > 1) {\n this.emitError('ONLY_SINGLE_FILE');\n return false;\n }\n\n for (const file of fileArray) {\n if (!this.isAcceptedFileType(file.name)) {\n this.emitError('FILETYPE_NOT_SUPPORTED');\n return false;\n }\n }\n\n return true;\n }\n\n private emitError(errorType: UploadError): void {\n this.errorEmitter.emit(errorType);\n }\n\n private isAcceptedFileType(fileName: string): boolean {\n const acceptedTypes = this.acceptedFileTypes();\n if (!acceptedTypes.length) {\n return true;\n }\n\n const fileExtension = fileName.split('.').pop()?.toLowerCase();\n if (!fileExtension) {\n return false;\n }\n\n return acceptedTypes.includes(`.${fileExtension}`);\n }\n\n private addFiles(fileArray: File[]): void {\n if (!this.multiple()) {\n this.fileList.set(fileArray);\n return;\n }\n\n this.fileList.update((files) => [...files, ...fileArray]);\n }\n\n private createFileListFromArray(files: File[]): FileList {\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file));\n return dataTransfer.files;\n }\n}\n","<mat-card\n id=\"uploadFileContainer\"\n class=\"upload-file-container\"\n (click)=\"fileInput.click()\"\n madDragAndDrop\n (onFileDropped)=\"uploadFile($event)\"\n>\n <input\n #fileInput\n hidden\n type=\"file\"\n [id]=\"id()\"\n [multiple]=\"multiple()\"\n [accept]=\"acceptAttribute()\"\n (change)=\"uploadFile(fileInput.files)\"\n (click)=\"fileInput.value = ''\"\n />\n <mat-card-content class=\"upload-file-content\">\n @if (hasSingleFile()) {\n {{ fileList()[0].name }}\n } @else {\n <mat-icon>vertical_align_top</mat-icon>\n {{ uploadLabel() }}\n }\n </mat-card-content>\n</mat-card>\n\n@if (showFileList()) {\n <mat-chip-listbox>\n @for (file of fileList(); track file) {\n <mat-chip class=\"download\" (click)=\"openFile(file)\" [removable]=\"removable()\" (removed)=\"remove(file)\">\n {{ file.name }}\n @if (removable()) {\n <mat-icon matChipRemove>delete_forever</mat-icon>\n }\n </mat-chip>\n }\n </mat-chip-listbox>\n}\n","import { Component, input } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nexport type TileVariant = 'success' | 'error' | 'info' | 'warning';\nexport type TileSize = 'sm' | 'md' | 'lg';\nexport type TileIconPosition = 'start' | 'end';\n\n@Component({\n selector: 'mad-tile',\n imports: [MatIcon],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss',\n})\nexport class TileComponent {\n readonly label = input.required<string>();\n readonly variant = input<TileVariant>('info');\n readonly size = input<TileSize>('md');\n\n /** Optional Material icon name */\n readonly icon = input<string | null>(null);\n\n /** Icon position relative to label */\n readonly iconPosition = input<TileIconPosition>('start');\n}\n","<div\n class=\"tile\"\n [class.tile--success]=\"variant() === 'success'\"\n [class.tile--error]=\"variant() === 'error'\"\n [class.tile--info]=\"variant() === 'info'\"\n [class.tile--warning]=\"variant() === 'warning'\"\n [class.tile--sm]=\"size() === 'sm'\"\n [class.tile--md]=\"size() === 'md'\"\n [class.tile--lg]=\"size() === 'lg'\"\n [class.tile--icon-end]=\"iconPosition() === 'end'\"\n>\n <div class=\"tile__content\">\n @if (icon() && iconPosition() === 'start') {\n <mat-icon class=\"tile__icon\" aria-hidden=\"true\">\n {{ icon() }}\n </mat-icon>\n }\n\n <span class=\"tile__label\">\n {{ label() }}\n </span>\n\n @if (icon() && iconPosition() === 'end') {\n <mat-icon class=\"tile__icon\" aria-hidden=\"true\">\n {{ icon() }}\n </mat-icon>\n }\n </div>\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nexport interface BreadcrumbItem {\n label: string;\n route?: string[]; // Optional — undefined for current non-clickable item\n href?: string;\n}\n\n@Component({\n selector: 'mad-breadcrumb',\n imports: [RouterLink, IconButtonComponent, MatIcon, MatTooltip],\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n})\nexport class BreadcrumbComponent {\n breadcrumbs = input.required<BreadcrumbItem[]>();\n showCopy = input<boolean>(false);\n title = input<string>('Copy');\n\n copy = output<void>();\n}\n","@if (breadcrumbs().length) {\n <div class=\"breadcrumb\">\n <nav data-cy=\"breadcrumb-nav\" class=\"breadcrumb__nav\">\n @for (crumb of breadcrumbs(); track crumb.label; let last = $last) {\n @if (crumb.route?.length) {\n <a data-cy=\"breadcrumb-link\" [routerLink]=\"crumb.route\" class=\"breadcrumb__link\">{{ crumb.label }}</a>\n } @else if (crumb.href?.length) {\n <a data-cy=\"breadcrumb-link\" [href]=\"crumb.href\" target=\"_blank\" class=\"breadcrumb__link\">{{ crumb.label }}</a>\n } @else {\n <span data-cy=\"breadcrumb-current\" class=\"breadcrumb__current\">{{ crumb.label }}</span>\n }\n @if (!last) {\n <span data-cy=\"breadcrumb-separator\" class=\"breadcrumb__separator\">/</span>\n }\n }\n </nav>\n @if (showCopy()) {\n <mad-icon-button\n data-cy=\"breadcrumb-copy\"\n class=\"breadcrumb__copy\"\n (click)=\"copy.emit()\"\n [matTooltip]=\"title()\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>content_copy</mat-icon>\n </mad-icon-button>\n }\n </div>\n}\n","export const VERSION = '22.0.10';\n","import { InjectionToken } from '@angular/core';\nimport { AlertType, AlertSize } from './alert.component';\n\nexport interface AlertDefaultOptions {\n type?: AlertType;\n size?: AlertSize;\n}\n\nexport const MAD_ALERT_DEFAULT_CONFIGURATION = new InjectionToken('mad-alert-configuration', {\n providedIn: 'root',\n factory: MAD_ALERT_DEFAULT_CONFIGURATION_FACTORY,\n});\n\nexport function MAD_ALERT_DEFAULT_CONFIGURATION_FACTORY(): AlertDefaultOptions {\n return {\n size: 'medium',\n type: 'info',\n };\n}\n","import { Component, computed, Inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AlertDefaultOptions, MAD_ALERT_DEFAULT_CONFIGURATION } from './alert-configuration';\n\nexport type AlertType = 'success' | 'info' | 'warning' | 'error';\nexport type AlertSize = 'small' | 'medium' | 'large';\n\n@Component({\n selector: 'mad-alert',\n imports: [MatIconModule, MatButtonModule],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n})\nexport class AlertComponent {\n type = input<AlertType>(this.alertConfig.type);\n message = input<string>('');\n size = input<AlertSize>(this.alertConfig.size);\n actionText = input<string>('');\n closeable = input<boolean>(true);\n\n close = output<void>();\n action = output<void>();\n\n protected classes = computed(() => `${this.type()} ${this.size()}`);\n protected icon = computed(() => {\n switch (this.type()) {\n case 'success':\n return 'check_circle';\n case 'info':\n return 'info';\n case 'warning':\n return 'warning';\n case 'error':\n return 'error';\n }\n });\n\n constructor(@Inject(MAD_ALERT_DEFAULT_CONFIGURATION) private alertConfig: AlertDefaultOptions) {}\n}\n","<div data-cy=\"alert\" class=\"alert\" [class]=\"classes()\">\n <span data-cy=\"alert-icon\" class=\"icon\">\n <mat-icon>{{ icon() }}</mat-icon>\n </span>\n <span data-cy=\"alert-message\" class=\"message\">{{ message() }}</span>\n @if (actionText()) {\n <span data-cy=\"alert-action-btn\" class=\"action-btn\" (click)=\"action.emit()\">\n {{ actionText() }}\n </span>\n }\n @if (closeable()) {\n <button mat-icon-button data-cy=\"alert-close-btn\" class=\"close-btn\" (click)=\"close.emit()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</div>\n","/*\n * Public API Surface of material-addons\n */\nexport * from './lib/material-action-button/material-action-button.component';\nexport * from './lib/material-action-button/material-action-button.module';\nexport * from './lib/button/button';\nexport * from './lib/button/button.module';\nexport * from './lib/readonly/readonly-form-field.module';\nexport * from './lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nexport * from './lib/readonly/readonly-form-field/readonly-form-field.component';\n\nexport * from './lib/numeric-field/numeric-field';\nexport * from './lib/numeric-field/numeric-field.module';\nexport * from './lib/numeric-field/number-format.service';\nexport * from './lib/card/card';\nexport * from './lib/card/card.module';\nexport * from './lib/quick-list/quick-list';\nexport * from './lib/quick-list/quick-list.module';\nexport * from './lib/table/table';\nexport * from './lib/table/table.module';\nexport * from './lib/data-table/data-table';\nexport * from './lib/throttle-click/throttle-click.directive';\nexport * from './lib/throttle-click/throttle-click.module';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/stepper/step-header/step-header.component';\nexport * from './lib/stepper/mad-stepper-animation';\nexport * from './lib/stepper/stepper.module';\n\nexport * from './lib/layout/content-panel/content-header/content-header.component';\nexport * from './lib//layout/content-panel/content-panel-container/content-panel-container.component';\nexport * from './lib//layout/content-panel/content-panel-container-content/content-panel-container-content.component';\nexport * from './lib//layout/content-panel/content-panel-container-footer/content-panel-container-footer.component';\nexport * from './lib//layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component';\nexport * from './lib//layout/content-panel/main-container/main-container.component';\nexport * from './lib//layout/content-panel/content-panel.module';\n\nexport * from './lib/layout/flowbar/flowbar.component';\nexport * from './lib/layout/flowbar/flowbar.module';\n\nexport * from './lib/carousel/carousel.component';\nexport * from './lib/carousel/carousel-short-text-directive/carousel-short-text.directive';\nexport * from './lib/carousel/carousel-slide-directive/carousel-slide.directive';\n\nexport * from './lib/layout/sidebar/sidebar.component';\nexport * from './lib/layout/sidebar/sidebar-item/sidebar-item.component';\nexport * from './lib/layout/sidebar/sidebar.module';\nexport * from './lib/layout/sidebar-layout/sidebar-layout.component';\n\nexport * from './lib/layout/toolbar/toolbar.module';\nexport * from './lib/layout/toolbar/toolbar.component';\nexport * from './lib/layout/toolbar/toolbar.service';\nexport * from './lib/layout/toolbar/toolbar-action.interface';\n\nexport * from './lib/material-addons.module';\nexport * from './lib/file-upload/file-upload.component';\nexport * from './lib/tile/tile.component';\nexport * from './lib/breadcrumb/breadcrumb.component';\nexport * from './version';\n\nexport * from './lib/alert/alert';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1","i4","i5","i1.NumberFormatService","i2","i6","i9","uuidV4","i1.DataTableFilter","i1.DataTableTemplateExpandableColumnDefinition","i7","i8","i12.OutlineButtonComponent","i13.IconButtonComponent","i14.MadButtonGroupComponent","i18","i1.DataTableTemplateColumnDefinition","i3.ContentHeaderComponent","i4.ContentPanelContainerComponent","i5.ContentPanelContainerContentComponent","i6.ContentPanelContainerFooterComponent","i7.ContentPanelContainerSidebarComponent","i8.MainContainerComponent","i10","i3.ToolbarService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"porscheinformatik-material-addons.mjs","sources":["../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.ts","../../../projects/material-addons/src/lib/material-action-button/material-action-button.component.html","../../../projects/material-addons/src/lib/material-action-button/material-action-button.module.ts","../../../projects/material-addons/src/lib/button/mad-basic-button.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.ts","../../../projects/material-addons/src/lib/button/danger-button/danger-button.component.html","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.ts","../../../projects/material-addons/src/lib/button/flat-button/link-button.component.html","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.ts","../../../projects/material-addons/src/lib/button/icon-button/icon-button.component.html","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.ts","../../../projects/material-addons/src/lib/button/outline-button/outline-button.component.html","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.ts","../../../projects/material-addons/src/lib/button/primary-button/primary-button.component.html","../../../projects/material-addons/src/lib/button/mad-button/mad-button.directive.ts","../../../projects/material-addons/src/lib/button/mad-button-group/mad-button-group.component.ts","../../../projects/material-addons/src/lib/button/button.module.ts","../../../projects/material-addons/src/lib/numeric-field/number-format.service.ts","../../../projects/material-addons/src/lib/size-change/size-change.directive.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field/readonly-form-field.component.html","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.ts","../../../projects/material-addons/src/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.html","../../../projects/material-addons/src/lib/readonly/readonly-form-field.module.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.directive.ts","../../../projects/material-addons/src/lib/numeric-field/numeric-field.module.ts","../../../projects/material-addons/src/lib/throttle-click/throttle-click.directive.ts","../../../projects/material-addons/src/lib/card/card.component.ts","../../../projects/material-addons/src/lib/card/card.component.html","../../../projects/material-addons/src/lib/throttle-click/throttle-click.module.ts","../../../projects/material-addons/src/lib/card/card.module.ts","../../../projects/material-addons/src/lib/quick-list/base-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list-compact/quick-list-compact.component.html","../../../projects/material-addons/src/lib/quick-list/quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/quick-list.component.html","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.ts","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list/reactive-form-quick-list.component.html","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.ts","../../../projects/material-addons/src/lib/quick-list/reactive-form-quick-list-compact/reactive-form-quick-list-compact.component.html","../../../projects/material-addons/src/lib/quick-list/quick-list.module.ts","../../../projects/material-addons/src/lib/table/table.component.ts","../../../projects/material-addons/src/lib/table/table.component.html","../../../projects/material-addons/src/lib/table/table.module.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.html","../../../projects/material-addons/src/lib/data-table/configuration/data-table-action-type.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter.directive.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-sort-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-action-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-data-util.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-filter-util.ts","../../../projects/material-addons/src/lib/data-table/data-table-persistence.service.ts","../../../projects/material-addons/src/lib/data-table/configuration/data-table-global-configuration.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter-dialog/data-table-filter-dialog.component.html","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.ts","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-component/data-table-filter.component.html","../../../projects/material-addons/src/lib/data-table/data-table-filter/data-table-filter-header.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-column-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-expandable-column-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-expandable-cell-definition.directive.ts","../../../projects/material-addons/src/lib/data-table/util/data-table-input-transforms.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.ts","../../../projects/material-addons/src/lib/data-table/data-table.component.html","../../../projects/material-addons/src/lib/data-table/data-table-template/data-table-template-cell-definition.directive.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.ts","../../../projects/material-addons/src/lib/stepper/step-header/step-header.component.html","../../../projects/material-addons/src/lib/stepper/mad-stepper-animation.ts","../../../projects/material-addons/src/lib/stepper/stepper.component.ts","../../../projects/material-addons/src/lib/stepper/step.component.html","../../../projects/material-addons/src/lib/stepper/stepper.component.html","../../../projects/material-addons/src/lib/stepper/stepper.module.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-header/content-header.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-header/content-header.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container/content-panel-container.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container/content-panel-container.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-content/content-panel-container-content.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-footer/content-panel-container-footer.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component.html","../../../projects/material-addons/src/lib/layout/content-panel/main-container/main-container.component.ts","../../../projects/material-addons/src/lib/layout/content-panel/main-container/main-container.component.html","../../../projects/material-addons/src/lib/layout/content-panel/content-panel.module.ts","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.component.ts","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.component.html","../../../projects/material-addons/src/lib/layout/flowbar/flowbar.module.ts","../../../projects/material-addons/src/lib/carousel/carousel-short-text-directive/carousel-short-text.directive.ts","../../../projects/material-addons/src/lib/carousel/carousel-slide-directive/carousel-slide.directive.ts","../../../projects/material-addons/src/lib/carousel/carousel.component.ts","../../../projects/material-addons/src/lib/carousel/carousel.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.component.ts","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar-item/sidebar-item.component.ts","../../../projects/material-addons/src/lib/layout/sidebar/sidebar-item/sidebar-item.component.html","../../../projects/material-addons/src/lib/layout/sidebar/sidebar.module.ts","../../../projects/material-addons/src/lib/layout/sidebar-layout/sidebar-layout.component.ts","../../../projects/material-addons/src/lib/layout/sidebar-layout/sidebar-layout.component.html","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.service.ts","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.component.ts","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.component.html","../../../projects/material-addons/src/lib/layout/toolbar/toolbar.module.ts","../../../projects/material-addons/src/lib/material-addons.module.ts","../../../projects/material-addons/src/lib/file-upload/drag-and-drop.directive.ts","../../../projects/material-addons/src/lib/file-upload/file-upload.component.ts","../../../projects/material-addons/src/lib/file-upload/file-upload.component.html","../../../projects/material-addons/src/lib/tile/tile.component.ts","../../../projects/material-addons/src/lib/tile/tile.component.html","../../../projects/material-addons/src/lib/breadcrumb/breadcrumb.component.ts","../../../projects/material-addons/src/lib/breadcrumb/breadcrumb.component.html","../../../projects/material-addons/src/version.ts","../../../projects/material-addons/src/lib/alert/alert-configuration.ts","../../../projects/material-addons/src/lib/alert/alert.component.ts","../../../projects/material-addons/src/lib/alert/alert.component.html","../../../projects/material-addons/src/public_api.ts","../../../projects/material-addons/src/porscheinformatik-material-addons.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'mad-material-action-button',\n templateUrl: './material-action-button.component.html',\n styleUrls: ['./material-action-button.component.scss'],\n imports: [RouterLink, MatButtonModule, MatTooltipModule, MatIconModule],\n})\nexport class MaterialActionButtonComponent {\n actionName = input<string>('');\n id = input<string>('');\n icon = input<string>('add');\n routerLink = input<string>('');\n liftHigher = input(true);\n liftHigher2 = input(false);\n}\n","<div class=\"material-action-button\" [class.lift-higher]=\"liftHigher()\" [class.lift-higher-2]=\"liftHigher2()\">\n @if (liftHigher2()) {\n <a\n mat-mini-fab\n class=\"mat-accent\"\n [attr.id]=\"id() || null\"\n [routerLink]=\"routerLink()\"\n [matTooltip]=\"actionName()\"\n matTooltipPosition=\"left\"\n [attr.aria-label]=\"actionName() || null\"\n >\n <mat-icon>{{ icon() }}</mat-icon>\n </a>\n } @else {\n <a\n mat-fab\n class=\"mat-primary\"\n [attr.id]=\"id() || null\"\n [routerLink]=\"routerLink()\"\n [matTooltip]=\"actionName()\"\n matTooltipPosition=\"left\"\n [attr.aria-label]=\"actionName() || null\"\n >\n <mat-icon>{{ icon() }}</mat-icon>\n </a>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { MaterialActionButtonComponent } from './material-action-button.component';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n imports: [CommonModule, RouterModule, MatButtonModule, MatIconModule, MatTooltipModule, MaterialActionButtonComponent],\n exports: [MaterialActionButtonComponent],\n})\nexport class MaterialActionButtonModule {}\n","import { Directive, booleanAttribute, input } from '@angular/core';\n\n@Directive()\nexport abstract class MadBasicButton {\n readonly type = input<string | undefined>();\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly title = input('');\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-danger-button',\n templateUrl: './danger-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DangerButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"filled\" class=\"mad-danger\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-link-button',\n templateUrl: './link-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LinkButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"text\" class=\"mad-primary\" [title]=\"title()\" [type]=\"type()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-icon-button',\n templateUrl: './icon-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matIconButton class=\"mat-primary\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-outline-button',\n templateUrl: './outline-button.component.html',\n styleUrls: ['./outline-button.component.scss'],\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OutlineButtonComponent extends MadBasicButton {\n readonly color = input<ThemePalette>('primary');\n}\n","<button\n data-cy=\"button\"\n matButton=\"outlined\"\n class=\"mad-outline\"\n [class.mad-primary]=\"color() === 'primary'\"\n [class.mad-accent]=\"color() === 'accent'\"\n [class.mad-warn]=\"color() === 'warn'\"\n [type]=\"type()\"\n [title]=\"title()\"\n [disabled]=\"disabled()\"\n>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MadBasicButton } from '../mad-basic-button';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-primary-button',\n templateUrl: './primary-button.component.html',\n imports: [MatButtonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PrimaryButtonComponent extends MadBasicButton {}\n","<button data-cy=\"button\" matButton=\"filled\" [type]=\"type()\" [title]=\"title()\" [disabled]=\"disabled()\">\n <ng-content></ng-content>\n</button>\n","import { Directive, ElementRef, Optional, Renderer2, booleanAttribute, effect, input } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatAnchor, MatButton } from '@angular/material/button';\n\n@Directive({\n selector: '[madButton]',\n standalone: true,\n})\nexport class MadButtonDirective {\n static readonly UPPERCASE_CLASS = 'mad-uppercase';\n static readonly OUTLINE_CLASS = 'mad-outline';\n static readonly DEFAULT_COLOR = 'primary';\n\n readonly color = input<ThemePalette>();\n readonly outline = input(true, { transform: booleanAttribute });\n readonly uppercase = input(true, { transform: booleanAttribute });\n\n private readonly matComponent: MatAnchor | MatButton;\n\n constructor(\n private renderer: Renderer2,\n private elementRef: ElementRef<HTMLButtonElement | HTMLAnchorElement>,\n @Optional() anchor: MatAnchor,\n @Optional() button: MatButton,\n ) {\n this.matComponent = anchor || button;\n if (!this.matComponent) {\n console.error('MadButtonDirective needs to be applied on a MatButton');\n }\n\n effect(() => {\n this.setUppercase(this.uppercase());\n this.setOutline(this.outline());\n this.setColor(this.color());\n });\n }\n\n setUppercase(value: boolean): void {\n this.addOrRemoveClass(value, MadButtonDirective.UPPERCASE_CLASS);\n }\n\n setOutline(value: boolean): void {\n this.addOrRemoveClass(value, MadButtonDirective.OUTLINE_CLASS);\n }\n\n addOrRemoveClass(condition: boolean, className: string): void {\n if (condition) {\n this.renderer.addClass(this.elementRef.nativeElement, className);\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, className);\n }\n }\n\n private setColor(color: ThemePalette | undefined): void {\n const resolvedColor = color || MadButtonDirective.DEFAULT_COLOR;\n\n if (this.matComponent) {\n this.matComponent.color = resolvedColor;\n }\n\n this.setColorClass(resolvedColor);\n }\n\n private setColorClass(color: ThemePalette): void {\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-primary');\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-accent');\n this.renderer.removeClass(this.elementRef.nativeElement, 'mad-warn');\n\n if (color) {\n this.renderer.addClass(this.elementRef.nativeElement, `mad-${color}`);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'mad-button-group',\n template: '<ng-content></ng-content>',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MadButtonGroupComponent {\n @HostBinding('class.mad-button-group') setClass = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from './primary-button/primary-button.component';\nimport { OutlineButtonComponent } from './outline-button/outline-button.component';\nimport { LinkButtonComponent } from './flat-button/link-button.component';\nimport { IconButtonComponent } from './icon-button/icon-button.component';\nimport { DangerButtonComponent } from './danger-button/danger-button.component';\nimport { MadButtonDirective } from './mad-button/mad-button.directive';\nimport { MadButtonGroupComponent } from './mad-button-group/mad-button-group.component';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n PrimaryButtonComponent,\n OutlineButtonComponent,\n LinkButtonComponent,\n DangerButtonComponent,\n IconButtonComponent,\n MadButtonDirective,\n MadButtonGroupComponent,\n ],\n exports: [\n PrimaryButtonComponent,\n OutlineButtonComponent,\n LinkButtonComponent,\n DangerButtonComponent,\n IconButtonComponent,\n MadButtonDirective,\n MadButtonGroupComponent,\n ],\n})\nexport class ButtonModule {}\n","import { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\nexport declare interface FormatOptions {\n decimalPlaces?: number;\n\n finalFormatting?: boolean;\n\n autofillDecimals?: boolean;\n}\n\nexport declare interface StripOptions {\n decimalPlaces?: number;\n\n removeLeadingZeros?: boolean;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class NumberFormatService {\n static readonly NEGATIVE = '-';\n static readonly NUMBERS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];\n static readonly DEFAULT_FINAL_FORMATTING = true;\n static readonly DEFAULT_DECIMAL_PLACES = 2;\n static readonly DEFAULT_AUTOFILL_DECIMALS = false;\n static readonly DEFAULT_REMOVE_LEADING_ZEROS = false;\n\n decimalSeparator: ',' | '.';\n groupingSeparator: ',' | '.';\n\n allowedKeys: string[] = [];\n\n constructor(@Inject(LOCALE_ID) locale: string) {\n this.prepareSeparators(locale);\n }\n\n /**\n * Call this if the locale is changed to update the separators.\n * @param locale the new locale\n */\n public prepareSeparators(locale: string) {\n // try to get the current formatting\n const localeDecimalSeparator = (1.1).toLocaleString(locale).charAt(1);\n this.decimalSeparator = localeDecimalSeparator === ',' ? ',' : '.';\n this.groupingSeparator = localeDecimalSeparator === ',' ? '.' : ',';\n\n this.allowedKeys = [...NumberFormatService.NUMBERS, NumberFormatService.NEGATIVE, this.decimalSeparator];\n }\n\n static valueIsSet(value: any): boolean {\n return typeof value !== 'undefined' && value !== null && (typeof value !== 'string' || value.length !== 0);\n }\n\n format(value: number, options?: Partial<FormatOptions>): string {\n return NumberFormatService.valueIsSet(value)\n ? this.formatNumber(value.toString().replace(new RegExp('[.]', 'g'), this.decimalSeparator), options)\n : '';\n }\n\n formatNumber(value: string, options?: Partial<FormatOptions>): string {\n const autofillDecimals = this.valueOrDefault(options?.autofillDecimals, NumberFormatService.DEFAULT_AUTOFILL_DECIMALS);\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const finalFormatting = this.valueOrDefault(options?.finalFormatting, NumberFormatService.DEFAULT_FINAL_FORMATTING);\n\n let result = this.strip(value, { decimalPlaces, removeLeadingZeros: finalFormatting });\n\n /* add grouping separator */\n const decimalIndex = result.indexOf(this.decimalSeparator);\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n let i = decimalIndex > -1 ? decimalIndex : result.length;\n while (i > (isNegative ? 4 : 3)) {\n i -= 3;\n result = result.substring(0, i) + this.groupingSeparator + result.substring(i, result.length);\n }\n\n if (finalFormatting) {\n if (decimalPlaces > 0 && !!result) {\n /* autofill decimal places */\n let actualDecimalIndex = result.indexOf(this.decimalSeparator);\n if (autofillDecimals) {\n if (actualDecimalIndex === -1) {\n actualDecimalIndex = result.length;\n result += this.decimalSeparator;\n }\n\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n actualDecimalIndex = result.indexOf(this.decimalSeparator);\n\n const actualDecimalPlaces = result.length - actualDecimalIndex - 1;\n for (let j = 0; j < decimalPlaces - actualDecimalPlaces; j++) {\n result += '0';\n }\n } else {\n result = this.addMissingLeadingZero(result, actualDecimalIndex);\n }\n }\n }\n return result;\n }\n\n strip(value: string, options?: StripOptions): string {\n const decimalPlaces = this.valueOrDefault(options?.decimalPlaces, NumberFormatService.DEFAULT_DECIMAL_PLACES);\n const removeLeadingZeros = this.valueOrDefault(options?.removeLeadingZeros, NumberFormatService.DEFAULT_REMOVE_LEADING_ZEROS);\n\n let result = '';\n let indexDecimalSep = -1;\n let j = -1;\n let ignoredChars = 0;\n for (const char of value) {\n j++;\n if (this.allowedKeys.includes(char)) {\n if (char === this.decimalSeparator) {\n if (decimalPlaces === 0) {\n /* dismiss content after a decimal separator, when no places allowed */\n break;\n } else if (indexDecimalSep > -1) {\n /* ignore subsequent decimal separators */\n continue;\n }\n indexDecimalSep = j;\n }\n if (char === '0' && removeLeadingZeros) {\n /* remove leading zero only if it's not the only zero in the 'value' string */\n if ((result.length === 0 && j + 1 !== value.length) || result === NumberFormatService.NEGATIVE) {\n ignoredChars++;\n continue;\n }\n }\n if (char === NumberFormatService.NEGATIVE && j > 0) {\n /* dismiss content after a negative sign not on first position */\n break;\n }\n if (indexDecimalSep > -1 && result.length + ignoredChars > indexDecimalSep + decimalPlaces) {\n /* dismiss content after maximum decimal places reached */\n break;\n }\n result += char;\n } else if (char === this.groupingSeparator) {\n if (indexDecimalSep === -1) {\n ignoredChars++;\n }\n } else {\n /* dismiss content after a invalid character */\n break;\n }\n }\n return result;\n }\n\n private addMissingLeadingZero(result: string, actualDecimalIndex: number): string {\n const isNegative = result.startsWith(NumberFormatService.NEGATIVE);\n /* autoadd a zero before decimal separator, when it's missing */\n if (actualDecimalIndex === 0) {\n result = '0' + result;\n }\n /* autoadd a zero before decimal separator, when it's missing, for negative values */\n if (actualDecimalIndex === 1 && isNegative) {\n result = result[0] + '0' + result.substring(1, result.length);\n }\n return result;\n }\n\n private valueOrDefault(value: any, defaultValue: any): any {\n return NumberFormatService.valueIsSet(value) ? value : defaultValue;\n }\n}\n","import { Directive, ElementRef, OnDestroy, output } from '@angular/core';\n\n@Directive({\n selector: '[madSizeChange]',\n})\nexport class SizeChangeDirective implements OnDestroy {\n readonly madSizeChange = output<ResizeObserverEntry>();\n\n private readonly changes = new ResizeObserver((resizes) => {\n resizes.forEach((resize) => this.madSizeChange.emit(resize));\n });\n\n constructor(private elRef: ElementRef<HTMLElement>) {\n this.changes.observe(elRef.nativeElement);\n }\n\n ngOnDestroy() {\n this.changes.disconnect();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n InjectionToken,\n input,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { NumberFormatService } from '../../numeric-field/number-format.service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TextFieldModule } from '@angular/cdk/text-field';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { SizeChangeDirective } from '../../size-change/size-change.directive';\n\nexport interface FormFieldDefaultOptions {\n textAlign?: 'left' | 'right';\n unitPosition?: 'left' | 'right';\n textOverflow?: 'ellipsis' | 'clip' | '';\n\n multiline?: boolean;\n multilineAutosize?: boolean;\n rows?: number;\n shrinkIfEmpty?: boolean;\n\n autofillDecimals?: boolean;\n decimalPlaces?: number;\n formatNumber?: boolean;\n roundDisplayValue?: boolean;\n}\n\nexport const MAD_READONLY_FORM_FIELD_DEFAULT_CONFIGURATION = new InjectionToken<FormFieldDefaultOptions>(\n 'mad-readonly-form-field-configuration',\n);\n\nconst DEFAULT_TEXT_ALIGN = 'left';\nconst DEFAULT_UNIT_POSITION = 'left';\nconst DEFAULT_TEXT_OVERFLOW = 'ellipsis';\n\nconst DEFAULT_MULTILINE = false;\nconst DEFAULT_MULTILINE_AUTOSIZE = false;\nconst DEFAULT_ROWS = 2;\nconst DEFAULT_SHRINK_IF_EMPTY = false;\n\nconst DEFAULT_AUTOFILL_DECIMALS = false;\nconst DEFAULT_DECIMAL_PLACES = 2;\nconst DEFAULT_FORMAT_NUMBER = false;\nconst DEFAULT_ROUND_DISPLAY_VALUE = false;\n\nconst THIN_SPACE = ' ';\n\n/**\n * Read-only mat-form-field representation of provided value\n *\n * @author Stefan Laesser\n */\n\n@Component({\n selector: 'mad-readonly-form-field',\n templateUrl: './readonly-form-field.component.html',\n styleUrls: ['./readonly-form-field.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n NgStyle,\n NgClass,\n MatTooltipModule,\n TextFieldModule,\n MatIconModule,\n SizeChangeDirective,\n ],\n})\nexport class ReadOnlyFormFieldComponent {\n private readonly defaultConfig = inject(MAD_READONLY_FORM_FIELD_DEFAULT_CONFIGURATION, { optional: true });\n private readonly numberFormatService = inject(NumberFormatService);\n\n readonly inputEl = viewChild<ElementRef<HTMLInputElement> | undefined>('inputEl');\n\n readonly label = input<string>();\n\n readonly value = input<any>();\n readonly useProjectedContent = input(false);\n readonly textAlign = input<'right' | 'left'>(this.defaultConfig?.textAlign ?? DEFAULT_TEXT_ALIGN);\n readonly textOverflow = input<'ellipsis' | 'clip' | ''>(this.defaultConfig?.textOverflow ?? DEFAULT_TEXT_OVERFLOW);\n readonly errorMessage = input<string | null>(null);\n readonly id = input<string>();\n\n readonly unit = input<string | null>(null);\n readonly unitPosition = input<'right' | 'left'>(this.defaultConfig?.unitPosition ?? DEFAULT_UNIT_POSITION);\n\n readonly formatNumber = input(this.defaultConfig?.formatNumber ?? DEFAULT_FORMAT_NUMBER);\n readonly decimalPlaces = input(this.defaultConfig?.decimalPlaces ?? DEFAULT_DECIMAL_PLACES);\n readonly roundDisplayValue = input(this.defaultConfig?.roundDisplayValue ?? DEFAULT_ROUND_DISPLAY_VALUE);\n readonly autofillDecimals = input(this.defaultConfig?.autofillDecimals ?? DEFAULT_AUTOFILL_DECIMALS);\n\n readonly multiline = input(this.defaultConfig?.multiline ?? DEFAULT_MULTILINE);\n /**\n * if cdkTextareaAutosize is active for textareas\n */\n readonly multilineAutoSize = input(this.defaultConfig?.multilineAutosize ?? DEFAULT_MULTILINE_AUTOSIZE);\n /*\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n readonly shrinkIfEmpty = input(this.defaultConfig?.shrinkIfEmpty ?? DEFAULT_SHRINK_IF_EMPTY);\n readonly rows = input<number>(this.defaultConfig?.rows ?? DEFAULT_ROWS);\n\n /**\n * suffix iocon\n */\n readonly suffix = input<string>();\n /**\n * prefix iocon\n */\n readonly prefix = input<string>();\n\n readonly suffixClickedEmitter = output();\n readonly prefixClickedEmitter = output();\n\n protected readonly errorMatcher = computed(() => ({\n isErrorState: () => !!this.errorMessage(),\n }));\n\n private readonly displayValue = computed(() => {\n const value = this.value();\n if (!NumberFormatService.valueIsSet(value)) return '-';\n else if (this.formatNumber() && typeof value === 'number')\n return this.numberFormatService.format(value, {\n decimalPlaces: this.decimalPlaces(),\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals(),\n });\n else return value;\n });\n\n protected readonly displayValueWithUnit = computed(() => {\n // If the unit should be positioned to the right, and the text is left-aligned it needs to \"follow\" the text, hence we add it to it.\n const isUnitTrailing = this.unit() && this.unitPosition() === 'right' && this.textAlign() === 'left';\n if (this.multiline() || !isUnitTrailing) return this.displayValue();\n // The THIN_SPACE (U+2009) simulates the padding used previously the most.\n return `${this.displayValue()}${THIN_SPACE}${this.unit()}`;\n });\n\n protected readonly actualAmountOfRows = computed(() => {\n if (!NumberFormatService.valueIsSet(this.value()) && this.shrinkIfEmpty()) return 1;\n else return this.rows();\n });\n\n protected readonly sizeChanges = signal<ResizeObserverEntry | undefined>(undefined, {\n equal: (a, b) => a?.contentRect.width === b?.contentRect.width,\n });\n\n protected toolTipForInputEnabled = computed(() => {\n const input = this.inputEl()?.nativeElement;\n // This is needed to re-compute this signal when the size is updated\n const sizeChanges = this.sizeChanges();\n if (sizeChanges && input && this.textOverflow() === 'ellipsis') {\n return input.offsetWidth < input.scrollWidth;\n }\n return false;\n });\n\n protected toolTipText = computed(() => {\n if (!this.unit()) {\n return this.value();\n }\n return this.unitPosition() === 'left' ? `${this.unit()} ${this.value()}` : `${this.value()} ${this.unit()}`;\n });\n\n suffixClicked() {\n this.suffixClickedEmitter.emit();\n }\n\n prefixClicked() {\n this.prefixClickedEmitter.emit();\n }\n}\n","<mat-form-field class=\"form-group mad-read-only\">\n <mat-label>{{ label() }}</mat-label>\n @if (!multiline()) {\n <input\n #inputEl\n (madSizeChange)=\"sizeChanges.set($event)\"\n [style.text-overflow]=\"textOverflow()\"\n [disabled]=\"!useProjectedContent()\"\n [errorStateMatcher]=\"errorMatcher()\"\n [id]=\"id()\"\n [matTooltipDisabled]=\"!toolTipForInputEnabled()\"\n [matTooltip]=\"toolTipText()\"\n [ngClass]=\"'text-' + textAlign() + ' content'\"\n [ngModel]=\"displayValueWithUnit()\"\n [ngStyle]=\"{ display: useProjectedContent() ? 'none' : 'block' }\"\n matInput\n matTooltipClass=\"custom-tooltip\"\n matTooltipPosition=\"right\"\n readonly\n />\n } @else {\n <textarea\n [ngStyle]=\"{ display: useProjectedContent() ? 'none' : 'block' }\"\n [rows]=\"actualAmountOfRows()\"\n [ngModel]=\"displayValueWithUnit()\"\n class=\"multiline content\"\n [errorStateMatcher]=\"errorMatcher()\"\n [id]=\"id()\"\n readonly\n [disabled]=\"!useProjectedContent()\"\n matInput\n [cdkTextareaAutosize]=\"multilineAutoSize()\"\n >\n </textarea>\n }\n\n @if (useProjectedContent()) {\n <ng-content />\n }\n <mat-error>{{ errorMessage() }}</mat-error>\n @if (suffix()) {\n <mat-icon data-cy=\"suffix-icon\" (click)=\"suffixClicked()\" class=\"pointer mat-primary\" matSuffix>{{ suffix() }} </mat-icon>\n }\n @if (prefix()) {\n <mat-icon data-cy=\"prefix-icon\" (click)=\"prefixClicked()\" class=\"pointer mat-primary\" matPrefix>{{ prefix() }} </mat-icon>\n }\n @if (unit() && unitPosition() === 'left') {\n <span [style.padding-right]=\"'5px'\" matTextPrefix>{{ unit() }}</span>\n } @else if (unit() && textAlign() === 'right') {\n <span [style.padding-left]=\"'25px'\" matTextSuffix>{{ unit() }}</span>\n }\n</mat-form-field>\n","import {\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { ReadOnlyFormFieldComponent } from '../readonly-form-field/readonly-form-field.component';\n\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * Wraps a mat-form-field to replace it by a readOnly representation if necessary\n *\n * @author Stefan Laesser\n */\n@Component({\n selector: 'mad-readonly-form-field-wrapper',\n templateUrl: './readonly-form-field-wrapper.component.html',\n styleUrls: ['./readonly-form-field-wrapper.component.css'],\n viewProviders: [{ provide: ControlContainer, useExisting: FormGroupDirective }],\n imports: [ReadOnlyFormFieldComponent, ObserversModule],\n})\nexport class ReadOnlyFormFieldWrapperComponent implements OnInit, AfterViewInit, OnChanges, AfterViewChecked {\n @ViewChild('contentWrapper', { static: false })\n originalContent: ElementRef;\n @ViewChild('readOnlyContentWrapper', { static: false })\n readOnlyContentWrapper: ElementRef;\n\n /**\n * If set to \"false\", the contained mat-form-field is rendered in all it's glory.\n * If set to \"true\", a readonly representation of the value is shown using the mat-form-fields label.\n */\n @Input() readonly = true;\n\n /**\n * This input *MUST MATCH* the mat-form-field value to ensure correct data\n * binding and formatting of readOnly representation!\n */\n @Input('value') value?: any;\n\n @Input('textAlign') textAlign: 'right' | 'left' = 'left';\n @Input('formatNumber') formatNumber = false;\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'left';\n @Input('errorMessage') errorMessage: string | null = null;\n @Input() id: string;\n /**\n * If set to \"false\", a readonly input will be rendered.\n * If set to \"true\", a readonly textarea will be rendered instead.\n */\n @Input() multiline = false;\n\n /**\n * Defines the rows for the readonly textarea.\n */\n @Input() rows: number;\n\n /**\n * If shrinkIfEmpty is set to \"false\", nothing changes\n * If set to \"true\" and multiline is also \"true\", the textarea will\n * shrink to one row, if value is empty/null/undefined.\n * Otherwise, the defined rows-value will be used\n */\n @Input() shrinkIfEmpty = false;\n @Input() hideIconInReadOnlyMode = false;\n /**\n * suffix iocon\n */\n @Input() suffix: string;\n /**\n * prefix iocon\n */\n @Input() prefix: string;\n /**\n * if cdkTextareaAutosize is active for textareas\n */\n @Input() multilineAutoSize = false;\n @Output() suffixClickedEmitter = new EventEmitter();\n @Output() prefixClickedEmitter = new EventEmitter();\n\n /**\n * Automatically taken from the contained <mat-label>\n */\n label: string;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private rootFormGroup: FormGroupDirective,\n ) {}\n\n ngOnInit(): void {\n this.doRendering();\n }\n\n ngAfterViewInit(): void {\n this.doRendering();\n this.extractValue();\n }\n\n ngAfterViewChecked(): void {}\n\n ngOnChanges(_: SimpleChanges): void {\n this.doRendering();\n }\n\n getLabel(): string {\n if (!this.label) {\n this.extractLabel();\n }\n return this.label;\n }\n\n suffixClicked() {\n this.suffixClickedEmitter.emit(null);\n }\n\n prefixClicked() {\n this.prefixClickedEmitter.emit(null);\n }\n\n private doRendering(): void {\n if (!this.originalContent) {\n return;\n }\n if (!this.readonly) {\n this.correctWidth();\n return;\n }\n\n setTimeout(() => {\n this.extractLabel();\n this.extractValue();\n });\n\n this.changeDetector.detectChanges();\n }\n\n private extractLabel(): void {\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return null;\n }\n const labelElement = this.originalContent.nativeElement.querySelector('mat-label');\n this.label = labelElement ? labelElement.innerHTML : 'mat-label is missing!';\n }\n\n private extractValue(): void {\n if (this.value) {\n return;\n }\n const form = this.rootFormGroup.form;\n if (!this.originalContent || !this.originalContent.nativeElement) {\n return;\n }\n const input = this.originalContent?.nativeElement?.querySelector('input');\n if (!input) {\n return;\n }\n const formControlName = input.getAttribute('formControlName');\n if (!formControlName) {\n return;\n }\n if (form && form.get(formControlName)) {\n this.value = form.get(formControlName).getRawValue();\n }\n }\n\n private correctWidth(): void {\n const formField = this.originalContent.nativeElement.querySelector('mat-form-field');\n if (formField) {\n formField.setAttribute('style', 'width:100%');\n }\n }\n}\n","<div #contentWrapper [hidden]=\"readonly\">\n <ng-content></ng-content>\n</div>\n\n<div #readOnlyContentWrapper>\n @if (!!readonly) {\n <mad-readonly-form-field\n [label]=\"getLabel()\"\n [value]=\"value\"\n [textAlign]=\"textAlign\"\n [formatNumber]=\"formatNumber\"\n [decimalPlaces]=\"decimalPlaces\"\n [roundDisplayValue]=\"roundValue\"\n [autofillDecimals]=\"autofillDecimals\"\n [unit]=\"unit\"\n [unitPosition]=\"unitPosition\"\n [errorMessage]=\"errorMessage\"\n [multiline]=\"multiline\"\n [rows]=\"rows\"\n [shrinkIfEmpty]=\"shrinkIfEmpty\"\n [id]=\"id\"\n [suffix]=\"suffix\"\n [prefix]=\"prefix\"\n [multilineAutoSize]=\"multilineAutoSize\"\n (suffixClickedEmitter)=\"suffixClicked()\"\n (prefixClickedEmitter)=\"prefixClicked()\"\n >\n </mad-readonly-form-field>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ReadOnlyFormFieldWrapperComponent } from './readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nimport { ReadOnlyFormFieldComponent } from './readonly-form-field/readonly-form-field.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormGroupDirective, FormsModule } from '@angular/forms';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatFormFieldModule,\n MatInputModule,\n FormsModule,\n MatTooltipModule,\n MatIconModule,\n ReadOnlyFormFieldComponent,\n ReadOnlyFormFieldWrapperComponent,\n ],\n exports: [ReadOnlyFormFieldComponent, ReadOnlyFormFieldWrapperComponent],\n providers: [FormGroupDirective],\n})\nexport class ReadOnlyFormFieldModule {}\n","/*\n * Copyright (c) 2018-2020 Porsche Informatik. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NumberFormatService } from './number-format.service';\n\nconst BACK_KEYCODE = 8;\nconst SPACE_KEYCODE = 32;\nconst DEL_KEYCODE = 46;\nconst CONTROL_KEYCODES_UPPER_BORDER = 46;\nconst OTHER_CONTROL_KEYS = new Set([224, 91, 93]);\n\n@Directive({\n selector: '[madNumericField]',\n host: {\n '[class.text-right]': 'textAlign === \"right\"',\n '(change)': 'onChange(getValueForFormControl())',\n '(input)': 'onChange(getValueForFormControl())',\n '(blur)': 'onTouched()',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumericFieldDirective),\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class NumericFieldDirective implements OnInit, OnDestroy, AfterViewChecked, ControlValueAccessor {\n @Input('textAlign') textAlign: 'right' | 'left' = 'right';\n @Input('decimalPlaces') decimalPlaces = 2;\n @Input('roundDisplayValue') roundValue = false;\n @Input('autofillDecimals') autofillDecimals = false;\n @Input('unit') unit: string | null = null;\n @Input('unitPosition') unitPosition: 'right' | 'left' = 'right';\n @Output('numericValueChange') numericValueChanged = new EventEmitter<number>();\n\n private displayValue = '';\n private originalValue = NaN;\n private _numericValue: number;\n private inputChangeListener: () => void;\n private keyupListener: () => void;\n private keydownListener: () => void;\n\n @Input('numericValue')\n set numericValue(value: number) {\n if (this._numericValue !== value && !(isNaN(this._numericValue) && (isNaN(value) || value === null))) {\n this.originalValue = value;\n // Don't roundOrTruncate if value was set to empty otherwise input value will be set to 0 instead of empty\n // which happens when an input is being reset\n this._numericValue = value === null || value === undefined ? value : this.roundOrTruncate(value); // eslint-disable-line\n this.handleInputChanged();\n }\n }\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n constructor(\n private renderer: Renderer2,\n private inputEl: ElementRef,\n private numberFormatService: NumberFormatService,\n ) {}\n\n /* Control Values Accessor Stuff below */\n // eslint-disable-next-line\n onChange: any = () => {};\n // eslint-disable-next-line\n onTouched: any = () => {};\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(): void {\n // Dont need to implement since its just a directive\n }\n\n writeValue(value: number): void {\n this.numericValue = value;\n }\n\n ngOnInit(): void {\n /* needs to be parsed as number explicitly as it comes as string from user input */\n this.decimalPlaces = parseInt(this.decimalPlaces.toString(), 10);\n\n this.inputChangeListener = this.renderer.listen(this.inputEl.nativeElement, 'blur', (event) => {\n this.formatInput(event.target, true);\n });\n\n this.keyupListener = this.renderer.listen(this.inputEl.nativeElement, 'keyup', (event) => {\n if (event.keyCode === BACK_KEYCODE || (event.keyCode >= CONTROL_KEYCODES_UPPER_BORDER && !OTHER_CONTROL_KEYS.has(event.keyCode))) {\n this.formatInput(event.target, false);\n }\n });\n\n this.keydownListener = this.renderer.listen(this.inputEl.nativeElement, 'keydown', (event) => {\n const value: string = event.target.value;\n if (\n this.numberFormatService.allowedKeys.includes(event.key) ||\n (event.keyCode <= CONTROL_KEYCODES_UPPER_BORDER && event.keyCode > 0 && event.keyCode !== SPACE_KEYCODE) ||\n event.metaKey ||\n event.ctrlKey ||\n event.altKey\n ) {\n /* allow negative sign only as first character and none exists outside of text selection */\n const indexNegativeSign = value.indexOf(NumberFormatService.NEGATIVE);\n if (\n event.key === NumberFormatService.NEGATIVE &&\n (event.target.selectionStart > 0 || indexNegativeSign > -1) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexNegativeSign >= event.target.selectionStart && indexNegativeSign <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* no duplicate decimal separators */\n const indexDecimalSep = value.indexOf(this.numberFormatService.decimalSeparator);\n if (\n event.key === this.numberFormatService.decimalSeparator &&\n (indexDecimalSep > -1 || this.decimalPlaces === 0) &&\n (event.target.selectionStart === event.target.selectionEnd ||\n !(indexDecimalSep >= event.target.selectionStart && indexDecimalSep <= event.target.selectionEnd))\n ) {\n return false;\n }\n\n /* prevent too many decimal places */\n if (\n NumberFormatService.NUMBERS.includes(event.key) &&\n indexDecimalSep > -1 &&\n indexDecimalSep < event.target.selectionStart &&\n event.target.selectionStart === event.target.selectionEnd &&\n value.length > indexDecimalSep + this.decimalPlaces\n ) {\n return false;\n }\n\n /* when deleting thousand separator, remove the digit before or after it */\n const cursorStart = event.target.selectionStart;\n\n if (cursorStart === event.target.selectionEnd) {\n if (event.keyCode === BACK_KEYCODE && value.substr(cursorStart - 1, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart - 2) + value.substring(cursorStart - 1, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart - 1;\n return false;\n } else if (event.keyCode === DEL_KEYCODE && value.substr(cursorStart, 1) === this.numberFormatService.groupingSeparator) {\n event.target.value = value.substring(0, cursorStart + 1) + value.substring(cursorStart + 2, value.length);\n event.target.selectionStart = event.target.selectionEnd = cursorStart + 1;\n return false;\n }\n }\n this.originalValue = NaN;\n } else {\n return false;\n }\n return true;\n });\n }\n\n ngOnDestroy(): void {\n this.detachListener();\n }\n\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n }\n\n handleInputChanged(): void {\n // Call in set timeout to avoid Expression has changed after it has been checked error.\n // Sometimes the value changes because we cut off decimal places\n setTimeout(() => {\n this.updateInput(\n this.numberFormatService.format(this._numericValue, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals,\n }),\n );\n }, 1);\n }\n\n formatInput(element: HTMLInputElement, finalFormatting: boolean): void {\n const cursorPos = element.selectionStart;\n const length = element.value.length;\n const setCursor = this.displayValue !== element.value;\n const textFormatted = this.numberFormatService.formatNumber(element.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting,\n autofillDecimals: this.autofillDecimals,\n });\n\n // special handling to move unit symbol along with display value\n if (this.textAlign === 'left' && this.unitPosition === 'right') {\n const inputStyles = window.getComputedStyle(this.inputEl.nativeElement.parentElement, null);\n this.unitSpan.style.position = 'absolute';\n this.unitSpan.style.marginTop = inputStyles.getPropertyValue('border-top-width');\n this.unitSpan.style.paddingTop = inputStyles.getPropertyValue('padding-top');\n this.unitSpan.style.paddingBottom = inputStyles.getPropertyValue('padding-bottom');\n\n if (!this.textSpan) {\n this.textSpan = document.createElement('span');\n document.body.appendChild(this.textSpan);\n this.textSpan.style.font = inputStyles.getPropertyValue('font');\n this.textSpan.style.fontSize = inputStyles.getPropertyValue('font-size');\n this.textSpan.style.height = 'auto';\n this.textSpan.style.width = 'auto';\n this.textSpan.style.position = 'absolute';\n this.textSpan.style.top = '0';\n this.textSpan.style.whiteSpace = 'no-wrap';\n this.textSpan.style.visibility = 'hidden';\n }\n this.textSpan.innerHTML = textFormatted;\n const width = Math.min(this.inputEl.nativeElement.clientWidth - this.unitSpan.clientWidth, Math.ceil(this.textSpan.clientWidth));\n this.unitSpan.style.left = width + 'px';\n }\n\n this.updateInput(textFormatted);\n if (setCursor) {\n element.selectionStart = element.selectionEnd = Math.max(cursorPos + element.value.length - length, 0);\n }\n }\n\n updateInput(value: string): void {\n this.displayValue = value;\n this.inputEl.nativeElement.value = value;\n this._numericValue = parseFloat(\n this.numberFormatService.strip(value, { decimalPlaces: this.decimalPlaces }).replace(this.numberFormatService.decimalSeparator, '.'),\n );\n if (this._numericValue !== this.roundOrTruncate(this.originalValue)) {\n this.originalValue = this._numericValue;\n this.numericValueChanged.emit(this._numericValue);\n }\n }\n\n getValueForFormControl(): number | undefined {\n this.formatInput(this.inputEl.nativeElement, false);\n if (isNaN(this._numericValue)) {\n // Return undefined instead of NaN to support the default required validator.\n return undefined; // eslint-disable-line\n }\n return this._numericValue;\n }\n\n private injectUnitSymbol(): void {\n // Need to inject the unit symbol when the input element width is set to its actual value,\n // otherwise the icon wont show in the correct position\n if (!!this.unit && !this.unitSpan && this.inputEl.nativeElement.offsetWidth !== 0) {\n // Get the input wrapper and apply necessary styles\n const inputWrapper = this.inputEl.nativeElement.parentNode.parentNode;\n\n // Create the span with unit symbol and apply necessary styles\n this.unitSpan = this.renderer.createElement('span');\n\n if (this.unitPosition === 'left') {\n this.renderer.setAttribute(this.unitSpan, 'matPrefix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-right', '5px');\n this.renderer.insertBefore(inputWrapper, this.unitSpan, inputWrapper.children[0]);\n } else {\n this.renderer.setAttribute(this.unitSpan, 'matSuffix', '');\n this.renderer.setStyle(this.unitSpan, 'padding-left', '5px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // do not display unit symbol if the unit should move along display value\n if (!!this.unitSpan && this.textAlign === 'left' && this.unitPosition === 'right') {\n if (NumberFormatService.valueIsSet(this.displayValue)) {\n this.unitSpan.style.display = 'unset';\n } else {\n this.unitSpan.style.display = 'none';\n }\n }\n // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n\n private detachListener(): void {\n if (this.inputChangeListener) {\n this.inputChangeListener();\n delete this.inputChangeListener;\n }\n if (this.keydownListener) {\n this.keydownListener();\n delete this.keydownListener;\n }\n if (this.keyupListener) {\n this.keyupListener();\n delete this.keyupListener;\n }\n }\n\n private roundOrTruncate(value: number): number {\n if (this.roundValue) {\n return Math.round(value * Math.pow(10, this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n\n const method = value < 0 ? 'ceil' : 'floor';\n return Math[method](+(value * Math.pow(10, this.decimalPlaces)).toFixed(this.decimalPlaces)) / Math.pow(10, this.decimalPlaces);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { NumericFieldDirective } from './numeric-field.directive';\n\n@NgModule({\n imports: [NumericFieldDirective],\n exports: [NumericFieldDirective],\n})\nexport class NumericFieldModule {\n static forRoot(): ModuleWithProviders<NumericFieldModule> {\n return {\n ngModule: NumericFieldModule,\n };\n }\n}\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\n@Directive({\n selector: '[madThrottleClick]',\n standalone: true,\n})\nexport class ThrottleClickDirective implements OnInit, OnDestroy {\n @Input() throttleTime = 300;\n @Output() throttleClick = new EventEmitter();\n private clicks = new Subject();\n private subscription: Subscription;\n\n @HostListener('click', ['$event'])\n clickEvent(event: any): void {\n event.preventDefault();\n event.stopPropagation();\n this.clicks.next(event);\n }\n\n ngOnInit(): void {\n this.subscription = this.clicks.pipe(throttleTime(this.throttleTime)).subscribe((e) => this.throttleClick.emit(e));\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { Component, computed, input, model, output } from '@angular/core';\nimport { OutlineButtonComponent } from '../button/outline-button/outline-button.component';\nimport { ThrottleClickDirective } from '../throttle-click/throttle-click.directive';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\n\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n styleUrls: ['./card.component.scss'],\n imports: [MatCardModule, IconButtonComponent, MatIconModule, PrimaryButtonComponent, ThrottleClickDirective, OutlineButtonComponent],\n})\nexport class CardComponent {\n cancelDisabled = input(false);\n cancelText = input<string>('NOT SET');\n\n readonly = input<boolean>(true);\n editText = input<string>('NOT SET');\n\n expandable = input<boolean>(true);\n expanded = model<boolean>(true);\n\n saveDisabled = input<boolean>(false);\n saveText = input<string>('NOT SET');\n\n title = input<string | undefined>(undefined);\n editMode = input<boolean>(false);\n\n additionalActionIcon = input<string | undefined>(undefined);\n additionalActionText = input<string>('');\n\n edit = output<void>();\n cancel = output<void>();\n save = output<void>();\n additionalAction = output<void>();\n\n protected showHeader = computed(() => Boolean(this.title()) || this.expandable());\n protected showCollapseButton = computed(() => this.expandable() && !this.editMode());\n protected showAdditionalActionButton = computed(() => Boolean(this.additionalActionIcon()));\n protected showEditButton = computed(() => !this.readonly() && !this.editMode());\n protected showActions = computed(() => !this.readonly() && this.editMode());\n protected collapseIconClasses = computed(() => ({\n 'collapse-icon': true,\n 'collapse-icon--collapsed': !this.expanded(),\n }));\n\n onEdit(): void {\n this.expanded.set(true);\n this.edit.emit();\n }\n\n toggleCollapse(): void {\n this.expanded.update((expanded) => !expanded);\n }\n}\n","<mat-card>\n @if (showHeader()) {\n <mat-card-header class=\"card-header\">\n <mat-card-title-group class=\"card-title-group\">\n @if (title(); as cardTitle) {\n <mat-card-title data-cy=\"card-title\" class=\"card-title\">\n {{ cardTitle }}\n </mat-card-title>\n }\n <div data-cy=\"title-buttons-block\" class=\"header-actions\">\n @if (showCollapseButton()) {\n <mad-icon-button data-testid=\"collapse-btn\" (click)=\"toggleCollapse()\">\n <mat-icon [class]=\"collapseIconClasses()\"> keyboard_arrow_up </mat-icon>\n </mad-icon-button>\n }\n @if (showAdditionalActionButton()) {\n <mad-icon-button data-testid=\"additional-btn\" (click)=\"additionalAction.emit()\" [title]=\"additionalActionText()\" type=\"button\">\n <mat-icon>{{ additionalActionIcon() }}</mat-icon>\n </mad-icon-button>\n }\n @if (showEditButton()) {\n <mad-icon-button data-testid=\"edit-btn\" [title]=\"editText()\" (click)=\"onEdit()\" type=\"button\">\n <mat-icon>create</mat-icon>\n </mad-icon-button>\n }\n </div>\n </mat-card-title-group>\n </mat-card-header>\n }\n\n @if (expanded()) {\n <mat-card-content animate.enter=\"card-content-enter\" animate.leave=\"card-content-leave\">\n <ng-content />\n </mat-card-content>\n }\n\n @if (showActions()) {\n <mat-card-actions class=\"card-actions\">\n <mad-primary-button\n data-testid=\"save-btn\"\n [title]=\"saveText()\"\n [disabled]=\"saveDisabled()\"\n (throttleClick)=\"save.emit()\"\n madThrottleClick\n >\n {{ saveText() }}\n </mad-primary-button>\n <mad-outline-button data-testid=\"cancel-btn\" [title]=\"cancelText()\" [disabled]=\"cancelDisabled()\" (click)=\"cancel.emit()\">\n {{ cancelText() }}\n </mad-outline-button>\n </mat-card-actions>\n }\n</mat-card>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThrottleClickDirective } from './throttle-click.directive';\n\n@NgModule({\n imports: [CommonModule, ThrottleClickDirective],\n exports: [ThrottleClickDirective],\n})\nexport class ThrottleClickModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CardComponent } from './card.component';\nimport { ButtonModule } from '../button/button.module';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ThrottleClickModule } from '../throttle-click/throttle-click.module';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatIconModule, ButtonModule, MatButtonModule, ThrottleClickModule, CardComponent],\n exports: [CardComponent],\n})\nexport class CardModule {}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n TemplateRef,\n ViewChildren,\n} from '@angular/core';\nimport { AbstractControl, FormArray, FormBuilder } from '@angular/forms';\n\nexport interface QuickListItem {\n id: string;\n}\n\n@Component({\n selector: 'mad-base-quick-list',\n template: '',\n styleUrls: [],\n standalone: true,\n})\nexport class BaseQuickListComponent<T> implements OnInit, AfterViewInit {\n @Input() allItems = [] as T[];\n @Input() addLabel = 'NOT SET';\n @Input() addPossible = true;\n @Input() removePossible = true;\n @Input() blankItem = {} as any;\n @Input() readonly: boolean;\n @Input() maxItems: number;\n @Input() minItems: number;\n @Input() formArray: FormArray;\n\n @Output() added = new EventEmitter<T>();\n @Output() removed = new EventEmitter<T>();\n @ContentChild(TemplateRef) itemTemplate: TemplateRef<any>;\n @ViewChildren('row') itemRows: QueryList<ElementRef>;\n\n rowCountFocus: number;\n addEventFunction: Function;\n\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n this.addEventFunction = this.addItem.bind(this);\n if (this.minItems) {\n for (let n = this.allItems.length; n < this.minItems; n++) {\n this.interalAddItem();\n }\n }\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => this.setFocusOnAdd(), 1);\n }\n\n addItem(): void {\n const newItem = this.interalAddItem();\n if (!!newItem) {\n this.added.emit(newItem);\n }\n }\n\n addReactiveItem() {\n if (this.isAddReactiveAllowed()) {\n this.added.emit(null);\n }\n }\n\n removeItem(item: T): void {\n if (this.isDeleteAllowed()) {\n this.allItems.splice(this.allItems.indexOf(item), 1);\n this.removed.emit(item);\n }\n }\n\n removeReactiveItem(item: AbstractControl<any>) {\n if (this.isDeleteReactiveAllowed()) {\n const index = this.formArray.controls.indexOf(item);\n if (index >= 0) {\n this.formArray.controls.splice(index, 1);\n this.formArray.updateValueAndValidity();\n this.removed.emit(null);\n }\n }\n }\n\n setFocusOnAdd(): void {\n this.rowCountFocus = this.itemRows.length;\n this.itemRows.changes.subscribe((els: QueryList<ElementRef>) => {\n if (els.length > this.rowCountFocus && !!els.last) {\n const firstFocusable = els.last.nativeElement.querySelector(\"button, a, input, select, textarea, [tabindex]:not([tabindex='-1'])\");\n if (firstFocusable) {\n firstFocusable.focus();\n }\n }\n this.rowCountFocus = els.length;\n });\n }\n\n isAddAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.allItems?.length < this.maxItems);\n }\n\n isAddReactiveAllowed(): boolean {\n return this.addPossible && (!this.maxItems || this.formArray?.controls.length < this.maxItems);\n }\n\n isDeleteAllowed(): boolean {\n return this.removePossible && (!this.minItems || this.allItems?.length > this.minItems);\n }\n\n isDeleteReactiveAllowed(): boolean {\n return this.removePossible && (!this.minItems || this.formArray?.controls.length > this.minItems);\n }\n\n private interalAddItem(): T {\n if (this.isAddAllowed()) {\n const newItem = { ...this.blankItem };\n // creates ids in the form of \"n5kdz1pljl8\"\n newItem.id = Math.random().toString(36).substring(2);\n this.allItems.push(newItem);\n this.changeDetectorRef.detectChanges();\n return newItem;\n }\n return null;\n }\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { LinkButtonComponent } from '../../button/flat-button/link-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, LinkButtonComponent],\n})\nexport class QuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of allItems; track item; let isLast = $last) {\n @if (itemTemplate) {\n <div class=\"flex-container\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n @if (!readonly && isLast) {\n <mad-icon-button data-cy=\"add-item-button\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly && !this.allItems.length) {\n <mad-link-button data-cy=\"add-first-item-button\" (click)=\"addItem()\" [disabled]=\"!isAddAllowed()\">\n {{ addLabel }}\n </mad-link-button>\n}\n","// Based on https://github.com/porscheinformatik/clarity-addons/blob/master/src/clr-addons/generic-quick-list/generic-quick-list.ts\n\nimport { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from './base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { OutlineButtonComponent } from '../button/outline-button/outline-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, OutlineButtonComponent],\n})\nexport class QuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of allItems; track item) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly) {\n <mad-outline-button data-cy=\"add-item-button\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n </mad-outline-button>\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { FormBuilder } from '@angular/forms';\nimport { OutlineButtonComponent } from '../../button/outline-button/outline-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-reactive-form-quick-list',\n templateUrl: './reactive-form-quick-list.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, OutlineButtonComponent],\n})\nexport class ReactiveFormQuickListComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of formArray.controls; track item) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteReactiveAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n\n@if (!readonly) {\n <mad-outline-button data-cy=\"add-item-button\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n </mad-outline-button>\n}\n","import { ChangeDetectorRef, Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { BaseQuickListComponent, QuickListItem } from '../base-quick-list.component';\nimport { LinkButtonComponent } from '../../button/flat-button/link-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-reactive-form-quick-list-compact',\n templateUrl: './reactive-form-quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgTemplateOutlet, IconButtonComponent, MatIconModule, LinkButtonComponent],\n})\nexport class ReactiveFormQuickListCompactComponent extends BaseQuickListComponent<QuickListItem> {\n constructor(\n public changeDetectorRef: ChangeDetectorRef,\n public formBuilder: FormBuilder,\n ) {\n super(changeDetectorRef, formBuilder);\n }\n}\n","<h3>\n <ng-content select=\"label\"></ng-content>\n</h3>\n@for (item of formArray.controls; track item; let isLast = $last) {\n @if (itemTemplate) {\n <div #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n @if (!readonly && isDeleteReactiveAllowed()) {\n <mad-icon-button data-cy=\"delete-item-button\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n }\n @if (!readonly && isLast) {\n <mad-icon-button data-cy=\"add-item-button\" [disabled]=\"!isAddReactiveAllowed()\" (click)=\"addReactiveItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n }\n </div>\n }\n}\n@if (!readonly && !this.formArray?.controls.length) {\n <mad-link-button data-cy=\"add-first-item-button\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n </mad-link-button>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { QuickListComponent } from './quick-list.component';\nimport { ButtonModule } from '../button/button.module';\nimport { BaseQuickListComponent } from './base-quick-list.component';\nimport { QuickListCompactComponent } from './quick-list-compact/quick-list-compact.component';\nimport { ReactiveFormQuickListComponent } from './reactive-form-quick-list/reactive-form-quick-list.component';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ReactiveFormQuickListCompactComponent } from './reactive-form-quick-list-compact/reactive-form-quick-list-compact.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n ButtonModule,\n ReactiveFormsModule,\n QuickListComponent,\n BaseQuickListComponent,\n QuickListCompactComponent,\n ReactiveFormQuickListComponent,\n ReactiveFormQuickListCompactComponent,\n ],\n exports: [\n QuickListComponent,\n QuickListCompactComponent,\n BaseQuickListComponent,\n ReactiveFormQuickListComponent,\n ReactiveFormQuickListCompactComponent,\n ],\n})\nexport class QuickListModule {}\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, Sort, MatSortModule } from '@angular/material/sort';\nimport { ColumnHeader } from './column-header';\nimport { TableAction } from './table-action';\nimport { MatIconModule } from '@angular/material/icon';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\n\n/**\n * @deprecated Use `data-table` instead.\n */\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [\n PrimaryButtonComponent,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n MatTableModule,\n MatSortModule,\n IconButtonComponent,\n MatIconModule,\n MatPaginatorModule,\n ],\n})\nexport class TableComponent implements OnInit, AfterViewInit {\n @Input() columns: ColumnHeader[] = [];\n @Input() filterLabel = 'NOT SET';\n @Input() filterPlaceholder = 'NOT SET';\n @Input() noDataText: string;\n @Input() pageSizeOptions = [5, 10, 15];\n @Input() defaultPageSize = this.pageSizeOptions?.[0] || 10;\n @Input() rowActions: TableAction[] = [];\n @Input() tableActions: TableAction[] = [];\n\n @Output() tableAction = new EventEmitter<TableAction>();\n @Output() rowAction = new EventEmitter<TableAction>();\n @Output() sortEvent = new EventEmitter<Sort>();\n\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\n @ViewChild(MatSort, { static: true }) sort: MatSort;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n dataSource: MatTableDataSource<any[]>;\n columnNames: string[];\n isRowClickable: boolean;\n defaultAction: TableAction;\n isFilterEnabled = false;\n isPaginationEnabled = false;\n\n @Input() set displayedData(data: any[]) {\n if (!this.dataSource) {\n this.dataSource = new MatTableDataSource<any>(data);\n } else {\n this.dataSource.data = data;\n }\n }\n\n @Input() set paginationEnabled(isPaginationEnabled: boolean) {\n this.isPaginationEnabled = isPaginationEnabled;\n // eslint-disable-next-line\n const pageSize = this.isPaginationEnabled ? this.defaultPageSize : Number.MAX_VALUE;\n if (this.dataSource.paginator) {\n this.dataSource.paginator.pageSize = pageSize;\n }\n }\n\n @Input()\n set filterEnabled(isFilterEnabled: boolean) {\n this.isFilterEnabled = isFilterEnabled;\n this.setFilterValue(undefined);\n }\n\n ngOnInit(): void {\n this.columnNames = this.columns.map((column) => column.label);\n this.isRowClickable = this.rowActions.length > 0;\n if (this.isRowClickable) {\n this.columnNames.unshift(this.ACTION_COLUMN_NAME);\n this.defaultAction = this.rowActions[0];\n }\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n // set custom filter predicate to enable search for multiple search strings:\n // e.g. \"one two three\"\n this.dataSource.filterPredicate = (data: any, filter: string): any =>\n !filter || filter.split(/\\s+/).every((term) => !!Object.keys(data).find((key) => data[key].includes(term)));\n }\n\n onFilter(value: string): void {\n this.setFilterValue(value);\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (!!action && !this.isClickOnRowMenuIcon(event)) {\n this.rowAction.emit({ ...action, outputRow: row });\n }\n }\n\n onSortingEvent(sortingParams: Sort): void {\n this.sortEvent.emit(sortingParams);\n }\n\n onTableAction(tableAction: TableAction): void {\n if (!!tableAction) {\n this.tableAction.emit(tableAction);\n }\n }\n\n private setFilterValue(value: string): void {\n this.dataSource.filter = value?.trim().toLowerCase();\n }\n\n private isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n}\n","<!-- Table actions -->\n@if (tableActions?.length) {\n <div>\n @for (tableAction of tableActions; track tableAction) {\n <mad-primary-button class=\"table-action\" (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label }}\n </mad-primary-button>\n }\n </div>\n}\n\n<!-- Row action buttons -->\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n @for (rowAction of rowActions; track rowAction) {\n <button mat-menu-item class=\"row-action\" (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- Table filter -->\n@if (isFilterEnabled) {\n <mat-form-field>\n <mat-label>{{ filterLabel }}</mat-label>\n <input matInput (keyup)=\"onFilter($event?.target?.value)\" placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n}\n\n<!-- Table -->\n@if (dataSource?.data?.length > 0) {\n <div class=\"mad-table\">\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column -->\n @if (rowActions?.length) {\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\" sticky>\n <th mat-header-cell *matHeaderCellDef class=\"row-action-button\"></th>\n <td mat-cell *matCellDef=\"let element\" class=\"row-action-button\">\n <mad-icon-button [matMenuTriggerData]=\"{ element: element }\" [matMenuTriggerFor]=\"menu\">\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n </td>\n </ng-container>\n }\n <!-- Columns with data -->\n @for (column of columns; track column) {\n <ng-container [matColumnDef]=\"column.label\" [sticky]=\"column.isSticky\">\n @if (column.isSortable) {\n <th\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.label }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label }}\n </th>\n } @else {\n <th mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n }\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\">\n {{ element[column.dataPropertyName] }}\n </td>\n </ng-container>\n }\n <tr mat-header-row *matHeaderRowDef=\"columnNames\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnNames\"\n ></tr>\n </table>\n </div>\n} @else {\n <div class=\"noDataText\">\n {{ noDataText }}\n </div>\n}\n<!-- Pagination -->\n<mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n showFirstLastButtons\n>\n</mat-paginator>\n\n<!-- No data alert -->\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { TableComponent } from './table.component';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n ButtonModule,\n TableComponent,\n ],\n exports: [TableComponent],\n})\nexport class TableModule {}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatInputModule } from '@angular/material/input';\nimport { DataTableColumn } from '../configuration/data-table-column';\nimport {\n DataTableColumnDefinition,\n DataTableColumnDefinitionChange,\n DataTableDialogData,\n} from '../configuration/data-table-column-definition';\nimport { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { MatFormFieldModule } from '@angular/material/form-field';\n\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ButtonModule } from '../../button/button.module';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mad-data-table-columns-modal',\n templateUrl: './data-table-columns-modal.component.html',\n styleUrls: ['./data-table-columns-modal.component.scss'],\n imports: [\n DragDropModule,\n MatFormFieldModule,\n MatInputModule,\n MatButtonModule,\n MatIconModule,\n FormsModule,\n ButtonModule,\n TranslateModule,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n ],\n})\nexport class DataTableColumnsModalComponent implements OnInit {\n definition: DataTableColumnDefinition;\n searchFilter: string;\n selectedColumns: DataTableColumn[] = [];\n availableColumns: DataTableColumn[] = [];\n filteredAvailableColumns: DataTableColumn[] = [];\n\n constructor(\n public dialogRef: MatDialogRef<DataTableColumnsModalComponent>,\n @Inject(MAT_DIALOG_DATA)\n public data: DataTableDialogData,\n ) {}\n\n ngOnInit(): void {\n this.definition = this.data.definition;\n for (const column of this.data.allColumns) {\n const columnId = column.id;\n const selectedColumnIds: string[] = this.definition.displayedColumns.map((col) => col.id);\n if (selectedColumnIds.includes(columnId)) {\n this.selectedColumns.push(column);\n } else {\n this.availableColumns.push(column);\n }\n }\n this.clearFilterValue();\n }\n\n onDrop(event: CdkDragDrop<DataTableColumn[]>): void {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);\n transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);\n this.clearFilterValue();\n this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));\n }\n }\n\n onSave(): void {\n this.definition.displayedColumns = this.selectedColumns;\n const saveChange: DataTableColumnDefinitionChange = {\n action: 'SAVE',\n definition: this.definition,\n };\n this.dialogRef.close(saveChange);\n }\n\n onDelete(): void {\n const deleteChange: DataTableColumnDefinitionChange = {\n action: 'DELETE',\n definition: this.definition,\n };\n this.dialogRef.close(deleteChange);\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n\n updateFilterValue(): void {\n if (this.searchFilter?.length > 0) {\n this.filteredAvailableColumns = this.availableColumns.filter((c) => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));\n } else {\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n }\n\n findMatchingItemIndex(previousContainer: CdkDropList, item: CdkDrag): number {\n const itemId = item.element.nativeElement.id;\n const previousContainerItems = [...previousContainer.data] as DataTableColumn[];\n if (previousContainerItems?.length < 1) {\n return 0;\n }\n for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {\n if (previousContainerItems[itemIndex].id === itemId) {\n return itemIndex;\n }\n }\n return 0;\n }\n\n clearFilterValue(): void {\n this.searchFilter = '';\n this.filteredAvailableColumns = [...this.availableColumns];\n }\n}\n","<h2 mat-dialog-title>{{ data.titleLabel | translate }}</h2>\n<mat-dialog-content>\n <div\n class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 sm:gap-6 w-full max-w-full box-border pt-2 pb-4 mb-4 border-b border-(--mat-sys-outline-variant)\"\n >\n <div class=\"w-full max-w-full min-w-0 block text-sm\">\n <div class=\"w-full min-h-14 mb-4 text-sm text-(--mat-sys-on-surface-variant) flex justify-end items-stretch flex-col\">\n {{ data.infoTextLabel | translate }}\n </div>\n <div class=\"font-bold mb-1\">{{ data.selectedLabel | translate }}</div>\n <div\n cdkDropList\n #selectedList=\"cdkDropList\"\n [cdkDropListData]=\"selectedColumns\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n class=\"column-drag-list selected-drag-list border border-(--mat-sys-outline-variant) h-[200px] box-border bg-(--mat-sys-surface) rounded overflow-auto block\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n @for (selectedColumn of selectedColumns; track selectedColumn; let i = $index) {\n <div\n class=\"column-drag-box py-3 px-2.5 border-b border-(--mat-sys-outline-variant) text-(--mat-sys-on-surface) flex flex-row items-center justify-between box-border h-10 cursor-move bg-(--mat-sys-surface) text-sm\"\n cdkDrag\n [id]=\"selectedColumn.id\"\n >\n {{ i + 1 }}. {{ selectedColumn.label | translate }}\n </div>\n }\n </div>\n </div>\n\n <div class=\"w-full max-w-full min-w-0 block text-sm\">\n <div class=\"w-full min-h-14 mb-4 text-sm text-(--mat-sys-on-surface-variant) flex justify-end items-stretch flex-col\">\n <!-- Table filter -->\n <mat-form-field class=\"w-full\">\n <mat-label>{{ data.filterColumnsLabel | translate }}</mat-label>\n <input\n matInput\n autocomplete=\"off\"\n (keyup)=\"updateFilterValue()\"\n placeholder=\"{{ data.filterColumnsPlaceHolder | translate }}\"\n [(ngModel)]=\"searchFilter\"\n />\n @if (searchFilter) {\n <button matSuffix matIconButton aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-form-field>\n </div>\n <div class=\"font-bold mb-1\">{{ data.availableLabel | translate }}</div>\n <div\n cdkDropList\n cdkDropListSortingDisabled\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableColumns\"\n [cdkDropListConnectedTo]=\"[selectedList]\"\n class=\"column-drag-list border border-(--mat-sys-outline-variant) h-[200px] box-border bg-(--mat-sys-surface) rounded overflow-auto block\"\n (cdkDropListDropped)=\"onDrop($event)\"\n >\n @for (availableColumn of filteredAvailableColumns; track availableColumn) {\n <div\n class=\"column-drag-box py-3 px-2.5 border-b border-(--mat-sys-outline-variant) text-(--mat-sys-on-surface) flex flex-row items-center justify-between box-border h-10 cursor-move bg-(--mat-sys-surface) text-sm\"\n cdkDrag\n [id]=\"availableColumn.id\"\n >\n {{ availableColumn.label }}\n </div>\n }\n </div>\n </div>\n </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n <mad-outline-button (click)=\"onCancel()\">\n {{ data.cancelLabel | translate }}\n </mad-outline-button>\n @if (data.deleteDefinitionAllowed) {\n <mad-danger-button (click)=\"onDelete()\">\n {{ data.deleteLabel | translate }}\n </mad-danger-button>\n }\n <mad-primary-button (click)=\"onSave()\" [disabled]=\"!((this.selectedColumns.length || 0) > 0)\">\n {{ data.saveLabel | translate }}\n </mad-primary-button>\n</mat-dialog-actions>\n","export class DataTableActionType {\n static SINGLE = 'SINGLE';\n static BATCH = 'BATCH';\n static NONE = 'NONE';\n}\n","import { Directive, output } from '@angular/core';\nimport { DataTableFilterHeader } from './data-table-filter-header.directive';\nimport { DataTableFilterObject } from './data-table-filter-object';\n\n@Directive({\n selector: '[madFilter]',\n standalone: true,\n})\nexport class DataTableFilter {\n readonly filterChange = output<DataTableFilterObject>({ alias: 'madFilterChange' });\n\n readonly filterables = new Map<string, DataTableFilterHeader>();\n\n register(filterable: DataTableFilterHeader): void {\n this.filterables.set(filterable.id, filterable);\n }\n\n unregister(filterable: DataTableFilterHeader): void {\n this.filterables.delete(filterable.id);\n }\n\n changeFilter(): void {\n this.filterChange.emit(this.createFilter());\n }\n\n updateFilterables(dataTableFilterObject: DataTableFilterObject | undefined): void {\n if (!!dataTableFilterObject) {\n Object.entries(dataTableFilterObject).forEach(([key, value]) => {\n const filterable = this.filterables.get(key);\n if (!!filterable) {\n filterable.filterValue = value as string | null;\n }\n });\n } else {\n this.filterables.forEach((value) => (value.filterValue = null));\n }\n }\n\n getActiveFilterCount(): number {\n return Array.from(this.filterables.values()).filter((value) => !!value.filterValue).length;\n }\n\n private createFilter(): DataTableFilterObject {\n return Array.from(this.filterables.values()).reduce((result, current) => ({ ...result, [current.id]: current.filterValue }), {});\n }\n}\n","import { MatSort, Sort } from '@angular/material/sort';\nimport { DateTime } from 'luxon';\nimport { NumberFormat } from '../configuration/data-table-global-configuration';\n\nexport class DataTableSortUtil {\n static sortData(dateTimeFormat?: string[], numberFormat?: NumberFormat): (tableData: any[], matSort: MatSort) => any[] {\n return (tableData: any[], matSort: MatSort) =>\n [...tableData].sort((a, b) => DataTableSortUtil.compare(a, b, matSort, dateTimeFormat, numberFormat));\n }\n\n static sortNothing(): (tableData: any[], matSort: MatSort) => any[] {\n return (tableData: any[], _: MatSort) => tableData;\n }\n\n static compare(\n a: Record<string, any>,\n b: Record<string, any>,\n sort: Sort,\n dateTimeFormat?: string[],\n numberFormat?: NumberFormat,\n ): number {\n const x = a[sort.active];\n const y = b[sort.active];\n const ascending = sort.direction === 'asc';\n\n if (typeof x === 'number' && typeof y === 'number') {\n return DataTableSortUtil.compareNumber(x, y, ascending);\n }\n if (typeof x === 'boolean' && typeof y === 'boolean') {\n return DataTableSortUtil.compareBoolean(x, y, ascending);\n }\n if (typeof x === 'string' || typeof y === 'string') {\n const stringX = String(x ?? '');\n const stringY = String(y ?? '');\n\n // a string could be a date\n if (!!dateTimeFormat.length) {\n const dates = dateTimeFormat\n .map((it) => ({\n x: DateTime.fromFormat(stringX, it),\n y: DateTime.fromFormat(stringY, it),\n }))\n .find(({ x, y }) => x.isValid && y.isValid);\n\n if (!!dates) {\n return DataTableSortUtil.compareDate(dates.x, dates.y, ascending);\n }\n }\n\n // .. but also a formatted number\n if (!!numberFormat) {\n const numberX = DataTableSortUtil.parseNumber(stringX, numberFormat);\n const numberY = DataTableSortUtil.parseNumber(stringY, numberFormat);\n\n if (typeof numberX === 'number' && typeof numberY === 'number') {\n return DataTableSortUtil.compareNumber(numberX, numberY, ascending);\n }\n }\n\n return DataTableSortUtil.compareString(stringX, stringY, ascending);\n }\n\n return 0;\n }\n\n static compareNumber(x: number, y: number, ascending: boolean): number {\n return ascending ? x - y : y - x;\n }\n\n static compareDate(x: DateTime, y: DateTime, ascending: boolean): number {\n return DataTableSortUtil.compareNumber(+x, +y, ascending);\n }\n\n static compareString(x: string, y: string, ascending: boolean): number {\n return ascending ? x.localeCompare(y) : y.localeCompare(x);\n }\n\n static compareBoolean(x: boolean, y: boolean, ascending: boolean): number {\n if (x === y) {\n return 0;\n }\n if (ascending) {\n // true first\n return x ? -1 : 1;\n } else {\n // false first\n return x ? 1 : -1;\n }\n }\n\n static parseNumber(value: string, numberFormat?: NumberFormat): number | string {\n const sanitized = value\n .replace(numberFormat.groupingSeparator ?? '', '')\n .replace(numberFormat.decimalSeparator ?? '', '.')\n .replace(new RegExp((numberFormat.units ?? []).join('|')), '');\n\n const numberValue = Number(sanitized);\n\n if (typeof numberValue === 'number' && !isNaN(numberValue)) {\n return numberValue;\n }\n\n return value;\n }\n}\n","import { DataTableAction, DataTableSelectionMode } from '../data-table';\n\nexport class DataTableActionUtil {\n public static getDisplayActions(\n actions: DataTableAction[],\n selectionMode: DataTableSelectionMode,\n ): {\n rowActions: DataTableAction[];\n groupedTableActions: DataTableAction[][];\n } {\n const rowActions = [];\n const tableActions = [];\n for (const action of actions) {\n if (selectionMode !== action.hiddenInMode) {\n switch (action.type) {\n case 'SINGLE':\n if (selectionMode === 'SINGLE') {\n rowActions.push(action);\n } else {\n tableActions.push(action);\n }\n break;\n case 'BATCH':\n if (selectionMode !== 'SINGLE') {\n tableActions.push(action);\n }\n break;\n default:\n tableActions.push(action);\n }\n }\n }\n\n return {\n rowActions: rowActions,\n groupedTableActions: DataTableActionUtil.getGroupedTableActions(tableActions),\n };\n }\n\n private static getGroupedTableActions(tableActions: DataTableAction[]): DataTableAction[][] {\n return Object.values(\n tableActions.reduce((result: { [key: number]: DataTableAction[] }, current) => {\n const index = Object.entries(result).findIndex(([, actions]) =>\n actions.find((it) => !!current.groupId && it.groupId === current.groupId),\n );\n const key = index !== -1 ? index : Object.keys(result).length || 0;\n (result[key] = result[key] || []).push(current);\n return result;\n }, {}),\n );\n }\n}\n","import { DataTableRow } from '../configuration/data-table-row';\nimport { DataTableColumn } from '../data-table';\nimport { v4 as uuidV4 } from 'uuid';\n\nexport class DataTableDataUtil {\n public static updateRowMap(\n rowMap: Map<string, DataTableRow>,\n data: any[] | undefined,\n columns: DataTableColumn[],\n idGenerator: (data: any) => string,\n parentIdGenerator: (data: any) => string,\n ): Map<string, DataTableRow> {\n rowMap.clear();\n\n data?.forEach((it) => {\n const rowId: string = DataTableDataUtil.createRowId(it, idGenerator);\n const dataRow: DataTableRow = DataTableDataUtil.createDataTableRow(it, rowId, parentIdGenerator, columns);\n rowMap.set(rowId, dataRow);\n });\n\n return rowMap;\n }\n\n private static createRowId(data: any, idGenerator: (data: any) => string): string {\n let id;\n if (!!idGenerator) {\n id = idGenerator(data);\n }\n return (!!id ? id : uuidV4()).toString();\n }\n\n private static createDataTableRow(data: any, rowId: string, parentIdGenerator: (data: any) => string, columns: DataTableColumn[]) {\n const parentId = parentIdGenerator ? parentIdGenerator(data) : undefined;\n const displayedData = DataTableDataUtil.createDisplayedData(rowId, parentId, data, columns);\n const dataRow: DataTableRow = {\n id: rowId,\n parentId: parentId,\n actualData: data,\n displayedData: displayedData,\n };\n return dataRow;\n }\n\n private static createDisplayedData(rowId: string, parentId: string | undefined, actualDataElement: any, columns: DataTableColumn[]): any {\n const displayedData: { [key: string]: any } = {};\n displayedData['rowId'] = rowId;\n displayedData['parentId'] = parentId;\n // keep non displayed data in row\n for (const key of Object.keys(actualDataElement)) {\n const column = columns.find((it) => it.dataPropertyName === key);\n const actualValue = actualDataElement[key];\n displayedData[key] = DataTableDataUtil.transformData(actualValue, column?.transformer, column?.transformerParams);\n }\n return displayedData;\n }\n\n static transformData(value: any, transformer: (data: any, transformerParams: any) => any, transformerParams: any): any {\n if (!transformer || !(transformer instanceof Function)) {\n return value;\n }\n return transformer(value, transformerParams);\n }\n}\n","import { DataTableFilterObject } from '../data-table-filter/data-table-filter-object';\n\nexport class DataTableFilterUtil {\n public static columnBasedFilterPredicate(rowMap: any): (row: any, filterString: any) => boolean {\n return (row: any, filterString: string): boolean => {\n const actualData = rowMap.get(row.rowId)?.actualData;\n const displayedData = row;\n const filters: DataTableFilterObject = JSON.parse(filterString);\n return Object.entries(filters).every(\n ([key, value]) => !value || this.contains(actualData, key, value) || this.contains(displayedData, key, value),\n );\n };\n }\n\n public static tableBasedFilterPredicate(): (data: any, filter: any) => boolean {\n return (data: any, filter: any) => {\n const transform = (str: string) =>\n str\n .trim()\n .toLowerCase()\n .replace(/^\"(.*)\"$/, '$1');\n const dataStr = transform(JSON.stringify(data));\n return dataStr.indexOf(transform(filter)) != -1;\n };\n }\n\n private static contains(data: any, key: string, searchTerm: string): boolean {\n return (String((data as any)[key]) ?? '').toLowerCase().includes(searchTerm.toLowerCase());\n }\n}\n","import { Sort } from '@angular/material/sort';\nimport { DataTableFilterObject } from './data-table-filter/data-table-filter-object';\nimport { Inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DataTablePersistenceService {\n sortKey = 'sort';\n filterKey = 'filter';\n pageSizeKey = 'pageSize';\n\n saveSort(tableId: string, sort: Sort | undefined): void {\n this.save(this.getId(tableId, this.sortKey), sort);\n }\n\n loadSort(tableId: string): Sort | undefined {\n return this.load(this.getId(tableId, this.sortKey));\n }\n\n saveFilter(tableId: string, filter: string | DataTableFilterObject | undefined): void {\n this.save(this.getId(tableId, this.filterKey), filter);\n }\n\n loadFilter(tableId: string): DataTableFilterObject | undefined {\n return this.load(this.getId(tableId, this.filterKey));\n }\n\n savePageSize(tableId: string, pageSize: number | undefined): void {\n this.save(this.getId(tableId, this.pageSizeKey), pageSize);\n }\n\n loadPageSize(tableId: string): number | undefined {\n return this.load(this.getId(tableId, this.pageSizeKey));\n }\n\n protected save<T>(id: string, item: T | undefined): void {\n if (!!item) {\n localStorage.setItem(id, JSON.stringify(item));\n } else {\n localStorage.removeItem(id);\n }\n }\n\n protected load<T>(id: string): T | undefined {\n const item = localStorage.getItem(id);\n return !!item ? JSON.parse(item) : undefined;\n }\n\n protected getId(tableId: string, key: string): string {\n return `${tableId}.${key}`;\n }\n}\n\nexport const MAD_DATA_TABLE_PERSISTENCE_SERVICE = new InjectionToken<DataTablePersistenceService>('mad-data-table-persistence-service');\n\nexport function DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER_FACTORY(persistenceService: DataTablePersistenceService) {\n return persistenceService || new DataTablePersistenceService();\n}\n\nexport const DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER = {\n // If there is a custom DataTablePersistenceService available, use that. Otherwise, provide the \"local storage\" default one.\n provide: MAD_DATA_TABLE_PERSISTENCE_SERVICE,\n deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_PERSISTENCE_SERVICE)]],\n useFactory: DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER_FACTORY,\n};\n","import { Inject, InjectionToken, Optional, SkipSelf } from '@angular/core';\n\nexport interface NumberFormat {\n decimalSeparator: string;\n groupingSeparator: string;\n units: string[]; // e.g. signs like €, $\n}\n\n// this could also be extended with e.g. labels or other general configuration stuff\nexport interface DataTableGlobalConfiguration {\n dateTimeFormat?: string | string[];\n numberFormat?: NumberFormat;\n}\n\nexport const MAD_DATA_TABLE_GLOBAL_CONFIGURATION = new InjectionToken<DataTableGlobalConfiguration>('mad-data-table-global-configuration');\n\n// If there is a custom DATA_TABLE_CONFIG_PROVIDER available, use that. Otherwise, provide the default one.\nexport const MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER = {\n provide: MAD_DATA_TABLE_GLOBAL_CONFIGURATION,\n deps: [[new Optional(), new SkipSelf(), new Inject(MAD_DATA_TABLE_GLOBAL_CONFIGURATION)]],\n useFactory: (dataTableConfig?: DataTableGlobalConfiguration) =>\n dataTableConfig ?? {\n dateTimeFormat: dataTableConfig?.dateTimeFormat ?? ['dd.MM.yyyy', 'dd.MM.yyyy hh:mm:ss'],\n numberFormat: dataTableConfig?.numberFormat ?? {\n decimalSeparator: ',',\n groupingSeparator: '.',\n units: ['€', '$'],\n },\n },\n};\n","import { ChangeDetectionStrategy, Component, effect, input, output } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DataTableFilterOption } from '../../data-table-filter-options';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'mad-data-table-filter-dialog',\n templateUrl: 'data-table-filter-dialog.component.html',\n styleUrls: ['./data-table-filter-dialog.component.scss'],\n imports: [MatFormFieldModule, MatInputModule, MatSelectModule, FormsModule, ReactiveFormsModule, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DataTableFilterDialogComponent {\n readonly filterOptions = input<DataTableFilterOption[]>([]);\n readonly filterValue = input<string | null>(null);\n readonly filterChanged = output<string | null>();\n\n protected readonly control = new FormControl<string | null>(null);\n\n constructor() {\n effect(() => {\n this.control.setValue(this.filterValue());\n });\n this.control.valueChanges.pipe(takeUntilDestroyed()).subscribe((value) => this.filterChanged.emit(value));\n }\n}\n","<div class=\"filter-dialog-box flex items-center w-auto h-20 px-3 py-3 bg-(--mat-sys-surface) [box-shadow:0_1px_3px_0_rgb(0_0_0_/_0.05)]\">\n @if (!filterOptions().length) {\n <mat-form-field class=\"filter-dialog-input w-auto max-w-[180px] m-auto\">\n <mat-label>{{ 'common.filter.term' | translate }}</mat-label>\n <input matInput type=\"text\" required=\"false\" [formControl]=\"control\" />\n </mat-form-field>\n } @else {\n <mat-form-field class=\"filter-dialog-input w-auto max-w-[180px] m-auto\">\n <mat-label>{{ 'common.filter.term' | translate }}</mat-label>\n <mat-select [formControl]=\"control\">\n <mat-option></mat-option>\n @for (entry of filterOptions(); track entry.key) {\n <mat-option [value]=\"entry.key\">{{ entry.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n</div>\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\nimport { DataTableFilterOption } from '../data-table-filter-options';\n\nimport { MatIconModule } from '@angular/material/icon';\nimport { DataTableFilterDialogComponent } from './data-table-filter-dialog/data-table-filter-dialog.component';\n\n@Component({\n selector: 'mad-data-table-filter',\n templateUrl: './data-table-filter.component.html',\n styleUrls: ['./data-table-filter.component.scss'],\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, MatIconModule, DataTableFilterDialogComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '(click)': 'stopHeaderSort($event)',\n '(keydown)': 'stopHeaderSort($event)',\n },\n})\nexport class FilterComponent {\n readonly filterOptions = input<DataTableFilterOption[]>([]);\n readonly filterValue = model<string | null>(null);\n readonly isHovered = input(false);\n\n protected readonly showFilterDialog = signal(false);\n protected readonly isActive = computed(() => !!this.filterValue());\n protected readonly opacity = computed(() => (this.isActive() ? '1' : this.isHovered() || this.showFilterDialog() ? '0.54' : '0'));\n\n protected toggleFilter(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.showFilterDialog.update((showFilterDialog) => !showFilterDialog);\n }\n\n protected closeFilterDialog(): void {\n this.showFilterDialog.set(false);\n }\n\n protected stopHeaderSort(event: Event): void {\n event.stopPropagation();\n }\n\n protected onFilterChanged(filterValue: string | null): void {\n this.filterValue.set(filterValue);\n }\n}\n","<div class=\"container relative size-4\">\n <div class=\"overlay absolute size-4 bg-(--mat-sys-surface) flex items-center justify-center\" [style.opacity]=\"opacity()\">\n <mat-icon\n #filterTrigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n class=\"colored-icon relative flex items-center justify-center\"\n fontSet=\"material-icons-outlined\"\n (click)=\"toggleFilter($event)\"\n >\n filter_alt\n </mat-icon>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"filterTrigger\"\n [cdkConnectedOverlayOpen]=\"showFilterDialog()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"closeFilterDialog()\"\n (detach)=\"closeFilterDialog()\"\n>\n <mad-data-table-filter-dialog [filterOptions]=\"filterOptions()\" [filterValue]=\"filterValue()\" (filterChanged)=\"onFilterChanged($event)\" />\n</ng-template>\n","import {\n AfterViewInit,\n ComponentRef,\n Directive,\n ElementRef,\n inject,\n input,\n inputBinding,\n OnDestroy,\n OnInit,\n outputBinding,\n Renderer2,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport { FilterComponent } from './data-table-filter-component/data-table-filter.component';\nimport { DataTableFilter } from './data-table-filter.directive';\nimport { DataTableFilterOption } from './data-table-filter-options';\n\n@Directive({\n selector: 'th[mad-filter-header]',\n standalone: true,\n host: {\n '(mouseenter)': 'onMouseenter()',\n '(mouseleave)': 'onMouseleave()',\n },\n})\nexport class DataTableFilterHeader implements OnInit, AfterViewInit, OnDestroy {\n readonly madFilterHeaderId = input.required<string>({ alias: 'mad-filter-header' });\n readonly madFilterColumnRightAligned = input(false);\n readonly madFilterOptions = input<DataTableFilterOption[], DataTableFilterOption[] | undefined>([], {\n transform: (filterOptions) => filterOptions ?? [],\n });\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n private readonly madFilter = inject(DataTableFilter, { optional: true });\n private readonly _filterValue = signal<string | null>(null);\n private readonly _isHovered = signal(false);\n\n private _filterComponent: ComponentRef<FilterComponent>;\n\n get id(): string {\n return this.madFilterHeaderId();\n }\n\n get filterValue(): string | null {\n return this._filterValue();\n }\n\n set filterValue(filterValue: string | null) {\n this._filterValue.set(filterValue);\n this._filterComponent?.changeDetectorRef.detectChanges();\n }\n\n onMouseenter(): void {\n this._isHovered.set(true);\n }\n\n onMouseleave(): void {\n this._isHovered.set(false);\n }\n\n ngOnInit(): void {\n this._filterComponent = this.viewContainerRef.createComponent(FilterComponent, {\n bindings: [\n inputBinding('filterOptions', this.madFilterOptions),\n inputBinding('filterValue', this._filterValue),\n inputBinding('isHovered', this._isHovered),\n outputBinding<string | null>('filterValueChange', (value) => this.onFilterValueChange(value)),\n ],\n });\n this._filterComponent.changeDetectorRef.detectChanges();\n\n this.insertFilterComponent();\n\n this.madFilter?.register(this);\n }\n\n ngAfterViewInit(): void {\n const componentNativeElement = this._filterComponent.location.nativeElement as HTMLElement;\n const wrapper = componentNativeElement.parentElement;\n\n if (wrapper && !wrapper.classList.contains('mat-sort-header-container')) {\n this.insertFilterComponentIntoSortHeader(wrapper, componentNativeElement);\n }\n }\n\n ngOnDestroy(): void {\n this.madFilter?.unregister(this);\n }\n\n private onFilterValueChange(value: string | null): void {\n this._filterValue.set(value);\n this.madFilter?.changeFilter();\n }\n\n private insertFilterComponent(): void {\n const componentNativeElement = this._filterComponent.location.nativeElement as HTMLElement;\n const div = this.getWrappedHeader();\n\n if (this.insertFilterComponentIntoSortHeader(div, componentNativeElement)) {\n return;\n }\n\n this.renderer.appendChild(div, componentNativeElement);\n }\n\n private insertFilterComponentIntoSortHeader(wrapper: HTMLElement, componentNativeElement: HTMLElement): boolean {\n const sortHeaderContainer = wrapper.querySelector('.mat-sort-header-container');\n const sortArrow = sortHeaderContainer?.querySelector('.mat-sort-header-arrow');\n\n if (sortHeaderContainer && sortArrow) {\n this.renderer.insertBefore(sortHeaderContainer, componentNativeElement, sortArrow);\n return true;\n }\n\n return false;\n }\n\n private getWrappedHeader(): HTMLElement {\n const headerContent = this.element.nativeElement.firstChild;\n\n if (headerContent) {\n this.renderer.removeChild(this.element.nativeElement, headerContent);\n }\n\n const div = this.renderer.createElement('div') as HTMLElement;\n this.renderer.setStyle(div, 'display', 'flex');\n this.renderer.setStyle(div, 'align-items', 'center');\n if (this.madFilterColumnRightAligned()) {\n this.renderer.setStyle(div, 'justify-content', 'flex-end');\n if (headerContent?.firstChild) {\n this.renderer.setStyle(headerContent.firstChild, 'justify-content', 'flex-end');\n }\n }\n if (headerContent) {\n this.renderer.appendChild(div, headerContent);\n }\n this.renderer.appendChild(this.element.nativeElement, div);\n\n return div;\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { DataTableTemplateCellDefinition } from './data-table-template-cell-definition.directive';\n\n@Directive({\n selector: '[madColumnDef]',\n standalone: true,\n})\nexport class DataTableTemplateColumnDefinition {\n readonly madColumnDef = input.required<string>();\n\n cellDef: DataTableTemplateCellDefinition | null;\n\n public register(cellDef: DataTableTemplateCellDefinition) {\n this.cellDef = cellDef;\n }\n\n public unregister() {\n this.cellDef = null;\n }\n}\n","import { Directive, input } from '@angular/core';\nimport { DataTableTemplateExpandableCellDefinition } from './data-table-template-expandable-cell-definition.directive';\n\n@Directive({\n selector: '[madExpandableColumnDef]',\n standalone: true,\n})\nexport class DataTableTemplateExpandableColumnDefinition {\n readonly madExpandableColumnDef = input.required<string>();\n\n cellDef: DataTableTemplateExpandableCellDefinition | null;\n\n public register(cellDef: DataTableTemplateExpandableCellDefinition) {\n this.cellDef = cellDef;\n }\n\n public unregister() {\n this.cellDef = null;\n }\n}\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { DataTableTemplateExpandableColumnDefinition } from './data-table-template-expandable-column-definition.directive';\n\n@Directive({\n selector: '[madExpandableCellDef]',\n standalone: true,\n})\nexport class DataTableTemplateExpandableCellDefinition implements OnInit, OnDestroy {\n constructor(\n private templateRef: TemplateRef<any>,\n public columnDef: DataTableTemplateExpandableColumnDefinition,\n ) {}\n\n ngOnInit(): void {\n this.columnDef.register(this);\n }\n\n ngOnDestroy(): void {\n this.columnDef.unregister();\n }\n\n getCellTemplate(): TemplateRef<any> {\n return this.templateRef;\n }\n}\n","import { PageEvent } from '@angular/material/paginator';\nimport { DataTablePersistenceConfiguration } from '../configuration/data-table-persistence-configuration';\nimport { DataTableSelectionMode } from '../configuration/data-table-selection-mode';\n\nexport const DEFAULT_PAGE: PageEvent = { pageIndex: 0, pageSize: 50, length: 0 };\n\nexport const DEFAULT_PERSISTENCE_CONFIG: DataTablePersistenceConfiguration = {\n persistSort: false,\n persistFilter: false,\n persistPageSize: false,\n};\n\nexport function arrayOrEmpty<T>(value: T[] | null | undefined): T[] {\n return value ?? [];\n}\n\nexport function pageOrDefault(value: PageEvent | null | undefined): PageEvent {\n return value ?? DEFAULT_PAGE;\n}\n\nexport function persistenceConfigOrUndefined(\n value: DataTablePersistenceConfiguration | null | undefined,\n): DataTablePersistenceConfiguration | undefined {\n return value ?? undefined;\n}\n\nexport function isDeprecatedForceSelectionMode(value: string | undefined): value is DataTableSelectionMode {\n return value === 'SINGLE' || value === 'BATCH';\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n TemplateRef,\n computed,\n contentChild,\n contentChildren,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatPaginator, MatPaginatorModule, PageEvent } from '@angular/material/paginator';\nimport { MatSort, MatSortModule, Sort } from '@angular/material/sort';\nimport { DataTableColumn } from './configuration/data-table-column';\nimport { DataTableAction } from './configuration/data-table-action';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DataTableColumnsModalComponent } from './data-table-columns-modal/data-table-columns-modal.component';\nimport {\n DataTableColumnDefinition,\n DataTableColumnDefinitionChange,\n DataTableDialogData,\n} from './configuration/data-table-column-definition';\nimport { DataTableRow } from './configuration/data-table-row';\nimport { DataTableHeaderType } from './configuration/data-table-header-type';\nimport { DataTableFilterMode } from './configuration/data-table-filter-mode';\nimport { DataTableFilterObject } from './data-table-filter/data-table-filter-object';\nimport { DataTableFilter } from './data-table-filter/data-table-filter.directive';\nimport { DataTableSelectionEmitType } from './configuration/data-table-selection-emit-type';\nimport { DataTableSelectionEmitMode } from './configuration/data-table-selection-emit-mode';\nimport { DataTableSelectionMode } from './configuration/data-table-selection-mode';\nimport { DataTableSortUtil } from './util/data-table-sort-util';\nimport { DataTableActionUtil } from './util/data-table-action-util';\nimport { DataTableDataUtil } from './util/data-table-data-util';\nimport { DataTableFilterUtil } from './util/data-table-filter-util';\nimport {\n DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER,\n DataTablePersistenceService,\n MAD_DATA_TABLE_PERSISTENCE_SERVICE,\n} from './data-table-persistence.service';\nimport {\n DataTableGlobalConfiguration,\n MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER,\n MAD_DATA_TABLE_GLOBAL_CONFIGURATION,\n} from './configuration/data-table-global-configuration';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '../button/button.module';\nimport { DataTableFilterHeader } from './data-table-filter/data-table-filter-header.directive';\nimport { DataTableTemplateColumnDefinition } from './data-table-template/data-table-template-column-definition.directive';\nimport { DataTableTemplateExpandableCellDefinition } from './data-table-template/data-table-template-expandable-cell-definition.directive';\nimport { DataTablePersistenceConfiguration } from './configuration/data-table-persistence-configuration';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport {\n arrayOrEmpty,\n DEFAULT_PAGE,\n DEFAULT_PERSISTENCE_CONFIG,\n isDeprecatedForceSelectionMode,\n pageOrDefault,\n persistenceConfigOrUndefined,\n} from './util/data-table-input-transforms';\n\n@Component({\n selector: 'mad-data-table',\n templateUrl: './data-table.component.html',\n styleUrls: ['./data-table.component.scss'],\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatPaginatorModule,\n MatSortModule,\n MatTableModule,\n MatProgressSpinnerModule,\n ButtonModule,\n TranslateModule,\n MatCheckboxModule,\n MatRadioModule,\n MatBadgeModule,\n DragDropModule,\n FormsModule,\n DataTableFilterHeader,\n DataTableFilter,\n MatTooltip,\n ],\n providers: [DATA_TABLE_PERSISTENCE_SERVICE_PROVIDER, MAD_DATA_TABL_GLOBAL_CONFIGURATION_PROVIDER],\n})\nexport class DataTableComponent implements AfterViewInit {\n readonly id = input<string>();\n\n // Translations\n readonly filterLabel = input('common.filter');\n readonly filterPlaceholder = input('');\n readonly filterColumnsLabel = input('Filter');\n readonly filterColumnsPlaceHolder = input('Filter available columns');\n readonly showEmptyTable = input(false);\n readonly noDataText = input('No matching data found');\n readonly columnSettingsModalTitleLabel = input('Column settings');\n readonly selectedLabel = input('Selected columns');\n readonly availableLabel = input('Available columns');\n readonly saveLabel = input('Save');\n readonly deleteLabel = input('Delete');\n readonly cancelLabel = input('Cancel');\n readonly infoTextLabel = input('Drag and drop a column to select or reorder it.');\n readonly tableClass = input<string>();\n\n readonly translateLabels = input(true);\n\n readonly useAsync = input(false);\n\n /**\n * @deprecated\n * Please use the more specific persistenceConfig instead\n */\n readonly stateful = input<boolean | undefined>(undefined);\n\n readonly persistenceConfig = input<DataTablePersistenceConfiguration | undefined, DataTablePersistenceConfiguration | null | undefined>(\n undefined,\n { transform: persistenceConfigOrUndefined },\n );\n\n readonly loading = input(false);\n\n readonly tableData = input<any[] | undefined>();\n readonly idGenerator = input<any>();\n readonly parentIdGenerator = input<any>();\n\n readonly defaultSort = input<Sort>();\n readonly externalFilter = input<any>();\n readonly paginationEnabled = input(false);\n readonly page = input<PageEvent, PageEvent | null | undefined>(DEFAULT_PAGE, { transform: pageOrDefault });\n readonly pageSizeOptions = input<number[], number[] | null | undefined>([5, 10, 15], { transform: arrayOrEmpty });\n\n readonly actions = input<DataTableAction[], DataTableAction[] | null | undefined>([], { transform: arrayOrEmpty });\n readonly selectionEmitType = input<DataTableSelectionEmitType>('ID');\n readonly showDeleteFilterAction = input(true);\n readonly disableRowClick = input(false);\n\n readonly deleteDefinitionAllowed = input(false);\n readonly rowExpandable = input<(data: any) => boolean>(() => true);\n\n readonly selection = input<string[] | any[] | undefined>();\n\n /**\n * @deprecated\n * Please use \"filterMode\" instead\n */\n readonly filterEnabled = input<boolean | undefined>(undefined);\n\n readonly filterModeInput = input<DataTableFilterMode | undefined>(undefined, { alias: 'filterMode' });\n readonly filterValueInput = input<string | DataTableFilterObject | undefined>(undefined, { alias: 'filterValue' });\n\n readonly externalPaginator = input<any>();\n readonly defaultPageSize = input<number | undefined>();\n readonly selectionEmitModeInput = input<DataTableSelectionEmitMode | undefined>(undefined, { alias: 'selectionEmitMode' });\n\n /**\n * @deprecated\n * This function mixes up 2 responsibilities:\n * - determining if actions should be displayed / handled\n * - determining whether actions are row based (single) or table based (batch)\n * Please use a combination of \"selectionEmitMode\" and \"selectionMode\" instead:\n * - selectionEmitMode determines how selected items are handled (as part of actions, as selections or not at all)\n * - selectionMode determines if selected items are treated separately (single) or together (batch)\n */\n readonly forceMode = input<string | undefined>();\n readonly forceSelectionMode = input<DataTableSelectionMode | undefined>();\n\n readonly displayedColumnsInput = input<DataTableColumn[] | undefined>(undefined, { alias: 'displayedColumns' });\n readonly displayedColumnDefinition = input<DataTableColumnDefinition | undefined>();\n readonly columnDefinitions = input<DataTableColumnDefinition[], DataTableColumnDefinition[] | null | undefined>([], {\n transform: arrayOrEmpty,\n });\n readonly allColumns = input<DataTableColumn[] | undefined>();\n\n readonly actionEvent = output<DataTableAction>();\n readonly selectionEvent = output<any[]>();\n\n readonly sortEvent = output<Sort>();\n readonly filterEvent = output<string | DataTableFilterObject | undefined>();\n readonly pageEvent = output<PageEvent>();\n\n readonly allColumnsEvent = output<void>();\n readonly columnDefinitionChangeEvent = output<DataTableColumnDefinitionChange>();\n readonly viewDefinitionChangeEvent = output<DataTableColumnDefinition>();\n\n readonly paginator = viewChild(MatPaginator);\n readonly matSort = viewChild(MatSort);\n readonly filter = viewChild(DataTableFilter);\n readonly columnDefs = contentChildren(DataTableTemplateColumnDefinition);\n readonly expandableDef = contentChild(DataTableTemplateExpandableCellDefinition);\n\n dataSource = new MatTableDataSource<any>();\n allSelected = false;\n\n extPaginator: any;\n\n readonly ACTION_COLUMN_NAME = '__action__';\n\n readonly effectivePersistenceConfig = computed<DataTablePersistenceConfiguration>(() => {\n const persistenceConfig = this.persistenceConfig();\n const stateful = this.stateful();\n\n if (persistenceConfig) {\n return persistenceConfig;\n }\n\n if (stateful !== undefined) {\n return {\n persistSort: stateful,\n persistFilter: stateful,\n persistPageSize: stateful,\n };\n }\n\n return DEFAULT_PERSISTENCE_CONFIG;\n });\n\n readonly filterModeState = computed<DataTableFilterMode>(() => {\n const configuredFilterMode = this.filterModeInput();\n const filterEnabled = this.filterEnabled();\n const baseFilterMode = configuredFilterMode ?? (filterEnabled === undefined ? 'NONE' : filterEnabled ? 'TABLE_BASED' : 'NONE');\n\n return this.useAsync() && baseFilterMode === 'TABLE_BASED' ? 'NONE' : baseFilterMode;\n });\n\n readonly deprecatedForceSelectionMode = computed<DataTableSelectionMode | undefined>(() => {\n const forceMode = this.forceMode();\n return isDeprecatedForceSelectionMode(forceMode) ? forceMode : undefined;\n });\n\n readonly effectiveForceSelectionMode = computed<DataTableSelectionMode | undefined>(\n () => this.forceSelectionMode() ?? this.deprecatedForceSelectionMode(),\n );\n\n readonly selectionModeState = computed<DataTableSelectionMode>(() => {\n const forcedMode = this.effectiveForceSelectionMode();\n\n if (forcedMode) {\n return forcedMode;\n }\n\n return this.actions().find((it) => it.type === 'BATCH') ? 'BATCH' : 'SINGLE';\n });\n\n readonly selectionEmitModeState = computed<DataTableSelectionEmitMode>(() => {\n const useDeprecatedForceModeEmitMode = !this.forceSelectionMode() && this.deprecatedForceSelectionMode();\n const configuredMode = this.selectionEmitModeInput() ?? (useDeprecatedForceModeEmitMode ? 'ON_ACTION' : 'NONE');\n\n return configuredMode === 'NONE' && this.actions().length ? 'ON_ACTION' : configuredMode;\n });\n\n readonly columnsState = computed<DataTableColumn[]>(\n () => this.displayedColumnDefinition()?.displayedColumns ?? this.displayedColumnsInput() ?? [],\n );\n readonly columnIdsState = computed<string[]>(() => [this.ACTION_COLUMN_NAME, ...this.columnsState().map((column) => column.id)]);\n\n private readonly displayActions = computed(() => DataTableActionUtil.getDisplayActions(this.actions(), this.selectionModeState()));\n readonly rowActionsState = computed<DataTableAction[]>(() => this.displayActions().rowActions);\n readonly tableActionsState = computed<DataTableAction[][]>(() => this.displayActions().groupedTableActions);\n\n readonly editableColumnDefinitionsState = computed<DataTableColumnDefinition[]>(() =>\n this.columnDefinitions().filter((definition) => definition.editable),\n );\n readonly viewableColumnDefinitionsState = computed<DataTableColumnDefinition[]>(() =>\n this.columnDefinitions().filter((definition) => definition.displayedColumns?.length > 0),\n );\n\n readonly showAll = computed(() => !this.useAsync() && !this.paginationEnabled());\n readonly pageIndexState = computed(() => (this.showAll() ? 0 : this.pageState().pageIndex));\n readonly pageSizeState = computed(() => (this.showAll() ? this.dataLength() : this.pageState().pageSize));\n readonly pageLengthState = computed(() => (this.showAll() ? this.dataLength() : this.pageState().length));\n\n get filterMode(): DataTableFilterMode {\n return this.filterModeState();\n }\n\n get selectionMode(): DataTableSelectionMode {\n return this.selectionModeState();\n }\n\n get selectionEmitMode(): DataTableSelectionEmitMode {\n return this.selectionEmitModeState();\n }\n\n get columns(): DataTableColumn[] {\n return this.columnsState();\n }\n\n get columnIds(): string[] {\n return this.columnIdsState();\n }\n\n get rowActions(): DataTableAction[] {\n return this.rowActionsState();\n }\n\n get tableActions(): DataTableAction[][] {\n return this.tableActionsState();\n }\n\n get editableColumnDefinitions(): DataTableColumnDefinition[] {\n return this.editableColumnDefinitionsState();\n }\n\n get viewableColumnDefinitions(): DataTableColumnDefinition[] {\n return this.viewableColumnDefinitionsState();\n }\n\n get pageIndex(): number {\n return this.pageIndexState();\n }\n\n get pageSize(): number {\n return this.pageSizeState();\n }\n\n get pageLength(): number {\n return this.pageLengthState();\n }\n\n expandedElement: DataTableColumn | null;\n\n private _rowMap = new Map<string, DataTableRow>();\n private _selectionModel = new SelectionModel<string>(true);\n\n private _sort: MatSort | null = null;\n private _pendingSort: Sort | null = null;\n\n private readonly pageState = signal<PageEvent>(DEFAULT_PAGE);\n private readonly dataLength = signal(0);\n private readonly _filterValue = signal<string | DataTableFilterObject | undefined>(undefined);\n private readonly selectedColumnDefinition = signal<DataTableColumnDefinition | undefined>(undefined);\n\n private _showColumnModal = false;\n private previousForceSelectionMode: DataTableSelectionMode | undefined;\n\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly matDialog = inject(MatDialog);\n private readonly persistenceService = inject<DataTablePersistenceService>(MAD_DATA_TABLE_PERSISTENCE_SERVICE);\n private readonly dataTableGlobalConfig = inject<DataTableGlobalConfiguration>(MAD_DATA_TABLE_GLOBAL_CONFIGURATION);\n\n constructor() {\n this.registerSignalEffects();\n }\n\n ngAfterViewInit(): void {\n if (!this.useAsync()) {\n this.dataSource.paginator = this.paginator() ?? null;\n this.dataSource.sort = this._sort ?? null;\n }\n this.applySortData();\n this.initState();\n }\n\n private registerSignalEffects(): void {\n this.registerMatSortEffect();\n this.registerUseAsyncEffect();\n this.registerExternalPaginatorEffect();\n this.registerPageInputEffect();\n this.registerFilterModeEffect();\n this.registerFilterValueEffect();\n this.registerDataInputEffect();\n this.registerSelectionInputEffect();\n this.registerDisplayedColumnDefinitionEffect();\n this.registerForceSelectionModeEffect();\n this.registerAllColumnsEffect();\n }\n\n private registerMatSortEffect(): void {\n effect(() => {\n const matSort = this.matSort();\n\n if (!matSort) {\n return;\n }\n\n this._sort = matSort;\n this.dataSource.sort = matSort;\n untracked(() => this.applyPendingSort());\n });\n }\n\n private registerUseAsyncEffect(): void {\n effect(() => {\n this.useAsync();\n untracked(() => this.applySortData());\n });\n }\n\n private registerExternalPaginatorEffect(): void {\n effect(() => {\n this.extPaginator = this.externalPaginator();\n });\n }\n\n private registerPageInputEffect(): void {\n effect(() => {\n const page = this.page();\n const defaultPageSize = this.defaultPageSize();\n\n this.pageState.set({\n ...page,\n pageSize: defaultPageSize ?? page.pageSize,\n });\n });\n }\n\n private registerFilterModeEffect(): void {\n effect(() => {\n this.filterModeState();\n untracked(() => this.applyFilterPredicate());\n });\n }\n\n private registerFilterValueEffect(): void {\n effect(() => {\n const filterValue = this.filterValueInput();\n this._filterValue.set(filterValue);\n untracked(() => this.applyFilterValue(filterValue));\n });\n }\n\n private registerDataInputEffect(): void {\n effect(() => {\n const tableData = this.tableData();\n const columns = this.columnsState();\n const idGenerator = this.idGenerator();\n const parentIdGenerator = this.parentIdGenerator();\n const showAll = this.showAll();\n\n untracked(() => {\n this.updateDataTableData(tableData, columns, idGenerator, parentIdGenerator);\n const selection = this.selection();\n this.updateSelectionModel(this.getSelection('ID').length ? this.getSelection('ID') : selection);\n if (showAll) {\n this.updatePaginator();\n }\n });\n });\n }\n\n private registerSelectionInputEffect(): void {\n effect(() => {\n const selection = this.selection();\n untracked(() => this.updateSelectionModel(selection));\n });\n }\n\n private registerDisplayedColumnDefinitionEffect(): void {\n effect(() => {\n const displayedColumnDefinition = this.displayedColumnDefinition();\n\n if (displayedColumnDefinition) {\n this.selectedColumnDefinition.set(displayedColumnDefinition);\n }\n });\n }\n\n private registerForceSelectionModeEffect(): void {\n effect(() => {\n const nextMode = this.effectiveForceSelectionMode();\n\n if (this.previousForceSelectionMode !== nextMode) {\n this.previousForceSelectionMode = nextMode;\n untracked(() => {\n this._selectionModel.clear();\n const selection = this.selection();\n if (selection !== undefined) {\n this.updateSelectionModel(selection);\n }\n });\n }\n });\n }\n\n private registerAllColumnsEffect(): void {\n effect(() => {\n const allColumns = this.allColumns();\n\n if (allColumns && this._showColumnModal) {\n untracked(() => this.openColumnModal());\n }\n });\n }\n\n /** TABLE DISPLAY HANDLING */\n\n getDataTableHeaderType(column: DataTableColumn): DataTableHeaderType {\n if (column.isSortable && !column.isFilterable) {\n return 'SORT';\n }\n if (!column.isSortable && column.isFilterable) {\n return 'FILTER';\n }\n if (column.isSortable && column.isFilterable) {\n return 'SORT_AND_FILTER';\n }\n return 'PLAIN';\n }\n\n getCustomCellTemplate(columnId: string): TemplateRef<any> | null {\n const columnDef = this.columnDefs().find((it) => it.madColumnDef() === columnId);\n return columnDef && columnDef.cellDef ? columnDef.cellDef.getCellTemplate() : null;\n }\n\n getCustomExpandableTemplate(): TemplateRef<any> | null {\n return this.expandableDef()?.getCellTemplate() || null;\n }\n\n get expandableColumnDef() {\n return this.expandableDef()?.columnDef.madExpandableColumnDef() || '';\n }\n\n onExpand(event: MouseEvent, element: DataTableColumn) {\n if (this.rowExpandable()(element)) {\n this.expandedElement = this.expandedElement === element ? null : element;\n }\n event.stopPropagation();\n }\n\n /** ACTION BUTTON DISPLAY HANDLING */\n\n hasVisibleRowActions(displayedData: any): boolean {\n return !this.rowActionsState().every((action) => this.isHiddenForData(action, [this._rowMap.get(displayedData.rowId)?.actualData]));\n }\n\n isHidden(action: DataTableAction): boolean {\n return this.isHiddenForData(action, this.getSelection('DATA'));\n }\n\n private isHiddenForData(action: DataTableAction, data: any[]) {\n return !!action.isHidden && action.isHidden(data);\n }\n\n isDisabled(action: DataTableAction): boolean {\n return this.isDisabledForActionType(action.type) || (!!action.isDisabled && action.isDisabled(this.getSelection('DATA')));\n }\n\n private isDisabledForActionType(actionType: string): boolean {\n switch (actionType) {\n case 'SINGLE':\n return this.selectedCount !== 1;\n case 'BATCH':\n return this.selectedCount < 1;\n default:\n return false;\n }\n }\n\n getSelectedCount(actionType: string): string {\n const count = this.selectedCount;\n if (actionType !== 'BATCH' || count < 2) {\n return '';\n }\n return ` (${count})`;\n }\n\n private get selectedCount(): number {\n return this._selectionModel?.selected ? this._selectionModel.selected.length : 0;\n }\n\n /** TABLE DATA CHANGE HANDLING */\n\n private updateDataTableData(\n tableData = this.tableData(),\n columns = this.columnsState(),\n idGenerator = this.idGenerator(),\n parentIdGenerator = this.parentIdGenerator(),\n ): void {\n // do not make this function immutable - we desparately need the reference of rowMap to stay the same\n DataTableDataUtil.updateRowMap(this._rowMap, tableData, columns, idGenerator, parentIdGenerator);\n this.dataSource.data = Array.from(this._rowMap.values()).map((it) => it.displayedData);\n this.dataLength.set(this.dataSource.data?.length || 0);\n }\n\n private updateSelectionModel(selection: string[] | any[]) {\n this._selectionModel.clear();\n selection?.forEach((it) => {\n const item = this._rowMap.get(it) || [...this._rowMap.values()].find((row) => row.actualData === it);\n if (!!item) {\n this.onSelectionEvent(item.id);\n }\n });\n this.emitSelection();\n }\n\n /** ACTION & SELECTION HANDLING */\n\n // get filtered & sorted data of the current page\n get displayedData(): any[] {\n return this.dataSource?._pageData(this.dataSource?.sortData(this.dataSource.filteredData, this.dataSource.sort));\n }\n\n get showActionColumn(): boolean {\n return !(this.selectionEmitModeState() === 'NONE' || this.hideActionColumn) || !!this.expandableDef();\n }\n\n showCheckbox(displayedData: any): boolean {\n return !displayedData.parentId && this.selectionModeState() === 'BATCH' && !this.hideActionColumn;\n }\n\n showRowActionIcon(displayedData: any): boolean {\n return (\n !displayedData.parentId &&\n this.selectionEmitModeState() === 'ON_ACTION' &&\n this.selectionModeState() === 'SINGLE' &&\n !this.hideActionColumn\n );\n }\n\n showRadioButton(displayedData: any): boolean {\n return !displayedData.parentId && this.selectionEmitModeState() === 'ON_SELECTION' && this.selectionModeState() === 'SINGLE';\n }\n\n showExpandableButton(displayedData: any): boolean {\n return !displayedData.parentId && !!this.expandableDef() && this.rowExpandable()(displayedData);\n }\n\n isSelected(rowId: string): boolean {\n return this._selectionModel.isSelected(rowId);\n }\n\n onToggleSelectAll(): void {\n // clear all selection first\n this._selectionModel.clear();\n // toggle all checkbox\n this.allSelected = !this.allSelected;\n if (this.allSelected) {\n // select all rows of the current page\n this.displayedData.forEach((row) => {\n if (!row.parentId) {\n this._selectionModel.select(row.rowId);\n }\n });\n }\n this.emitSelection();\n }\n\n onActionEvent(action: DataTableAction): void {\n const emitAction = { ...action };\n if (!!emitAction && this.selectionEmitModeState() !== 'NONE') {\n emitAction.selected = this.getSelection(this.selectionEmitType());\n this.actionEvent.emit(emitAction);\n }\n }\n\n onSelectionEvent(id: any): void {\n switch (this.selectionModeState()) {\n case 'BATCH':\n this._selectionModel.toggle(id);\n break;\n case 'SINGLE':\n this._selectionModel.clear();\n this._selectionModel.toggle(id);\n break;\n }\n }\n\n onRowEvent(event: MouseEvent, row: any, action = this.defaultAction): void {\n if (this.selectionEmitModeState() === 'NONE' || row?.parentId) {\n return;\n }\n\n this.onSelectionEvent(row.rowId);\n this.processSelection(event, action);\n }\n\n private get defaultAction(): DataTableAction | undefined {\n return this.selectionEmitModeState() !== 'NONE' ? this.rowActionsState()[0] : undefined;\n }\n\n private get hideActionColumn(): boolean {\n return this.selectionEmitModeState() === 'ON_ACTION' && this.actions().every((it) => it.type === 'NONE');\n }\n\n private processSelection(event: MouseEvent, action?: DataTableAction): void {\n if (\n this.selectionEmitModeState() === 'ON_ACTION' &&\n this.selectionModeState() === 'SINGLE' &&\n !!action &&\n !DataTableComponent.isClickOnRowMenuIcon(event)\n ) {\n this.onActionEvent(action);\n }\n\n this.emitSelection();\n }\n\n private emitSelection() {\n if (this.selectionEmitModeState() === 'ON_SELECTION') {\n this.selectionEvent.emit(this.getSelection(this.selectionEmitType()));\n }\n }\n\n private getSelection(selectionEmitType: DataTableSelectionEmitType): any[] {\n const selection: any[] = [];\n this._selectionModel.selected.forEach((it) =>\n // if ID-generator is provided, return the ID, else return the ACTUAL data\n selection.push(this.idGenerator() && selectionEmitType === 'ID' ? it : this._rowMap.get(it)?.actualData),\n );\n\n return selection;\n }\n\n private static isClickOnRowMenuIcon(event: MouseEvent): boolean {\n return (event?.target as HTMLElement)?.classList.contains('mat-icon');\n }\n\n /** SORT HANDLING */\n\n onSortingEvent(sort: Sort): void {\n if (this.useAsync()) {\n this.sortEvent.emit(sort);\n }\n\n if (this.effectivePersistenceConfig().persistSort) {\n this.persistenceService.saveSort(this.id(), sort);\n }\n }\n\n private applySortData() {\n this.dataSource.sortData = this.useAsync()\n ? DataTableSortUtil.sortNothing()\n : DataTableSortUtil.sortData([...this.dataTableGlobalConfig.dateTimeFormat], this.dataTableGlobalConfig.numberFormat);\n }\n\n /** FILTER HANDLING */\n\n onTableBasedFilterEvent(event: Event): void {\n this.onFilteringEvent((event.target as HTMLTextAreaElement).value);\n }\n\n onColumnBasedFilterEvent(filter: DataTableFilterObject | undefined): void {\n this.onFilteringEvent(filter);\n }\n\n onDeleteFilter(): void {\n this.onFilteringEvent(undefined);\n this.filter()?.updateFilterables(undefined);\n }\n\n private onFilteringEvent(filter: string | DataTableFilterObject | undefined): void {\n if (this.useAsync()) {\n this.filterEvent.emit(filter);\n } else {\n this.allSelected = false;\n this._selectionModel.clear();\n this.applyFilterValue(filter);\n }\n\n if (this.effectivePersistenceConfig().persistFilter) {\n this.persistenceService.saveFilter(this.id(), filter);\n }\n }\n\n private applyFilterPredicate(): void {\n this.dataSource.filterPredicate =\n this.filterModeState() === 'COLUMN_BASED'\n ? DataTableFilterUtil.columnBasedFilterPredicate(this._rowMap)\n : DataTableFilterUtil.tableBasedFilterPredicate();\n this.applyFilterValue(this._filterValue());\n }\n\n private applyFilterValue(value: string | DataTableFilterObject | undefined): void {\n const isString = typeof value === 'string';\n this.dataSource.filter = !!value ? (isString ? value.trim().toLowerCase() : JSON.stringify(value)) : '';\n }\n\n /** PAGINATION HANDLING */\n\n onPageEvent(event: PageEvent): void {\n if (this.useAsync()) {\n this.pageEvent.emit(event);\n }\n\n if (this.effectivePersistenceConfig().persistPageSize) {\n this.persistenceService.savePageSize(this.id(), event.pageSize);\n }\n }\n\n private updatePaginator() {\n const paginator = this.paginator();\n\n if (paginator) {\n paginator.pageSize = this.pageSizeState();\n paginator.page.emit(this.pageState());\n }\n }\n\n /** INIT STATE */\n\n private initState(): void {\n const defaultSort = this.defaultSort();\n const persistenceConfig = this.effectivePersistenceConfig();\n\n // only set default sort if there is no other sort persisted\n if (!!defaultSort && !this.persistenceService.loadSort(this.id())?.direction) {\n this.setSort(defaultSort);\n }\n\n if (persistenceConfig.persistSort) {\n this.initSortState();\n }\n if (persistenceConfig.persistFilter) {\n this.initFilterState();\n }\n if (!!this._filterValue() && typeof this._filterValue() !== 'string') {\n this.filter()?.updateFilterables(this._filterValue() as DataTableFilterObject);\n }\n if (persistenceConfig.persistPageSize) {\n this.initPaginatorState();\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initSortState(): void {\n const sort = this.persistenceService.loadSort(this.id());\n if (!!sort) {\n this.setSort(sort);\n }\n }\n\n private setSort(sort: Sort): void {\n if (!this._sort) {\n this._pendingSort = sort;\n return;\n }\n\n this._pendingSort = null;\n this._sort.active = sort.active;\n this._sort.direction = sort.direction;\n this._sort.sortChange.emit(sort);\n }\n\n private applyPendingSort(): void {\n const pendingSort = this._pendingSort;\n\n if (pendingSort) {\n this.setSort(pendingSort);\n }\n }\n\n private initFilterState(): void {\n const filter = this.persistenceService.loadFilter(this.id());\n this.filter()?.updateFilterables(filter);\n this._filterValue.set(filter);\n this.applyFilterValue(filter);\n }\n\n private initPaginatorState(): void {\n this.pageState.set({\n pageIndex: 0,\n pageSize: this.persistenceService.loadPageSize(this.id()) || this.pageSizeState(),\n length: 0,\n });\n\n this.updatePaginator();\n }\n\n /** COLUMN HANDLING */\n\n onViewDefinition(definition: DataTableColumnDefinition): void {\n this.selectedColumnDefinition.set(definition);\n this.viewDefinitionChangeEvent.emit(definition);\n }\n\n onColumnSettings(definition?: DataTableColumnDefinition): void {\n this._showColumnModal = true;\n this.selectedColumnDefinition.set(definition ? definition : this.columnDefinitions()[0]);\n if (this.allColumns()) {\n this.openColumnModal();\n } else {\n // if no complete definitions have been loaded yet send an event so the app can load it\n this.allColumnsEvent.emit();\n }\n }\n\n isCurrentDefinition(definition: DataTableColumnDefinition): boolean {\n return this.selectedColumnDefinition()?.id === definition.id;\n }\n\n private openColumnModal(): void {\n const dialogData: DataTableDialogData = {\n allColumns: this.allColumns() ?? [],\n definition: this.selectedColumnDefinition(),\n deleteDefinitionAllowed: this.deleteDefinitionAllowed(),\n filterColumnsLabel: this.filterColumnsLabel(),\n filterColumnsPlaceHolder: this.filterColumnsPlaceHolder(),\n noDataText: this.noDataText(),\n titleLabel: this.columnSettingsModalTitleLabel(),\n selectedLabel: this.selectedLabel(),\n availableLabel: this.availableLabel(),\n saveLabel: this.saveLabel(),\n deleteLabel: this.deleteLabel(),\n cancelLabel: this.cancelLabel(),\n infoTextLabel: this.infoTextLabel(),\n };\n const dialog = this.matDialog.open(DataTableColumnsModalComponent, {\n data: dialogData,\n width: '720px',\n maxWidth: 'calc(100vw - 32px)',\n });\n dialog.afterClosed().subscribe((result) => {\n // no event on CANCEL\n if (result) {\n this.columnDefinitionChangeEvent.emit(result);\n }\n });\n }\n\n getFilterBadgeContent(): string {\n if (this.filterModeState() === 'COLUMN_BASED') {\n const count = this.filter()?.getActiveFilterCount();\n return count > 0 ? count.toString() : undefined;\n }\n return undefined;\n }\n\n disableDeleteFilterButton(): boolean {\n return this.filter()?.getActiveFilterCount() === 0;\n }\n}\n","<div data-cy=\"table-action-bar\" class=\"mad-datatable-action-bar flex justify-between items-baseline\">\n <!-- Table actions: displayed before the table -->\n @if (tableActionsState().length || (filterModeState() === 'COLUMN_BASED' && showDeleteFilterAction())) {\n <div>\n @for (actionGroup of tableActionsState(); track actionGroup) {\n <mad-button-group class=\"table-action-group inline-flex align-middle mr-[0.5em] mb-[0.5em] mt-[0.5em]\">\n @for (tableAction of actionGroup; track $index) {\n <mad-outline-button [hidden]=\"isHidden(tableAction)\" [disabled]=\"isDisabled(tableAction)\" (click)=\"onActionEvent(tableAction)\">\n {{ translateLabels() ? (tableAction.label | translate) : tableAction.label }}\n {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n }\n </mad-button-group>\n }\n @if (filterModeState() === 'COLUMN_BASED' && showDeleteFilterAction()) {\n <mad-button-group class=\"table-action-group inline-flex align-middle mr-[0.5em] mb-[0.5em] mt-[0.5em]\">\n <button\n matIconButton\n [matTooltip]=\"'common.filter.delete.tooltip' | translate\"\n [attr.aria-label]=\"'common.filter.delete.tooltip' | translate\"\n matBadgeColor=\"warn\"\n [matBadge]=\"getFilterBadgeContent()\"\n [disabled]=\"disableDeleteFilterButton()\"\n class=\"delete-filter-action mat-primary align-middle\"\n (click)=\"onDeleteFilter()\"\n >\n <mat-icon fontSet=\"material-icons-outlined\" aria-hidden=\"true\"> filter_alt_off </mat-icon>\n </button>\n </mad-button-group>\n }\n </div>\n }\n @if (filterModeState() === 'TABLE_BASED') {\n <mat-form-field data-cy=\"filter-input\">\n <mat-label>{{ translateLabels() ? (filterLabel() | translate) : filterLabel() }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"onTableBasedFilterEvent($event)\" placeholder=\"{{ filterPlaceholder() }}\" />\n </mat-form-field>\n }\n</div>\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n @for (rowAction of rowActionsState(); track rowAction) {\n @if (!isHidden(rowAction)) {\n <button\n data-cy=\"row-action-menu-button\"\n mat-menu-item\n class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\"\n [disabled]=\"isDisabled(rowAction)\"\n >\n {{ translateLabels() ? (rowAction.label | translate) : rowAction.label }}\n </button>\n }\n }\n </ng-template>\n</mat-menu>\n\n<!-- editable definition menu -->\n<mat-menu #editableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (definition of editableColumnDefinitionsState(); track definition) {\n <button\n mat-menu-item\n class=\"row-action\"\n (click)=\"onColumnSettings(definition)\"\n [ngClass]=\"{ 'active-column-definition': isCurrentDefinition(definition) }\"\n >\n {{ translateLabels() ? (definition.label | translate) : definition.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- viewable definition menu -->\n<mat-menu #viewableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n @for (definition of viewableColumnDefinitionsState(); track definition) {\n <button\n mat-menu-item\n class=\"row-action\"\n (click)=\"onViewDefinition(definition)\"\n [ngClass]=\"{ 'active-column-definition': isCurrentDefinition(definition) }\"\n >\n {{ translateLabels() ? (definition.label | translate) : definition.label }}\n </button>\n }\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n@if (filterModeState() === 'COLUMN_BASED' || showEmptyTable() || !!dataSource.filteredData?.length) {\n <div class=\"datatable overflow-auto flex-auto h-full relative w-full\" [class]=\"tableClass()\">\n @if (loading()) {\n <div\n class=\"mad-datatable-spinner-wrapper bg-(--datatable-background) opacity-80 absolute inset-0 w-full h-full flex justify-center items-center z-[99999] [pointer-events:unset]\"\n >\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n }\n <table\n [id]=\"id()\"\n mat-table\n [dataSource]=\"dataSource\"\n matSort\n (matSortChange)=\"onSortingEvent($event)\"\n madFilter\n (madFilterChange)=\"onColumnBasedFilterEvent($event)\"\n [multiTemplateDataRows]=\"!!expandableDef()\"\n >\n <!-- Row actions column-->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\">\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [ngClass]=\"showActionColumn ? 'row-action-cell' : 'no-action-cell'\">\n <!-- BATCH: master checkbox -->\n @if (selectionEmitModeState() !== 'NONE' && selectionModeState() === 'BATCH') {\n <div class=\"mad-datatable-checkbox-container mx-2\">\n <mat-checkbox (change)=\"onToggleSelectAll()\" [checked]=\"allSelected\"></mat-checkbox>\n </div>\n }\n <!-- SINGLE / NONE: nothing in header row -->\n </th>\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"showActionColumn ? 'row-action-cell' : 'no-action-cell'\">\n <!-- BATCH: row checkbox -->\n @if (showCheckbox(element)) {\n <div class=\"mad-datatable-checkbox-container mx-2\" (click)=\"onRowEvent($event, element)\">\n <mat-checkbox class=\"no-pointer-events\" [checked]=\"isSelected(element.rowId)\"></mat-checkbox>\n </div>\n }\n <!-- SINGLE: row action menu icon -->\n @if (showRowActionIcon(element) && hasVisibleRowActions(element)) {\n <mad-icon-button\n data-cy=\"row-action-button\"\n [matMenuTriggerData]=\"{ element: element }\"\n [matMenuTriggerFor]=\"rowActionMenu\"\n (click)=\"onSelectionEvent(element.rowId)\"\n >\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n }\n <!-- SINGLE: row radio button -->\n @if (showRadioButton(element)) {\n <div class=\"mad-datatable-checkbox-container mx-2\" (click)=\"onRowEvent($event, element)\">\n <mat-radio-button class=\"no-pointer-events\" [checked]=\"isSelected(element.rowId)\"></mat-radio-button>\n </div>\n }\n <!-- EXPANDABLE: row is expandable/collapsable -->\n @if (showExpandableButton(element)) {\n <mad-icon-button (click)=\"onExpand($event, element)\">\n @if (expandedElement !== element) {\n <mat-icon>keyboard_arrow_down</mat-icon>\n } @else {\n <mat-icon>keyboard_arrow_up</mat-icon>\n }\n </mad-icon-button>\n }\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Cell definitions and rows with injected cells -->\n @for (column of columnsState(); track column.id) {\n <ng-container [matColumnDef]=\"column.id\">\n <!-- header cell to be injected -->\n @switch (getDataTableHeaderType(column)) {\n @case ('SORT') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mat-sort-header=\"{{ column.orderByName ? column.orderByName : column.dataPropertyName }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n >\n {{ translateLabels() ? (column.label | translate) : column.label }}\n </th>\n }\n @case ('FILTER') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mad-filter-header=\"{{ column.dataPropertyName }}\"\n [madFilterColumnRightAligned]=\"column.isRightAligned\"\n [madFilterOptions]=\"column.filterParams?.filterOptions\"\n >\n {{ translateLabels() ? (column.label | translate) : column.label }}\n </th>\n }\n @case ('SORT_AND_FILTER') {\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n [class.text-right]=\"column.isRightAligned\"\n mat-sort-header=\"{{ column.orderByName ? column.orderByName : column.dataPropertyName }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n mad-filter-header=\"{{ column.dataPropertyName }}\"\n [madFilterColumnRightAligned]=\"column.isRightAligned\"\n [madFilterOptions]=\"column.filterParams?.filterOptions\"\n >\n {{ translateLabels() ? (column.label | translate) : column.label }}\n </th>\n }\n @default {\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ translateLabels() ? (column.label | translate) : column.label }}\n </th>\n }\n }\n\n <!-- data cell to be injected -->\n <td\n mat-cell\n *matCellDef=\"let element\"\n [class.text-right]=\"column.isRightAligned\"\n [class.mad-dt-child-cell]=\"element.parentId\"\n (click)=\"!disableRowClick() && onRowEvent($event, element)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n getCustomCellTemplate(column.id) || defaultCellTemplate;\n context: { column: column, element: element, $implicit: element }\n \"\n ></ng-container>\n </td>\n </ng-container>\n }\n\n <!-- Expanded Content Column - The row is made up of this one column that spans across all columns -->\n @if (!!expandableDef()) {\n <ng-container [matColumnDef]=\"expandableColumnDef\">\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"columnsState().length + 1\">\n <div class=\"mad-data-table-expandable-area\" [class.mad-data-table-expandable-area-expanded]=\"element === expandedElement\">\n <div class=\"mad-data-table-expandable-content\">\n <ng-container\n *ngTemplateOutlet=\"\n getCustomExpandableTemplate() || defaultCellTemplate;\n context: { column: element, element: element, $implicit: element }\n \"\n ></ng-container>\n </div>\n </div>\n </td>\n </ng-container>\n }\n\n <!-- header row where cells will be injected -->\n <tr mat-header-row *matHeaderRowDef=\"columnIdsState()\"></tr>\n <!-- data row where cells will be injected -->\n <tr\n mat-row\n [class.clickable-table-row]=\"!row.parentId && selectionEmitModeState() !== 'NONE'\"\n *matRowDef=\"let row; columns: columnIdsState()\"\n (click)=\"!!expandableColumnDef && onExpand($event, row)\"\n ></tr>\n @if (!!expandableDef()) {\n <tr mat-row *matRowDef=\"let element; columns: [expandableColumnDef]\" class=\"mad-data-table-expandable-row\"></tr>\n }\n <tr class=\"mat-row\" *matNoDataRow>\n <td class=\"mat-cell noDataText columnBasedFilter w-full text-center relative pt-2.5\" [attr.colspan]=\"columnIdsState().length\">\n {{ translateLabels() ? (noDataText() | translate) : noDataText() }}\n </td>\n </tr>\n </table>\n </div>\n} @else {\n <!-- No data alert -->\n <div data-cy=\"no-data-block\" class=\"noDataText w-full text-center relative\">\n @if (loading()) {\n <div\n class=\"mad-datatable-spinner-wrapper bg-(--datatable-background) opacity-80 absolute inset-0 w-full h-full flex justify-center items-center z-[99999] [pointer-events:unset]\"\n >\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n }\n {{ translateLabels() ? (noDataText() | translate) : noDataText() }}\n </div>\n}\n<div data-cy=\"table-bottom-area\" class=\"mad-data-table-bottom-area flex flex-row\">\n <div data-cy=\"definition-button-block\" class=\"mad-data-table-bottom-info-area flex flex-1\">\n <!-- column settings: 1 definition -->\n @if (editableColumnDefinitionsState().length === 1) {\n <mad-icon-button (click)=\"onColumnSettings()\">\n <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n </mad-icon-button>\n }\n <!-- column settings: multiple definitions -->\n @if (editableColumnDefinitionsState().length > 0) {\n <mad-icon-button [matMenuTriggerFor]=\"editableDefinitionMenu\">\n <mat-icon>view_column</mat-icon>\n </mad-icon-button>\n }\n <!-- column view: multiple definitions -->\n @if (viewableColumnDefinitionsState().length > 0) {\n <mad-icon-button [matMenuTriggerFor]=\"viewableDefinitionMenu\">\n <mat-icon>preview</mat-icon>\n </mad-icon-button>\n }\n </div>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"paginationEnabled() ? 'block' : 'none'\"\n [length]=\"pageLengthState()\"\n [pageIndex]=\"pageIndexState()\"\n [pageSize]=\"pageSizeState()\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n (page)=\"onPageEvent($event)\"\n showFirstLastButtons\n >\n </mat-paginator>\n</div>\n\n<!-- default cell template -->\n<ng-template #defaultCellTemplate let-element=\"element\" let-column=\"column\">\n <span>\n {{ element[column.dataPropertyName] }}\n </span>\n</ng-template>\n\n<!-- custom cell templates injected from parent -->\n<ng-content></ng-content>\n","import { Directive, OnDestroy, OnInit, TemplateRef } from '@angular/core';\nimport { DataTableTemplateColumnDefinition } from './data-table-template-column-definition.directive';\n\n@Directive({\n selector: '[madCellDef]',\n standalone: true,\n})\nexport class DataTableTemplateCellDefinition implements OnInit, OnDestroy {\n constructor(\n private templateRef: TemplateRef<any>,\n private columnDef: DataTableTemplateColumnDefinition,\n ) {}\n\n ngOnInit(): void {\n this.columnDef.register(this);\n }\n\n ngOnDestroy(): void {\n this.columnDef.unregister();\n }\n\n getCellTemplate(): TemplateRef<any> {\n return this.templateRef;\n }\n}\n","import { CdkStepHeader } from '@angular/cdk/stepper';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgClass } from '@angular/common';\n\n@Component({\n selector: 'mad-step-header',\n templateUrl: './step-header.component.html',\n styleUrls: ['./step-header.component.scss'],\n inputs: ['color'],\n host: {\n class: 'mad-step-header',\n role: 'tab',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, MatIconModule],\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input()\n stepControl: any;\n\n @Input() errorMessage: string;\n\n @Input() selected: boolean;\n\n @Input() active: boolean;\n\n @Input() optional: boolean;\n\n @Input() hasError: boolean;\n\n @Input() completed: boolean;\n\n @Input() closed: boolean;\n\n constructor(\n private _focusMonitor: FocusMonitor,\n _elementRef: ElementRef<HTMLElement>,\n ) {\n super(_elementRef);\n }\n\n ngAfterViewInit(): void {\n this._focusMonitor.monitor(this._elementRef, true);\n }\n\n ngOnDestroy(): void {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Focuses the step header. */\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\n if (origin) {\n this._focusMonitor.focusVia(this._elementRef, origin, options);\n } else {\n this._elementRef.nativeElement.focus(options);\n }\n }\n\n getCssForState(): string {\n if (this.completed) {\n return 'step-state-complete';\n }\n if (this.hasError) {\n return 'step-state-error';\n }\n return 'step-state-neutral';\n }\n\n getIcon(): string {\n if (this.completed) {\n return 'check_circle_outline';\n } else if (this.hasError) {\n return 'error_outline';\n }\n return '';\n }\n}\n","<div\n class=\"header\"\n [ngClass]=\"{\n 'header-selected': this.selected && !this.closed,\n 'header-default': !this.selected || this.closed,\n 'error-border': this.hasError,\n 'check-border': !this.hasError,\n }\"\n>\n <div [ngClass]=\"this.getCssForState()\"></div>\n <div class=\"header-label\">\n <mat-icon class=\"material-icons-outlined\">\n {{ this.selected && !this.closed ? 'keyboard_arrow_down' : 'keyboard_arrow_right' }}\n </mat-icon>\n </div>\n @if (this.completed || this.hasError) {\n <div class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n }\n @if (!this.hasError && !this.completed) {\n <span data-testid=\"step-number\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\n }\n <div data-testid=\"step-label\" class=\"header-label\">{{ this.label }}</div>\n</div>\n","import { animate, state, style, transition, trigger, AnimationTriggerMetadata } from '@angular/animations';\n\n/**\n * Animations used by the MAD stepper.\n */\nexport const madStepperAnimations: {\n readonly verticalStepTransition: AnimationTriggerMetadata;\n} = {\n verticalStepTransition: trigger('stepTransition', [\n state('previous', style({ height: '0px', visibility: 'hidden' })),\n state('next', style({ height: '0px', visibility: 'hidden' })),\n state('current', style({ height: '*', visibility: 'visible' })),\n transition('* <=> current', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStep, CdkStepper, STEP_STATE, StepContentPositionState } from '@angular/cdk/stepper';\nimport { AnimationEvent } from '@angular/animations';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { madStepperAnimations } from './mad-stepper-animation';\nimport { PrimaryButtonComponent } from '../button/primary-button/primary-button.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-step',\n templateUrl: './step.component.html',\n styleUrls: ['./stepper.component.scss'],\n providers: [{ provide: CdkStep, useExisting: StepComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PrimaryButtonComponent],\n})\nexport class StepComponent extends CdkStep implements AfterContentInit, OnDestroy {\n /** Action event for the next button. If not set the StepComponent will handle the step navigation */\n @Output()\n onNext = new EventEmitter<any>();\n\n /** Action event for the done button. If not set the StepComponent will handle the step navigation */\n @Output()\n onDone = new EventEmitter<any>();\n\n /*** Action event when the header is clicked. If not set the StepComponent will handle the step navigation*/\n @Output()\n onHeaderClick = new EventEmitter<any>();\n\n stepClosed = false;\n\n private _isSelected = Subscription.EMPTY;\n\n constructor(\n @Inject(forwardRef(() => StepperComponent)) private stepper: StepperComponent,\n private _viewContainerRef: ViewContainerRef,\n ) {\n super(stepper);\n }\n\n ngAfterContentInit() {\n this._isSelected = this._stepper.steps.changes\n .pipe(\n switchMap(() =>\n this._stepper.selectionChange.pipe(\n map((event) => event.selectedStep === this),\n tap(() => (this.stepClosed = false)),\n startWith(this._stepper.selected === this),\n ),\n ),\n )\n .subscribe();\n }\n\n ngOnDestroy() {\n this._isSelected.unsubscribe();\n }\n\n next(markFormAsTouched = true): void {\n this.stepValidation(markFormAsTouched);\n\n if (this.onNext.observers.length <= 0) {\n this.stepper.next();\n }\n this.onNext.emit();\n }\n\n selectAndMarkAsTouched(index: number): void {\n //Mark current selected step as touched before selecting to display errors in the from\n this._stepper.selected?.stepControl?.markAllAsTouched();\n this.stepClosed = false;\n if (this.onHeaderClick.observers.length <= 0) {\n this.select();\n }\n this.onHeaderClick.emit(index);\n }\n\n completeLast(): void {\n this.stepValidation(true);\n this.stepClosed = true;\n\n if (this.onDone.observers.length <= 0) {\n this.stepper.next();\n }\n\n this.onDone.emit();\n }\n\n resetValidations(): void {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n }\n\n private stepValidation(markFormAsTouched: boolean): void {\n if (markFormAsTouched) {\n this.stepControl?.markAllAsTouched();\n }\n if (this.stepControl?.valid) {\n this.hasError = false;\n this.completed = true;\n this.state = STEP_STATE.DONE;\n } else {\n this.completed = false;\n this.hasError = true;\n this.state = STEP_STATE.ERROR;\n }\n }\n}\n\n@Component({\n selector: 'mad-stepper',\n templateUrl: './stepper.component.html',\n styleUrls: ['./stepper.component.scss'],\n host: {\n '[class.stepper-vertical]': 'true',\n '[attr.aria-orientation]': '\"vertical\"',\n role: 'tablist',\n },\n animations: [madStepperAnimations.verticalStepTransition],\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet, StepHeaderComponent],\n})\nexport class StepperComponent extends CdkStepper implements OnInit, AfterContentInit {\n /** Event emitted when the current step is done transitioning in. */\n @Output() readonly animationDone: EventEmitter<void> = new EventEmitter<void>();\n\n @Input()\n nextButtonLabel: string;\n\n @Input()\n doneButtonLabel: string;\n /** Step headers of all steps inside the stepper */\n @ViewChildren(StepHeaderComponent) _stepHeader: QueryList<StepHeaderComponent>;\n\n /** Steps inside the Stepper */\n @ContentChildren(StepComponent, { descendants: true }) _steps: QueryList<StepComponent>;\n\n /** Steps that belong to the current stepper, excluding ones from nested steppers. */\n steps: QueryList<StepComponent> = new QueryList<StepComponent>();\n\n readonly _animationDone = new Subject<AnimationEvent>();\n\n constructor(@Optional() dir: Directionality, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef<HTMLElement>) {\n super(dir, changeDetectorRef, elementRef);\n this.orientation = 'vertical';\n }\n\n ngOnInit() {\n // Only linear stepper implementation is supported\n this.linear = true;\n }\n\n ngAfterContentInit() {\n super.ngAfterContentInit();\n\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._stateChanged();\n });\n\n this._animationDone\n .pipe(\n distinctUntilChanged((x, y) => x.fromState === y.fromState && x.toState === y.toState),\n takeUntil(this._destroyed),\n )\n .subscribe((event) => {\n if ((event.toState as StepContentPositionState) === 'current') {\n this.animationDone.emit();\n }\n });\n }\n\n /**\n * Method patched to enable the closing of the last step.\n */\n _getAnimationDirection(index: number): StepContentPositionState {\n const closeLastStep = this.selectedIndex === this.steps.length - 1 && this._steps.last?.completed && this._steps.last?.stepClosed;\n if (closeLastStep) {\n return 'next';\n }\n return super._getAnimationDirection(index);\n }\n\n _stepIsNavigable(index: number, step: StepComponent): boolean {\n return step.completed || this.selectedIndex === index || !this.linear;\n }\n}\n","<ng-template let-last=\"last\" let-nextBtnLbl=\"nextBtnLbl\" let-doneBtnLbl=\"doneBtnLbl\">\n <div class=\"step-container\">\n <div class=\"step-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"step-buttons\">\n @if (last) {\n <div>\n <mad-primary-button data-cy=\"complete-step-button\" (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n } @else {\n <div>\n <mad-primary-button data-cy=\"next-step-button\" (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n }\n </div>\n </div>\n</ng-template>\n","<!-- Vertical stepper -->\n<ng-container>\n @for (step of steps; track step; let i = $index; let isLast = $last; let isFirst = $first) {\n <div data-cy=\"step-container\">\n <ng-container [ngTemplateOutlet]=\"stepTemplate\" [ngTemplateOutletContext]=\"{ step: step, i: i }\"></ng-container>\n <div class=\"vertical-content-container\" [class.mat-stepper-vertical-line]=\"!isLast\">\n <div\n class=\"vertical-stepper-content\"\n role=\"tabpanel\"\n [@stepTransition]=\"_getAnimationDirection(i)\"\n (@stepTransition.done)=\"_animationDone.next($event)\"\n [id]=\"_getStepContentId(i)\"\n [attr.aria-labelledby]=\"_getStepLabelId(i)\"\n [attr.aria-expanded]=\"selectedIndex === i\"\n >\n <div data-cy=\"stepper-content\">\n <ng-container\n [ngTemplateOutlet]=\"step.content\"\n [ngTemplateOutletContext]=\"{\n step: step,\n i: i,\n last: isLast,\n first: isFirst,\n nextBtnLbl: this.nextButtonLabel,\n doneBtnLbl: this.doneButtonLabel,\n }\"\n ></ng-container>\n </div>\n </div>\n </div>\n </div>\n }\n</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\n [stepControl]=\"step.stepControl\"\n (click)=\"step.selectAndMarkAsTouched(i)\"\n (keydown)=\"_onKeydown($event)\"\n [tabIndex]=\"_getFocusIndex() === i ? 0 : -1\"\n [id]=\"_getStepLabelId(i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"steps.length\"\n [attr.aria-controls]=\"_getStepContentId(i)\"\n [attr.aria-selected]=\"selectedIndex == i\"\n [attr.aria-label]=\"step.ariaLabel || null\"\n [attr.aria-labelledby]=\"!step.ariaLabel && step.ariaLabelledby ? step.ariaLabelledby : null\"\n [attr.aria-disabled]=\"_stepIsNavigable(i, step) ? null : true\"\n [index]=\"i\"\n [hasError]=\"!!step.stepControl && step.stepControl.invalid && (step.stepControl.touched || step.stepControl.dirty)\"\n [completed]=\"!!step.stepControl && step.stepControl.valid && (step.stepControl.touched || step.stepControl.dirty)\"\n [label]=\"step.stepLabel || step.label\"\n [selected]=\"selectedIndex === i\"\n [active]=\"_stepIsNavigable(i, step)\"\n [optional]=\"step.optional\"\n [closed]=\"step.stepClosed\"\n [errorMessage]=\"step.errorMessage\"\n ></mad-step-header>\n</ng-template>\n","import { StepComponent, StepperComponent } from './stepper.component';\nimport { StepHeaderComponent } from './step-header/step-header.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { NgModule } from '@angular/core';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { ButtonModule } from '../button/button.module';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n CdkStepperModule,\n ButtonModule,\n StepperComponent,\n StepHeaderComponent,\n StepComponent,\n ],\n exports: [StepperComponent, StepHeaderComponent, StepComponent],\n})\nexport class StepperModule {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-header',\n templateUrl: './content-header.component.html',\n styleUrls: ['./content-header.component.scss'],\n standalone: true,\n})\nexport class ContentHeaderComponent {}\n","<div class=\"content-header\">\n <ng-content></ng-content>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container',\n templateUrl: './content-panel-container.component.html',\n styleUrls: ['./content-panel-container.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerComponent {}\n","<div class=\"content-panel-sidebar-wrapper\">\n <ng-content select=\"mad-content-panel-container-sidebar\"></ng-content>\n <div class=\"content-panel-outer-wrapper\">\n <ng-content select=\"mad-content-panel-container-content\"></ng-content>\n <ng-content select=\"mad-content-panel-container-footer\"></ng-content>\n </div>\n</div>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-content',\n templateUrl: './content-panel-container-content.component.html',\n styleUrls: ['./content-panel-container-content.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerContentComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-footer',\n templateUrl: './content-panel-container-footer.component.html',\n styleUrls: ['./content-panel-container-footer.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerFooterComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-content-panel-container-sidebar',\n templateUrl: './content-panel-container-sidebar.component.html',\n styleUrls: ['./content-panel-container-sidebar.component.scss'],\n standalone: true,\n})\nexport class ContentPanelContainerSidebarComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'mad-main-container',\n templateUrl: './main-container.component.html',\n styleUrls: ['./main-container.component.scss'],\n standalone: true,\n})\nexport class MainContainerComponent {}\n","<div class=\"main-container\">\n <ng-content select=\"mad-content-header\"></ng-content>\n <ng-content select=\"mad-flowbar\"></ng-content>\n <ng-content select=\"mad-content-panel-container\"></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ContentHeaderComponent } from './content-header/content-header.component';\nimport { ContentPanelContainerComponent } from './content-panel-container/content-panel-container.component';\nimport { ContentPanelContainerContentComponent } from './content-panel-container-content/content-panel-container-content.component';\nimport { ContentPanelContainerFooterComponent } from './content-panel-container-footer/content-panel-container-footer.component';\nimport { ContentPanelContainerSidebarComponent } from './content-panel-container-sidebar/content-panel-container-sidebar.component';\n\nimport { MainContainerComponent } from './main-container/main-container.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n ContentPanelContainerSidebarComponent,\n MainContainerComponent,\n ],\n exports: [\n ContentHeaderComponent,\n ContentPanelContainerComponent,\n ContentPanelContainerContentComponent,\n ContentPanelContainerFooterComponent,\n ContentPanelContainerSidebarComponent,\n MainContainerComponent,\n ],\n})\nexport class ContentPanelModule {}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\n\nexport interface IStep {\n label: string;\n enabled?: boolean;\n subSteps?: IStep[];\n activeSubStep?: IStep;\n}\n\n@Component({\n selector: 'mad-flowbar',\n templateUrl: './flowbar.component.html',\n styleUrls: ['./flowbar.component.scss'],\n imports: [MatStepperModule],\n})\nexport class FlowbarComponent implements OnInit {\n @Input('steps') _steps: IStep[] = [];\n @Input('activeStep') _activeStep: IStep;\n @Output('activeStepChange') _activeStepChange: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n /**\n * Event emitted when a step header is clicked.\n * When defined header navigation has to be implemented programmatically.\n * e.g. {@see changeActiveStepOnHeader}\n */\n @Output('headerClick') _headerClick: EventEmitter<IStep> = new EventEmitter<IStep>(true);\n @ViewChild('stepper') private stepper: MatStepper;\n\n get currentStepLabel(): string {\n return this._activeStep.label;\n }\n\n get currentSubStepLabel(): string {\n return this._activeStep.activeSubStep?.label;\n }\n\n ngOnInit(): void {\n // If no active step is set as input or the active step is not enabled, select the first enabled step\n if (!this._activeStep || !this._activeStep.enabled) {\n this._activeStep = this._steps.find((step) => step.enabled);\n if (this._activeStep) {\n // If sub steps exist then set the first non disabled sub step per default\n if (this.activeTabHasSubSteps()) {\n this._activeStep.activeSubStep = this._activeStep.subSteps.find((step) => step.enabled);\n }\n this._activeStepChange.emit(this._activeStep);\n }\n }\n }\n\n getIndexForActiveStep(): number {\n const selectedIndex = this._steps.indexOf(this._activeStep);\n return selectedIndex === -1 ? 0 : selectedIndex;\n }\n\n changeActiveStep(step: IStep): void {\n const previousIndex = this._steps.indexOf(this._activeStep);\n this._activeStep = step;\n if (this.activeTabHasSubSteps()) {\n if (previousIndex < this._steps.indexOf(this._activeStep)) {\n this._activeStep.activeSubStep = this._activeStep.subSteps[0];\n } else {\n this._activeStep.activeSubStep = this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n }\n this._activeStepChange.emit(this._activeStep);\n }\n\n changeActiveStepOnHeader(step: IStep): void {\n const stepIndex = this._steps.indexOf(step);\n this._activeStep = step;\n this.stepper.selected = this.stepper._steps.find((_, i) => i === stepIndex);\n }\n\n changeActiveSubStep(subStep: IStep): void {\n this._activeStep.activeSubStep = subStep;\n }\n\n previous(): void {\n if (this.isPreviousAvailable()) {\n // If active step has no sub steps or first sub step is selected -> go to previous main step\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const previousEnabledStep = this.findPreviousEnabledStep();\n this.changeActiveStep(previousEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(previousEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex - 1];\n }\n }\n }\n\n next(): void {\n if (this.isNextAvailable()) {\n // If active step has no sub steps or last sub step is selected -> go to next main step\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const nextEnabledStep = this.findNextEnabledStep();\n this.changeActiveStep(nextEnabledStep);\n this.stepper.selectedIndex = this._steps.indexOf(nextEnabledStep);\n } else {\n const subStepIndex = this._activeStep.subSteps.indexOf(this._activeStep.activeSubStep);\n this._activeStep.activeSubStep = this._activeStep.subSteps[subStepIndex + 1];\n }\n }\n }\n\n isPreviousAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isFirstSubStep()) {\n const index = this.getCurrentIndex();\n return index > 0 && this.isAnyPreviousStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isNextAvailable(): boolean {\n if (this._activeStep) {\n if (!this.activeTabHasSubSteps() || this.isLastSubStep()) {\n const index = this.getCurrentIndex();\n return index < this._steps.length - 1 && this.isAnyFollowingStepEnabled(index);\n } else {\n return true;\n }\n }\n return false;\n }\n\n isLastStep(): boolean {\n if (this.getCurrentIndex() === this._steps.length - 1) {\n if (this.activeTabHasSubSteps()) {\n return this.isLastSubStep();\n } else {\n return true;\n }\n }\n return false;\n }\n\n getCurrentIndex(): number {\n return this._steps.findIndex((value) => value === this._activeStep);\n }\n\n getCurrentSubStepIndex(): number {\n return this._activeStep.subSteps.findIndex((value) => value === this._activeStep.activeSubStep);\n }\n\n triggerClick(): void {\n const selectedStep = this._steps[this.stepper.selectedIndex];\n this.changeActiveStep(selectedStep);\n }\n\n headerClick(event: any, step: IStep): void {\n event.stopPropagation(); //stop processing current header click event\n this._headerClick.emit(step);\n }\n\n private activeTabHasSubSteps(): boolean {\n return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;\n }\n\n private isFirstSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[0];\n }\n\n private isLastSubStep(): boolean {\n return this._activeStep.activeSubStep === this._activeStep.subSteps[this._activeStep.subSteps.length - 1];\n }\n\n private isAnyPreviousStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(0, index).find((step) => step.enabled) !== undefined;\n }\n\n private isAnyFollowingStepEnabled(index: number): boolean {\n // eslint-disable-next-line id-blacklist\n return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled) !== undefined;\n }\n\n private findPreviousEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps\n .slice(0, index)\n .reverse()\n .find((step) => step.enabled);\n }\n\n private findNextEnabledStep(): IStep {\n const index = this.getCurrentIndex();\n return this._steps.slice(index + 1, this._steps.length).find((step) => step.enabled);\n }\n}\n","<div class=\"stepper-container\">\n <mat-horizontal-stepper #stepper [selectedIndex]=\"this.getIndexForActiveStep()\" (click)=\"triggerClick()\">\n <!-- Always show numbers -->\n <ng-template matStepperIcon=\"number\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <!-- Replace edit/done/error with the same number -->\n <ng-template matStepperIcon=\"edit\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <ng-template matStepperIcon=\"done\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n <ng-template matStepperIcon=\"error\" let-index=\"index\">\n {{ index + 1 }}\n </ng-template>\n\n @for (step of _steps; track step) {\n <mat-step [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n @if (this._headerClick.observers.length > 0) {\n <div class=\"step-header-overlay\" (click)=\"headerClick($event, step)\"></div>\n }\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\n }\n </mat-horizontal-stepper>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { FlowbarComponent } from './flowbar.component';\n\n@NgModule({\n imports: [CommonModule, MatStepperModule, FlowbarComponent],\n exports: [FlowbarComponent],\n})\nexport class FlowbarModule {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n selector: '[madCarouselShortText]',\n})\nexport class CarouselShortTextDirective {\n text = input<string>('', { alias: 'madCarouselShortText' });\n}\n","import { Directive, HostBinding, inject } from '@angular/core';\nimport { CarouselComponent } from '../carousel.component';\n\n@Directive({\n selector: '[madCarouselSlide]',\n})\nexport class CarouselSlideDirective {\n private readonly carousel = inject(CarouselComponent);\n\n @HostBinding('class')\n get hostClasses(): string {\n const loop = !!this.carousel.options()?.loop;\n const base = 'flex min-w-0 min-h-fit flex-[0_0_100%] items-center justify-center';\n const border = this.carousel.useSlideBorder() ? ' border border-gray-400' : '';\n const loopMargin = loop ? ' ml-4' : '';\n return base + border + loopMargin;\n }\n\n @HostBinding('style.height')\n get hostHeight(): string {\n return this.carousel.slideHeight();\n }\n\n @HostBinding('style.border-radius')\n get hostBorderRadius(): string {\n return this.carousel.slideBorderRadius();\n }\n}\n","import { Component, computed, contentChildren, effect, ElementRef, input, InputSignal, signal, viewChild } from '@angular/core';\nimport EmblaCarousel, { EmblaCarouselType, EmblaOptionsType } from 'embla-carousel';\nimport { CarouselShortTextDirective } from './carousel-short-text-directive/carousel-short-text.directive';\nimport { CarouselSlideDirective } from './carousel-slide-directive/carousel-slide.directive';\n\n@Component({\n selector: 'mad-carousel',\n templateUrl: './carousel.component.html',\n styleUrls: ['./carousel.component.scss'],\n imports: [],\n})\nexport class CarouselComponent {\n readonly shortTexts = contentChildren(CarouselShortTextDirective);\n readonly slides = contentChildren(CarouselSlideDirective);\n readonly options: InputSignal<EmblaOptionsType | undefined> = input<EmblaOptionsType | undefined>(undefined);\n readonly width = input<string>('50%');\n readonly slideHeight = input<string>('12rem');\n readonly slideBorderRadius = input<string>('5px');\n readonly useSlideBorder = input<boolean>(true);\n\n protected readonly viewportRef = viewChild<ElementRef<HTMLElement>>('viewport');\n protected readonly containerRef = viewChild<ElementRef<HTMLElement>>('container');\n\n protected readonly selectedIndex = signal(0);\n protected readonly scrollSnaps = signal<number[]>([]);\n protected readonly prevBtnDisabled = signal(true);\n protected readonly nextBtnDisabled = signal(true);\n protected readonly containerLoopClass = computed(() => (this.options()?.loop ? '-mr-4' : ''));\n private emblaApi?: EmblaCarouselType;\n\n constructor() {\n effect(() => this.initEmbla());\n effect(() => {\n const slideCount = this.slides().length;\n if (slideCount > 0) {\n this.validateShortTexts(slideCount);\n }\n });\n }\n\n private initEmbla() {\n this.emblaApi = EmblaCarousel(this.viewportRef().nativeElement, this.options());\n\n this.onInit();\n this.onSelect();\n\n this.emblaApi.on('select', () => this.onSelect());\n this.emblaApi.on('reInit', () => {\n this.onInit();\n this.onSelect();\n });\n }\n\n private validateShortTexts(slideCount: number) {\n const shortTextCount = this.shortTexts().length;\n if (shortTextCount > 0 && shortTextCount !== slideCount) {\n console.error(\n `Found ${slideCount} slides but only ${shortTextCount} slides provide the \\`carouselShortText\\` directive! Make sure that either none, or all slides provide this value!`,\n );\n }\n }\n\n protected onInit(): void {\n if (!this.emblaApi) return;\n this.selectedIndex.set(this.emblaApi.selectedScrollSnap());\n this.scrollSnaps.set(this.emblaApi.scrollSnapList());\n this.prevBtnDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextBtnDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n protected onSelect(): void {\n if (!this.emblaApi) return;\n\n this.selectedIndex.set(this.emblaApi.selectedScrollSnap());\n this.prevBtnDisabled.set(!this.emblaApi.canScrollPrev());\n this.nextBtnDisabled.set(!this.emblaApi.canScrollNext());\n }\n\n protected scrollNext(): void {\n this.emblaApi?.scrollNext();\n }\n\n protected scrollPrev(): void {\n this.emblaApi?.scrollPrev();\n }\n\n protected scrollTo(index: number): void {\n this.emblaApi?.scrollTo(index);\n }\n}\n","<div class=\"h-fit min-w-fit\" [style.width]=\"width()\">\n <div class=\"flex flex-row items-center justify-center gap-4\">\n <button\n class=\"bg-(--carousel-button-background-color) cursor-pointer hover:border-[0.1rem] hover:border-(--carousel-button-border-color) w-7 h-7 rounded-full flex items-center justify-center disabled:opacity-50 disabled:hover:border-0 disabled:cursor-not-allowed\"\n [disabled]=\"prevBtnDisabled()\"\n (click)=\"scrollPrev()\"\n >\n <span class=\"material-symbols-outlined\">chevron_left</span>\n </button>\n\n <div class=\"flex-1 w-0 min-w-0 overflow-hidden\" #viewport>\n <div class=\"flex flex-row gap-4 w-full touch-pan-y touch-pinch-zoom\" [class]=\"containerLoopClass()\" #container>\n <ng-content></ng-content>\n </div>\n </div>\n\n <button\n class=\"bg-(--carousel-button-background-color) cursor-pointer hover:border-[0.1rem] hover:border-(--carousel-button-border-color) w-7 h-7 rounded-full flex items-center justify-center disabled:opacity-50 disabled:hover:border-0 disabled:cursor-not-allowed\"\n [disabled]=\"nextBtnDisabled()\"\n (click)=\"scrollNext()\"\n >\n <span class=\"material-symbols-outlined\">chevron_right</span>\n </button>\n </div>\n\n @let slideTexts = shortTexts();\n @let shouldDisplaySlideText = slideTexts.length > 0;\n <div class=\"flex gap-4 height-8 padding-x-4 mt-5 justify-center\">\n @for (snap of scrollSnaps(); let i = $index; track snap) {\n <button\n (click)=\"scrollTo(i)\"\n class=\"inline-flex items-center justify-center rounded-full border border-[0.1rem] border-(--carousel-dots-border-color) cursor-pointer hover:border-(carousel-dots-hover-border-color) transition-transform mx-w-6 max-h-6\"\n [class.scale-120]=\"i === selectedIndex()\"\n [class.border-gray-950]=\"i === selectedIndex()\"\n [class.py-1]=\"shouldDisplaySlideText\"\n [class.px-2]=\"shouldDisplaySlideText\"\n [class.size-4]=\"!shouldDisplaySlideText\"\n >\n @if (shouldDisplaySlideText) {\n {{ slideTexts[i]?.text() }}\n }\n </button>\n }\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'mad-sidebar',\n templateUrl: './sidebar.component.html',\n styleUrls: ['./sidebar.component.scss'],\n imports: [MatButtonModule, MatIconModule],\n})\nexport class SidebarComponent {\n @Input() collapsed = false;\n\n toggleCollapse() {\n this.collapsed = !this.collapsed;\n }\n}\n","<div [class.collapsed]=\"collapsed\" class=\"sidebar-wrapper\">\n <div class=\"sidebar-header\">\n <button (click)=\"toggleCollapse()\" color=\"basic\" mat-button>\n <mat-icon>{{ collapsed ? 'keyboard_double_arrow_right' : 'keyboard_double_arrow_left' }}</mat-icon>\n </button>\n </div>\n <div class=\"item-list\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: '[mad-sidebar-item]',\n templateUrl: 'sidebar-item.component.html',\n styleUrls: ['sidebar-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class SidebarItemComponent {}\n","<span class=\"content-wrapper\">\n <ng-content></ng-content>\n</span>\n<span class=\"focus-overlay\"></span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SidebarComponent } from './sidebar.component';\nimport { SidebarItemComponent } from './sidebar-item/sidebar-item.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n exports: [SidebarComponent, SidebarItemComponent],\n imports: [CommonModule, MatIconModule, MatButtonModule, SidebarComponent, SidebarItemComponent],\n})\nexport class SidebarModule {}\n","import { Component, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { CommonModule, Location } from '@angular/common';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { ContentPanelModule } from '../content-panel/content-panel.module';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router, RouterModule } from '@angular/router';\n\n@Component({\n selector: 'mad-sidebar-layout',\n templateUrl: './sidebar-layout.component.html',\n styleUrl: './sidebar-layout.component.scss',\n imports: [CommonModule, ContentPanelModule, PortalModule, MatIconModule, RouterModule],\n})\nexport class SidebarLayoutComponent {\n @Input() title: string = '';\n @Input() hasBackButton = true;\n @Input() titleTemplate: TemplateRef<unknown> | null;\n\n @Input({ required: true }) set sideBarItems(ref: TemplateRef<unknown>) {\n this.sideBarItemsPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n sideBarItemsPortal?: TemplatePortal<unknown>;\n\n @Input() set headerContent(ref: TemplateRef<unknown>) {\n this.headerContentPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n headerContentPortal?: TemplatePortal<unknown>;\n\n @Input() set actionGroup(ref: TemplateRef<unknown>) {\n this.actionGroupPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n actionGroupPortal?: TemplatePortal<unknown>;\n\n @Input({ required: true }) set content(ref: TemplateRef<unknown>) {\n this.contentPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n contentPortal?: TemplatePortal<unknown>;\n\n @Input() set footer(ref: TemplateRef<unknown>) {\n this.footerPortal = new TemplatePortal(ref, this._viewContainerRef);\n }\n\n footerPortal?: TemplatePortal<unknown>;\n\n constructor(\n private _viewContainerRef: ViewContainerRef,\n private router: Router,\n private location: Location,\n ) {}\n\n public goToPreviousPage(): void {\n this.location.back();\n }\n}\n","<mad-main-container class=\"w-full\">\n <mad-content-header>\n @if (headerContentPortal) {\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n } @else {\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n @if (hasBackButton) {\n <button class=\"back-button\">\n <mat-icon (click)=\"goToPreviousPage()\" class=\"mat-primary\"> arrow_back</mat-icon>\n </button>\n }\n @if (titleTemplate) {\n <ng-container *ngTemplateOutlet=\"titleTemplate\"></ng-container>\n } @else {\n <h2 class=\"title\">{{ title }}</h2>\n }\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n }\n </mad-content-header>\n <mad-content-panel-container>\n @if (sideBarItemsPortal) {\n <mad-content-panel-container-sidebar>\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n }\n @if (contentPortal) {\n <mad-content-panel-container-content>\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n }\n @if (footerPortal) {\n <mad-content-panel-container-footer>\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\n }\n </mad-content-panel-container>\n</mad-main-container>\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, Params, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ToolbarService implements OnDestroy {\n backAction: BackAction;\n mainActions: MainAction[] = []; // shown on the left, next to title, as big buttons\n toolbarActions: ToolbarAction[] = []; // shown on the right as icons\n toolbarActionsAlwaysAsMenu = false; // show the mobile view (burger menu) for toolbar actions\n dataTitle: string;\n routerSubscription: Subscription;\n private title: string;\n private toolbarActionsMenuTitle = 'More'; // title of the burger menu\n\n private currentUrl: string;\n\n constructor(\n private router: Router,\n private translate: TranslateService,\n ) {\n this.routerSubscription = this.router.events.subscribe((routingEvent) => {\n if (routingEvent instanceof NavigationEnd) {\n if (this.currentUrl !== routingEvent.urlAfterRedirects) {\n this.clearToolbarActions();\n this.clearMainActions();\n delete this.backAction;\n delete this.dataTitle;\n }\n this.currentUrl = router.url;\n }\n });\n }\n\n get toolbarTitle(): string {\n return this.title;\n }\n\n set toolbarTitle(toolbarTitle: string) {\n this.title = toolbarTitle;\n }\n\n ngOnDestroy(): void {\n if (this.routerSubscription) {\n this.routerSubscription.unsubscribe();\n }\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarActions;\n }\n\n addToolbarAction(action: ToolbarAction): void {\n this.translate\n .get(action.i18nActionKey)\n .toPromise()\n .then((translated) => {\n action.actionName = translated;\n this.toolbarActions.push(action);\n });\n }\n\n setDataTitle(dataTitle: string): void {\n this.dataTitle = dataTitle;\n }\n\n setToolbarActionsAlwaysAsMenu(toolbarActionsAlwaysAsMenu: boolean): void {\n this.toolbarActionsAlwaysAsMenu = toolbarActionsAlwaysAsMenu;\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarActionsAlwaysAsMenu;\n }\n\n getDataTitle(): string {\n return this.dataTitle;\n }\n\n clearToolbarActions(): void {\n this.toolbarActions = [];\n }\n\n getMainActions(): MainAction[] {\n return this.mainActions;\n }\n\n getBackAction(): BackAction {\n return this.backAction;\n }\n\n setToolbarActionsMenuTitle(toolbarActionsMenuTitle: string): void {\n this.toolbarActionsMenuTitle = toolbarActionsMenuTitle;\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarActionsMenuTitle;\n }\n\n addMainAction(mainAction: MainAction): void {\n this.translate\n .get(mainAction.i18nActionKey)\n .toPromise()\n .then((translated) => {\n mainAction.actionName = translated;\n this.mainActions.push(mainAction);\n });\n }\n\n /**\n * Per default the goBackRoute is a routerLink. But if a href should be used (for absolute browser routing) then isAbsoluteUrl can be set to true.\n */\n addBackAction(goBackRoute: string, isAbsoluteUrl = false): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n };\n if (!isAbsoluteUrl) {\n this.backAction.routerLink = goBackRoute;\n } else {\n this.backAction.href = goBackRoute;\n }\n }\n\n /**\n * Only supports routerLink (no href), but with additional query parameters\n */\n addBackActionRoute(goBackRoute: string, queryParams?: Params): void {\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n routerLink: goBackRoute,\n queryParams: queryParams || {},\n };\n }\n\n addSimpleBackButton(overrideIfPresent = false): void {\n if (this.getBackAction() && !overrideIfPresent) {\n return;\n }\n\n this.backAction = {\n matIcon: 'keyboard_backspace',\n i18nActionKey: '',\n action(): void {\n window.history.back();\n },\n };\n }\n\n clearMainActions(): void {\n this.mainActions = [];\n }\n}\n","import { Component } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ToolbarService } from './toolbar.service';\nimport { Observable, of } from 'rxjs';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { Action, BackAction, MainAction, ToolbarAction } from './toolbar-action.interface';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { IconButtonComponent } from '../../button/icon-button/icon-button.component';\nimport { MaterialActionButtonComponent } from '../../material-action-button/material-action-button.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { PrimaryButtonComponent } from '../../button/primary-button/primary-button.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { AsyncPipe } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n selector: 'mad-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.scss'],\n host: {\n class: 'mad-toolbar',\n },\n imports: [\n MatToolbarModule,\n RouterLink,\n MatButtonModule,\n MatIconModule,\n PrimaryButtonComponent,\n MatTooltipModule,\n MaterialActionButtonComponent,\n IconButtonComponent,\n MatBadgeModule,\n MatMenuModule,\n AsyncPipe,\n ],\n})\nexport class ToolbarComponent {\n isHandset$: Observable<boolean> = this.breakpointObserver.observe([Breakpoints.Handset]).pipe(map((result) => result.matches));\n\n constructor(\n private breakpointObserver: BreakpointObserver,\n private titleService: Title,\n private toolbarService: ToolbarService,\n ) {}\n\n getTitle(): string {\n const dataTitle = this.toolbarService.getDataTitle();\n const toolbarTitle = this.toolbarService.toolbarTitle;\n const title = !toolbarTitle || toolbarTitle.length <= 0 ? this.titleService.getTitle() : toolbarTitle;\n return !dataTitle || dataTitle.length <= 0 ? title : title + ': ' + dataTitle;\n }\n\n getToolbarActions(): ToolbarAction[] {\n return this.toolbarService.getToolbarActions();\n }\n\n getMainActions(): MainAction[] {\n return this.toolbarService.getMainActions();\n }\n\n hasPermission(action: Action): Observable<boolean> {\n if (!action || !action.showIf) {\n return of(true);\n }\n return action.showIf;\n }\n\n isRouterLink(action: BackAction | MainAction): boolean {\n return action && !!action.routerLink;\n }\n\n isAbsoluteLink(action: BackAction): boolean {\n return action && !!action.href;\n }\n\n isAction(action: BackAction | MainAction): boolean {\n return action && !!action.action;\n }\n\n getBackAction(): BackAction {\n return this.toolbarService.getBackAction();\n }\n\n getToolbarActionsAlwaysAsMenu(): boolean {\n return this.toolbarService.getToolbarActionsAlwaysAsMenu();\n }\n\n getToolbarActionsMenuTitle(): string {\n return this.toolbarService.getToolbarActionsMenuTitle();\n }\n\n showBadgeForMenu(): boolean {\n return (\n this.getToolbarActions()\n .slice(1) // the first icon is not shown in menu\n .filter((value) => value.badge && value.badge.value).length > 0\n );\n }\n\n hasImportantToolbarActions(): boolean {\n return this.getToolbarActions().filter((value) => !!value.importantAction).length > 0;\n }\n}\n","<mat-toolbar class=\"content-toolbar\">\n @if (isRouterLink(getBackAction())) {\n <a data-cy=\"back-link-button\" [routerLink]=\"getBackAction().routerLink\" [queryParams]=\"getBackAction().queryParams\">\n <button [id]=\"'go-back'\" class=\"mat-primary go-back-button\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n @if (isAbsoluteLink(getBackAction())) {\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\">\n <button [id]=\"'go-back'\" class=\"go-back-button mat-primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n @if (isAction(getBackAction())) {\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\">\n <button [id]=\"'go-back'\" class=\"mat-primary go-back-button\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n }\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n @for (mainAction of getMainActions(); track mainAction; let i = $index) {\n @if (hasPermission(mainAction) | async) {\n @if (!(isHandset$ | async)) {\n <div>\n @if (isRouterLink(mainAction)) {\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n }\n @if (isAction(mainAction)) {\n <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\" [matTooltip]=\"mainAction.tooltip\">\n <div class=\"action-button-content-container\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </div>\n </mad-primary-button>\n </a>\n }\n </div>\n }\n @if (isHandset$ | async) {\n <div>\n @if (isRouterLink(getBackAction())) {\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n />\n }\n @if (isAction(getBackAction())) {\n <mad-material-action-button\n data-cy=\"material-main-action-button\"\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n (click)=\"mainAction.action()\"\n [id]=\"mainAction.matIcon\"\n />\n }\n </div>\n }\n }\n }\n\n <div class=\"right-aligned no-print\">\n @for (action of getToolbarActions(); track action; let i = $index) {\n @if (hasPermission(action) | async) {\n @if (\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n ) {\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\"\n >\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon\n >\n </mad-icon-button>\n }\n }\n }\n\n @if ((isHandset$ | async) || getToolbarActionsAlwaysAsMenu()) {\n @if (getToolbarActions().length > 2) {\n <mad-icon-button data-cy=\"burger-button\" type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '⁠' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print toolbar-menu\">\n @for (action of getToolbarActions(); track action; let i = $index) {\n @if (!action.importantAction) {\n @if (hasPermission(action) | async) {\n @if (i >= (hasImportantToolbarActions() ? 0 : 1)) {\n <button data-cy=\"burger-menu-button\" mat-menu-item (click)=\"action.action()\" [title]=\"action.actionName\">\n <mat-icon\n class=\"mat-primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n }\n }\n }\n }\n </mat-menu>\n }\n }\n </div>\n</mat-toolbar>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { ToolbarComponent } from './toolbar.component';\nimport { MaterialActionButtonModule } from '../../material-action-button/material-action-button.module';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ButtonModule } from '../../button/button.module';\nimport { MatBadgeModule } from '@angular/material/badge';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n MatMenuModule,\n MatButtonModule,\n MatToolbarModule,\n MatIconModule,\n MaterialActionButtonModule,\n MatTooltipModule,\n ButtonModule,\n MatBadgeModule,\n ToolbarComponent,\n ],\n exports: [ToolbarComponent],\n})\nexport class ToolbarModule {}\n","import { NgModule } from '@angular/core';\nimport { ToolbarModule } from './layout/toolbar/toolbar.module';\nimport { ReadOnlyFormFieldModule } from './readonly/readonly-form-field.module';\nimport { MaterialActionButtonModule } from './material-action-button/material-action-button.module';\nimport { NumericFieldModule } from './numeric-field/numeric-field.module';\nimport { CardModule } from './card/card.module';\nimport { QuickListModule } from './quick-list/quick-list.module';\nimport { ButtonModule } from './button/button.module';\nimport { ThrottleClickModule } from './throttle-click/throttle-click.module';\nimport { SidebarModule } from './layout/sidebar/sidebar.module';\nimport { CarouselComponent } from './carousel/carousel.component';\nimport { CarouselShortTextDirective } from './carousel/carousel-short-text-directive/carousel-short-text.directive';\nimport { CarouselSlideDirective } from './carousel/carousel-slide-directive/carousel-slide.directive';\n\n@NgModule({\n imports: [CarouselComponent, CarouselShortTextDirective, CarouselSlideDirective],\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n SidebarModule,\n CarouselComponent,\n CarouselShortTextDirective,\n CarouselSlideDirective,\n ],\n})\nexport class MaterialAddonsModule {}\n","import { Directive, HostBinding, HostListener, output } from '@angular/core';\n\n@Directive({\n selector: '[madDragAndDrop]',\n})\nexport class DragAndDropDirective {\n @HostBinding('style.background-color')\n protected backgroundColor = '$background-color';\n\n @HostBinding('style.opacity')\n protected opacity = '1';\n\n onFileDropped = output<FileList>();\n\n @HostListener('dragover', ['$event'])\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.backgroundColor = '$selection-background';\n this.opacity = '0.8';\n }\n\n @HostListener('dragleave', ['$event'])\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resetStyles();\n }\n\n @HostListener('drop', ['$event'])\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.resetStyles();\n\n const files = event.dataTransfer?.files;\n if (files?.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n\n private resetStyles(): void {\n this.backgroundColor = '$background-color';\n this.opacity = '1';\n }\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\n\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '../button/button.module';\nimport { DragAndDropDirective } from './drag-and-drop.directive';\nimport { MatChipsModule } from '@angular/material/chips';\n\nexport type UploadError = 'ONLY_SINGLE_FILE' | 'FILETYPE_NOT_SUPPORTED';\n\n@Component({\n selector: 'mad-file-upload',\n imports: [MatCardModule, MatIconModule, ButtonModule, TranslateModule, DragAndDropDirective, MatChipsModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss',\n})\nexport class FileUploadComponent {\n id = input<string>('');\n multiple = input<boolean>(false);\n accept = input<string[]>([]);\n text = input<string>('');\n showFileList = input<boolean>(false);\n removable = input<boolean>(true);\n\n fileEmitter = output<FileList>();\n errorEmitter = output<UploadError>();\n\n protected readonly fileList = signal<File[]>([]);\n protected readonly acceptedFileTypes = computed(() => this.accept().map((ext) => `.${ext.toLowerCase()}`));\n protected readonly acceptAttribute = computed(() => this.acceptedFileTypes().join(','));\n protected readonly hasSingleFile = computed(() => !this.multiple() && this.fileList().length === 1);\n protected readonly uploadLabel = computed(() => this.text() || 'Upload');\n\n uploadFile(files: FileList | File[] | null): void {\n if (!files) {\n return;\n }\n\n const fileArray = Array.from(files);\n\n if (!this.validateFileList(fileArray)) {\n return;\n }\n\n this.addFiles(fileArray);\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList()));\n }\n\n openFile(file: File): void {\n window.open(window.URL.createObjectURL(file));\n }\n\n remove(file: File): void {\n this.fileList.update((files) => files.filter((existingFile) => existingFile !== file));\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList()));\n }\n\n private validateFileList(fileArray: File[]): boolean {\n if (!this.multiple() && fileArray.length > 1) {\n this.emitError('ONLY_SINGLE_FILE');\n return false;\n }\n\n for (const file of fileArray) {\n if (!this.isAcceptedFileType(file.name)) {\n this.emitError('FILETYPE_NOT_SUPPORTED');\n return false;\n }\n }\n\n return true;\n }\n\n private emitError(errorType: UploadError): void {\n this.errorEmitter.emit(errorType);\n }\n\n private isAcceptedFileType(fileName: string): boolean {\n const acceptedTypes = this.acceptedFileTypes();\n if (!acceptedTypes.length) {\n return true;\n }\n\n const fileExtension = fileName.split('.').pop()?.toLowerCase();\n if (!fileExtension) {\n return false;\n }\n\n return acceptedTypes.includes(`.${fileExtension}`);\n }\n\n private addFiles(fileArray: File[]): void {\n if (!this.multiple()) {\n this.fileList.set(fileArray);\n return;\n }\n\n this.fileList.update((files) => [...files, ...fileArray]);\n }\n\n private createFileListFromArray(files: File[]): FileList {\n const dataTransfer = new DataTransfer();\n files.forEach((file) => dataTransfer.items.add(file));\n return dataTransfer.files;\n }\n}\n","<mat-card\n id=\"uploadFileContainer\"\n class=\"upload-file-container\"\n (click)=\"fileInput.click()\"\n madDragAndDrop\n (onFileDropped)=\"uploadFile($event)\"\n>\n <input\n #fileInput\n hidden\n type=\"file\"\n [id]=\"id()\"\n [multiple]=\"multiple()\"\n [accept]=\"acceptAttribute()\"\n (change)=\"uploadFile(fileInput.files)\"\n (click)=\"fileInput.value = ''\"\n />\n <mat-card-content class=\"upload-file-content\">\n @if (hasSingleFile()) {\n {{ fileList()[0].name }}\n } @else {\n <mat-icon>vertical_align_top</mat-icon>\n {{ uploadLabel() }}\n }\n </mat-card-content>\n</mat-card>\n\n@if (showFileList()) {\n <mat-chip-listbox>\n @for (file of fileList(); track file) {\n <mat-chip class=\"download\" (click)=\"openFile(file)\" [removable]=\"removable()\" (removed)=\"remove(file)\">\n {{ file.name }}\n @if (removable()) {\n <mat-icon matChipRemove>delete_forever</mat-icon>\n }\n </mat-chip>\n }\n </mat-chip-listbox>\n}\n","import { Component, input } from '@angular/core';\nimport { MatIcon } from '@angular/material/icon';\n\nexport type TileVariant = 'success' | 'error' | 'info' | 'warning';\nexport type TileSize = 'sm' | 'md' | 'lg';\nexport type TileIconPosition = 'start' | 'end';\n\n@Component({\n selector: 'mad-tile',\n imports: [MatIcon],\n templateUrl: './tile.component.html',\n styleUrl: './tile.component.scss',\n})\nexport class TileComponent {\n readonly label = input.required<string>();\n readonly variant = input<TileVariant>('info');\n readonly size = input<TileSize>('md');\n\n /** Optional Material icon name */\n readonly icon = input<string | null>(null);\n\n /** Icon position relative to label */\n readonly iconPosition = input<TileIconPosition>('start');\n}\n","<div\n class=\"tile\"\n [class.tile--success]=\"variant() === 'success'\"\n [class.tile--error]=\"variant() === 'error'\"\n [class.tile--info]=\"variant() === 'info'\"\n [class.tile--warning]=\"variant() === 'warning'\"\n [class.tile--sm]=\"size() === 'sm'\"\n [class.tile--md]=\"size() === 'md'\"\n [class.tile--lg]=\"size() === 'lg'\"\n [class.tile--icon-end]=\"iconPosition() === 'end'\"\n>\n <div class=\"tile__content\">\n @if (icon() && iconPosition() === 'start') {\n <mat-icon class=\"tile__icon\" aria-hidden=\"true\">\n {{ icon() }}\n </mat-icon>\n }\n\n <span class=\"tile__label\">\n {{ label() }}\n </span>\n\n @if (icon() && iconPosition() === 'end') {\n <mat-icon class=\"tile__icon\" aria-hidden=\"true\">\n {{ icon() }}\n </mat-icon>\n }\n </div>\n</div>\n","import { Component, input, output } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { IconButtonComponent } from '../button/icon-button/icon-button.component';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nexport interface BreadcrumbItem {\n label: string;\n route?: string[]; // Optional — undefined for current non-clickable item\n href?: string;\n}\n\n@Component({\n selector: 'mad-breadcrumb',\n imports: [RouterLink, IconButtonComponent, MatIcon, MatTooltip],\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n})\nexport class BreadcrumbComponent {\n breadcrumbs = input.required<BreadcrumbItem[]>();\n showCopy = input<boolean>(false);\n title = input<string>('Copy');\n\n copy = output<void>();\n}\n","@if (breadcrumbs().length) {\n <div class=\"breadcrumb\">\n <nav data-cy=\"breadcrumb-nav\" class=\"breadcrumb__nav\">\n @for (crumb of breadcrumbs(); track crumb.label; let last = $last) {\n @if (crumb.route?.length) {\n <a data-cy=\"breadcrumb-link\" [routerLink]=\"crumb.route\" class=\"breadcrumb__link\">{{ crumb.label }}</a>\n } @else if (crumb.href?.length) {\n <a data-cy=\"breadcrumb-link\" [href]=\"crumb.href\" target=\"_blank\" class=\"breadcrumb__link\">{{ crumb.label }}</a>\n } @else {\n <span data-cy=\"breadcrumb-current\" class=\"breadcrumb__current\">{{ crumb.label }}</span>\n }\n @if (!last) {\n <span data-cy=\"breadcrumb-separator\" class=\"breadcrumb__separator\">/</span>\n }\n }\n </nav>\n @if (showCopy()) {\n <mad-icon-button\n data-cy=\"breadcrumb-copy\"\n class=\"breadcrumb__copy\"\n (click)=\"copy.emit()\"\n [matTooltip]=\"title()\"\n matTooltipPosition=\"above\"\n >\n <mat-icon>content_copy</mat-icon>\n </mad-icon-button>\n }\n </div>\n}\n","export const VERSION = '22.1.0';\n","import { InjectionToken } from '@angular/core';\nimport { AlertType, AlertSize } from './alert.component';\n\nexport interface AlertDefaultOptions {\n type?: AlertType;\n size?: AlertSize;\n}\n\nexport const MAD_ALERT_DEFAULT_CONFIGURATION = new InjectionToken('mad-alert-configuration', {\n providedIn: 'root',\n factory: MAD_ALERT_DEFAULT_CONFIGURATION_FACTORY,\n});\n\nexport function MAD_ALERT_DEFAULT_CONFIGURATION_FACTORY(): AlertDefaultOptions {\n return {\n size: 'medium',\n type: 'info',\n };\n}\n","import { Component, computed, Inject, input, output } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { AlertDefaultOptions, MAD_ALERT_DEFAULT_CONFIGURATION } from './alert-configuration';\n\nexport type AlertType = 'success' | 'info' | 'warning' | 'error';\nexport type AlertSize = 'small' | 'medium' | 'large';\n\n@Component({\n selector: 'mad-alert',\n imports: [MatIconModule, MatButtonModule],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n})\nexport class AlertComponent {\n type = input<AlertType>(this.alertConfig.type);\n message = input<string>('');\n size = input<AlertSize>(this.alertConfig.size);\n actionText = input<string>('');\n closeable = input<boolean>(true);\n\n close = output<void>();\n action = output<void>();\n\n protected classes = computed(() => `${this.type()} ${this.size()}`);\n protected icon = computed(() => {\n switch (this.type()) {\n case 'success':\n return 'check_circle';\n case 'info':\n return 'info';\n case 'warning':\n return 'warning';\n case 'error':\n return 'error';\n }\n });\n\n constructor(@Inject(MAD_ALERT_DEFAULT_CONFIGURATION) private alertConfig: AlertDefaultOptions) {}\n}\n","<div data-cy=\"alert\" class=\"alert\" [class]=\"classes()\">\n <span data-cy=\"alert-icon\" class=\"icon\">\n <mat-icon>{{ icon() }}</mat-icon>\n </span>\n <span data-cy=\"alert-message\" class=\"message\">{{ message() }}</span>\n @if (actionText()) {\n <span data-cy=\"alert-action-btn\" class=\"action-btn\" (click)=\"action.emit()\">\n {{ actionText() }}\n </span>\n }\n @if (closeable()) {\n <button mat-icon-button data-cy=\"alert-close-btn\" class=\"close-btn\" (click)=\"close.emit()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n</div>\n","/*\n * Public API Surface of material-addons\n */\nexport * from './lib/material-action-button/material-action-button.component';\nexport * from './lib/material-action-button/material-action-button.module';\nexport * from './lib/button/button';\nexport * from './lib/button/button.module';\nexport * from './lib/readonly/readonly-form-field.module';\nexport * from './lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component';\nexport * from './lib/readonly/readonly-form-field/readonly-form-field.component';\n\nexport * from './lib/numeric-field/numeric-field';\nexport * from './lib/numeric-field/numeric-field.module';\nexport * from './lib/numeric-field/number-format.service';\nexport * from './lib/card/card';\nexport * from './lib/card/card.module';\nexport * from './lib/quick-list/quick-list';\nexport * from './lib/quick-list/quick-list.module';\nexport * from './lib/table/table';\nexport * from './lib/table/table.module';\nexport * from './lib/data-table/data-table';\nexport * from './lib/throttle-click/throttle-click.directive';\nexport * from './lib/throttle-click/throttle-click.module';\nexport * from './lib/stepper/stepper.component';\nexport * from './lib/stepper/step-header/step-header.component';\nexport * from './lib/stepper/mad-stepper-animation';\nexport * from './lib/stepper/stepper.module';\n\nexport * from './lib/layout/content-panel/content-header/content-header.component';\nexport * from './lib//layout/content-panel/content-panel-container/content-panel-container.component';\nexport * from './lib//layout/content-panel/content-panel-container-content/content-panel-container-content.component';\nexport * from './lib//layout/content-panel/content-panel-container-footer/content-panel-container-footer.component';\nexport * from './lib//layout/content-panel/content-panel-container-sidebar/content-panel-container-sidebar.component';\nexport * from './lib//layout/content-panel/main-container/main-container.component';\nexport * from './lib//layout/content-panel/content-panel.module';\n\nexport * from './lib/layout/flowbar/flowbar.component';\nexport * from './lib/layout/flowbar/flowbar.module';\n\nexport * from './lib/carousel/carousel.component';\nexport * from './lib/carousel/carousel-short-text-directive/carousel-short-text.directive';\nexport * from './lib/carousel/carousel-slide-directive/carousel-slide.directive';\n\nexport * from './lib/layout/sidebar/sidebar.component';\nexport * from './lib/layout/sidebar/sidebar-item/sidebar-item.component';\nexport * from './lib/layout/sidebar/sidebar.module';\nexport * from './lib/layout/sidebar-layout/sidebar-layout.component';\n\nexport * from './lib/layout/toolbar/toolbar.module';\nexport * from './lib/layout/toolbar/toolbar.component';\nexport * from './lib/layout/toolbar/toolbar.service';\nexport * from './lib/layout/toolbar/toolbar-action.interface';\n\nexport * from './lib/material-addons.module';\nexport * from './lib/file-upload/file-upload.component';\nexport * from './lib/tile/tile.component';\nexport * from './lib/breadcrumb/breadcrumb.component';\nexport * from './version';\n\nexport * from './lib/alert/alert';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1","i4","i5","i1.NumberFormatService","i2","i6","i7","i8.PrimaryButtonComponent","i9.OutlineButtonComponent","i10.DangerButtonComponent","i11","uuidV4","i1.DataTableTemplateExpandableColumnDefinition","i8","i11.OutlineButtonComponent","i12.IconButtonComponent","i13.MadButtonGroupComponent","i17","i1.DataTableTemplateColumnDefinition","i3.ContentHeaderComponent","i4.ContentPanelContainerComponent","i5.ContentPanelContainerContentComponent","i6.ContentPanelContainerFooterComponent","i7.ContentPanelContainerSidebarComponent","i8.MainContainerComponent","i9","i10","i3.ToolbarService"],"mappings":"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"}
|