@porscheinformatik/material-addons 19.0.6 → 19.0.8
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 +200 -260
- package/fesm2022/porscheinformatik-material-addons.mjs.map +1 -1
- package/lib/layout/toolbar/toolbar-action.interface.d.ts +2 -0
- package/lib/layout/toolbar/toolbar-action.interface.d.ts.map +1 -1
- package/lib/layout/toolbar/toolbar.service.d.ts +5 -1
- package/lib/layout/toolbar/toolbar.service.d.ts.map +1 -1
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts +53 -49
- package/lib/readonly/readonly-form-field/readonly-form-field.component.d.ts.map +1 -1
- package/lib/size-change/size-change.directive.d.ts +12 -0
- package/lib/size-change/size-change.directive.d.ts.map +1 -0
- package/package.json +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/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/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.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/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';\nimport { NgIf } from '@angular/common';\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.css'],\n imports: [RouterLink, NgIf, MatButtonModule, MatTooltipModule, MatIconModule],\n})\nexport class MaterialActionButtonComponent {\n @Input()\n actionName: string;\n\n @Input()\n id: string;\n\n @Input()\n icon = 'add';\n\n @Input()\n routerLink: string;\n\n // Sets the lower padding higher providing some bottom space for a fixed paginator\n @Input()\n liftHigher = true;\n\n @Input()\n liftHigher2 = false;\n}\n","<div class=\"material-action-button {{ liftHigher ? 'lift-higher' : '' }} {{ liftHigher2 ? 'lift-higher-2' : '' }}\">\n <a [routerLink]=\"routerLink\">\n <button [id]=\"id\" mat-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"primary\" *ngIf=\"!liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n <button [id]=\"id\" mat-mini-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"accent\" *ngIf=\"liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n </a>\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 { Component, ElementRef, HostBinding } from '@angular/core';\n\n@Component({\n template: '',\n standalone: false,\n})\nexport abstract class MadBasicButton {\n button: ElementRef;\n disabled: boolean;\n\n @HostBinding('style.pointer-events')\n get pointerEvent(): string {\n return this.disabled ? 'none' : 'auto';\n }\n\n @HostBinding('style.opacity')\n get opacity(): string {\n return this.disabled ? '0.35' : '1';\n }\n\n disableClick = (e: Event): any => e.stopPropagation();\n\n ngOnChanges(): void {\n this.disableButton();\n }\n\n disableButton(): void {\n if (this.disabled) {\n this.button.nativeElement.addEventListener('click', this.disableClick);\n } else {\n this.button.nativeElement.removeEventListener('click', this.disableClick);\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild } 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 styleUrls: ['./danger-button.component.css'],\n imports: [MatButtonModule],\n})\nexport class DangerButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-raised-button color=\"warn\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class LinkButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" [title]=\"title\" [type]=\"type\" color=\"primary\" #btn mat-button>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class IconButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-icon-button color=\"primary\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class OutlineButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-stroked-button [color]=\"color\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class PrimaryButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-raised-button color=\"primary\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Directive, ElementRef, Input, OnInit, Optional, Renderer2 } 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 implements OnInit {\n static readonly UPPERCASE_CLASS = 'mad-uppercase';\n static readonly OUTLINE_CLASS = 'mad-outline';\n static readonly DEFAULT_COLOR = 'primary';\n\n @Input() color: ThemePalette;\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('MadButtonGroupComponent needs to be applied on a MatButton');\n }\n }\n\n @Input() set outline(value: boolean) {\n this.setOutline(value);\n }\n\n @Input() set uppercase(value: boolean) {\n this.setUppercase(value);\n }\n\n ngOnInit() {\n this.setUppercase(true);\n this.setOutline(true);\n\n this.matComponent.color = this.color || MadButtonDirective.DEFAULT_COLOR;\n }\n\n setUppercase(value: boolean) {\n this.addOrRemoveClass(value, MadButtonDirective.UPPERCASE_CLASS);\n }\n\n setOutline(value: boolean) {\n this.addOrRemoveClass(value, MadButtonDirective.OUTLINE_CLASS);\n }\n\n addOrRemoveClass(condition: boolean, className: string) {\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","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'mad-button-group',\n template: '<ng-content></ng-content>',\n standalone: true,\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 {\n AfterViewChecked,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { ErrorStateMatcher } from '@angular/material/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 { NgIf, NgStyle, NgClass } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\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 imports: [MatFormFieldModule, NgIf, MatInputModule, FormsModule, NgStyle, NgClass, MatTooltipModule, TextFieldModule, MatIconModule],\n})\nexport class ReadOnlyFormFieldComponent implements OnChanges, AfterViewChecked {\n @ViewChild('contentWrapper', { static: false })\n originalContent: ElementRef;\n @Input('useProjectedContent') useProjectedContent: boolean = false;\n @Input('value') value?: any;\n @Input('label') label: string;\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() multiline = false;\n @Input() rows: number;\n @Input() id: string;\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 /**\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 @ViewChild('inputEl') inputEl: ElementRef;\n errorMatcher: ErrorStateMatcher = {\n isErrorState: () => !!this.errorMessage,\n };\n\n private unitSpan: HTMLSpanElement;\n private textSpan: HTMLSpanElement;\n\n toolTipForInputEnabled = false;\n toolTipText: string;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private renderer: Renderer2,\n private numberFormatService: NumberFormatService,\n private elementRef: ElementRef,\n ) {}\n\n ngOnChanges(_: SimpleChanges): void {\n if (!NumberFormatService.valueIsSet(this.value)) {\n this.value = '-';\n if (this.shrinkIfEmpty) {\n this.rows = 1;\n }\n } else if (this.formatNumber && typeof this.value === 'number') {\n this.value = this.numberFormatService.format(this.value, {\n decimalPlaces: this.decimalPlaces,\n finalFormatting: true,\n autofillDecimals: this.autofillDecimals,\n });\n }\n this.changeDetector.detectChanges();\n }\n\n // TODO direct copy from NumericFieldDirective\n ngAfterViewChecked(): void {\n this.injectUnitSymbol();\n // If useProjectedContent is set to true, the input wont be show\n if (!this.useProjectedContent) {\n this.setReadonlyFieldStyle();\n this.setTooltipForOverflownField();\n }\n }\n\n suffixClicked() {\n this.suffixClickedEmitter.emit(null);\n }\n\n prefixClicked() {\n this.prefixClickedEmitter.emit(null);\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', '25px');\n this.renderer.appendChild(inputWrapper, this.unitSpan);\n }\n }\n\n // special handling to move unit symbol along with display value\n if (!!this.unitSpan && 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 = this.value;\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 // always reset unit symbol\n if (!!this.unitSpan) {\n this.unitSpan.textContent = this.unit;\n }\n }\n\n private setReadonlyFieldStyle(): void {\n if (this.inputEl?.nativeElement) {\n const textOverFlowStyleValue = this.getTextOverFlowStyleValue();\n if (textOverFlowStyleValue) {\n this.inputEl.nativeElement.setAttribute('style', 'text-overflow: ' + textOverFlowStyleValue);\n }\n }\n }\n\n // Ellipsis is enabled by default as text-overflow behaviour\n private getTextOverFlowStyleValue(): string {\n // it works only if the style is added to the component directly. Should find a way for get it from the calculated\n // style. Than it would be possible to define the text-overflow in css for the whole application\n const textOverflow = this.elementRef?.nativeElement?.style.textOverflow;\n if (!textOverflow) {\n return 'ellipsis';\n }\n\n return textOverflow;\n }\n\n private setTooltipForOverflownField(): void {\n if (this.isEllipsisForTextOverflowEnabled()) {\n if (this.inputEl) {\n this.toolTipForInputEnabled = this.isTextOverflown(this.inputEl.nativeElement);\n if (this.toolTipForInputEnabled) {\n this.toolTipText = this.calculateToolTipText();\n }\n }\n }\n }\n\n private isEllipsisForTextOverflowEnabled(): boolean {\n return this.getTextOverFlowStyleValue() === 'ellipsis';\n }\n\n private isTextOverflown(input: any): boolean {\n if (input) {\n return input.offsetWidth < input.scrollWidth;\n }\n return false;\n }\n\n private calculateToolTipText(): string {\n if (!this.unit) {\n return this.value;\n }\n\n return this.unitPosition === 'left' ? this.unit + ' ' + this.value : this.value + ' ' + this.unit;\n }\n}\n","<mat-form-field class=\"form-group mad-read-only\">\n <mat-label>{{ label }}</mat-label>\n <input\n *ngIf=\"!multiline\"\n [ngStyle]=\"{ display: useProjectedContent ? 'none' : 'block' }\"\n [ngModel]=\"value\"\n [ngClass]=\"'text-' + textAlign + ' content'\"\n [errorStateMatcher]=\"errorMatcher\"\n [id]=\"id\"\n readonly\n [disabled]=\"!useProjectedContent\"\n matInput\n #inputEl\n matTooltip=\"{{ toolTipText }}\"\n matTooltipPosition=\"right\"\n matTooltipClass=\"custom-tooltip\"\n matTooltipDisabled=\"{{ !toolTipForInputEnabled }}\"\n />\n\n <textarea\n *ngIf=\"multiline\"\n [ngStyle]=\"{ display: useProjectedContent ? 'none' : 'block' }\"\n [rows]=\"rows\"\n [ngModel]=\"value\"\n class=\"multiline content\"\n [errorStateMatcher]=\"errorMatcher\"\n [id]=\"id\"\n readonly\n [disabled]=\"!useProjectedContent\"\n matInput\n [cdkTextareaAutosize]=\"multilineAutoSize\"\n ></textarea>\n <ng-content *ngIf=\"useProjectedContent\" />\n <mat-error>{{ errorMessage }}</mat-error>\n <mat-icon data-cy=\"suffix-icon\" *ngIf=\"suffix\" (click)=\"suffixClicked()\" class=\"pointer\" color=\"primary\" matSuffix>{{ suffix }}</mat-icon>\n <mat-icon data-cy=\"prefix-icon\" *ngIf=\"prefix\" (click)=\"prefixClicked()\" class=\"pointer\" color=\"primary\" matPrefix>{{ prefix }}</mat-icon>\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';\nimport { NgIf } from '@angular/common';\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: [NgIf, 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 <ng-container *ngIf=\"!!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 </ng-container>\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, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\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';\nimport { NgIf } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n animations: [\n trigger('collapseExpandAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0, overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 1,\n height: '*',\n }),\n ),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*', overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 0,\n height: 0,\n }),\n ),\n ]),\n ]),\n trigger('rotateIcon', [\n state('true', style({ transform: 'rotate(0)' })),\n state('false', style({ transform: 'rotate(180deg)' })),\n transition('true => false', animate('100ms ease-out')),\n transition('false => true', animate('100ms ease-in')),\n ]),\n ],\n styleUrls: ['./card.component.scss'],\n imports: [\n MatCardModule,\n NgIf,\n IconButtonComponent,\n MatIconModule,\n PrimaryButtonComponent,\n ThrottleClickDirective,\n OutlineButtonComponent,\n ],\n})\nexport class CardComponent {\n @Input() cancelDisabled = false;\n @Input() cancelText = 'NOT SET';\n @Input() readonly = true;\n @Input() editText = 'NOT SET';\n @Input() expandable = true;\n @Input() expanded = true;\n @Input() saveDisabled = false;\n @Input() saveText = 'NOT SET';\n @Input() title?: string;\n @Input() editMode = false;\n @Input() additionalActionIcon: string;\n @Input() additionalActionText = '';\n @Output() edit = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() save = new EventEmitter();\n @Output() additionalAction = new EventEmitter();\n\n onCancel(): void {\n this.cancel.emit(undefined);\n }\n\n onEdit(): void {\n this.edit.emit(undefined);\n this.expanded = true;\n }\n\n onSave(): void {\n this.save.emit(undefined);\n }\n\n toggleCollapse(): void {\n this.expanded = !this.expanded;\n }\n\n additionalActionClicked(): void {\n this.additionalAction.emit(undefined);\n }\n}\n","<mat-card>\n <mat-card-header class=\"header\" *ngIf=\"title || expandable\">\n <mat-card-title-group class=\"center\">\n <mat-card-title data-cy=\"card-title\" class=\"small-title-container\">{{ title }}</mat-card-title>\n <div data-cy=\"title-buttons-block\" class=\"top-right-icons\">\n <mad-icon-button data-testid=\"collapse-btn\" (click)=\"toggleCollapse()\" *ngIf=\"expandable && !editMode\">\n <mat-icon [@rotateIcon]=\"!expanded\">keyboard_arrow_down</mat-icon>\n </mad-icon-button>\n <mad-icon-button\n data-testid=\"additional-btn\"\n (click)=\"additionalActionClicked()\"\n *ngIf=\"additionalActionIcon\"\n [title]=\"additionalActionText\"\n type=\"button\"\n >\n <mat-icon>{{ additionalActionIcon }}</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-testid=\"edit-btn\" [title]=\"editText\" (click)=\"onEdit()\" *ngIf=\"!readonly && !editMode\">\n <mat-icon>create</mat-icon>\n </mad-icon-button>\n </div>\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content [@collapseExpandAnimation] *ngIf=\"expanded\">\n <ng-content></ng-content>\n </mat-card-content>\n <mat-card-actions *ngIf=\"!readonly && editMode\">\n <mad-primary-button data-testid=\"save-btn\" [title]=\"saveText\" [disabled]=\"saveDisabled\" (throttleClick)=\"onSave()\" madThrottleClick>\n {{ saveText }}\n </mad-primary-button>\n <mad-outline-button data-testid=\"cancel-btn\" [title]=\"cancelText\" [disabled]=\"cancelDisabled\" (click)=\"onCancel()\">\n {{ cancelText }}\n </mad-outline-button>\n </mat-card-actions>\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 { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of allItems; let isLast = last\">\n <div class=\"flex-container\" *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.allItems.length\"\n (click)=\"addItem()\"\n [disabled]=\"!isAddAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\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 { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n imports: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of allItems\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\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 { NgFor, NgIf, 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: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of formArray.controls\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteReactiveAllowed()\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\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 { NgFor, NgIf, 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: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of formArray.controls; let isLast = last\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteReactiveAllowed()\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddReactiveAllowed()\" (click)=\"addReactiveItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.formArray?.controls.length\"\n (click)=\"addReactiveItem()\"\n [disabled]=\"!isAddReactiveAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\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';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [\n NgIf,\n NgFor,\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<div *ngIf=\"tableActions?.length\">\n <mad-primary-button class=\"table-action\" *ngFor=\"let tableAction of tableActions\" (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label }}\n </mad-primary-button>\n</div>\n\n<!-- Row action buttons -->\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\" (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table filter -->\n<mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel }}</mat-label>\n <input matInput (keyup)=\"onFilter($event?.target?.value)\" placeholder=\"{{ filterPlaceholder }}\" />\n</mat-form-field>\n\n<!-- Table -->\n<div *ngIf=\"dataSource?.data?.length > 0; else noData\" class=\"mad-table\">\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column -->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\" *ngIf=\"rowActions?.length\" 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 <!-- Columns with data -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.label\" [sticky]=\"column.isSticky\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\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 </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\">\n {{ element[column.dataPropertyName] }}\n </td>\n </ng-container>\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<!-- 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<ng-template #noData>\n <div class=\"noDataText\">\n {{ noDataText }}\n </div>\n</ng-template>\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 <div class=\"column-drag-box\" *ngFor=\"let selectedColumn of selectedColumns; let i = index\" cdkDrag [id]=\"selectedColumn.id\">\n {{ i + 1 }}. {{ selectedColumn.label | translate }}\n </div>\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 <button *ngIf=\"searchFilter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\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 <div *ngFor=\"let availableColumn of filteredAvailableColumns\" class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{ availableColumn.label }}\n </div>\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 <mad-danger-button *ngIf=\"data.deleteDefinitionAllowed\" (click)=\"onDelete()\">\n {{ data.deleteLabel | translate }}\n </mad-danger-button>\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 <ng-container *ngIf=\"!filterOptions?.length; else selectInput\">\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 </ng-container>\n</div>\n\n<ng-template #selectInput>\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 <mat-option *ngFor=\"let entry of filterOptions\" [value]=\"entry.key\">{{ entry.label }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n","import { Component, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\nimport { DataTableFilterOption } from '../data-table-filter-options';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 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\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 this.expandedElement = this.expandedElement === element ? null : element;\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;\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.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 <div *ngIf=\"tableActions?.length || (filterMode === 'COLUMN_BASED' && showDeleteFilterAction)\">\n <mad-button-group *ngFor=\"let actionGroup of tableActions\" class=\"table-action-group\">\n <mad-outline-button\n [hidden]=\"isHidden(tableAction)\"\n [disabled]=\"isDisabled(tableAction)\"\n *ngFor=\"let tableAction of actionGroup\"\n (click)=\"onActionEvent(tableAction)\"\n >\n {{ translateLabels ? (tableAction.label | translate) : tableAction.label }}\n {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </mad-button-group>\n <ng-container *ngIf=\"filterMode === 'COLUMN_BASED' && showDeleteFilterAction\">\n <button\n mat-icon-button\n [matTooltip]=\"'common.filter.delete.tooltip' | translate\"\n [disabled]=\"disableDeleteFilterButton()\"\n class=\"delete-filter-action\"\n color=\"primary\"\n (click)=\"onDeleteFilter()\"\n >\n <mat-icon fontSet=\"material-icons-outlined\" matBadgeColor=\"warn\" [matBadge]=\"getFilterBadgeContent()\"> filter_alt_off </mat-icon>\n </button>\n </ng-container>\n </div>\n <mat-form-field data-cy=\"filter-input\" *ngIf=\"filterMode === 'TABLE_BASED'\">\n <mat-label>{{ translateLabels ? (filterLabel | translate) : filterLabel }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"onTableBasedFilterEvent($event)\" placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <ng-container *ngFor=\"let rowAction of rowActions\">\n <button\n data-cy=\"row-action-menu-button\"\n *ngIf=\"!isHidden(rowAction)\"\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 </ng-container>\n </ng-template>\n</mat-menu>\n\n<!-- editable definition menu -->\n<mat-menu #editableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button\n *ngFor=\"let definition of editableColumnDefinitions\"\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 </ng-template>\n</mat-menu>\n\n<!-- viewable definition menu -->\n<mat-menu #viewableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button\n *ngFor=\"let definition of viewableColumnDefinitions\"\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 </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div\n *ngIf=\"filterMode === 'COLUMN_BASED' || showEmptyTable || !!dataSource.filteredData?.length; else noData\"\n class=\"datatable\"\n [class]=\"tableClass\"\n>\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"loading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\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 <div *ngIf=\"selectionEmitMode !== 'NONE' && selectionMode === 'BATCH'\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox (change)=\"onToggleSelectAll()\" [checked]=\"allSelected\"></mat-checkbox>\n </div>\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 <div *ngIf=\"showCheckbox(element)\" 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 <!-- SINGLE: row action menu icon -->\n <mad-icon-button\n data-cy=\"row-action-button\"\n *ngIf=\"showRowActionIcon(element) && hasVisibleRowActions(element)\"\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 <!-- SINGLE: row radio button -->\n <div *ngIf=\"showRadioButton(element)\" 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 <!-- EXPANDABLE: row is expandable/collapsable -->\n <mad-icon-button *ngIf=\"showExpandableButton(element)\" (click)=\"onExpand($event, element)\">\n <mat-icon *ngIf=\"expandedElement !== element\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"expandedElement === element\">keyboard_arrow_up</mat-icon>\n </mad-icon-button>\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Cell definitions and rows with injected cells -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <!-- header cell to be injected -->\n <ng-container [ngSwitch]=\"getDataTableHeaderType(column)\">\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchDefault>\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n </ng-container>\n </ng-container>\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 [ngSwitch]=\"column.transformer\"\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 <!-- Expanded Content Column - The row is made up of this one column that spans across all columns -->\n <ng-container *ngIf=\"!!expandableDef\" [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 <!-- 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 <ng-container *ngIf=\"!!expandableDef\">\n <tr mat-row *matRowDef=\"let element; columns: [expandableColumnDef]\" class=\"mad-data-table-expandable-row\"></tr>\n </ng-container>\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<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 <mad-icon-button *ngIf=\"editableColumnDefinitions?.length === 1\" (click)=\"onColumnSettings()\">\n <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n </mad-icon-button>\n <!-- column settings: multiple definitions -->\n <mad-icon-button *ngIf=\"(editableColumnDefinitions?.length || 0) > 0\" [matMenuTriggerFor]=\"editableDefinitionMenu\">\n <mat-icon>view_column</mat-icon>\n </mad-icon-button>\n <!-- column view: multiple definitions -->\n <mad-icon-button *ngIf=\"(viewableColumnDefinitions?.length || 0) > 0\" [matMenuTriggerFor]=\"viewableDefinitionMenu\">\n <mat-icon>preview</mat-icon>\n </mad-icon-button>\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<!-- No data alert -->\n<ng-template #noData>\n <div data-cy=\"no-data-block\" class=\"noDataText\">\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"loading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ translateLabels ? (noDataText | translate) : noDataText }}\n </div>\n</ng-template>\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, STEP_STATE, StepState } 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, NgIf } 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, NgIf],\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input() state: StepState;\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.state === STEP_STATE.NUMBER && !this.completed && !this.hasError) {\n return 'step-state-neutral'; //initiale state is 'number'\n } else if (this.completed) {\n return 'step-state-complete';\n } else if (this.hasError) {\n return 'step-state-error';\n }\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 [style.background]=\"this.selected && !this.closed ? '#d8e2e9' : '#ffffff'\"\n [ngClass]=\"this.hasError ? 'error-border' : 'check-border'\"\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 <div *ngIf=\"this.completed || this.hasError\" class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n <span data-testid=\"step-number\" *ngIf=\"!this.hasError && !this.completed\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\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 { NgFor, NgTemplateOutlet, NgIf } 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: [NgIf, 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: [NgFor, 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 <div *ngIf=\"!last\">\n <mad-primary-button data-cy=\"next-step-button\" (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n <div *ngIf=\"last\">\n <mad-primary-button data-cy=\"complete-step-button\" (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n </div>\n </div>\n</ng-template>\n","<!-- Vertical stepper -->\n<ng-container>\n <div data-cy=\"step-container\" *ngFor=\"let step of steps; let i = index; let isLast = last; let isFirst = first\">\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</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\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 [completed]=\"step.completed\"\n [hasError]=\"step.hasError\"\n [state]=\"_getIndicatorType(i, step.state)\"\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 { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { NgFor, NgIf } from '@angular/common';\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, NgFor, NgIf],\n})\nexport class FlowbarComponent implements OnInit, AfterViewInit {\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 ngAfterViewInit(): void {\n this.stepper._getIndicatorType = (): any => 'number';\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 <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\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 { 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\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 <ng-container *ngIf=\"headerContentPortal; else defaultActionHeader\">\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n </ng-container>\n <ng-template #defaultActionHeader>\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n <button class=\"back-button\" *ngIf=\"hasBackButton\">\n <mat-icon (click)=\"goToPreviousPage()\" color=\"primary\"> arrow_back</mat-icon>\n </button>\n <h2 class=\"title\">\n {{ title }}\n </h2>\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n </ng-template>\n </mad-content-header>\n <mad-content-panel-container>\n <mad-content-panel-container-sidebar *ngIf=\"sideBarItemsPortal\">\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n <mad-content-panel-container-content *ngIf=\"contentPortal\">\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n <mad-content-panel-container-footer *ngIf=\"footerPortal\">\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\n </mad-content-panel-container>\n</mad-main-container>\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { NavigationEnd, 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 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 { NgIf, NgFor, 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 imports: [\n MatToolbarModule,\n NgIf,\n RouterLink,\n MatButtonModule,\n MatIconModule,\n NgFor,\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 <a data-cy=\"back-link-button\" [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink(getBackAction())\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\" *ngIf=\"isAction(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\" *ngIf=\"isRouterLink(mainAction)\">\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 <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\" *ngIf=\"isAction(mainAction)\">\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 </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n *ngIf=\"isRouterLink(getBackAction())\"\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 <mad-material-action-button\n data-cy=\"material-main-action-button\"\n *ngIf=\"isAction(getBackAction())\"\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 </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n *ngIf=\"\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n \"\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 </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"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 <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"!action.importantAction\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button\n data-cy=\"burger-menu-button\"\n *ngIf=\"i >= (hasImportantToolbarActions() ? 0 : 1)\"\n mat-menu-item\n (click)=\"action.action()\"\n [title]=\"action.actionName\"\n >\n <mat-icon\n color=\"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 </ng-container>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\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';\n\n@NgModule({\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n SidebarModule,\n ],\n})\nexport class MaterialAddonsModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[madDragAndDrop]',\n standalone: true,\n})\nexport class DragAndDropDirectiveDirective {\n @Output()\n onFileDropped = new EventEmitter<any>();\n\n @HostBinding('style.background-color') private background = '$background-color';\n @HostBinding('style.opacity') private opacity = '1';\n\n //Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$selection-background';\n this.opacity = '0.8';\n }\n\n //Dragleave listener\n @HostListener('dragleave', ['$event']) onDragLeave(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$background-color';\n this.opacity = '1';\n }\n\n //Drop listener\n @HostListener('drop', ['$event'])\n public ondrop(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$background-color';\n this.opacity = '1';\n let files = event.dataTransfer.files;\n if (files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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 { DragAndDropDirectiveDirective } from './drag-and-drop-directive.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: [CommonModule, MatCardModule, MatIconModule, ButtonModule, TranslateModule, DragAndDropDirectiveDirective, MatChipsModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.css',\n})\nexport class FileUploadComponent implements OnInit {\n @Input() id: string;\n @Input() multiple: boolean;\n @Input() accept: string[];\n @Input() text: string;\n @Input() showFileList: boolean = false;\n @Input() removable: boolean = true;\n @Output() fileEmitter = new EventEmitter<FileList>();\n @Output() errorEmitter = new EventEmitter<UploadError>();\n\n fileList: File[] = [];\n acceptedFileTypes: string[] = [];\n\n ngOnInit(): void {\n this.setAcceptedFileTypes();\n }\n\n private setAcceptedFileTypes(): void {\n if (this.accept?.length) {\n this.acceptedFileTypes = this.accept.map((ext) => `.${ext.toLowerCase()}`);\n }\n }\n\n uploadFile(files: FileList): void {\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 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 fileExtension = fileName.split('.').pop()?.toLowerCase();\n return this.acceptedFileTypes.includes(`.${fileExtension}`);\n }\n\n private addFiles(fileArray: File[]): void {\n if (!this.multiple) {\n this.fileList = [];\n }\n this.fileList.push(...fileArray);\n }\n\n openFile(file: File): void {\n window.open(window.URL.createObjectURL(file));\n }\n\n remove(file: File): void {\n this.fileList = this.fileList.filter((f) => f !== file);\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList));\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 hasSingleFile(): boolean {\n return !this.multiple && this.fileList.length === 1;\n }\n}\n","<mat-card\n (click)=\"fileInput.click()\"\n (onFileDropped)=\"uploadFile($event)\"\n class=\"uploadFileContainer\"\n madDragAndDrop\n id=\"uploadFileContainer\"\n>\n <input\n #fileInput\n (change)=\"uploadFile($event.target.files)\"\n (click)=\"fileInput.value = null\"\n [accept]=\"acceptedFileTypes\"\n [id]=\"id\"\n [multiple]=\"multiple\"\n hidden\n type=\"file\"\n />\n <mat-card-content>\n <ng-container *ngIf=\"hasSingleFile(); else uploadDefault\">\n {{ fileList[0].name }}\n </ng-container>\n\n <ng-template #uploadDefault>\n <mat-icon>vertical_align_top</mat-icon>\n {{ text ? text : 'Upload' }}\n </ng-template>\n </mat-card-content>\n</mat-card>\n\n<ng-container *ngIf=\"showFileList\">\n <mat-chip-listbox>\n <mat-chip *ngFor=\"let file of fileList\" (click)=\"openFile(file)\" class=\"download\" [removable]=\"removable\" (removed)=\"remove(file)\">\n {{ file.name }}\n <mat-icon matChipRemove *ngIf=\"removable\">delete_forever</mat-icon>\n </mat-chip>\n </mat-chip-listbox>\n</ng-container>\n","export const VERSION = '19.0.1';\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, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n})\nexport class AlertComponent {\n @Input() type: AlertType = this.alertConfig.type;\n @Input() message: string = '';\n @Input() size: AlertSize = this.alertConfig.size;\n @Input() actionText: string = '';\n @Input() closeable: boolean = true;\n @Output() close = new EventEmitter<void>();\n @Output() action = new EventEmitter<void>();\n\n get icon() {\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 default:\n return '';\n }\n }\n\n constructor(@Inject(MAD_ALERT_DEFAULT_CONFIGURATION) private alertConfig: AlertDefaultOptions) {}\n\n closeAlert() {\n this.close.emit();\n }\n\n onAction() {\n this.action.emit();\n }\n}\n","<div data-cy=\"alert\" class=\"alert\" [ngClass]=\"[type, size]\">\n <span data-cy=\"alert-icon\" class=\"icon\"\n ><mat-icon>{{ icon }}</mat-icon></span\n >\n <span data-cy=\"alert-message\" class=\"message\">{{ message }}</span>\n <ng-container *ngIf=\"actionText\">\n <span data-cy=\"alert-action-btn\" class=\"action-btn\" (click)=\"onAction()\">{{ actionText }}</span>\n </ng-container>\n <ng-container *ngIf=\"closeable\">\n <button mat-icon-button data-cy=\"alert-close-btn\" class=\"close-btn\" (click)=\"closeAlert()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\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/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 './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.NumberFormatService","i2","i5","i6","i7","i1","i4","i10","uuidV4","i1.DataTableFilter","i1.DataTableTemplateExpandableColumnDefinition","i8","i9","i12.OutlineButtonComponent","i13.IconButtonComponent","i14.MadButtonGroupComponent","i15","i1.DataTableTemplateColumnDefinition","i3.ContentHeaderComponent","i4.ContentPanelContainerComponent","i5.ContentPanelContainerContentComponent","i6.ContentPanelContainerFooterComponent","i7.ContentPanelContainerSidebarComponent","i8.MainContainerComponent","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/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/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.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/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';\nimport { NgIf } from '@angular/common';\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.css'],\n imports: [RouterLink, NgIf, MatButtonModule, MatTooltipModule, MatIconModule],\n})\nexport class MaterialActionButtonComponent {\n @Input()\n actionName: string;\n\n @Input()\n id: string;\n\n @Input()\n icon = 'add';\n\n @Input()\n routerLink: string;\n\n // Sets the lower padding higher providing some bottom space for a fixed paginator\n @Input()\n liftHigher = true;\n\n @Input()\n liftHigher2 = false;\n}\n","<div class=\"material-action-button {{ liftHigher ? 'lift-higher' : '' }} {{ liftHigher2 ? 'lift-higher-2' : '' }}\">\n <a [routerLink]=\"routerLink\">\n <button [id]=\"id\" mat-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"primary\" *ngIf=\"!liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n <button [id]=\"id\" mat-mini-fab [matTooltipPosition]=\"'left'\" [matTooltip]=\"actionName\" color=\"accent\" *ngIf=\"liftHigher2\">\n <mat-icon>{{ icon }}</mat-icon>\n </button>\n </a>\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 { Component, ElementRef, HostBinding } from '@angular/core';\n\n@Component({\n template: '',\n standalone: false,\n})\nexport abstract class MadBasicButton {\n button: ElementRef;\n disabled: boolean;\n\n @HostBinding('style.pointer-events')\n get pointerEvent(): string {\n return this.disabled ? 'none' : 'auto';\n }\n\n @HostBinding('style.opacity')\n get opacity(): string {\n return this.disabled ? '0.35' : '1';\n }\n\n disableClick = (e: Event): any => e.stopPropagation();\n\n ngOnChanges(): void {\n this.disableButton();\n }\n\n disableButton(): void {\n if (this.disabled) {\n this.button.nativeElement.addEventListener('click', this.disableClick);\n } else {\n this.button.nativeElement.removeEventListener('click', this.disableClick);\n }\n }\n}\n","import { Component, ElementRef, Input, ViewChild } 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 styleUrls: ['./danger-button.component.css'],\n imports: [MatButtonModule],\n})\nexport class DangerButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-raised-button color=\"warn\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class LinkButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" [title]=\"title\" [type]=\"type\" color=\"primary\" #btn mat-button>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class IconButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-icon-button color=\"primary\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class OutlineButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @Input()\n color: ThemePalette = 'primary';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-stroked-button [color]=\"color\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Component, ElementRef, Input, ViewChild } 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})\nexport class PrimaryButtonComponent extends MadBasicButton {\n @Input()\n type: string;\n\n @Input()\n disabled: boolean;\n\n @Input()\n title = '';\n\n @ViewChild('btn', { read: ElementRef, static: true }) button: ElementRef;\n\n constructor() {\n super();\n }\n}\n","<button data-cy=\"button\" mat-raised-button color=\"primary\" [type]=\"type\" [title]=\"title\" #btn>\n <ng-content></ng-content>\n</button>\n","import { Directive, ElementRef, Input, OnInit, Optional, Renderer2 } 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 implements OnInit {\n static readonly UPPERCASE_CLASS = 'mad-uppercase';\n static readonly OUTLINE_CLASS = 'mad-outline';\n static readonly DEFAULT_COLOR = 'primary';\n\n @Input() color: ThemePalette;\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('MadButtonGroupComponent needs to be applied on a MatButton');\n }\n }\n\n @Input() set outline(value: boolean) {\n this.setOutline(value);\n }\n\n @Input() set uppercase(value: boolean) {\n this.setUppercase(value);\n }\n\n ngOnInit() {\n this.setUppercase(true);\n this.setOutline(true);\n\n this.matComponent.color = this.color || MadButtonDirective.DEFAULT_COLOR;\n }\n\n setUppercase(value: boolean) {\n this.addOrRemoveClass(value, MadButtonDirective.UPPERCASE_CLASS);\n }\n\n setOutline(value: boolean) {\n this.addOrRemoveClass(value, MadButtonDirective.OUTLINE_CLASS);\n }\n\n addOrRemoveClass(condition: boolean, className: string) {\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","import { Component, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'mad-button-group',\n template: '<ng-content></ng-content>',\n standalone: true,\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.required<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\" color=\"primary\" matSuffix>{{ suffix() }} </mat-icon>\n }\n @if (prefix()) {\n <mat-icon data-cy=\"prefix-icon\" (click)=\"prefixClicked()\" class=\"pointer\" color=\"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';\nimport { NgIf } from '@angular/common';\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: [NgIf, 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 <ng-container *ngIf=\"!!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 </ng-container>\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, EventEmitter, Input, Output } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\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';\nimport { NgIf } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\n\n@Component({\n selector: 'mad-card',\n templateUrl: './card.component.html',\n animations: [\n trigger('collapseExpandAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0, overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 1,\n height: '*',\n }),\n ),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*', overflow: 'hidden' }),\n animate(\n '100ms',\n style({\n opacity: 0,\n height: 0,\n }),\n ),\n ]),\n ]),\n trigger('rotateIcon', [\n state('true', style({ transform: 'rotate(0)' })),\n state('false', style({ transform: 'rotate(180deg)' })),\n transition('true => false', animate('100ms ease-out')),\n transition('false => true', animate('100ms ease-in')),\n ]),\n ],\n styleUrls: ['./card.component.scss'],\n imports: [\n MatCardModule,\n NgIf,\n IconButtonComponent,\n MatIconModule,\n PrimaryButtonComponent,\n ThrottleClickDirective,\n OutlineButtonComponent,\n ],\n})\nexport class CardComponent {\n @Input() cancelDisabled = false;\n @Input() cancelText = 'NOT SET';\n @Input() readonly = true;\n @Input() editText = 'NOT SET';\n @Input() expandable = true;\n @Input() expanded = true;\n @Input() saveDisabled = false;\n @Input() saveText = 'NOT SET';\n @Input() title?: string;\n @Input() editMode = false;\n @Input() additionalActionIcon: string;\n @Input() additionalActionText = '';\n @Output() edit = new EventEmitter();\n @Output() cancel = new EventEmitter();\n @Output() save = new EventEmitter();\n @Output() additionalAction = new EventEmitter();\n\n onCancel(): void {\n this.cancel.emit(undefined);\n }\n\n onEdit(): void {\n this.edit.emit(undefined);\n this.expanded = true;\n }\n\n onSave(): void {\n this.save.emit(undefined);\n }\n\n toggleCollapse(): void {\n this.expanded = !this.expanded;\n }\n\n additionalActionClicked(): void {\n this.additionalAction.emit(undefined);\n }\n}\n","<mat-card>\n <mat-card-header class=\"header\" *ngIf=\"title || expandable\">\n <mat-card-title-group class=\"center\">\n <mat-card-title data-cy=\"card-title\" class=\"small-title-container\">{{ title }}</mat-card-title>\n <div data-cy=\"title-buttons-block\" class=\"top-right-icons\">\n <mad-icon-button data-testid=\"collapse-btn\" (click)=\"toggleCollapse()\" *ngIf=\"expandable && !editMode\">\n <mat-icon [@rotateIcon]=\"!expanded\">keyboard_arrow_down</mat-icon>\n </mad-icon-button>\n <mad-icon-button\n data-testid=\"additional-btn\"\n (click)=\"additionalActionClicked()\"\n *ngIf=\"additionalActionIcon\"\n [title]=\"additionalActionText\"\n type=\"button\"\n >\n <mat-icon>{{ additionalActionIcon }}</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-testid=\"edit-btn\" [title]=\"editText\" (click)=\"onEdit()\" *ngIf=\"!readonly && !editMode\">\n <mat-icon>create</mat-icon>\n </mad-icon-button>\n </div>\n </mat-card-title-group>\n </mat-card-header>\n <mat-card-content [@collapseExpandAnimation] *ngIf=\"expanded\">\n <ng-content></ng-content>\n </mat-card-content>\n <mat-card-actions *ngIf=\"!readonly && editMode\">\n <mad-primary-button data-testid=\"save-btn\" [title]=\"saveText\" [disabled]=\"saveDisabled\" (throttleClick)=\"onSave()\" madThrottleClick>\n {{ saveText }}\n </mad-primary-button>\n <mad-outline-button data-testid=\"cancel-btn\" [title]=\"cancelText\" [disabled]=\"cancelDisabled\" (click)=\"onCancel()\">\n {{ cancelText }}\n </mad-outline-button>\n </mat-card-actions>\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 { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list-compact',\n templateUrl: './quick-list-compact.component.html',\n styleUrls: [],\n imports: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of allItems; let isLast = last\">\n <div class=\"flex-container\" *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddAllowed()\" (click)=\"addItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.allItems.length\"\n (click)=\"addItem()\"\n [disabled]=\"!isAddAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\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 { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'mad-quick-list',\n templateUrl: './quick-list.component.html',\n styleUrls: [],\n imports: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of allItems\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteAllowed()\" (click)=\"removeItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addItem()\" [disabled]=\"!addPossible || !isAddAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\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 { NgFor, NgIf, 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: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of formArray.controls\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteReactiveAllowed()\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n\n<mad-outline-button data-cy=\"add-item-button\" *ngIf=\"!readonly\" (click)=\"addReactiveItem()\" [disabled]=\"!isAddReactiveAllowed()\">\n {{ addLabel }}\n</mad-outline-button>\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 { NgFor, NgIf, 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: [NgFor, NgIf, 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<ng-container *ngFor=\"let item of formArray.controls; let isLast = last\">\n <div *ngIf=\"itemTemplate\" #row class=\"quick-list-row\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n <mad-icon-button data-cy=\"delete-item-button\" *ngIf=\"!readonly && isDeleteReactiveAllowed()\" (click)=\"removeReactiveItem(item)\">\n <mat-icon>delete</mat-icon>\n </mad-icon-button>\n <mad-icon-button data-cy=\"add-item-button\" *ngIf=\"!readonly && isLast\" [disabled]=\"!isAddReactiveAllowed()\" (click)=\"addReactiveItem()\">\n <mat-icon>add_circle_outline</mat-icon>\n </mad-icon-button>\n </div>\n</ng-container>\n<mad-link-button\n data-cy=\"add-first-item-button\"\n *ngIf=\"!readonly && !this.formArray?.controls.length\"\n (click)=\"addReactiveItem()\"\n [disabled]=\"!isAddReactiveAllowed()\"\n>\n {{ addLabel }}\n</mad-link-button>\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';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n selector: 'mad-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n imports: [\n NgIf,\n NgFor,\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<div *ngIf=\"tableActions?.length\">\n <mad-primary-button class=\"table-action\" *ngFor=\"let tableAction of tableActions\" (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label }}\n </mad-primary-button>\n</div>\n\n<!-- Row action buttons -->\n<mat-menu #menu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\" (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table filter -->\n<mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel }}</mat-label>\n <input matInput (keyup)=\"onFilter($event?.target?.value)\" placeholder=\"{{ filterPlaceholder }}\" />\n</mat-form-field>\n\n<!-- Table -->\n<div *ngIf=\"dataSource?.data?.length > 0; else noData\" class=\"mad-table\">\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column -->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\" *ngIf=\"rowActions?.length\" 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 <!-- Columns with data -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.label\" [sticky]=\"column.isSticky\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\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 </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label }}\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\">\n {{ element[column.dataPropertyName] }}\n </td>\n </ng-container>\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<!-- 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<ng-template #noData>\n <div class=\"noDataText\">\n {{ noDataText }}\n </div>\n</ng-template>\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 <div class=\"column-drag-box\" *ngFor=\"let selectedColumn of selectedColumns; let i = index\" cdkDrag [id]=\"selectedColumn.id\">\n {{ i + 1 }}. {{ selectedColumn.label | translate }}\n </div>\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 <button *ngIf=\"searchFilter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\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 <div *ngFor=\"let availableColumn of filteredAvailableColumns\" class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{ availableColumn.label }}\n </div>\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 <mad-danger-button *ngIf=\"data.deleteDefinitionAllowed\" (click)=\"onDelete()\">\n {{ data.deleteLabel | translate }}\n </mad-danger-button>\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';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 <ng-container *ngIf=\"!filterOptions?.length; else selectInput\">\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 </ng-container>\n</div>\n\n<ng-template #selectInput>\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 <mat-option *ngFor=\"let entry of filterOptions\" [value]=\"entry.key\">{{ entry.label }}</mat-option>\n </mat-select>\n </mat-form-field>\n</ng-template>\n","import { Component, ElementRef, EventEmitter, HostListener, Output } from '@angular/core';\nimport { DataTableFilterOption } from '../data-table-filter-options';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, 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 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\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 this.expandedElement = this.expandedElement === element ? null : element;\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;\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.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 <div *ngIf=\"tableActions?.length || (filterMode === 'COLUMN_BASED' && showDeleteFilterAction)\">\n <mad-button-group *ngFor=\"let actionGroup of tableActions\" class=\"table-action-group\">\n <mad-outline-button\n [hidden]=\"isHidden(tableAction)\"\n [disabled]=\"isDisabled(tableAction)\"\n *ngFor=\"let tableAction of actionGroup\"\n (click)=\"onActionEvent(tableAction)\"\n >\n {{ translateLabels ? (tableAction.label | translate) : tableAction.label }}\n {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </mad-button-group>\n <mad-button-group class=\"table-action-group\" *ngIf=\"filterMode === 'COLUMN_BASED' && showDeleteFilterAction\">\n <button\n mat-icon-button\n [matTooltip]=\"'common.filter.delete.tooltip' | translate\"\n [disabled]=\"disableDeleteFilterButton()\"\n class=\"delete-filter-action\"\n color=\"primary\"\n (click)=\"onDeleteFilter()\"\n >\n <mat-icon fontSet=\"material-icons-outlined\" matBadgeColor=\"warn\" [matBadge]=\"getFilterBadgeContent()\"> filter_alt_off </mat-icon>\n </button>\n </mad-button-group>\n </div>\n <mat-form-field data-cy=\"filter-input\" *ngIf=\"filterMode === 'TABLE_BASED'\">\n <mat-label>{{ translateLabels ? (filterLabel | translate) : filterLabel }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"onTableBasedFilterEvent($event)\" placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <ng-container *ngFor=\"let rowAction of rowActions\">\n <button\n data-cy=\"row-action-menu-button\"\n *ngIf=\"!isHidden(rowAction)\"\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 </ng-container>\n </ng-template>\n</mat-menu>\n\n<!-- editable definition menu -->\n<mat-menu #editableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button\n *ngFor=\"let definition of editableColumnDefinitions\"\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 </ng-template>\n</mat-menu>\n\n<!-- viewable definition menu -->\n<mat-menu #viewableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button\n *ngFor=\"let definition of viewableColumnDefinitions\"\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 </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div\n *ngIf=\"filterMode === 'COLUMN_BASED' || showEmptyTable || !!dataSource.filteredData?.length; else noData\"\n class=\"datatable\"\n [class]=\"tableClass\"\n>\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"loading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\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 <div *ngIf=\"selectionEmitMode !== 'NONE' && selectionMode === 'BATCH'\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox (change)=\"onToggleSelectAll()\" [checked]=\"allSelected\"></mat-checkbox>\n </div>\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 <div *ngIf=\"showCheckbox(element)\" 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 <!-- SINGLE: row action menu icon -->\n <mad-icon-button\n data-cy=\"row-action-button\"\n *ngIf=\"showRowActionIcon(element) && hasVisibleRowActions(element)\"\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 <!-- SINGLE: row radio button -->\n <div *ngIf=\"showRadioButton(element)\" 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 <!-- EXPANDABLE: row is expandable/collapsable -->\n <mad-icon-button *ngIf=\"showExpandableButton(element)\" (click)=\"onExpand($event, element)\">\n <mat-icon *ngIf=\"expandedElement !== element\">keyboard_arrow_down</mat-icon>\n <mat-icon *ngIf=\"expandedElement === element\">keyboard_arrow_up</mat-icon>\n </mad-icon-button>\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Cell definitions and rows with injected cells -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <!-- header cell to be injected -->\n <ng-container [ngSwitch]=\"getDataTableHeaderType(column)\">\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchCase=\"'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 </ng-container>\n <ng-container *ngSwitchDefault>\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ translateLabels ? (column.label | translate) : column.label }}\n </th>\n </ng-container>\n </ng-container>\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 [ngSwitch]=\"column.transformer\"\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 <!-- Expanded Content Column - The row is made up of this one column that spans across all columns -->\n <ng-container *ngIf=\"!!expandableDef\" [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 <!-- 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 <ng-container *ngIf=\"!!expandableDef\">\n <tr mat-row *matRowDef=\"let element; columns: [expandableColumnDef]\" class=\"mad-data-table-expandable-row\"></tr>\n </ng-container>\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<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 <mad-icon-button *ngIf=\"editableColumnDefinitions?.length === 1\" (click)=\"onColumnSettings()\">\n <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n </mad-icon-button>\n <!-- column settings: multiple definitions -->\n <mad-icon-button *ngIf=\"(editableColumnDefinitions?.length || 0) > 0\" [matMenuTriggerFor]=\"editableDefinitionMenu\">\n <mat-icon>view_column</mat-icon>\n </mad-icon-button>\n <!-- column view: multiple definitions -->\n <mad-icon-button *ngIf=\"(viewableColumnDefinitions?.length || 0) > 0\" [matMenuTriggerFor]=\"viewableDefinitionMenu\">\n <mat-icon>preview</mat-icon>\n </mad-icon-button>\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<!-- No data alert -->\n<ng-template #noData>\n <div data-cy=\"no-data-block\" class=\"noDataText\">\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"loading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ translateLabels ? (noDataText | translate) : noDataText }}\n </div>\n</ng-template>\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, STEP_STATE, StepState } 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, NgIf } 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, NgIf],\n})\nexport class StepHeaderComponent extends CdkStepHeader implements AfterViewInit, OnDestroy {\n @Input()\n index: number;\n\n @Input()\n label: string;\n\n @Input() state: StepState;\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.state === STEP_STATE.NUMBER && !this.completed && !this.hasError) {\n return 'step-state-neutral'; //initiale state is 'number'\n } else if (this.completed) {\n return 'step-state-complete';\n } else if (this.hasError) {\n return 'step-state-error';\n }\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 [style.background]=\"this.selected && !this.closed ? '#d8e2e9' : '#ffffff'\"\n [ngClass]=\"this.hasError ? 'error-border' : 'check-border'\"\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 <div *ngIf=\"this.completed || this.hasError\" class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n <span data-testid=\"step-number\" *ngIf=\"!this.hasError && !this.completed\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\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 { NgFor, NgTemplateOutlet, NgIf } 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: [NgIf, 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: [NgFor, 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 <div *ngIf=\"!last\">\n <mad-primary-button data-cy=\"next-step-button\" (click)=\"next()\">{{ nextBtnLbl }}</mad-primary-button>\n </div>\n <div *ngIf=\"last\">\n <mad-primary-button data-cy=\"complete-step-button\" (click)=\"completeLast()\">{{ doneBtnLbl }}</mad-primary-button>\n </div>\n </div>\n </div>\n</ng-template>\n","<!-- Vertical stepper -->\n<ng-container>\n <div data-cy=\"step-container\" *ngFor=\"let step of steps; let i = index; let isLast = last; let isFirst = first\">\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</ng-container>\n\n<ng-template let-step=\"step\" let-i=\"i\" #stepTemplate>\n <mad-step-header\n class=\"mat-vertical-stepper-header\"\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 [completed]=\"step.completed\"\n [hasError]=\"step.hasError\"\n [state]=\"_getIndicatorType(i, step.state)\"\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 { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatStepper, MatStepperModule } from '@angular/material/stepper';\nimport { NgFor, NgIf } from '@angular/common';\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, NgFor, NgIf],\n})\nexport class FlowbarComponent implements OnInit, AfterViewInit {\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 ngAfterViewInit(): void {\n this.stepper._getIndicatorType = (): any => 'number';\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 <mat-step *ngFor=\"let step of _steps\" [aria-labelledby]=\"!step.enabled ? 'disabled' : null\">\n <ng-template matStepLabel>\n <div class=\"step-header-overlay\" *ngIf=\"this._headerClick.observers.length > 0\" (click)=\"headerClick($event, step)\"></div>\n <span>{{ step.label }}</span>\n </ng-template>\n </mat-step>\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 { 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\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 <ng-container *ngIf=\"headerContentPortal; else defaultActionHeader\">\n <ng-template [cdkPortalOutlet]=\"headerContentPortal\"></ng-template>\n </ng-container>\n <ng-template #defaultActionHeader>\n <div class=\"sidebar-wrapper default-header-wrapper\">\n <div class=\"back-and-title\">\n <button class=\"back-button\" *ngIf=\"hasBackButton\">\n <mat-icon (click)=\"goToPreviousPage()\" color=\"primary\"> arrow_back</mat-icon>\n </button>\n <h2 class=\"title\">\n {{ title }}\n </h2>\n </div>\n <ng-template [cdkPortalOutlet]=\"actionGroupPortal\"></ng-template>\n </div>\n </ng-template>\n </mad-content-header>\n <mad-content-panel-container>\n <mad-content-panel-container-sidebar *ngIf=\"sideBarItemsPortal\">\n <ng-template [cdkPortalOutlet]=\"sideBarItemsPortal\"></ng-template>\n </mad-content-panel-container-sidebar>\n <mad-content-panel-container-content *ngIf=\"contentPortal\">\n <ng-template [cdkPortalOutlet]=\"contentPortal\"></ng-template>\n </mad-content-panel-container-content>\n <mad-content-panel-container-footer *ngIf=\"footerPortal\">\n <ng-template [cdkPortalOutlet]=\"footerPortal\"></ng-template>\n </mad-content-panel-container-footer>\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 { NgIf, NgFor, 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 imports: [\n MatToolbarModule,\n NgIf,\n RouterLink,\n MatButtonModule,\n MatIconModule,\n NgFor,\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 <a\n data-cy=\"back-link-button\"\n [routerLink]=\"getBackAction().routerLink\"\n [queryParams]=\"getBackAction().queryParams\"\n *ngIf=\"isRouterLink(getBackAction())\"\n >\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-href-button\" [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink(getBackAction())\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a data-cy=\"back-action-button\" (click)=\"getBackAction().action()\" *ngIf=\"isAction(getBackAction())\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a data-cy=\"main-action-link-button\" [routerLink]=\"mainAction.routerLink\" *ngIf=\"isRouterLink(mainAction)\">\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 <a data-cy=\"main-action-button\" (click)=\"mainAction.action()\" *ngIf=\"isAction(mainAction)\">\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 </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n data-cy=\"material-main-link-button\"\n *ngIf=\"isRouterLink(getBackAction())\"\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 <mad-material-action-button\n data-cy=\"material-main-action-button\"\n *ngIf=\"isAction(getBackAction())\"\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 </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n data-cy=\"action-icon-button\"\n (click)=\"action.action()\"\n *ngIf=\"\n (!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) ||\n i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0 : 1) : 2) ||\n !!action.importantAction\n \"\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 </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"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 <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"!action.importantAction\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button\n data-cy=\"burger-menu-button\"\n *ngIf=\"i >= (hasImportantToolbarActions() ? 0 : 1)\"\n mat-menu-item\n (click)=\"action.action()\"\n [title]=\"action.actionName\"\n >\n <mat-icon\n color=\"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 </ng-container>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\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';\n\n@NgModule({\n exports: [\n ReadOnlyFormFieldModule,\n ButtonModule,\n ToolbarModule,\n MaterialActionButtonModule,\n NumericFieldModule,\n CardModule,\n QuickListModule,\n ThrottleClickModule,\n SidebarModule,\n ],\n})\nexport class MaterialAddonsModule {}\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[madDragAndDrop]',\n standalone: true,\n})\nexport class DragAndDropDirectiveDirective {\n @Output()\n onFileDropped = new EventEmitter<any>();\n\n @HostBinding('style.background-color') private background = '$background-color';\n @HostBinding('style.opacity') private opacity = '1';\n\n //Dragover listener\n @HostListener('dragover', ['$event']) onDragOver(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$selection-background';\n this.opacity = '0.8';\n }\n\n //Dragleave listener\n @HostListener('dragleave', ['$event']) onDragLeave(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$background-color';\n this.opacity = '1';\n }\n\n //Drop listener\n @HostListener('drop', ['$event'])\n public ondrop(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.background = '$background-color';\n this.opacity = '1';\n let files = event.dataTransfer.files;\n if (files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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 { DragAndDropDirectiveDirective } from './drag-and-drop-directive.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: [CommonModule, MatCardModule, MatIconModule, ButtonModule, TranslateModule, DragAndDropDirectiveDirective, MatChipsModule],\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.css',\n})\nexport class FileUploadComponent implements OnInit {\n @Input() id: string;\n @Input() multiple: boolean;\n @Input() accept: string[];\n @Input() text: string;\n @Input() showFileList: boolean = false;\n @Input() removable: boolean = true;\n @Output() fileEmitter = new EventEmitter<FileList>();\n @Output() errorEmitter = new EventEmitter<UploadError>();\n\n fileList: File[] = [];\n acceptedFileTypes: string[] = [];\n\n ngOnInit(): void {\n this.setAcceptedFileTypes();\n }\n\n private setAcceptedFileTypes(): void {\n if (this.accept?.length) {\n this.acceptedFileTypes = this.accept.map((ext) => `.${ext.toLowerCase()}`);\n }\n }\n\n uploadFile(files: FileList): void {\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 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 fileExtension = fileName.split('.').pop()?.toLowerCase();\n return this.acceptedFileTypes.includes(`.${fileExtension}`);\n }\n\n private addFiles(fileArray: File[]): void {\n if (!this.multiple) {\n this.fileList = [];\n }\n this.fileList.push(...fileArray);\n }\n\n openFile(file: File): void {\n window.open(window.URL.createObjectURL(file));\n }\n\n remove(file: File): void {\n this.fileList = this.fileList.filter((f) => f !== file);\n this.fileEmitter.emit(this.createFileListFromArray(this.fileList));\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 hasSingleFile(): boolean {\n return !this.multiple && this.fileList.length === 1;\n }\n}\n","<mat-card\n (click)=\"fileInput.click()\"\n (onFileDropped)=\"uploadFile($event)\"\n class=\"uploadFileContainer\"\n madDragAndDrop\n id=\"uploadFileContainer\"\n>\n <input\n #fileInput\n (change)=\"uploadFile($event.target.files)\"\n (click)=\"fileInput.value = null\"\n [accept]=\"acceptedFileTypes\"\n [id]=\"id\"\n [multiple]=\"multiple\"\n hidden\n type=\"file\"\n />\n <mat-card-content>\n <ng-container *ngIf=\"hasSingleFile(); else uploadDefault\">\n {{ fileList[0].name }}\n </ng-container>\n\n <ng-template #uploadDefault>\n <mat-icon>vertical_align_top</mat-icon>\n {{ text ? text : 'Upload' }}\n </ng-template>\n </mat-card-content>\n</mat-card>\n\n<ng-container *ngIf=\"showFileList\">\n <mat-chip-listbox>\n <mat-chip *ngFor=\"let file of fileList\" (click)=\"openFile(file)\" class=\"download\" [removable]=\"removable\" (removed)=\"remove(file)\">\n {{ file.name }}\n <mat-icon matChipRemove *ngIf=\"removable\">delete_forever</mat-icon>\n </mat-chip>\n </mat-chip-listbox>\n</ng-container>\n","export const VERSION = '19.0.1';\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, EventEmitter, Inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\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: [CommonModule, MatIconModule, MatButtonModule],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n})\nexport class AlertComponent {\n @Input() type: AlertType = this.alertConfig.type;\n @Input() message: string = '';\n @Input() size: AlertSize = this.alertConfig.size;\n @Input() actionText: string = '';\n @Input() closeable: boolean = true;\n @Output() close = new EventEmitter<void>();\n @Output() action = new EventEmitter<void>();\n\n get icon() {\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 default:\n return '';\n }\n }\n\n constructor(@Inject(MAD_ALERT_DEFAULT_CONFIGURATION) private alertConfig: AlertDefaultOptions) {}\n\n closeAlert() {\n this.close.emit();\n }\n\n onAction() {\n this.action.emit();\n }\n}\n","<div data-cy=\"alert\" class=\"alert\" [ngClass]=\"[type, size]\">\n <span data-cy=\"alert-icon\" class=\"icon\"\n ><mat-icon>{{ icon }}</mat-icon></span\n >\n <span data-cy=\"alert-message\" class=\"message\">{{ message }}</span>\n <ng-container *ngIf=\"actionText\">\n <span data-cy=\"alert-action-btn\" class=\"action-btn\" (click)=\"onAction()\">{{ actionText }}</span>\n </ng-container>\n <ng-container *ngIf=\"closeable\">\n <button mat-icon-button data-cy=\"alert-close-btn\" class=\"close-btn\" (click)=\"closeAlert()\">\n <mat-icon>close</mat-icon>\n </button>\n </ng-container>\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/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 './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","i10","uuidV4","i7","i1.DataTableFilter","i1.DataTableTemplateExpandableColumnDefinition","i8","i9","i12.OutlineButtonComponent","i13.IconButtonComponent","i14.MadButtonGroupComponent","i15","i1.DataTableTemplateColumnDefinition","i3.ContentHeaderComponent","i4.ContentPanelContainerComponent","i5.ContentPanelContainerContentComponent","i6.ContentPanelContainerFooterComponent","i7.ContentPanelContainerSidebarComponent","i8.MainContainerComponent","i3.ToolbarService"],"mappings":"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"}
|