@leanix/components 0.4.114 → 0.4.115

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"leanix-components.mjs","sources":["../../../../libs/components/src/lib/core-ui/core-ui.constants.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.html","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.html","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.ts","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.html","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.html","../../../../libs/components/src/lib/core-ui/components/button/button.component.ts","../../../../libs/components/src/lib/core-ui/components/button/button.component.html","../../../../libs/components/src/lib/core-ui/components/card/card.component.ts","../../../../libs/components/src/lib/core-ui/components/card/card.component.html","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.ts","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.html","../../../../libs/components/src/lib/core-ui/tooltip/to-cdk-position.function.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip-position.interface.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.html","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.directive.ts","../../../../libs/components/src/lib/core-ui/components/colored-label/colored-label.component.ts","../../../../libs/components/src/lib/core-ui/components/colored-label/colored-label.component.html","../../../../libs/components/src/lib/shared/observe.ts","../../../../libs/components/src/lib/core-ui/services/resize-observer.service.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.html","../../../../libs/components/src/lib/core-ui/components/file-download-button/file-download-button.component.ts","../../../../libs/components/src/lib/core-ui/components/file-download-button/file-download-button.component.html","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.ts","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.html","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.html","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.html","../../../../libs/components/src/lib/core-ui/components/table/table.component.ts","../../../../libs/components/src/lib/core-ui/directives/after-view-init.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose-group.service.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autofocus.directive.ts","../../../../libs/components/src/lib/core-ui/linkify/linkify.pipe.ts","../../../../libs/components/src/lib/core-ui/linkify/unlinkify.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/br.pipe.ts","../../../../libs/components/src/lib/core-ui/functions/core-css.helpers.ts","../../../../libs/components/src/lib/core-ui/pipes/contrast-color.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/custom-date.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-range.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-term.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-is-uuid.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-time-ago.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-translate.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/markdown.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/nbsp.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/sort.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-before.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-after.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-between.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/unescape-curly-braces.pipe.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/annotations/required.ts","../../../../libs/components/src/lib/core-ui/functions/highlight-text.function.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.html","../../../../libs/components/src/lib/shared/misc-helpers.ts","../../../../libs/components/src/lib/forms-ui/directives/selectable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/keyboard-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/helpers/key-codes.constants.ts","../../../../libs/components/src/lib/forms-ui/directives/keyboard-action-source.directive.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.html","../../../../libs/components/src/lib/forms-ui/components/option/option.component.ts","../../../../libs/components/src/lib/forms-ui/components/option/option.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.ts","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/copy-button/copy-button.component.ts","../../../../libs/components/src/lib/forms-ui/components/copy-button/copy-button.component.html","../../../../libs/components/src/lib/forms-ui/directives/mark-invalid.directive.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol-map.constant.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.html","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.html","../../../../libs/components/src/lib/shared/date-helpers.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/date-formatter.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/isBs3.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/daypicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/monthpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/yearpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.config.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.html","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/constants.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.ts","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.html","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.ts","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.html","../../../../libs/components/src/lib/forms-ui/components/input/input.component.ts","../../../../libs/components/src/lib/forms-ui/directives/select-dropdown.directive.ts","../../../../libs/components/src/lib/forms-ui/models/base-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.html","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.html","../../../../libs/components/src/lib/forms-ui/components/picker/picker-trigger.directive.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.html","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.html","../../../../libs/components/src/lib/forms-ui/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.html","../../../../libs/components/src/lib/forms-ui/components/slider-toggle/slider-toggle.component.ts","../../../../libs/components/src/lib/forms-ui/components/slider-toggle/slider-toggle.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.html","../../../../libs/components/src/lib/shared/html-helpers.function.ts","../../../../libs/components/src/lib/forms-ui/directives/contenteditable.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-submit.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-error.directive.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-selection.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-term.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/format-number.pipe.ts","../../../../libs/components/src/lib/forms-ui/forms-ui.module.ts","../../../../libs/components/src/lib/forms-ui/models/sorting.interface.ts","../../../../libs/components/src/lib/forms-ui/validators/date-in-foreseeable-future.validator.ts","../../../../libs/components/src/lib/forms-ui/validators/string-not-in-array.validator.ts","../../../../libs/components/src/lib/modal-ui/modal.constants.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.html","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.html","../../../../libs/components/src/lib/modal-ui/directives/modal-content.directive.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.html","../../../../libs/components/src/lib/modal-ui/modal.module.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-content.directive.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.html","../../../../libs/components/src/lib/popover-ui/directives/popover-click.directive.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-hover.directive.ts","../../../../libs/components/src/lib/popover-ui/popover-ui.module.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.html","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.html","../../../../libs/components/src/lib/tab-ui/tab-ui.module.ts","../../../../libs/components/src/index.ts","../../../../libs/components/src/leanix-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DATE_FORMATS = new InjectionToken<DateFormatsProvider>('DATE_FORMATS', {\n providedIn: 'root',\n factory: () => ({\n getDateFormat: () => 'YYYY-MM-DD',\n getDateTimeFormat: () => 'YYYY-MM-DD HH:mm',\n getDateTimeFormatWithSeconds: () => 'YYYY-MM-DD HH:mm:ss'\n })\n});\n\nexport const DATE_FN_LOCALE = new InjectionToken<Function>('DATE_FN_LOCALE');\nexport const LOCALE_FN = new InjectionToken<Function>('LOCALE_FN');\nexport const GLOBAL_TRANSLATION_OPTIONS = new InjectionToken<GlobalTranslationOptionsProvider>('GLOBAL_TRANSLATION_OPTIONS');\n\nexport interface DateFormatsProvider {\n getDateFormat(): string;\n getDateTimeFormat(): string;\n getDateTimeFormatWithSeconds(): string;\n}\n\nexport interface GlobalTranslationOptionsProvider {\n createGlobalTranslationOptions(): TranslationOptions;\n}\n\nexport interface TranslationOptions {\n [key: string]: string;\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-badge',\n templateUrl: 'badge.component.html',\n styleUrls: ['badge.component.scss'],\n standalone: true,\n imports: [NgClass]\n})\nexport class BadgeComponent {\n @Input()\n content?: string | number;\n\n @Input()\n size: 'default' | 'small' = 'default';\n\n @Input()\n color: 'primary' | 'gray' | 'darkgray' | 'green' = 'primary';\n\n get classes() {\n return `${this.size} ${this.color}`;\n }\n}\n","<span class=\"content\" [ngClass]=\"classes\">{{ content }}</span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BannerComponent {\n @Input() type: 'success' | 'info' | 'danger' | 'warning' = 'warning';\n\n @HostBinding('class') get bannerTypeClass() {\n return `banner-${this.type}`;\n }\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-button-group',\n templateUrl: 'button-group.component.html',\n styleUrls: ['button-group.component.scss'],\n standalone: true\n})\nexport class ButtonGroupComponent {\n @Input()\n separator: 'margin' | 'border' = 'margin';\n\n @HostBinding('class.marginSeparator')\n public get hasMarginSeperator() {\n return this.separator === 'margin';\n }\n\n @HostBinding('class.borderSeparator')\n public get hasBorderSeparator() {\n return this.separator === 'border';\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lx-tiny-spinner',\n templateUrl: 'tiny-spinner.component.html',\n standalone: true\n})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { TinySpinnerComponent } from '../tiny-spinner/tiny-spinner.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[lx-button]',\n templateUrl: 'button.component.html',\n styleUrls: ['button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, TinySpinnerComponent]\n})\nexport class ButtonComponent {\n @Input() @HostBinding('attr.size') size: 'small' | 'medium' | 'large' | 'auto' = 'medium';\n @Input() @HostBinding('attr.color') color: 'default' | 'primary' | 'danger' | 'success' | 'light' = 'default';\n @Input() @HostBinding('attr.mode') mode: 'solid' | 'ghost' | 'outline' | 'link' = 'solid';\n @Input() @HostBinding('class.pressed') pressed: boolean = false;\n @Input() @HostBinding('class.selected') selected: boolean = false;\n @Input() @HostBinding('class.square') square: boolean = false;\n @Input() @HostBinding('class.circle') circle: boolean = false;\n @Input() disabled: boolean = false;\n @Input()\n @HostBinding('class.loading')\n showSpinner: boolean = false;\n\n @HostBinding('disabled')\n get isDisabled() {\n return this.disabled || this.showSpinner;\n }\n}\n","<lx-tiny-spinner *ngIf=\"showSpinner\"></lx-tiny-spinner>\n<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-card',\n templateUrl: 'card.component.html',\n styleUrls: ['card.component.scss'],\n standalone: true\n})\nexport class CardComponent {\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content></ng-content>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-collapsible',\n templateUrl: 'collapsible.component.html',\n styleUrls: ['collapsible.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent]\n})\nexport class CollapsibleComponent {\n readonly NAME = 'CollapsibleComponent';\n\n @Input() disableSectionToggle = false;\n @Input() hideSectionToggle = false;\n @Input() toggleSize: ButtonComponent['size'] = 'small';\n @Input() toggleTitle = '';\n\n @Input() collapsed: boolean = false;\n @Output() collapsedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.notClickable')\n get notClickable(): boolean {\n return this.disableSectionToggle || this.hideSectionToggle;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n this.onToggleSection(event);\n }\n\n onToggleSection(event: MouseEvent) {\n if (!this.disableSectionToggle && !this.hideSectionToggle) {\n event.stopPropagation();\n this.collapsed = !this.collapsed;\n this.collapsedChange.emit(this.collapsed);\n }\n }\n}\n","<button\n *ngIf=\"!hideSectionToggle\"\n lx-button\n mode=\"link\"\n [title]=\"toggleTitle\"\n [size]=\"toggleSize\"\n class=\"sectionToggle\"\n type=\"button\"\n [disabled]=\"disableSectionToggle\"\n [square]=\"true\"\n (click)=\"onToggleSection($event)\"\n>\n <i class=\"far fa-angle-down\" [class.collapsed]=\"collapsed\"></i>\n</button>\n<div class=\"collapsible-title\">\n <ng-content></ng-content>\n</div>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { TooltipPosition } from './tooltip-position.interface';\n\nfunction toCdkX(x: 'left' | 'center' | 'right'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n }\n}\n\nfunction invertCdkX(x: 'start' | 'center' | 'end'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'start':\n return 'end';\n case 'center':\n return 'center';\n case 'end':\n return 'start';\n }\n}\n\nfunction invertCdkY(x: 'top' | 'center' | 'bottom'): 'top' | 'center' | 'bottom' {\n switch (x) {\n case 'top':\n return 'bottom';\n case 'center':\n return 'center';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction offsetYDirection(x: 'top' | 'center' | 'bottom'): number {\n switch (x) {\n case 'top':\n return -6;\n case 'center':\n return 0;\n case 'bottom':\n return 6;\n }\n}\n\nfunction offsetXDirection(position: TooltipPosition): number {\n switch (position.y) {\n case 'center':\n switch (position.x) {\n case 'left':\n return -6;\n case 'center':\n return 0;\n case 'right':\n return 6;\n }\n case 'top':\n case 'bottom':\n switch (position.x) {\n case 'left':\n return 30;\n case 'center':\n return 0;\n case 'right':\n return -30;\n }\n }\n}\n\nexport function toCdkPosition(position: TooltipPosition): ConnectedPosition {\n return {\n originX: toCdkX(position.x),\n originY: position.y,\n overlayX: invertCdkX(toCdkX(position.x)),\n overlayY: invertCdkY(position.y),\n offsetY: offsetYDirection(position.y),\n offsetX: offsetXDirection(position)\n };\n}\n","export interface TooltipPosition {\n x: 'left' | 'center' | 'right';\n y: 'top' | 'center' | 'bottom';\n}\n\nexport function isValidX(x: string): x is 'left' | 'center' | 'right' {\n return ['left', 'center', 'right'].includes(x);\n}\n\nexport function isValidY(y: string): y is 'top' | 'center' | 'bottom' {\n return ['top', 'center', 'bottom'].includes(y);\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TooltipPosition } from './tooltip-position.interface';\n\n@Component({\n selector: 'lx-tooltip',\n styleUrls: ['./tooltip.component.scss'],\n templateUrl: './tooltip.component.html',\n standalone: true,\n imports: [NgIf, NgClass]\n})\nexport class TooltipComponent {\n @Input() content = '';\n @Input() isHtmlContent: boolean = false;\n @Input() position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n}\n","<div *ngIf=\"!isHtmlContent; else htmlTooltip\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\">{{ content }}</div>\n<ng-template #htmlTooltip>\n <div [innerHtml]=\"content\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\"></div>\n</ng-template>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { toCdkPosition } from './to-cdk-position.function';\nimport { isValidX, isValidY, TooltipPosition } from './tooltip-position.interface';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[lxTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n @Input('lxTooltip') content?: string | null;\n @Input() set lxTooltipPosition(value: { x: string; y: string } | undefined) {\n this.position = {\n x: value && isValidX(value.x) ? value.x : 'center',\n y: value && isValidY(value.y) ? value.y : 'top'\n };\n }\n private position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n @Input() lxTooltipDelay?: number;\n @Input() lxTooltipIsHtmlContent: boolean = false;\n\n private overlayRef?: OverlayRef;\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private mouseOrFocusOnHost: boolean = false;\n\n get positionStrategy() {\n return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([toCdkPosition(this.position)]);\n }\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.overlayRef && changes['lxTooltipPosition']) {\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n if (this.tooltipRef) {\n if (changes['lxTooltipPosition']) {\n this.tooltipRef.instance.position = this.position;\n }\n if (changes['lxTooltipIsHtmlContent']) {\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n }\n if (changes['content']) {\n if (this.content) {\n this.tooltipRef.instance.content = this.content;\n this.overlayRef?.updatePosition();\n } else {\n this.overlayRef?.detach();\n }\n }\n }\n }\n\n @HostListener('mouseenter')\n @HostListener('focus')\n show() {\n this.mouseOrFocusOnHost = true;\n setTimeout(() => {\n if (!this.overlayRef?.hasAttached() && this.mouseOrFocusOnHost && this.content) {\n this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy });\n const tooltipPortal = new ComponentPortal(TooltipComponent);\n this.tooltipRef = this.overlayRef.attach(tooltipPortal);\n this.tooltipRef.instance.content = this.content;\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n this.tooltipRef.instance.position = this.position;\n }\n }, this.lxTooltipDelay ?? 90);\n }\n\n ngOnDestroy() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n\n @HostListener('mouseleave')\n @HostListener('click')\n @HostListener('blur')\n hide() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\n\n@Component({\n selector: 'lx-colored-label',\n templateUrl: 'colored-label.component.html',\n styleUrls: ['colored-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, TooltipDirective]\n})\nexport class ColoredLabelComponent {\n @Input() public bgColor: string = '#c0c0c0';\n @Input() public color: string = '#000';\n\n @Input() public tooltip = '';\n @Input() public classes: string[] = ['label'];\n\n get ngClass() {\n const classObj: { [className: string]: boolean } = {};\n this.classes.forEach((c) => {\n classObj[c] = true;\n });\n return classObj;\n }\n}\n","<span [ngClass]=\"ngClass\" [lxTooltip]=\"tooltip\" [style.background-color]=\"bgColor\" [style.color]=\"color\">\n <ng-content></ng-content>\n</span>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, skipWhile } from 'rxjs/operators';\n\n/**\n * Observe creates an Observable stream and notifies the changes from an observed property.\n *\n * @example\n * Input() foo: string;\n * @Observe('foo') foo$: Observable<string>;\n */\nexport function Observe<T>(observedKey: string): PropertyDecorator {\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (target: Object, key: string | symbol): void => {\n const subjects = new WeakMap<Record<string, unknown>, BehaviorSubject<T | undefined>>();\n\n const getSubject = (instance: Record<string, unknown>) => {\n if (!subjects.has(instance)) {\n subjects.set(instance, new BehaviorSubject<T | undefined>(undefined));\n }\n return subjects.get(instance) || new BehaviorSubject<T | undefined>(undefined);\n };\n\n Object.defineProperty(target, key, {\n get(): Observable<T> {\n return getSubject(this).pipe(\n // An initial `undefined` value is triggered above when initializing the subject for a given instance.\n // This skips the initial `undefined` values, until a defined value is provided. Then, no values\n // are removed from the stream.\n skipWhile((value) => value === undefined),\n map((value) => value as T) // required for TS null check\n );\n }\n });\n\n Object.defineProperty(target, observedKey, {\n get(): T | undefined {\n return getSubject(this).getValue();\n },\n set(instanceNewValue: T): void {\n getSubject(this).next(instanceNewValue);\n }\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { timer } from 'rxjs';\n\nexport type LxResizeObserverCallback = (resizedElement: ResizeObserverEntry) => void;\n\ninterface ResizeableElement extends Element {\n handleResize: LxResizeObserverCallback;\n}\n\nfunction isResizeableElement(element: any): element is ResizeableElement {\n return element && !!element.handleResize;\n}\n\n/**\n * Sharing one ResizeObserver object results in much better performance\n * over individual components creating their own ResizeObserver.\n * This is why this service exists.\n * Source:\n * - https://github.com/WICG/resize-observer/issues/59#issuecomment-408098151\n * - https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n *\n * Learn more about the ResizeObserver API:\n * - https://www.w3.org/TR/resize-observer/\n * - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n * - https://www.digitalocean.com/community/tutorials/js-resize-observer\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService {\n private resizeObserver?: ResizeObserver;\n\n observe(element: ResizeableElement, callback: LxResizeObserverCallback, options?: ResizeObserverOptions) {\n if (!this.resizeObserver) {\n try {\n this.resizeObserver = new ResizeObserver(this.resizeObserverCallback.bind(this));\n } catch {\n // All the browsers we support implement the ResizeObserver API.\n // For unsupported browsers, there's this \"one time artifical resize event\".\n // They will not get the functionality tied to later resize events.\n timer(500).subscribe(() => callback(this.getMockOneTimeResizeEventForUnsupportedBrowsers(element)));\n return;\n }\n }\n element.handleResize = callback;\n this.resizeObserver.observe(element, options);\n }\n\n unobserve(element: HTMLElement) {\n if (!this.resizeObserver) {\n return;\n }\n this.resizeObserver.unobserve(element);\n }\n\n private resizeObserverCallback(entries: ResizeObserverEntry[], _observer: ResizeObserver) {\n entries.forEach((entry) => {\n if (isResizeableElement(entry.target)) {\n entry.target.handleResize(entry);\n }\n });\n }\n\n /**\n * All browsers we officially support implement the ResizeObserver API.\n * Still as a curtesy do customers who for some reason have older browsers\n * we call the callback once with the initial dimensions of the element\n * and then do not react on resize events afterwards.\n * This should still make them happier than a \"browser not supported\" warning.\n */\n private getMockOneTimeResizeEventForUnsupportedBrowsers(element: ResizeableElement) {\n const contentRect = {\n bottom: element.clientHeight,\n height: element.clientHeight,\n left: 0,\n right: element.clientWidth,\n top: 0,\n width: element.clientWidth,\n x: 0,\n y: 0\n };\n return {\n borderBoxSize: [{ blockSize: element.clientHeight, inlineSize: element.clientWidth }],\n contentBoxSize: [\n {\n blockSize: element.clientHeight,\n inlineSize: element.clientWidth\n }\n ],\n contentRect: {\n ...contentRect,\n toJSON: () => JSON.stringify(contentRect)\n },\n devicePixelContentBoxSize: [\n {\n blockSize: element.clientWidth,\n inlineSize: element.clientWidth\n }\n ],\n target: element\n };\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { escape } from 'lodash/fp';\nimport { BehaviorSubject, combineLatest, concat, merge, Observable, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n pairwise,\n skip,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom\n} from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { ButtonComponent } from '../button/button.component';\n\nexport const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken<number>('LX_ELLIPSIS_DEBOUNCE_ON_RESIZE', {\n providedIn: 'root',\n factory: () => EllipsisComponent.DEFAULT_RESIZE_DEBOUNCE_MS\n});\n\n/**\n * You can set a custom max-width CSS property on your lx-ellipsis host element\n * if you want its content to never exceed a specific width,\n * e.g. <lx-ellipsis style=\"max-width: 300px\" content=\"Hello World[..]\"></lx-ellipsis>.\n */\n@Component({\n selector: 'lx-ellipsis',\n templateUrl: 'ellipsis.component.html',\n styleUrls: [`ellipsis.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent, AsyncPipe]\n})\nexport class EllipsisComponent implements OnInit, OnDestroy {\n static DEFAULT_RESIZE_DEBOUNCE_MS = 500;\n\n @Input() content: string = '';\n /**\n * Only set this to false if the content is not a user provided string\n * or if you sanitize the provided content yourself.\n */\n @Input() escapeHtmlInContent = true;\n\n @Observe('contentSpanEl') private contentSpanEl$!: Observable<ElementRef<HTMLSpanElement>>;\n @ViewChild('contentEl') contentSpanEl!: ElementRef<HTMLSpanElement>;\n @Observe('showMoreButtonEl') private showMoreButtonEl$!: Observable<ElementRef<HTMLButtonElement>>;\n @ViewChild('showMoreButton', { read: ElementRef }) showMoreButtonEl!: ElementRef<HTMLButtonElement>;\n\n isShowingMore$ = new BehaviorSubject(false);\n\n showButton$!: Observable<boolean>;\n showMoreButtonLabel$!: Observable<string>;\n\n sanitizedContent$!: Observable<string>;\n @Observe('content')\n private content$!: Observable<string>;\n\n private destroyed$ = new Subject<void>();\n\n constructor(\n @Inject(LX_ELLIPSIS_DEBOUNCE_ON_RESIZE)\n private debounceMsAfterResize: number,\n private cdRef: ChangeDetectorRef,\n private hostEl: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit(): void {\n this.sanitizedContent$ = this.content$.pipe(\n map((content) => {\n if (this.escapeHtmlInContent && typeof content === 'string') {\n return escape(content);\n }\n return content;\n })\n );\n\n this.showMoreButtonLabel$ = this.isShowingMore$.pipe(\n switchMap((isShowingMore) => {\n const translationKey = isShowingMore ? 'common.showLess' : 'common.showMore';\n return this.translateService.get(translationKey);\n })\n );\n const newWidthOnResize$ = new Subject<number>();\n const newHeightOnResize$ = new Subject<number>();\n this.resizeObserverService.observe(this.hostEl.nativeElement, (resizedElement) => {\n newWidthOnResize$.next(resizedElement.contentRect.width);\n newHeightOnResize$.next(resizedElement.contentRect.height);\n });\n const containerWidthChangedSignificantlyAfterResize$ = newWidthOnResize$.pipe(\n startWith(0),\n pairwise(),\n filter(([previousWidth, newWidth]) => Math.abs(newWidth - previousWidth) > 1),\n map(([, newWidth]) => newWidth)\n );\n const userTriggeredTriggeredShowLess$ = this.isShowingMore$.pipe(filter((isShowingMore) => !isShowingMore));\n\n const reevaluateIfContentIsOverflowing$ = combineLatest([\n this.contentSpanEl$,\n userTriggeredTriggeredShowLess$,\n containerWidthChangedSignificantlyAfterResize$\n ]);\n\n const isContentOverflowing$ = merge(\n concat(\n reevaluateIfContentIsOverflowing$.pipe(take(1)), // debounce all but the first output\n reevaluateIfContentIsOverflowing$.pipe(debounceTime(this.debounceMsAfterResize))\n ),\n this.content$.pipe(skip(1)) // immediately reevaluate on subsequent content changes\n ).pipe(\n withLatestFrom(this.contentSpanEl$),\n map(([, contentSpanRef]) => this.isContentOverflowing(contentSpanRef))\n );\n\n const userTriggeredTriggeredShowMore$ = this.isShowingMore$.pipe(filter((isShowingMore) => isShowingMore));\n\n const buttonHeight$ = this.showMoreButtonEl$.pipe(\n filter((showMoreButtonEl) => !!showMoreButtonEl),\n map((showMoreButtonEl) => showMoreButtonEl.nativeElement.offsetHeight),\n distinctUntilChanged()\n );\n const userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$ = combineLatest([\n buttonHeight$,\n newHeightOnResize$.pipe(distinctUntilChanged())\n ]).pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => isShowingMore),\n map(([[buttonHeight, newHeight]]) => {\n const heightOfOneLine = buttonHeight;\n const showLessButtonMarginTop = 4;\n const heightOfSpanInShowMoreMode = newHeight - buttonHeight - showLessButtonMarginTop;\n const thresholdToDetectContentInSingleLine = 4;\n const differenceBetweenContentSpanAndButtonHeight = Math.abs(heightOfOneLine - heightOfSpanInShowMoreMode);\n const isSpanContentDisplayedInOneLineAgain = differenceBetweenContentSpanAndButtonHeight < thresholdToDetectContentInSingleLine;\n return isSpanContentDisplayedInOneLineAgain;\n })\n );\n const contentFitsInOneLineAgainWhileShowMoreIsEnabled$ = userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$.pipe(\n startWith(false),\n pairwise(),\n filter(([previousTextIsNowInOneLineAgain]) => !previousTextIsNowInOneLineAgain),\n map(([, textIsNowInOneLineAgain]) => !textIsNowInOneLineAgain)\n );\n const contentIsOverflowingAndShowMoreIsNotEnabled$ = isContentOverflowing$.pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => !isShowingMore),\n map(([isContentLongerThanContainerWidth]) => {\n return isContentLongerThanContainerWidth;\n })\n );\n this.showButton$ = merge(\n userTriggeredTriggeredShowMore$,\n contentFitsInOneLineAgainWhileShowMoreIsEnabled$,\n contentIsOverflowingAndShowMoreIsNotEnabled$\n );\n\n // As long as no parent component is listening on resize events,\n // the ChangeDetectorRef.markForCheck() call done by the async pipe\n // will not result in a change detection cycle in this component when its size changes.\n // This is the least amount of ChangeDetectorRef.detectChanges() calls\n // I was able to come up with. The Angular profiler shows acceptable numbers of change detection.\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n this.detectChangesWhenObservableEmits(this.showButton$);\n this.detectChangesWhenObservableEmits(this.content$);\n this.detectChangesWhenObservableEmits(contentIsOverflowingAndShowMoreIsNotEnabled$);\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n }\n\n onShowMoreToggle() {\n this.isShowingMore$.next(!this.isShowingMore$.getValue());\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.resizeObserverService.unobserve(this.hostEl.nativeElement);\n }\n\n private detectChangesWhenObservableEmits(observable$: Observable<any>) {\n observable$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.cdRef.detectChanges());\n }\n\n private isContentOverflowing(contentSpanElRef: ElementRef<HTMLSpanElement>) {\n const scrollWidth = contentSpanElRef.nativeElement.scrollWidth;\n const offsetWidth = contentSpanElRef.nativeElement.clientWidth;\n return offsetWidth < scrollWidth;\n }\n}\n","<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-file-download-button',\n templateUrl: 'file-download-button.component.html',\n styleUrls: ['file-download-button.component.scss'],\n standalone: true,\n imports: [NgIf, ButtonComponent, TranslateModule]\n})\nexport class FileDownloadButtonComponent implements OnInit {\n @Input() downloadRequest!: (any: any) => Observable<any>;\n @Input() initialDownloadLink!: string;\n @Input() refreshKeyUrl!: string;\n @Input() downloadLabel!: string;\n\n @Output() downloadFinish = new EventEmitter<string>();\n @Output() downloadStarted = new EventEmitter<void>();\n\n readonly NAME = 'FileDownloadButtonComponent';\n\n downloadLink!: string;\n downloaded!: boolean;\n\n ngOnInit() {\n this.downloadLink = this.initialDownloadLink;\n }\n\n download(event: MouseEvent) {\n this.downloadStarted.emit();\n this.openUrlInNewWindow(this.downloadLink);\n this.downloaded = true;\n event.preventDefault();\n this.downloadFinish.emit(this.downloadLink);\n }\n\n requestDownload() {\n if (this.downloadRequest) {\n this.downloadRequest(this.refreshKeyUrl).subscribe((downloadUrl) => {\n this.downloadLink = downloadUrl;\n });\n }\n }\n\n private openUrlInNewWindow(url: string, target: string = '_blank', features?: string): Window | null {\n const newTab = window.open(url, target, features);\n // In case a popup blocker has blocked the newly opened tab/window, \"newTab\" will be null\n if (newTab) {\n newTab.opener = null;\n }\n return newTab;\n }\n}\n","<a class=\"btn btn-primary\" *ngIf=\"!downloaded && !!downloadLink\" [href]=\"downloadLink\" (click)=\"download($event)\">{{\n downloadLabel ? downloadLabel : ('buttons.download' | translate)\n}}</a>\n<button lx-button color=\"light\" size=\"large\" *ngIf=\"(downloaded && refreshKeyUrl) || !downloadLink\" (click)=\"requestDownload()\">\n {{ NAME + '.newDownload' | translate }}\n</button>\n","import { NgFor, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nexport interface Icon {\n /** Font-awesome icon class, e.g. 'address-book'. See http://fontawesome.io/icons/ */\n type: string;\n color?: string;\n reverse?: boolean;\n}\n\n@Component({\n selector: 'lx-icon-scale',\n templateUrl: 'icon-scale.component.html',\n styleUrls: ['icon-scale.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class IconScaleComponent implements OnChanges {\n @Input() public icon: Icon = {\n type: 'star'\n };\n @Input() public numberOfColoredItems = 0;\n @Input() public numberOfItems = 0;\n\n readonly NAME = 'IconScaleComponent';\n iconArray: boolean[] = [];\n\n public ngOnChanges(_changes: SimpleChanges) {\n this.iconArray = this.createIconArray(this.numberOfColoredItems, this.numberOfItems, this.icon?.reverse || false);\n }\n\n private createIconArray(coloredItems: number, totalItems: number, reverse: boolean): boolean[] {\n return [...Array(totalItems).keys()].map((index) => {\n if (reverse) {\n return index >= totalItems - coloredItems;\n } else {\n return index < coloredItems;\n }\n });\n }\n}\n","<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * The following CSS classes should be used to style this component. The use of the inputs is deprecated.\n * - fullSpace: Sets position to absolute with full height and width => fills ancestor with position set.\n * - fullSpaceFixed: Sets position to fixed with full height and width => fills window\n * (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`\n * - fadeBackground: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.\n */\n@Component({\n selector: 'lx-spinner',\n templateUrl: 'spinner.component.html',\n styleUrls: ['spinner.component.scss'],\n standalone: true\n})\nexport class SpinnerComponent {\n @HostBinding('class.fadeBackgroundFromInput') @Input() public fadeBackground: boolean = false;\n}\n","<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { OrderOption, SortingOptions } from '../../../pipes/sort.pipe';\n\n@Component({\n selector: 'lx-th',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class TableHeaderComponent {\n @Input() column?: string;\n\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n @HostBinding('class.sortable') sortable = false;\n\n private _order: OrderOption;\n\n constructor(\n private elmentRef: ElementRef<HTMLElement>,\n private changeDetection: ChangeDetectorRef\n ) {}\n\n @HostListener('keydown.enter') @HostListener('click') onSort() {\n if (this.column) {\n if (!this.order) {\n this.order = 'ASC';\n } else if (this.order === 'ASC') {\n this.order = 'DESC';\n } else {\n this.order = undefined;\n }\n this.sortChange.emit({ key: this.order ? this.column : undefined, order: this.order });\n }\n }\n\n set order(value) {\n this._order = value;\n this.changeDetection.markForCheck();\n }\n\n get order() {\n return this._order;\n }\n\n set isTabable(tabable: boolean) {\n this.elmentRef.nativeElement.tabIndex = tabable ? 0 : -1;\n }\n}\n","<span>\n <ng-content></ng-content>\n</span>\n<i class=\"fas\" [class.fa-sort-up]=\"order === 'ASC'\" [class.fa-sort-down]=\"order === 'DESC'\" *ngIf=\"order && sortable\"></i>\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { merge } from 'rxjs';\nimport { SortingOptions } from '../../pipes/sort.pipe';\nimport { TableHeaderComponent } from './table-header/table-header.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table[lx-table]',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class TableComponent implements AfterContentInit, OnChanges {\n @Input() isSortable = false;\n @Input() sort?: SortingOptions;\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n @ContentChildren(TableHeaderComponent, { descendants: true }) tableHeaders!: QueryList<TableHeaderComponent>;\n\n constructor(private elementRef: ElementRef<HTMLTableElement>) {\n this.elementRef.nativeElement.classList.add('table', 'table-hover');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['sort'] && this.tableHeaders) {\n this.tableHeaders.forEach((header) => {\n this.setSortValueOnHeader(header);\n });\n }\n\n if (changes['isSortable'] && this.tableHeaders) {\n this.tableHeaders.forEach((header) => {\n header.sortable = this.isSortable;\n header.isTabable = this.isSortable;\n });\n }\n }\n\n ngAfterContentInit(): void {\n this.tableHeaders.forEach((header) => {\n header.sortable = this.isSortable;\n header.isTabable = this.isSortable;\n\n if (this.sort) {\n this.setSortValueOnHeader(header);\n }\n });\n\n const sortChange$ = merge(...this.tableHeaders.map((header) => header.sortChange.asObservable()));\n\n sortChange$.subscribe((change) => {\n this.tableHeaders.forEach((header) => {\n this.setSortValueOnHeader(header);\n });\n this.sortChange.emit(change);\n });\n }\n\n private setSortValueOnHeader(header: TableHeaderComponent) {\n if (header.column !== this.sort?.key) {\n header.order = undefined;\n } else {\n header.order = this.sort?.order;\n }\n }\n}\n","import { AfterViewInit, Directive, EventEmitter, Output } from '@angular/core';\n\n/**\n * Allows to register an event handler for the \"AfterViewInit\" lifecycle hook.\n * This can be used to do something whenever a component enters the view. This\n * might be due to an *ngIf condition.\n *\n * Example:\n * ```\n * <lx-component-a #componentA></lx-component-a>\n * <lx-component-b *ngIf=\"someCondition\" (lxAfterViewInit)=\"componentA.close()\"></lx-component-b>\n * ```\n */\n@Directive({\n selector: '[lxAfterViewInit]',\n standalone: true\n})\nexport class AfterViewInitDirective implements AfterViewInit {\n @Output() lxAfterViewInit = new EventEmitter<void>();\n\n ngAfterViewInit() {\n this.lxAfterViewInit.emit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AutocloseDirective } from './autoclose.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class AutocloseGroupService {\n private registry: Record<string, AutocloseDirective[]> = {};\n\n register(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.addToGroup(directive);\n }\n }\n\n unregister(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.removeFromGroup(directive);\n }\n }\n\n private removeFromGroup(directive: AutocloseDirective) {\n const name = directive.autocloseGroup!;\n this.registry[name] = this.getGroup(name).filter((d) => d !== directive);\n }\n\n private addToGroup(directive: AutocloseDirective) {\n const directivesOfSameGroup = this.getGroup(directive.autocloseGroup!);\n directivesOfSameGroup.forEach((d) => setTimeout(() => d.autoclose.emit()));\n directivesOfSameGroup.push(directive);\n }\n\n private getGroup(name: string): AutocloseDirective[] {\n if (!this.registry[name]) {\n this.registry[name] = [];\n }\n return this.registry[name]!;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseGroupService } from './autoclose-group.service';\n\n@Directive({\n selector: '[lxAutoclose]',\n standalone: true\n})\nexport class AutocloseDirective implements OnInit, OnDestroy {\n @Output() autoclose = new EventEmitter<EventTarget | null>();\n\n /**\n * Allows to group lxAutoclose elements in order to prevent\n * to open multiple of them in that same group. If no group\n * is provided this prevention does not happen.\n */\n @Input() autocloseGroup?: string;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private groupService: AutocloseGroupService\n ) {}\n\n ngOnInit() {\n fromEvent(document, 'click', { capture: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => this.onClick(event?.target));\n\n this.groupService.register(this);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.groupService.unregister(this);\n }\n\n private onClick(target: EventTarget | null) {\n const clickedInside = this.elementRef.nativeElement.contains(target);\n if (!clickedInside) {\n this.autoclose.emit(target);\n }\n }\n}\n","import { AfterContentInit, Directive, ElementRef, Input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[lxAutofocus]',\n standalone: true\n})\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone\n ) {}\n\n ngAfterContentInit() {\n if (this.lxAutofocus !== false) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.elementRef.nativeElement.focus({ preventScroll: this.lxAutofocusPreventScroll });\n }, this.lxAutofocusTimeout);\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * This pipe transforms...\n * - \"raw\" http(s) links\n * - markdown link syntax\n * ... into clickable anchor elements.\n *\n * The characters \"<\" and \">\" are escaped with their HTML entities &lt; and &gt;.\n *\n * You have an user interface where you don't want clickable links but also\n * don't want users to see the \"ugly\" markdown link syntax?\n * -> Use the 'lxUnlikify' pipe to replace markdown link syntax with just the link name\n */\n@Pipe({\n name: 'lxLinkify',\n standalone: true\n})\nexport class LxLinkifyPipe implements PipeTransform {\n /**\n * This is not the \"one URL regex to rule them all\", but a more realistic one which should work\n * for any URLs that our customers include in text fields on a Fact Sheet.\n *\n * Regex rules explained in plain text:\n *\n * (?:(?:https?):\\/\\/) -> Links must start with \"https://\" or \"http://\"\n *\n * (?:[^\\s/$.?#][^\\s]*(?<![\\.)])) LET'S SPLIT THIS ONE UP\n *\n * [^\\s/$.?#][^\\s]* -> Match any legal URL character until the next whitespace\n * (?<![\\.)] -> A negative lookahead to prevent matching a dot or parenthesis following a URL\n *\n * Link to regex101: https://regex101.com/r/d3KtfH/1 (NOTE: please update this link when changing the regex)\n */\n public static readonly HTTP_LINK_REGEX = /(?:(?:https?):\\/\\/)(?:[^\\s/$.?#][^\\s]*)/gi;\n\n /**\n * This will match the markdown link syntax: [link name](url)\n * Regex rules explained in plain text:\n *\n * (?:\\[([^\\]]*)\\]) -> Match any characters inside square brackets\n * \\(([^\\s\\/$.?#][^\\s]*)\\) -> Notice that this is the same regex as the HTTP_LINK_REGEX above,\n * but without the requirement for the http protocol.\n * This allows for links without including the protocol or also \"mailto:hello@world.de\" links\n *\n * Link to regex101: https://regex101.com/r/5UMUH8/1\n */\n public static readonly NAMED_LINK_REGEX = /(?:\\[([^\\]]*)\\])\\(([^\\s\\/$.?#][^\\s]*)\\)/gi;\n\n transform(text?: string | null, escape = true): string | undefined | null {\n if (text && typeof text === 'string') {\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escape ? this.escapeHtmlInUserProvidedString(text) : text);\n const textWithRawAndNamedLinks = this.turnMarkdownStyleLinksIntoAnchorTags(textWithRawLinks);\n return textWithRawAndNamedLinks;\n } else {\n return text;\n }\n }\n\n private turnMarkdownStyleLinksIntoAnchorTags(text: string) {\n let textWithRawAndNamedLinks = text;\n const namedLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n namedLinkMatches.forEach((namedLinkMatch) => {\n const [source, name, url] = namedLinkMatch;\n const urlIsValid = url && !/javascript\\:/i.test(url);\n if (source && name && urlIsValid) {\n textWithRawAndNamedLinks = textWithRawAndNamedLinks.replace(\n source,\n `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${name}</a>`\n );\n }\n });\n return textWithRawAndNamedLinks;\n }\n\n private wrapRawHttpLinksWithAnchorTags(text: string) {\n let textWithRawLinks = text;\n /**\n * Keeping track of this index prevents infinite loops\n * where a previously processed link starts with the same characters\n * as a second link.\n * e.g. https://angular.io/docs followed by https://angular.io\n */\n let nextIndexToStartReplacingFrom = 0;\n const rawLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.HTTP_LINK_REGEX, text);\n rawLinkMatches.forEach((rawLinkMatch) => {\n const [url] = rawLinkMatch;\n const wrapUrlInAnchor = (sanitizedUrlMatch: string) => {\n const firstPart = textWithRawLinks.substring(0, nextIndexToStartReplacingFrom);\n const anchorTagHtml = `<a href=\"${sanitizedUrlMatch}\" target=\"_blank\" rel=\"noopener noreferrer\">${sanitizedUrlMatch}</a>`;\n const secondPart = textWithRawLinks.substring(nextIndexToStartReplacingFrom).replace(sanitizedUrlMatch!, anchorTagHtml);\n textWithRawLinks = firstPart + secondPart;\n nextIndexToStartReplacingFrom = rawLinkMatch.index + anchorTagHtml.length;\n };\n if (url) {\n /*\n * TODO: get rid of all this code once Safari supports negative lookbehinds in regular expressions\n * The following is RegExp that handles the same stuff as the JS code below:\n *\n * /(?:(?:(?<!\\]\\())(?:https|http):\\/\\/)(?:[^\\s/$.?#][^\\s]*(?<![\\.)]))/gi;\n *\n * Demo on regex101: https://regex101.com/r/7Vl9bg/1\n *\n * Check lookbehind support here: https://caniuse.com/?search=lookbehind\n */\n const lastUrlCharacterIndex = rawLinkMatch.index + url.length - 1;\n const textUsedToPerformMatching = rawLinkMatch.input;\n const lastCharacterInUrl = textUsedToPerformMatching[lastUrlCharacterIndex];\n const twoCharactersInFrontOfTheLink =\n rawLinkMatch.index > 3\n ? `${textUsedToPerformMatching[rawLinkMatch.index - 2]}${textUsedToPerformMatching[rawLinkMatch.index - 1]}`\n : '';\n const isMarkdownSyntaxLink = twoCharactersInFrontOfTheLink === '](';\n\n if (!isMarkdownSyntaxLink && lastCharacterInUrl === '.') {\n const characterAfterUrl = textUsedToPerformMatching[lastUrlCharacterIndex + 1];\n if (!characterAfterUrl || characterAfterUrl === ' ' || characterAfterUrl === '\\n') {\n const urlWithoutDotAtTheEnd = url.slice(0, -1);\n wrapUrlInAnchor(urlWithoutDotAtTheEnd);\n }\n } else if (!isMarkdownSyntaxLink) {\n wrapUrlInAnchor(url);\n }\n }\n });\n return textWithRawLinks;\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n\n /**\n * We assume that lxLinkify is exclusively used on user provided strings.\n * This is why we want to escape any other HTML tags that are already present in the string.\n * The logic implemented here has been used with no issues for three years in our Fact Sheet comments. See https://github.com/gregjacobs/Autolinker.js/pull/313\n *\n * When using lxLinkify in conjunction with other pipes that add HTML, make sure to use lxLinkify first,\n * so that it doesn't escape the HTML of any previous pipes.\n */\n private escapeHtmlInUserProvidedString(input: string) {\n return input.replace(/<|>/gi, (match) => '&' + (match === '>' ? 'g' : 'l') + 't;');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LxLinkifyPipe } from './linkify.pipe';\n\n/**\n * This pipe replaces markdown link syntax with just the link name (omits the link altogether).\n * Example: [Angular documentation](http://angular.io/docs) -> Angular documentation\n *\n * It can also be used for \"bridging the gap\" until your view is ready to use \"lxLinkify\"\n * and you just want to get rid of the \"useless\" markdown syntax fast.\n *\n * While there are views where we want markdown style links to be clickable anchor tags,\n * there are other views where this can degrade the UX.\n * Example: in the Fact Sheet list on the inventory list view, having an arbitrary number\n * of links on the page can slow down the keyboard navigation while navigating through the list.\n */\n@Pipe({\n name: 'lxUnlinkify',\n standalone: true\n})\nexport class LxUnlinkifyPipe implements PipeTransform {\n transform(text?: string | null): string | undefined | null {\n if (text && typeof text === 'string') {\n let textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = text;\n const markdownLinkSyntaxMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n markdownLinkSyntaxMatches.forEach((markdownLinkSyntaxMatch) => {\n const [source, name] = markdownLinkSyntaxMatch;\n if (source && name) {\n textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName.replace(\n source,\n name\n );\n }\n });\n\n return textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName;\n } else {\n return text;\n }\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { trimEnd } from 'lodash/fp';\n\n@Pipe({\n name: 'lxBr',\n standalone: true\n})\nexport class BrPipe implements PipeTransform {\n transform(input: string | null | undefined, options: { isTrimEnd?: boolean } = {}) {\n if (input) {\n if (options.isTrimEnd) {\n input = trimEnd(input);\n }\n return input.replace(/[\\n\\r]/g, '<br/>');\n }\n return input;\n }\n}\n","import Color from 'color';\n\n/**\n * Compute the most eligible text color for a given background color (black or white), depending on the luminance of the\n * background color. In case the provided color is undefined or invalid, white (#FFFFFF) is returned.\n *\n * @param colorHex Color string in hexadecimal encoding.\n * @returns Equivalent contrast color in hexadecimal encoding.\n */\nexport function getContrastColor(colorHex?: string): string {\n try {\n const color = Color(colorHex || '#000');\n // Check http://codepen.io/WebSeed/pen/pvgqEq\n const a = 1 - (0.299 * color.red() + 0.587 * color.green() + 0.114 * color.blue()) / 255;\n const d = a < 0.4 ? 0 : 255;\n return Color({ r: d, g: d, b: d }).hex();\n } catch {\n return '#FFFFFF';\n }\n}\n\nexport function shorthandHexHandle(hex: string): string {\n const shorthandRegex = /^(#)([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const shorthand = hex.match(shorthandRegex);\n if (shorthand) {\n const convertedHex = shorthand[1]! + shorthand[2] + shorthand[2] + shorthand[3] + shorthand[3] + shorthand[4] + shorthand[4];\n return convertedHex;\n } else {\n return hex;\n }\n}\n\nexport function isValidHexColor(color: string) {\n return /^#[0-9A-F]{6}$/i.test(color);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getContrastColor, isValidHexColor, shorthandHexHandle } from '../functions/core-css.helpers';\n@Pipe({\n name: 'lxContrastColor',\n standalone: true\n})\nexport class ContrastColorPipe implements PipeTransform {\n transform(color: string): string {\n if (color) {\n return isValidHexColor(shorthandHexHandle(color)) ? getContrastColor(color) : '';\n }\n return '';\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxDate',\n standalone: true\n})\nexport class CustomDatePipe implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(value: Date | string | number | null | undefined, f: string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return value ? format(value, f, { locale }) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\n@Pipe({\n name: 'lxHighlightRange',\n standalone: true\n})\nexport class HighlightRangePipe implements PipeTransform {\n transform(text: string, offset: number = 0, length: number = 0): string {\n const highlightedMarkup = this.doTransform(text, offset, length);\n return DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] });\n }\n\n private doTransform(text: string | null, offset: number, length: number): string {\n if (!text || offset < 0 || length < 0 || offset >= text?.length || offset + length > text?.length) {\n return '';\n }\n const highlightedPart = text.slice(offset, offset + length);\n return text.slice(0, offset) + (highlightedPart.length !== 0 ? this.highlight(highlightedPart) : '') + text.slice(offset + length);\n }\n\n private highlight(text: string): string {\n return `<span class=\"termHighlight\">${text}</span>`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nexport interface HighlightTermSearchOptions {\n /**\n * Whether the search term should be exactly matched in the given text. When set to true, the following\n * characters and spaces between words are included in the search: - [ ] / { } ( ) * + ? . ^ $ |\n */\n exactMatch: boolean;\n}\n\n/**\n * These characters are treated as seperators by\n * elasticsearch and split the input into search tokens\n * which are used to find matches.\n */\nconst STANDARD_TOKENIZER_SEPERATORS = /[^a-zA-Z\\d\\s]/g;\n\n@Pipe({\n name: 'lxHighlightTerm',\n standalone: true\n})\nexport class HighlightTermPipe implements PipeTransform {\n /**\n * Transforms the input text with highlighted text according to the provided search term.\n * @param text The input text.\n * @param search The search term to highlight.\n * @param options The highlight term search options.\n * @returns The transformed text with highlighted search term.\n */\n transform(text?: string, search?: string | null, options: HighlightTermSearchOptions = { exactMatch: false }): string | undefined {\n if (text) {\n const highlightedMarkup = this.doTransform(text, search, options);\n return highlightedMarkup ? DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] }) : undefined;\n } else {\n return undefined;\n }\n }\n\n private doTransform(text: string, search: string | null | undefined, options: HighlightTermSearchOptions): string | undefined {\n if (search) {\n let pattern = options.exactMatch ? search.trim() : search.replace(STANDARD_TOKENIZER_SEPERATORS, ' ');\n\n // replace special chars for a backslash for RegExp\n pattern = pattern.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n\n pattern = options.exactMatch\n ? pattern\n : pattern\n .split(' ')\n .filter((t) => {\n return t.length > 0;\n })\n .join('|');\n\n const regex = new RegExp(pattern, 'gi');\n return text.replace(regex, (match) => `<span class=\"termHighlight\">${match}</span>`); // add highlighting to matched regex pattern\n } else {\n return text;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction isUuid(s: string) {\n const uuidRegEx = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n return uuidRegEx.test(s);\n}\n\n@Pipe({\n name: 'lxIsUuid',\n pure: true,\n standalone: true\n})\nexport class LxIsUuidPipe implements PipeTransform {\n transform(input: string | null | undefined): boolean {\n return input ? isUuid(input) : false;\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { distanceInWords } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxTimeAgo',\n pure: true,\n standalone: true\n})\nexport class LxTimeAgo implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(input: Date | string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return distanceInWords(new Date(), input, { locale, addSuffix: true });\n }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { isArray, isEqual } from 'lodash-es';\nimport { GLOBAL_TRANSLATION_OPTIONS, GlobalTranslationOptionsProvider } from '../core-ui.constants';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'lxTranslate',\n pure: false, // Because the underlying TranslatePipe isn't pure, too.\n standalone: true\n})\nexport class LxTranslatePipe implements PipeTransform {\n private translatePipe: TranslatePipe;\n\n // Cache\n private interpolateParamsObject?: _.Dictionary<string>;\n private lastInterpolateArgs?: Record<string, unknown>;\n private lastArgsExtended?: _.Dictionary<string>;\n\n constructor(\n private translate: TranslateService,\n private cdRef: ChangeDetectorRef,\n @Optional() @Inject(GLOBAL_TRANSLATION_OPTIONS) private globalTranslationOptionsProvider?: GlobalTranslationOptionsProvider\n ) {\n this.translatePipe = new TranslatePipe(this.translate, this.cdRef);\n }\n\n public transform(query: string | string[], interpolations?: Record<string, unknown>): any {\n query = isArray(query) ? query.join('.') : query;\n if (!this.interpolateParamsObject) {\n this.interpolateParamsObject = this.globalTranslationOptionsProvider?.createGlobalTranslationOptions();\n this.lastArgsExtended = this.interpolateParamsObject;\n }\n\n if (interpolations && !isEqual(this.lastInterpolateArgs, interpolations)) {\n this.lastInterpolateArgs = interpolations;\n this.lastArgsExtended = Object.assign({}, this.interpolateParamsObject, interpolations);\n }\n\n return this.translatePipe.transform(query, this.lastArgsExtended);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line no-restricted-imports\nimport { marked, Renderer } from 'marked';\n\ninterface MarkdownOptions {\n disableListRendering?: boolean;\n}\n\n@Pipe({\n name: 'lxMarkdown',\n standalone: true\n})\nexport class MarkdownPipe implements PipeTransform {\n readonly renderer: Renderer;\n\n constructor() {\n this.renderer = new Renderer();\n this.renderer.link = (href: string, title: string, text: string) =>\n `<a href=\"${href}\" title=\"${title || ''}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n }\n\n transform(markdownText: string | null | undefined, markdownOptions?: MarkdownOptions): string {\n const options: marked.MarkedOptions = { renderer: this.renderer };\n if (markdownOptions?.disableListRendering && options.renderer) {\n options.renderer.list = (body: string, _ordered: boolean, positionInList: number) => {\n return `${positionInList}. ${body}`;\n };\n options.renderer.listitem = (text: string) => {\n return text;\n };\n }\n return markdownText ? marked.parse(markdownText, options) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxNbsp',\n standalone: true\n})\nexport class NbspPipe implements PipeTransform {\n transform(text: string | null | undefined): string {\n return text ? text.replace(/&nbsp;/g, ' ') : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get, sortBy } from 'lodash/fp';\n\nexport type OrderOption = 'ASC' | 'DESC' | undefined;\nexport interface SortingOptions {\n key?: string;\n caseInsensitive?: boolean;\n order?: OrderOption;\n}\n\n@Pipe({\n name: 'lxSort',\n standalone: true\n})\nexport class SortPipe implements PipeTransform {\n transform<T>(items: Readonly<T[]> | null, options: SortingOptions = {}): any[] {\n if (!items) {\n return [];\n }\n\n if (options.order !== 'DESC') {\n return applySorting(options, items);\n } else {\n return applySorting(options, items).reverse();\n }\n }\n}\n\nfunction applySorting<T>(options: SortingOptions, items: Readonly<T[]>): T[] {\n if (options.caseInsensitive) {\n return options.key ? sortBy<T>(getValueForKey(options.key), items) : items.slice().sort(sortStringCaseInsensitive());\n }\n return options.key ? sortBy<T>((item) => get(options.key!, item), items) : items.slice().sort();\n}\n\nfunction sortStringCaseInsensitive<T>() {\n return (a: T, b: T) => {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b, undefined, { sensitivity: 'base' });\n }\n if (a === b) {\n return 0;\n }\n if (a < b) {\n return -1;\n }\n return 1;\n };\n}\n\nfunction getValueForKey<T>(key: string) {\n return (item: T) => {\n const value = (<any>item)[key];\n if (typeof value === 'string') {\n return value.toLowerCase();\n }\n return value;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nexport function getTranslationParts(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarkAndParams: string | [string, any]\n): string[] {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMark = isArray(cutMarkAndParams) ? cutMarkAndParams[0] : cutMarkAndParams;\n const params = isArray(cutMarkAndParams) ? cutMarkAndParams[1] : null;\n const translation = translateService.instant(translationKey, params);\n const parts = split(translation, `[[${cutMark}]]`);\n if (parts.length === 1) {\n console.error(`'[[${cutMark}]]' not found in '${translation}' for key '${translationKey}'.`);\n }\n return parts;\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * preceding the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'link' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['link', params] }}\n * @see TranslationAfterPipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationBefore',\n standalone: true\n})\nexport class TranslationBeforePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {(string|[string, any])} cutMarkAndParams either just the cut-mark to split by or\n * an array of cut-mark string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[0]!;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getTranslationParts } from './translation-before.pipe';\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * following the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @see TranslationBeforePipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationAfter',\n standalone: true\n})\nexport class TranslationAfterPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[1] || '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nfunction getTranslationBetween(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarksAndParams: [string, string] | [string, string, any]\n): string {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMarks = cutMarksAndParams.slice(0, 2);\n const params = cutMarksAndParams[2] || null;\n const translation = translateService.instant(translationKey, params);\n const parts1 = split(translation, `[[${cutMarks[0]}]]`);\n if (parts1.length === 1) {\n console.error(`'[[${cutMarks[0]}]]' not found in '${translation}' for key '${translationKey}'.`);\n return translation;\n } else {\n const parts2 = split(parts1[1], `[[${cutMarks[1]}]]`);\n if (parts2.length === 1) {\n console.error(`'[[${cutMarks[1]}]]' not found in '${translation}' after '[[${cutMarks[0]}]]' for key '${translationKey}'.`);\n return translation;\n }\n return parts2[0]!;\n }\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * between the two cut-mark strings '[[<cutMark>]]'.\n * NB: This pipe should be used very rarely, as it fixes the order of cut-marks, which may make\n * them untranslateable in some languages. It also makes the template harder to read.\n * Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationBetween:['link', 'userLink'] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'userLink' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBetween:['link', 'userLink', params] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['userLink', params] }}\n * @see TranslationBeforePipe\n * @see TranslationAferPipe\n */\n@Pipe({\n name: 'lxTranslationBetween',\n standalone: true\n})\nexport class TranslationBetweenPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {([string, string]|[string, string, any])} interpolationsAndParams either just the interpolation string to split by or\n * an array of interpolation string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarksAndParams: [string, string] | [string, string, any]): string {\n return getTranslationBetween(this.translateService, translationKey, cutMarksAndParams);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxUnescapeCurlyBraces',\n standalone: true\n})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeComponent } from './components/badge/badge.component';\nimport { BannerComponent } from './components/banner/banner.component';\nimport { ButtonGroupComponent } from './components/button-group/button-group.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { ColoredLabelComponent } from './components/colored-label/colored-label.component';\nimport { EllipsisComponent } from './components/ellipsis/ellipsis.component';\nimport { FileDownloadButtonComponent } from './components/file-download-button/file-download-button.component';\nimport { IconScaleComponent } from './components/icon-scale/icon-scale.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { TableHeaderComponent } from './components/table/table-header/table-header.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TinySpinnerComponent } from './components/tiny-spinner/tiny-spinner.component';\nimport { AfterViewInitDirective } from './directives/after-view-init.directive';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { LxLinkifyPipe } from './linkify/linkify.pipe';\nimport { LxUnlinkifyPipe } from './linkify/unlinkify.pipe';\nimport { BrPipe } from './pipes/br.pipe';\nimport { ContrastColorPipe } from './pipes/contrast-color.pipe';\nimport { CustomDatePipe } from './pipes/custom-date.pipe';\nimport { HighlightRangePipe } from './pipes/highlight-range.pipe';\nimport { HighlightTermPipe } from './pipes/highlight-term.pipe';\nimport { LxIsUuidPipe } from './pipes/lx-is-uuid.pipe';\nimport { LxTimeAgo } from './pipes/lx-time-ago.pipe';\nimport { LxTranslatePipe } from './pipes/lx-translate.pipe';\nimport { MarkdownPipe } from './pipes/markdown.pipe';\nimport { NbspPipe } from './pipes/nbsp.pipe';\nimport { SortPipe } from './pipes/sort.pipe';\nimport { TranslationAfterPipe } from './pipes/translation-after.pipe';\nimport { TranslationBeforePipe } from './pipes/translation-before.pipe';\nimport { TranslationBetweenPipe } from './pipes/translation-between.pipe';\nimport { UnescapeCurlyBracesPipe } from './pipes/unescape-curly-braces.pipe';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\n\n@NgModule({\n imports: [\n TranslateModule.forChild(),\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n FileDownloadButtonComponent\n ],\n exports: [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n FileDownloadButtonComponent,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n providers: [LxTimeAgo]\n})\nexport class LxCoreUiModule {}\n","/**\n * Makes a component input required.\n * On the first usage, an understandable error is thrown if the annotated property has not been set before.\n *\n * Usage:\n *\n * Component({\n * selector: 'my-dir',\n * template: '<div></div>',\n * });\n * export class MyComponent {\n * @Input() @Required a: number;\n * }\n *\n * @see https://stackoverflow.com/questions/35528395/make-directive-input-required\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function Required(target: object, propertyKey: string) {\n Object.defineProperty(target, propertyKey, {\n get() {\n throw new Error(`Attribute '${propertyKey}' is required`);\n },\n set(value) {\n Object.defineProperty(target, propertyKey, {\n value,\n writable: true,\n configurable: true\n });\n },\n configurable: true\n });\n}\n","export interface HighlightTextSettings {\n /**\n * Whether to match case sensitively\n */\n caseSensitive?: boolean;\n /**\n * Whether to match whole words only\n */\n wordsOnly?: boolean;\n /**\n * The element to wrap highlighted terms in\n */\n element?: string;\n /**\n * The class name to apply to highlighted terms\n */\n className?: string;\n}\n\nconst defaultElement = 'span';\nconst defaultClassName = 'highlight';\n\n/**\n * Highlights all occurrences of search terms in a given element.\n * This function will recursively traverse all child nodes of the given element,\n * and apply the highlight to text nodes only.\n *\n * Replaces the 'jquery-highlight' plugin: https://github.com/knownasilya/jquery-highlight/blob/master/jquery.highlight.js\n * @param elem The element to highlight\n * @param terms The search terms to highlight - string or array of strings\n * @param settings Optional settings, @see HighlightTextSettings\n */\n\nexport function highlightText(elem: HTMLElement, terms: string | string[], settings?: HighlightTextSettings): void {\n const node = elem as Node;\n if (!isSupportedNode(node)) return;\n\n if (typeof terms === 'string') {\n terms = [terms];\n }\n\n terms = terms.map((term) => term.trim().replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&'));\n terms = terms.filter((term) => term && term.length > 0);\n if (terms.length === 0) {\n return;\n }\n\n const flag = settings?.caseSensitive ? '' : 'i';\n let pattern = '(' + terms.join('|') + ')';\n if (settings?.wordsOnly) {\n pattern = '\\\\b' + pattern + '\\\\b';\n }\n\n const regexp = new RegExp(pattern, flag);\n processNode(node, regexp, settings);\n}\n\n/**\n * Recursively process a given node\n * @param node The node to process\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction processNode(node: Node, regexp: RegExp, settings?: HighlightTextSettings): void {\n const nodeName = settings?.element || defaultElement;\n const className = settings?.className || defaultClassName;\n\n if (node.nodeType === Node.TEXT_NODE) {\n applyHightlightToTextNode(node as Text, regexp, settings);\n } else if (\n node.nodeType === Node.ELEMENT_NODE &&\n node.childNodes && // only element nodes that have children\n !/(script|style)/i.test(node.nodeName) && // ignore script and style nodes\n !(node.nodeName === nodeName.toUpperCase() && (node as Element).className === className) // ignore already highlighted nodes\n ) {\n node.childNodes.forEach((childNode) => {\n processNode(childNode, regexp, settings);\n });\n }\n}\n\n/**\n * Apply highlight to a given text node\n * @param node The text node to apply highlight to\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction applyHightlightToTextNode(node: Text, regexp: RegExp, settings?: HighlightTextSettings) {\n const match = node.data.match(regexp);\n if (!match || typeof match.index === 'undefined') return;\n\n const wrapper = document.createElement(settings?.element || defaultElement);\n wrapper.classList.add(settings?.className || defaultClassName);\n\n const wordNode = node.splitText(match.index);\n const nextNode = wordNode.splitText(match[0].length);\n const wordClone = wordNode.cloneNode(true);\n wrapper.appendChild(wordClone);\n node.parentNode?.replaceChild(wrapper, wordNode);\n\n if (match.length > 1) {\n // recursively apply highlightText if there are multiple matches in the same text node\n processNode(nextNode, regexp, settings);\n }\n}\n\nfunction isSupportedNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { HighlightTermPipe } from '../../../core-ui/pipes/highlight-term.pipe';\n\n@Component({\n selector: 'lx-basic-dropdown-item',\n templateUrl: 'basic-dropdown-item.component.html',\n styleUrls: ['basic-dropdown-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, HighlightTermPipe]\n})\nexport class BasicDropdownItemComponent {\n @Input() label!: string;\n @Input() description?: string;\n @Input() highlightTerm?: string;\n @Input() labelFontWeight: 'bold' | 'normal' = 'bold';\n @Input() descriptionFontStyle: 'italic' | 'normal' = 'normal';\n @Input() descriptionStyleOptions?: { maxLines?: number; shouldHighlightTerm?: boolean };\n\n @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","<div [class.boldLabel]=\"labelFontWeight === 'bold'\" [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n<div\n class=\"optionDescription\"\n [style.font-style]=\"descriptionFontStyle\"\n [ngClass]=\"{ maxTextLines: descriptionStyleOptions?.maxLines }\"\n [style.-webkit-line-clamp]=\"descriptionStyleOptions?.maxLines || 'inherit'\"\n [innerHtml]=\"description | lxHighlightTerm: (descriptionStyleOptions?.shouldHighlightTerm ? highlightTerm : undefined)\"\n></div>\n","/**\n * Schedule and wait for another ZoneJS microTask.\n * This should be preferred over setTimeout(), which\n * schedules a macroTask & thus triggers full tree change detection.\n */\nexport function executeOnNextTick(fn: Function) {\n Promise.resolve(null).then(() => fn());\n}\n\nexport function getCssVariable(cssVariableName: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(cssVariableName);\n}\n\nexport function scrollTop(container: HTMLElement, item: HTMLElement) {\n if (container && item) {\n const scrollDownNeeded = item.offsetTop + item.clientHeight > container.clientHeight;\n const scrollTopNeeded = item.offsetTop - item.clientHeight < container.scrollTop;\n if (scrollDownNeeded || scrollTopNeeded) {\n container.scrollTop = item.offsetTop - container.offsetTop;\n }\n } else {\n console.warn(\"Item or Container undefined, scrolling wasn't done.\");\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { scrollTop } from '../../shared/misc-helpers';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\n@Directive({\n selector: '[lxSelectableItem]',\n standalone: true\n})\nexport class SelectableItemDirective implements OnDestroy, DropdownItem {\n @Input() scrollInContainer!: HTMLElement;\n @Input() lxSelectableItem: any;\n\n @Output() select = new EventEmitter();\n\n get item() {\n return this.lxSelectableItem;\n }\n\n constructor(public readonly element: ElementRef<HTMLElement>) {}\n\n ngOnDestroy() {}\n\n scrollToItem() {\n if (this.scrollInContainer && this.element.nativeElement) {\n scrollTop(this.scrollInContainer, this.element.nativeElement);\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../directives/selectable-item.directive';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\nexport enum KeyboardSelectAction {\n PREV = 'PREV',\n NEXT = 'NEXT',\n FIRST = 'FIRST',\n LAST = 'LAST',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n EXECUTE = 'EXECUTE',\n UNSELECT = 'UNSELECT',\n CLOSE = 'CLOSE'\n}\n\n@Directive()\nexport class KeyboardSelectDirective implements OnDestroy, AfterViewInit {\n cdkOverlayOpenState = new ReplaySubject<boolean>(1);\n cdkOverlayOpen$ = this.cdkOverlayOpenState.asObservable().pipe(startWith(false), distinctUntilChanged());\n overlayPositioning: boolean = false;\n @Input() keyboardSelectAction = new Observable<KeyboardSelectAction | null>();\n @Output() selectedItemIndexChange = new EventEmitter<number>(true); // TODO: this is just index change from navigating (highlighting)\n\n @ViewChildren(SelectableItemDirective) _items!: QueryList<DropdownItem>;\n\n @ViewChild('keyboardSelectContainer', { static: true }) keyboardSelectContainer!: ElementRef<HTMLElement>;\n\n readonly destroyed$ = new Subject<void>();\n\n get selectedItem$(): Observable<any> {\n return this.selectedItemSubject$.asObservable();\n }\n\n // Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.\n private readonly selectedItemIndex$ = new BehaviorSubject<number>(-1);\n private readonly selectedItemSubject$ = new BehaviorSubject<DropdownItem | null>(null);\n\n public select(index: number) {\n this.selectedItemIndex$.next(index);\n }\n\n ngAfterViewInit(): void {\n const itemsChanges$ = this._items.changes.pipe(startWith(this._items));\n\n this.keyboardSelectAction\n .pipe(\n filter((action): action is KeyboardSelectAction => !!action),\n withLatestFrom(this.selectedItemIndex$, itemsChanges$),\n takeUntil(this.destroyed$)\n )\n .subscribe(([action, index, items]) => this.adaptSelectedIndexBasedOnKeyboardSelectAction(action, index, items));\n\n this.keyboardSelectAction\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.selectedItem$, (_, item) => item),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.select?.emit());\n\n this.selectedItemIndex$.pipe(takeUntil(this.destroyed$)).subscribe((index) => {\n this.selectedItemIndexChange.emit(index);\n });\n\n combineLatest([itemsChanges$, this.selectedItemIndex$])\n .pipe(\n delay(0),\n map(([items, index]: [QueryList<DropdownItem>, number]) => {\n if (index > -1) {\n return items.toArray()[index] ?? null;\n } else {\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectedItemSubject$);\n\n this.selectedItem$\n .pipe(\n filter((item) => !!item),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.scrollToItem());\n }\n\n public isItemSelected(item: HTMLElement, selectedItem: ElementRef<HTMLElement>) {\n return selectedItem && item === selectedItem.nativeElement;\n }\n\n private adaptSelectedIndexBasedOnKeyboardSelectAction(\n keyboardSelectAction: KeyboardSelectAction,\n currentIndex: number,\n items: QueryList<DropdownItem>\n ) {\n if (keyboardSelectAction === KeyboardSelectAction.PREV) {\n this.selectedItemIndex$.next(this.prev(currentIndex));\n } else if (keyboardSelectAction === KeyboardSelectAction.NEXT) {\n this.selectedItemIndex$.next(this.next(currentIndex, items));\n } else if (keyboardSelectAction === KeyboardSelectAction.LAST) {\n this.selectedItemIndex$.next(this.last(items));\n } else if (keyboardSelectAction === KeyboardSelectAction.FIRST) {\n this.selectedItemIndex$.next(0);\n } else if (keyboardSelectAction === KeyboardSelectAction.UNSELECT) {\n this.selectedItemIndex$.next(-1);\n }\n }\n\n private prev(index: number): number {\n if (index > -1) {\n return index - 1;\n } else {\n return index;\n }\n }\n\n private next(index: number, items: QueryList<DropdownItem>): number {\n if (items.length - 1 > index) {\n return index + 1;\n } else {\n return index;\n }\n }\n\n private last(items: QueryList<DropdownItem>): number {\n return items.length - 1;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-basic-dropdown',\n templateUrl: 'basic-dropdown.component.html',\n styleUrls: ['basic-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => BasicDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n InfiniteScrollModule,\n SelectableItemDirective,\n BadgeComponent,\n NgFor,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class BasicDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n public static isNewItem(items: any[], term: string, key?: string): boolean {\n if (!term) {\n return false;\n }\n const isEqualIgnoringCase = (item: any) => {\n const value = key ? item[key] : item;\n return isEqual(toLower(value), toLower(term));\n };\n return !some(isEqualIgnoringCase, items);\n }\n\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n @Input() initiallySelectedIndex = -1;\n @Input() labelKey?: string;\n @Input() itemKey?: string;\n @Input() placeholder?: string;\n @Input() loading: boolean = false;\n @Input() newOptionLabel!: string;\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() showCreateNewOption = false;\n\n @Input() disabledOptions: { [itemKey: string]: any } = {};\n @Input() override overlayPositioning = false;\n @Input() truncateOptions = false;\n @Input() noResultsText?: string;\n\n @Output() onItemSelected = new EventEmitter<any>();\n @Output() triggerRequestForMoreEntries = new EventEmitter<void>();\n @Output() newOptionLabelSelected = new EventEmitter<string>();\n @Output() createNewOptionSelected = new EventEmitter<void>();\n\n @ContentChild('optionTemplate') optionTemplateRef!: TemplateRef<any>;\n @ContentChild('createNewOptionTemplate') createNewOptionTemplateRef!: TemplateRef<any>;\n @ContentChild('descriptionTemplateRef') descriptionTemplateRef!: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n constructor() {\n super();\n }\n\n selectOption(option: any) {\n if (!option || !this.itemKey) {\n this.onItemSelected.emit(option);\n } else if (!this.disabledOptions[option[this.itemKey]]) {\n this.onItemSelected.emit(option);\n }\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n\n public get isNewItem() {\n return BasicDropdownComponent.isNewItem(this.options, this.newOptionLabel, this.labelKey);\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n\n public onScroll() {\n this.triggerRequestForMoreEntries.emit();\n }\n\n public onNewItemSelected() {\n if (!this.loading) {\n this.selectOption(null);\n this.newOptionLabelSelected.emit(this.newOptionLabel);\n }\n }\n\n public onCreateNewOptionSelected() {\n this.createNewOptionSelected.emit();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"dropdown\" *ngIf=\"!overlayPositioning\"></ng-container>\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n [ngClass]=\"{ truncateOptions: truncateOptions }\"\n (scrolled)=\"onScroll()\"\n >\n <li\n *ngIf=\"newOptionLabel && isNewItem\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onNewItemSelected()\"\n (select)=\"onNewItemSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable onTheFlyOption\"\n [attr.aria-label]=\"newOptionLabel\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <li\n *ngIf=\"showCreateNewOption\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOptionSelected()\"\n (select)=\"onCreateNewOptionSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable newEntryOption\"\n >\n <span class=\"newEntryContent\">\n <ng-container *ngIf=\"createNewOptionTemplateRef; else defaultNewOption\">\n <ng-container *ngTemplateOutlet=\"createNewOptionTemplateRef\"></ng-container>\n </ng-container>\n <ng-template #defaultNewOption>\n <span>\n {{ NAME + '.new' | translate }}\n </span>\n </ng-template>\n </span>\n </li>\n <li\n *ngIf=\"descriptionTemplateRef\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option description disabledItem\"\n >\n <span class=\"descriptionContent\">\n <ng-container *ngTemplateOutlet=\"descriptionTemplateRef\"></ng-container>\n </span>\n </li>\n <li\n *ngIf=\"options?.length === 0 && !newOptionLabel && !loading\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable noOptionsAvailable\"\n [attr.aria-label]=\"noResultsText ?? (NAME + '.noResults' | translate)\"\n >\n {{ noResultsText ?? (NAME + '.noResults' | translate) }}\n </li>\n <li\n *ngIf=\"placeholder\"\n tabindex=\"-1\"\n class=\"option keyboardSelectable clearSelection\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"selectOption(null)\"\n (select)=\"selectOption(null)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [attr.aria-label]=\"placeholder\"\n >\n {{ placeholder }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index; trackBy: trackByProp(itemKey)\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [class.initiallySelected]=\"index === initiallySelectedIndex\"\n [class.disabledItem]=\"itemKey ? !!disabledOptions[option[itemKey]] : false\"\n [attr.aria-label]=\"labelKey ? option[labelKey] : option\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else simpleStringDisplay\">\n <ng-container *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index }\"></ng-container>\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span>\n {{ labelKey ? option[labelKey] : option }}\n </span>\n </ng-template>\n </li>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n</ng-template>\n","// We can only use 'keyCode' because 'key' depends on the browser\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const ARROW_DOWN = 40;\nexport const ARROW_UP = 38;\nexport const ARROW_LEFT = 37;\nexport const ARROW_RIGHT = 39;\nexport const ENTER = 13;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const HOME = 36;\nexport const END = 35;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, ENTER, ESCAPE, HOME, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]',\n standalone: true\n})\nexport class KeyboardActionSourceDirective implements OnDestroy {\n public dontEmit = false;\n\n readonly destroyed$ = new Subject<void>();\n\n public keyboardActions$ = fromEvent<KeyboardEvent>(this.element.nativeElement, 'keydown').pipe(\n filter((_event) => !this.dontEmit),\n map((event) => {\n switch (event.keyCode) {\n case ARROW_UP:\n event.preventDefault();\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n event.preventDefault();\n return KeyboardSelectAction.NEXT;\n case ARROW_LEFT:\n event.preventDefault();\n return KeyboardSelectAction.LEFT;\n case ARROW_RIGHT:\n event.preventDefault();\n return KeyboardSelectAction.RIGHT;\n case HOME:\n event.preventDefault();\n return KeyboardSelectAction.FIRST;\n case END:\n event.preventDefault();\n return KeyboardSelectAction.LAST;\n case ENTER:\n event.preventDefault();\n return KeyboardSelectAction.EXECUTE;\n case ESCAPE:\n case TAB:\n return KeyboardSelectAction.CLOSE;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n );\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n blur() {\n this.element.nativeElement.blur();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n nativeElement(): HTMLElement {\n return this.element?.nativeElement;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-option-group',\n templateUrl: 'option-group.component.html',\n styleUrls: ['option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class OptionGroupComponent {\n /**\n * Is true when option children have a selected state.\n * In this case we want to align the padding of the group label with the lx-options'.\n */\n @Input() hasSelectedState: boolean = true;\n\n @Input() label!: string;\n\n @Output() select = new EventEmitter();\n\n selectOption(value: any) {\n this.select.emit(value);\n }\n}\n","<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content></ng-content>\n </ul>\n</li>\n","import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';\nimport { uniqueId } from 'lodash-es';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\n\n@Component({\n selector: 'lx-option',\n templateUrl: 'option.component.html',\n styleUrls: ['option.component.scss'],\n standalone: true,\n imports: [NgIf, NgSwitch, NgSwitchCase]\n})\nexport class OptionComponent {\n @Input() selected: boolean = false;\n @Input() isHighlighted: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: any;\n /**\n * Is true when option has a selection nature like sorting.\n * In this case we show a check icon on the left to indicate selection.\n *\n * Is false when option represents a one time action like printing.\n * Cannot have selectedState when Option has dropdown\n */\n @Input() hasSelectedState: boolean = true;\n @Input() selectIcon: 'check' | 'circle' = 'check';\n\n @Output() select = new EventEmitter();\n @Output() highlight = new EventEmitter<boolean>();\n @Output() selectedClick = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n @ViewChild('option') option?: ElementRef<HTMLElement>;\n\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\n readonly optionId: string;\n\n @HostListener('click', ['$event'])\n selectOption(event?: MouseEvent) {\n if (this.disabled || this.hasSubdropdown) {\n if (event) {\n event.stopImmediatePropagation();\n }\n } else {\n if (this.selected) {\n return this.selectedClick.emit();\n }\n if (this.group) {\n this.group.selectOption(this.value);\n }\n this.select.emit(this.value);\n }\n }\n\n constructor(\n @Optional() @Inject(forwardRef(() => OptionGroupComponent)) private group: OptionGroupComponent,\n public elementRef: ElementRef<HTMLElement>\n ) {\n this.optionId = uniqueId('option');\n }\n\n setSelected(value: boolean) {\n this.selected = value;\n }\n\n setHighlighted(value: boolean) {\n this.isHighlighted = value;\n this.highlight.emit(this.isHighlighted);\n if (value) {\n this.option?.nativeElement?.focus();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n event.preventDefault();\n this.keyDownAction.emit(event);\n }\n}\n","<li\n #option\n class=\"option\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"selected\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n (keydown)=\"handleKeyDown($event)\"\n>\n <ng-container *ngIf=\"hasSelectedState\">\n <ng-container [ngSwitch]=\"selectIcon\">\n <ng-container *ngSwitchCase=\"'check'\">\n <i *ngIf=\"selected\" class=\"far fa-check\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'circle'\">\n <i class=\"fal fa-circle\"></i>\n <i *ngIf=\"selected\" class=\"fas fa-circle\"></i>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { TooltipDirective } from '../../../core-ui/tooltip/tooltip.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-dropdown',\n templateUrl: 'cdk-options-dropdown.component.html',\n styleUrls: ['cdk-options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay]\n})\nexport class CdkOptionsDropdownComponent implements AfterViewInit, OnDestroy {\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.reloadOverlayPosition(this.open);\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n\n @ContentChildren(TooltipDirective, { descendants: true })\n tooltips!: QueryList<TooltipDirective>;\n\n get options() {\n return this._options.toArray();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n\n private readonly destroyed$ = new Subject<void>();\n\n isPositionComputed = true;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE))\n .subscribe(() => this.closeDropdown());\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closeDropdown() {\n this.tooltips.toArray().forEach((tooltip) => tooltip.hide());\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n const firstAvailableIndex = this.options.map((option) => !this.optionIsHighlightable(option)).indexOf(false, 0);\n this.highlightedOptionIndex$.next(firstAvailableIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]?.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n private reloadOverlayPosition(open: boolean) {\n if (open) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n this.overlay.overlayRef.updatePosition();\n\n this.isPositionComputed = true;\n this.changeDetection.markForCheck();\n }, 0);\n } else {\n this.changeDetection.markForCheck();\n }\n }\n}\n","<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { CdkOptionsDropdownComponent } from '../cdk-options-dropdown/cdk-options-dropdown.component';\nimport { OptionComponent } from '../option/option.component';\n\nexport interface Breadcrumb {\n label: string;\n ellipsed?: boolean;\n onClick?: (breadcrumb: Breadcrumb) => void;\n}\n\ninterface EllipsedBreadcrumb {\n breadcrumbs: Breadcrumb[];\n}\n\ntype ViewBreadcrumb = Breadcrumb | EllipsedBreadcrumb;\n\n@Component({\n selector: 'lx-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n standalone: true,\n imports: [NgFor, NgIf, CdkOptionsDropdownComponent, KeyboardActionSourceDirective, OptionComponent]\n})\nexport class BreadcrumbComponent implements OnChanges {\n @Input() breadcrumbs: Breadcrumb[] = [];\n\n viewBreadcrumbs: ViewBreadcrumb[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['breadcrumbs']) {\n this.viewBreadcrumbs = this.breadcrumbs.reduce((viewBreadcrumbs, breadcrumb) => {\n if (!breadcrumb.ellipsed) {\n // Append normal breadcrumbs to the end of view breadcrumb array\n viewBreadcrumbs.push(breadcrumb);\n } else {\n // Reduce consecutive ellipsed breadcrumbs into one entry and show dropdown of these\n const lastBreadcrumb = viewBreadcrumbs[viewBreadcrumbs.length - 1];\n if (lastBreadcrumb && this.isEllipsedBreadcrumb(lastBreadcrumb)) {\n lastBreadcrumb.breadcrumbs.push(breadcrumb);\n } else {\n viewBreadcrumbs.push({\n breadcrumbs: [breadcrumb]\n });\n }\n }\n return viewBreadcrumbs;\n }, [] as ViewBreadcrumb[]);\n }\n }\n\n isEllipsedBreadcrumb(breadcrumb: ViewBreadcrumb): breadcrumb is EllipsedBreadcrumb {\n return !!(breadcrumb as EllipsedBreadcrumb).breadcrumbs;\n }\n}\n","<div class=\"breadcrumbs\">\n <ng-container *ngFor=\"let breadcrumb of viewBreadcrumbs\">\n <ng-container *ngIf=\"isEllipsedBreadcrumb(breadcrumb)\">\n <lx-cdk-options-dropdown [align]=\"'right'\" class=\"dropdownContainer\">\n <a class=\"step\" href=\"\" lxKeyboardActionSource (click)=\"(false)\">...</a>\n <lx-option\n *ngFor=\"let ellipsedBreadcrumbs of breadcrumb.breadcrumbs\"\n [hasSelectedState]=\"false\"\n (select)=\"ellipsedBreadcrumbs.onClick?.(ellipsedBreadcrumbs)\"\n >\n {{ ellipsedBreadcrumbs.label }}\n </lx-option>\n </lx-cdk-options-dropdown>\n <span class=\"arrow\">&gt;</span>\n </ng-container>\n <ng-container *ngIf=\"!isEllipsedBreadcrumb(breadcrumb)\">\n <a class=\"step\" href=\"\" (click)=\"breadcrumb.onClick?.(breadcrumb); (false)\">{{ breadcrumb.label }}</a>\n <span class=\"arrow\">&gt;</span>\n </ng-container>\n </ng-container>\n</div>\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'top',\n offsetX: -4\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'top',\n offsetX: 4\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: -4\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: 4\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-sub-dropdown',\n templateUrl: 'cdk-options-sub-dropdown.component.html',\n styleUrls: ['cdk-options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [CdkConnectedOverlay, AutocloseDirective]\n})\nexport class CdkOptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n open = false;\n isPositionComputed = true;\n\n private mouseInside$ = new Subject<boolean>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n });\n\n merge(this.showByMouse(), this.showByKeyboard())\n .pipe(takeUntil(this.destroyed$), distinctUntilChanged())\n .subscribe((show) => {\n this.open = show;\n this.reloadOverlayPosition(this.open);\n });\n\n this.options.changes\n .pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.select), ...this.options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n });\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const hideOnLeaveMouse$ = mouseLeaveTrigger$.pipe(map(() => false));\n\n // react to trigger mouse leave events, and mouse enter events in the sub-dropdown. We'll use a 300ms\n // debounce, so that while navigating from the trigger to the sub-dropdown, all the intermediate events\n // are ignored.\n const showSubdropdown$ = merge(hideOnLeaveMouse$, this.mouseInside$).pipe(debounceTime(300));\n\n const showOnEnterSubdropdown$ = mouseEnterTrigger$.pipe(switchMap(() => showSubdropdown$));\n\n return merge(showOnEnterMouse$, showOnEnterSubdropdown$);\n }\n\n private reloadOverlayPosition(open: boolean) {\n // force a rendering so that the dropdown container's dimensions are computed.\n this.changeDetection.markForCheck();\n if (open && this.dropdownContainer) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n\n this.overlay.overlayRef.updatePosition();\n this.isPositionComputed = true;\n }, 0);\n }\n }\n\n closeDropdown() {\n this.open = false;\n this.mouseInside$.next(false);\n }\n}\n","<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger.elementRef\" [cdkConnectedOverlayOpen]=\"open\">\n <ul\n (mouseenter)=\"mouseenter()\"\n (mouseleave)=\"mouseleave()\"\n class=\"sub-dropdown\"\n [style.visibility]=\"isPositionComputed ? '' : 'hidden'\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n #dropdown\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isString } from 'lodash-es';\n\n@Component({\n selector: 'lx-copy-button',\n templateUrl: 'copy-button.component.html',\n standalone: true,\n imports: [TranslateModule]\n})\nexport class CopyButtonComponent {\n /** JSON string or object to be saved/copied as JSON */\n @Input() data: string | Record<string, unknown> = '';\n /** Label to be used for data in toastr messages */\n @Input() dataDescription?: string;\n /** Determine copy button Bootstrap class & color or hide it altogether */\n @Input() btn: 'default' | 'primary' | 'info' | 'hide' = 'default';\n\n @Output() success = new EventEmitter<{ messageKey: string; translateParams: Record<string, string | undefined> }>();\n @Output() error = new EventEmitter<{ messageKey: string; translateParams: Record<string, string | undefined> }>();\n\n readonly NAME = 'CopyButtonComponent';\n\n constructor(private clipboard: Clipboard) {}\n\n async copy() {\n try {\n const json = this.getStringData();\n this.clipboard.copy(json);\n this.success.emit({\n messageKey: this.dataDescription ? `${this.NAME}.dataCopySuccess` : `${this.NAME}.copySuccess`,\n translateParams: { data: this.dataDescription }\n });\n } catch (err) {\n this.error.emit({\n messageKey: this.dataDescription ? `${this.NAME}.dataCopyFailure` : `${this.NAME}.copyFailure`,\n translateParams: { data: this.dataDescription }\n });\n }\n }\n\n private getStringData(): string {\n return isString(this.data) ? this.data : JSON.stringify(this.data, null, '\\t');\n }\n}\n","<button (click)=\"copy()\" class=\"btn btn-{{ btn }} btnCopyJson\">\n <i class=\"far fa-copy\"></i>\n <span>\n {{ 'buttons.copy' | translate }}\n </span>\n</button>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { getCssVariable } from '../../shared/misc-helpers';\nimport { Observe } from '../../shared/observe';\n\n@Directive({\n selector: '[lxMarkInvalid]',\n standalone: true\n})\nexport class MarkInvalidDirective implements OnInit, OnDestroy {\n @Input() lxMarkInvalid: boolean = false;\n @Observe('lxMarkInvalid') lxMarkInvalid$!: Observable<boolean>;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.lxMarkInvalid$.pipe(takeUntil(this.destroyed$)).subscribe((invalid) => {\n const border = invalid ? `1px solid ${getCssVariable('--lx-color-danger')}` : '';\n this.renderer.setStyle(this.element.nativeElement, 'border', border);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","// Currency symbol map extracted from: http://symbologic.info/currency.htm\n// Using custom symbology since Angular 2 currency pipe does not support all currency symbols:\n// https://github.com/angular/angular/issues/6724\nexport const CURRENCY_SYMBOL_MAP: { [key: string]: string } = {\n AFA: '&#x60b;',\n AWG: 'ƒ',\n AUD: 'AU$',\n ARS: 'ARS',\n AZN: '&#1084;&#1072;&#1085;',\n BSD: 'B$',\n BDT: '&#2547;',\n BBD: 'Bds$',\n BYR: 'Br',\n BOB: 'Bs.',\n BRL: 'R$',\n GBP: '£',\n BGN: '&#1083;&#1074;',\n KHR: '&#6107;',\n CAD: 'CA$',\n KYD: 'KY&#36;',\n CLP: '&#36;',\n CNY: 'CN¥',\n COP: 'COP',\n CRC: '&#8353;',\n HRK: 'kn',\n CPY: 'CPY',\n CZK: 'K&#269;',\n DKK: 'DKK',\n DOP: 'RD&#36;',\n XCD: 'EC$',\n EGP: 'E&pound;',\n ERN: 'Nfa',\n EEK: 'EEK',\n EUR: '&euro;',\n GEL: '&#4314;',\n GHC: 'GHC',\n GIP: 'GIP',\n GTQ: 'Q',\n HNL: 'L',\n HKD: 'HK$',\n HUF: 'Ft',\n ISK: 'ISK',\n INR: '₹',\n IDR: 'Rp',\n ILS: '₪',\n JMD: 'J$',\n JPY: '¥',\n KZT: '&#x20b8;',\n KES: 'KSh',\n KWD: '&#1583;.&#1603;',\n LVL: 'Ls',\n LBP: 'L&pound;',\n LTL: 'Lt',\n MOP: 'P',\n MKD: '&#1076;&#1077;&#1085;',\n MGA: 'Ar',\n MYR: 'RM',\n BAM: 'KM',\n MUR: '&#588;s',\n MXN: 'MX$',\n MZM: 'MT',\n NPR: 'N&#588;s',\n ANG: '&#131;',\n TWD: 'NT$',\n NZD: 'NZ$',\n NIO: 'C&#36;',\n NGN: '&#8358;',\n KPW: '&#8361;',\n NOK: 'NOK',\n OMR: '&#1585;.&#1593;.',\n PKR: '&#588;s',\n PYG: '&#8370;',\n PEN: 'S/.',\n PHP: '&#8369;',\n QAR: '&#1585;.&#1602;',\n RON: 'L',\n RUB: '&#1088;&#1091;&#1073;',\n SAR: '&#1585;.&#1587;',\n CSD: 'CSD',\n SCR: '&#588;s',\n SGD: 'S&#36;',\n SKK: 'SKK',\n SIT: 'SIT',\n ZAR: 'R',\n KRW: 'KRW',\n LKR: '&#588;s',\n SRD: '&#36;',\n SEK: 'SEK',\n CHF: 'Fr',\n TZS: 'TSh',\n THB: '&#3647;',\n TTD: 'TT&#36;',\n TRY: 'TL',\n AED: '&#1583;.&#1573;',\n USD: '$',\n UGX: 'USh',\n UAH: '&#8372;',\n UYU: '&#36;U',\n UZS: '&#1083;&#1074;',\n VEB: 'VEB',\n VND: '₫',\n AMK: 'AMK',\n ZWD: 'ZWD'\n};\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { CURRENCY_SYMBOL_MAP } from './currency-symbol-map.constant';\n\n@Component({\n selector: 'lx-currency-symbol',\n templateUrl: 'currency-symbol.component.html',\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class CurrencySymbolComponent implements OnInit {\n @Input() code!: string | null;\n @Observe('code') code$!: Observable<string>;\n currency$!: Observable<string>;\n\n ngOnInit() {\n this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));\n }\n}\n","<span [innerHtml]=\"currency$ | async\"></span>\n","import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { CurrencySymbolComponent } from './currency-symbol.component';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\nexport type DecimalSeparator = ',' | '.';\n\n@Component({\n selector: 'lx-currency-input',\n templateUrl: 'currency-input.component.html',\n styleUrls: ['currency-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CurrencyInputComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, CurrencySymbolComponent, MarkInvalidDirective, FormsModule, AsyncPipe, DecimalPipe]\n})\nexport class CurrencyInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor, OnInit {\n @Input() public code!: string | null;\n @Input() public decimalSeparator: DecimalSeparator = '.';\n @Input() public placeholder!: string;\n @Input() public data: number = 0;\n @Observe<number>('data') data$!: Observable<number>;\n\n @Input() public disabled: boolean = false;\n @Input() public mode: CurrencyInputMode = 'edit';\n @Input() public fieldDefinitionType!: 'DOUBLE' | 'INTEGER';\n @Input() public iconPosition: CurrencyIconPosition = 'first';\n @Input() public format: string = '1.2-2';\n @Input() markInvalid = false;\n\n @Output() public onFocusLost = new EventEmitter<boolean>();\n @Output() public onChange = new EventEmitter<number>();\n\n @ViewChild('currencyInput') private currencyInput!: ElementRef<HTMLInputElement>;\n showCurrencyInput: boolean = false;\n dataValue$ = new ReplaySubject<number>();\n\n private get allowedCharacters() {\n return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\\e\\\\${this.decimalSeparator}\\]`) : /[0-9\\e\\\\]/;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.data$.pipe(takeUntil(this.destroyed$)).subscribe(this.dataValue$);\n }\n\n ngAfterViewInit() {\n if (this.currencyInput) {\n fromEvent<KeyboardEvent>(this.currencyInput.nativeElement, 'keypress')\n .pipe(\n filter((keyboardEvent) => this.shouldRejectKey(keyboardEvent)),\n takeUntil(this.destroyed$)\n )\n .subscribe((keyboardEvent) => {\n keyboardEvent.preventDefault();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n valueChanged(value: string | number) {\n if (typeof value === 'string') {\n const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';\n value = this.parseInput(value, invalidSeparator) as number;\n }\n // fix copy & paste string values being interpreted wrongly\n this.dataValue$.next(value);\n this.onChange.emit(value);\n this.propagateChange(value);\n }\n\n onBlur() {\n this.showCurrencyInput = false;\n this.onFocusLost.emit(true);\n }\n\n focusCurrencyInput() {\n this.showCurrencyInput = true;\n this.changeDetector.detectChanges();\n this.currencyInput.nativeElement.focus();\n this.currencyInput.nativeElement.setSelectionRange(0, 0);\n }\n\n shouldRejectKey(event: KeyboardEvent) {\n if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {\n return this.containsSeparators(this.currencyInput.nativeElement.value);\n }\n return !this.allowedCharacters.test(event.key);\n }\n\n propagateChange(_newValue: number) {}\n\n writeValue(newValue: number) {\n this.dataValue$.next(newValue);\n }\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n private parseInput(value: string, char: string) {\n const countOccurences = value.split(char).length - 1;\n if (countOccurences > 1) {\n for (let i = 0; i < countOccurences; i++) {\n value = value.replace(char, '');\n }\n }\n const parsedValue = parseFloat(value.replace(',', '.').replace(/ /g, ''));\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n private containsSeparators(value: string) {\n return value.indexOf(',') > -1 || value.indexOf('.') > -1;\n }\n}\n","<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\"></lx-currency-symbol>\n {{ (dataValue$ | async | number: format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\"></lx-currency-symbol>\n</span>\n","import { isNaN as _isNaN, toString as _toString, padCharsStart, toNumber } from 'lodash/fp';\n\n/**\n * Converts a date into a string with format YYYY-MM-dd for the\n * users current timezone.\n */\nexport function convertDateToLocaleDateString(date: Date, separator: string = '-'): string {\n const day = pad(date.getDate());\n const currentMonth = date.getMonth() + 1;\n const month = pad(currentMonth);\n\n return `${date.getFullYear()}${separator}${month}${separator}${day}`;\n}\n\n// Pad to 2 digits\nfunction pad(num: number): string {\n return padCharsStart('0', 2, _toString(num));\n}\n\n/**\n * Use this whenever you want to create a Date instance from a dateString like \"2017-12-06\".\n * Reason: When you call the Date Constructor like this `new Date(\"2017-12-06\")`\n * the date instance will be in the users current timezone (eg in EST GMT-0500 it will become \"2017-12-05 19:00:00\"),\n * but at some places we handle the date only as date without time (e.g. date.getDate()) and there\n * we would then get timezone issues, because `date.getDate()` returns day 5 instead of 6!\n *\n * So instead of doing `new Date(\"2017-12-06\")` you should use this function instead!\n */\nexport function createDateFromDateString(dateString: string | null): Date | null {\n if (!dateString || !isValidDateString(dateString)) {\n return null;\n }\n const parts = dateString.split('-').map(toNumber);\n return new Date(parts[0]!, parts[1]! - 1, parts[2]!);\n}\n\nexport function isValidDateString(dateString: string | null): boolean {\n return dateString !== null && /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(dateString) && !_isNaN(Date.parse(dateString));\n}\n","import { format as fm } from 'date-fns';\n\n/* format method is monkey-patched in date-input component, leaving this implementation as dummy */\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return fm(date, format, { locale });\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DateFormatter } from './date-formatter';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker-inner',\n template: `\n <!--&lt;!&ndash;ng-keydown=\"keydown($event)\"&ndash;&gt;-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\">\n <ng-content></ng-content>\n </div>\n `,\n standalone: true,\n imports: [NgIf]\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input()\n locale!: string;\n @Input()\n datepickerMode!: string;\n @Input()\n startingDay!: number;\n @Input()\n yearRange!: number;\n\n @Input()\n minDate!: Date;\n @Input()\n maxDate!: Date;\n @Input()\n minMode!: string;\n @Input()\n maxMode!: string;\n @Input()\n showWeeks!: boolean;\n @Input()\n formatDay!: string;\n @Input()\n formatMonth!: string;\n @Input()\n formatYear!: string;\n @Input()\n formatDayHeader!: string;\n @Input()\n formatDayTitle!: string;\n @Input()\n formatMonthTitle!: string;\n @Input()\n onlyCurrentMonth!: boolean;\n @Input()\n shortcutPropagation!: boolean;\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n @Input()\n monthColLimit!: number;\n @Input()\n yearColLimit!: number;\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n @Input()\n dayDisabled!: number[];\n @Input()\n initDate!: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId!: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate!: Date;\n protected selectedDate!: Date;\n protected activeDateId!: string;\n\n protected refreshViewHandlerDay!: Function;\n protected compareHandlerDay!: Function;\n protected refreshViewHandlerMonth!: Function;\n protected compareHandlerMonth!: Function;\n protected refreshViewHandlerYear!: Function;\n protected compareHandlerYear!: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes['activeDate']);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue && previousValue instanceof Date && previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1]!;\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if ((this.datepickerMode === this.maxMode && direction === 1) || (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction]!;\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return customClass.date.valueOf() === date.valueOf() && customClass.mode === this.datepickerMode;\n }, this)!;\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(date1Disabled: { date: Date; mode: string }, date2: Date): number | undefined {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n\n if (this.dayDisabled) {\n isDateDisabled = isDateDisabled || this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled || (this.minDate && this.compare(date, this.minDate)! < 0) || (this.maxDate && this.compare(date, this.maxDate)! > 0)\n );\n }\n}\n","export const isBs3 = () => true;\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'daypicker',\n template: `\n <table\n *ngIf=\"datePicker.datepickerMode === 'day'\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\"\n aria-activedescendant=\"activeDateId\"\n >\n <thead>\n <tr>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n ‹\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n &lt;\n </button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n ›\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n &gt;\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"\n ><b>{{ labelz.abbr }}</b></small\n >\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-sm {{ dtz.customClass }}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{\n 'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected,\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz),\n 'btn-default': !isBs4\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title!: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i]?.getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n\n // todo: key events implementation\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'monthpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.monthColLimit - 2 <= 0 ? 1 : datePicker.monthColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class MonthPickerComponent implements OnInit {\n title!: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode!: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'yearpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.yearColLimit - 2 <= 0 ? 1 : datePicker.yearColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title!: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(' - ');\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return ((year - 1) / this.datePicker.yearRange) * this.datePicker.yearRange + 1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import { Component, EventEmitter, forwardRef, Input, Output, Provider, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker',\n template: `\n <datepicker-inner\n [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\"\n >\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input()\n initDate!: Date;\n /** oldest selectable date */\n @Input()\n minDate!: Date;\n /** latest selectable date */\n @Input()\n maxDate!: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n minMode!: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n maxMode!: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input()\n formatDay!: string;\n /** format of month in year */\n @Input()\n formatMonth!: string;\n /** format of year in year range */\n @Input()\n formatYear!: string;\n /** format of day in week header */\n @Input()\n formatDayHeader!: string;\n /** format of title when selecting day */\n @Input()\n formatDayTitle!: string;\n /** format of title when selecting month */\n @Input()\n formatMonthTitle!: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n startingDay!: number;\n /** number of years displayed in year selection */\n @Input()\n yearRange!: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input()\n onlyCurrentMonth!: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input()\n shortcutPropagation!: boolean;\n /** number of months displayed in a single row of month picker */\n @Input()\n monthColLimit!: number;\n /** number of years displayed in a single row of year picker */\n @Input()\n yearColLimit!: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n dayDisabled!: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker!: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate!: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = (value ? new Date(value) : void 0)!;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { AutofocusDirective } from '../../../core-ui/directives/autofocus.directive';\nimport { CustomDatePipe } from '../../../core-ui/pipes/custom-date.pipe';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { DateFormatter } from '../date-picker-ui/date-formatter';\nimport { DatePickerComponent } from '../date-picker-ui/datepicker.component';\n\n// Input + ng2-bootstrap datepicker\nexport type DateInputRenderingStyle = 'INPUT' | 'LINK';\n\nconst DEFAULT_MIN_DATE = new Date('0000-01-01');\nconst DEFAULT_MAX_DATE = new Date('9999-12-31');\n\n@Component({\n selector: 'lx-date-input',\n templateUrl: 'date-input.component.html',\n styleUrls: ['date-input.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }\n ],\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n FormsModule,\n AutofocusDirective,\n CdkConnectedOverlay,\n DatePickerComponent,\n CustomDatePipe,\n MarkInvalidDirective\n ]\n})\nexport class DateInputComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() public date: Date | null = null; // main date input; this is also the one used for ngModel & formControl!\n @Output() dateChange = new EventEmitter<Date | null>(); // triggered whenever the date changes\n @Input() public dateString: string | null = null; // secondary, alternative input with date string\n @Output() dateStringChange = new EventEmitter<string | null>(); // triggered whenever the date changes\n // Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects\n @Input() public valueAccessor: 'date' | 'dateString' = 'date';\n\n @Input() public inputId: string = ''; // id to be set on input to correspond to outside label\n @Input() public renderingStyle: DateInputRenderingStyle = 'INPUT';\n @Input() public placeholder: string = 'yyyy-mm-dd';\n\n @Input() public cdk = true; // Deactivate to use old date picker\n\n //--- Inputs replicated from datepicker; (selectionDone) is not needed, as (dateChange) is equivalen\n @Input() public datepickerMode: string = 'day'; // sets datepicker mode, supports: day, month, year\n @Input() initDateString!: string; // default date to show if ng-model value is not specified\n @Observe('initDateString') initDateString$!: Observable<string>; // default date to show if ng-model value is not specified\n @Input() public minDate = DEFAULT_MIN_DATE; // oldest selectable date\n @Input() public maxDate = DEFAULT_MAX_DATE; // latest selectable date\n @Input() public minMode: string = 'day'; // set lower datepicker mode, supports: day, month, year\n @Input() public maxMode: string = 'year'; // sets upper datepicker mode, supports: day, month, year\n @Input() public showWeeks: boolean = true; // if false week numbers will be hidden\n @Input() public formatDay: string = 'DD'; // format of day in month\n @Input() public formatMonth: string = 'MMMM'; // format of month in year\n @Input() public formatYear: string = 'YYYY'; // format of year in year range\n @Input() public formatDayHeader: string = 'dd'; // format of day in week header\n @Input() public formatDayTitle: string = 'MMMM YYYY'; // format of title when selecting day\n @Input() public formatMonthTitle: string = 'YYYY'; // format of title when selecting month\n @Input() startingDay: number = 0; // starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public\n @Input() public yearRange: number = 20; // number of years displayed in year selection\n @Input() public onlyCurrentMonth: boolean = false; // if true only dates from the currently displayed month will be shown\n @Input() public shortcutPropagation: boolean = false; // if true shortcut`s event propagation will be disabled\n @Input() public customClass: { date: Date; mode: string; clazz: string }[] = []; // array of custom css classes to be applied to\n // targeted dates\n @Input() public disabled!: boolean;\n @Input() public dateDisabled: { date: Date; mode: string }[] = []; // array of disabled dates if mode is day, or years, etc.\n @Input() autoFocus = false;\n @Input() markInvalid = false;\n\n @Output() closeDateInput = new EventEmitter<void>();\n\n @ViewChild('input') input!: ElementRef<HTMLInputElement>;\n\n showDatepicker: boolean = false;\n dateFormat: string;\n initDate!: Date;\n\n readonly destroyed$ = new Subject<void>();\n\n //-- Implement ControlValueAccessor\n private formControl!: UntypedFormControl;\n hasError: boolean = false;\n onTouched!: () => void;\n\n propagateChange = (_date: Date | null) => {};\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DATE_FORMATS) private dateFormatsProvider: DateFormatsProvider,\n @Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function\n ) {\n this.dateFormat = this.dateFormatsProvider.getDateFormat();\n // Patch DatePicker until https://github.com/valor-software/ng2-bootstrap/issues/1385 is resolved\n const writeValue = DatePickerComponent.prototype.writeValue;\n DatePickerComponent.prototype.writeValue = function (value) {\n if (value !== null) {\n return writeValue.apply(this, arguments as any);\n }\n };\n\n // Somehow datepicker does use a separate moment instance than we do. That one runs on locale en by default.\n // So we patch the format function here to use our moment instance.\n // Maybe it will be fixed with: https://github.com/valor-software/ngx-bootstrap/issues/455\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n DateFormatter.prototype.format = function (date: Date, f: string) {\n return format(date, f, { locale });\n };\n }\n\n ngOnInit() {\n this.initDateString$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.initDate = createDateFromDateString(date) ?? startOfDay(new Date());\n });\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['date']) {\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : null;\n } else if (changes['dateString']) {\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n public ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focus() {\n this.input.nativeElement.focus();\n }\n\n public showPopup() {\n this.showDatepicker = true;\n this.cd.detectChanges();\n }\n\n public togglePopup() {\n this.showDatepicker = !this.showDatepicker;\n }\n\n public hidePopup() {\n if (this.showDatepicker) {\n this.showDatepicker = false;\n this.closeDateInput.emit();\n }\n }\n\n onDateStringChange(newDateString: string | null, emit: boolean = true) {\n if (isValidDateString(newDateString)) {\n const date = createDateFromDateString(newDateString);\n this.updateDate(date, emit);\n } else if (newDateString === null || newDateString === '') {\n this.updateDate(null, emit);\n } else {\n this.hasError = true;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n }\n\n onSelectionDone(newDate: Date) {\n this.updateDate(newDate);\n this.hidePopup();\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private updateDate(date: Date | null, emit: boolean = true) {\n this.date = date;\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : '';\n if (emit) {\n this.dateChange.emit(date);\n this.dateStringChange.emit(this.dateString);\n }\n this.propagateChange(date);\n this.recheckErrors();\n }\n\n private recheckErrors() {\n this.hasError = false;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n //--- Implement ControlValueAccessor\n /** Write a new value to the element. */\n writeValue(newDate: Date | string) {\n if (this.valueAccessor === 'date') {\n this.date = newDate as Date;\n this.dateString = convertDateToLocaleDateString(this.date);\n } else {\n this.dateString = newDate as string;\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /** Set the function to be called when the control receives a change event. */\n registerOnChange(fn: any) {\n if (this.valueAccessor === 'date') {\n this.dateChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n } else if (this.valueAccessor === 'dateString') {\n this.dateStringChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n }\n }\n\n /** Set the function to be called when the control receives a touch event. */\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n validate(c: UntypedFormControl) {\n this.formControl = c;\n return this.hasError\n ? {\n dateFormatError: {\n given: this.dateString,\n format: 'yyyy-mm-dd'\n }\n }\n : null;\n }\n}\n","<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <!-- TODO: The dateInput and datePicker code ist duplicated for cdk and withoutCdK use to solve a placing problem of the\n ngx-bootstrap datepicker component. Writing it in a ng-container led to an unexpected anchoring behavior of the datePicker NOT directly\n below the dateInput element -->\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n [lxMarkInvalid]=\"markInvalid\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [lxMarkInvalid]=\"markInvalid\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n </span>\n </div>\n</ng-template>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\n\n@NgModule({\n imports: [DatePickerComponent],\n exports: [DatePickerComponent]\n})\nexport class DatepickerUiModule {\n static forRoot(): ModuleWithProviders<DatepickerUiModule> {\n return { ngModule: DatepickerUiModule, providers: [DatepickerConfig] };\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { ButtonComponent } from '../../../../core-ui/components/button/button.component';\n\nexport interface DragAndDropListAction {\n id: string;\n label: string;\n icon: string;\n showOnlyOnHover?: boolean;\n}\n\nexport interface DragAndDropListActionEvent {\n actionId: string;\n item: string;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list-item',\n templateUrl: 'drag-and-drop-list-item.component.html',\n styleUrls: ['drag-and-drop-list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgFor, ButtonComponent]\n})\nexport class DragAndDropListItemComponent {\n readonly NAME = 'DragAndDropListItemComponent';\n\n @Input() item!: string;\n @Input() draggable: boolean = true;\n /**\n * An array of DragAndDropListActions\n * When this array is defined, the drag handle is shown at the start of an item and the action buttons are rendered in their provided order at the right end of an item.\n */\n @Input() actions?: DragAndDropListAction[];\n @Output() action = new EventEmitter<DragAndDropListActionEvent>();\n\n @HostBinding('class.draggingDisabled') get draggingDisabled() {\n return !this.draggable;\n }\n\n @HostBinding('class.customTemplate') get hasCustomTemplate() {\n return !!this.customTemplateRef;\n }\n\n @ContentChild('customTemplate') customTemplateRef: TemplateRef<any> | null = null;\n\n constructor(private element: ElementRef) {}\n\n trackByAction(_index: number, action: DragAndDropListAction) {\n return action.id;\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","<ng-container *ngIf=\"customTemplateRef; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"customTemplateRef\"></ng-container>\n</ng-container>\n<ng-template #defaultTemplate>\n <div class=\"drag-item-wrappper\">\n <i *ngIf=\"draggable\" class=\"far fa-bars drag-handle\"></i>\n <span [attr.title]=\"item\" class=\"itemWrapperForTruncation truncate\">{{ item }}</span>\n </div>\n <div class=\"left-button-container\" align=\"left\">\n <div class=\"action-buttons-wrapper\" *ngIf=\"!!actions\">\n <button\n lx-button\n *ngFor=\"let act of actions; trackBy: trackByAction\"\n (click)=\"action.emit({ actionId: act.id, item: item })\"\n [title]=\"act.label\"\n [square]=\"true\"\n mode=\"ghost\"\n size=\"small\"\n class=\"action-button\"\n [class.show-on-hover-button]=\"act.showOnlyOnHover ? true : false\"\n >\n <i class=\"far {{ act.icon }} actionIcon\"></i>\n </button>\n </div>\n </div>\n</ng-template>\n","/**\n * Used in the DragAndDropListComponent and KeyboardSortableListDirective\n */\nexport const DRAG_AND_DROP_LIST_TRANSLATION_NAME = 'DragAndDropListComponent';\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-input-rename */\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, Output } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { TooltipDirective } from '../../../../core-ui/tooltip/tooltip.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableItem]',\n standalone: true\n})\nexport class KeyboardSortableItemDirective implements OnChanges {\n @Input('lxKeyboardSortableItem') allItemsData!: string[] | null;\n @Input('lxKeyboardItemData') itemData!: string;\n @Input() isSortingByKeyboard!: boolean;\n @Input('lxKeyboardItemBeingSorted') itemBeingSorted?: string;\n\n @Output() readonly isSortingByKeyboardChange = new EventEmitter<boolean>();\n @Output('lxKeyboardItemBeingSortedChange') readonly itemBeingSortedChange = new EventEmitter<string | undefined>();\n @Output() sortItemsWithKeyboard = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n @Output() focusWithKeyboard!: Observable<KeyboardSortableItemDirective>;\n\n @HostBinding('attr.lxTooltip') tooltipDirective = new TooltipDirective(this.overlayPositionBuilder, this.element, this.overlay);\n @HostBinding('class.isBeingSortedByKeyboard') isBeingSorted: boolean = false;\n\n get isSortable() {\n return !this.draggableItem.disabled;\n }\n\n private preventBlur = false;\n private focusWithKeyboardReplaySubject$ = new ReplaySubject<KeyboardSortableItemDirective>(1);\n\n constructor(\n private draggableItem: CdkDrag,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private element: ElementRef<HTMLElement>,\n private overlay: Overlay\n ) {\n /**\n * Using a ReplaySubject here so that the KeyboardSortableListDirective will also know\n * about a focusWithKeyboard event when its copy of the KeyboardSortableItemDirective ContentChildren\n * was just initialised after the event fired.\n */\n this.focusWithKeyboard = this.focusWithKeyboardReplaySubject$.asObservable();\n }\n\n ngOnChanges(): void {\n this.isBeingSorted = this.itemData === this.itemBeingSorted;\n if (this.isBeingSorted) {\n // focus always the pressed element\n this.element.nativeElement.focus();\n }\n }\n\n @HostListener('keyup.tab')\n focusViaKeyboard(): void {\n this.focusWithKeyboardReplaySubject$.next(this);\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n enterSortingModeEnabledByKeyboard($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n if ($event.code === 'Enter' || $event.code === 'Space') {\n $event.preventDefault();\n this.tooltipDirective.hide();\n\n this.itemBeingSortedChange.emit(!this.isSortingByKeyboard ? this.itemData : undefined);\n this.isSortingByKeyboardChange.emit(!this.isSortingByKeyboard);\n }\n }\n }\n\n @HostListener('blur', ['$event'])\n @HostListener('keydown.esc', ['$event'])\n leaveSortingModeEnabledByKeyboard($event: KeyboardEvent | FocusEvent): void {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (!this.preventBlur) {\n this.isSortingByKeyboardChange.emit(false);\n this.itemBeingSortedChange.emit(undefined);\n }\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n @HostListener('keydown.arrowDown', ['$event'])\n sort($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (this.isSortingByKeyboard) {\n const allItemsData = this.allItemsData ?? [];\n\n $event.preventDefault();\n\n const previousIndex = allItemsData.findIndex((item) => item === this.itemData);\n const currentIndex = $event.code === 'ArrowUp' ? previousIndex - 1 : previousIndex + 1;\n\n if (currentIndex >= 0 && currentIndex <= allItemsData.length - 1) {\n this.sortItemsWithKeyboard.emit({ previousIndex, currentIndex });\n\n // When triggering a keyboard event, the DOM would \"removeChildren\" on the HTML element\n // which specially for \"ArrowUp\" events would trigger a \"blur\" event since the element\n // has been moved aboved the DOM tree and loses the focus state.\n this.preventBlur = true;\n\n setTimeout(() => (this.preventBlur = false), 0);\n }\n }\n }\n }\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { merge, Observable } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { Observe } from '../../../../shared/observe';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from '../constants';\nimport { KeyboardSortableItemDirective } from '../keyboard-sortable-item/keyboard-sortable-item.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableList]',\n standalone: true\n})\nexport class KeyboardSortableListDirective implements AfterViewInit {\n @Observe('keyboardSortableItems') private keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n @Input() keyboardSortableItems!: KeyboardSortableItemDirective[] | null;\n\n constructor(private translateService: TranslateService) {}\n\n ngAfterViewInit(): void {\n this.setupControlsTooltipToBeShownOnFirstFocusedItem();\n }\n\n private setupControlsTooltipToBeShownOnFirstFocusedItem() {\n const firstFocusEventOnADraggableItem$ = this.keyboardSortableItems$.pipe(\n filter((items) => items && items.length > 0),\n switchMap((items) => merge(...items.filter((item) => item.isSortable).map((item) => item.focusWithKeyboard))),\n take(1)\n );\n\n firstFocusEventOnADraggableItem$.subscribe((item) => {\n item.tooltipDirective.content = this.translateService.instant(`${DRAG_AND_DROP_LIST_TRANSLATION_NAME}.helpTooltip`);\n item.tooltipDirective.show();\n });\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from './constants';\nimport { DragAndDropListActionEvent, DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\nexport interface DragAndDropListMoveEvent {\n item: string;\n index: number;\n}\n\nexport interface DragAndDropListMoveIndexEvent {\n index: number;\n previous: number;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list',\n templateUrl: 'drag-and-drop-list.component.html',\n styleUrls: ['drag-and-drop-list.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n CdkDropList,\n KeyboardSortableListDirective,\n NgFor,\n CdkDrag,\n KeyboardSortableItemDirective,\n DragAndDropListItemComponent,\n NgTemplateOutlet,\n AsyncPipe,\n TranslateModule,\n DragDropModule\n ]\n})\nexport class DragAndDropListComponent implements AfterContentInit, AfterViewInit {\n readonly NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;\n\n items$!: Observable<DragAndDropListItemComponent[]>;\n keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n\n /**\n * A label for describing this list.\n */\n @Input() label?: string | undefined;\n /**\n * Override the global label font weight of 700\n */\n @Input() labelFontWeight?: number = 700;\n\n @Input() @HostBinding('attr.color') color?: 'light' | 'dark' = 'light';\n @Input() @HostBinding('attr.fontSize') fontSize?: 'normal' | 'big' = 'normal';\n\n /**\n * Use the moveToIndex Output in favor of moveItem,\n * when moving is restricted to one item through this.draggableItem.\n */\n @Output() moveToIndex = new EventEmitter<DragAndDropListMoveIndexEvent>();\n @Output() moveItem = new EventEmitter<DragAndDropListMoveEvent>();\n\n @ContentChildren(DragAndDropListItemComponent) private _items!: QueryList<DragAndDropListItemComponent>;\n\n @ViewChildren(KeyboardSortableItemDirective)\n private _keyboardSortableItems!: QueryList<KeyboardSortableItemDirective>;\n\n /**\n * TODO: extract state about keyboard sorting into KeyboardSortableListDirective\n */\n isSortingByKeyboard: boolean = false;\n keyboardItemBeingSorted: string | undefined = undefined;\n\n allItemsData: string[] = [];\n allItemsData$!: Observable<string[]>;\n\n ngAfterContentInit() {\n this.items$ = this._items.changes.pipe(\n startWith(this._items),\n map((items: QueryList<DragAndDropListItemComponent>) => items.toArray())\n );\n this.allItemsData$ = this.items$.pipe(map((itemComponents) => itemComponents.map((itemComponent) => itemComponent.item)));\n }\n\n ngAfterViewInit(): void {\n this.keyboardSortableItems$ = this._keyboardSortableItems.changes.pipe(\n startWith(this._keyboardSortableItems),\n map((items: QueryList<KeyboardSortableItemDirective>) => items.toArray())\n );\n }\n\n emitContentChildAction(action: DragAndDropListActionEvent) {\n this._items.find((itemComponent) => itemComponent.item === action.item)?.action.emit(action);\n }\n\n /**\n * From the Angular cdk drag and drop documentation:\n * Note that this will not update your data model;\n * you can listen to the cdkDropListDropped event to update the data model\n * once the user finishes dragging.\n * https://material.angular.io/cdk/drag-drop/overview\n *\n * You're supposed to update the data in the parent and pass the new items as input.\n */\n drop(event: CdkDragDrop<DragAndDropListItemComponent[] | null, string[]>) {\n this.sortItems(event.container.data!, event.item.data, event.previousIndex, event.currentIndex);\n }\n\n dropToIndexAfterArrowKey(item: any, previousIndex: number, currentIndex: number) {\n if (this.isSortingByKeyboard) {\n this.sortItems(this._items, item, previousIndex, currentIndex);\n }\n }\n\n private sortItems(items: any, item: string, previousIndex: number, currentIndex: number): void {\n moveItemInArray(items, previousIndex, currentIndex);\n this.moveToIndex.emit({ index: currentIndex, previous: previousIndex });\n this.moveItem.emit({ item, index: currentIndex });\n }\n\n trackByItem(_index: number, item: DragAndDropListItemComponent) {\n return item.item;\n }\n}\n","<label *ngIf=\"label\" [style.font-weight]=\"labelFontWeight\">{{ label }}</label>\n<p class=\"sr-only\">{{ NAME + '.helpTooltip' | translate }}</p>\n<ul\n cdkDropList\n class=\"list\"\n role=\"listbox\"\n [attr.aria-label]=\"label\"\n lxKeyboardSortableList\n [keyboardSortableItems]=\"keyboardSortableItems$ | async\"\n [cdkDropListData]=\"items$ | async\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <li\n *ngFor=\"let itemComponent of items$ | async; trackBy: trackByItem\"\n #listItemParent\n class=\"item\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n [cdkDragData]=\"itemComponent.item\"\n [cdkDragDisabled]=\"!itemComponent.draggable\"\n [class.dark]=\"color === 'dark'\"\n [class.big]=\"fontSize === 'big'\"\n [tabIndex]=\"itemComponent.draggable === false ? -1 : 0\"\n [lxKeyboardSortableItem]=\"allItemsData$ | async\"\n [lxKeyboardItemData]=\"itemComponent.item\"\n [(isSortingByKeyboard)]=\"isSortingByKeyboard\"\n [(lxKeyboardItemBeingSorted)]=\"keyboardItemBeingSorted\"\n (sortItemsWithKeyboard)=\"dropToIndexAfterArrowKey(itemComponent.item, $event.previousIndex, $event.currentIndex)\"\n >\n <lx-drag-and-drop-list-item\n class=\"dragAndDropItem\"\n [item]=\"itemComponent.item\"\n [draggable]=\"itemComponent.draggable\"\n [actions]=\"itemComponent.actions\"\n (action)=\"emitContentChildAction($event)\"\n >\n <ng-template *ngIf=\"itemComponent.customTemplateRef\" #customTemplate>\n <ng-container *ngTemplateOutlet=\"itemComponent.customTemplateRef\"></ng-container>\n </ng-template>\n </lx-drag-and-drop-list-item>\n </li>\n</ul>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LxCoreUiModule } from '../../../core-ui/core-ui.module';\nimport { DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { DragAndDropListComponent } from './drag-and-drop-list.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n LxCoreUiModule,\n TranslateModule.forChild(),\n KeyboardSortableItemDirective,\n KeyboardSortableListDirective,\n DragAndDropListComponent,\n DragAndDropListItemComponent\n ],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'lx-error-message',\n template: `<div class=\"error\" *ngIf=\"_key\">{{ _key | translate }}</div>`,\n styleUrls: ['./error-message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, TranslateModule]\n})\nexport class ErrorMessageComponent {\n _key?: string;\n\n @Input() set key(value: string | undefined) {\n if (value !== this._key) {\n this._key = value;\n this.cd.detectChanges();\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n}\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-expanded-dropdown',\n templateUrl: 'expanded-dropdown.component.html',\n styleUrls: ['expanded-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgFor, SelectableItemDirective, NgTemplateOutlet, AsyncPipe, TranslateModule]\n})\nexport class ExpandedDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n\n @Output() onChooseItem = new EventEmitter<string>();\n}\n","<ul class=\"options lxThinScrollbar\" #keyboardSelectContainer>\n <li *ngIf=\"options?.length === 0\" tabindex=\"-1\" id=\"noOption\" class=\"option noOptionsAvailable\">\n {{ NAME + '.noResults' | translate }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"onChooseItem.emit(option.id)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container>\n <ng-container *ngTemplateOutlet=\"simpleStringDisplay; context: { $implicit: option, index: index }\"></ng-container>\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span [title]=\"option.name\">\n {{ option.name }}\n </span>\n </ng-template>\n <div class=\"iconContainer\">\n <svg\n width=\"32px\"\n height=\"32px\"\n viewBox=\"0 0 32 32\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Button/Text/Primary/Medium</title>\n <g id=\"choose-workspace-D\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"choose-a-workspace-D\" transform=\"translate(-911.000000, -429.000000)\">\n <g id=\"Group-3\" transform=\"translate(471.000000, 249.000000)\">\n <g id=\"Button/Text/Primary/Medium\" transform=\"translate(440.000000, 180.000000)\">\n <g id=\"UI/Shape/Rectangle-rounded-2px\" fill=\"#1666EE\">\n <circle id=\"🎨-Style\" cx=\"16\" cy=\"16\" r=\"16\"></circle>\n </g>\n <g id=\"Icons/basic/refresh\" transform=\"translate(7.000000, 11.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <g id=\"arrow-right\" transform=\"translate(3.772240, 0.000000)\">\n <path\n d=\"M5.41769476,0.0873198725 L4.92588162,0.579133017 C4.80947996,0.695534673 4.80947996,0.88427129 4.92588162,1.00069779 L8.77935771,4.85414904 L0.298083627,4.85414904 C0.133466944,4.85414904 0,4.98761598 0,5.15223266 L0,5.84776113 C0,6.01237781 0.133466944,6.14584475 0.298083627,6.14584475 L8.77935771,6.14584475 L4.92588162,9.99932084 C4.80947996,10.1157225 4.80947996,10.3044591 4.92588162,10.4208856 L5.41769476,10.9126988 C5.53409642,11.0291004 5.72283304,11.0291004 5.83925953,10.9126988 L11.0411666,5.7107917 C11.1575682,5.59439004 11.1575682,5.40565343 11.0411666,5.28922693 L5.83923469,0.0873198725 C5.72283304,-0.0291066242 5.53409642,-0.0291066242 5.41769476,0.0873198725 Z\"\n id=\"Path\"\n ></path>\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </div>\n </li>\n</ul>\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'lx-form-error',\n templateUrl: 'form-error.component.html',\n styleUrls: ['form-error.component.scss'],\n standalone: true,\n imports: [NgFor, TranslateModule]\n})\nexport class FormErrorComponent implements OnInit, OnChanges, OnDestroy {\n @Input() public namespace!: string;\n @Input() public form!: UntypedFormGroup;\n @Input() public controlName!: string;\n\n translationKeys: string[] = [];\n private formSubscription!: Subscription;\n\n ngOnInit() {\n this.formSubscription = this.form.valueChanges.subscribe(() => {\n this.translationKeys = this.getTranslationKeys();\n });\n }\n\n ngOnChanges(_changes: SimpleChanges) {\n this.translationKeys = this.getTranslationKeys();\n }\n\n ngOnDestroy() {\n this.formSubscription.unsubscribe();\n }\n\n getTranslationKeys() {\n const formControl = this.form.get(this.controlName);\n if (formControl && formControl.errors) {\n return Object.keys(formControl.errors).map((errorKey) => `${this.namespace}.errors.${this.controlName}.${errorKey}`);\n }\n return [];\n }\n}\n","<div class=\"error\" *ngFor=\"let key of translationKeys\">\n {{ key | translate }}\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * fas is solid,\n * far is regular,\n * fal is light\n */\ntype FontAwesomeIconStyle = 'fas' | 'far' | 'fal';\n\n/**\n * Displays Font Awesome icons.\n */\n@Component({\n selector: 'lx-icon',\n templateUrl: 'icon.component.html',\n styleUrls: ['icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IconComponent implements OnChanges {\n readonly NAME = 'IconComponent';\n\n /**\n * The name of the icon is the part that comes after the \"fa-\" in the CSS class.\n */\n @Input() name!: string;\n @Input() color: string = '#000';\n @Input() fontAwsomeStyle: 'solid' | 'regular' | 'light' = 'regular';\n @Input() @HostBinding('style.height') size: string = '14px';\n @Input() title?: string;\n\n private iconStyleMap = <const>{\n solid: 'fas',\n regular: 'far',\n light: 'fal'\n };\n\n iconStyle: FontAwesomeIconStyle = 'far';\n\n ngOnChanges(changes: SimpleChanges) {\n if ('fontAwsomeStyle' in changes) {\n this.iconStyle = this.iconStyleMap[this.fontAwsomeStyle];\n }\n }\n}\n","<i [attr.title]=\"title\" [class]=\"iconStyle + ' fa-' + name\" [style.color]=\"color\" [style.fontSize]=\"size\"></i>\n","import { Component, HostBinding, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[lx-input]',\n styleUrls: ['input.component.scss'],\n template: ``,\n standalone: true\n})\nexport class InputComponent implements OnInit, OnDestroy {\n @Input() @HostBinding('class.error') error = false;\n @Input() @HostBinding('class.disabled') disabled = false;\n\n private destroyed$ = new Subject<void>();\n\n constructor(@Optional() public ngControl?: NgControl) {}\n\n ngOnInit() {\n if (this.ngControl) {\n this.ngControl.statusChanges?.pipe(startWith(null), takeUntil(this.destroyed$)).subscribe(() => this.updateStatus());\n }\n }\n\n private updateStatus() {\n this.error = !!this.ngControl?.errors;\n this.disabled = !!this.ngControl?.disabled;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with single or multi-selects.\n * It allows to mark a ng-template as the dropdown for those components.\n * The ng-template will be instantiated and \"projected\" whenever the dropdown is\n * opened. This has the advantage over content projection via ng-content, as it will\n * defer the initialization and rendering of the dropdown contents until the dropdown\n * is actually opened.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectDropdown>\n * <lx-basic-dropdown></lx-basic-dropdown>\n * </ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectDropdown]',\n standalone: true\n})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction, KeyboardSelectDirective } from '../components/keyboard-select.directive';\n\nexport interface EventSet {\n event: KeyboardEvent;\n inputCursorPosition: number | undefined;\n virtualCursorPosition: number;\n selectionLength?: number;\n}\n\n@Directive()\nexport abstract class BaseSelectDirective implements AfterViewInit, OnChanges, OnDestroy {\n @Input() placeholder?: string;\n @Input() disabled: boolean = false;\n @Input() focusOnInit: boolean = false;\n @Input() dropdownMaxHeight: number = 250;\n @Input() allowQuery: boolean = true;\n\n @Output() query = new EventEmitter<string>();\n @Output() close = new EventEmitter<void>();\n @Output() open = new EventEmitter<boolean>();\n\n @ViewChild('optionsContainer', { static: true }) optionsContainer!: ElementRef<HTMLElement>;\n @ContentChild(KeyboardSelectDirective, { static: false, descendants: true }) dropdownBase!: KeyboardSelectDirective;\n\n abstract selection?: any;\n abstract selectionChange: EventEmitter<any>;\n\n public readonly query$ = this.query.asObservable();\n public readonly dropdownDirection$ = new BehaviorSubject<'TOP' | 'BOTTOM'>('BOTTOM');\n public dropdownOpen = false;\n\n public activeElement!: Element;\n // an axis, where the negative range represents the selected item in the selection\n public readonly selectionKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n public readonly optionsKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n public virtualCursorPosition: number = 0;\n\n public inputWasFocused: boolean = false;\n\n public readonly queryControl = new UntypedFormControl('');\n\n public isInputFocused: boolean = false;\n\n readonly destroyed$ = new Subject<void>();\n\n abstract resetInput(): void;\n\n abstract focus(): void;\n\n ngAfterViewInit() {\n this.queryControl.valueChanges\n .pipe(\n filter(() => this.allowQuery),\n takeUntil(this.destroyed$)\n )\n .subscribe((value) => {\n if (value && value.length > 0) {\n this.open.next(true);\n }\n this.query.emit(value);\n this.selectFirstOption();\n });\n\n this.open\n .pipe(\n filter(() => !this.disabled),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((isOpen) => {\n this.dropdownOpen = isOpen;\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\n }\n\n if (this.dropdownBase) {\n this.notifyDropdownBase(isOpen);\n } else {\n // dropdown may be hidden with *ngIf, so we might need to wait for it to be rendered\n setTimeout(() => this.notifyDropdownBase(isOpen));\n }\n });\n\n if (this.focusOnInit) {\n setTimeout(() => this.focus());\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('disabled' in changes) {\n if (this.disabled) {\n this.queryControl.disable();\n } else {\n this.queryControl.enable();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /**\n * @param toggle is true when the caret to the right in a select component was clicked\n */\n public handleClick(toggle: boolean) {\n if (toggle || !this.dropdownOpen || !this.allowQuery) {\n this.open.next(!this.dropdownOpen);\n }\n this.focus();\n }\n\n public handleBackdropClick(event: MouseEvent) {\n event.stopPropagation();\n this.closeInput();\n }\n\n public closeInput() {\n this.open.next(false);\n this.resetInput();\n this.query.emit('');\n }\n\n public openInput() {\n this.open.next(true);\n }\n\n protected setOpenDirection() {\n const dropdownRect = this.optionsContainer.nativeElement.getBoundingClientRect();\n const spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - this.dropdownMaxHeight;\n const spaceAtTheTop = dropdownRect.top - this.dropdownMaxHeight;\n const isTop = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom;\n\n this.dropdownDirection$.next(isTop ? 'TOP' : 'BOTTOM');\n }\n\n protected resetSelectState() {\n this.virtualCursorPosition = 0;\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.resetInput();\n this.query.emit('');\n }\n\n protected mapToEventSet(\n event: KeyboardEvent,\n input: HTMLInputElement,\n virtualCursorPosition: number,\n selectionLength?: number\n ): EventSet {\n return {\n event,\n inputCursorPosition: this.doGetCaretPosition(input),\n virtualCursorPosition,\n selectionLength\n };\n }\n\n /*\n * Returns the caret (cursor) position of the specified text field.\n * Return value range is 0-oField.value.length.\n * https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field\n */\n protected doGetCaretPosition(oField: any) {\n let iCaretPos = 0;\n if (oField.selectionStart || parseInt(oField.selectionStart, 10) === 0) {\n // Check when range selection using null we prevent deleting on\n iCaretPos = oField.selectionStart === oField.selectionEnd ? oField.selectionStart : null;\n }\n return iCaretPos;\n }\n\n protected selectFirstOption() {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.FIRST);\n }\n\n /*\n * Sets the dropdown open/closed state, used for overlay dropdowns\n * */\n private notifyDropdownBase(isOpen: boolean) {\n if (this.dropdownBase && this.dropdownBase.overlayPositioning && this.dropdownBase.cdkOverlayOpenState) {\n this.dropdownBase.cdkOverlayOpenState.next(isOpen);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'lx-responsive-input',\n templateUrl: 'responsive-input.component.html',\n styleUrls: ['responsive-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ResponsiveInputComponent)\n }\n ],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class ResponsiveInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Output() focus = new EventEmitter<void>();\n @Output() focusViaTab = new EventEmitter<void>();\n @Output() blur = new EventEmitter<void>();\n @ViewChild('responsiveInput', { static: true }) responsiveInput!: ElementRef<HTMLInputElement>;\n @ViewChild('inputWidth', { static: true }) inputWidth!: ElementRef<HTMLSpanElement>;\n\n readonly inputWidth$ = new Subject<string>();\n readonly inputControl = new UntypedFormControl();\n readonly destroyed$ = new Subject<void>();\n\n value: any;\n\n ngAfterViewInit() {\n // calculate size of input dynamic\n this.inputControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((value) => {\n this.propagateChange(value);\n try {\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, value) + 1 + 'px';\n this.inputWidth$.next(width);\n } catch (_e) {\n /* empty catch */\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focusInput() {\n this.responsiveInput.nativeElement.focus();\n }\n\n resetInput() {\n if (this.inputControl.value?.length > 0) {\n this.inputControl.reset('', { emitEvent: false });\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, ' ') + 1 + 'px';\n this.inputWidth$.next(width);\n }\n }\n\n /**\n * Based on https://github.com/Semantic-Org/Semantic-UI-React/\n * blob/25e382e40bb3102bb39944612643c0289cd1956b/src/modules/Dropdown/Dropdown.js#L1035\n */\n private computeSearchInputWidth(sizerRef: HTMLSpanElement, searchQuery: string): number {\n if (sizerRef && searchQuery) {\n sizerRef.style.display = 'inline-block';\n sizerRef.textContent = searchQuery;\n const searchWidth = Math.ceil(sizerRef.getBoundingClientRect().width);\n sizerRef.style.removeProperty('display');\n return searchWidth;\n }\n return 0;\n }\n\n //#region Angular Forms\n propagateChange(_value: any) {}\n\n writeValue(newValue: any) {\n if (newValue) {\n this.value = newValue;\n this.propagateChange(this.value);\n }\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n //#endregion\n}\n","<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n (keyup.tab)=\"focusViaTab.emit()\"\n (keyup.shift.tab)=\"focusViaTab.emit()\"\n [formControl]=\"inputControl\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { BaseSelectDirective, EventSet } from '../../models/base-select.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { ResponsiveInputComponent } from '../responsive-input/responsive-input.component';\n\nexport type MultiSelectSize = 'default' | 'small' | 'large' | 'select2';\n\nexport type MultiSelectRemoveItemEvent = {\n item: any;\n /**\n * Is true when the item was not removed by pressing backspace on the keyboard rather than clicking the 'x'.\n */\n isMouse: boolean;\n};\n\n@Component({\n selector: 'lx-multi-select',\n templateUrl: 'multi-select.component.html',\n styleUrls: ['multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, ResponsiveInputComponent, FormsModule, ReactiveFormsModule, NgTemplateOutlet, AsyncPipe]\n})\nexport class MultiSelectComponent extends BaseSelectDirective implements AfterViewInit, ControlValueAccessor {\n public static isStillPossibleMoveToLeft(eventSet: EventSet): boolean {\n return (\n !(\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === ARROW_LEFT &&\n eventSet.selectionLength === 0\n ) &&\n !(\n eventSet.event.keyCode === ARROW_LEFT &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0 &&\n Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength\n )\n );\n }\n\n public static isMovingfromZeroToRight(eventSet: EventSet) {\n return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;\n }\n\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() markInvalid: boolean = false;\n @Input() selection?: any[] | null = [];\n @Input() size: MultiSelectSize = 'default';\n @Input() dropdownWidthScale: '1x' | '1.5x' | '2x' = '1x';\n\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() blur = new EventEmitter<void>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n\n @ViewChild(ResponsiveInputComponent, { static: true }) queryInput!: ResponsiveInputComponent;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n override readonly destroyed$ = new Subject<void>();\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n get dropdownWidth(): string | undefined {\n switch (this.dropdownWidthScale) {\n case '1x':\n return undefined;\n case '1.5x':\n return '150%';\n case '2x':\n return '200%';\n }\n }\n\n resetInput() {\n this.queryInput.resetInput();\n this.queryControl.setValue('');\n }\n\n focus() {\n this.queryInput.focusInput();\n }\n\n focusAndOpen() {\n this.queryInput.focusInput();\n this.open.next(true);\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.selectFirstOption();\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.responsiveInput.nativeElement;\n\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n\n // handle keyboard navigation for the selection\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) =>\n this.mapToEventSet(\n event,\n this.queryInput.responsiveInput.nativeElement,\n this.virtualCursorPosition,\n this.selection ? this.selection.length : 0\n )\n ),\n filter((eventSet) => {\n return !MultiSelectComponent.isMovingfromZeroToRight(eventSet) && MultiSelectComponent.isStillPossibleMoveToLeft(eventSet);\n }),\n tap((eventSet) => {\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0\n ) {\n const lastItem = last(this.selection);\n this.removeItem({ item: lastItem, isMouse: false });\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = MultiSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = MultiSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const inputKeyboardEvents$ = observableFromEvent<KeyboardEvent>(sourceElement, 'keydown');\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n event.preventDefault();\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.optionsKeyboardSelectAction$);\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n }\n\n /**\n * Adds the given option to the selection and, by default, resets the input field.\n * @param option The option to add to the selection.\n * @param keepSearchQueryAndScrollPosition If true, the search query and scroll position of the dropdown will be kept, unless there are no options left.\n */\n addItemToSelection(option: any, keepSearchQueryAndScrollPosition = false) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\n }\n\n const filteredOptionsInDropdownBeforeSelection = this.dropdownBase?._items.length ?? 0;\n if (keepSearchQueryAndScrollPosition && filteredOptionsInDropdownBeforeSelection > 1) {\n return;\n }\n\n this.resetSelectState();\n }\n\n removeItem(optionToRemove: MultiSelectRemoveItemEvent) {\n if (this.disabled) {\n return;\n }\n const prevOptionIndex = findIndex((option) => option === optionToRemove.item, this.selection);\n const prevSelectionLenght = this.selection?.length ?? 0;\n this.selection = _filter((option) => option !== optionToRemove.item, this.selection);\n this.cd.markForCheck();\n this.cd.detectChanges();\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\n\n if (prevOptionIndex === prevSelectionLenght - 1 || optionToRemove.isMouse) {\n this.resetSelectState();\n } else {\n this.virtualCursorPosition++;\n }\n }\n\n propagateChange(_value: any[]) {}\n\n writeValue(value: any[]) {\n this.selection = value;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div class=\"selection\">\n <ng-content select=\".pills\"></ng-content>\n </div>\n <lx-responsive-input\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n (keydown.enter)=\"$event.preventDefault()\"\n ></lx-responsive-input>\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { BasicDropdownItemComponent } from '../basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\nexport type OptionGroupOption = { value: string; label: string };\n/**\n * TODO: rename to something unspecific for single selects because multiselects are also supported\n */\nexport type SingleSelectOptionGroup<T = any> = {\n label: string;\n options: (OptionGroupOption | T)[];\n};\n\n/**\n * Usage:\n * <lx-single-select\n * #singleSelect\n * [selection]=\"value\"\n * (selectionChange)=\"onSelectionChange($event)\">\n * <span class=\"selectedOption\">\n * {{ value.label }}\n * </span>\n * <lx-option-group-dropdown\n * class=\"dropdownComponent\"\n * [keyboardSelectAction]=\"singleSelect.optionsKeyboardSelectAction$\"\n * [optionGroups]=\"optionGroups\"\n * (onItemSelected)=\"singleSelect.selectOption($event)\">\n * </lx-option-group-dropdown>\n * </lx-single-select>\n *\n */\n@Component({\n selector: 'lx-option-group-dropdown',\n templateUrl: 'option-group-dropdown.component.html',\n styleUrls: ['option-group-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n NgTemplateOutlet,\n InfiniteScrollModule,\n SelectableItemDirective,\n BadgeComponent,\n NgFor,\n BasicDropdownItemComponent,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n readonly NAME = 'OptionGroupDropdownComponent';\n @Input() optionGroups: SingleSelectOptionGroup[] = [];\n /**\n * Usually a stream of the current input value of the parent select.\n */\n @Input() newOptionLabel?: string;\n @Input() highlightTerm?: string;\n @Input() showCreateNewOption: boolean = false;\n @Input() labelKey: string = 'label';\n @Input() loading: boolean = false;\n @Input() trackByProperty?: string;\n @Input() showNoResultsIfGroupIsEmpty: boolean = false;\n @Input() override overlayPositioning: boolean = false;\n\n @Output() onItemSelected = new EventEmitter<OptionGroupOption | any>();\n @Output() containerScrolled = new EventEmitter();\n @Output() createNewOption = new EventEmitter<string>();\n\n @ContentChild('optionTemplate') optionTemplateRef?: TemplateRef<any>;\n /**\n * If you provide a <ng-template #noResultsOptionTemplateRef></ng-template> inside the <lx-option-group-dropdown>\n * it will be used to display the \"no results\" option instead of the default \"No results\" text.\n * This way you can easily define different \"No results\" texts for different groups too.\n */\n @ContentChild('noResultsOptionTemplateRef') noResultsOptionTemplateRef?: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n public get isNewItem() {\n const options =\n this.optionGroups?.reduce<(OptionGroupOption | any)[]>((flatOptions, optionGroup) => flatOptions.concat(optionGroup.options), []) ??\n [];\n return BasicDropdownComponent.isNewItem(options, this.newOptionLabel ?? '', this.labelKey);\n }\n\n selectOption(option: OptionGroupOption | any) {\n this.onItemSelected.emit(option);\n }\n\n trackByLabel(index: number, optionGroup: SingleSelectOptionGroup) {\n return optionGroup.label + index;\n }\n\n public onCreateNewOption() {\n if (!this.loading && this.newOptionLabel) {\n this.createNewOption.emit(this.newOptionLabel);\n }\n }\n\n trackByValue(_index: number, option: OptionGroupOption | any) {\n if (this.trackByProperty) {\n return option[this.trackByProperty];\n }\n return option.value;\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n}\n","<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n Renderer2\n} from '@angular/core';\nimport { pick, uniqueId } from 'lodash-es';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-dropdown',\n templateUrl: 'options-dropdown.component.html',\n styleUrls: ['options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective]\n})\nexport class OptionsDropdownComponent implements AfterViewInit, OnDestroy {\n readonly NAME = 'OptionsDropdownComponent';\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n @Input() closeOnSelect: boolean = true;\n @Input() overlayPositioning: boolean = false;\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n overlayScrollStrategy: ScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();\n\n get overlayPositions(): ConnectedPosition[] {\n return [\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'top'\n },\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'top',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'bottom'\n }\n ];\n }\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.lxButton) {\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', this._open.toString());\n }\n\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.changeDetection.markForCheck();\n }\n\n get open() {\n return this._open;\n }\n\n get options(): OptionComponent[] {\n return this._options?.toArray() || [];\n }\n\n get optionIds(): string[] {\n return this.options.map((o) => o.optionId);\n }\n\n get lxButton(): HTMLElement {\n return this.trigger?.nativeElement();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n readonly listboxId: string;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private changeDetection: ChangeDetectorRef,\n private readonly scrollStrategies: ScrollStrategyOptions,\n private renderer: Renderer2\n ) {\n this.listboxId = uniqueId('listbox');\n }\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.FIRST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => 0),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LAST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => this.options.length - 1),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n this.lxButton?.focus();\n });\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index),\n takeUntil(this.destroyed$)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n this.lxButton?.focus();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n filter(() => this.closeOnSelect),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleOptionKeyDown(event);\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n\n this.setInitialAccessibilityAttributes();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n closeDropdown() {\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n let initialIndex = this.options.findIndex((option) => option.selected && this.optionIsHighlightable(option));\n if (initialIndex === -1) {\n initialIndex = this.options.findIndex((option) => this.optionIsHighlightable(option));\n }\n this.highlightedOptionIndex$.next(initialIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]!.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n /**\n * Programmatically sets initial accessibility attributes on the trigger button so that we\n * don't have to do it manually every time we declare a new instance of this component\n */\n private setInitialAccessibilityAttributes(): void {\n if (!this.lxButton) {\n return;\n }\n\n this.renderer.setAttribute(this.lxButton, 'role', 'combobox');\n this.renderer.setAttribute(this.lxButton, 'aria-haspopup', 'listbox');\n this.renderer.setAttribute(this.lxButton, 'tabindex', '0');\n this.renderer.setAttribute(this.lxButton, 'aria-control', this.listboxId);\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', 'false');\n }\n\n handleOptionKeyDown(event: KeyboardEvent): void {\n // In order to keep the centralized keyboard event management logic from `KeyboardActionSourceDirective`\n // we duplicate the option event here and trigger it again from lxButton.\n const newEventOptions = pick(event, [\n 'isTrusted',\n 'altKey',\n 'bubbles',\n 'charCode',\n 'cancelable',\n 'composed',\n 'key',\n 'ctrlKey',\n 'defaultPrevented',\n 'keyCode',\n 'code'\n ]);\n const newEvent = new KeyboardEvent(event.type, newEventOptions);\n\n this.lxButton?.dispatchEvent(newEvent);\n }\n}\n","<ng-container *ngIf=\"!overlayPositioning\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"open = !open\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { delay, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-sub-dropdown',\n templateUrl: 'options-sub-dropdown.component.html',\n styleUrls: ['options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [AutocloseDirective, AsyncPipe]\n})\nexport class OptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n\n @HostBinding('class.hidden')\n hidden = true;\n\n private mouseInside$ = new BehaviorSubject<boolean>(false);\n\n readonly destroyed$ = new Subject<void>();\n readonly maxHeight$ = new BehaviorSubject<string>('none');\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n @HostListener('mouseenter')\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n @HostListener('mouseleave')\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n });\n\n merge(this.showByKeyboard(), this.showByMouse())\n .pipe(takeUntil(this.destroyed$))\n .subscribe((show) => {\n this.hidden = !show;\n this.changeDetection.markForCheck();\n if (show) {\n this.updateMaxHeight(this.trigger.elementRef);\n }\n });\n }\n\n private updateMaxHeight(elementRef: ElementRef) {\n const marginBottom = 8;\n const optionTopPosition = elementRef.nativeElement.getBoundingClientRect().top;\n const screenHeight = window.innerHeight;\n const maxHeight = `${screenHeight - optionTopPosition - marginBottom}px`;\n if (this.maxHeight$.getValue() !== maxHeight) {\n this.maxHeight$.next(maxHeight);\n }\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const showOnEnterSubmenu$ = mouseEnterTrigger$.pipe(\n switchMap(() => mouseLeaveTrigger$),\n switchMap(() => this.mouseInside$)\n );\n\n return merge(showOnEnterMouse$, showOnEnterSubmenu$);\n }\n\n closeDropdown() {\n this.hidden = true;\n }\n}\n","<div #spacingContainer class=\"spacingContainer\" [class.left]=\"align === 'left'\">\n <ul\n #subDropdown\n class=\"sub-dropdown\"\n lxAutoclose\n [class.showScrollbar]=\"(maxHeight$ | async) !== 'none'\"\n [style.max-height]=\"(maxHeight$ | async) ?? 'none'\"\n (autoclose)=\"closeDropdown()\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IconComponent } from '../icon/icon.component';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[lx-picker-option]',\n templateUrl: 'picker-option.component.html',\n styleUrls: ['picker-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class PickerOptionComponent implements Highlightable, OnInit {\n readonly NAME = 'PickerOptionComponent';\n @HostBinding('attr.role') role = 'option';\n @HostBinding('attr.aria-selected') ariaSelected = false;\n @HostBinding('attr.aria-label')\n public get ariaLabelValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('attr.title')\n public get titleValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('id')\n public get id(): string {\n return this.optionId;\n }\n /**\n * The optionId must be set to a unique value. It's used as value for the id property of an option.\n * As the user navigates through the list via arrow keys, the aria-activedescendant property for the\n * button in the PickerComponent is adjusted to reflect the id attribute of the active option.\n */\n @Input() optionId!: string;\n @Input() ariaLabel?: string;\n @Input() value!: any;\n @HostBinding('class.selected') @Input() selected = false;\n @HostBinding('class.clearOption') @Input() isClearOption = false;\n /**\n * Emits the value.\n */\n @Output() select = new EventEmitter<any>();\n /**\n * This property is true, when the option was selected by mouse click or by the\n * ActiveDescendantKeyManager calling setActiveStyles().\n * It's false when the ActiveDescendantKeyManager calls setInactiveStyles().\n * Is used by the PickerComponent to find the current active option.\n */\n @HostBinding('class.highlighted')\n get highlighted() {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = value;\n this.cdRef.markForCheck();\n }\n private _highlighted = false;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n if (this.selected) {\n this.ariaSelected = true;\n }\n }\n\n @HostListener('click')\n manageClickEvents() {\n this.selectOption();\n }\n\n setActiveStyles() {\n this.ariaSelected = true;\n this.highlighted = true;\n }\n\n setInactiveStyles() {\n this.ariaSelected = false;\n this.highlighted = false;\n }\n\n /**\n * Triggers the EventEmitter select() that should emit, when an option was selected.\n * This function is used in the PickerComponent when an option was selected.\n */\n selectOption() {\n this.select.emit(this.value);\n }\n}\n","<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\"></lx-icon>\n<ng-content *ngIf=\"!isClearOption\"></ng-content>\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]',\n standalone: true\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private readonly IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n private readonly HOST_ELEMENT_IS_BUTTON = this.element.nativeElement.matches('button');\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click').pipe(\n tap(() => {\n // There is an inconsistent behavior among browsers when it comes to focusing buttons on click.\n // Safari does not focus buttons on click, but most other browsers do. Therefore, we have to\n // introduce this hack to make sure that the button is focused when the user clicks it.\n // More details in this interesting article: https://zellwk.com/blog/inconsistent-button-behavior/\n if (this.IS_SAFARI && this.HOST_ELEMENT_IS_BUTTON) {\n this.element.nativeElement.focus();\n }\n })\n );\n private focusEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'focus');\n private blurEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'blur');\n\n public clickEvent$ = this.allClickEvents$.pipe(filter(() => this.focused === true));\n\n get width() {\n return this.element.nativeElement.offsetWidth;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private element: ElementRef<HTMLElement>) {\n this.focusEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = true;\n });\n this.blurEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = false;\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { PickerOptionComponent } from '../picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './picker-trigger.directive';\n\n/**\n * How to use:\n * Provide the lx-picker with two kinds of ContentChildren:\n * 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.\n * 2. A list of <li> elements with an lx-picker-option attribute that own the option template as content children.\n *\n * You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.\n *\n * Example usage (non FormGroup style):\n * <lx-picker listBoxAriaLabel=\"Awesome picker\">\n * <button lxPickerTrigger lx-button mode=\"outline\" size=\"large\" [square]=\"true\" aria-label=\"Awesome picker\" title=\"Awesome picker\">\n * <lx-icon [name]=\"selection.label\" [color]=\"selection.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </button>\n * <li *ngFor=\"let option of options\" lx-picker-option [value]=\"option.value\" [selected]=\"selection === option\" (select)=\"selection = option\" [optionId]=\"option.id\">\n * <lx-icon lx-picker-option [name]=\"option.label\" [color]=\"option.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </li>\n * </lx-picker>\n */\n@Component({\n selector: 'lx-picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PickerComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, AutocloseDirective]\n})\nexport class PickerComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n /**\n * A human-readable string value which identifies the listbox.\n * If there's a visible label, then aria-labelledby should be used instead to refer to that label.\n */\n @Input() listBoxAriaLabel?: string;\n /**\n * Identifies the visible element which identifies the listbox.\n * If there's no visible label, then aria-label should be used instead to include a label.\n */\n @Input() listBoxAriaLabelledBy?: string;\n @Input() openDirection: 'left' | 'right' = 'right';\n\n get activeDescendantsId() {\n return this._activeDescendantsId;\n }\n set activeDescendantsId(value: string | undefined) {\n this._activeDescendantsId = value;\n this.cdRef.markForCheck();\n }\n\n get open() {\n return this._open;\n }\n set open(value: boolean) {\n this._open = value;\n this.cdRef.markForCheck();\n }\n\n /**\n * Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.\n */\n get leftOffset() {\n const dropdownWidth = 185;\n return this.openDirection === 'left' ? `-${dropdownWidth - this._trigger.width}px` : '0px';\n }\n\n @ContentChildren(PickerOptionComponent)\n private options!: QueryList<PickerOptionComponent>;\n keyManager!: ActiveDescendantKeyManager<PickerOptionComponent>;\n\n @ContentChild(PickerTriggerDirective)\n private _trigger!: PickerTriggerDirective;\n private _isFormControl = false;\n private _open = false;\n private _activeDescendantsId?: string;\n private _lastSelectWasByKeyManager = false;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private dir: Directionality,\n private cdRef: ChangeDetectorRef\n ) {}\n\n @HostListener('document:keydown', ['$event'])\n manageKeyboardEvents(event: KeyboardEvent) {\n if (this.open) {\n const activeIndex = this.keyManager.activeItemIndex || 0;\n switch (event.key) {\n case 'Enter':\n setTimeout(() => {\n this.closePicker();\n });\n break;\n case 'Escape':\n case 'Tab':\n this.setActivePickerOption(-1);\n this.closePicker();\n break;\n case 'ArrowDown':\n event.preventDefault();\n const newDownIndex = this.keyManager.activeItemIndex === -1 ? 0 : activeIndex + 5;\n this.setActivePickerOption(newDownIndex < this.options.length ? newDownIndex : activeIndex);\n break;\n case 'ArrowUp':\n event.preventDefault();\n const newUpIndex = this.keyManager.activeItemIndex === -1 ? this.options.length - 1 : activeIndex - 5;\n this.setActivePickerOption(newUpIndex >= 0 ? newUpIndex : activeIndex);\n break;\n case 'ArrowLeft':\n if (this.keyManager.activeItemIndex === -1) {\n this.setActivePickerOption(this.options.length - 1);\n } else {\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n break;\n case 'Home':\n event.preventDefault();\n this.setActivePickerOption(0);\n break;\n case 'End':\n event.preventDefault();\n this.setActivePickerOption(this.options.length - 1);\n break;\n default:\n // matches ArrowRight\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n if (this.keyManager.activeItem) {\n this._lastSelectWasByKeyManager = true;\n this.propagateChange(this.keyManager.activeItem.value);\n if (!this._isFormControl) {\n this.keyManager.activeItem.selectOption();\n }\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.keyManager = new ActiveDescendantKeyManager(this.options).withHorizontalOrientation(this.dir.value).withVerticalOrientation(true);\n\n this.options.map((item: PickerOptionComponent) => {\n item.select.pipe(takeUntil(this.destroyed$)).subscribe((value: any) => {\n this.propagateChange(value);\n if (value !== this.keyManager.activeItem?.value || !this._lastSelectWasByKeyManager) {\n this.closePicker();\n }\n this._lastSelectWasByKeyManager = false;\n });\n });\n\n this._trigger.clickEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.toggleOpen();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closePicker() {\n this.setActivePickerOption(-1);\n this.open = false;\n }\n\n toggleOpen() {\n this.open = !this.open;\n if (this.open) {\n this.onTouched();\n }\n this.setActivePickerOption(this.open === false ? -1 : this.options.toArray().findIndex((option) => option.selected));\n }\n\n private setActivePickerOption(index: number) {\n this.keyManager.setActiveItem(index);\n if (this.keyManager.activeItem) {\n this.activeDescendantsId = this.keyManager.activeItem.optionId;\n } else {\n this.activeDescendantsId = undefined;\n }\n }\n\n //#region Angular Forms API. This is only used when using the Picker inside a FormGroup\n\n writeValue(value: any) {\n this.options?.toArray().forEach((option) => (option.selected = option.value === value));\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n this._isFormControl = true;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private propagateChange(_value: any) {}\n private onTouched() {}\n\n //#endregion\n}\n","<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\"></ng-content>\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'lx-pill-item',\n templateUrl: 'pill-item.component.html',\n styleUrls: ['pill-item.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class PillItemComponent {\n readonly NAME = 'PillItemComponent';\n\n @Input() item!: any;\n @Input() label!: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n removePill(item: any, isMouse: boolean = false) {\n if (!this.disabled) {\n this.remove.emit({ item, isMouse });\n }\n }\n}\n","<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { delay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\nimport { PillItemComponent } from '../pill-item/pill-item.component';\n\n@Component({\n selector: 'lx-pill-list',\n templateUrl: 'pill-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['pill-list.component.scss'],\n standalone: true,\n imports: [NgFor, SelectableItemDirective, NgIf, NgTemplateOutlet, PillItemComponent, AsyncPipe]\n})\nexport class PillListComponent extends KeyboardSelectDirective implements AfterViewInit {\n @Input() pills: any[] = [];\n @Input() labelKey?: string;\n /**\n * Provide an itemKey which contains the property name in each object to uniquely identify it.\n * This will be used in the trackBy function.\n */\n @Input() itemKey?: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n /**\n * If you provide an <ng-template #pillTemplate>, it will be used to render the individual pills inside of the lx-multi-select.\n * This is useful if you want to apply special attributes or CSS styling to individual pills.\n * Example:\n * <ng-template #pillTemplate let-pill>\n * <lx-pill-item [class.readOnly]=\"item.readOnly\" [label]=\"item.label\" [item]=\"item\"></lx-pill-item>\n * </ng-template>\n */\n @ContentChild('pillTemplate', { read: TemplateRef, static: true }) pillTemplate?: TemplateRef<any>;\n @ContentChildren(PillItemComponent, { emitDistinctChangesOnly: true }) contentItems!: QueryList<PillItemComponent>;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.pillTemplate) {\n const removePillEvents: Observable<MultiSelectRemoveItemEvent> = this.contentItems.changes.pipe(\n startWith(this.contentItems),\n switchMap(() => merge(...this.contentItems.map((item) => item.remove))),\n delay(0),\n takeUntil(this.destroyed$)\n );\n removePillEvents.subscribe(this.removePill.bind(this));\n }\n }\n\n removePill(event: MultiSelectRemoveItemEvent) {\n this.remove.emit(event);\n }\n\n removePillViaKeyboard(pill: any) {\n this.remove.emit({ item: pill, isMouse: false });\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n}\n","<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item\n [item]=\"pill\"\n [label]=\"labelKey ? pill[labelKey] : pill\"\n [disabled]=\"disabled\"\n (remove)=\"removePill($event)\"\n ></lx-pill-item>\n </ng-template>\n </li>\n</ul>\n","import { includes } from 'lodash/fp';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_UP, ENTER, ESCAPE, SPACE, TAB } from './key-codes.constants';\n\nexport interface KeyboardNavigationEvents {\n verticalNavigation$: Observable<KeyboardEvent>;\n close$: Observable<KeyboardEvent>;\n dropdownKeyboardEvent$: Observable<KeyboardSelectAction | null>;\n enter$: Observable<KeyboardEvent>;\n space$: Observable<KeyboardEvent>;\n openOnArrowDown$: Observable<KeyboardEvent>;\n}\n\nexport function getKeyboardNavigationEvents(sourceElement: HTMLElement, destroyed$: Observable<void>): KeyboardNavigationEvents {\n const inputKeyboardEvents$ = fromEvent<KeyboardEvent>(sourceElement, 'keydown').pipe(takeUntil(destroyed$));\n\n const verticalNavigation$ = inputKeyboardEvents$.pipe(filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])));\n\n const close$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB));\n\n const dropdownKeyboardEvent$ = inputKeyboardEvents$.pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n })\n );\n\n const enter$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ENTER));\n const space$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === SPACE));\n\n const openOnArrowDown$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ARROW_DOWN));\n\n return {\n verticalNavigation$,\n close$,\n dropdownKeyboardEvent$,\n enter$,\n space$,\n openOnArrowDown$\n };\n}\n\nexport function stopKeyboardEventPropagation(evt: Event) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash/fp';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { ExpandedDropdownComponent } from '../expanded-dropdown/expanded-dropdown.component';\n\n@Component({\n selector: 'lx-select-list',\n templateUrl: 'select-list.component.html',\n styleUrls: ['select-list.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgTemplateOutlet]\n})\nexport class SelectListComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit {\n @Input() searchPlaceholder: string = 'Search';\n @Input() options: any[] = [];\n @Input() selection: any;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() onChooseItem = new EventEmitter<string>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n @ContentChild(ExpandedDropdownComponent, { static: false }) private dropdownComponent?: ExpandedDropdownComponent;\n\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n @ViewChild('searchInput', { static: true }) searchInput!: ElementRef<HTMLInputElement>;\n\n highlightedIndex: number = 0;\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n override readonly destroyed$ = new Subject<void>();\n\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n focus() {\n this.searchInput.nativeElement.focus();\n }\n\n focusAndOpen() {\n this.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.dropdownComponent!.select(0);\n }\n } else {\n this.dropdownComponent!.select(0);\n }\n });\n // keyboard event handling\n const sourceElement = this.searchInput.nativeElement;\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n const currentIndex = this.determineHighlightIndex(this.options, this.selection);\n // keyboard selection while not searching\n if (this.searchInput.nativeElement.value === '') {\n if (event.key === 'ArrowDown') {\n if (currentIndex !== this.options.length - 1) {\n this.selectOption(currentIndex + 1);\n } else {\n this.selectOption(0);\n }\n } else {\n if (currentIndex !== 0) {\n this.selectOption(currentIndex - 1);\n } else {\n this.selectOption(this.options.length - 1);\n }\n }\n } else {\n if (event.key === 'ArrowDown') {\n if (this.highlightedIndex !== this.dropdownComponent!.options.length - 1) {\n this.highlightedIndex = this.highlightedIndex + 1;\n } else {\n this.highlightedIndex = 0;\n }\n } else {\n if (this.highlightedIndex !== 0) {\n this.highlightedIndex = this.highlightedIndex - 1;\n } else {\n this.highlightedIndex = this.dropdownComponent!.options.length - 1;\n }\n }\n this.dropdownComponent!.select(this.highlightedIndex);\n }\n });\n\n keyboardEvents.enter$.subscribe(() => {\n if (this.searchInput.nativeElement.value === '') {\n this.onChooseItem.emit(this.selection.id);\n } else if (this.dropdownComponent!.options.length) {\n this.onChooseItem.emit(this.dropdownComponent!.options[this.highlightedIndex].id);\n }\n });\n this.focusAndOpen();\n }\n\n selectOption(index: number) {\n if (this.determineHighlightIndex(this.options, this.selection) === index) {\n this.onChooseItem.emit(this.selection.id);\n } else if (index !== -1) {\n this.selection = this.options[index];\n this.selectionChange.emit(this.selection);\n this.open.next(false);\n this.focusAndOpen();\n this.dropdownComponent?.select(index);\n }\n }\n\n searchKeyChanged(event: any) {\n if (event.target.value === '' && !['ArrowUp', 'ArrowDown'].includes(event.key)) {\n this.highlightedIndex = this.determineHighlightIndex(this.dropdownComponent!.options, this.selection);\n this.dropdownComponent!.select(this.highlightedIndex);\n } else if (event.key.length === 1 || ['Backspace', 'Delete'].includes(event.key)) {\n this.highlightedIndex = 0;\n this.dropdownComponent!.select(0);\n }\n }\n\n private determineHighlightIndex(options: any[], selection: any) {\n return options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div class=\"selectContainer focused\">\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div class=\"searchWrapper\">\n <input\n #searchInput\n id=\"searchInput\"\n class=\"searchInput\"\n type=\"text\"\n autocomplete=\"off\"\n (keyup)=\"searchKeyChanged($event)\"\n [formControl]=\"queryControl\"\n [placeholder]=\"searchPlaceholder\"\n />\n <label for=\"searchInput\" class=\"fa fa-search\"></label>\n </div>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with a single-select in\n * order to mark a ng-template as the template to be rendered within the select to\n * display the currently selected option.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectedOption>{{ someValue }}</ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectedOption]',\n standalone: true\n})\nexport class SelectedOptionDirective {}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { Subject, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { SelectedOptionDirective } from '../../directives/selected-option.directive';\nimport { ARROW_LEFT, ARROW_RIGHT, BACKSPACE, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\n\nexport type SingleSelectSize = 'default' | 'small' | 'select2' | 'large';\n\n@Component({\n selector: 'lx-single-select',\n templateUrl: 'single-select.component.html',\n styleUrls: ['single-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SingleSelectComponent)\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, NgTemplateOutlet, FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class SingleSelectComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() selection: any;\n @Input() selectionBackground: 'white' | 'gray' = 'white';\n @Input() size: SingleSelectSize = 'default';\n @Input() dropdownWidthScale: '1x' | '1.5x' | '2x' = '1x';\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() inputId?: string;\n @Input({ transform: booleanAttribute }) required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n @ContentChild(SelectedOptionDirective, { read: TemplateRef, static: true }) explicitSelectedOption?: TemplateRef<any>;\n @ContentChild(BasicDropdownComponent, { static: false }) private dropdownComponent?: BasicDropdownComponent;\n\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n get selectedOptionTmpl() {\n return this.explicitSelectedOption || this.implicitSelectedOption;\n }\n\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n @Input() allowClear = true;\n @Input() tabIndex: number = 0;\n @Input() markInvalid: boolean = false;\n\n @ViewChild('queryInput', { static: true }) queryInput!: ElementRef<HTMLInputElement>;\n\n override readonly destroyed$ = new Subject<void>();\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n get cursorStyle() {\n if (this.disabled) {\n return 'default';\n } else if (this.allowQuery) {\n return 'text';\n } else {\n return 'pointer';\n }\n }\n\n get dropdownWidth(): string | undefined {\n switch (this.dropdownWidthScale) {\n case '1x':\n return undefined;\n case '1.5x':\n return '150%';\n case '2x':\n return '200%';\n }\n }\n\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n focus() {\n this.queryInput.nativeElement.focus();\n }\n\n focusAndOpen() {\n this.queryInput.nativeElement.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open && !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection, this.dropdownComponent!.itemKey);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.selectFirstOption();\n }\n } else {\n this.selectFirstOption();\n }\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.nativeElement;\n // handle keyboard navigation for the selection\n fromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) => this.mapToEventSet(event, sourceElement, this.virtualCursorPosition)),\n tap((eventSet) => {\n if (!this.allowQuery && eventSet.event.keyCode !== BACKSPACE) {\n // additional check for even.code for userEvent API compatibility\n if (eventSet.event.keyCode !== TAB && eventSet.event.code !== 'Tab') {\n // if querying is disabled, only the tab key press event will be propagated, so that you can still defocus.\n eventSet.event.preventDefault();\n }\n return;\n }\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n this.selection &&\n this.allowClear\n ) {\n this.removeSelection();\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => this.allowQuery && eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = SingleSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = SingleSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n });\n\n keyboardEvents.close$.subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n keyboardEvents.dropdownKeyboardEvent$.subscribe(this.optionsKeyboardSelectAction$);\n\n keyboardEvents.enter$.subscribe(() => this.open.next(!this.dropdownOpen));\n keyboardEvents.space$.pipe(filter(() => !this.allowQuery)).subscribe(() => {\n if (this.dropdownOpen) {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.EXECUTE);\n }\n this.open.next(!this.dropdownOpen);\n });\n\n keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));\n }\n\n selectOption(option: any) {\n this.selection = option;\n\n this.selectionChange.emit(option);\n this.propagateChange(option);\n\n this.resetSelectState();\n\n // This timeout makes sure that the dropdown will be closed at the end\n // of all the callbacks in the open subscriptions.\n setTimeout(() => {\n this.open.next(false);\n });\n }\n\n removeSelection() {\n this.selection = null;\n this.cd.markForCheck();\n this.cd.detectChanges();\n\n this.selectionChange.emit(this.selection);\n this.propagateChange(this.selection);\n\n this.resetSelectState();\n }\n\n propagateChange(_value: any) {}\n\n writeValue(newSelection: any) {\n this.selection = newSelection;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private determineHighlightIndex(options: any[], selection: any, itemKey?: string) {\n return itemKey\n ? options.findIndex((option) => isEqual(get(itemKey, selection), get(itemKey, option)) || isEqual(selection, get(itemKey, option)))\n : options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && selection !== 0 && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\"></ng-container>\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [id]=\"inputId\"\n [attr.required]=\"required ? 'true' : null\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit($event)\"\n (keyup.tab)=\"focusedViaTab()\"\n (keyup.shift.tab)=\"focusedViaTab()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"(selection || selection === 0) && allowClear && !disabled\" class=\"far fa-times\" (click)=\"removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-slider-toggle',\n templateUrl: 'slider-toggle.component.html',\n styleUrls: ['./slider-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class SliderToggleComponent {\n @Input() public value!: boolean;\n @Input() public size: 'small' = 'small';\n @Input() public disabled = false;\n @Input() public label!: string;\n @Input() public labelInFront = true;\n @Input() public elementId?: string;\n @Output() public toggle = new EventEmitter<boolean>();\n\n onToggle() {\n this.toggle.emit(!this.value);\n }\n\n get id() {\n return this.elementId ? `tour${this.elementId}` : null;\n }\n\n focus(checkbox: HTMLInputElement) {\n // without a delay the checkbox will not be focused again\n setTimeout(() => checkbox.focus(), 150);\n }\n}\n","<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss'],\n standalone: true,\n imports: [ButtonComponent]\n})\nexport class SortingDropdownTriggerComponent {\n @Input() label!: string;\n @Input() currentSortingLabel!: string;\n @Input() disabled: boolean = false;\n}\n","<button lx-button mode=\"link\" [disabled]=\"disabled\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}<i class=\"far fa-angle-down lx-margin-left\"></i>\n</button>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\nimport { OptionComponent } from '../option/option.component';\nimport { OptionsDropdownComponent } from '../options-dropdown/options-dropdown.component';\nimport { SortingDropdownTriggerComponent } from '../sorting-dropdown-trigger/sorting-dropdown-trigger.component';\n\n/**\n * Used for translation. The dash in the name ensures that this will not clash with a DataModel field.\n * This key is used when there is no sorting parameter sent to the allFactSheets query, meaning that the ElasticSearch\n * score will be used for sorting.\n */\nexport const RELEVANCE_SORTING_KEY = 'lx-relevance';\n\n@Component({\n selector: 'lx-sorting-dropdown',\n templateUrl: 'sorting-dropdown.component.html',\n styleUrls: ['sorting-dropdown.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n OptionsDropdownComponent,\n SortingDropdownTriggerComponent,\n KeyboardActionSourceDirective,\n OptionGroupComponent,\n NgFor,\n OptionComponent,\n TranslateModule\n ]\n})\nexport class SortingDropdownComponent implements OnInit {\n @Input() currentSorting!: Sorting | null;\n @Input() sortingOptions: Sorting[] = [];\n @Input() showDirectionOptions = true;\n @Output() public apply = new EventEmitter<Sorting>();\n readonly NAME = 'SortingDropdownComponent';\n readonly sortingDirections: SortingOrder[] = ['asc', 'desc'];\n\n ngOnInit() {\n if (!this.currentSorting) {\n this.currentSorting = this.sortingOptions[0] ? { key: this.sortingOptions[0].key, order: this.sortingOptions[0].order } : null;\n }\n }\n\n applySortingMode(sort: Sorting) {\n this.apply.emit({\n key: sort.key,\n order: sort.order\n });\n }\n\n applySortingDirection(sortDirection: SortingOrder) {\n if (this.currentSorting) {\n this.apply.emit({\n key: this.currentSorting.key,\n order: sortDirection\n });\n }\n }\n\n getSortLabel(key: string | undefined) {\n return key ? `sorting.${key}.label` : '';\n }\n}\n","<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n","// /**\n// * Converts HTML to text, preserving semantic newlines for block-level\n// * elements. (Taken from https://stackoverflow.com/a/20384452/6813271)\n// *\n// * @param node - The HTML node to perform text extraction.\n// */\n// export function getNodeTextWithNewlines(node: Element, _inner = false): string {\n// let result = '';\n\n// if (node.nodeType === document.TEXT_NODE) {\n// // Replace repeated spaces, newlines, and tabs with a single space.\n// result = node.nodeValue.replace( /\\s+/g, ' ' );\n// } else {\n// for (let i = 0, j = node.childNodes.length; i < j; i++ ) {\n// result += this.getNodeTextWithNewlines(node.childNodes[i] as Element, true);\n// }\n// const d = node['currentStyle'] ?\n// node['currentStyle']['display'] :\n// document.defaultView.getComputedStyle(node, null).getPropertyValue('display');\n// if (d.match(/^block/)) {\n// result = '\\n' + result + '\\n';\n// } else if (d.match(/list/) || d.match(/row/) || node.tagName === 'BR' || node.tagName === 'HR' ) {\n// result += '\\n';\n// }\n// }\n\n// return _inner ? result : _.trim(result, '\\n');\n// }\n\n/** Trim whitespaces from html */\nexport function trimHtml(str: string): string {\n return str\n .replace(/(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*$/i, '')\n .replace(/^(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*/i, '')\n .replace(/^<(div|p)>(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*<\\/ *(div|p)>$/i, '');\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { intersection, isNil } from 'lodash-es';\nimport { NbspPipe } from '../../core-ui/pipes/nbsp.pipe';\nimport { trimHtml } from '../../shared/html-helpers.function';\n\n// First version based on https://stackoverflow.com/a/41253897/6813271\n@Directive({\n selector: '[lxContenteditableModel]',\n standalone: true\n})\nexport class ContenteditableDirective implements OnChanges {\n /** Model */\n @Input() lxContenteditableModel!: string;\n @Output() lxContenteditableModelChange = new EventEmitter<string>();\n /** Allow (sanitized) html */\n @Input() lxContenteditableHtml: boolean | 'trim' = false;\n @Input() lxContenteditableHtmlPaste: boolean = true;\n\n private emittedValue: string | null = null;\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['lxContenteditableModel']) {\n // On init: if lxContenteditableModel is empty, read from DOM in case the element has content\n if (changes['lxContenteditableModel'].isFirstChange() && !this.lxContenteditableModel) {\n // Prevent Exp.HasChanged: Don't read and emit value from DOM during change detection\n setTimeout(() => {\n this.onInput(true);\n });\n }\n this.refreshView();\n }\n }\n\n @HostListener('input')\n @HostListener('blur')\n @HostListener('keyup')\n onInput(initialInlineData = false) {\n let value = this.elRef.nativeElement[this.getProperty()] as string;\n value = this.cleanContent(value, initialInlineData);\n this.emittedValue = value;\n this.lxContenteditableModelChange.emit(value);\n }\n\n /**\n * @param event {ClipboardEvent}\n */\n @HostListener('paste', ['$event']) onPaste(event: any) {\n const clipboardEvent = event as ClipboardEvent;\n this.onInput();\n // For text-only contenteditable, remove pasted HTML.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n let isHtml: boolean = true;\n // TODO: Use beforepaste event. See https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/.\n if (clipboardEvent.clipboardData && clipboardEvent.clipboardData.types) {\n const types = [].slice.apply(clipboardEvent.clipboardData.types);\n isHtml = intersection(types, ['text/html', 'com.apple.webarchive']).length > 0;\n }\n if (isHtml) {\n // 1 tick wait is required for DOM update\n setTimeout(() => {\n // Cursor will be lost\n // The lint disabling here should be clearified. See if and how this directive is needed.\n this.elRef.nativeElement.innerHTML = this.sanitizer.sanitize(\n SecurityContext.HTML,\n this.elRef.nativeElement.innerText.replace(/\\n/g, '<br />')\n )!;\n });\n }\n }\n }\n\n @HostListener('drop', ['$event']) onDrop(event: MouseEvent) {\n this.onInput();\n // For text-only contenteditable, don't allow drop content.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n\n return false;\n }\n\n private cleanContent(value: string, initialInlineData = false): string {\n if (this.lxContenteditableHtml === 'trim' || (this.lxContenteditableHtml && initialInlineData)) {\n value = trimHtml(value);\n } else if (initialInlineData && !this.lxContenteditableHtml && value) {\n value = value.replace(/^[\\n\\s]+/, '');\n value = value.replace(/[\\n\\s]+$/, '');\n }\n // Some browsers like Chrome insert nbsp; when using contentEditable attribute\n return new NbspPipe().transform(value);\n }\n\n private refreshView() {\n if (!isNil(this.lxContenteditableModel)) {\n const newContent = this.cleanContent(this.lxContenteditableModel);\n // Only refresh if content changed to avoid cursor loss\n // (as ngOnChanges can be triggered an additional time by onInput())\n if (this.emittedValue === null || this.emittedValue !== newContent) {\n this.elRef.nativeElement[this.getProperty()] = this.sanitize(newContent)!;\n }\n }\n }\n\n private getProperty(): 'innerHTML' | 'innerText' {\n return this.lxContenteditableHtml ? 'innerHTML' : 'innerText';\n }\n\n private sanitize(content: string): string | null {\n return this.lxContenteditableHtml ? this.sanitizer.sanitize(SecurityContext.HTML, content) : content;\n }\n}\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'form',\n standalone: true\n})\nexport class FormSubmitDirective implements OnDestroy {\n submitted$ = new BehaviorSubject(false);\n private subscription: Subscription;\n\n constructor(private elementRef: ElementRef) {\n this.subscription = fromEvent(this.elementRef.nativeElement, 'submit')\n .pipe(take(1))\n .subscribe(() => this.submitted$.next(true));\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { curry } from 'lodash-es';\nimport { combineLatest, Observable, of, Subscription } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ErrorMessageComponent } from '../components/error-message/error-message.component';\nimport { FormSubmitDirective } from './form-submit.directive';\n\nexport type FormControlErrorDisplayStrategy = (obj: { control: AbstractControl; submitted?: boolean }) => boolean;\n\nexport const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken<string>('FORM_CONTROL_ERROR_NAMESPACE');\nexport const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken<FormControlErrorDisplayStrategy>(\n 'FORM_CONTROL_ERROR_DISPLAY_STRATEGY'\n);\n\nexport const provideFormControlErrorNamespace = (namespace: string) => ({\n provide: FORM_CONTROL_ERROR_NAMESPACE,\n useValue: namespace\n});\n\nexport const provideFormControlErrorDisplayStrategy = (fn: FormControlErrorDisplayStrategy) => ({\n provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,\n useValue: fn\n});\n\n@Directive({\n selector: '[lxFormError]',\n standalone: true\n})\nexport class FormErrorDirective implements OnInit, OnDestroy {\n @Input('lxFormError') ctrl?: AbstractControl | '';\n @Input() controlName?: string;\n private subscritpion?: Subscription;\n private ref?: ComponentRef<ErrorMessageComponent>;\n\n private get control(): AbstractControl | null | undefined {\n return this.ngControl?.control || this.ctrl || null;\n }\n\n private get name(): string | number | null | undefined {\n return this.ngControl?.name || this.controlName;\n }\n\n private get formSubmitted(): Observable<boolean | undefined> {\n return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);\n }\n\n constructor(\n private viewContainer: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n @Optional() @Self() private ngControl?: NgControl,\n @Optional() @Host() private formSubmitDirective?: FormSubmitDirective,\n @Optional() @Inject(FORM_CONTROL_ERROR_NAMESPACE) private namespace?: string,\n @Optional() @Inject(FORM_CONTROL_ERROR_DISPLAY_STRATEGY) private strategy?: FormControlErrorDisplayStrategy\n ) {}\n\n ngOnInit() {\n const control = this.control;\n if (isAbstractControl(control)) {\n this.subscritpion = combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])\n .pipe(\n map(([, submitted]) => submitted),\n map(resolveStrategy(this.strategy, control))\n )\n .subscribe((display) => {\n const { errors } = control;\n if (errors && display) {\n const firstErrorKey = Object.keys(errors)[0];\n const translationKey = this.buildTranslationKey(firstErrorKey!);\n this.setError(translationKey);\n } else if (this.ref) {\n this.setError();\n }\n });\n }\n }\n\n private buildTranslationKey(errorKey: string) {\n if (this.control) {\n return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;\n } else {\n return '';\n }\n }\n\n private setError(key?: string) {\n if (!this.ref) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);\n this.ref = this.viewContainer.createComponent(factory);\n }\n this.ref.instance.key = key;\n }\n\n ngOnDestroy() {\n if (this.subscritpion) {\n this.subscritpion.unsubscribe();\n }\n }\n}\n\nconst isAbstractControl = (ctrl: AbstractControl | null | undefined): ctrl is AbstractControl => !!ctrl;\nconst resolveStrategy = curry(\n (strategy: FormControlErrorDisplayStrategy | undefined, control: AbstractControl, submitted: boolean | undefined) =>\n strategy ? strategy({ control, submitted }) : true\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, find, includes, isEqual, isObject } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterBySelection',\n standalone: true\n})\nexport class FilterSelectionPipe implements PipeTransform {\n transform(items: any[] | null | undefined, selection: any, itemKey?: string): any[] {\n const isArray = Array.isArray(selection);\n return filter((item) => {\n if (isArray) {\n if (isObject(item)) {\n return itemKey\n ? !find((selectedItem) => selectedItem?.[itemKey] === (item as any)?.[itemKey], selection)\n : !find(item, selection);\n } else {\n return !includes(item, selection);\n }\n } else {\n return !isEqual(item, selection);\n }\n }, items);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, toLower } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterByTerm',\n standalone: true\n})\nexport class FilterTermPipe implements PipeTransform {\n transform(items: any[] | null, options: { term?: string | null; key?: string }): any[] {\n if (items === null) {\n return [];\n }\n if (options.term) {\n return filter((item) => {\n const value = options.key ? item[options.key] : item;\n return toLower(value).indexOf(toLower(options.term!)) > -1;\n }, items);\n } else {\n return items;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LOCALE_FN } from '../../core-ui/core-ui.constants';\nimport { CURRENCY_SYMBOL_MAP } from '../components/currency/currency-symbol-map.constant';\n\n/**\n * Reformats numbers into a short format.\n * @example {{ 1000 | lxFormatNumber | async }} prints 1K\n *\n * If the parameter currency is set, a currency sign is inserted based on the value and the current locale.\n * In this case, the pipe must be used with an innerHtml attribute.\n * @example [innerHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber',\n standalone: true\n})\nexport class FormatNumberPipe implements PipeTransform {\n constructor(@Inject(LOCALE_FN) private getLocale: Function) {}\n\n transform(number: number | undefined | null, currency?: string): Observable<string | null> {\n const locale$: Observable<string> = this.getLocale();\n return locale$.pipe(\n map((locale) => {\n if (number === null || number === undefined) {\n return null;\n }\n const options: any = {\n notation: 'compact',\n compactDisplay: 'short'\n };\n if (currency) {\n try {\n const currencyOptions = { ...options, currency, style: 'currency' };\n const formatedNumberWithCurrency = new Intl.NumberFormat(locale, currencyOptions).format(number);\n return this.getFormatedCurrency(formatedNumberWithCurrency, currency);\n } catch (_error) {\n console.warn(`FormatNumberPipe: Invalid currency code: ${currency}`);\n return new Intl.NumberFormat(locale, options).format(number);\n }\n }\n return new Intl.NumberFormat(locale, options).format(number);\n })\n );\n }\n\n /**\n * Use custom currency symbol, when the currency in the formated number doesn't match the\n * symbol in the CURRENCY_SYMBOL_MAP.\n */\n private getFormatedCurrency(formatedNumberWitCurrency: string, currency: string): string {\n const currencyMapping = CURRENCY_SYMBOL_MAP[currency];\n if (currencyMapping && currencyMapping !== currency && !formatedNumberWitCurrency.includes(currencyMapping)) {\n return formatedNumberWitCurrency.replace(currency, currencyMapping);\n }\n return formatedNumberWitCurrency;\n }\n}\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { LxCoreUiModule } from '../core-ui/core-ui.module';\nimport { BasicDropdownItemComponent } from './components/basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from './components/basic-dropdown/basic-dropdown.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nimport { CopyButtonComponent } from './components/copy-button/copy-button.component';\nimport { CurrencyInputComponent } from './components/currency/currency-input.component';\nimport { CurrencySymbolComponent } from './components/currency/currency-symbol.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { DatepickerUiModule } from './components/date-picker-ui/datepicker-ui.module';\nimport { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { ExpandedDropdownComponent } from './components/expanded-dropdown/expanded-dropdown.component';\nimport { FormErrorComponent } from './components/form-error/form-error.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputComponent } from './components/input/input.component';\nimport { MultiSelectComponent } from './components/multi-select/multi-select.component';\nimport { OptionGroupDropdownComponent } from './components/option-group-dropdown/option-group-dropdown.component';\nimport { OptionGroupComponent } from './components/option-group/option-group.component';\nimport { OptionComponent } from './components/option/option.component';\nimport { OptionsDropdownComponent } from './components/options-dropdown/options-dropdown.component';\nimport { OptionsSubDropdownComponent } from './components/options-sub-dropdown/options-sub-dropdown.component';\nimport { PickerOptionComponent } from './components/picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './components/picker/picker-trigger.directive';\nimport { PickerComponent } from './components/picker/picker.component';\nimport { PillItemComponent } from './components/pill-item/pill-item.component';\nimport { PillListComponent } from './components/pill-list/pill-list.component';\nimport { ResponsiveInputComponent } from './components/responsive-input/responsive-input.component';\nimport { SelectListComponent } from './components/select-list/select-list.component';\nimport { SingleSelectComponent } from './components/single-select/single-select.component';\nimport { SliderToggleComponent } from './components/slider-toggle/slider-toggle.component';\nimport { SortingDropdownTriggerComponent } from './components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nimport { SortingDropdownComponent } from './components/sorting-dropdown/sorting-dropdown.component';\nimport { ContenteditableDirective } from './directives/contenteditable.directive';\nimport { FormErrorDirective } from './directives/form-error.directive';\nimport { FormSubmitDirective } from './directives/form-submit.directive';\nimport { KeyboardActionSourceDirective } from './directives/keyboard-action-source.directive';\nimport { MarkInvalidDirective } from './directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from './directives/select-dropdown.directive';\nimport { SelectableItemDirective } from './directives/selectable-item.directive';\nimport { SelectedOptionDirective } from './directives/selected-option.directive';\nimport { FilterSelectionPipe } from './pipes/filter-selection.pipe';\nimport { FilterTermPipe } from './pipes/filter-term.pipe';\nimport { FormatNumberPipe } from './pipes/format-number.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerUiModule.forRoot(),\n InfiniteScrollModule,\n ClipboardModule,\n OverlayModule,\n LxCoreUiModule,\n LxDragAndDropListModule,\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CopyButtonComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectedOptionDirective,\n SelectDropdownDirective,\n SingleSelectComponent,\n SelectListComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective,\n ContenteditableDirective\n ],\n exports: [\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CopyButtonComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectDropdownDirective,\n SelectedOptionDirective,\n SelectListComponent,\n SingleSelectComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule,\n ContenteditableDirective\n ]\n})\nexport class LxFormsModule {}\n","export type SortingOrder = 'asc' | 'desc';\nexport class Sorting {\n key: string = '';\n order: SortingOrder = 'asc';\n}\n","import { formatDate } from '@angular/common';\nimport { AbstractControl } from '@angular/forms';\n\n/**\n * Due to limitations of the native html datepicker this validator is needed:\n * In the datepicker the min and max values only apply if the date is altered e.g. via scrolling.\n * It is still possible to manually input a value lower or higher than min and max value.\n */\nexport function ValidateDateInForeseeableFuture(control: AbstractControl) {\n // matches yyyy-mm-dd\n const dateRegex = /^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$/;\n\n if (control.value && dateRegex.test(control.value)) {\n const today = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n const maxDate = '2999-12-31';\n if (control.value < today || control.value > maxDate) {\n return {\n dateInForseeableFuture: {\n valid: false\n }\n };\n } else {\n return null;\n }\n }\n return null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { map, Observable, of } from 'rxjs';\n\nfunction stringIsInArray(array: string[], stringToFind: string, valueMapFunction?: (value: string) => string) {\n const valueToFind = valueMapFunction ? valueMapFunction(stringToFind).toLocaleLowerCase() : stringToFind.toLowerCase();\n return array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1;\n}\n\n/**\n * Validates that a string is not inside an array of strings\n */\nexport function ValidateStringNotInArray(\n array: string[],\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArray'\n): ValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return null;\n }\n if (stringIsInArray(array, control.value, valueMapFunction)) {\n return {\n [validatorName]: true\n };\n }\n return null;\n };\n}\n\nexport function ValidateStringNotInArrayAsync(\n array$: Observable<string[]>,\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArrayAsync'\n): AsyncValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return of(null);\n }\n return array$.pipe(map((array) => ValidateStringNotInArray(array, valueMapFunction, validatorName)(control)));\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<ModalCloseClickLocation | boolean>>('MODAL_CLOSE');\n\n/**\n * An enum to track how the modal was closed\n * Escape - Esc key press\n * CloseButton - top right close button (x)\n * OutsideClick - click outside the modal\n * Other - modal close with the trigger through closeModal$ subject\n */\nexport enum ModalCloseClickLocation {\n Escape = 'escape',\n CloseButton = 'closeButton',\n OutsideClick = 'outsideClick',\n CancelButton = 'cancelButton',\n Other = 'other'\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss'],\n standalone: true\n})\nexport class ModalFooterComponent {\n @Input() border: boolean = false;\n}\n","<div class=\"footerContainer\" [class.border]=\"border\">\n <ng-content></ng-content>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-header',\n templateUrl: 'modal-header.component.html',\n styleUrls: ['modal-header.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content></ng-content>\n <h1 *ngIf=\"title.length > 0\">{{ title }}</h1>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]',\n standalone: true\n})\nexport class ModalContentDirective {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE, ModalCloseClickLocation } from '../../modal.constants';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\n\n/**\n *\n * ATTENTION - SCROLLABLE DIALOG:\n * The <lx-modal> component when used as \"dialog\" is not designed to work with a\n * scrollable body (via \"overflow: auto | scroll\") in combination with dropdowns.\n * The overflow on the body will also clip the dropdowns, which is expected.\n *\n * Reasoning:\n * The contents within the dialog should be just a few elements which fit and\n * justify the usage of a dialog. If the content is larger than the dialog, and thus\n * requires scrolling, we should discuss whether to put it into a dialog at all\n * and rather think about putting the content on a separate route or\n * using the fullscreen version of the modal.\n *\n */\n@Component({\n selector: 'lx-modal',\n templateUrl: 'modal.component.html',\n styleUrls: ['modal.component.scss'],\n animations: [\n trigger('modal', [\n transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),\n transition(':leave', animate('0.15s', style({ opacity: 0 })))\n ])\n ],\n standalone: true,\n imports: [PortalModule, NgIf, NgTemplateOutlet, TranslateModule]\n})\nexport class ModalComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\n readonly NAME = 'ModalComponent';\n @Input() open: boolean = false;\n @Input() showCloseButton = true;\n @Input() showBackButton = false;\n /*\n * If true, then the content area scrolls vertically instead of expanding its height.\n * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.\n */\n @Input() verticalScroll = false;\n @Input() size: 'fullscreen' | 'dialog-large' | 'dialog' = 'fullscreen';\n @Input() minWidth: string = '600px'; // NB: Some modal implementations rely on this minWidth being 600px\n @Input() isFocusTrap: boolean = false;\n @Input() canModalBeClosed?: (closeLocation: ModalCloseClickLocation | boolean) => Promise<boolean>;\n @Output() close = new EventEmitter<ModalCloseClickLocation>();\n @Output() back = new EventEmitter<void>();\n\n @ContentChild(ModalHeaderComponent) header?: ModalHeaderComponent;\n @ContentChild(ModalFooterComponent) footer?: ModalFooterComponent;\n @ViewChild(CdkPortal, { static: true }) cdkPortal!: Portal<CdkPortal>;\n private overlayRef!: OverlayRef;\n private oldOverflow?: string;\n closeLocation = ModalCloseClickLocation;\n\n readonly destroyed$ = new Subject<void>();\n\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n @ContentChild(ModalContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n @HostListener('document:keydown.escape') onEscape() {\n if (this.open && this.showCloseButton) {\n this.closeModal(ModalCloseClickLocation.Escape);\n }\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<ModalCloseClickLocation | boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$\n ?.pipe(takeUntil(this.destroyed$))\n .subscribe((closeLocation: ModalCloseClickLocation | boolean) => this.closeModal(closeLocation));\n\n if (this.size === 'fullscreen') {\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n width: '100%',\n height: '100vh'\n });\n } else if (this.size === 'dialog-large') {\n const positionStrategy = this.overlay.position().global().top('4vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n positionStrategy,\n hasBackdrop: true,\n width: '90%',\n height: '90vh'\n });\n } else {\n // size 'dialog'\n const positionStrategy = this.overlay.position().global().top('8vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n minWidth: this.minWidth,\n positionStrategy,\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n\n if (this.size !== 'fullscreen') {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.closeModal(ModalCloseClickLocation.OutsideClick));\n }\n }\n\n ngOnChanges() {\n if (this.open && this.overlayRef && !this.overlayRef.hasAttached()) {\n this.openModal();\n }\n if (!this.open && this.overlayRef && this.overlayRef.hasAttached()) {\n this.closeModal(ModalCloseClickLocation.Other);\n }\n if (this.open && this.overlayRef && this.overlayRef.hasAttached() && this.isFocusTrap) {\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n }\n\n ngAfterViewInit() {\n if (this.open) {\n timer(0)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.openModal());\n }\n }\n\n openModal() {\n this.oldOverflow = document.documentElement.style.overflowY;\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', 'hidden');\n }\n\n this.overlayRef.attach(this.cdkPortal);\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n\n emitBack() {\n this.back.emit();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n async closeModal(closeLocation: ModalCloseClickLocation | boolean) {\n if (!this.canModalBeClosed || (await this.canModalBeClosed(closeLocation))) {\n this.open = false;\n this.overlayRef.detach();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n this.close.emit(typeof closeLocation === 'boolean' ? ModalCloseClickLocation.Other : closeLocation);\n }\n }\n\n private trapFocusInModal(hostElement: HTMLElement) {\n this.focusTrap.create(hostElement);\n }\n}\n","<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFooterComponent } from './components/modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from './components/modal-header/modal-header.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ModalContentDirective } from './directives/modal-content.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PortalModule,\n OverlayModule,\n A11yModule,\n TranslateModule.forChild(),\n ModalComponent,\n ModalHeaderComponent,\n ModalFooterComponent,\n ModalContentDirective\n ],\n exports: [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective]\n})\nexport class LxModalModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n selector: '[lxPopoverContent]',\n standalone: true\n})\nexport class PopoverContentDirective {}\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopover, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { PopoverContentDirective } from '../../directives/popover-content.directive';\nimport { PopoverTriggerDirective } from '../../directives/popover-hover.directive';\n\n/**\n * HOW TO USE\n *\n * This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,\n * make sure to also check out the docs over there.\n *\n * As of today they are two trigger strategies to display a popover.\n * 1. Show on hovering the anchor and while hovering the popover body.\n * 2. Show on click and while hovering the popover body.\n *\n * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.\n *\n * Example:\n * <div lxPopoverHover\n * hoverAnchor\n * satPopoverAnchor\n * #anchor=\"hoverAnchor\"></div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\">\n * <p>Popover content</p>\n * </lx-popover>\n *\n * For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.\n * Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)\n * needs to fetch some data before opening it, we do not register a click EventListener in this directive,\n * but require the developer to implement that in the component, where the popover is used.\n *\n * Example:\n * <div lxPopoverClick\n * clickAnchor\n * satPopoverAnchor\n * #anchor=\"clickAnchor\"\n * (click)=\"popover.open()\">Click Me!</div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\"\n * #popover>\n * <p>Popover content</p>\n * </lx-popover>\n *\n * If this component is used with angularCompilerOptions strictTemplates=true,\n * satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.\n *\n * Example:\n * <div [satPopoverAnchor]=\"popover.satPopover\"></div>\n * <lx-popover #popover>\n * <p>Popover content</p>\n * </lx-popover>\n */\n@Component({\n selector: 'lx-popover',\n templateUrl: 'popover.component.html',\n styleUrls: ['popover.component.scss'],\n standalone: true,\n imports: [SatPopoverModule, NgClass, NgIf, NgTemplateOutlet]\n})\nexport class PopoverComponent implements OnChanges {\n @Input() trigger!: PopoverTriggerDirective;\n @Input() horizontalAlign!: SatPopoverHorizontalAlign;\n @Input() verticalAlign!: SatPopoverVerticalAlign;\n @Input() noMargin = false;\n @Input() allowOverflow = false;\n @Input() autoFocus = false;\n @Input() restoreFocus = true;\n\n /**\n * If you have a popover, that should usually be displayed above or below its anchor,\n * and this anchor is in a scrollable container, you should set this to true.\n * SatPopover will open this popover in the direction where there is enough space,\n * so its position might differ from the horizontalAlign and verticalAlign values.\n * In this case we rely on the SatPopover::_classList property to get the computed\n * position of the popover after opening.\n */\n @Input() adaptMarginsForViewportAlignChange = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild(SatPopover, { static: true }) satPopover!: SatPopover;\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n @ContentChild(PopoverContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n marginClasses!: string;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n get isOpen() {\n return this._isOpen;\n }\n private _isOpen = false;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['horizontalAlign'] && changes['verticalAlign']) {\n this.marginClasses = this.getDefaultMarginClasses(this.horizontalAlign, this.verticalAlign);\n }\n }\n\n open() {\n this.satPopover.open();\n }\n\n close() {\n this.satPopover.close();\n }\n\n onOpen() {\n this._isOpen = true;\n this.opened.emit();\n }\n\n onAfterOpen() {\n if (this.adaptMarginsForViewportAlignChange) {\n this.marginClasses = this.getMarginClassesForClassList(this.satPopover._classList);\n }\n }\n\n onClose() {\n this._isOpen = false;\n this.closed.emit();\n }\n\n /**\n * SatPopover::_classList will contain a map of alignment CSS classes, once the popover was opened.\n * These alignment classes can be different from what you would expect from the horizontal- and verticalAlign inputs,\n * because there might not be enough space above the anchor to meet the verticalAlign='above' criteria,\n * so it will be displayed below the anchor instead.\n */\n private getMarginClassesForClassList(satPopoverClassList: { [className: string]: boolean }): string {\n if (this.noMargin) {\n return '';\n }\n\n if (satPopoverClassList['sat-popover-above']) {\n return this.marginClasses.includes('top') ? this.marginClasses : 'top';\n }\n\n if (satPopoverClassList['sat-popover-below']) {\n return this.marginClasses.includes('bottom') ? this.marginClasses : 'bottom';\n }\n\n if (satPopoverClassList['sat-popover-before']) {\n return this.marginClasses.includes('left') ? this.marginClasses : 'left';\n }\n\n if (satPopoverClassList['sat-popover-after']) {\n return this.marginClasses.includes('right') ? this.marginClasses : 'right';\n }\n\n if (satPopoverClassList['sat-popover-center']) {\n return '';\n }\n return '';\n }\n\n private getDefaultMarginClasses(horizontalAlign: SatPopoverHorizontalAlign, verticalAlign: SatPopoverVerticalAlign): string {\n if (this.noMargin) {\n return '';\n }\n\n if (horizontalAlign === 'after') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'right';\n } else if (verticalAlign === 'above') {\n return 'right top';\n } else if (verticalAlign === 'below') {\n return 'right bottom';\n }\n }\n\n if (horizontalAlign === 'before') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'left';\n } else if (verticalAlign === 'above') {\n return 'left top';\n } else if (verticalAlign === 'below') {\n return 'left bottom';\n }\n }\n\n if (horizontalAlign === 'center' || horizontalAlign === 'start' || horizontalAlign === 'end') {\n if (verticalAlign === 'above') {\n return 'top';\n } else if (verticalAlign === 'below') {\n return 'bottom';\n }\n }\n return '';\n }\n}\n","<sat-popover\n [anchor]=\"trigger.anchor\"\n [horizontalAlign]=\"horizontalAlign\"\n [verticalAlign]=\"verticalAlign\"\n [restoreFocus]=\"restoreFocus\"\n [lockAlignment]=\"true\"\n [autoFocus]=\"autoFocus\"\n openTransition=\"0ms\"\n closeTransition=\"0ms\"\n (opened)=\"onOpen()\"\n (afterOpen)=\"onAfterOpen()\"\n (closed)=\"onClose()\"\n>\n <div\n class=\"popoverContainer\"\n [ngClass]=\"marginClasses\"\n [class.overflowHidden]=\"!allowOverflow\"\n (mouseenter)=\"trigger.showPopover(true)\"\n (mouseleave)=\"trigger.closePopover(true)\"\n (keydown.escape)=\"$event.stopPropagation(); trigger.closePopover(true)\"\n >\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n </div>\n</sat-popover>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchor } from '@ncstate/sat-popover';\nimport { Observable, Subject, of } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../shared/observe';\nimport { PopoverTriggerDirective } from './popover-hover.directive';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'clickAnchor',\n selector: '[lxPopoverClick]',\n standalone: true\n})\nexport class PopoverClickDirective implements PopoverTriggerDirective, AfterViewInit, OnDestroy {\n @Input() lxPopoverPinned = false;\n @Observe('lxPopoverPinned') pinned$!: Observable<boolean>;\n\n private onPopoverShow = new Subject<void>();\n\n private onMouseLeave = new Subject<void>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchor) {}\n\n ngAfterViewInit() {\n this.onMouseLeave\n .pipe(\n switchMap(() => this.pinned$),\n filter((pinned) => !pinned),\n switchMap(() => of(null).pipe(delay(300), takeUntil(this.onPopoverShow))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.close());\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n showPopover() {\n this.onPopoverShow.next();\n }\n\n @HostListener('mouseleave')\n closePopover() {\n this.onMouseLeave.next();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchor } from '@ncstate/sat-popover';\nimport { Subject, of } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nexport interface PopoverTriggerDirective {\n anchor: SatPopoverAnchor;\n showPopover(skipDelay?: boolean): void;\n closePopover(skipDelay?: boolean): void;\n}\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'hoverAnchor',\n selector: '[lxPopoverHover]',\n standalone: true\n})\nexport class PopoverHoverDirective implements AfterViewInit, OnDestroy {\n /**\n * Amount of time to delay (ms) after hovering starts before\n * the popover opens.\n */\n @Input()\n get lxPopoverHover() {\n return this._lxPopoverHover;\n }\n set lxPopoverHover(val: unknown) {\n this._lxPopoverHover = coerceNumberProperty(val, 200);\n }\n private _lxPopoverHover!: number;\n\n /**\n * Relevant for tooltip style.\n */\n @Input()\n skipCloseDelay = false;\n\n /** Emits when the user's mouse enters the element. */\n private onMouseEnter = new Subject<{ skipDelay: boolean }>();\n\n /** Emits when the user's mouse leaves the element. */\n private onMouseLeave = new Subject<{ skipDelay: boolean }>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchor) {}\n\n ngAfterViewInit() {\n // Whenever the user hovers this host element, delay the configured\n // amount of time and open the popover. Terminate if the mouse leaves\n // the host element before the delay is complete.\n this.onMouseEnter\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : this._lxPopoverHover), takeUntil(this.onMouseLeave))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.open());\n\n // Whenever the user leaves this host element, delay the closing of the popover by the configured delay.\n // Abort closing if during this delay another mouseEnter event occurs, for example by the popover itself.\n this.onMouseLeave\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : 300), takeUntil(this.onMouseEnter))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n if (this.anchor.popover.isOpen()) {\n // This is the default case: the popover was shown, now we want to close it.\n this.anchor.popover.close();\n } else {\n // This can happen if we have delayed the opening of the popover, but the mouse left the anchor before\n // the popover was shown. In this case, this.anchor.popover.close() would not generate a closed event,\n // which is why we generate it manually here. This behavior supports cases where a \"dummy\" anchor is\n // dynamically created, like the Fact Sheet detail popover in Reporting or the relations diagram.\n this.anchor.popover.closed.emit();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n @HostListener('mouseenter')\n showPopover(skipDelay = false) {\n this.onMouseEnter.next({ skipDelay });\n }\n\n @HostListener('mouseleave')\n closePopover(skipDelay = this.skipCloseDelay) {\n this.onMouseLeave.next({ skipDelay });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SatPopoverModule } from '@ncstate/sat-popover';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { PopoverClickDirective } from './directives/popover-click.directive';\nimport { PopoverContentDirective } from './directives/popover-content.directive';\nimport { PopoverHoverDirective } from './directives/popover-hover.directive';\n\n@NgModule({\n imports: [CommonModule, SatPopoverModule, PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","/**\n * Key codes that we listen to for\n * user action on our lx-tab-group\n */\nexport enum LxTabGroupKeyCode {\n ArrowRight = 'ArrowRight',\n ArrowLeft = 'ArrowLeft',\n Home = 'Home',\n End = 'End'\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\nimport { Observable, switchMap } from 'rxjs';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { Observe } from '../../../shared/observe';\nimport { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule]\n})\nexport class TabComponent {\n /**\n * The icon input takes a font awesome selector\n * WARNING: Currently this component does not support using an icon together with a label or counter.\n */\n @Input() icon?: string;\n @Input() label: string = '';\n @Input() title?: string;\n /**\n * In some parts of the application, we are passing a plain string to the tabLink input, whereas in\n * most parts, the input is passed as an array. The RouterLink directive also accepts both types,\n * therefore we are using type of the input as string | any[].\n */\n @Input() tabLink?: string | any[];\n @Input() counter?: number;\n @Input() routerLinkActiveOptions: { exact: boolean } = { exact: true };\n @Input() counterBadgeSize: 'default' | 'small' = 'default';\n @Input() noMargin: boolean = false;\n @Input() noLeftMarginForFirstTab: boolean = false;\n @Input() background: 'white' | 'gray' = 'white';\n @Input() disabled: boolean = false;\n\n @Output() switch = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n tabId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild('tabElement') tabElement?: ElementRef<HTMLElement>;\n\n @Observe('routerLinkActive') routerLinkActive$!: Observable<RouterLinkActive>;\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\n /**\n * Used by the lx-tab-group to be notified when a lx-tab that is a link\n * is set to active by the Angular router.\n */\n routerLinkActiveChange$: Observable<boolean>;\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.cd.markForCheck();\n }\n get isActive() {\n if (this.routerLinkActive) {\n return this.routerLinkActive.isActive;\n }\n return this._isActive;\n }\n private _isActive = false;\n\n constructor(\n private cd: ChangeDetectorRef,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.tabId = uniqueId('tab');\n this.routerLinkActiveChange$ = this.routerLinkActive$.pipe(switchMap((routerLinkActive) => routerLinkActive.isActiveChange));\n }\n\n select(): void {\n this.switch.emit();\n }\n\n setFocus(): void {\n this.tabElement?.nativeElement?.focus();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (Object.values<string>(LxTabGroupKeyCode).includes(event.code)) {\n // Send this KeyDown event up to our parent to be handled there\n this.keyDownAction.emit(event);\n return;\n }\n\n const isKeyCodeToSelectFocusedTab = event.code === 'Enter' || event.code === 'Space';\n if (!isKeyCodeToSelectFocusedTab) {\n return;\n }\n\n /**\n * We are preventing the default browser behavior when the `SPACE` key is pressed, in which\n * case the browser would scroll down the page.\n */\n event.preventDefault();\n if (this.tabLink) {\n const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;\n this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {\n this.select();\n });\n } else {\n this.select();\n }\n }\n}\n","<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { TabComponent } from '../tab/tab.component';\nimport { LxTabGroupKeyCode } from './tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab-group',\n templateUrl: 'tab-group.component.html',\n styleUrls: ['tab-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [PortalModule]\n})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n /**\n * The tab whose content should be displayed.\n */\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n @Observe('tabsQueryList') tabsQueryList$!: Observable<QueryList<TabComponent>>;\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\n @ViewChild('tabListElement') tabListElement?: ElementRef<HTMLElement>;\n\n /**\n * The tab that is currently focused via keyboard.\n */\n focusedIndex: number = 0;\n\n get tabIds(): string[] {\n return this.tabs.map((t) => t.tabId);\n }\n private get tabs(): TabComponent[] {\n return this.tabsQueryList?.toArray() || [];\n }\n\n get activeTabPortal() {\n return this.tabs[this.selectedIndex]?.content;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private cd: ChangeDetectorRef) {\n this.listenToFirstTabSelectByAngularRouterForTabLinks().subscribe((tab) => {\n // synchonize the focusedIndex and selectedIndex state with the tab that is active through the current route.\n this.switchTo(tab);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const tab = this.tabs[this.selectedIndex];\n if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {\n this.switchTo(tab);\n }\n }\n\n ngAfterContentInit() {\n if (this.tabs[0]) {\n this.tabs[0].noLeftMarginForFirstTab = true;\n }\n const tab = this.tabs[this.selectedIndex];\n if (tab && !tab.tabLink) {\n this.switchTo(tab);\n }\n\n const listenToTabsSwitch = (tabs: TabComponent[]) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => listenToTabsSwitch(this.tabs)),\n takeUntil(this.destroyed$)\n )\n .subscribe((tab) => {\n this.switchTo(tab);\n });\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => merge(...this.tabs.map((tab) => tab.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleKeyDown(event);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n onFocusOut(event: any) {\n if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {\n // resync focused index on selected index when leaving tabs\n this.focusedIndex = this.selectedIndex;\n }\n }\n\n switchTo(tab: TabComponent) {\n this.tabsQueryList?.forEach((t, index) => {\n t.isActive = t === tab;\n if (t.isActive) {\n this.selectedIndex = index;\n this.focusedIndex = index;\n this.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case LxTabGroupKeyCode.ArrowRight:\n const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;\n this.focusTab(newTabIndex);\n break;\n case LxTabGroupKeyCode.ArrowLeft:\n const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;\n this.focusTab(previousTabIndex);\n break;\n case LxTabGroupKeyCode.Home:\n event.preventDefault();\n this.focusTab(0);\n break;\n case LxTabGroupKeyCode.End:\n event.preventDefault();\n this.focusTab(this.tabs.length - 1);\n break;\n }\n }\n\n private focusTab(tabIndex: number): void {\n const tab = this.tabs[tabIndex];\n if (!tab) {\n return;\n }\n\n tab.setFocus();\n this.focusedIndex = tabIndex;\n }\n\n private listenToFirstTabSelectByAngularRouterForTabLinks() {\n return this.tabsQueryList$.pipe(\n switchMap(() => {\n const tabLinks = this.tabs.filter((tab) => !!tab.tabLink);\n return merge(...tabLinks.map((tab) => tab.routerLinkActiveChange$.pipe(map(() => tab))));\n }),\n first(),\n takeUntil(this.destroyed$) // added in addition to first() here since for tab groups without links no single value will ever be emit.\n );\n }\n}\n","<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { LxCoreUiModule } from '../core-ui/core-ui.module';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\n\n@NgModule({\n imports: [PortalModule, CommonModule, LxCoreUiModule, RouterModule, TabGroupComponent, TabComponent],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.constants';\nexport * from './lib/core-ui/core-ui.module';\n\n// Annotations\nexport * from './lib/core-ui/annotations/required';\n\n// Pipes\nexport * from './lib/core-ui/pipes/br.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.pipe';\nexport * from './lib/core-ui/pipes/custom-date.pipe';\nexport * from './lib/core-ui/pipes/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/lx-is-uuid.pipe';\nexport * from './lib/core-ui/pipes/lx-time-ago.pipe';\nexport * from './lib/core-ui/pipes/lx-translate.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.pipe';\nexport * from './lib/core-ui/pipes/sort.pipe';\nexport * from './lib/core-ui/pipes/translation-after.pipe';\nexport * from './lib/core-ui/pipes/translation-before.pipe';\nexport * from './lib/core-ui/pipes/translation-between.pipe';\nexport * from './lib/core-ui/pipes/unescape-curly-braces.pipe';\n\n// Directives\nexport * from './lib/core-ui/directives/after-view-init.directive';\nexport * from './lib/core-ui/directives/autoclose.directive';\nexport * from './lib/core-ui/directives/autofocus.directive';\n\n// Components\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/banner/banner.component';\nexport * from './lib/core-ui/components/button-group/button-group.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/card/card.component';\nexport * from './lib/core-ui/components/collapsible/collapsible.component';\nexport * from './lib/core-ui/components/colored-label/colored-label.component';\nexport * from './lib/core-ui/components/ellipsis/ellipsis.component';\nexport * from './lib/core-ui/components/file-download-button/file-download-button.component';\nexport * from './lib/core-ui/components/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\n\n// Tooltip\nexport * from './lib/core-ui/tooltip/tooltip-position.interface';\nexport * from './lib/core-ui/tooltip/tooltip.component';\nexport * from './lib/core-ui/tooltip/tooltip.directive';\n\n// Linkify\nexport * from './lib/core-ui/linkify/linkify.pipe';\nexport * from './lib/core-ui/linkify/unlinkify.pipe';\n\n// Functions\nexport * from './lib/core-ui/functions/core-css.helpers';\nexport * from './lib/core-ui/functions/highlight-text.function';\n\n// Services\nexport * from './lib/core-ui/services/resize-observer.service';\nexport * from './lib/core-ui/directives/autoclose-group.service';\n\n/*----------------- forms-ui -----------------*/\n\nexport * from './lib/forms-ui/forms-ui.module';\n\n// Components\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/basic-dropdown/basic-dropdown.component';\nexport * from './lib/forms-ui/components/breadcrumb/breadcrumb.component';\nexport * from './lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component';\nexport * from './lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/copy-button/copy-button.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/date-input/date-input.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component';\nexport * from './lib/forms-ui/components/error-message/error-message.component';\nexport * from './lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component';\nexport * from './lib/forms-ui/components/form-error/form-error.component';\nexport * from './lib/forms-ui/components/icon/icon.component';\nexport * from './lib/forms-ui/components/multi-select/multi-select.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/option/option.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/picker/picker.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.component';\nexport * from './lib/forms-ui/components/select-list/select-list.component';\nexport * from './lib/forms-ui/components/single-select/single-select.component';\nexport * from './lib/forms-ui/components/slider-toggle/slider-toggle.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component';\n\n// Directives\nexport * from './lib/forms-ui/components/keyboard-select.directive';\nexport * from './lib/forms-ui/components/picker/picker-trigger.directive';\nexport * from './lib/forms-ui/directives/contenteditable.directive';\nexport * from './lib/forms-ui/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/directives/keyboard-action-source.directive';\nexport * from './lib/forms-ui/directives/mark-invalid.directive';\nexport * from './lib/forms-ui/directives/select-dropdown.directive';\nexport * from './lib/forms-ui/directives/selectable-item.directive';\nexport * from './lib/forms-ui/directives/selected-option.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/single-select-padding.interface';\nexport * from './lib/forms-ui/models/sorting.interface';\n\n// Helpers\nexport * from './lib/forms-ui/helpers/key-codes.constants';\n\n// Pipes\nexport * from './lib/forms-ui/pipes/filter-selection.pipe';\nexport * from './lib/forms-ui/pipes/filter-term.pipe';\nexport * from './lib/forms-ui/pipes/format-number.pipe';\n\n// Validators\nexport * from './lib/forms-ui/validators/date-in-foreseeable-future.validator';\nexport * from './lib/forms-ui/validators/string-not-in-array.validator';\n\n// Modules\nexport { LxDragAndDropListModule } from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module';\n\n/*----------------- modal-ui -----------------*/\n\nexport * from './lib/modal-ui/modal.constants';\nexport * from './lib/modal-ui/modal.module';\n\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal/modal.component';\n\nexport * from './lib/modal-ui/directives/modal-content.directive';\n\n/*----------------- popover-ui -----------------*/\n\nexport * from './lib/popover-ui/popover-ui.module';\n\nexport * from './lib/popover-ui/components/popover/popover.component';\n\nexport * from './lib/popover-ui/directives/popover-click.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\nexport * from './lib/popover-ui/directives/popover-hover.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/tab-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ResizeObserverService","i2","i1","i1.AutocloseGroupService","isEqual","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","_toString","_isNaN","format","fm","i1.DatePickerInnerComponent","i1.DatepickerConfig","observableFromEvent","_filter","i2.FormSubmitDirective","filter","map","i4","uniqueId","switchMap"],"mappings":"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"}
1
+ {"version":3,"file":"leanix-components.mjs","sources":["../../../../libs/components/src/lib/core-ui/core-ui.constants.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.html","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.html","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.ts","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.html","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.html","../../../../libs/components/src/lib/core-ui/components/button/button.component.ts","../../../../libs/components/src/lib/core-ui/components/button/button.component.html","../../../../libs/components/src/lib/core-ui/components/card/card.component.ts","../../../../libs/components/src/lib/core-ui/components/card/card.component.html","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.ts","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.html","../../../../libs/components/src/lib/core-ui/tooltip/to-cdk-position.function.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip-position.interface.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.html","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.directive.ts","../../../../libs/components/src/lib/core-ui/components/colored-label/colored-label.component.ts","../../../../libs/components/src/lib/core-ui/components/colored-label/colored-label.component.html","../../../../libs/components/src/lib/shared/observe.ts","../../../../libs/components/src/lib/core-ui/services/resize-observer.service.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.html","../../../../libs/components/src/lib/core-ui/components/file-download-button/file-download-button.component.ts","../../../../libs/components/src/lib/core-ui/components/file-download-button/file-download-button.component.html","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.ts","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.html","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.html","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.html","../../../../libs/components/src/lib/core-ui/components/table/table.component.ts","../../../../libs/components/src/lib/core-ui/directives/after-view-init.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose-group.service.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autofocus.directive.ts","../../../../libs/components/src/lib/core-ui/linkify/linkify.pipe.ts","../../../../libs/components/src/lib/core-ui/linkify/unlinkify.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/br.pipe.ts","../../../../libs/components/src/lib/core-ui/functions/core-css.helpers.ts","../../../../libs/components/src/lib/core-ui/pipes/contrast-color.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/custom-date.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-range.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-term.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-is-uuid.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-time-ago.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-translate.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/markdown.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/nbsp.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/sort.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-before.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-after.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-between.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/unescape-curly-braces.pipe.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/annotations/required.ts","../../../../libs/components/src/lib/core-ui/functions/highlight-text.function.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.html","../../../../libs/components/src/lib/shared/misc-helpers.ts","../../../../libs/components/src/lib/forms-ui/directives/selectable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/keyboard-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/helpers/key-codes.constants.ts","../../../../libs/components/src/lib/forms-ui/directives/keyboard-action-source.directive.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.html","../../../../libs/components/src/lib/forms-ui/components/option/option.component.ts","../../../../libs/components/src/lib/forms-ui/components/option/option.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.ts","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/copy-button/copy-button.component.ts","../../../../libs/components/src/lib/forms-ui/components/copy-button/copy-button.component.html","../../../../libs/components/src/lib/forms-ui/directives/mark-invalid.directive.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol-map.constant.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.html","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.html","../../../../libs/components/src/lib/shared/date-helpers.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/date-formatter.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/isBs3.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/daypicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/monthpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/yearpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.config.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.html","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/constants.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.ts","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.html","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.ts","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.html","../../../../libs/components/src/lib/forms-ui/components/input/input.component.ts","../../../../libs/components/src/lib/forms-ui/directives/select-dropdown.directive.ts","../../../../libs/components/src/lib/forms-ui/models/base-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.html","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.html","../../../../libs/components/src/lib/forms-ui/components/picker/picker-trigger.directive.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.html","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.html","../../../../libs/components/src/lib/forms-ui/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.html","../../../../libs/components/src/lib/forms-ui/components/slider-toggle/slider-toggle.component.ts","../../../../libs/components/src/lib/forms-ui/components/slider-toggle/slider-toggle.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.html","../../../../libs/components/src/lib/shared/html-helpers.function.ts","../../../../libs/components/src/lib/forms-ui/directives/contenteditable.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-submit.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-error.directive.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-selection.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-term.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/format-number.pipe.ts","../../../../libs/components/src/lib/forms-ui/forms-ui.module.ts","../../../../libs/components/src/lib/forms-ui/models/sorting.interface.ts","../../../../libs/components/src/lib/forms-ui/validators/date-in-foreseeable-future.validator.ts","../../../../libs/components/src/lib/forms-ui/validators/string-not-in-array.validator.ts","../../../../libs/components/src/lib/modal-ui/modal.constants.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.html","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.html","../../../../libs/components/src/lib/modal-ui/directives/modal-content.directive.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.html","../../../../libs/components/src/lib/modal-ui/modal.module.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-content.directive.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.html","../../../../libs/components/src/lib/popover-ui/directives/popover-click.directive.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-hover.directive.ts","../../../../libs/components/src/lib/popover-ui/popover-ui.module.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.html","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.html","../../../../libs/components/src/lib/tab-ui/tab-ui.module.ts","../../../../libs/components/src/index.ts","../../../../libs/components/src/leanix-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DATE_FORMATS = new InjectionToken<DateFormatsProvider>('DATE_FORMATS', {\n providedIn: 'root',\n factory: () => ({\n getDateFormat: () => 'YYYY-MM-DD',\n getDateTimeFormat: () => 'YYYY-MM-DD HH:mm',\n getDateTimeFormatWithSeconds: () => 'YYYY-MM-DD HH:mm:ss'\n })\n});\n\nexport const DATE_FN_LOCALE = new InjectionToken<Function>('DATE_FN_LOCALE');\nexport const LOCALE_FN = new InjectionToken<Function>('LOCALE_FN');\nexport const GLOBAL_TRANSLATION_OPTIONS = new InjectionToken<GlobalTranslationOptionsProvider>('GLOBAL_TRANSLATION_OPTIONS');\n\nexport interface DateFormatsProvider {\n getDateFormat(): string;\n getDateTimeFormat(): string;\n getDateTimeFormatWithSeconds(): string;\n}\n\nexport interface GlobalTranslationOptionsProvider {\n createGlobalTranslationOptions(): TranslationOptions;\n}\n\nexport interface TranslationOptions {\n [key: string]: string;\n}\n","import { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-badge',\n templateUrl: 'badge.component.html',\n styleUrls: ['badge.component.scss'],\n standalone: true,\n imports: [NgClass]\n})\nexport class BadgeComponent {\n @Input()\n content?: string | number;\n\n @Input()\n size: 'default' | 'small' = 'default';\n\n @Input()\n color: 'primary' | 'gray' | 'darkgray' | 'green' = 'primary';\n\n get classes() {\n return `${this.size} ${this.color}`;\n }\n}\n","<span class=\"content\" [ngClass]=\"classes\">{{ content }}</span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BannerComponent {\n @Input() type: 'success' | 'info' | 'danger' | 'warning' = 'warning';\n\n @HostBinding('class') get bannerTypeClass() {\n return `banner-${this.type}`;\n }\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-button-group',\n templateUrl: 'button-group.component.html',\n styleUrls: ['button-group.component.scss'],\n standalone: true\n})\nexport class ButtonGroupComponent {\n @Input()\n separator: 'margin' | 'border' = 'margin';\n\n @HostBinding('class.marginSeparator')\n public get hasMarginSeperator() {\n return this.separator === 'margin';\n }\n\n @HostBinding('class.borderSeparator')\n public get hasBorderSeparator() {\n return this.separator === 'border';\n }\n}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lx-tiny-spinner',\n templateUrl: 'tiny-spinner.component.html',\n standalone: true\n})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { TinySpinnerComponent } from '../tiny-spinner/tiny-spinner.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[lx-button]',\n templateUrl: 'button.component.html',\n styleUrls: ['button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, TinySpinnerComponent]\n})\nexport class ButtonComponent {\n @Input() @HostBinding('attr.size') size: 'small' | 'medium' | 'large' | 'auto' = 'medium';\n @Input() @HostBinding('attr.color') color: 'default' | 'primary' | 'danger' | 'success' | 'light' = 'default';\n @Input() @HostBinding('attr.mode') mode: 'solid' | 'ghost' | 'outline' | 'link' = 'solid';\n @Input() @HostBinding('class.pressed') pressed: boolean = false;\n @Input() @HostBinding('class.selected') selected: boolean = false;\n @Input() @HostBinding('class.square') square: boolean = false;\n @Input() @HostBinding('class.circle') circle: boolean = false;\n @Input() disabled: boolean = false;\n @Input()\n @HostBinding('class.loading')\n showSpinner: boolean = false;\n\n @HostBinding('disabled')\n get isDisabled() {\n return this.disabled || this.showSpinner;\n }\n}\n","<lx-tiny-spinner *ngIf=\"showSpinner\"></lx-tiny-spinner>\n<ng-content></ng-content>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-card',\n templateUrl: 'card.component.html',\n styleUrls: ['card.component.scss'],\n standalone: true\n})\nexport class CardComponent {\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content></ng-content>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-collapsible',\n templateUrl: 'collapsible.component.html',\n styleUrls: ['collapsible.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent]\n})\nexport class CollapsibleComponent {\n readonly NAME = 'CollapsibleComponent';\n\n @Input() disableSectionToggle = false;\n @Input() hideSectionToggle = false;\n @Input() toggleSize: ButtonComponent['size'] = 'small';\n @Input() toggleTitle = '';\n\n @Input() collapsed: boolean = false;\n @Output() collapsedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.notClickable')\n get notClickable(): boolean {\n return this.disableSectionToggle || this.hideSectionToggle;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n this.onToggleSection(event);\n }\n\n onToggleSection(event: MouseEvent) {\n if (!this.disableSectionToggle && !this.hideSectionToggle) {\n event.stopPropagation();\n this.collapsed = !this.collapsed;\n this.collapsedChange.emit(this.collapsed);\n }\n }\n}\n","<button\n *ngIf=\"!hideSectionToggle\"\n lx-button\n mode=\"link\"\n [title]=\"toggleTitle\"\n [size]=\"toggleSize\"\n class=\"sectionToggle\"\n type=\"button\"\n [disabled]=\"disableSectionToggle\"\n [square]=\"true\"\n (click)=\"onToggleSection($event)\"\n>\n <i class=\"far fa-angle-down\" [class.collapsed]=\"collapsed\"></i>\n</button>\n<div class=\"collapsible-title\">\n <ng-content></ng-content>\n</div>\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { TooltipPosition } from './tooltip-position.interface';\n\nfunction toCdkX(x: 'left' | 'center' | 'right'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n }\n}\n\nfunction invertCdkX(x: 'start' | 'center' | 'end'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'start':\n return 'end';\n case 'center':\n return 'center';\n case 'end':\n return 'start';\n }\n}\n\nfunction invertCdkY(x: 'top' | 'center' | 'bottom'): 'top' | 'center' | 'bottom' {\n switch (x) {\n case 'top':\n return 'bottom';\n case 'center':\n return 'center';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction offsetYDirection(x: 'top' | 'center' | 'bottom'): number {\n switch (x) {\n case 'top':\n return -6;\n case 'center':\n return 0;\n case 'bottom':\n return 6;\n }\n}\n\nfunction offsetXDirection(position: TooltipPosition): number {\n switch (position.y) {\n case 'center':\n switch (position.x) {\n case 'left':\n return -6;\n case 'center':\n return 0;\n case 'right':\n return 6;\n }\n case 'top':\n case 'bottom':\n switch (position.x) {\n case 'left':\n return 30;\n case 'center':\n return 0;\n case 'right':\n return -30;\n }\n }\n}\n\nexport function toCdkPosition(position: TooltipPosition): ConnectedPosition {\n return {\n originX: toCdkX(position.x),\n originY: position.y,\n overlayX: invertCdkX(toCdkX(position.x)),\n overlayY: invertCdkY(position.y),\n offsetY: offsetYDirection(position.y),\n offsetX: offsetXDirection(position)\n };\n}\n","export interface TooltipPosition {\n x: 'left' | 'center' | 'right';\n y: 'top' | 'center' | 'bottom';\n}\n\nexport function isValidX(x: string): x is 'left' | 'center' | 'right' {\n return ['left', 'center', 'right'].includes(x);\n}\n\nexport function isValidY(y: string): y is 'top' | 'center' | 'bottom' {\n return ['top', 'center', 'bottom'].includes(y);\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TooltipPosition } from './tooltip-position.interface';\n\n@Component({\n selector: 'lx-tooltip',\n styleUrls: ['./tooltip.component.scss'],\n templateUrl: './tooltip.component.html',\n standalone: true,\n imports: [NgIf, NgClass]\n})\nexport class TooltipComponent {\n @Input() content = '';\n @Input() isHtmlContent: boolean = false;\n @Input() position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n}\n","<div *ngIf=\"!isHtmlContent; else htmlTooltip\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\">{{ content }}</div>\n<ng-template #htmlTooltip>\n <div [innerHtml]=\"content\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\"></div>\n</ng-template>\n","import { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { toCdkPosition } from './to-cdk-position.function';\nimport { isValidX, isValidY, TooltipPosition } from './tooltip-position.interface';\nimport { TooltipComponent } from './tooltip.component';\n\n@Directive({\n selector: '[lxTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n @Input('lxTooltip') content?: string | null;\n @Input() set lxTooltipPosition(value: { x: string; y: string } | undefined) {\n this.position = {\n x: value && isValidX(value.x) ? value.x : 'center',\n y: value && isValidY(value.y) ? value.y : 'top'\n };\n }\n private position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n @Input() lxTooltipDelay?: number;\n @Input() lxTooltipIsHtmlContent: boolean = false;\n\n private overlayRef?: OverlayRef;\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private mouseOrFocusOnHost: boolean = false;\n\n get positionStrategy() {\n return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([toCdkPosition(this.position)]);\n }\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.overlayRef && changes['lxTooltipPosition']) {\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n if (this.tooltipRef) {\n if (changes['lxTooltipPosition']) {\n this.tooltipRef.instance.position = this.position;\n }\n if (changes['lxTooltipIsHtmlContent']) {\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n }\n if (changes['content']) {\n if (this.content) {\n this.tooltipRef.instance.content = this.content;\n this.overlayRef?.updatePosition();\n } else {\n this.overlayRef?.detach();\n }\n }\n }\n }\n\n @HostListener('mouseenter')\n @HostListener('focus')\n show() {\n this.mouseOrFocusOnHost = true;\n setTimeout(() => {\n if (!this.overlayRef?.hasAttached() && this.mouseOrFocusOnHost && this.content) {\n this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy });\n const tooltipPortal = new ComponentPortal(TooltipComponent);\n this.tooltipRef = this.overlayRef.attach(tooltipPortal);\n this.tooltipRef.instance.content = this.content;\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n this.tooltipRef.instance.position = this.position;\n }\n }, this.lxTooltipDelay ?? 90);\n }\n\n ngOnDestroy() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n\n @HostListener('mouseleave')\n @HostListener('click')\n @HostListener('blur')\n hide() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\n\n@Component({\n selector: 'lx-colored-label',\n templateUrl: 'colored-label.component.html',\n styleUrls: ['colored-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, TooltipDirective]\n})\nexport class ColoredLabelComponent {\n @Input() public bgColor: string = '#c0c0c0';\n @Input() public color: string = '#000';\n\n @Input() public tooltip = '';\n @Input() public classes: string[] = ['label'];\n\n get ngClass() {\n const classObj: { [className: string]: boolean } = {};\n this.classes.forEach((c) => {\n classObj[c] = true;\n });\n return classObj;\n }\n}\n","<span [ngClass]=\"ngClass\" [lxTooltip]=\"tooltip\" [style.background-color]=\"bgColor\" [style.color]=\"color\">\n <ng-content></ng-content>\n</span>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, skipWhile } from 'rxjs/operators';\n\n/**\n * Observe creates an Observable stream and notifies the changes from an observed property.\n *\n * @example\n * Input() foo: string;\n * @Observe('foo') foo$: Observable<string>;\n */\nexport function Observe<T>(observedKey: string): PropertyDecorator {\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (target: Object, key: string | symbol): void => {\n const subjects = new WeakMap<Record<string, unknown>, BehaviorSubject<T | undefined>>();\n\n const getSubject = (instance: Record<string, unknown>) => {\n if (!subjects.has(instance)) {\n subjects.set(instance, new BehaviorSubject<T | undefined>(undefined));\n }\n return subjects.get(instance) || new BehaviorSubject<T | undefined>(undefined);\n };\n\n Object.defineProperty(target, key, {\n get(): Observable<T> {\n return getSubject(this).pipe(\n // An initial `undefined` value is triggered above when initializing the subject for a given instance.\n // This skips the initial `undefined` values, until a defined value is provided. Then, no values\n // are removed from the stream.\n skipWhile((value) => value === undefined),\n map((value) => value as T) // required for TS null check\n );\n }\n });\n\n Object.defineProperty(target, observedKey, {\n get(): T | undefined {\n return getSubject(this).getValue();\n },\n set(instanceNewValue: T): void {\n getSubject(this).next(instanceNewValue);\n }\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { timer } from 'rxjs';\n\nexport type LxResizeObserverCallback = (resizedElement: ResizeObserverEntry) => void;\n\ninterface ResizeableElement extends Element {\n handleResize: LxResizeObserverCallback;\n}\n\nfunction isResizeableElement(element: any): element is ResizeableElement {\n return element && !!element.handleResize;\n}\n\n/**\n * Sharing one ResizeObserver object results in much better performance\n * over individual components creating their own ResizeObserver.\n * This is why this service exists.\n * Source:\n * - https://github.com/WICG/resize-observer/issues/59#issuecomment-408098151\n * - https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n *\n * Learn more about the ResizeObserver API:\n * - https://www.w3.org/TR/resize-observer/\n * - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n * - https://www.digitalocean.com/community/tutorials/js-resize-observer\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService {\n private resizeObserver?: ResizeObserver;\n\n observe(element: ResizeableElement, callback: LxResizeObserverCallback, options?: ResizeObserverOptions) {\n if (!this.resizeObserver) {\n try {\n this.resizeObserver = new ResizeObserver(this.resizeObserverCallback.bind(this));\n } catch {\n // All the browsers we support implement the ResizeObserver API.\n // For unsupported browsers, there's this \"one time artifical resize event\".\n // They will not get the functionality tied to later resize events.\n timer(500).subscribe(() => callback(this.getMockOneTimeResizeEventForUnsupportedBrowsers(element)));\n return;\n }\n }\n element.handleResize = callback;\n this.resizeObserver.observe(element, options);\n }\n\n unobserve(element: HTMLElement) {\n if (!this.resizeObserver) {\n return;\n }\n this.resizeObserver.unobserve(element);\n }\n\n private resizeObserverCallback(entries: ResizeObserverEntry[], _observer: ResizeObserver) {\n entries.forEach((entry) => {\n if (isResizeableElement(entry.target)) {\n entry.target.handleResize(entry);\n }\n });\n }\n\n /**\n * All browsers we officially support implement the ResizeObserver API.\n * Still as a curtesy do customers who for some reason have older browsers\n * we call the callback once with the initial dimensions of the element\n * and then do not react on resize events afterwards.\n * This should still make them happier than a \"browser not supported\" warning.\n */\n private getMockOneTimeResizeEventForUnsupportedBrowsers(element: ResizeableElement) {\n const contentRect = {\n bottom: element.clientHeight,\n height: element.clientHeight,\n left: 0,\n right: element.clientWidth,\n top: 0,\n width: element.clientWidth,\n x: 0,\n y: 0\n };\n return {\n borderBoxSize: [{ blockSize: element.clientHeight, inlineSize: element.clientWidth }],\n contentBoxSize: [\n {\n blockSize: element.clientHeight,\n inlineSize: element.clientWidth\n }\n ],\n contentRect: {\n ...contentRect,\n toJSON: () => JSON.stringify(contentRect)\n },\n devicePixelContentBoxSize: [\n {\n blockSize: element.clientWidth,\n inlineSize: element.clientWidth\n }\n ],\n target: element\n };\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { escape } from 'lodash/fp';\nimport { BehaviorSubject, combineLatest, concat, merge, Observable, Subject } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n pairwise,\n skip,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom\n} from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { ButtonComponent } from '../button/button.component';\n\nexport const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken<number>('LX_ELLIPSIS_DEBOUNCE_ON_RESIZE', {\n providedIn: 'root',\n factory: () => EllipsisComponent.DEFAULT_RESIZE_DEBOUNCE_MS\n});\n\n/**\n * You can set a custom max-width CSS property on your lx-ellipsis host element\n * if you want its content to never exceed a specific width,\n * e.g. <lx-ellipsis style=\"max-width: 300px\" content=\"Hello World[..]\"></lx-ellipsis>.\n */\n@Component({\n selector: 'lx-ellipsis',\n templateUrl: 'ellipsis.component.html',\n styleUrls: [`ellipsis.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent, AsyncPipe]\n})\nexport class EllipsisComponent implements OnInit, OnDestroy {\n static DEFAULT_RESIZE_DEBOUNCE_MS = 500;\n\n @Input() content: string = '';\n /**\n * Only set this to false if the content is not a user provided string\n * or if you sanitize the provided content yourself.\n */\n @Input() escapeHtmlInContent = true;\n\n @Observe('contentSpanEl') private contentSpanEl$!: Observable<ElementRef<HTMLSpanElement>>;\n @ViewChild('contentEl') contentSpanEl!: ElementRef<HTMLSpanElement>;\n @Observe('showMoreButtonEl') private showMoreButtonEl$!: Observable<ElementRef<HTMLButtonElement>>;\n @ViewChild('showMoreButton', { read: ElementRef }) showMoreButtonEl!: ElementRef<HTMLButtonElement>;\n\n isShowingMore$ = new BehaviorSubject(false);\n\n showButton$!: Observable<boolean>;\n showMoreButtonLabel$!: Observable<string>;\n\n sanitizedContent$!: Observable<string>;\n @Observe('content')\n private content$!: Observable<string>;\n\n private destroyed$ = new Subject<void>();\n\n constructor(\n @Inject(LX_ELLIPSIS_DEBOUNCE_ON_RESIZE)\n private debounceMsAfterResize: number,\n private cdRef: ChangeDetectorRef,\n private hostEl: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit(): void {\n this.sanitizedContent$ = this.content$.pipe(\n map((content) => {\n if (this.escapeHtmlInContent && typeof content === 'string') {\n return escape(content);\n }\n return content;\n })\n );\n\n this.showMoreButtonLabel$ = this.isShowingMore$.pipe(\n switchMap((isShowingMore) => {\n const translationKey = isShowingMore ? 'common.showLess' : 'common.showMore';\n return this.translateService.get(translationKey);\n })\n );\n const newWidthOnResize$ = new Subject<number>();\n const newHeightOnResize$ = new Subject<number>();\n this.resizeObserverService.observe(this.hostEl.nativeElement, (resizedElement) => {\n newWidthOnResize$.next(resizedElement.contentRect.width);\n newHeightOnResize$.next(resizedElement.contentRect.height);\n });\n const containerWidthChangedSignificantlyAfterResize$ = newWidthOnResize$.pipe(\n startWith(0),\n pairwise(),\n filter(([previousWidth, newWidth]) => Math.abs(newWidth - previousWidth) > 1),\n map(([, newWidth]) => newWidth)\n );\n const userTriggeredTriggeredShowLess$ = this.isShowingMore$.pipe(filter((isShowingMore) => !isShowingMore));\n\n const reevaluateIfContentIsOverflowing$ = combineLatest([\n this.contentSpanEl$,\n userTriggeredTriggeredShowLess$,\n containerWidthChangedSignificantlyAfterResize$\n ]);\n\n const isContentOverflowing$ = merge(\n concat(\n reevaluateIfContentIsOverflowing$.pipe(take(1)), // debounce all but the first output\n reevaluateIfContentIsOverflowing$.pipe(debounceTime(this.debounceMsAfterResize))\n ),\n this.content$.pipe(skip(1)) // immediately reevaluate on subsequent content changes\n ).pipe(\n withLatestFrom(this.contentSpanEl$),\n map(([, contentSpanRef]) => this.isContentOverflowing(contentSpanRef))\n );\n\n const userTriggeredTriggeredShowMore$ = this.isShowingMore$.pipe(filter((isShowingMore) => isShowingMore));\n\n const buttonHeight$ = this.showMoreButtonEl$.pipe(\n filter((showMoreButtonEl) => !!showMoreButtonEl),\n map((showMoreButtonEl) => showMoreButtonEl.nativeElement.offsetHeight),\n distinctUntilChanged()\n );\n const userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$ = combineLatest([\n buttonHeight$,\n newHeightOnResize$.pipe(distinctUntilChanged())\n ]).pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => isShowingMore),\n map(([[buttonHeight, newHeight]]) => {\n const heightOfOneLine = buttonHeight;\n const showLessButtonMarginTop = 4;\n const heightOfSpanInShowMoreMode = newHeight - buttonHeight - showLessButtonMarginTop;\n const thresholdToDetectContentInSingleLine = 4;\n const differenceBetweenContentSpanAndButtonHeight = Math.abs(heightOfOneLine - heightOfSpanInShowMoreMode);\n const isSpanContentDisplayedInOneLineAgain = differenceBetweenContentSpanAndButtonHeight < thresholdToDetectContentInSingleLine;\n return isSpanContentDisplayedInOneLineAgain;\n })\n );\n const contentFitsInOneLineAgainWhileShowMoreIsEnabled$ = userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$.pipe(\n startWith(false),\n pairwise(),\n filter(([previousTextIsNowInOneLineAgain]) => !previousTextIsNowInOneLineAgain),\n map(([, textIsNowInOneLineAgain]) => !textIsNowInOneLineAgain)\n );\n const contentIsOverflowingAndShowMoreIsNotEnabled$ = isContentOverflowing$.pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => !isShowingMore),\n map(([isContentLongerThanContainerWidth]) => {\n return isContentLongerThanContainerWidth;\n })\n );\n this.showButton$ = merge(\n userTriggeredTriggeredShowMore$,\n contentFitsInOneLineAgainWhileShowMoreIsEnabled$,\n contentIsOverflowingAndShowMoreIsNotEnabled$\n );\n\n // As long as no parent component is listening on resize events,\n // the ChangeDetectorRef.markForCheck() call done by the async pipe\n // will not result in a change detection cycle in this component when its size changes.\n // This is the least amount of ChangeDetectorRef.detectChanges() calls\n // I was able to come up with. The Angular profiler shows acceptable numbers of change detection.\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n this.detectChangesWhenObservableEmits(this.showButton$);\n this.detectChangesWhenObservableEmits(this.content$);\n this.detectChangesWhenObservableEmits(contentIsOverflowingAndShowMoreIsNotEnabled$);\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n }\n\n onShowMoreToggle() {\n this.isShowingMore$.next(!this.isShowingMore$.getValue());\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.resizeObserverService.unobserve(this.hostEl.nativeElement);\n }\n\n private detectChangesWhenObservableEmits(observable$: Observable<any>) {\n observable$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.cdRef.detectChanges());\n }\n\n private isContentOverflowing(contentSpanElRef: ElementRef<HTMLSpanElement>) {\n const scrollWidth = contentSpanElRef.nativeElement.scrollWidth;\n const offsetWidth = contentSpanElRef.nativeElement.clientWidth;\n return offsetWidth < scrollWidth;\n }\n}\n","<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-file-download-button',\n templateUrl: 'file-download-button.component.html',\n styleUrls: ['file-download-button.component.scss'],\n standalone: true,\n imports: [NgIf, ButtonComponent, TranslateModule]\n})\nexport class FileDownloadButtonComponent implements OnInit {\n @Input() downloadRequest!: (any: any) => Observable<any>;\n @Input() initialDownloadLink!: string;\n @Input() refreshKeyUrl!: string;\n @Input() downloadLabel!: string;\n\n @Output() downloadFinish = new EventEmitter<string>();\n @Output() downloadStarted = new EventEmitter<void>();\n\n readonly NAME = 'FileDownloadButtonComponent';\n\n downloadLink!: string;\n downloaded!: boolean;\n\n ngOnInit() {\n this.downloadLink = this.initialDownloadLink;\n }\n\n download(event: MouseEvent) {\n this.downloadStarted.emit();\n this.openUrlInNewWindow(this.downloadLink);\n this.downloaded = true;\n event.preventDefault();\n this.downloadFinish.emit(this.downloadLink);\n }\n\n requestDownload() {\n if (this.downloadRequest) {\n this.downloadRequest(this.refreshKeyUrl).subscribe((downloadUrl) => {\n this.downloadLink = downloadUrl;\n });\n }\n }\n\n private openUrlInNewWindow(url: string, target: string = '_blank', features?: string): Window | null {\n const newTab = window.open(url, target, features);\n // In case a popup blocker has blocked the newly opened tab/window, \"newTab\" will be null\n if (newTab) {\n newTab.opener = null;\n }\n return newTab;\n }\n}\n","<a class=\"btn btn-primary\" *ngIf=\"!downloaded && !!downloadLink\" [href]=\"downloadLink\" (click)=\"download($event)\">{{\n downloadLabel ? downloadLabel : ('buttons.download' | translate)\n}}</a>\n<button lx-button color=\"light\" size=\"large\" *ngIf=\"(downloaded && refreshKeyUrl) || !downloadLink\" (click)=\"requestDownload()\">\n {{ NAME + '.newDownload' | translate }}\n</button>\n","import { NgFor, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nexport interface Icon {\n /** Font-awesome icon class, e.g. 'address-book'. See http://fontawesome.io/icons/ */\n type: string;\n color?: string;\n reverse?: boolean;\n}\n\n@Component({\n selector: 'lx-icon-scale',\n templateUrl: 'icon-scale.component.html',\n styleUrls: ['icon-scale.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class IconScaleComponent implements OnChanges {\n @Input() public icon: Icon = {\n type: 'star'\n };\n @Input() public numberOfColoredItems = 0;\n @Input() public numberOfItems = 0;\n\n readonly NAME = 'IconScaleComponent';\n iconArray: boolean[] = [];\n\n public ngOnChanges(_changes: SimpleChanges) {\n this.iconArray = this.createIconArray(this.numberOfColoredItems, this.numberOfItems, this.icon?.reverse || false);\n }\n\n private createIconArray(coloredItems: number, totalItems: number, reverse: boolean): boolean[] {\n return [...Array(totalItems).keys()].map((index) => {\n if (reverse) {\n return index >= totalItems - coloredItems;\n } else {\n return index < coloredItems;\n }\n });\n }\n}\n","<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * The following CSS classes should be used to style this component. The use of the inputs is deprecated.\n * - fullSpace: Sets position to absolute with full height and width => fills ancestor with position set.\n * - fullSpaceFixed: Sets position to fixed with full height and width => fills window\n * (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`\n * - fadeBackground: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.\n */\n@Component({\n selector: 'lx-spinner',\n templateUrl: 'spinner.component.html',\n styleUrls: ['spinner.component.scss'],\n standalone: true\n})\nexport class SpinnerComponent {\n @HostBinding('class.fadeBackgroundFromInput') @Input() public fadeBackground: boolean = false;\n}\n","<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output\n} from '@angular/core';\nimport { OrderOption, SortingOptions } from '../../../pipes/sort.pipe';\n\n@Component({\n selector: 'lx-th',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class TableHeaderComponent {\n @Input() column?: string;\n\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n @HostBinding('class.sortable') sortable = false;\n\n private _order: OrderOption;\n\n constructor(\n private elmentRef: ElementRef<HTMLElement>,\n private changeDetection: ChangeDetectorRef\n ) {}\n\n @HostListener('keydown.enter') @HostListener('click') onSort() {\n if (this.column) {\n if (!this.order) {\n this.order = 'ASC';\n } else if (this.order === 'ASC') {\n this.order = 'DESC';\n } else {\n this.order = undefined;\n }\n this.sortChange.emit({ key: this.order ? this.column : undefined, order: this.order });\n }\n }\n\n set order(value) {\n this._order = value;\n this.changeDetection.markForCheck();\n }\n\n get order() {\n return this._order;\n }\n\n set isTabable(tabable: boolean) {\n this.elmentRef.nativeElement.tabIndex = tabable ? 0 : -1;\n }\n}\n","<span>\n <ng-content></ng-content>\n</span>\n<i class=\"fas\" [class.fa-sort-up]=\"order === 'ASC'\" [class.fa-sort-down]=\"order === 'DESC'\" *ngIf=\"order && sortable\"></i>\n","import {\n AfterContentInit,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { merge } from 'rxjs';\nimport { SortingOptions } from '../../pipes/sort.pipe';\nimport { TableHeaderComponent } from './table-header/table-header.component';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table[lx-table]',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class TableComponent implements AfterContentInit, OnChanges {\n @Input() isSortable = false;\n @Input() sort?: SortingOptions;\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n @ContentChildren(TableHeaderComponent, { descendants: true }) tableHeaders!: QueryList<TableHeaderComponent>;\n\n constructor(private elementRef: ElementRef<HTMLTableElement>) {\n this.elementRef.nativeElement.classList.add('table', 'table-hover');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['sort'] && this.tableHeaders) {\n this.tableHeaders.forEach((header) => {\n this.setSortValueOnHeader(header);\n });\n }\n\n if (changes['isSortable'] && this.tableHeaders) {\n this.tableHeaders.forEach((header) => {\n header.sortable = this.isSortable;\n header.isTabable = this.isSortable;\n });\n }\n }\n\n ngAfterContentInit(): void {\n this.tableHeaders.forEach((header) => {\n header.sortable = this.isSortable;\n header.isTabable = this.isSortable;\n\n if (this.sort) {\n this.setSortValueOnHeader(header);\n }\n });\n\n const sortChange$ = merge(...this.tableHeaders.map((header) => header.sortChange.asObservable()));\n\n sortChange$.subscribe((change) => {\n this.tableHeaders.forEach((header) => {\n this.setSortValueOnHeader(header);\n });\n this.sortChange.emit(change);\n });\n }\n\n private setSortValueOnHeader(header: TableHeaderComponent) {\n if (header.column !== this.sort?.key) {\n header.order = undefined;\n } else {\n header.order = this.sort?.order;\n }\n }\n}\n","import { AfterViewInit, Directive, EventEmitter, Output } from '@angular/core';\n\n/**\n * Allows to register an event handler for the \"AfterViewInit\" lifecycle hook.\n * This can be used to do something whenever a component enters the view. This\n * might be due to an *ngIf condition.\n *\n * Example:\n * ```\n * <lx-component-a #componentA></lx-component-a>\n * <lx-component-b *ngIf=\"someCondition\" (lxAfterViewInit)=\"componentA.close()\"></lx-component-b>\n * ```\n */\n@Directive({\n selector: '[lxAfterViewInit]',\n standalone: true\n})\nexport class AfterViewInitDirective implements AfterViewInit {\n @Output() lxAfterViewInit = new EventEmitter<void>();\n\n ngAfterViewInit() {\n this.lxAfterViewInit.emit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AutocloseDirective } from './autoclose.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class AutocloseGroupService {\n private registry: Record<string, AutocloseDirective[]> = {};\n\n register(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.addToGroup(directive);\n }\n }\n\n unregister(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.removeFromGroup(directive);\n }\n }\n\n private removeFromGroup(directive: AutocloseDirective) {\n const name = directive.autocloseGroup!;\n this.registry[name] = this.getGroup(name).filter((d) => d !== directive);\n }\n\n private addToGroup(directive: AutocloseDirective) {\n const directivesOfSameGroup = this.getGroup(directive.autocloseGroup!);\n directivesOfSameGroup.forEach((d) => setTimeout(() => d.autoclose.emit()));\n directivesOfSameGroup.push(directive);\n }\n\n private getGroup(name: string): AutocloseDirective[] {\n if (!this.registry[name]) {\n this.registry[name] = [];\n }\n return this.registry[name]!;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseGroupService } from './autoclose-group.service';\n\n@Directive({\n selector: '[lxAutoclose]',\n standalone: true\n})\nexport class AutocloseDirective implements OnInit, OnDestroy {\n @Output() autoclose = new EventEmitter<EventTarget | null>();\n\n /**\n * Allows to group lxAutoclose elements in order to prevent\n * to open multiple of them in that same group. If no group\n * is provided this prevention does not happen.\n */\n @Input() autocloseGroup?: string;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private groupService: AutocloseGroupService\n ) {}\n\n ngOnInit() {\n fromEvent(document, 'click', { capture: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => this.onClick(event?.target));\n\n this.groupService.register(this);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.groupService.unregister(this);\n }\n\n private onClick(target: EventTarget | null) {\n const clickedInside = this.elementRef.nativeElement.contains(target);\n if (!clickedInside) {\n this.autoclose.emit(target);\n }\n }\n}\n","import { AfterContentInit, Directive, ElementRef, Input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[lxAutofocus]',\n standalone: true\n})\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone\n ) {}\n\n ngAfterContentInit() {\n if (this.lxAutofocus !== false) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.elementRef.nativeElement.focus({ preventScroll: this.lxAutofocusPreventScroll });\n }, this.lxAutofocusTimeout);\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * This pipe transforms...\n * - \"raw\" http(s) links\n * - markdown link syntax\n * ... into clickable anchor elements.\n *\n * The characters \"<\" and \">\" are escaped with their HTML entities &lt; and &gt;.\n *\n * You have an user interface where you don't want clickable links but also\n * don't want users to see the \"ugly\" markdown link syntax?\n * -> Use the 'lxUnlikify' pipe to replace markdown link syntax with just the link name\n */\n@Pipe({\n name: 'lxLinkify',\n standalone: true\n})\nexport class LxLinkifyPipe implements PipeTransform {\n /**\n * This is not the \"one URL regex to rule them all\", but a more realistic one which should work\n * for any URLs that our customers include in text fields on a Fact Sheet.\n *\n * Regex rules explained in plain text:\n *\n * (?:(?:https?):\\/\\/) -> Links must start with \"https://\" or \"http://\"\n *\n * (?:[^\\s/$.?#][^\\s]*(?<![\\.)])) LET'S SPLIT THIS ONE UP\n *\n * [^\\s/$.?#][^\\s]* -> Match any legal URL character until the next whitespace\n * (?<![\\.)] -> A negative lookahead to prevent matching a dot or parenthesis following a URL\n *\n * Link to regex101: https://regex101.com/r/d3KtfH/1 (NOTE: please update this link when changing the regex)\n */\n public static readonly HTTP_LINK_REGEX = /(?:(?:https?):\\/\\/)(?:[^\\s/$.?#][^\\s]*)/gi;\n\n /**\n * This will match the markdown link syntax: [link name](url)\n * Regex rules explained in plain text:\n *\n * (?:\\[([^\\]]*)\\]) -> Match any characters inside square brackets\n * \\(([^\\s\\/$.?#][^\\s]*)\\) -> Notice that this is the same regex as the HTTP_LINK_REGEX above,\n * but without the requirement for the http protocol.\n * This allows for links without including the protocol or also \"mailto:hello@world.de\" links\n *\n * Link to regex101: https://regex101.com/r/5UMUH8/1\n */\n public static readonly NAMED_LINK_REGEX = /(?:\\[([^\\]]*)\\])\\(([^\\s\\/$.?#][^\\s]*)\\)/gi;\n\n transform(text?: string | null, escape = true): string | undefined | null {\n if (text && typeof text === 'string') {\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escape ? this.escapeHtmlInUserProvidedString(text) : text);\n const textWithRawAndNamedLinks = this.turnMarkdownStyleLinksIntoAnchorTags(textWithRawLinks);\n return textWithRawAndNamedLinks;\n } else {\n return text;\n }\n }\n\n private turnMarkdownStyleLinksIntoAnchorTags(text: string) {\n let textWithRawAndNamedLinks = text;\n const namedLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n namedLinkMatches.forEach((namedLinkMatch) => {\n const [source, name, url] = namedLinkMatch;\n const urlIsValid = url && !/javascript\\:/i.test(url);\n if (source && name && urlIsValid) {\n textWithRawAndNamedLinks = textWithRawAndNamedLinks.replace(\n source,\n `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${name}</a>`\n );\n }\n });\n return textWithRawAndNamedLinks;\n }\n\n private wrapRawHttpLinksWithAnchorTags(text: string) {\n let textWithRawLinks = text;\n /**\n * Keeping track of this index prevents infinite loops\n * where a previously processed link starts with the same characters\n * as a second link.\n * e.g. https://angular.io/docs followed by https://angular.io\n */\n let nextIndexToStartReplacingFrom = 0;\n const rawLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.HTTP_LINK_REGEX, text);\n rawLinkMatches.forEach((rawLinkMatch) => {\n const [url] = rawLinkMatch;\n const wrapUrlInAnchor = (sanitizedUrlMatch: string) => {\n const firstPart = textWithRawLinks.substring(0, nextIndexToStartReplacingFrom);\n const anchorTagHtml = `<a href=\"${sanitizedUrlMatch}\" target=\"_blank\" rel=\"noopener noreferrer\">${sanitizedUrlMatch}</a>`;\n const secondPart = textWithRawLinks.substring(nextIndexToStartReplacingFrom).replace(sanitizedUrlMatch!, anchorTagHtml);\n textWithRawLinks = firstPart + secondPart;\n nextIndexToStartReplacingFrom = rawLinkMatch.index + anchorTagHtml.length;\n };\n if (url) {\n /*\n * TODO: get rid of all this code once Safari supports negative lookbehinds in regular expressions\n * The following is RegExp that handles the same stuff as the JS code below:\n *\n * /(?:(?:(?<!\\]\\())(?:https|http):\\/\\/)(?:[^\\s/$.?#][^\\s]*(?<![\\.)]))/gi;\n *\n * Demo on regex101: https://regex101.com/r/7Vl9bg/1\n *\n * Check lookbehind support here: https://caniuse.com/?search=lookbehind\n */\n const lastUrlCharacterIndex = rawLinkMatch.index + url.length - 1;\n const textUsedToPerformMatching = rawLinkMatch.input;\n const lastCharacterInUrl = textUsedToPerformMatching[lastUrlCharacterIndex];\n const twoCharactersInFrontOfTheLink =\n rawLinkMatch.index > 3\n ? `${textUsedToPerformMatching[rawLinkMatch.index - 2]}${textUsedToPerformMatching[rawLinkMatch.index - 1]}`\n : '';\n const isMarkdownSyntaxLink = twoCharactersInFrontOfTheLink === '](';\n\n if (!isMarkdownSyntaxLink && lastCharacterInUrl === '.') {\n const characterAfterUrl = textUsedToPerformMatching[lastUrlCharacterIndex + 1];\n if (!characterAfterUrl || characterAfterUrl === ' ' || characterAfterUrl === '\\n') {\n const urlWithoutDotAtTheEnd = url.slice(0, -1);\n wrapUrlInAnchor(urlWithoutDotAtTheEnd);\n }\n } else if (!isMarkdownSyntaxLink) {\n wrapUrlInAnchor(url);\n }\n }\n });\n return textWithRawLinks;\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n\n /**\n * We assume that lxLinkify is exclusively used on user provided strings.\n * This is why we want to escape any other HTML tags that are already present in the string.\n * The logic implemented here has been used with no issues for three years in our Fact Sheet comments. See https://github.com/gregjacobs/Autolinker.js/pull/313\n *\n * When using lxLinkify in conjunction with other pipes that add HTML, make sure to use lxLinkify first,\n * so that it doesn't escape the HTML of any previous pipes.\n */\n private escapeHtmlInUserProvidedString(input: string) {\n return input.replace(/<|>/gi, (match) => '&' + (match === '>' ? 'g' : 'l') + 't;');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LxLinkifyPipe } from './linkify.pipe';\n\n/**\n * This pipe replaces markdown link syntax with just the link name (omits the link altogether).\n * Example: [Angular documentation](http://angular.io/docs) -> Angular documentation\n *\n * It can also be used for \"bridging the gap\" until your view is ready to use \"lxLinkify\"\n * and you just want to get rid of the \"useless\" markdown syntax fast.\n *\n * While there are views where we want markdown style links to be clickable anchor tags,\n * there are other views where this can degrade the UX.\n * Example: in the Fact Sheet list on the inventory list view, having an arbitrary number\n * of links on the page can slow down the keyboard navigation while navigating through the list.\n */\n@Pipe({\n name: 'lxUnlinkify',\n standalone: true\n})\nexport class LxUnlinkifyPipe implements PipeTransform {\n transform(text?: string | null): string | undefined | null {\n if (text && typeof text === 'string') {\n let textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = text;\n const markdownLinkSyntaxMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n markdownLinkSyntaxMatches.forEach((markdownLinkSyntaxMatch) => {\n const [source, name] = markdownLinkSyntaxMatch;\n if (source && name) {\n textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName.replace(\n source,\n name\n );\n }\n });\n\n return textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName;\n } else {\n return text;\n }\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { trimEnd } from 'lodash/fp';\n\n@Pipe({\n name: 'lxBr',\n standalone: true\n})\nexport class BrPipe implements PipeTransform {\n transform(input: string | null | undefined, options: { isTrimEnd?: boolean } = {}) {\n if (input) {\n if (options.isTrimEnd) {\n input = trimEnd(input);\n }\n return input.replace(/[\\n\\r]/g, '<br/>');\n }\n return input;\n }\n}\n","import Color from 'color';\n\n/**\n * Compute the most eligible text color for a given background color (black or white), depending on the luminance of the\n * background color. In case the provided color is undefined or invalid, white (#FFFFFF) is returned.\n *\n * @param colorHex Color string in hexadecimal encoding.\n * @returns Equivalent contrast color in hexadecimal encoding.\n */\nexport function getContrastColor(colorHex?: string): string {\n try {\n const color = Color(colorHex || '#000');\n // Check http://codepen.io/WebSeed/pen/pvgqEq\n const a = 1 - (0.299 * color.red() + 0.587 * color.green() + 0.114 * color.blue()) / 255;\n const d = a < 0.4 ? 0 : 255;\n return Color({ r: d, g: d, b: d }).hex();\n } catch {\n return '#FFFFFF';\n }\n}\n\nexport function shorthandHexHandle(hex: string): string {\n const shorthandRegex = /^(#)([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const shorthand = hex.match(shorthandRegex);\n if (shorthand) {\n const convertedHex = shorthand[1]! + shorthand[2] + shorthand[2] + shorthand[3] + shorthand[3] + shorthand[4] + shorthand[4];\n return convertedHex;\n } else {\n return hex;\n }\n}\n\nexport function isValidHexColor(color: string) {\n return /^#[0-9A-F]{6}$/i.test(color);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getContrastColor, isValidHexColor, shorthandHexHandle } from '../functions/core-css.helpers';\n@Pipe({\n name: 'lxContrastColor',\n standalone: true\n})\nexport class ContrastColorPipe implements PipeTransform {\n transform(color: string): string {\n if (color) {\n return isValidHexColor(shorthandHexHandle(color)) ? getContrastColor(color) : '';\n }\n return '';\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxDate',\n standalone: true\n})\nexport class CustomDatePipe implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(value: Date | string | number | null | undefined, f: string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return value ? format(value, f, { locale }) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\n@Pipe({\n name: 'lxHighlightRange',\n standalone: true\n})\nexport class HighlightRangePipe implements PipeTransform {\n transform(text: string, offset: number = 0, length: number = 0): string {\n const highlightedMarkup = this.doTransform(text, offset, length);\n return DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] });\n }\n\n private doTransform(text: string | null, offset: number, length: number): string {\n if (!text || offset < 0 || length < 0 || offset >= text?.length || offset + length > text?.length) {\n return '';\n }\n const highlightedPart = text.slice(offset, offset + length);\n return text.slice(0, offset) + (highlightedPart.length !== 0 ? this.highlight(highlightedPart) : '') + text.slice(offset + length);\n }\n\n private highlight(text: string): string {\n return `<span class=\"termHighlight\">${text}</span>`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nexport interface HighlightTermSearchOptions {\n /**\n * Whether the search term should be exactly matched in the given text. When set to true, the following\n * characters and spaces between words are included in the search: - [ ] / { } ( ) * + ? . ^ $ |\n */\n exactMatch: boolean;\n}\n\n/**\n * These characters are treated as seperators by\n * elasticsearch and split the input into search tokens\n * which are used to find matches.\n */\nconst STANDARD_TOKENIZER_SEPERATORS = /[^a-zA-Z\\d\\s]/g;\n\n@Pipe({\n name: 'lxHighlightTerm',\n standalone: true\n})\nexport class HighlightTermPipe implements PipeTransform {\n /**\n * Transforms the input text with highlighted text according to the provided search term.\n * @param text The input text.\n * @param search The search term to highlight.\n * @param options The highlight term search options.\n * @returns The transformed text with highlighted search term.\n */\n transform(text?: string, search?: string | null, options: HighlightTermSearchOptions = { exactMatch: false }): string | undefined {\n if (text) {\n const highlightedMarkup = this.doTransform(text, search, options);\n return highlightedMarkup ? DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] }) : undefined;\n } else {\n return undefined;\n }\n }\n\n private doTransform(text: string, search: string | null | undefined, options: HighlightTermSearchOptions): string | undefined {\n if (search) {\n let pattern = options.exactMatch ? search.trim() : search.replace(STANDARD_TOKENIZER_SEPERATORS, ' ');\n\n // replace special chars for a backslash for RegExp\n pattern = pattern.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n\n pattern = options.exactMatch\n ? pattern\n : pattern\n .split(' ')\n .filter((t) => {\n return t.length > 0;\n })\n .join('|');\n\n const regex = new RegExp(pattern, 'gi');\n return text.replace(regex, (match) => `<span class=\"termHighlight\">${match}</span>`); // add highlighting to matched regex pattern\n } else {\n return text;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction isUuid(s: string) {\n const uuidRegEx = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n return uuidRegEx.test(s);\n}\n\n@Pipe({\n name: 'lxIsUuid',\n pure: true,\n standalone: true\n})\nexport class LxIsUuidPipe implements PipeTransform {\n transform(input: string | null | undefined): boolean {\n return input ? isUuid(input) : false;\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { distanceInWords } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxTimeAgo',\n pure: true,\n standalone: true\n})\nexport class LxTimeAgo implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(input: Date | string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return distanceInWords(new Date(), input, { locale, addSuffix: true });\n }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { isArray, isEqual } from 'lodash-es';\nimport { GLOBAL_TRANSLATION_OPTIONS, GlobalTranslationOptionsProvider } from '../core-ui.constants';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'lxTranslate',\n pure: false, // Because the underlying TranslatePipe isn't pure, too.\n standalone: true\n})\nexport class LxTranslatePipe implements PipeTransform {\n private translatePipe: TranslatePipe;\n\n // Cache\n private interpolateParamsObject?: _.Dictionary<string>;\n private lastInterpolateArgs?: Record<string, unknown>;\n private lastArgsExtended?: _.Dictionary<string>;\n\n constructor(\n private translate: TranslateService,\n private cdRef: ChangeDetectorRef,\n @Optional() @Inject(GLOBAL_TRANSLATION_OPTIONS) private globalTranslationOptionsProvider?: GlobalTranslationOptionsProvider\n ) {\n this.translatePipe = new TranslatePipe(this.translate, this.cdRef);\n }\n\n public transform(query: string | string[], interpolations?: Record<string, unknown>): any {\n query = isArray(query) ? query.join('.') : query;\n if (!this.interpolateParamsObject) {\n this.interpolateParamsObject = this.globalTranslationOptionsProvider?.createGlobalTranslationOptions();\n this.lastArgsExtended = this.interpolateParamsObject;\n }\n\n if (interpolations && !isEqual(this.lastInterpolateArgs, interpolations)) {\n this.lastInterpolateArgs = interpolations;\n this.lastArgsExtended = Object.assign({}, this.interpolateParamsObject, interpolations);\n }\n\n return this.translatePipe.transform(query, this.lastArgsExtended);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line no-restricted-imports\nimport { marked, Renderer } from 'marked';\n\ninterface MarkdownOptions {\n disableListRendering?: boolean;\n}\n\n@Pipe({\n name: 'lxMarkdown',\n standalone: true\n})\nexport class MarkdownPipe implements PipeTransform {\n readonly renderer: Renderer;\n\n constructor() {\n this.renderer = new Renderer();\n this.renderer.link = (href: string, title: string, text: string) =>\n `<a href=\"${href}\" title=\"${title || ''}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n }\n\n transform(markdownText: string | null | undefined, markdownOptions?: MarkdownOptions): string {\n const options: marked.MarkedOptions = { renderer: this.renderer };\n if (markdownOptions?.disableListRendering && options.renderer) {\n options.renderer.list = (body: string, _ordered: boolean, positionInList: number) => {\n return `${positionInList}. ${body}`;\n };\n options.renderer.listitem = (text: string) => {\n return text;\n };\n }\n return markdownText ? marked.parse(markdownText, options) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxNbsp',\n standalone: true\n})\nexport class NbspPipe implements PipeTransform {\n transform(text: string | null | undefined): string {\n return text ? text.replace(/&nbsp;/g, ' ') : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get, sortBy } from 'lodash/fp';\n\nexport type OrderOption = 'ASC' | 'DESC' | undefined;\nexport interface SortingOptions {\n key?: string;\n caseInsensitive?: boolean;\n order?: OrderOption;\n}\n\n@Pipe({\n name: 'lxSort',\n standalone: true\n})\nexport class SortPipe implements PipeTransform {\n transform<T>(items: Readonly<T[]> | null, options: SortingOptions = {}): any[] {\n if (!items) {\n return [];\n }\n\n if (options.order !== 'DESC') {\n return applySorting(options, items);\n } else {\n return applySorting(options, items).reverse();\n }\n }\n}\n\nfunction applySorting<T>(options: SortingOptions, items: Readonly<T[]>): T[] {\n if (options.caseInsensitive) {\n return options.key ? sortBy<T>(getValueForKey(options.key), items) : items.slice().sort(sortStringCaseInsensitive());\n }\n return options.key ? sortBy<T>((item) => get(options.key!, item), items) : items.slice().sort();\n}\n\nfunction sortStringCaseInsensitive<T>() {\n return (a: T, b: T) => {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b, undefined, { sensitivity: 'base' });\n }\n if (a === b) {\n return 0;\n }\n if (a < b) {\n return -1;\n }\n return 1;\n };\n}\n\nfunction getValueForKey<T>(key: string) {\n return (item: T) => {\n const value = (<any>item)[key];\n if (typeof value === 'string') {\n return value.toLowerCase();\n }\n return value;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nexport function getTranslationParts(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarkAndParams: string | [string, any]\n): string[] {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMark = isArray(cutMarkAndParams) ? cutMarkAndParams[0] : cutMarkAndParams;\n const params = isArray(cutMarkAndParams) ? cutMarkAndParams[1] : null;\n const translation = translateService.instant(translationKey, params);\n const parts = split(translation, `[[${cutMark}]]`);\n if (parts.length === 1) {\n console.error(`'[[${cutMark}]]' not found in '${translation}' for key '${translationKey}'.`);\n }\n return parts;\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * preceding the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'link' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['link', params] }}\n * @see TranslationAfterPipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationBefore',\n standalone: true\n})\nexport class TranslationBeforePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {(string|[string, any])} cutMarkAndParams either just the cut-mark to split by or\n * an array of cut-mark string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[0]!;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getTranslationParts } from './translation-before.pipe';\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * following the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @see TranslationBeforePipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationAfter',\n standalone: true\n})\nexport class TranslationAfterPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[1] || '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nfunction getTranslationBetween(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarksAndParams: [string, string] | [string, string, any]\n): string {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMarks = cutMarksAndParams.slice(0, 2);\n const params = cutMarksAndParams[2] || null;\n const translation = translateService.instant(translationKey, params);\n const parts1 = split(translation, `[[${cutMarks[0]}]]`);\n if (parts1.length === 1) {\n console.error(`'[[${cutMarks[0]}]]' not found in '${translation}' for key '${translationKey}'.`);\n return translation;\n } else {\n const parts2 = split(parts1[1], `[[${cutMarks[1]}]]`);\n if (parts2.length === 1) {\n console.error(`'[[${cutMarks[1]}]]' not found in '${translation}' after '[[${cutMarks[0]}]]' for key '${translationKey}'.`);\n return translation;\n }\n return parts2[0]!;\n }\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * between the two cut-mark strings '[[<cutMark>]]'.\n * NB: This pipe should be used very rarely, as it fixes the order of cut-marks, which may make\n * them untranslateable in some languages. It also makes the template harder to read.\n * Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationBetween:['link', 'userLink'] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'userLink' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBetween:['link', 'userLink', params] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['userLink', params] }}\n * @see TranslationBeforePipe\n * @see TranslationAferPipe\n */\n@Pipe({\n name: 'lxTranslationBetween',\n standalone: true\n})\nexport class TranslationBetweenPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {([string, string]|[string, string, any])} interpolationsAndParams either just the interpolation string to split by or\n * an array of interpolation string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarksAndParams: [string, string] | [string, string, any]): string {\n return getTranslationBetween(this.translateService, translationKey, cutMarksAndParams);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxUnescapeCurlyBraces',\n standalone: true\n})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeComponent } from './components/badge/badge.component';\nimport { BannerComponent } from './components/banner/banner.component';\nimport { ButtonGroupComponent } from './components/button-group/button-group.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { ColoredLabelComponent } from './components/colored-label/colored-label.component';\nimport { EllipsisComponent } from './components/ellipsis/ellipsis.component';\nimport { FileDownloadButtonComponent } from './components/file-download-button/file-download-button.component';\nimport { IconScaleComponent } from './components/icon-scale/icon-scale.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { TableHeaderComponent } from './components/table/table-header/table-header.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TinySpinnerComponent } from './components/tiny-spinner/tiny-spinner.component';\nimport { AfterViewInitDirective } from './directives/after-view-init.directive';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { LxLinkifyPipe } from './linkify/linkify.pipe';\nimport { LxUnlinkifyPipe } from './linkify/unlinkify.pipe';\nimport { BrPipe } from './pipes/br.pipe';\nimport { ContrastColorPipe } from './pipes/contrast-color.pipe';\nimport { CustomDatePipe } from './pipes/custom-date.pipe';\nimport { HighlightRangePipe } from './pipes/highlight-range.pipe';\nimport { HighlightTermPipe } from './pipes/highlight-term.pipe';\nimport { LxIsUuidPipe } from './pipes/lx-is-uuid.pipe';\nimport { LxTimeAgo } from './pipes/lx-time-ago.pipe';\nimport { LxTranslatePipe } from './pipes/lx-translate.pipe';\nimport { MarkdownPipe } from './pipes/markdown.pipe';\nimport { NbspPipe } from './pipes/nbsp.pipe';\nimport { SortPipe } from './pipes/sort.pipe';\nimport { TranslationAfterPipe } from './pipes/translation-after.pipe';\nimport { TranslationBeforePipe } from './pipes/translation-before.pipe';\nimport { TranslationBetweenPipe } from './pipes/translation-between.pipe';\nimport { UnescapeCurlyBracesPipe } from './pipes/unescape-curly-braces.pipe';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\n\n@NgModule({\n imports: [\n TranslateModule.forChild(),\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n FileDownloadButtonComponent\n ],\n exports: [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n FileDownloadButtonComponent,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n providers: [LxTimeAgo]\n})\nexport class LxCoreUiModule {}\n","/**\n * Makes a component input required.\n * On the first usage, an understandable error is thrown if the annotated property has not been set before.\n *\n * Usage:\n *\n * Component({\n * selector: 'my-dir',\n * template: '<div></div>',\n * });\n * export class MyComponent {\n * @Input() @Required a: number;\n * }\n *\n * @see https://stackoverflow.com/questions/35528395/make-directive-input-required\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function Required(target: object, propertyKey: string) {\n Object.defineProperty(target, propertyKey, {\n get() {\n throw new Error(`Attribute '${propertyKey}' is required`);\n },\n set(value) {\n Object.defineProperty(target, propertyKey, {\n value,\n writable: true,\n configurable: true\n });\n },\n configurable: true\n });\n}\n","export interface HighlightTextSettings {\n /**\n * Whether to match case sensitively\n */\n caseSensitive?: boolean;\n /**\n * Whether to match whole words only\n */\n wordsOnly?: boolean;\n /**\n * The element to wrap highlighted terms in\n */\n element?: string;\n /**\n * The class name to apply to highlighted terms\n */\n className?: string;\n}\n\nconst defaultElement = 'span';\nconst defaultClassName = 'highlight';\n\n/**\n * Highlights all occurrences of search terms in a given element.\n * This function will recursively traverse all child nodes of the given element,\n * and apply the highlight to text nodes only.\n *\n * Replaces the 'jquery-highlight' plugin: https://github.com/knownasilya/jquery-highlight/blob/master/jquery.highlight.js\n * @param elem The element to highlight\n * @param terms The search terms to highlight - string or array of strings\n * @param settings Optional settings, @see HighlightTextSettings\n */\n\nexport function highlightText(elem: HTMLElement, terms: string | string[], settings?: HighlightTextSettings): void {\n const node = elem as Node;\n if (!isSupportedNode(node)) return;\n\n if (typeof terms === 'string') {\n terms = [terms];\n }\n\n terms = terms.map((term) => term.trim().replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&'));\n terms = terms.filter((term) => term && term.length > 0);\n if (terms.length === 0) {\n return;\n }\n\n const flag = settings?.caseSensitive ? '' : 'i';\n let pattern = '(' + terms.join('|') + ')';\n if (settings?.wordsOnly) {\n pattern = '\\\\b' + pattern + '\\\\b';\n }\n\n const regexp = new RegExp(pattern, flag);\n processNode(node, regexp, settings);\n}\n\n/**\n * Recursively process a given node\n * @param node The node to process\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction processNode(node: Node, regexp: RegExp, settings?: HighlightTextSettings): void {\n const nodeName = settings?.element || defaultElement;\n const className = settings?.className || defaultClassName;\n\n if (node.nodeType === Node.TEXT_NODE) {\n applyHightlightToTextNode(node as Text, regexp, settings);\n } else if (\n node.nodeType === Node.ELEMENT_NODE &&\n node.childNodes && // only element nodes that have children\n !/(script|style)/i.test(node.nodeName) && // ignore script and style nodes\n !(node.nodeName === nodeName.toUpperCase() && (node as Element).className === className) // ignore already highlighted nodes\n ) {\n node.childNodes.forEach((childNode) => {\n processNode(childNode, regexp, settings);\n });\n }\n}\n\n/**\n * Apply highlight to a given text node\n * @param node The text node to apply highlight to\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction applyHightlightToTextNode(node: Text, regexp: RegExp, settings?: HighlightTextSettings) {\n const match = node.data.match(regexp);\n if (!match || typeof match.index === 'undefined') return;\n\n const wrapper = document.createElement(settings?.element || defaultElement);\n wrapper.classList.add(settings?.className || defaultClassName);\n\n const wordNode = node.splitText(match.index);\n const nextNode = wordNode.splitText(match[0].length);\n const wordClone = wordNode.cloneNode(true);\n wrapper.appendChild(wordClone);\n node.parentNode?.replaceChild(wrapper, wordNode);\n\n if (match.length > 1) {\n // recursively apply highlightText if there are multiple matches in the same text node\n processNode(nextNode, regexp, settings);\n }\n}\n\nfunction isSupportedNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef } from '@angular/core';\nimport { HighlightTermPipe } from '../../../core-ui/pipes/highlight-term.pipe';\n\n@Component({\n selector: 'lx-basic-dropdown-item',\n templateUrl: 'basic-dropdown-item.component.html',\n styleUrls: ['basic-dropdown-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, NgIf, HighlightTermPipe]\n})\nexport class BasicDropdownItemComponent {\n @Input() label!: string;\n @Input() description?: string;\n @Input() highlightTerm?: string;\n @Input() labelFontWeight: 'bold' | 'normal' = 'bold';\n @Input() descriptionFontStyle: 'italic' | 'normal' = 'normal';\n @Input() descriptionStyleOptions?: { maxLines?: number; shouldHighlightTerm?: boolean };\n @ContentChild('optionLabelSuffix') optionLabelSuffix!: TemplateRef<any>;\n\n @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","@if (optionLabelSuffix) {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" class=\"optionLabel\">\n <div [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n <ng-content [select]=\"optionLabelSuffix\"></ng-content>\n </div>\n} @else {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n}\n<div\n class=\"optionDescription\"\n [style.font-style]=\"descriptionFontStyle\"\n [ngClass]=\"{ maxTextLines: descriptionStyleOptions?.maxLines }\"\n [style.-webkit-line-clamp]=\"descriptionStyleOptions?.maxLines || 'inherit'\"\n [innerHtml]=\"description | lxHighlightTerm: (descriptionStyleOptions?.shouldHighlightTerm ? highlightTerm : undefined)\"\n></div>\n","/**\n * Schedule and wait for another ZoneJS microTask.\n * This should be preferred over setTimeout(), which\n * schedules a macroTask & thus triggers full tree change detection.\n */\nexport function executeOnNextTick(fn: Function) {\n Promise.resolve(null).then(() => fn());\n}\n\nexport function getCssVariable(cssVariableName: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(cssVariableName);\n}\n\nexport function scrollTop(container: HTMLElement, item: HTMLElement) {\n if (container && item) {\n const scrollDownNeeded = item.offsetTop + item.clientHeight > container.clientHeight;\n const scrollTopNeeded = item.offsetTop - item.clientHeight < container.scrollTop;\n if (scrollDownNeeded || scrollTopNeeded) {\n container.scrollTop = item.offsetTop - container.offsetTop;\n }\n } else {\n console.warn(\"Item or Container undefined, scrolling wasn't done.\");\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { scrollTop } from '../../shared/misc-helpers';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\n@Directive({\n selector: '[lxSelectableItem]',\n standalone: true\n})\nexport class SelectableItemDirective implements OnDestroy, DropdownItem {\n @Input() scrollInContainer!: HTMLElement;\n @Input() lxSelectableItem: any;\n\n @Output() select = new EventEmitter();\n\n get item() {\n return this.lxSelectableItem;\n }\n\n constructor(public readonly element: ElementRef<HTMLElement>) {}\n\n ngOnDestroy() {}\n\n scrollToItem() {\n if (this.scrollInContainer && this.element.nativeElement) {\n scrollTop(this.scrollInContainer, this.element.nativeElement);\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../directives/selectable-item.directive';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\nexport enum KeyboardSelectAction {\n PREV = 'PREV',\n NEXT = 'NEXT',\n FIRST = 'FIRST',\n LAST = 'LAST',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n EXECUTE = 'EXECUTE',\n UNSELECT = 'UNSELECT',\n CLOSE = 'CLOSE'\n}\n\n@Directive()\nexport class KeyboardSelectDirective implements OnDestroy, AfterViewInit {\n cdkOverlayOpenState = new ReplaySubject<boolean>(1);\n cdkOverlayOpen$ = this.cdkOverlayOpenState.asObservable().pipe(startWith(false), distinctUntilChanged());\n overlayPositioning: boolean = false;\n @Input() keyboardSelectAction = new Observable<KeyboardSelectAction | null>();\n @Output() selectedItemIndexChange = new EventEmitter<number>(true); // TODO: this is just index change from navigating (highlighting)\n\n @ViewChildren(SelectableItemDirective) _items!: QueryList<DropdownItem>;\n\n @ViewChild('keyboardSelectContainer', { static: true }) keyboardSelectContainer!: ElementRef<HTMLElement>;\n\n readonly destroyed$ = new Subject<void>();\n\n get selectedItem$(): Observable<any> {\n return this.selectedItemSubject$.asObservable();\n }\n\n // Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.\n private readonly selectedItemIndex$ = new BehaviorSubject<number>(-1);\n private readonly selectedItemSubject$ = new BehaviorSubject<DropdownItem | null>(null);\n\n public select(index: number) {\n this.selectedItemIndex$.next(index);\n }\n\n ngAfterViewInit(): void {\n const itemsChanges$ = this._items.changes.pipe(startWith(this._items));\n\n this.keyboardSelectAction\n .pipe(\n filter((action): action is KeyboardSelectAction => !!action),\n withLatestFrom(this.selectedItemIndex$, itemsChanges$),\n takeUntil(this.destroyed$)\n )\n .subscribe(([action, index, items]) => this.adaptSelectedIndexBasedOnKeyboardSelectAction(action, index, items));\n\n this.keyboardSelectAction\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.selectedItem$, (_, item) => item),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.select?.emit());\n\n this.selectedItemIndex$.pipe(takeUntil(this.destroyed$)).subscribe((index) => {\n this.selectedItemIndexChange.emit(index);\n });\n\n combineLatest([itemsChanges$, this.selectedItemIndex$])\n .pipe(\n delay(0),\n map(([items, index]: [QueryList<DropdownItem>, number]) => {\n if (index > -1) {\n return items.toArray()[index] ?? null;\n } else {\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectedItemSubject$);\n\n this.selectedItem$\n .pipe(\n filter((item) => !!item),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.scrollToItem());\n }\n\n public isItemSelected(item: HTMLElement, selectedItem: ElementRef<HTMLElement>) {\n return selectedItem && item === selectedItem.nativeElement;\n }\n\n private adaptSelectedIndexBasedOnKeyboardSelectAction(\n keyboardSelectAction: KeyboardSelectAction,\n currentIndex: number,\n items: QueryList<DropdownItem>\n ) {\n if (keyboardSelectAction === KeyboardSelectAction.PREV) {\n this.selectedItemIndex$.next(this.prev(currentIndex));\n } else if (keyboardSelectAction === KeyboardSelectAction.NEXT) {\n this.selectedItemIndex$.next(this.next(currentIndex, items));\n } else if (keyboardSelectAction === KeyboardSelectAction.LAST) {\n this.selectedItemIndex$.next(this.last(items));\n } else if (keyboardSelectAction === KeyboardSelectAction.FIRST) {\n this.selectedItemIndex$.next(0);\n } else if (keyboardSelectAction === KeyboardSelectAction.UNSELECT) {\n this.selectedItemIndex$.next(-1);\n }\n }\n\n private prev(index: number): number {\n if (index > -1) {\n return index - 1;\n } else {\n return index;\n }\n }\n\n private next(index: number, items: QueryList<DropdownItem>): number {\n if (items.length - 1 > index) {\n return index + 1;\n } else {\n return index;\n }\n }\n\n private last(items: QueryList<DropdownItem>): number {\n return items.length - 1;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-basic-dropdown',\n templateUrl: 'basic-dropdown.component.html',\n styleUrls: ['basic-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => BasicDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n InfiniteScrollModule,\n SelectableItemDirective,\n BadgeComponent,\n NgFor,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class BasicDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n public static isNewItem(items: any[], term: string, key?: string): boolean {\n if (!term) {\n return false;\n }\n const isEqualIgnoringCase = (item: any) => {\n const value = key ? item[key] : item;\n return isEqual(toLower(value), toLower(term));\n };\n return !some(isEqualIgnoringCase, items);\n }\n\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n @Input() initiallySelectedIndex = -1;\n @Input() labelKey?: string;\n @Input() itemKey?: string;\n @Input() placeholder?: string;\n @Input() loading: boolean = false;\n @Input() newOptionLabel!: string;\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() showCreateNewOption = false;\n\n @Input() disabledOptions: { [itemKey: string]: any } = {};\n @Input() override overlayPositioning = false;\n @Input() truncateOptions = false;\n @Input() noResultsText?: string;\n\n @Output() onItemSelected = new EventEmitter<any>();\n @Output() triggerRequestForMoreEntries = new EventEmitter<void>();\n @Output() newOptionLabelSelected = new EventEmitter<string>();\n @Output() createNewOptionSelected = new EventEmitter<void>();\n\n @ContentChild('optionTemplate') optionTemplateRef!: TemplateRef<any>;\n @ContentChild('createNewOptionTemplate') createNewOptionTemplateRef!: TemplateRef<any>;\n @ContentChild('descriptionTemplateRef') descriptionTemplateRef!: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n constructor() {\n super();\n }\n\n selectOption(option: any) {\n if (!option || !this.itemKey) {\n this.onItemSelected.emit(option);\n } else if (!this.disabledOptions[option[this.itemKey]]) {\n this.onItemSelected.emit(option);\n }\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n\n public get isNewItem() {\n return BasicDropdownComponent.isNewItem(this.options, this.newOptionLabel, this.labelKey);\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n\n public onScroll() {\n this.triggerRequestForMoreEntries.emit();\n }\n\n public onNewItemSelected() {\n if (!this.loading) {\n this.selectOption(null);\n this.newOptionLabelSelected.emit(this.newOptionLabel);\n }\n }\n\n public onCreateNewOptionSelected() {\n this.createNewOptionSelected.emit();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"dropdown\" *ngIf=\"!overlayPositioning\"></ng-container>\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n [ngClass]=\"{ truncateOptions: truncateOptions }\"\n (scrolled)=\"onScroll()\"\n >\n <li\n *ngIf=\"newOptionLabel && isNewItem\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onNewItemSelected()\"\n (select)=\"onNewItemSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable onTheFlyOption\"\n [attr.aria-label]=\"newOptionLabel\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <li\n *ngIf=\"showCreateNewOption\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOptionSelected()\"\n (select)=\"onCreateNewOptionSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable newEntryOption\"\n >\n <span class=\"newEntryContent\">\n <ng-container *ngIf=\"createNewOptionTemplateRef; else defaultNewOption\">\n <ng-container *ngTemplateOutlet=\"createNewOptionTemplateRef\"></ng-container>\n </ng-container>\n <ng-template #defaultNewOption>\n <span>\n {{ NAME + '.new' | translate }}\n </span>\n </ng-template>\n </span>\n </li>\n <li\n *ngIf=\"descriptionTemplateRef\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option description disabledItem\"\n >\n <span class=\"descriptionContent\">\n <ng-container *ngTemplateOutlet=\"descriptionTemplateRef\"></ng-container>\n </span>\n </li>\n <li\n *ngIf=\"options?.length === 0 && !newOptionLabel && !loading\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable noOptionsAvailable\"\n [attr.aria-label]=\"noResultsText ?? (NAME + '.noResults' | translate)\"\n >\n {{ noResultsText ?? (NAME + '.noResults' | translate) }}\n </li>\n <li\n *ngIf=\"placeholder\"\n tabindex=\"-1\"\n class=\"option keyboardSelectable clearSelection\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"selectOption(null)\"\n (select)=\"selectOption(null)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [attr.aria-label]=\"placeholder\"\n >\n {{ placeholder }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index; trackBy: trackByProp(itemKey)\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [class.initiallySelected]=\"index === initiallySelectedIndex\"\n [class.disabledItem]=\"itemKey ? !!disabledOptions[option[itemKey]] : false\"\n [attr.aria-label]=\"labelKey ? option[labelKey] : option\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else simpleStringDisplay\">\n <ng-container *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index }\"></ng-container>\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span>\n {{ labelKey ? option[labelKey] : option }}\n </span>\n </ng-template>\n </li>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n</ng-template>\n","// We can only use 'keyCode' because 'key' depends on the browser\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const ARROW_DOWN = 40;\nexport const ARROW_UP = 38;\nexport const ARROW_LEFT = 37;\nexport const ARROW_RIGHT = 39;\nexport const ENTER = 13;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const HOME = 36;\nexport const END = 35;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, ENTER, ESCAPE, HOME, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]',\n standalone: true\n})\nexport class KeyboardActionSourceDirective implements OnDestroy {\n public dontEmit = false;\n\n readonly destroyed$ = new Subject<void>();\n\n public keyboardActions$ = fromEvent<KeyboardEvent>(this.element.nativeElement, 'keydown').pipe(\n filter((_event) => !this.dontEmit),\n map((event) => {\n switch (event.keyCode) {\n case ARROW_UP:\n event.preventDefault();\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n event.preventDefault();\n return KeyboardSelectAction.NEXT;\n case ARROW_LEFT:\n event.preventDefault();\n return KeyboardSelectAction.LEFT;\n case ARROW_RIGHT:\n event.preventDefault();\n return KeyboardSelectAction.RIGHT;\n case HOME:\n event.preventDefault();\n return KeyboardSelectAction.FIRST;\n case END:\n event.preventDefault();\n return KeyboardSelectAction.LAST;\n case ENTER:\n event.preventDefault();\n return KeyboardSelectAction.EXECUTE;\n case ESCAPE:\n case TAB:\n return KeyboardSelectAction.CLOSE;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n );\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n blur() {\n this.element.nativeElement.blur();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n nativeElement(): HTMLElement {\n return this.element?.nativeElement;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-option-group',\n templateUrl: 'option-group.component.html',\n styleUrls: ['option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class OptionGroupComponent {\n /**\n * Is true when option children have a selected state.\n * In this case we want to align the padding of the group label with the lx-options'.\n */\n @Input() hasSelectedState: boolean = true;\n\n @Input() label!: string;\n\n @Output() select = new EventEmitter();\n\n selectOption(value: any) {\n this.select.emit(value);\n }\n}\n","<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content></ng-content>\n </ul>\n</li>\n","import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';\nimport { uniqueId } from 'lodash-es';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\n\n@Component({\n selector: 'lx-option',\n templateUrl: 'option.component.html',\n styleUrls: ['option.component.scss'],\n standalone: true,\n imports: [NgIf, NgSwitch, NgSwitchCase]\n})\nexport class OptionComponent {\n @Input() selected: boolean = false;\n @Input() isHighlighted: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: any;\n /**\n * Is true when option has a selection nature like sorting.\n * In this case we show a check icon on the left to indicate selection.\n *\n * Is false when option represents a one time action like printing.\n * Cannot have selectedState when Option has dropdown\n */\n @Input() hasSelectedState: boolean = true;\n @Input() selectIcon: 'check' | 'circle' = 'check';\n\n @Output() select = new EventEmitter();\n @Output() highlight = new EventEmitter<boolean>();\n @Output() selectedClick = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n @ViewChild('option') option?: ElementRef<HTMLElement>;\n\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\n readonly optionId: string;\n\n @HostListener('click', ['$event'])\n selectOption(event?: MouseEvent) {\n if (this.disabled || this.hasSubdropdown) {\n if (event) {\n event.stopImmediatePropagation();\n }\n } else {\n if (this.selected) {\n return this.selectedClick.emit();\n }\n if (this.group) {\n this.group.selectOption(this.value);\n }\n this.select.emit(this.value);\n }\n }\n\n constructor(\n @Optional() @Inject(forwardRef(() => OptionGroupComponent)) private group: OptionGroupComponent,\n public elementRef: ElementRef<HTMLElement>\n ) {\n this.optionId = uniqueId('option');\n }\n\n setSelected(value: boolean) {\n this.selected = value;\n }\n\n setHighlighted(value: boolean) {\n this.isHighlighted = value;\n this.highlight.emit(this.isHighlighted);\n if (value) {\n this.option?.nativeElement?.focus();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n event.preventDefault();\n this.keyDownAction.emit(event);\n }\n}\n","<li\n #option\n class=\"option\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"selected\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n (keydown)=\"handleKeyDown($event)\"\n>\n <ng-container *ngIf=\"hasSelectedState\">\n <ng-container [ngSwitch]=\"selectIcon\">\n <ng-container *ngSwitchCase=\"'check'\">\n <i *ngIf=\"selected\" class=\"far fa-check\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'circle'\">\n <i class=\"fal fa-circle\"></i>\n <i *ngIf=\"selected\" class=\"fas fa-circle\"></i>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-content></ng-content>\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { TooltipDirective } from '../../../core-ui/tooltip/tooltip.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-dropdown',\n templateUrl: 'cdk-options-dropdown.component.html',\n styleUrls: ['cdk-options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay]\n})\nexport class CdkOptionsDropdownComponent implements AfterViewInit, OnDestroy {\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.reloadOverlayPosition(this.open);\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n\n @ContentChildren(TooltipDirective, { descendants: true })\n tooltips!: QueryList<TooltipDirective>;\n\n get options() {\n return this._options.toArray();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n\n private readonly destroyed$ = new Subject<void>();\n\n isPositionComputed = true;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE))\n .subscribe(() => this.closeDropdown());\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closeDropdown() {\n this.tooltips.toArray().forEach((tooltip) => tooltip.hide());\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n const firstAvailableIndex = this.options.map((option) => !this.optionIsHighlightable(option)).indexOf(false, 0);\n this.highlightedOptionIndex$.next(firstAvailableIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]?.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n private reloadOverlayPosition(open: boolean) {\n if (open) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n this.overlay.overlayRef.updatePosition();\n\n this.isPositionComputed = true;\n this.changeDetection.markForCheck();\n }, 0);\n } else {\n this.changeDetection.markForCheck();\n }\n }\n}\n","<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { CdkOptionsDropdownComponent } from '../cdk-options-dropdown/cdk-options-dropdown.component';\nimport { OptionComponent } from '../option/option.component';\n\nexport interface Breadcrumb {\n label: string;\n ellipsed?: boolean;\n onClick?: (breadcrumb: Breadcrumb) => void;\n}\n\ninterface EllipsedBreadcrumb {\n breadcrumbs: Breadcrumb[];\n}\n\ntype ViewBreadcrumb = Breadcrumb | EllipsedBreadcrumb;\n\n@Component({\n selector: 'lx-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n standalone: true,\n imports: [NgFor, NgIf, CdkOptionsDropdownComponent, KeyboardActionSourceDirective, OptionComponent]\n})\nexport class BreadcrumbComponent implements OnChanges {\n @Input() breadcrumbs: Breadcrumb[] = [];\n\n viewBreadcrumbs: ViewBreadcrumb[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['breadcrumbs']) {\n this.viewBreadcrumbs = this.breadcrumbs.reduce((viewBreadcrumbs, breadcrumb) => {\n if (!breadcrumb.ellipsed) {\n // Append normal breadcrumbs to the end of view breadcrumb array\n viewBreadcrumbs.push(breadcrumb);\n } else {\n // Reduce consecutive ellipsed breadcrumbs into one entry and show dropdown of these\n const lastBreadcrumb = viewBreadcrumbs[viewBreadcrumbs.length - 1];\n if (lastBreadcrumb && this.isEllipsedBreadcrumb(lastBreadcrumb)) {\n lastBreadcrumb.breadcrumbs.push(breadcrumb);\n } else {\n viewBreadcrumbs.push({\n breadcrumbs: [breadcrumb]\n });\n }\n }\n return viewBreadcrumbs;\n }, [] as ViewBreadcrumb[]);\n }\n }\n\n isEllipsedBreadcrumb(breadcrumb: ViewBreadcrumb): breadcrumb is EllipsedBreadcrumb {\n return !!(breadcrumb as EllipsedBreadcrumb).breadcrumbs;\n }\n}\n","<div class=\"breadcrumbs\">\n <ng-container *ngFor=\"let breadcrumb of viewBreadcrumbs\">\n <ng-container *ngIf=\"isEllipsedBreadcrumb(breadcrumb)\">\n <lx-cdk-options-dropdown [align]=\"'right'\" class=\"dropdownContainer\">\n <a class=\"step\" href=\"\" lxKeyboardActionSource (click)=\"(false)\">...</a>\n <lx-option\n *ngFor=\"let ellipsedBreadcrumbs of breadcrumb.breadcrumbs\"\n [hasSelectedState]=\"false\"\n (select)=\"ellipsedBreadcrumbs.onClick?.(ellipsedBreadcrumbs)\"\n >\n {{ ellipsedBreadcrumbs.label }}\n </lx-option>\n </lx-cdk-options-dropdown>\n <span class=\"arrow\">&gt;</span>\n </ng-container>\n <ng-container *ngIf=\"!isEllipsedBreadcrumb(breadcrumb)\">\n <a class=\"step\" href=\"\" (click)=\"breadcrumb.onClick?.(breadcrumb); (false)\">{{ breadcrumb.label }}</a>\n <span class=\"arrow\">&gt;</span>\n </ng-container>\n </ng-container>\n</div>\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'top',\n offsetX: -4\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'top',\n offsetX: 4\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: -4\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: 4\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-sub-dropdown',\n templateUrl: 'cdk-options-sub-dropdown.component.html',\n styleUrls: ['cdk-options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [CdkConnectedOverlay, AutocloseDirective]\n})\nexport class CdkOptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n open = false;\n isPositionComputed = true;\n\n private mouseInside$ = new Subject<boolean>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n });\n\n merge(this.showByMouse(), this.showByKeyboard())\n .pipe(takeUntil(this.destroyed$), distinctUntilChanged())\n .subscribe((show) => {\n this.open = show;\n this.reloadOverlayPosition(this.open);\n });\n\n this.options.changes\n .pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.select), ...this.options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n });\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const hideOnLeaveMouse$ = mouseLeaveTrigger$.pipe(map(() => false));\n\n // react to trigger mouse leave events, and mouse enter events in the sub-dropdown. We'll use a 300ms\n // debounce, so that while navigating from the trigger to the sub-dropdown, all the intermediate events\n // are ignored.\n const showSubdropdown$ = merge(hideOnLeaveMouse$, this.mouseInside$).pipe(debounceTime(300));\n\n const showOnEnterSubdropdown$ = mouseEnterTrigger$.pipe(switchMap(() => showSubdropdown$));\n\n return merge(showOnEnterMouse$, showOnEnterSubdropdown$);\n }\n\n private reloadOverlayPosition(open: boolean) {\n // force a rendering so that the dropdown container's dimensions are computed.\n this.changeDetection.markForCheck();\n if (open && this.dropdownContainer) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n\n this.overlay.overlayRef.updatePosition();\n this.isPositionComputed = true;\n }, 0);\n }\n }\n\n closeDropdown() {\n this.open = false;\n this.mouseInside$.next(false);\n }\n}\n","<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger.elementRef\" [cdkConnectedOverlayOpen]=\"open\">\n <ul\n (mouseenter)=\"mouseenter()\"\n (mouseleave)=\"mouseleave()\"\n class=\"sub-dropdown\"\n [style.visibility]=\"isPositionComputed ? '' : 'hidden'\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n #dropdown\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { Clipboard } from '@angular/cdk/clipboard';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isString } from 'lodash-es';\n\n@Component({\n selector: 'lx-copy-button',\n templateUrl: 'copy-button.component.html',\n standalone: true,\n imports: [TranslateModule]\n})\nexport class CopyButtonComponent {\n /** JSON string or object to be saved/copied as JSON */\n @Input() data: string | Record<string, unknown> = '';\n /** Label to be used for data in toastr messages */\n @Input() dataDescription?: string;\n /** Determine copy button Bootstrap class & color or hide it altogether */\n @Input() btn: 'default' | 'primary' | 'info' | 'hide' = 'default';\n\n @Output() success = new EventEmitter<{ messageKey: string; translateParams: Record<string, string | undefined> }>();\n @Output() error = new EventEmitter<{ messageKey: string; translateParams: Record<string, string | undefined> }>();\n\n readonly NAME = 'CopyButtonComponent';\n\n constructor(private clipboard: Clipboard) {}\n\n async copy() {\n try {\n const json = this.getStringData();\n this.clipboard.copy(json);\n this.success.emit({\n messageKey: this.dataDescription ? `${this.NAME}.dataCopySuccess` : `${this.NAME}.copySuccess`,\n translateParams: { data: this.dataDescription }\n });\n } catch (err) {\n this.error.emit({\n messageKey: this.dataDescription ? `${this.NAME}.dataCopyFailure` : `${this.NAME}.copyFailure`,\n translateParams: { data: this.dataDescription }\n });\n }\n }\n\n private getStringData(): string {\n return isString(this.data) ? this.data : JSON.stringify(this.data, null, '\\t');\n }\n}\n","<button (click)=\"copy()\" class=\"btn btn-{{ btn }} btnCopyJson\">\n <i class=\"far fa-copy\"></i>\n <span>\n {{ 'buttons.copy' | translate }}\n </span>\n</button>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { getCssVariable } from '../../shared/misc-helpers';\nimport { Observe } from '../../shared/observe';\n\n@Directive({\n selector: '[lxMarkInvalid]',\n standalone: true\n})\nexport class MarkInvalidDirective implements OnInit, OnDestroy {\n @Input() lxMarkInvalid: boolean = false;\n @Observe('lxMarkInvalid') lxMarkInvalid$!: Observable<boolean>;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.lxMarkInvalid$.pipe(takeUntil(this.destroyed$)).subscribe((invalid) => {\n const border = invalid ? `1px solid ${getCssVariable('--lx-color-danger')}` : '';\n this.renderer.setStyle(this.element.nativeElement, 'border', border);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","// Currency symbol map extracted from: http://symbologic.info/currency.htm\n// Using custom symbology since Angular 2 currency pipe does not support all currency symbols:\n// https://github.com/angular/angular/issues/6724\nexport const CURRENCY_SYMBOL_MAP: { [key: string]: string } = {\n AFA: '&#x60b;',\n AWG: 'ƒ',\n AUD: 'AU$',\n ARS: 'ARS',\n AZN: '&#1084;&#1072;&#1085;',\n BSD: 'B$',\n BDT: '&#2547;',\n BBD: 'Bds$',\n BYR: 'Br',\n BOB: 'Bs.',\n BRL: 'R$',\n GBP: '£',\n BGN: '&#1083;&#1074;',\n KHR: '&#6107;',\n CAD: 'CA$',\n KYD: 'KY&#36;',\n CLP: '&#36;',\n CNY: 'CN¥',\n COP: 'COP',\n CRC: '&#8353;',\n HRK: 'kn',\n CPY: 'CPY',\n CZK: 'K&#269;',\n DKK: 'DKK',\n DOP: 'RD&#36;',\n XCD: 'EC$',\n EGP: 'E&pound;',\n ERN: 'Nfa',\n EEK: 'EEK',\n EUR: '&euro;',\n GEL: '&#4314;',\n GHC: 'GHC',\n GIP: 'GIP',\n GTQ: 'Q',\n HNL: 'L',\n HKD: 'HK$',\n HUF: 'Ft',\n ISK: 'ISK',\n INR: '₹',\n IDR: 'Rp',\n ILS: '₪',\n JMD: 'J$',\n JPY: '¥',\n KZT: '&#x20b8;',\n KES: 'KSh',\n KWD: '&#1583;.&#1603;',\n LVL: 'Ls',\n LBP: 'L&pound;',\n LTL: 'Lt',\n MOP: 'P',\n MKD: '&#1076;&#1077;&#1085;',\n MGA: 'Ar',\n MYR: 'RM',\n BAM: 'KM',\n MUR: '&#588;s',\n MXN: 'MX$',\n MZM: 'MT',\n NPR: 'N&#588;s',\n ANG: '&#131;',\n TWD: 'NT$',\n NZD: 'NZ$',\n NIO: 'C&#36;',\n NGN: '&#8358;',\n KPW: '&#8361;',\n NOK: 'NOK',\n OMR: '&#1585;.&#1593;.',\n PKR: '&#588;s',\n PYG: '&#8370;',\n PEN: 'S/.',\n PHP: '&#8369;',\n QAR: '&#1585;.&#1602;',\n RON: 'L',\n RUB: '&#1088;&#1091;&#1073;',\n SAR: '&#1585;.&#1587;',\n CSD: 'CSD',\n SCR: '&#588;s',\n SGD: 'S&#36;',\n SKK: 'SKK',\n SIT: 'SIT',\n ZAR: 'R',\n KRW: 'KRW',\n LKR: '&#588;s',\n SRD: '&#36;',\n SEK: 'SEK',\n CHF: 'Fr',\n TZS: 'TSh',\n THB: '&#3647;',\n TTD: 'TT&#36;',\n TRY: 'TL',\n AED: '&#1583;.&#1573;',\n USD: '$',\n UGX: 'USh',\n UAH: '&#8372;',\n UYU: '&#36;U',\n UZS: '&#1083;&#1074;',\n VEB: 'VEB',\n VND: '₫',\n AMK: 'AMK',\n ZWD: 'ZWD'\n};\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { CURRENCY_SYMBOL_MAP } from './currency-symbol-map.constant';\n\n@Component({\n selector: 'lx-currency-symbol',\n templateUrl: 'currency-symbol.component.html',\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class CurrencySymbolComponent implements OnInit {\n @Input() code!: string | null;\n @Observe('code') code$!: Observable<string>;\n currency$!: Observable<string>;\n\n ngOnInit() {\n this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));\n }\n}\n","<span [innerHtml]=\"currency$ | async\"></span>\n","import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { CurrencySymbolComponent } from './currency-symbol.component';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\nexport type DecimalSeparator = ',' | '.';\n\n@Component({\n selector: 'lx-currency-input',\n templateUrl: 'currency-input.component.html',\n styleUrls: ['currency-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CurrencyInputComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, CurrencySymbolComponent, MarkInvalidDirective, FormsModule, AsyncPipe, DecimalPipe]\n})\nexport class CurrencyInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor, OnInit {\n @Input() public code!: string | null;\n @Input() public decimalSeparator: DecimalSeparator = '.';\n @Input() public placeholder!: string;\n @Input() public data: number = 0;\n @Observe<number>('data') data$!: Observable<number>;\n\n @Input() public disabled: boolean = false;\n @Input() public mode: CurrencyInputMode = 'edit';\n @Input() public fieldDefinitionType!: 'DOUBLE' | 'INTEGER';\n @Input() public iconPosition: CurrencyIconPosition = 'first';\n @Input() public format: string = '1.2-2';\n @Input() markInvalid = false;\n\n @Output() public onFocusLost = new EventEmitter<boolean>();\n @Output() public onChange = new EventEmitter<number>();\n\n @ViewChild('currencyInput') private currencyInput!: ElementRef<HTMLInputElement>;\n showCurrencyInput: boolean = false;\n dataValue$ = new ReplaySubject<number>();\n\n private get allowedCharacters() {\n return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\\e\\\\${this.decimalSeparator}\\]`) : /[0-9\\e\\\\]/;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.data$.pipe(takeUntil(this.destroyed$)).subscribe(this.dataValue$);\n }\n\n ngAfterViewInit() {\n if (this.currencyInput) {\n fromEvent<KeyboardEvent>(this.currencyInput.nativeElement, 'keypress')\n .pipe(\n filter((keyboardEvent) => this.shouldRejectKey(keyboardEvent)),\n takeUntil(this.destroyed$)\n )\n .subscribe((keyboardEvent) => {\n keyboardEvent.preventDefault();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n valueChanged(value: string | number) {\n if (typeof value === 'string') {\n const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';\n value = this.parseInput(value, invalidSeparator) as number;\n }\n // fix copy & paste string values being interpreted wrongly\n this.dataValue$.next(value);\n this.onChange.emit(value);\n this.propagateChange(value);\n }\n\n onBlur() {\n this.showCurrencyInput = false;\n this.onFocusLost.emit(true);\n }\n\n focusCurrencyInput() {\n this.showCurrencyInput = true;\n this.changeDetector.detectChanges();\n this.currencyInput.nativeElement.focus();\n this.currencyInput.nativeElement.setSelectionRange(0, 0);\n }\n\n shouldRejectKey(event: KeyboardEvent) {\n if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {\n return this.containsSeparators(this.currencyInput.nativeElement.value);\n }\n return !this.allowedCharacters.test(event.key);\n }\n\n propagateChange(_newValue: number) {}\n\n writeValue(newValue: number) {\n this.dataValue$.next(newValue);\n }\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n private parseInput(value: string, char: string) {\n const countOccurences = value.split(char).length - 1;\n if (countOccurences > 1) {\n for (let i = 0; i < countOccurences; i++) {\n value = value.replace(char, '');\n }\n }\n const parsedValue = parseFloat(value.replace(',', '.').replace(/ /g, ''));\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n private containsSeparators(value: string) {\n return value.indexOf(',') > -1 || value.indexOf('.') > -1;\n }\n}\n","<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\"></lx-currency-symbol>\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\"></lx-currency-symbol>\n {{ (dataValue$ | async | number: format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\"></lx-currency-symbol>\n</span>\n","import { isNaN as _isNaN, toString as _toString, padCharsStart, toNumber } from 'lodash/fp';\n\n/**\n * Converts a date into a string with format YYYY-MM-dd for the\n * users current timezone.\n */\nexport function convertDateToLocaleDateString(date: Date, separator: string = '-'): string {\n const day = pad(date.getDate());\n const currentMonth = date.getMonth() + 1;\n const month = pad(currentMonth);\n\n return `${date.getFullYear()}${separator}${month}${separator}${day}`;\n}\n\n// Pad to 2 digits\nfunction pad(num: number): string {\n return padCharsStart('0', 2, _toString(num));\n}\n\n/**\n * Use this whenever you want to create a Date instance from a dateString like \"2017-12-06\".\n * Reason: When you call the Date Constructor like this `new Date(\"2017-12-06\")`\n * the date instance will be in the users current timezone (eg in EST GMT-0500 it will become \"2017-12-05 19:00:00\"),\n * but at some places we handle the date only as date without time (e.g. date.getDate()) and there\n * we would then get timezone issues, because `date.getDate()` returns day 5 instead of 6!\n *\n * So instead of doing `new Date(\"2017-12-06\")` you should use this function instead!\n */\nexport function createDateFromDateString(dateString: string | null): Date | null {\n if (!dateString || !isValidDateString(dateString)) {\n return null;\n }\n const parts = dateString.split('-').map(toNumber);\n return new Date(parts[0]!, parts[1]! - 1, parts[2]!);\n}\n\nexport function isValidDateString(dateString: string | null): boolean {\n return dateString !== null && /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(dateString) && !_isNaN(Date.parse(dateString));\n}\n","import { format as fm } from 'date-fns';\n\n/* format method is monkey-patched in date-input component, leaving this implementation as dummy */\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return fm(date, format, { locale });\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DateFormatter } from './date-formatter';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker-inner',\n template: `\n <!--&lt;!&ndash;ng-keydown=\"keydown($event)\"&ndash;&gt;-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\">\n <ng-content></ng-content>\n </div>\n `,\n standalone: true,\n imports: [NgIf]\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input()\n locale!: string;\n @Input()\n datepickerMode!: string;\n @Input()\n startingDay!: number;\n @Input()\n yearRange!: number;\n\n @Input()\n minDate!: Date;\n @Input()\n maxDate!: Date;\n @Input()\n minMode!: string;\n @Input()\n maxMode!: string;\n @Input()\n showWeeks!: boolean;\n @Input()\n formatDay!: string;\n @Input()\n formatMonth!: string;\n @Input()\n formatYear!: string;\n @Input()\n formatDayHeader!: string;\n @Input()\n formatDayTitle!: string;\n @Input()\n formatMonthTitle!: string;\n @Input()\n onlyCurrentMonth!: boolean;\n @Input()\n shortcutPropagation!: boolean;\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n @Input()\n monthColLimit!: number;\n @Input()\n yearColLimit!: number;\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n @Input()\n dayDisabled!: number[];\n @Input()\n initDate!: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId!: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate!: Date;\n protected selectedDate!: Date;\n protected activeDateId!: string;\n\n protected refreshViewHandlerDay!: Function;\n protected compareHandlerDay!: Function;\n protected refreshViewHandlerMonth!: Function;\n protected compareHandlerMonth!: Function;\n protected refreshViewHandlerYear!: Function;\n protected compareHandlerYear!: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes['activeDate']);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue && previousValue instanceof Date && previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1]!;\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if ((this.datepickerMode === this.maxMode && direction === 1) || (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction]!;\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return customClass.date.valueOf() === date.valueOf() && customClass.mode === this.datepickerMode;\n }, this)!;\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(date1Disabled: { date: Date; mode: string }, date2: Date): number | undefined {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n\n if (this.dayDisabled) {\n isDateDisabled = isDateDisabled || this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled || (this.minDate && this.compare(date, this.minDate)! < 0) || (this.maxDate && this.compare(date, this.maxDate)! > 0)\n );\n }\n}\n","export const isBs3 = () => true;\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'daypicker',\n template: `\n <table\n *ngIf=\"datePicker.datepickerMode === 'day'\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\"\n aria-activedescendant=\"activeDateId\"\n >\n <thead>\n <tr>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n ‹\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n &lt;\n </button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n ›\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n &gt;\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small aria-label=\"labelz.full\"\n ><b>{{ labelz.abbr }}</b></small\n >\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-sm {{ dtz.customClass }}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{\n 'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected,\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz),\n 'btn-default': !isBs4\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-muted': dtz.secondary || dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title!: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i]?.getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n\n // todo: key events implementation\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'monthpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.monthColLimit - 2 <= 0 ? 1 : datePicker.monthColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class MonthPickerComponent implements OnInit {\n title!: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode!: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'yearpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.yearColLimit - 2 <= 0 ? 1 : datePicker.yearColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n role=\"heading\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title!: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(' - ');\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return ((year - 1) / this.datePicker.yearRange) * this.datePicker.yearRange + 1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import { Component, EventEmitter, forwardRef, Input, Output, Provider, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker',\n template: `\n <datepicker-inner\n [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\"\n >\n <daypicker tabindex=\"0\"></daypicker>\n <monthpicker tabindex=\"0\"></monthpicker>\n <yearpicker tabindex=\"0\"></yearpicker>\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input()\n initDate!: Date;\n /** oldest selectable date */\n @Input()\n minDate!: Date;\n /** latest selectable date */\n @Input()\n maxDate!: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n minMode!: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n maxMode!: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input()\n formatDay!: string;\n /** format of month in year */\n @Input()\n formatMonth!: string;\n /** format of year in year range */\n @Input()\n formatYear!: string;\n /** format of day in week header */\n @Input()\n formatDayHeader!: string;\n /** format of title when selecting day */\n @Input()\n formatDayTitle!: string;\n /** format of title when selecting month */\n @Input()\n formatMonthTitle!: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n startingDay!: number;\n /** number of years displayed in year selection */\n @Input()\n yearRange!: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input()\n onlyCurrentMonth!: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input()\n shortcutPropagation!: boolean;\n /** number of months displayed in a single row of month picker */\n @Input()\n monthColLimit!: number;\n /** number of years displayed in a single row of year picker */\n @Input()\n yearColLimit!: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n dayDisabled!: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker!: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate!: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = (value ? new Date(value) : void 0)!;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { AutofocusDirective } from '../../../core-ui/directives/autofocus.directive';\nimport { CustomDatePipe } from '../../../core-ui/pipes/custom-date.pipe';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { DateFormatter } from '../date-picker-ui/date-formatter';\nimport { DatePickerComponent } from '../date-picker-ui/datepicker.component';\n\n// Input + ng2-bootstrap datepicker\nexport type DateInputRenderingStyle = 'INPUT' | 'LINK';\n\nconst DEFAULT_MIN_DATE = new Date('0000-01-01');\nconst DEFAULT_MAX_DATE = new Date('9999-12-31');\n\n@Component({\n selector: 'lx-date-input',\n templateUrl: 'date-input.component.html',\n styleUrls: ['date-input.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }\n ],\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n FormsModule,\n AutofocusDirective,\n CdkConnectedOverlay,\n DatePickerComponent,\n CustomDatePipe,\n MarkInvalidDirective\n ]\n})\nexport class DateInputComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() public date: Date | null = null; // main date input; this is also the one used for ngModel & formControl!\n @Output() dateChange = new EventEmitter<Date | null>(); // triggered whenever the date changes\n @Input() public dateString: string | null = null; // secondary, alternative input with date string\n @Output() dateStringChange = new EventEmitter<string | null>(); // triggered whenever the date changes\n // Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects\n @Input() public valueAccessor: 'date' | 'dateString' = 'date';\n\n @Input() public inputId: string = ''; // id to be set on input to correspond to outside label\n @Input() public renderingStyle: DateInputRenderingStyle = 'INPUT';\n @Input() public placeholder: string = 'yyyy-mm-dd';\n\n @Input() public cdk = true; // Deactivate to use old date picker\n\n //--- Inputs replicated from datepicker; (selectionDone) is not needed, as (dateChange) is equivalen\n @Input() public datepickerMode: string = 'day'; // sets datepicker mode, supports: day, month, year\n @Input() initDateString!: string; // default date to show if ng-model value is not specified\n @Observe('initDateString') initDateString$!: Observable<string>; // default date to show if ng-model value is not specified\n @Input() public minDate = DEFAULT_MIN_DATE; // oldest selectable date\n @Input() public maxDate = DEFAULT_MAX_DATE; // latest selectable date\n @Input() public minMode: string = 'day'; // set lower datepicker mode, supports: day, month, year\n @Input() public maxMode: string = 'year'; // sets upper datepicker mode, supports: day, month, year\n @Input() public showWeeks: boolean = true; // if false week numbers will be hidden\n @Input() public formatDay: string = 'DD'; // format of day in month\n @Input() public formatMonth: string = 'MMMM'; // format of month in year\n @Input() public formatYear: string = 'YYYY'; // format of year in year range\n @Input() public formatDayHeader: string = 'dd'; // format of day in week header\n @Input() public formatDayTitle: string = 'MMMM YYYY'; // format of title when selecting day\n @Input() public formatMonthTitle: string = 'YYYY'; // format of title when selecting month\n @Input() startingDay: number = 0; // starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public\n @Input() public yearRange: number = 20; // number of years displayed in year selection\n @Input() public onlyCurrentMonth: boolean = false; // if true only dates from the currently displayed month will be shown\n @Input() public shortcutPropagation: boolean = false; // if true shortcut`s event propagation will be disabled\n @Input() public customClass: { date: Date; mode: string; clazz: string }[] = []; // array of custom css classes to be applied to\n // targeted dates\n @Input() public disabled!: boolean;\n @Input() public dateDisabled: { date: Date; mode: string }[] = []; // array of disabled dates if mode is day, or years, etc.\n @Input() autoFocus = false;\n @Input() markInvalid = false;\n\n @Output() closeDateInput = new EventEmitter<void>();\n\n @ViewChild('input') input!: ElementRef<HTMLInputElement>;\n\n showDatepicker: boolean = false;\n dateFormat: string;\n initDate!: Date;\n\n readonly destroyed$ = new Subject<void>();\n\n //-- Implement ControlValueAccessor\n private formControl!: UntypedFormControl;\n hasError: boolean = false;\n onTouched!: () => void;\n\n propagateChange = (_date: Date | null) => {};\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DATE_FORMATS) private dateFormatsProvider: DateFormatsProvider,\n @Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function\n ) {\n this.dateFormat = this.dateFormatsProvider.getDateFormat();\n // Patch DatePicker until https://github.com/valor-software/ng2-bootstrap/issues/1385 is resolved\n const writeValue = DatePickerComponent.prototype.writeValue;\n DatePickerComponent.prototype.writeValue = function (value) {\n if (value !== null) {\n return writeValue.apply(this, arguments as any);\n }\n };\n\n // Somehow datepicker does use a separate moment instance than we do. That one runs on locale en by default.\n // So we patch the format function here to use our moment instance.\n // Maybe it will be fixed with: https://github.com/valor-software/ngx-bootstrap/issues/455\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n DateFormatter.prototype.format = function (date: Date, f: string) {\n return format(date, f, { locale });\n };\n }\n\n ngOnInit() {\n this.initDateString$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.initDate = createDateFromDateString(date) ?? startOfDay(new Date());\n });\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['date']) {\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : null;\n } else if (changes['dateString']) {\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n public ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focus() {\n this.input.nativeElement.focus();\n }\n\n public showPopup() {\n this.showDatepicker = true;\n this.cd.detectChanges();\n }\n\n public togglePopup() {\n this.showDatepicker = !this.showDatepicker;\n }\n\n public hidePopup() {\n if (this.showDatepicker) {\n this.showDatepicker = false;\n this.closeDateInput.emit();\n }\n }\n\n onDateStringChange(newDateString: string | null, emit: boolean = true) {\n if (isValidDateString(newDateString)) {\n const date = createDateFromDateString(newDateString);\n this.updateDate(date, emit);\n } else if (newDateString === null || newDateString === '') {\n this.updateDate(null, emit);\n } else {\n this.hasError = true;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n }\n\n onSelectionDone(newDate: Date) {\n this.updateDate(newDate);\n this.hidePopup();\n }\n\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private updateDate(date: Date | null, emit: boolean = true) {\n this.date = date;\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : '';\n if (emit) {\n this.dateChange.emit(date);\n this.dateStringChange.emit(this.dateString);\n }\n this.propagateChange(date);\n this.recheckErrors();\n }\n\n private recheckErrors() {\n this.hasError = false;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n //--- Implement ControlValueAccessor\n /** Write a new value to the element. */\n writeValue(newDate: Date | string) {\n if (this.valueAccessor === 'date') {\n this.date = newDate as Date;\n this.dateString = convertDateToLocaleDateString(this.date);\n } else {\n this.dateString = newDate as string;\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /** Set the function to be called when the control receives a change event. */\n registerOnChange(fn: any) {\n if (this.valueAccessor === 'date') {\n this.dateChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n } else if (this.valueAccessor === 'dateString') {\n this.dateStringChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n }\n }\n\n /** Set the function to be called when the control receives a touch event. */\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n validate(c: UntypedFormControl) {\n this.formControl = c;\n return this.hasError\n ? {\n dateFormatError: {\n given: this.dateString,\n format: 'yyyy-mm-dd'\n }\n }\n : null;\n }\n}\n","<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <!-- TODO: The dateInput and datePicker code ist duplicated for cdk and withoutCdK use to solve a placing problem of the\n ngx-bootstrap datepicker component. Writing it in a ng-container led to an unexpected anchoring behavior of the datePicker NOT directly\n below the dateInput element -->\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n [lxMarkInvalid]=\"markInvalid\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [lxMarkInvalid]=\"markInvalid\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n >\n </datepicker>\n </div>\n </div>\n </span>\n </div>\n</ng-template>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\n\n@NgModule({\n imports: [DatePickerComponent],\n exports: [DatePickerComponent]\n})\nexport class DatepickerUiModule {\n static forRoot(): ModuleWithProviders<DatepickerUiModule> {\n return { ngModule: DatepickerUiModule, providers: [DatepickerConfig] };\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { ButtonComponent } from '../../../../core-ui/components/button/button.component';\n\nexport interface DragAndDropListAction {\n id: string;\n label: string;\n icon: string;\n showOnlyOnHover?: boolean;\n}\n\nexport interface DragAndDropListActionEvent {\n actionId: string;\n item: string;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list-item',\n templateUrl: 'drag-and-drop-list-item.component.html',\n styleUrls: ['drag-and-drop-list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgFor, ButtonComponent]\n})\nexport class DragAndDropListItemComponent {\n readonly NAME = 'DragAndDropListItemComponent';\n\n @Input() item!: string;\n @Input() draggable: boolean = true;\n /**\n * An array of DragAndDropListActions\n * When this array is defined, the drag handle is shown at the start of an item and the action buttons are rendered in their provided order at the right end of an item.\n */\n @Input() actions?: DragAndDropListAction[];\n @Output() action = new EventEmitter<DragAndDropListActionEvent>();\n\n @HostBinding('class.draggingDisabled') get draggingDisabled() {\n return !this.draggable;\n }\n\n @HostBinding('class.customTemplate') get hasCustomTemplate() {\n return !!this.customTemplateRef;\n }\n\n @ContentChild('customTemplate') customTemplateRef: TemplateRef<any> | null = null;\n\n constructor(private element: ElementRef) {}\n\n trackByAction(_index: number, action: DragAndDropListAction) {\n return action.id;\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","<ng-container *ngIf=\"customTemplateRef; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"customTemplateRef\"></ng-container>\n</ng-container>\n<ng-template #defaultTemplate>\n <div class=\"drag-item-wrappper\">\n <i *ngIf=\"draggable\" class=\"far fa-bars drag-handle\"></i>\n <span [attr.title]=\"item\" class=\"itemWrapperForTruncation truncate\">{{ item }}</span>\n </div>\n <div class=\"left-button-container\" align=\"left\">\n <div class=\"action-buttons-wrapper\" *ngIf=\"!!actions\">\n <button\n lx-button\n *ngFor=\"let act of actions; trackBy: trackByAction\"\n (click)=\"action.emit({ actionId: act.id, item: item })\"\n [title]=\"act.label\"\n [square]=\"true\"\n mode=\"ghost\"\n size=\"small\"\n class=\"action-button\"\n [class.show-on-hover-button]=\"act.showOnlyOnHover ? true : false\"\n >\n <i class=\"far {{ act.icon }} actionIcon\"></i>\n </button>\n </div>\n </div>\n</ng-template>\n","/**\n * Used in the DragAndDropListComponent and KeyboardSortableListDirective\n */\nexport const DRAG_AND_DROP_LIST_TRANSLATION_NAME = 'DragAndDropListComponent';\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-input-rename */\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, Output } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { TooltipDirective } from '../../../../core-ui/tooltip/tooltip.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableItem]',\n standalone: true\n})\nexport class KeyboardSortableItemDirective implements OnChanges {\n @Input('lxKeyboardSortableItem') allItemsData!: string[] | null;\n @Input('lxKeyboardItemData') itemData!: string;\n @Input() isSortingByKeyboard!: boolean;\n @Input('lxKeyboardItemBeingSorted') itemBeingSorted?: string;\n\n @Output() readonly isSortingByKeyboardChange = new EventEmitter<boolean>();\n @Output('lxKeyboardItemBeingSortedChange') readonly itemBeingSortedChange = new EventEmitter<string | undefined>();\n @Output() sortItemsWithKeyboard = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n @Output() focusWithKeyboard!: Observable<KeyboardSortableItemDirective>;\n\n @HostBinding('attr.lxTooltip') tooltipDirective = new TooltipDirective(this.overlayPositionBuilder, this.element, this.overlay);\n @HostBinding('class.isBeingSortedByKeyboard') isBeingSorted: boolean = false;\n\n get isSortable() {\n return !this.draggableItem.disabled;\n }\n\n private preventBlur = false;\n private focusWithKeyboardReplaySubject$ = new ReplaySubject<KeyboardSortableItemDirective>(1);\n\n constructor(\n private draggableItem: CdkDrag,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private element: ElementRef<HTMLElement>,\n private overlay: Overlay\n ) {\n /**\n * Using a ReplaySubject here so that the KeyboardSortableListDirective will also know\n * about a focusWithKeyboard event when its copy of the KeyboardSortableItemDirective ContentChildren\n * was just initialised after the event fired.\n */\n this.focusWithKeyboard = this.focusWithKeyboardReplaySubject$.asObservable();\n }\n\n ngOnChanges(): void {\n this.isBeingSorted = this.itemData === this.itemBeingSorted;\n if (this.isBeingSorted) {\n // focus always the pressed element\n this.element.nativeElement.focus();\n }\n }\n\n @HostListener('keyup.tab')\n focusViaKeyboard(): void {\n this.focusWithKeyboardReplaySubject$.next(this);\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n enterSortingModeEnabledByKeyboard($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n if ($event.code === 'Enter' || $event.code === 'Space') {\n $event.preventDefault();\n this.tooltipDirective.hide();\n\n this.itemBeingSortedChange.emit(!this.isSortingByKeyboard ? this.itemData : undefined);\n this.isSortingByKeyboardChange.emit(!this.isSortingByKeyboard);\n }\n }\n }\n\n @HostListener('blur', ['$event'])\n @HostListener('keydown.esc', ['$event'])\n leaveSortingModeEnabledByKeyboard($event: KeyboardEvent | FocusEvent): void {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (!this.preventBlur) {\n this.isSortingByKeyboardChange.emit(false);\n this.itemBeingSortedChange.emit(undefined);\n }\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n @HostListener('keydown.arrowDown', ['$event'])\n sort($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (this.isSortingByKeyboard) {\n const allItemsData = this.allItemsData ?? [];\n\n $event.preventDefault();\n\n const previousIndex = allItemsData.findIndex((item) => item === this.itemData);\n const currentIndex = $event.code === 'ArrowUp' ? previousIndex - 1 : previousIndex + 1;\n\n if (currentIndex >= 0 && currentIndex <= allItemsData.length - 1) {\n this.sortItemsWithKeyboard.emit({ previousIndex, currentIndex });\n\n // When triggering a keyboard event, the DOM would \"removeChildren\" on the HTML element\n // which specially for \"ArrowUp\" events would trigger a \"blur\" event since the element\n // has been moved aboved the DOM tree and loses the focus state.\n this.preventBlur = true;\n\n setTimeout(() => (this.preventBlur = false), 0);\n }\n }\n }\n }\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { merge, Observable } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { Observe } from '../../../../shared/observe';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from '../constants';\nimport { KeyboardSortableItemDirective } from '../keyboard-sortable-item/keyboard-sortable-item.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableList]',\n standalone: true\n})\nexport class KeyboardSortableListDirective implements AfterViewInit {\n @Observe('keyboardSortableItems') private keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n @Input() keyboardSortableItems!: KeyboardSortableItemDirective[] | null;\n\n constructor(private translateService: TranslateService) {}\n\n ngAfterViewInit(): void {\n this.setupControlsTooltipToBeShownOnFirstFocusedItem();\n }\n\n private setupControlsTooltipToBeShownOnFirstFocusedItem() {\n const firstFocusEventOnADraggableItem$ = this.keyboardSortableItems$.pipe(\n filter((items) => items && items.length > 0),\n switchMap((items) => merge(...items.filter((item) => item.isSortable).map((item) => item.focusWithKeyboard))),\n take(1)\n );\n\n firstFocusEventOnADraggableItem$.subscribe((item) => {\n item.tooltipDirective.content = this.translateService.instant(`${DRAG_AND_DROP_LIST_TRANSLATION_NAME}.helpTooltip`);\n item.tooltipDirective.show();\n });\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from './constants';\nimport { DragAndDropListActionEvent, DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\nexport interface DragAndDropListMoveEvent {\n item: string;\n index: number;\n}\n\nexport interface DragAndDropListMoveIndexEvent {\n index: number;\n previous: number;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list',\n templateUrl: 'drag-and-drop-list.component.html',\n styleUrls: ['drag-and-drop-list.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n CdkDropList,\n KeyboardSortableListDirective,\n NgFor,\n CdkDrag,\n KeyboardSortableItemDirective,\n DragAndDropListItemComponent,\n NgTemplateOutlet,\n AsyncPipe,\n TranslateModule,\n DragDropModule\n ]\n})\nexport class DragAndDropListComponent implements AfterContentInit, AfterViewInit {\n readonly NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;\n\n items$!: Observable<DragAndDropListItemComponent[]>;\n keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n\n /**\n * A label for describing this list.\n */\n @Input() label?: string | undefined;\n /**\n * Override the global label font weight of 700\n */\n @Input() labelFontWeight?: number = 700;\n\n @Input() @HostBinding('attr.color') color?: 'light' | 'dark' = 'light';\n @Input() @HostBinding('attr.fontSize') fontSize?: 'normal' | 'big' = 'normal';\n\n /**\n * Use the moveToIndex Output in favor of moveItem,\n * when moving is restricted to one item through this.draggableItem.\n */\n @Output() moveToIndex = new EventEmitter<DragAndDropListMoveIndexEvent>();\n @Output() moveItem = new EventEmitter<DragAndDropListMoveEvent>();\n\n @ContentChildren(DragAndDropListItemComponent) private _items!: QueryList<DragAndDropListItemComponent>;\n\n @ViewChildren(KeyboardSortableItemDirective)\n private _keyboardSortableItems!: QueryList<KeyboardSortableItemDirective>;\n\n /**\n * TODO: extract state about keyboard sorting into KeyboardSortableListDirective\n */\n isSortingByKeyboard: boolean = false;\n keyboardItemBeingSorted: string | undefined = undefined;\n\n allItemsData: string[] = [];\n allItemsData$!: Observable<string[]>;\n\n ngAfterContentInit() {\n this.items$ = this._items.changes.pipe(\n startWith(this._items),\n map((items: QueryList<DragAndDropListItemComponent>) => items.toArray())\n );\n this.allItemsData$ = this.items$.pipe(map((itemComponents) => itemComponents.map((itemComponent) => itemComponent.item)));\n }\n\n ngAfterViewInit(): void {\n this.keyboardSortableItems$ = this._keyboardSortableItems.changes.pipe(\n startWith(this._keyboardSortableItems),\n map((items: QueryList<KeyboardSortableItemDirective>) => items.toArray())\n );\n }\n\n emitContentChildAction(action: DragAndDropListActionEvent) {\n this._items.find((itemComponent) => itemComponent.item === action.item)?.action.emit(action);\n }\n\n /**\n * From the Angular cdk drag and drop documentation:\n * Note that this will not update your data model;\n * you can listen to the cdkDropListDropped event to update the data model\n * once the user finishes dragging.\n * https://material.angular.io/cdk/drag-drop/overview\n *\n * You're supposed to update the data in the parent and pass the new items as input.\n */\n drop(event: CdkDragDrop<DragAndDropListItemComponent[] | null, string[]>) {\n this.sortItems(event.container.data!, event.item.data, event.previousIndex, event.currentIndex);\n }\n\n dropToIndexAfterArrowKey(item: any, previousIndex: number, currentIndex: number) {\n if (this.isSortingByKeyboard) {\n this.sortItems(this._items, item, previousIndex, currentIndex);\n }\n }\n\n private sortItems(items: any, item: string, previousIndex: number, currentIndex: number): void {\n moveItemInArray(items, previousIndex, currentIndex);\n this.moveToIndex.emit({ index: currentIndex, previous: previousIndex });\n this.moveItem.emit({ item, index: currentIndex });\n }\n\n trackByItem(_index: number, item: DragAndDropListItemComponent) {\n return item.item;\n }\n}\n","<label *ngIf=\"label\" [style.font-weight]=\"labelFontWeight\">{{ label }}</label>\n<p class=\"sr-only\">{{ NAME + '.helpTooltip' | translate }}</p>\n<ul\n cdkDropList\n class=\"list\"\n role=\"listbox\"\n [attr.aria-label]=\"label\"\n lxKeyboardSortableList\n [keyboardSortableItems]=\"keyboardSortableItems$ | async\"\n [cdkDropListData]=\"items$ | async\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <li\n *ngFor=\"let itemComponent of items$ | async; trackBy: trackByItem\"\n #listItemParent\n class=\"item\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n [cdkDragData]=\"itemComponent.item\"\n [cdkDragDisabled]=\"!itemComponent.draggable\"\n [class.dark]=\"color === 'dark'\"\n [class.big]=\"fontSize === 'big'\"\n [tabIndex]=\"itemComponent.draggable === false ? -1 : 0\"\n [lxKeyboardSortableItem]=\"allItemsData$ | async\"\n [lxKeyboardItemData]=\"itemComponent.item\"\n [(isSortingByKeyboard)]=\"isSortingByKeyboard\"\n [(lxKeyboardItemBeingSorted)]=\"keyboardItemBeingSorted\"\n (sortItemsWithKeyboard)=\"dropToIndexAfterArrowKey(itemComponent.item, $event.previousIndex, $event.currentIndex)\"\n >\n <lx-drag-and-drop-list-item\n class=\"dragAndDropItem\"\n [item]=\"itemComponent.item\"\n [draggable]=\"itemComponent.draggable\"\n [actions]=\"itemComponent.actions\"\n (action)=\"emitContentChildAction($event)\"\n >\n <ng-template *ngIf=\"itemComponent.customTemplateRef\" #customTemplate>\n <ng-container *ngTemplateOutlet=\"itemComponent.customTemplateRef\"></ng-container>\n </ng-template>\n </lx-drag-and-drop-list-item>\n </li>\n</ul>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LxCoreUiModule } from '../../../core-ui/core-ui.module';\nimport { DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { DragAndDropListComponent } from './drag-and-drop-list.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n LxCoreUiModule,\n TranslateModule.forChild(),\n KeyboardSortableItemDirective,\n KeyboardSortableListDirective,\n DragAndDropListComponent,\n DragAndDropListItemComponent\n ],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'lx-error-message',\n template: `<div class=\"error\" *ngIf=\"_key\">{{ _key | translate }}</div>`,\n styleUrls: ['./error-message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, TranslateModule]\n})\nexport class ErrorMessageComponent {\n _key?: string;\n\n @Input() set key(value: string | undefined) {\n if (value !== this._key) {\n this._key = value;\n this.cd.detectChanges();\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n}\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-expanded-dropdown',\n templateUrl: 'expanded-dropdown.component.html',\n styleUrls: ['expanded-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgFor, SelectableItemDirective, NgTemplateOutlet, AsyncPipe, TranslateModule]\n})\nexport class ExpandedDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n\n @Output() onChooseItem = new EventEmitter<string>();\n}\n","<ul class=\"options lxThinScrollbar\" #keyboardSelectContainer>\n <li *ngIf=\"options?.length === 0\" tabindex=\"-1\" id=\"noOption\" class=\"option noOptionsAvailable\">\n {{ NAME + '.noResults' | translate }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"onChooseItem.emit(option.id)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container>\n <ng-container *ngTemplateOutlet=\"simpleStringDisplay; context: { $implicit: option, index: index }\"></ng-container>\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span [title]=\"option.name\">\n {{ option.name }}\n </span>\n </ng-template>\n <div class=\"iconContainer\">\n <svg\n width=\"32px\"\n height=\"32px\"\n viewBox=\"0 0 32 32\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <title>Button/Text/Primary/Medium</title>\n <g id=\"choose-workspace-D\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"choose-a-workspace-D\" transform=\"translate(-911.000000, -429.000000)\">\n <g id=\"Group-3\" transform=\"translate(471.000000, 249.000000)\">\n <g id=\"Button/Text/Primary/Medium\" transform=\"translate(440.000000, 180.000000)\">\n <g id=\"UI/Shape/Rectangle-rounded-2px\" fill=\"#1666EE\">\n <circle id=\"🎨-Style\" cx=\"16\" cy=\"16\" r=\"16\"></circle>\n </g>\n <g id=\"Icons/basic/refresh\" transform=\"translate(7.000000, 11.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <g id=\"arrow-right\" transform=\"translate(3.772240, 0.000000)\">\n <path\n d=\"M5.41769476,0.0873198725 L4.92588162,0.579133017 C4.80947996,0.695534673 4.80947996,0.88427129 4.92588162,1.00069779 L8.77935771,4.85414904 L0.298083627,4.85414904 C0.133466944,4.85414904 0,4.98761598 0,5.15223266 L0,5.84776113 C0,6.01237781 0.133466944,6.14584475 0.298083627,6.14584475 L8.77935771,6.14584475 L4.92588162,9.99932084 C4.80947996,10.1157225 4.80947996,10.3044591 4.92588162,10.4208856 L5.41769476,10.9126988 C5.53409642,11.0291004 5.72283304,11.0291004 5.83925953,10.9126988 L11.0411666,5.7107917 C11.1575682,5.59439004 11.1575682,5.40565343 11.0411666,5.28922693 L5.83923469,0.0873198725 C5.72283304,-0.0291066242 5.53409642,-0.0291066242 5.41769476,0.0873198725 Z\"\n id=\"Path\"\n ></path>\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </div>\n </li>\n</ul>\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'lx-form-error',\n templateUrl: 'form-error.component.html',\n styleUrls: ['form-error.component.scss'],\n standalone: true,\n imports: [NgFor, TranslateModule]\n})\nexport class FormErrorComponent implements OnInit, OnChanges, OnDestroy {\n @Input() public namespace!: string;\n @Input() public form!: UntypedFormGroup;\n @Input() public controlName!: string;\n\n translationKeys: string[] = [];\n private formSubscription!: Subscription;\n\n ngOnInit() {\n this.formSubscription = this.form.valueChanges.subscribe(() => {\n this.translationKeys = this.getTranslationKeys();\n });\n }\n\n ngOnChanges(_changes: SimpleChanges) {\n this.translationKeys = this.getTranslationKeys();\n }\n\n ngOnDestroy() {\n this.formSubscription.unsubscribe();\n }\n\n getTranslationKeys() {\n const formControl = this.form.get(this.controlName);\n if (formControl && formControl.errors) {\n return Object.keys(formControl.errors).map((errorKey) => `${this.namespace}.errors.${this.controlName}.${errorKey}`);\n }\n return [];\n }\n}\n","<div class=\"error\" *ngFor=\"let key of translationKeys\">\n {{ key | translate }}\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * fas is solid,\n * far is regular,\n * fal is light\n */\ntype FontAwesomeIconStyle = 'fas' | 'far' | 'fal';\n\n/**\n * Displays Font Awesome icons.\n */\n@Component({\n selector: 'lx-icon',\n templateUrl: 'icon.component.html',\n styleUrls: ['icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IconComponent implements OnChanges {\n readonly NAME = 'IconComponent';\n\n /**\n * The name of the icon is the part that comes after the \"fa-\" in the CSS class.\n */\n @Input() name!: string;\n @Input() color: string = '#000';\n @Input() fontAwsomeStyle: 'solid' | 'regular' | 'light' = 'regular';\n @Input() @HostBinding('style.height') size: string = '14px';\n @Input() title?: string;\n\n private iconStyleMap = <const>{\n solid: 'fas',\n regular: 'far',\n light: 'fal'\n };\n\n iconStyle: FontAwesomeIconStyle = 'far';\n\n ngOnChanges(changes: SimpleChanges) {\n if ('fontAwsomeStyle' in changes) {\n this.iconStyle = this.iconStyleMap[this.fontAwsomeStyle];\n }\n }\n}\n","<i [attr.title]=\"title\" [class]=\"iconStyle + ' fa-' + name\" [style.color]=\"color\" [style.fontSize]=\"size\"></i>\n","import { Component, HostBinding, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[lx-input]',\n styleUrls: ['input.component.scss'],\n template: ``,\n standalone: true\n})\nexport class InputComponent implements OnInit, OnDestroy {\n @Input() @HostBinding('class.error') error = false;\n @Input() @HostBinding('class.disabled') disabled = false;\n\n private destroyed$ = new Subject<void>();\n\n constructor(@Optional() public ngControl?: NgControl) {}\n\n ngOnInit() {\n if (this.ngControl) {\n this.ngControl.statusChanges?.pipe(startWith(null), takeUntil(this.destroyed$)).subscribe(() => this.updateStatus());\n }\n }\n\n private updateStatus() {\n this.error = !!this.ngControl?.errors;\n this.disabled = !!this.ngControl?.disabled;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with single or multi-selects.\n * It allows to mark a ng-template as the dropdown for those components.\n * The ng-template will be instantiated and \"projected\" whenever the dropdown is\n * opened. This has the advantage over content projection via ng-content, as it will\n * defer the initialization and rendering of the dropdown contents until the dropdown\n * is actually opened.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectDropdown>\n * <lx-basic-dropdown></lx-basic-dropdown>\n * </ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectDropdown]',\n standalone: true\n})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction, KeyboardSelectDirective } from '../components/keyboard-select.directive';\n\nexport interface EventSet {\n event: KeyboardEvent;\n inputCursorPosition: number | undefined;\n virtualCursorPosition: number;\n selectionLength?: number;\n}\n\n@Directive()\nexport abstract class BaseSelectDirective implements AfterViewInit, OnChanges, OnDestroy {\n @Input() placeholder?: string;\n @Input() disabled: boolean = false;\n @Input() focusOnInit: boolean = false;\n @Input() dropdownMaxHeight: number = 250;\n @Input() allowQuery: boolean = true;\n\n @Output() query = new EventEmitter<string>();\n @Output() close = new EventEmitter<void>();\n @Output() open = new EventEmitter<boolean>();\n\n @ViewChild('optionsContainer', { static: true }) optionsContainer!: ElementRef<HTMLElement>;\n @ContentChild(KeyboardSelectDirective, { static: false, descendants: true }) dropdownBase!: KeyboardSelectDirective;\n\n abstract selection?: any;\n abstract selectionChange: EventEmitter<any>;\n\n public readonly query$ = this.query.asObservable();\n public readonly dropdownDirection$ = new BehaviorSubject<'TOP' | 'BOTTOM'>('BOTTOM');\n public dropdownOpen = false;\n\n public activeElement!: Element;\n // an axis, where the negative range represents the selected item in the selection\n public readonly selectionKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n public readonly optionsKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n public virtualCursorPosition: number = 0;\n\n public inputWasFocused: boolean = false;\n\n public readonly queryControl = new UntypedFormControl('');\n\n public isInputFocused: boolean = false;\n\n readonly destroyed$ = new Subject<void>();\n\n abstract resetInput(): void;\n\n abstract focus(): void;\n\n ngAfterViewInit() {\n this.queryControl.valueChanges\n .pipe(\n filter(() => this.allowQuery),\n takeUntil(this.destroyed$)\n )\n .subscribe((value) => {\n if (value && value.length > 0) {\n this.open.next(true);\n }\n this.query.emit(value);\n this.selectFirstOption();\n });\n\n this.open\n .pipe(\n filter(() => !this.disabled),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((isOpen) => {\n this.dropdownOpen = isOpen;\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\n }\n\n if (this.dropdownBase) {\n this.notifyDropdownBase(isOpen);\n } else {\n // dropdown may be hidden with *ngIf, so we might need to wait for it to be rendered\n setTimeout(() => this.notifyDropdownBase(isOpen));\n }\n });\n\n if (this.focusOnInit) {\n setTimeout(() => this.focus());\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('disabled' in changes) {\n if (this.disabled) {\n this.queryControl.disable();\n } else {\n this.queryControl.enable();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /**\n * @param toggle is true when the caret to the right in a select component was clicked\n */\n public handleClick(toggle: boolean) {\n if (toggle || !this.dropdownOpen || !this.allowQuery) {\n this.open.next(!this.dropdownOpen);\n }\n this.focus();\n }\n\n public handleBackdropClick(event: MouseEvent) {\n event.stopPropagation();\n this.closeInput();\n }\n\n public closeInput() {\n this.open.next(false);\n this.resetInput();\n this.query.emit('');\n }\n\n public openInput() {\n this.open.next(true);\n }\n\n protected setOpenDirection() {\n const dropdownRect = this.optionsContainer.nativeElement.getBoundingClientRect();\n const spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - this.dropdownMaxHeight;\n const spaceAtTheTop = dropdownRect.top - this.dropdownMaxHeight;\n const isTop = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom;\n\n this.dropdownDirection$.next(isTop ? 'TOP' : 'BOTTOM');\n }\n\n protected resetSelectState() {\n this.virtualCursorPosition = 0;\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.resetInput();\n this.query.emit('');\n }\n\n protected mapToEventSet(\n event: KeyboardEvent,\n input: HTMLInputElement,\n virtualCursorPosition: number,\n selectionLength?: number\n ): EventSet {\n return {\n event,\n inputCursorPosition: this.doGetCaretPosition(input),\n virtualCursorPosition,\n selectionLength\n };\n }\n\n /*\n * Returns the caret (cursor) position of the specified text field.\n * Return value range is 0-oField.value.length.\n * https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field\n */\n protected doGetCaretPosition(oField: any) {\n let iCaretPos = 0;\n if (oField.selectionStart || parseInt(oField.selectionStart, 10) === 0) {\n // Check when range selection using null we prevent deleting on\n iCaretPos = oField.selectionStart === oField.selectionEnd ? oField.selectionStart : null;\n }\n return iCaretPos;\n }\n\n protected selectFirstOption() {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.FIRST);\n }\n\n /*\n * Sets the dropdown open/closed state, used for overlay dropdowns\n * */\n private notifyDropdownBase(isOpen: boolean) {\n if (this.dropdownBase && this.dropdownBase.overlayPositioning && this.dropdownBase.cdkOverlayOpenState) {\n this.dropdownBase.cdkOverlayOpenState.next(isOpen);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'lx-responsive-input',\n templateUrl: 'responsive-input.component.html',\n styleUrls: ['responsive-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ResponsiveInputComponent)\n }\n ],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class ResponsiveInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Output() focus = new EventEmitter<void>();\n @Output() focusViaTab = new EventEmitter<void>();\n @Output() blur = new EventEmitter<void>();\n @ViewChild('responsiveInput', { static: true }) responsiveInput!: ElementRef<HTMLInputElement>;\n @ViewChild('inputWidth', { static: true }) inputWidth!: ElementRef<HTMLSpanElement>;\n\n readonly inputWidth$ = new Subject<string>();\n readonly inputControl = new UntypedFormControl();\n readonly destroyed$ = new Subject<void>();\n\n value: any;\n\n ngAfterViewInit() {\n // calculate size of input dynamic\n this.inputControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((value) => {\n this.propagateChange(value);\n try {\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, value) + 1 + 'px';\n this.inputWidth$.next(width);\n } catch (_e) {\n /* empty catch */\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focusInput() {\n this.responsiveInput.nativeElement.focus();\n }\n\n resetInput() {\n if (this.inputControl.value?.length > 0) {\n this.inputControl.reset('', { emitEvent: false });\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, ' ') + 1 + 'px';\n this.inputWidth$.next(width);\n }\n }\n\n /**\n * Based on https://github.com/Semantic-Org/Semantic-UI-React/\n * blob/25e382e40bb3102bb39944612643c0289cd1956b/src/modules/Dropdown/Dropdown.js#L1035\n */\n private computeSearchInputWidth(sizerRef: HTMLSpanElement, searchQuery: string): number {\n if (sizerRef && searchQuery) {\n sizerRef.style.display = 'inline-block';\n sizerRef.textContent = searchQuery;\n const searchWidth = Math.ceil(sizerRef.getBoundingClientRect().width);\n sizerRef.style.removeProperty('display');\n return searchWidth;\n }\n return 0;\n }\n\n //#region Angular Forms\n propagateChange(_value: any) {}\n\n writeValue(newValue: any) {\n if (newValue) {\n this.value = newValue;\n this.propagateChange(this.value);\n }\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n //#endregion\n}\n","<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n (keyup.tab)=\"focusViaTab.emit()\"\n (keyup.shift.tab)=\"focusViaTab.emit()\"\n [formControl]=\"inputControl\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { BaseSelectDirective, EventSet } from '../../models/base-select.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { ResponsiveInputComponent } from '../responsive-input/responsive-input.component';\n\nexport type MultiSelectSize = 'default' | 'small' | 'large' | 'select2';\n\nexport type MultiSelectRemoveItemEvent = {\n item: any;\n /**\n * Is true when the item was not removed by pressing backspace on the keyboard rather than clicking the 'x'.\n */\n isMouse: boolean;\n};\n\n@Component({\n selector: 'lx-multi-select',\n templateUrl: 'multi-select.component.html',\n styleUrls: ['multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, ResponsiveInputComponent, FormsModule, ReactiveFormsModule, NgTemplateOutlet, AsyncPipe]\n})\nexport class MultiSelectComponent extends BaseSelectDirective implements AfterViewInit, ControlValueAccessor {\n public static isStillPossibleMoveToLeft(eventSet: EventSet): boolean {\n return (\n !(\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === ARROW_LEFT &&\n eventSet.selectionLength === 0\n ) &&\n !(\n eventSet.event.keyCode === ARROW_LEFT &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0 &&\n Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength\n )\n );\n }\n\n public static isMovingfromZeroToRight(eventSet: EventSet) {\n return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;\n }\n\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() markInvalid: boolean = false;\n @Input() selection?: any[] | null = [];\n @Input() size: MultiSelectSize = 'default';\n @Input() dropdownWidthScale: '1x' | '1.5x' | '2x' = '1x';\n\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() blur = new EventEmitter<void>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n\n @ViewChild(ResponsiveInputComponent, { static: true }) queryInput!: ResponsiveInputComponent;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n override readonly destroyed$ = new Subject<void>();\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n get dropdownWidth(): string | undefined {\n switch (this.dropdownWidthScale) {\n case '1x':\n return undefined;\n case '1.5x':\n return '150%';\n case '2x':\n return '200%';\n }\n }\n\n resetInput() {\n this.queryInput.resetInput();\n this.queryControl.setValue('');\n }\n\n focus() {\n this.queryInput.focusInput();\n }\n\n focusAndOpen() {\n this.queryInput.focusInput();\n this.open.next(true);\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.selectFirstOption();\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.responsiveInput.nativeElement;\n\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n\n // handle keyboard navigation for the selection\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) =>\n this.mapToEventSet(\n event,\n this.queryInput.responsiveInput.nativeElement,\n this.virtualCursorPosition,\n this.selection ? this.selection.length : 0\n )\n ),\n filter((eventSet) => {\n return !MultiSelectComponent.isMovingfromZeroToRight(eventSet) && MultiSelectComponent.isStillPossibleMoveToLeft(eventSet);\n }),\n tap((eventSet) => {\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0\n ) {\n const lastItem = last(this.selection);\n this.removeItem({ item: lastItem, isMouse: false });\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = MultiSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = MultiSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const inputKeyboardEvents$ = observableFromEvent<KeyboardEvent>(sourceElement, 'keydown');\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n event.preventDefault();\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.optionsKeyboardSelectAction$);\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n }\n\n /**\n * Adds the given option to the selection and, by default, resets the input field.\n * @param option The option to add to the selection.\n * @param keepSearchQueryAndScrollPosition If true, the search query and scroll position of the dropdown will be kept, unless there are no options left.\n */\n addItemToSelection(option: any, keepSearchQueryAndScrollPosition = false) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\n }\n\n const filteredOptionsInDropdownBeforeSelection = this.dropdownBase?._items.length ?? 0;\n if (keepSearchQueryAndScrollPosition && filteredOptionsInDropdownBeforeSelection > 1) {\n return;\n }\n\n this.resetSelectState();\n }\n\n removeItem(optionToRemove: MultiSelectRemoveItemEvent) {\n if (this.disabled) {\n return;\n }\n const prevOptionIndex = findIndex((option) => option === optionToRemove.item, this.selection);\n const prevSelectionLenght = this.selection?.length ?? 0;\n this.selection = _filter((option) => option !== optionToRemove.item, this.selection);\n this.cd.markForCheck();\n this.cd.detectChanges();\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\n\n if (prevOptionIndex === prevSelectionLenght - 1 || optionToRemove.isMouse) {\n this.resetSelectState();\n } else {\n this.virtualCursorPosition++;\n }\n }\n\n propagateChange(_value: any[]) {}\n\n writeValue(value: any[]) {\n this.selection = value;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div class=\"selection\">\n <ng-content select=\".pills\"></ng-content>\n </div>\n <lx-responsive-input\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n (keydown.enter)=\"$event.preventDefault()\"\n ></lx-responsive-input>\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { BasicDropdownItemComponent } from '../basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\nexport type OptionGroupOption = { value: string; label: string };\n/**\n * TODO: rename to something unspecific for single selects because multiselects are also supported\n */\nexport type SingleSelectOptionGroup<T = any> = {\n label: string;\n options: (OptionGroupOption | T)[];\n};\n\n/**\n * Usage:\n * <lx-single-select\n * #singleSelect\n * [selection]=\"value\"\n * (selectionChange)=\"onSelectionChange($event)\">\n * <span class=\"selectedOption\">\n * {{ value.label }}\n * </span>\n * <lx-option-group-dropdown\n * class=\"dropdownComponent\"\n * [keyboardSelectAction]=\"singleSelect.optionsKeyboardSelectAction$\"\n * [optionGroups]=\"optionGroups\"\n * (onItemSelected)=\"singleSelect.selectOption($event)\">\n * </lx-option-group-dropdown>\n * </lx-single-select>\n *\n */\n@Component({\n selector: 'lx-option-group-dropdown',\n templateUrl: 'option-group-dropdown.component.html',\n styleUrls: ['option-group-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n NgTemplateOutlet,\n InfiniteScrollModule,\n SelectableItemDirective,\n BadgeComponent,\n NgFor,\n BasicDropdownItemComponent,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n readonly NAME = 'OptionGroupDropdownComponent';\n @Input() optionGroups: SingleSelectOptionGroup[] = [];\n /**\n * Usually a stream of the current input value of the parent select.\n */\n @Input() newOptionLabel?: string;\n @Input() highlightTerm?: string;\n @Input() showCreateNewOption: boolean = false;\n @Input() labelKey: string = 'label';\n @Input() loading: boolean = false;\n @Input() trackByProperty?: string;\n @Input() showNoResultsIfGroupIsEmpty: boolean = false;\n @Input() override overlayPositioning: boolean = false;\n\n @Output() onItemSelected = new EventEmitter<OptionGroupOption | any>();\n @Output() containerScrolled = new EventEmitter();\n @Output() createNewOption = new EventEmitter<string>();\n\n @ContentChild('optionTemplate') optionTemplateRef?: TemplateRef<any>;\n /**\n * If you provide a <ng-template #noResultsOptionTemplateRef></ng-template> inside the <lx-option-group-dropdown>\n * it will be used to display the \"no results\" option instead of the default \"No results\" text.\n * This way you can easily define different \"No results\" texts for different groups too.\n */\n @ContentChild('noResultsOptionTemplateRef') noResultsOptionTemplateRef?: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n public get isNewItem() {\n const options =\n this.optionGroups?.reduce<(OptionGroupOption | any)[]>((flatOptions, optionGroup) => flatOptions.concat(optionGroup.options), []) ??\n [];\n return BasicDropdownComponent.isNewItem(options, this.newOptionLabel ?? '', this.labelKey);\n }\n\n selectOption(option: OptionGroupOption | any) {\n this.onItemSelected.emit(option);\n }\n\n trackByLabel(index: number, optionGroup: SingleSelectOptionGroup) {\n return optionGroup.label + index;\n }\n\n public onCreateNewOption() {\n if (!this.loading && this.newOptionLabel) {\n this.createNewOption.emit(this.newOptionLabel);\n }\n }\n\n trackByValue(_index: number, option: OptionGroupOption | any) {\n if (this.trackByProperty) {\n return option[this.trackByProperty];\n }\n return option.value;\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n}\n","<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList,\n Renderer2\n} from '@angular/core';\nimport { pick, uniqueId } from 'lodash-es';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-dropdown',\n templateUrl: 'options-dropdown.component.html',\n styleUrls: ['options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective]\n})\nexport class OptionsDropdownComponent implements AfterViewInit, OnDestroy {\n readonly NAME = 'OptionsDropdownComponent';\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n @Input() closeOnSelect: boolean = true;\n @Input() overlayPositioning: boolean = false;\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n overlayScrollStrategy: ScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();\n\n get overlayPositions(): ConnectedPosition[] {\n return [\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'top'\n },\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'top',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'bottom'\n }\n ];\n }\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.lxButton) {\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', this._open.toString());\n }\n\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.changeDetection.markForCheck();\n }\n\n get open() {\n return this._open;\n }\n\n get options(): OptionComponent[] {\n return this._options?.toArray() || [];\n }\n\n get optionIds(): string[] {\n return this.options.map((o) => o.optionId);\n }\n\n get lxButton(): HTMLElement {\n return this.trigger?.nativeElement();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n readonly listboxId: string;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private changeDetection: ChangeDetectorRef,\n private readonly scrollStrategies: ScrollStrategyOptions,\n private renderer: Renderer2\n ) {\n this.listboxId = uniqueId('listbox');\n }\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.FIRST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => 0),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LAST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => this.options.length - 1),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n this.lxButton?.focus();\n });\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index),\n takeUntil(this.destroyed$)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n this.lxButton?.focus();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n filter(() => this.closeOnSelect),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleOptionKeyDown(event);\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n\n this.setInitialAccessibilityAttributes();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n closeDropdown() {\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n let initialIndex = this.options.findIndex((option) => option.selected && this.optionIsHighlightable(option));\n if (initialIndex === -1) {\n initialIndex = this.options.findIndex((option) => this.optionIsHighlightable(option));\n }\n this.highlightedOptionIndex$.next(initialIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]!.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n /**\n * Programmatically sets initial accessibility attributes on the trigger button so that we\n * don't have to do it manually every time we declare a new instance of this component\n */\n private setInitialAccessibilityAttributes(): void {\n if (!this.lxButton) {\n return;\n }\n\n this.renderer.setAttribute(this.lxButton, 'role', 'combobox');\n this.renderer.setAttribute(this.lxButton, 'aria-haspopup', 'listbox');\n this.renderer.setAttribute(this.lxButton, 'tabindex', '0');\n this.renderer.setAttribute(this.lxButton, 'aria-control', this.listboxId);\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', 'false');\n }\n\n handleOptionKeyDown(event: KeyboardEvent): void {\n // In order to keep the centralized keyboard event management logic from `KeyboardActionSourceDirective`\n // we duplicate the option event here and trigger it again from lxButton.\n const newEventOptions = pick(event, [\n 'isTrusted',\n 'altKey',\n 'bubbles',\n 'charCode',\n 'cancelable',\n 'composed',\n 'key',\n 'ctrlKey',\n 'defaultPrevented',\n 'keyCode',\n 'code'\n ]);\n const newEvent = new KeyboardEvent(event.type, newEventOptions);\n\n this.lxButton?.dispatchEvent(newEvent);\n }\n}\n","<ng-container *ngIf=\"!overlayPositioning\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"open = !open\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { delay, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-sub-dropdown',\n templateUrl: 'options-sub-dropdown.component.html',\n styleUrls: ['options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [AutocloseDirective, AsyncPipe]\n})\nexport class OptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n\n @HostBinding('class.hidden')\n hidden = true;\n\n private mouseInside$ = new BehaviorSubject<boolean>(false);\n\n readonly destroyed$ = new Subject<void>();\n readonly maxHeight$ = new BehaviorSubject<string>('none');\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n @HostListener('mouseenter')\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n @HostListener('mouseleave')\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n });\n\n merge(this.showByKeyboard(), this.showByMouse())\n .pipe(takeUntil(this.destroyed$))\n .subscribe((show) => {\n this.hidden = !show;\n this.changeDetection.markForCheck();\n if (show) {\n this.updateMaxHeight(this.trigger.elementRef);\n }\n });\n }\n\n private updateMaxHeight(elementRef: ElementRef) {\n const marginBottom = 8;\n const optionTopPosition = elementRef.nativeElement.getBoundingClientRect().top;\n const screenHeight = window.innerHeight;\n const maxHeight = `${screenHeight - optionTopPosition - marginBottom}px`;\n if (this.maxHeight$.getValue() !== maxHeight) {\n this.maxHeight$.next(maxHeight);\n }\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const showOnEnterSubmenu$ = mouseEnterTrigger$.pipe(\n switchMap(() => mouseLeaveTrigger$),\n switchMap(() => this.mouseInside$)\n );\n\n return merge(showOnEnterMouse$, showOnEnterSubmenu$);\n }\n\n closeDropdown() {\n this.hidden = true;\n }\n}\n","<div #spacingContainer class=\"spacingContainer\" [class.left]=\"align === 'left'\">\n <ul\n #subDropdown\n class=\"sub-dropdown\"\n lxAutoclose\n [class.showScrollbar]=\"(maxHeight$ | async) !== 'none'\"\n [style.max-height]=\"(maxHeight$ | async) ?? 'none'\"\n (autoclose)=\"closeDropdown()\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IconComponent } from '../icon/icon.component';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[lx-picker-option]',\n templateUrl: 'picker-option.component.html',\n styleUrls: ['picker-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class PickerOptionComponent implements Highlightable, OnInit {\n readonly NAME = 'PickerOptionComponent';\n @HostBinding('attr.role') role = 'option';\n @HostBinding('attr.aria-selected') ariaSelected = false;\n @HostBinding('attr.aria-label')\n public get ariaLabelValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('attr.title')\n public get titleValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('id')\n public get id(): string {\n return this.optionId;\n }\n /**\n * The optionId must be set to a unique value. It's used as value for the id property of an option.\n * As the user navigates through the list via arrow keys, the aria-activedescendant property for the\n * button in the PickerComponent is adjusted to reflect the id attribute of the active option.\n */\n @Input() optionId!: string;\n @Input() ariaLabel?: string;\n @Input() value!: any;\n @HostBinding('class.selected') @Input() selected = false;\n @HostBinding('class.clearOption') @Input() isClearOption = false;\n /**\n * Emits the value.\n */\n @Output() select = new EventEmitter<any>();\n /**\n * This property is true, when the option was selected by mouse click or by the\n * ActiveDescendantKeyManager calling setActiveStyles().\n * It's false when the ActiveDescendantKeyManager calls setInactiveStyles().\n * Is used by the PickerComponent to find the current active option.\n */\n @HostBinding('class.highlighted')\n get highlighted() {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = value;\n this.cdRef.markForCheck();\n }\n private _highlighted = false;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n if (this.selected) {\n this.ariaSelected = true;\n }\n }\n\n @HostListener('click')\n manageClickEvents() {\n this.selectOption();\n }\n\n setActiveStyles() {\n this.ariaSelected = true;\n this.highlighted = true;\n }\n\n setInactiveStyles() {\n this.ariaSelected = false;\n this.highlighted = false;\n }\n\n /**\n * Triggers the EventEmitter select() that should emit, when an option was selected.\n * This function is used in the PickerComponent when an option was selected.\n */\n selectOption() {\n this.select.emit(this.value);\n }\n}\n","<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\"></lx-icon>\n<ng-content *ngIf=\"!isClearOption\"></ng-content>\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]',\n standalone: true\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private readonly IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n private readonly HOST_ELEMENT_IS_BUTTON = this.element.nativeElement.matches('button');\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click').pipe(\n tap(() => {\n // There is an inconsistent behavior among browsers when it comes to focusing buttons on click.\n // Safari does not focus buttons on click, but most other browsers do. Therefore, we have to\n // introduce this hack to make sure that the button is focused when the user clicks it.\n // More details in this interesting article: https://zellwk.com/blog/inconsistent-button-behavior/\n if (this.IS_SAFARI && this.HOST_ELEMENT_IS_BUTTON) {\n this.element.nativeElement.focus();\n }\n })\n );\n private focusEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'focus');\n private blurEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'blur');\n\n public clickEvent$ = this.allClickEvents$.pipe(filter(() => this.focused === true));\n\n get width() {\n return this.element.nativeElement.offsetWidth;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private element: ElementRef<HTMLElement>) {\n this.focusEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = true;\n });\n this.blurEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = false;\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { PickerOptionComponent } from '../picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './picker-trigger.directive';\n\n/**\n * How to use:\n * Provide the lx-picker with two kinds of ContentChildren:\n * 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.\n * 2. A list of <li> elements with an lx-picker-option attribute that own the option template as content children.\n *\n * You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.\n *\n * Example usage (non FormGroup style):\n * <lx-picker listBoxAriaLabel=\"Awesome picker\">\n * <button lxPickerTrigger lx-button mode=\"outline\" size=\"large\" [square]=\"true\" aria-label=\"Awesome picker\" title=\"Awesome picker\">\n * <lx-icon [name]=\"selection.label\" [color]=\"selection.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </button>\n * <li *ngFor=\"let option of options\" lx-picker-option [value]=\"option.value\" [selected]=\"selection === option\" (select)=\"selection = option\" [optionId]=\"option.id\">\n * <lx-icon lx-picker-option [name]=\"option.label\" [color]=\"option.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </li>\n * </lx-picker>\n */\n@Component({\n selector: 'lx-picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PickerComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, AutocloseDirective]\n})\nexport class PickerComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n /**\n * A human-readable string value which identifies the listbox.\n * If there's a visible label, then aria-labelledby should be used instead to refer to that label.\n */\n @Input() listBoxAriaLabel?: string;\n /**\n * Identifies the visible element which identifies the listbox.\n * If there's no visible label, then aria-label should be used instead to include a label.\n */\n @Input() listBoxAriaLabelledBy?: string;\n @Input() openDirection: 'left' | 'right' = 'right';\n\n get activeDescendantsId() {\n return this._activeDescendantsId;\n }\n set activeDescendantsId(value: string | undefined) {\n this._activeDescendantsId = value;\n this.cdRef.markForCheck();\n }\n\n get open() {\n return this._open;\n }\n set open(value: boolean) {\n this._open = value;\n this.cdRef.markForCheck();\n }\n\n /**\n * Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.\n */\n get leftOffset() {\n const dropdownWidth = 185;\n return this.openDirection === 'left' ? `-${dropdownWidth - this._trigger.width}px` : '0px';\n }\n\n @ContentChildren(PickerOptionComponent)\n private options!: QueryList<PickerOptionComponent>;\n keyManager!: ActiveDescendantKeyManager<PickerOptionComponent>;\n\n @ContentChild(PickerTriggerDirective)\n private _trigger!: PickerTriggerDirective;\n private _isFormControl = false;\n private _open = false;\n private _activeDescendantsId?: string;\n private _lastSelectWasByKeyManager = false;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private dir: Directionality,\n private cdRef: ChangeDetectorRef\n ) {}\n\n @HostListener('document:keydown', ['$event'])\n manageKeyboardEvents(event: KeyboardEvent) {\n if (this.open) {\n const activeIndex = this.keyManager.activeItemIndex || 0;\n switch (event.key) {\n case 'Enter':\n setTimeout(() => {\n this.closePicker();\n });\n break;\n case 'Escape':\n case 'Tab':\n this.setActivePickerOption(-1);\n this.closePicker();\n break;\n case 'ArrowDown':\n event.preventDefault();\n const newDownIndex = this.keyManager.activeItemIndex === -1 ? 0 : activeIndex + 5;\n this.setActivePickerOption(newDownIndex < this.options.length ? newDownIndex : activeIndex);\n break;\n case 'ArrowUp':\n event.preventDefault();\n const newUpIndex = this.keyManager.activeItemIndex === -1 ? this.options.length - 1 : activeIndex - 5;\n this.setActivePickerOption(newUpIndex >= 0 ? newUpIndex : activeIndex);\n break;\n case 'ArrowLeft':\n if (this.keyManager.activeItemIndex === -1) {\n this.setActivePickerOption(this.options.length - 1);\n } else {\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n break;\n case 'Home':\n event.preventDefault();\n this.setActivePickerOption(0);\n break;\n case 'End':\n event.preventDefault();\n this.setActivePickerOption(this.options.length - 1);\n break;\n default:\n // matches ArrowRight\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n if (this.keyManager.activeItem) {\n this._lastSelectWasByKeyManager = true;\n this.propagateChange(this.keyManager.activeItem.value);\n if (!this._isFormControl) {\n this.keyManager.activeItem.selectOption();\n }\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.keyManager = new ActiveDescendantKeyManager(this.options).withHorizontalOrientation(this.dir.value).withVerticalOrientation(true);\n\n this.options.map((item: PickerOptionComponent) => {\n item.select.pipe(takeUntil(this.destroyed$)).subscribe((value: any) => {\n this.propagateChange(value);\n if (value !== this.keyManager.activeItem?.value || !this._lastSelectWasByKeyManager) {\n this.closePicker();\n }\n this._lastSelectWasByKeyManager = false;\n });\n });\n\n this._trigger.clickEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.toggleOpen();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closePicker() {\n this.setActivePickerOption(-1);\n this.open = false;\n }\n\n toggleOpen() {\n this.open = !this.open;\n if (this.open) {\n this.onTouched();\n }\n this.setActivePickerOption(this.open === false ? -1 : this.options.toArray().findIndex((option) => option.selected));\n }\n\n private setActivePickerOption(index: number) {\n this.keyManager.setActiveItem(index);\n if (this.keyManager.activeItem) {\n this.activeDescendantsId = this.keyManager.activeItem.optionId;\n } else {\n this.activeDescendantsId = undefined;\n }\n }\n\n //#region Angular Forms API. This is only used when using the Picker inside a FormGroup\n\n writeValue(value: any) {\n this.options?.toArray().forEach((option) => (option.selected = option.value === value));\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n this._isFormControl = true;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private propagateChange(_value: any) {}\n private onTouched() {}\n\n //#endregion\n}\n","<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\"></ng-content>\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content></ng-content>\n </ul>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'lx-pill-item',\n templateUrl: 'pill-item.component.html',\n styleUrls: ['pill-item.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class PillItemComponent {\n readonly NAME = 'PillItemComponent';\n\n @Input() item!: any;\n @Input() label!: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n removePill(item: any, isMouse: boolean = false) {\n if (!this.disabled) {\n this.remove.emit({ item, isMouse });\n }\n }\n}\n","<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { delay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\nimport { PillItemComponent } from '../pill-item/pill-item.component';\n\n@Component({\n selector: 'lx-pill-list',\n templateUrl: 'pill-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['pill-list.component.scss'],\n standalone: true,\n imports: [NgFor, SelectableItemDirective, NgIf, NgTemplateOutlet, PillItemComponent, AsyncPipe]\n})\nexport class PillListComponent extends KeyboardSelectDirective implements AfterViewInit {\n @Input() pills: any[] = [];\n @Input() labelKey?: string;\n /**\n * Provide an itemKey which contains the property name in each object to uniquely identify it.\n * This will be used in the trackBy function.\n */\n @Input() itemKey?: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n /**\n * If you provide an <ng-template #pillTemplate>, it will be used to render the individual pills inside of the lx-multi-select.\n * This is useful if you want to apply special attributes or CSS styling to individual pills.\n * Example:\n * <ng-template #pillTemplate let-pill>\n * <lx-pill-item [class.readOnly]=\"item.readOnly\" [label]=\"item.label\" [item]=\"item\"></lx-pill-item>\n * </ng-template>\n */\n @ContentChild('pillTemplate', { read: TemplateRef, static: true }) pillTemplate?: TemplateRef<any>;\n @ContentChildren(PillItemComponent, { emitDistinctChangesOnly: true }) contentItems!: QueryList<PillItemComponent>;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.pillTemplate) {\n const removePillEvents: Observable<MultiSelectRemoveItemEvent> = this.contentItems.changes.pipe(\n startWith(this.contentItems),\n switchMap(() => merge(...this.contentItems.map((item) => item.remove))),\n delay(0),\n takeUntil(this.destroyed$)\n );\n removePillEvents.subscribe(this.removePill.bind(this));\n }\n }\n\n removePill(event: MultiSelectRemoveItemEvent) {\n this.remove.emit(event);\n }\n\n removePillViaKeyboard(pill: any) {\n this.remove.emit({ item: pill, isMouse: false });\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n}\n","<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\"></ng-container>\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item\n [item]=\"pill\"\n [label]=\"labelKey ? pill[labelKey] : pill\"\n [disabled]=\"disabled\"\n (remove)=\"removePill($event)\"\n ></lx-pill-item>\n </ng-template>\n </li>\n</ul>\n","import { includes } from 'lodash/fp';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_UP, ENTER, ESCAPE, SPACE, TAB } from './key-codes.constants';\n\nexport interface KeyboardNavigationEvents {\n verticalNavigation$: Observable<KeyboardEvent>;\n close$: Observable<KeyboardEvent>;\n dropdownKeyboardEvent$: Observable<KeyboardSelectAction | null>;\n enter$: Observable<KeyboardEvent>;\n space$: Observable<KeyboardEvent>;\n openOnArrowDown$: Observable<KeyboardEvent>;\n}\n\nexport function getKeyboardNavigationEvents(sourceElement: HTMLElement, destroyed$: Observable<void>): KeyboardNavigationEvents {\n const inputKeyboardEvents$ = fromEvent<KeyboardEvent>(sourceElement, 'keydown').pipe(takeUntil(destroyed$));\n\n const verticalNavigation$ = inputKeyboardEvents$.pipe(filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])));\n\n const close$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB));\n\n const dropdownKeyboardEvent$ = inputKeyboardEvents$.pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n })\n );\n\n const enter$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ENTER));\n const space$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === SPACE));\n\n const openOnArrowDown$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ARROW_DOWN));\n\n return {\n verticalNavigation$,\n close$,\n dropdownKeyboardEvent$,\n enter$,\n space$,\n openOnArrowDown$\n };\n}\n\nexport function stopKeyboardEventPropagation(evt: Event) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash/fp';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { ExpandedDropdownComponent } from '../expanded-dropdown/expanded-dropdown.component';\n\n@Component({\n selector: 'lx-select-list',\n templateUrl: 'select-list.component.html',\n styleUrls: ['select-list.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgTemplateOutlet]\n})\nexport class SelectListComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit {\n @Input() searchPlaceholder: string = 'Search';\n @Input() options: any[] = [];\n @Input() selection: any;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() onChooseItem = new EventEmitter<string>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n @ContentChild(ExpandedDropdownComponent, { static: false }) private dropdownComponent?: ExpandedDropdownComponent;\n\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n @ViewChild('searchInput', { static: true }) searchInput!: ElementRef<HTMLInputElement>;\n\n highlightedIndex: number = 0;\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n override readonly destroyed$ = new Subject<void>();\n\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n focus() {\n this.searchInput.nativeElement.focus();\n }\n\n focusAndOpen() {\n this.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.dropdownComponent!.select(0);\n }\n } else {\n this.dropdownComponent!.select(0);\n }\n });\n // keyboard event handling\n const sourceElement = this.searchInput.nativeElement;\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n const currentIndex = this.determineHighlightIndex(this.options, this.selection);\n // keyboard selection while not searching\n if (this.searchInput.nativeElement.value === '') {\n if (event.key === 'ArrowDown') {\n if (currentIndex !== this.options.length - 1) {\n this.selectOption(currentIndex + 1);\n } else {\n this.selectOption(0);\n }\n } else {\n if (currentIndex !== 0) {\n this.selectOption(currentIndex - 1);\n } else {\n this.selectOption(this.options.length - 1);\n }\n }\n } else {\n if (event.key === 'ArrowDown') {\n if (this.highlightedIndex !== this.dropdownComponent!.options.length - 1) {\n this.highlightedIndex = this.highlightedIndex + 1;\n } else {\n this.highlightedIndex = 0;\n }\n } else {\n if (this.highlightedIndex !== 0) {\n this.highlightedIndex = this.highlightedIndex - 1;\n } else {\n this.highlightedIndex = this.dropdownComponent!.options.length - 1;\n }\n }\n this.dropdownComponent!.select(this.highlightedIndex);\n }\n });\n\n keyboardEvents.enter$.subscribe(() => {\n if (this.searchInput.nativeElement.value === '') {\n this.onChooseItem.emit(this.selection.id);\n } else if (this.dropdownComponent!.options.length) {\n this.onChooseItem.emit(this.dropdownComponent!.options[this.highlightedIndex].id);\n }\n });\n this.focusAndOpen();\n }\n\n selectOption(index: number) {\n if (this.determineHighlightIndex(this.options, this.selection) === index) {\n this.onChooseItem.emit(this.selection.id);\n } else if (index !== -1) {\n this.selection = this.options[index];\n this.selectionChange.emit(this.selection);\n this.open.next(false);\n this.focusAndOpen();\n this.dropdownComponent?.select(index);\n }\n }\n\n searchKeyChanged(event: any) {\n if (event.target.value === '' && !['ArrowUp', 'ArrowDown'].includes(event.key)) {\n this.highlightedIndex = this.determineHighlightIndex(this.dropdownComponent!.options, this.selection);\n this.dropdownComponent!.select(this.highlightedIndex);\n } else if (event.key.length === 1 || ['Backspace', 'Delete'].includes(event.key)) {\n this.highlightedIndex = 0;\n this.dropdownComponent!.select(0);\n }\n }\n\n private determineHighlightIndex(options: any[], selection: any) {\n return options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div class=\"selectContainer focused\">\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div class=\"searchWrapper\">\n <input\n #searchInput\n id=\"searchInput\"\n class=\"searchInput\"\n type=\"text\"\n autocomplete=\"off\"\n (keyup)=\"searchKeyChanged($event)\"\n [formControl]=\"queryControl\"\n [placeholder]=\"searchPlaceholder\"\n />\n <label for=\"searchInput\" class=\"fa fa-search\"></label>\n </div>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with a single-select in\n * order to mark a ng-template as the template to be rendered within the select to\n * display the currently selected option.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectedOption>{{ someValue }}</ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectedOption]',\n standalone: true\n})\nexport class SelectedOptionDirective {}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { Subject, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { SelectedOptionDirective } from '../../directives/selected-option.directive';\nimport { ARROW_LEFT, ARROW_RIGHT, BACKSPACE, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\n\nexport type SingleSelectSize = 'default' | 'small' | 'select2' | 'large';\n\n@Component({\n selector: 'lx-single-select',\n templateUrl: 'single-select.component.html',\n styleUrls: ['single-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SingleSelectComponent)\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, NgTemplateOutlet, FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class SingleSelectComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() selection: any;\n @Input() selectionBackground: 'white' | 'gray' = 'white';\n @Input() size: SingleSelectSize = 'default';\n @Input() dropdownWidthScale: '1x' | '1.5x' | '2x' = '1x';\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() inputId?: string;\n @Input({ transform: booleanAttribute }) required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n @ContentChild(SelectedOptionDirective, { read: TemplateRef, static: true }) explicitSelectedOption?: TemplateRef<any>;\n @ContentChild(BasicDropdownComponent, { static: false }) private dropdownComponent?: BasicDropdownComponent;\n\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n get selectedOptionTmpl() {\n return this.explicitSelectedOption || this.implicitSelectedOption;\n }\n\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n @Input() allowClear = true;\n @Input() tabIndex: number = 0;\n @Input() markInvalid: boolean = false;\n\n @ViewChild('queryInput', { static: true }) queryInput!: ElementRef<HTMLInputElement>;\n\n override readonly destroyed$ = new Subject<void>();\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n get cursorStyle() {\n if (this.disabled) {\n return 'default';\n } else if (this.allowQuery) {\n return 'text';\n } else {\n return 'pointer';\n }\n }\n\n get dropdownWidth(): string | undefined {\n switch (this.dropdownWidthScale) {\n case '1x':\n return undefined;\n case '1.5x':\n return '150%';\n case '2x':\n return '200%';\n }\n }\n\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n focus() {\n this.queryInput.nativeElement.focus();\n }\n\n focusAndOpen() {\n this.queryInput.nativeElement.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open && !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection, this.dropdownComponent!.itemKey);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.selectFirstOption();\n }\n } else {\n this.selectFirstOption();\n }\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.nativeElement;\n // handle keyboard navigation for the selection\n fromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) => this.mapToEventSet(event, sourceElement, this.virtualCursorPosition)),\n tap((eventSet) => {\n if (!this.allowQuery && eventSet.event.keyCode !== BACKSPACE) {\n // additional check for even.code for userEvent API compatibility\n if (eventSet.event.keyCode !== TAB && eventSet.event.code !== 'Tab') {\n // if querying is disabled, only the tab key press event will be propagated, so that you can still defocus.\n eventSet.event.preventDefault();\n }\n return;\n }\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n this.selection &&\n this.allowClear\n ) {\n this.removeSelection();\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => this.allowQuery && eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = SingleSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = SingleSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n });\n\n keyboardEvents.close$.subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n keyboardEvents.dropdownKeyboardEvent$.subscribe(this.optionsKeyboardSelectAction$);\n\n keyboardEvents.enter$.subscribe(() => this.open.next(!this.dropdownOpen));\n keyboardEvents.space$.pipe(filter(() => !this.allowQuery)).subscribe(() => {\n if (this.dropdownOpen) {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.EXECUTE);\n }\n this.open.next(!this.dropdownOpen);\n });\n\n keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));\n }\n\n selectOption(option: any) {\n this.selection = option;\n\n this.selectionChange.emit(option);\n this.propagateChange(option);\n\n this.resetSelectState();\n\n // This timeout makes sure that the dropdown will be closed at the end\n // of all the callbacks in the open subscriptions.\n setTimeout(() => {\n this.open.next(false);\n });\n }\n\n removeSelection() {\n this.selection = null;\n this.cd.markForCheck();\n this.cd.detectChanges();\n\n this.selectionChange.emit(this.selection);\n this.propagateChange(this.selection);\n\n this.resetSelectState();\n }\n\n propagateChange(_value: any) {}\n\n writeValue(newSelection: any) {\n this.selection = newSelection;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private determineHighlightIndex(options: any[], selection: any, itemKey?: string) {\n return itemKey\n ? options.findIndex((option) => isEqual(get(itemKey, selection), get(itemKey, option)) || isEqual(selection, get(itemKey, option)))\n : options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && selection !== 0 && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\"></ng-container>\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [id]=\"inputId\"\n [attr.required]=\"required ? 'true' : null\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit($event)\"\n (keyup.tab)=\"focusedViaTab()\"\n (keyup.shift.tab)=\"focusedViaTab()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"(selection || selection === 0) && allowClear && !disabled\" class=\"far fa-times\" (click)=\"removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" [style.width]=\"dropdownWidth\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\"></ng-container>\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\"></ng-content>\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\"></ng-content>\n</ng-template>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-slider-toggle',\n templateUrl: 'slider-toggle.component.html',\n styleUrls: ['./slider-toggle.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class SliderToggleComponent {\n @Input() public value!: boolean;\n @Input() public size: 'small' = 'small';\n @Input() public disabled = false;\n @Input() public label!: string;\n @Input() public labelInFront = true;\n @Input() public elementId?: string;\n @Output() public toggle = new EventEmitter<boolean>();\n\n onToggle() {\n this.toggle.emit(!this.value);\n }\n\n get id() {\n return this.elementId ? `tour${this.elementId}` : null;\n }\n\n focus(checkbox: HTMLInputElement) {\n // without a delay the checkbox will not be focused again\n setTimeout(() => checkbox.focus(), 150);\n }\n}\n","<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n","import { Component, Input } from '@angular/core';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss'],\n standalone: true,\n imports: [ButtonComponent]\n})\nexport class SortingDropdownTriggerComponent {\n @Input() label!: string;\n @Input() currentSortingLabel!: string;\n @Input() disabled: boolean = false;\n}\n","<button lx-button mode=\"link\" [disabled]=\"disabled\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}<i class=\"far fa-angle-down lx-margin-left\"></i>\n</button>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\nimport { OptionComponent } from '../option/option.component';\nimport { OptionsDropdownComponent } from '../options-dropdown/options-dropdown.component';\nimport { SortingDropdownTriggerComponent } from '../sorting-dropdown-trigger/sorting-dropdown-trigger.component';\n\n/**\n * Used for translation. The dash in the name ensures that this will not clash with a DataModel field.\n * This key is used when there is no sorting parameter sent to the allFactSheets query, meaning that the ElasticSearch\n * score will be used for sorting.\n */\nexport const RELEVANCE_SORTING_KEY = 'lx-relevance';\n\n@Component({\n selector: 'lx-sorting-dropdown',\n templateUrl: 'sorting-dropdown.component.html',\n styleUrls: ['sorting-dropdown.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n OptionsDropdownComponent,\n SortingDropdownTriggerComponent,\n KeyboardActionSourceDirective,\n OptionGroupComponent,\n NgFor,\n OptionComponent,\n TranslateModule\n ]\n})\nexport class SortingDropdownComponent implements OnInit {\n @Input() currentSorting!: Sorting | null;\n @Input() sortingOptions: Sorting[] = [];\n @Input() showDirectionOptions = true;\n @Output() public apply = new EventEmitter<Sorting>();\n readonly NAME = 'SortingDropdownComponent';\n readonly sortingDirections: SortingOrder[] = ['asc', 'desc'];\n\n ngOnInit() {\n if (!this.currentSorting) {\n this.currentSorting = this.sortingOptions[0] ? { key: this.sortingOptions[0].key, order: this.sortingOptions[0].order } : null;\n }\n }\n\n applySortingMode(sort: Sorting) {\n this.apply.emit({\n key: sort.key,\n order: sort.order\n });\n }\n\n applySortingDirection(sortDirection: SortingOrder) {\n if (this.currentSorting) {\n this.apply.emit({\n key: this.currentSorting.key,\n order: sortDirection\n });\n }\n }\n\n getSortLabel(key: string | undefined) {\n return key ? `sorting.${key}.label` : '';\n }\n}\n","<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n","// /**\n// * Converts HTML to text, preserving semantic newlines for block-level\n// * elements. (Taken from https://stackoverflow.com/a/20384452/6813271)\n// *\n// * @param node - The HTML node to perform text extraction.\n// */\n// export function getNodeTextWithNewlines(node: Element, _inner = false): string {\n// let result = '';\n\n// if (node.nodeType === document.TEXT_NODE) {\n// // Replace repeated spaces, newlines, and tabs with a single space.\n// result = node.nodeValue.replace( /\\s+/g, ' ' );\n// } else {\n// for (let i = 0, j = node.childNodes.length; i < j; i++ ) {\n// result += this.getNodeTextWithNewlines(node.childNodes[i] as Element, true);\n// }\n// const d = node['currentStyle'] ?\n// node['currentStyle']['display'] :\n// document.defaultView.getComputedStyle(node, null).getPropertyValue('display');\n// if (d.match(/^block/)) {\n// result = '\\n' + result + '\\n';\n// } else if (d.match(/list/) || d.match(/row/) || node.tagName === 'BR' || node.tagName === 'HR' ) {\n// result += '\\n';\n// }\n// }\n\n// return _inner ? result : _.trim(result, '\\n');\n// }\n\n/** Trim whitespaces from html */\nexport function trimHtml(str: string): string {\n return str\n .replace(/(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*$/i, '')\n .replace(/^(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*/i, '')\n .replace(/^<(div|p)>(<\\/?(br *\\/?|p)>|&nbsp;|\\s)*<\\/ *(div|p)>$/i, '');\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { intersection, isNil } from 'lodash-es';\nimport { NbspPipe } from '../../core-ui/pipes/nbsp.pipe';\nimport { trimHtml } from '../../shared/html-helpers.function';\n\n// First version based on https://stackoverflow.com/a/41253897/6813271\n@Directive({\n selector: '[lxContenteditableModel]',\n standalone: true\n})\nexport class ContenteditableDirective implements OnChanges {\n /** Model */\n @Input() lxContenteditableModel!: string;\n @Output() lxContenteditableModelChange = new EventEmitter<string>();\n /** Allow (sanitized) html */\n @Input() lxContenteditableHtml: boolean | 'trim' = false;\n @Input() lxContenteditableHtmlPaste: boolean = true;\n\n private emittedValue: string | null = null;\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['lxContenteditableModel']) {\n // On init: if lxContenteditableModel is empty, read from DOM in case the element has content\n if (changes['lxContenteditableModel'].isFirstChange() && !this.lxContenteditableModel) {\n // Prevent Exp.HasChanged: Don't read and emit value from DOM during change detection\n setTimeout(() => {\n this.onInput(true);\n });\n }\n this.refreshView();\n }\n }\n\n @HostListener('input')\n @HostListener('blur')\n @HostListener('keyup')\n onInput(initialInlineData = false) {\n let value = this.elRef.nativeElement[this.getProperty()] as string;\n value = this.cleanContent(value, initialInlineData);\n this.emittedValue = value;\n this.lxContenteditableModelChange.emit(value);\n }\n\n /**\n * @param event {ClipboardEvent}\n */\n @HostListener('paste', ['$event']) onPaste(event: any) {\n const clipboardEvent = event as ClipboardEvent;\n this.onInput();\n // For text-only contenteditable, remove pasted HTML.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n let isHtml: boolean = true;\n // TODO: Use beforepaste event. See https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/.\n if (clipboardEvent.clipboardData && clipboardEvent.clipboardData.types) {\n const types = [].slice.apply(clipboardEvent.clipboardData.types);\n isHtml = intersection(types, ['text/html', 'com.apple.webarchive']).length > 0;\n }\n if (isHtml) {\n // 1 tick wait is required for DOM update\n setTimeout(() => {\n // Cursor will be lost\n // The lint disabling here should be clearified. See if and how this directive is needed.\n this.elRef.nativeElement.innerHTML = this.sanitizer.sanitize(\n SecurityContext.HTML,\n this.elRef.nativeElement.innerText.replace(/\\n/g, '<br />')\n )!;\n });\n }\n }\n }\n\n @HostListener('drop', ['$event']) onDrop(event: MouseEvent) {\n this.onInput();\n // For text-only contenteditable, don't allow drop content.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n\n return false;\n }\n\n private cleanContent(value: string, initialInlineData = false): string {\n if (this.lxContenteditableHtml === 'trim' || (this.lxContenteditableHtml && initialInlineData)) {\n value = trimHtml(value);\n } else if (initialInlineData && !this.lxContenteditableHtml && value) {\n value = value.replace(/^[\\n\\s]+/, '');\n value = value.replace(/[\\n\\s]+$/, '');\n }\n // Some browsers like Chrome insert nbsp; when using contentEditable attribute\n return new NbspPipe().transform(value);\n }\n\n private refreshView() {\n if (!isNil(this.lxContenteditableModel)) {\n const newContent = this.cleanContent(this.lxContenteditableModel);\n // Only refresh if content changed to avoid cursor loss\n // (as ngOnChanges can be triggered an additional time by onInput())\n if (this.emittedValue === null || this.emittedValue !== newContent) {\n this.elRef.nativeElement[this.getProperty()] = this.sanitize(newContent)!;\n }\n }\n }\n\n private getProperty(): 'innerHTML' | 'innerText' {\n return this.lxContenteditableHtml ? 'innerHTML' : 'innerText';\n }\n\n private sanitize(content: string): string | null {\n return this.lxContenteditableHtml ? this.sanitizer.sanitize(SecurityContext.HTML, content) : content;\n }\n}\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, fromEvent, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'form',\n standalone: true\n})\nexport class FormSubmitDirective implements OnDestroy {\n submitted$ = new BehaviorSubject(false);\n private subscription: Subscription;\n\n constructor(private elementRef: ElementRef) {\n this.subscription = fromEvent(this.elementRef.nativeElement, 'submit')\n .pipe(take(1))\n .subscribe(() => this.submitted$.next(true));\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import {\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { curry } from 'lodash-es';\nimport { combineLatest, Observable, of, Subscription } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ErrorMessageComponent } from '../components/error-message/error-message.component';\nimport { FormSubmitDirective } from './form-submit.directive';\n\nexport type FormControlErrorDisplayStrategy = (obj: { control: AbstractControl; submitted?: boolean }) => boolean;\n\nexport const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken<string>('FORM_CONTROL_ERROR_NAMESPACE');\nexport const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken<FormControlErrorDisplayStrategy>(\n 'FORM_CONTROL_ERROR_DISPLAY_STRATEGY'\n);\n\nexport const provideFormControlErrorNamespace = (namespace: string) => ({\n provide: FORM_CONTROL_ERROR_NAMESPACE,\n useValue: namespace\n});\n\nexport const provideFormControlErrorDisplayStrategy = (fn: FormControlErrorDisplayStrategy) => ({\n provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,\n useValue: fn\n});\n\n@Directive({\n selector: '[lxFormError]',\n standalone: true\n})\nexport class FormErrorDirective implements OnInit, OnDestroy {\n @Input('lxFormError') ctrl?: AbstractControl | '';\n @Input() controlName?: string;\n private subscritpion?: Subscription;\n private ref?: ComponentRef<ErrorMessageComponent>;\n\n private get control(): AbstractControl | null | undefined {\n return this.ngControl?.control || this.ctrl || null;\n }\n\n private get name(): string | number | null | undefined {\n return this.ngControl?.name || this.controlName;\n }\n\n private get formSubmitted(): Observable<boolean | undefined> {\n return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);\n }\n\n constructor(\n private viewContainer: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n @Optional() @Self() private ngControl?: NgControl,\n @Optional() @Host() private formSubmitDirective?: FormSubmitDirective,\n @Optional() @Inject(FORM_CONTROL_ERROR_NAMESPACE) private namespace?: string,\n @Optional() @Inject(FORM_CONTROL_ERROR_DISPLAY_STRATEGY) private strategy?: FormControlErrorDisplayStrategy\n ) {}\n\n ngOnInit() {\n const control = this.control;\n if (isAbstractControl(control)) {\n this.subscritpion = combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])\n .pipe(\n map(([, submitted]) => submitted),\n map(resolveStrategy(this.strategy, control))\n )\n .subscribe((display) => {\n const { errors } = control;\n if (errors && display) {\n const firstErrorKey = Object.keys(errors)[0];\n const translationKey = this.buildTranslationKey(firstErrorKey!);\n this.setError(translationKey);\n } else if (this.ref) {\n this.setError();\n }\n });\n }\n }\n\n private buildTranslationKey(errorKey: string) {\n if (this.control) {\n return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;\n } else {\n return '';\n }\n }\n\n private setError(key?: string) {\n if (!this.ref) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);\n this.ref = this.viewContainer.createComponent(factory);\n }\n this.ref.instance.key = key;\n }\n\n ngOnDestroy() {\n if (this.subscritpion) {\n this.subscritpion.unsubscribe();\n }\n }\n}\n\nconst isAbstractControl = (ctrl: AbstractControl | null | undefined): ctrl is AbstractControl => !!ctrl;\nconst resolveStrategy = curry(\n (strategy: FormControlErrorDisplayStrategy | undefined, control: AbstractControl, submitted: boolean | undefined) =>\n strategy ? strategy({ control, submitted }) : true\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, find, includes, isEqual, isObject } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterBySelection',\n standalone: true\n})\nexport class FilterSelectionPipe implements PipeTransform {\n transform(items: any[] | null | undefined, selection: any, itemKey?: string): any[] {\n const isArray = Array.isArray(selection);\n return filter((item) => {\n if (isArray) {\n if (isObject(item)) {\n return itemKey\n ? !find((selectedItem) => selectedItem?.[itemKey] === (item as any)?.[itemKey], selection)\n : !find(item, selection);\n } else {\n return !includes(item, selection);\n }\n } else {\n return !isEqual(item, selection);\n }\n }, items);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, toLower } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterByTerm',\n standalone: true\n})\nexport class FilterTermPipe implements PipeTransform {\n transform(items: any[] | null, options: { term?: string | null; key?: string }): any[] {\n if (items === null) {\n return [];\n }\n if (options.term) {\n return filter((item) => {\n const value = options.key ? item[options.key] : item;\n return toLower(value).indexOf(toLower(options.term!)) > -1;\n }, items);\n } else {\n return items;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LOCALE_FN } from '../../core-ui/core-ui.constants';\nimport { CURRENCY_SYMBOL_MAP } from '../components/currency/currency-symbol-map.constant';\n\n/**\n * Reformats numbers into a short format.\n * @example {{ 1000 | lxFormatNumber | async }} prints 1K\n *\n * If the parameter currency is set, a currency sign is inserted based on the value and the current locale.\n * In this case, the pipe must be used with an innerHtml attribute.\n * @example [innerHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber',\n standalone: true\n})\nexport class FormatNumberPipe implements PipeTransform {\n constructor(@Inject(LOCALE_FN) private getLocale: Function) {}\n\n transform(number: number | undefined | null, currency?: string): Observable<string | null> {\n const locale$: Observable<string> = this.getLocale();\n return locale$.pipe(\n map((locale) => {\n if (number === null || number === undefined) {\n return null;\n }\n const options: any = {\n notation: 'compact',\n compactDisplay: 'short'\n };\n if (currency) {\n try {\n const currencyOptions = { ...options, currency, style: 'currency' };\n const formatedNumberWithCurrency = new Intl.NumberFormat(locale, currencyOptions).format(number);\n return this.getFormatedCurrency(formatedNumberWithCurrency, currency);\n } catch (_error) {\n console.warn(`FormatNumberPipe: Invalid currency code: ${currency}`);\n return new Intl.NumberFormat(locale, options).format(number);\n }\n }\n return new Intl.NumberFormat(locale, options).format(number);\n })\n );\n }\n\n /**\n * Use custom currency symbol, when the currency in the formated number doesn't match the\n * symbol in the CURRENCY_SYMBOL_MAP.\n */\n private getFormatedCurrency(formatedNumberWitCurrency: string, currency: string): string {\n const currencyMapping = CURRENCY_SYMBOL_MAP[currency];\n if (currencyMapping && currencyMapping !== currency && !formatedNumberWitCurrency.includes(currencyMapping)) {\n return formatedNumberWitCurrency.replace(currency, currencyMapping);\n }\n return formatedNumberWitCurrency;\n }\n}\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { LxCoreUiModule } from '../core-ui/core-ui.module';\nimport { BasicDropdownItemComponent } from './components/basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from './components/basic-dropdown/basic-dropdown.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nimport { CopyButtonComponent } from './components/copy-button/copy-button.component';\nimport { CurrencyInputComponent } from './components/currency/currency-input.component';\nimport { CurrencySymbolComponent } from './components/currency/currency-symbol.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { DatepickerUiModule } from './components/date-picker-ui/datepicker-ui.module';\nimport { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { ExpandedDropdownComponent } from './components/expanded-dropdown/expanded-dropdown.component';\nimport { FormErrorComponent } from './components/form-error/form-error.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputComponent } from './components/input/input.component';\nimport { MultiSelectComponent } from './components/multi-select/multi-select.component';\nimport { OptionGroupDropdownComponent } from './components/option-group-dropdown/option-group-dropdown.component';\nimport { OptionGroupComponent } from './components/option-group/option-group.component';\nimport { OptionComponent } from './components/option/option.component';\nimport { OptionsDropdownComponent } from './components/options-dropdown/options-dropdown.component';\nimport { OptionsSubDropdownComponent } from './components/options-sub-dropdown/options-sub-dropdown.component';\nimport { PickerOptionComponent } from './components/picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './components/picker/picker-trigger.directive';\nimport { PickerComponent } from './components/picker/picker.component';\nimport { PillItemComponent } from './components/pill-item/pill-item.component';\nimport { PillListComponent } from './components/pill-list/pill-list.component';\nimport { ResponsiveInputComponent } from './components/responsive-input/responsive-input.component';\nimport { SelectListComponent } from './components/select-list/select-list.component';\nimport { SingleSelectComponent } from './components/single-select/single-select.component';\nimport { SliderToggleComponent } from './components/slider-toggle/slider-toggle.component';\nimport { SortingDropdownTriggerComponent } from './components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nimport { SortingDropdownComponent } from './components/sorting-dropdown/sorting-dropdown.component';\nimport { ContenteditableDirective } from './directives/contenteditable.directive';\nimport { FormErrorDirective } from './directives/form-error.directive';\nimport { FormSubmitDirective } from './directives/form-submit.directive';\nimport { KeyboardActionSourceDirective } from './directives/keyboard-action-source.directive';\nimport { MarkInvalidDirective } from './directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from './directives/select-dropdown.directive';\nimport { SelectableItemDirective } from './directives/selectable-item.directive';\nimport { SelectedOptionDirective } from './directives/selected-option.directive';\nimport { FilterSelectionPipe } from './pipes/filter-selection.pipe';\nimport { FilterTermPipe } from './pipes/filter-term.pipe';\nimport { FormatNumberPipe } from './pipes/format-number.pipe';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerUiModule.forRoot(),\n InfiniteScrollModule,\n ClipboardModule,\n OverlayModule,\n LxCoreUiModule,\n LxDragAndDropListModule,\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CopyButtonComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectedOptionDirective,\n SelectDropdownDirective,\n SingleSelectComponent,\n SelectListComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective,\n ContenteditableDirective\n ],\n exports: [\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CopyButtonComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectDropdownDirective,\n SelectedOptionDirective,\n SelectListComponent,\n SingleSelectComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule,\n ContenteditableDirective\n ]\n})\nexport class LxFormsModule {}\n","export type SortingOrder = 'asc' | 'desc';\nexport class Sorting {\n key: string = '';\n order: SortingOrder = 'asc';\n}\n","import { formatDate } from '@angular/common';\nimport { AbstractControl } from '@angular/forms';\n\n/**\n * Due to limitations of the native html datepicker this validator is needed:\n * In the datepicker the min and max values only apply if the date is altered e.g. via scrolling.\n * It is still possible to manually input a value lower or higher than min and max value.\n */\nexport function ValidateDateInForeseeableFuture(control: AbstractControl) {\n // matches yyyy-mm-dd\n const dateRegex = /^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$/;\n\n if (control.value && dateRegex.test(control.value)) {\n const today = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n const maxDate = '2999-12-31';\n if (control.value < today || control.value > maxDate) {\n return {\n dateInForseeableFuture: {\n valid: false\n }\n };\n } else {\n return null;\n }\n }\n return null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { map, Observable, of } from 'rxjs';\n\nfunction stringIsInArray(array: string[], stringToFind: string, valueMapFunction?: (value: string) => string) {\n const valueToFind = valueMapFunction ? valueMapFunction(stringToFind).toLocaleLowerCase() : stringToFind.toLowerCase();\n return array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1;\n}\n\n/**\n * Validates that a string is not inside an array of strings\n */\nexport function ValidateStringNotInArray(\n array: string[],\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArray'\n): ValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return null;\n }\n if (stringIsInArray(array, control.value, valueMapFunction)) {\n return {\n [validatorName]: true\n };\n }\n return null;\n };\n}\n\nexport function ValidateStringNotInArrayAsync(\n array$: Observable<string[]>,\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArrayAsync'\n): AsyncValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return of(null);\n }\n return array$.pipe(map((array) => ValidateStringNotInArray(array, valueMapFunction, validatorName)(control)));\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<ModalCloseClickLocation | boolean>>('MODAL_CLOSE');\n\n/**\n * An enum to track how the modal was closed\n * Escape - Esc key press\n * CloseButton - top right close button (x)\n * OutsideClick - click outside the modal\n * Other - modal close with the trigger through closeModal$ subject\n */\nexport enum ModalCloseClickLocation {\n Escape = 'escape',\n CloseButton = 'closeButton',\n OutsideClick = 'outsideClick',\n CancelButton = 'cancelButton',\n Other = 'other'\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss'],\n standalone: true\n})\nexport class ModalFooterComponent {\n @Input() border: boolean = false;\n}\n","<div class=\"footerContainer\" [class.border]=\"border\">\n <ng-content></ng-content>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-header',\n templateUrl: 'modal-header.component.html',\n styleUrls: ['modal-header.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content></ng-content>\n <h1 *ngIf=\"title.length > 0\">{{ title }}</h1>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]',\n standalone: true\n})\nexport class ModalContentDirective {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE, ModalCloseClickLocation } from '../../modal.constants';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\n\n/**\n *\n * ATTENTION - SCROLLABLE DIALOG:\n * The <lx-modal> component when used as \"dialog\" is not designed to work with a\n * scrollable body (via \"overflow: auto | scroll\") in combination with dropdowns.\n * The overflow on the body will also clip the dropdowns, which is expected.\n *\n * Reasoning:\n * The contents within the dialog should be just a few elements which fit and\n * justify the usage of a dialog. If the content is larger than the dialog, and thus\n * requires scrolling, we should discuss whether to put it into a dialog at all\n * and rather think about putting the content on a separate route or\n * using the fullscreen version of the modal.\n *\n */\n@Component({\n selector: 'lx-modal',\n templateUrl: 'modal.component.html',\n styleUrls: ['modal.component.scss'],\n animations: [\n trigger('modal', [\n transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),\n transition(':leave', animate('0.15s', style({ opacity: 0 })))\n ])\n ],\n standalone: true,\n imports: [PortalModule, NgIf, NgTemplateOutlet, TranslateModule]\n})\nexport class ModalComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\n readonly NAME = 'ModalComponent';\n @Input() open: boolean = false;\n @Input() showCloseButton = true;\n @Input() showBackButton = false;\n /*\n * If true, then the content area scrolls vertically instead of expanding its height.\n * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.\n */\n @Input() verticalScroll = false;\n @Input() size: 'fullscreen' | 'dialog-large' | 'dialog' = 'fullscreen';\n @Input() minWidth: string = '600px'; // NB: Some modal implementations rely on this minWidth being 600px\n @Input() isFocusTrap: boolean = false;\n @Input() canModalBeClosed?: (closeLocation: ModalCloseClickLocation | boolean) => Promise<boolean>;\n @Output() close = new EventEmitter<ModalCloseClickLocation>();\n @Output() back = new EventEmitter<void>();\n\n @ContentChild(ModalHeaderComponent) header?: ModalHeaderComponent;\n @ContentChild(ModalFooterComponent) footer?: ModalFooterComponent;\n @ViewChild(CdkPortal, { static: true }) cdkPortal!: Portal<CdkPortal>;\n private overlayRef!: OverlayRef;\n private oldOverflow?: string;\n closeLocation = ModalCloseClickLocation;\n\n readonly destroyed$ = new Subject<void>();\n\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n @ContentChild(ModalContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n @HostListener('document:keydown.escape') onEscape() {\n if (this.open && this.showCloseButton) {\n this.closeModal(ModalCloseClickLocation.Escape);\n }\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<ModalCloseClickLocation | boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$\n ?.pipe(takeUntil(this.destroyed$))\n .subscribe((closeLocation: ModalCloseClickLocation | boolean) => this.closeModal(closeLocation));\n\n if (this.size === 'fullscreen') {\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n width: '100%',\n height: '100vh'\n });\n } else if (this.size === 'dialog-large') {\n const positionStrategy = this.overlay.position().global().top('4vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n positionStrategy,\n hasBackdrop: true,\n width: '90%',\n height: '90vh'\n });\n } else {\n // size 'dialog'\n const positionStrategy = this.overlay.position().global().top('8vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n minWidth: this.minWidth,\n positionStrategy,\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n\n if (this.size !== 'fullscreen') {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.closeModal(ModalCloseClickLocation.OutsideClick));\n }\n }\n\n ngOnChanges() {\n if (this.open && this.overlayRef && !this.overlayRef.hasAttached()) {\n this.openModal();\n }\n if (!this.open && this.overlayRef && this.overlayRef.hasAttached()) {\n this.closeModal(ModalCloseClickLocation.Other);\n }\n if (this.open && this.overlayRef && this.overlayRef.hasAttached() && this.isFocusTrap) {\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n }\n\n ngAfterViewInit() {\n if (this.open) {\n timer(0)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.openModal());\n }\n }\n\n openModal() {\n this.oldOverflow = document.documentElement.style.overflowY;\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', 'hidden');\n }\n\n this.overlayRef.attach(this.cdkPortal);\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n\n emitBack() {\n this.back.emit();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n async closeModal(closeLocation: ModalCloseClickLocation | boolean) {\n if (!this.canModalBeClosed || (await this.canModalBeClosed(closeLocation))) {\n this.open = false;\n this.overlayRef.detach();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n this.close.emit(typeof closeLocation === 'boolean' ? ModalCloseClickLocation.Other : closeLocation);\n }\n }\n\n private trapFocusInModal(hostElement: HTMLElement) {\n this.focusTrap.create(hostElement);\n }\n}\n","<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\"></ng-content>\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\"></ng-content>\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFooterComponent } from './components/modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from './components/modal-header/modal-header.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ModalContentDirective } from './directives/modal-content.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n PortalModule,\n OverlayModule,\n A11yModule,\n TranslateModule.forChild(),\n ModalComponent,\n ModalHeaderComponent,\n ModalFooterComponent,\n ModalContentDirective\n ],\n exports: [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective]\n})\nexport class LxModalModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n selector: '[lxPopoverContent]',\n standalone: true\n})\nexport class PopoverContentDirective {}\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopover, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { PopoverContentDirective } from '../../directives/popover-content.directive';\nimport { PopoverTriggerDirective } from '../../directives/popover-hover.directive';\n\n/**\n * HOW TO USE\n *\n * This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,\n * make sure to also check out the docs over there.\n *\n * As of today they are two trigger strategies to display a popover.\n * 1. Show on hovering the anchor and while hovering the popover body.\n * 2. Show on click and while hovering the popover body.\n *\n * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.\n *\n * Example:\n * <div lxPopoverHover\n * hoverAnchor\n * satPopoverAnchor\n * #anchor=\"hoverAnchor\"></div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\">\n * <p>Popover content</p>\n * </lx-popover>\n *\n * For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.\n * Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)\n * needs to fetch some data before opening it, we do not register a click EventListener in this directive,\n * but require the developer to implement that in the component, where the popover is used.\n *\n * Example:\n * <div lxPopoverClick\n * clickAnchor\n * satPopoverAnchor\n * #anchor=\"clickAnchor\"\n * (click)=\"popover.open()\">Click Me!</div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\"\n * #popover>\n * <p>Popover content</p>\n * </lx-popover>\n *\n * If this component is used with angularCompilerOptions strictTemplates=true,\n * satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.\n *\n * Example:\n * <div [satPopoverAnchor]=\"popover.satPopover\"></div>\n * <lx-popover #popover>\n * <p>Popover content</p>\n * </lx-popover>\n */\n@Component({\n selector: 'lx-popover',\n templateUrl: 'popover.component.html',\n styleUrls: ['popover.component.scss'],\n standalone: true,\n imports: [SatPopoverModule, NgClass, NgIf, NgTemplateOutlet]\n})\nexport class PopoverComponent implements OnChanges {\n @Input() trigger!: PopoverTriggerDirective;\n @Input() horizontalAlign!: SatPopoverHorizontalAlign;\n @Input() verticalAlign!: SatPopoverVerticalAlign;\n @Input() noMargin = false;\n @Input() allowOverflow = false;\n @Input() autoFocus = false;\n @Input() restoreFocus = true;\n\n /**\n * If you have a popover, that should usually be displayed above or below its anchor,\n * and this anchor is in a scrollable container, you should set this to true.\n * SatPopover will open this popover in the direction where there is enough space,\n * so its position might differ from the horizontalAlign and verticalAlign values.\n * In this case we rely on the SatPopover::_classList property to get the computed\n * position of the popover after opening.\n */\n @Input() adaptMarginsForViewportAlignChange = false;\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild(SatPopover, { static: true }) satPopover!: SatPopover;\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n @ContentChild(PopoverContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n marginClasses!: string;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n get isOpen() {\n return this._isOpen;\n }\n private _isOpen = false;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['horizontalAlign'] && changes['verticalAlign']) {\n this.marginClasses = this.getDefaultMarginClasses(this.horizontalAlign, this.verticalAlign);\n }\n }\n\n open() {\n this.satPopover.open();\n }\n\n close() {\n this.satPopover.close();\n }\n\n onOpen() {\n this._isOpen = true;\n this.opened.emit();\n }\n\n onAfterOpen() {\n if (this.adaptMarginsForViewportAlignChange) {\n this.marginClasses = this.getMarginClassesForClassList(this.satPopover._classList);\n }\n }\n\n onClose() {\n this._isOpen = false;\n this.closed.emit();\n }\n\n /**\n * SatPopover::_classList will contain a map of alignment CSS classes, once the popover was opened.\n * These alignment classes can be different from what you would expect from the horizontal- and verticalAlign inputs,\n * because there might not be enough space above the anchor to meet the verticalAlign='above' criteria,\n * so it will be displayed below the anchor instead.\n */\n private getMarginClassesForClassList(satPopoverClassList: { [className: string]: boolean }): string {\n if (this.noMargin) {\n return '';\n }\n\n if (satPopoverClassList['sat-popover-above']) {\n return this.marginClasses.includes('top') ? this.marginClasses : 'top';\n }\n\n if (satPopoverClassList['sat-popover-below']) {\n return this.marginClasses.includes('bottom') ? this.marginClasses : 'bottom';\n }\n\n if (satPopoverClassList['sat-popover-before']) {\n return this.marginClasses.includes('left') ? this.marginClasses : 'left';\n }\n\n if (satPopoverClassList['sat-popover-after']) {\n return this.marginClasses.includes('right') ? this.marginClasses : 'right';\n }\n\n if (satPopoverClassList['sat-popover-center']) {\n return '';\n }\n return '';\n }\n\n private getDefaultMarginClasses(horizontalAlign: SatPopoverHorizontalAlign, verticalAlign: SatPopoverVerticalAlign): string {\n if (this.noMargin) {\n return '';\n }\n\n if (horizontalAlign === 'after') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'right';\n } else if (verticalAlign === 'above') {\n return 'right top';\n } else if (verticalAlign === 'below') {\n return 'right bottom';\n }\n }\n\n if (horizontalAlign === 'before') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'left';\n } else if (verticalAlign === 'above') {\n return 'left top';\n } else if (verticalAlign === 'below') {\n return 'left bottom';\n }\n }\n\n if (horizontalAlign === 'center' || horizontalAlign === 'start' || horizontalAlign === 'end') {\n if (verticalAlign === 'above') {\n return 'top';\n } else if (verticalAlign === 'below') {\n return 'bottom';\n }\n }\n return '';\n }\n}\n","<sat-popover\n [anchor]=\"trigger.anchor\"\n [horizontalAlign]=\"horizontalAlign\"\n [verticalAlign]=\"verticalAlign\"\n [restoreFocus]=\"restoreFocus\"\n [lockAlignment]=\"true\"\n [autoFocus]=\"autoFocus\"\n openTransition=\"0ms\"\n closeTransition=\"0ms\"\n (opened)=\"onOpen()\"\n (afterOpen)=\"onAfterOpen()\"\n (closed)=\"onClose()\"\n>\n <div\n class=\"popoverContainer\"\n [ngClass]=\"marginClasses\"\n [class.overflowHidden]=\"!allowOverflow\"\n (mouseenter)=\"trigger.showPopover(true)\"\n (mouseleave)=\"trigger.closePopover(true)\"\n (keydown.escape)=\"$event.stopPropagation(); trigger.closePopover(true)\"\n >\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n </div>\n</sat-popover>\n<ng-template #implicitContent>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchor } from '@ncstate/sat-popover';\nimport { Observable, Subject, of } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../shared/observe';\nimport { PopoverTriggerDirective } from './popover-hover.directive';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'clickAnchor',\n selector: '[lxPopoverClick]',\n standalone: true\n})\nexport class PopoverClickDirective implements PopoverTriggerDirective, AfterViewInit, OnDestroy {\n @Input() lxPopoverPinned = false;\n @Observe('lxPopoverPinned') pinned$!: Observable<boolean>;\n\n private onPopoverShow = new Subject<void>();\n\n private onMouseLeave = new Subject<void>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchor) {}\n\n ngAfterViewInit() {\n this.onMouseLeave\n .pipe(\n switchMap(() => this.pinned$),\n filter((pinned) => !pinned),\n switchMap(() => of(null).pipe(delay(300), takeUntil(this.onPopoverShow))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.close());\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n showPopover() {\n this.onPopoverShow.next();\n }\n\n @HostListener('mouseleave')\n closePopover() {\n this.onMouseLeave.next();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchor } from '@ncstate/sat-popover';\nimport { Subject, of } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nexport interface PopoverTriggerDirective {\n anchor: SatPopoverAnchor;\n showPopover(skipDelay?: boolean): void;\n closePopover(skipDelay?: boolean): void;\n}\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'hoverAnchor',\n selector: '[lxPopoverHover]',\n standalone: true\n})\nexport class PopoverHoverDirective implements AfterViewInit, OnDestroy {\n /**\n * Amount of time to delay (ms) after hovering starts before\n * the popover opens.\n */\n @Input()\n get lxPopoverHover() {\n return this._lxPopoverHover;\n }\n set lxPopoverHover(val: unknown) {\n this._lxPopoverHover = coerceNumberProperty(val, 200);\n }\n private _lxPopoverHover!: number;\n\n /**\n * Relevant for tooltip style.\n */\n @Input()\n skipCloseDelay = false;\n\n /** Emits when the user's mouse enters the element. */\n private onMouseEnter = new Subject<{ skipDelay: boolean }>();\n\n /** Emits when the user's mouse leaves the element. */\n private onMouseLeave = new Subject<{ skipDelay: boolean }>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchor) {}\n\n ngAfterViewInit() {\n // Whenever the user hovers this host element, delay the configured\n // amount of time and open the popover. Terminate if the mouse leaves\n // the host element before the delay is complete.\n this.onMouseEnter\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : this._lxPopoverHover), takeUntil(this.onMouseLeave))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.open());\n\n // Whenever the user leaves this host element, delay the closing of the popover by the configured delay.\n // Abort closing if during this delay another mouseEnter event occurs, for example by the popover itself.\n this.onMouseLeave\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : 300), takeUntil(this.onMouseEnter))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n if (this.anchor.popover.isOpen()) {\n // This is the default case: the popover was shown, now we want to close it.\n this.anchor.popover.close();\n } else {\n // This can happen if we have delayed the opening of the popover, but the mouse left the anchor before\n // the popover was shown. In this case, this.anchor.popover.close() would not generate a closed event,\n // which is why we generate it manually here. This behavior supports cases where a \"dummy\" anchor is\n // dynamically created, like the Fact Sheet detail popover in Reporting or the relations diagram.\n this.anchor.popover.closed.emit();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n @HostListener('mouseenter')\n showPopover(skipDelay = false) {\n this.onMouseEnter.next({ skipDelay });\n }\n\n @HostListener('mouseleave')\n closePopover(skipDelay = this.skipCloseDelay) {\n this.onMouseLeave.next({ skipDelay });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SatPopoverModule } from '@ncstate/sat-popover';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { PopoverClickDirective } from './directives/popover-click.directive';\nimport { PopoverContentDirective } from './directives/popover-content.directive';\nimport { PopoverHoverDirective } from './directives/popover-hover.directive';\n\n@NgModule({\n imports: [CommonModule, SatPopoverModule, PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","/**\n * Key codes that we listen to for\n * user action on our lx-tab-group\n */\nexport enum LxTabGroupKeyCode {\n ArrowRight = 'ArrowRight',\n ArrowLeft = 'ArrowLeft',\n Home = 'Home',\n End = 'End'\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\nimport { Observable, switchMap } from 'rxjs';\nimport { BadgeComponent } from '../../../core-ui/components/badge/badge.component';\nimport { Observe } from '../../../shared/observe';\nimport { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule]\n})\nexport class TabComponent {\n /**\n * The icon input takes a font awesome selector\n * WARNING: Currently this component does not support using an icon together with a label or counter.\n */\n @Input() icon?: string;\n @Input() label: string = '';\n @Input() title?: string;\n /**\n * In some parts of the application, we are passing a plain string to the tabLink input, whereas in\n * most parts, the input is passed as an array. The RouterLink directive also accepts both types,\n * therefore we are using type of the input as string | any[].\n */\n @Input() tabLink?: string | any[];\n @Input() counter?: number;\n @Input() routerLinkActiveOptions: { exact: boolean } = { exact: true };\n @Input() counterBadgeSize: 'default' | 'small' = 'default';\n @Input() noMargin: boolean = false;\n @Input() noLeftMarginForFirstTab: boolean = false;\n @Input() background: 'white' | 'gray' = 'white';\n @Input() disabled: boolean = false;\n\n @Output() switch = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n tabId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild('tabElement') tabElement?: ElementRef<HTMLElement>;\n\n @Observe('routerLinkActive') routerLinkActive$!: Observable<RouterLinkActive>;\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\n /**\n * Used by the lx-tab-group to be notified when a lx-tab that is a link\n * is set to active by the Angular router.\n */\n routerLinkActiveChange$: Observable<boolean>;\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.cd.markForCheck();\n }\n get isActive() {\n if (this.routerLinkActive) {\n return this.routerLinkActive.isActive;\n }\n return this._isActive;\n }\n private _isActive = false;\n\n constructor(\n private cd: ChangeDetectorRef,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.tabId = uniqueId('tab');\n this.routerLinkActiveChange$ = this.routerLinkActive$.pipe(switchMap((routerLinkActive) => routerLinkActive.isActiveChange));\n }\n\n select(): void {\n this.switch.emit();\n }\n\n setFocus(): void {\n this.tabElement?.nativeElement?.focus();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (Object.values<string>(LxTabGroupKeyCode).includes(event.code)) {\n // Send this KeyDown event up to our parent to be handled there\n this.keyDownAction.emit(event);\n return;\n }\n\n const isKeyCodeToSelectFocusedTab = event.code === 'Enter' || event.code === 'Space';\n if (!isKeyCodeToSelectFocusedTab) {\n return;\n }\n\n /**\n * We are preventing the default browser behavior when the `SPACE` key is pressed, in which\n * case the browser would scroll down the page.\n */\n event.preventDefault();\n if (this.tabLink) {\n const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;\n this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {\n this.select();\n });\n } else {\n this.select();\n }\n }\n}\n","<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n","import { PortalModule } from '@angular/cdk/portal';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { TabComponent } from '../tab/tab.component';\nimport { LxTabGroupKeyCode } from './tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab-group',\n templateUrl: 'tab-group.component.html',\n styleUrls: ['tab-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [PortalModule]\n})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n /**\n * The tab whose content should be displayed.\n */\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n @Observe('tabsQueryList') tabsQueryList$!: Observable<QueryList<TabComponent>>;\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\n @ViewChild('tabListElement') tabListElement?: ElementRef<HTMLElement>;\n\n /**\n * The tab that is currently focused via keyboard.\n */\n focusedIndex: number = 0;\n\n get tabIds(): string[] {\n return this.tabs.map((t) => t.tabId);\n }\n private get tabs(): TabComponent[] {\n return this.tabsQueryList?.toArray() || [];\n }\n\n get activeTabPortal() {\n return this.tabs[this.selectedIndex]?.content;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private cd: ChangeDetectorRef) {\n this.listenToFirstTabSelectByAngularRouterForTabLinks().subscribe((tab) => {\n // synchonize the focusedIndex and selectedIndex state with the tab that is active through the current route.\n this.switchTo(tab);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const tab = this.tabs[this.selectedIndex];\n if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {\n this.switchTo(tab);\n }\n }\n\n ngAfterContentInit() {\n if (this.tabs[0]) {\n this.tabs[0].noLeftMarginForFirstTab = true;\n }\n const tab = this.tabs[this.selectedIndex];\n if (tab && !tab.tabLink) {\n this.switchTo(tab);\n }\n\n const listenToTabsSwitch = (tabs: TabComponent[]) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => listenToTabsSwitch(this.tabs)),\n takeUntil(this.destroyed$)\n )\n .subscribe((tab) => {\n this.switchTo(tab);\n });\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => merge(...this.tabs.map((tab) => tab.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleKeyDown(event);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n onFocusOut(event: any) {\n if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {\n // resync focused index on selected index when leaving tabs\n this.focusedIndex = this.selectedIndex;\n }\n }\n\n switchTo(tab: TabComponent) {\n this.tabsQueryList?.forEach((t, index) => {\n t.isActive = t === tab;\n if (t.isActive) {\n this.selectedIndex = index;\n this.focusedIndex = index;\n this.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case LxTabGroupKeyCode.ArrowRight:\n const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;\n this.focusTab(newTabIndex);\n break;\n case LxTabGroupKeyCode.ArrowLeft:\n const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;\n this.focusTab(previousTabIndex);\n break;\n case LxTabGroupKeyCode.Home:\n event.preventDefault();\n this.focusTab(0);\n break;\n case LxTabGroupKeyCode.End:\n event.preventDefault();\n this.focusTab(this.tabs.length - 1);\n break;\n }\n }\n\n private focusTab(tabIndex: number): void {\n const tab = this.tabs[tabIndex];\n if (!tab) {\n return;\n }\n\n tab.setFocus();\n this.focusedIndex = tabIndex;\n }\n\n private listenToFirstTabSelectByAngularRouterForTabLinks() {\n return this.tabsQueryList$.pipe(\n switchMap(() => {\n const tabLinks = this.tabs.filter((tab) => !!tab.tabLink);\n return merge(...tabLinks.map((tab) => tab.routerLinkActiveChange$.pipe(map(() => tab))));\n }),\n first(),\n takeUntil(this.destroyed$) // added in addition to first() here since for tab groups without links no single value will ever be emit.\n );\n }\n}\n","<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content></ng-content>\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\"></ng-template>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { LxCoreUiModule } from '../core-ui/core-ui.module';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\n\n@NgModule({\n imports: [PortalModule, CommonModule, LxCoreUiModule, RouterModule, TabGroupComponent, TabComponent],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.constants';\nexport * from './lib/core-ui/core-ui.module';\n\n// Annotations\nexport * from './lib/core-ui/annotations/required';\n\n// Pipes\nexport * from './lib/core-ui/pipes/br.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.pipe';\nexport * from './lib/core-ui/pipes/custom-date.pipe';\nexport * from './lib/core-ui/pipes/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/lx-is-uuid.pipe';\nexport * from './lib/core-ui/pipes/lx-time-ago.pipe';\nexport * from './lib/core-ui/pipes/lx-translate.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.pipe';\nexport * from './lib/core-ui/pipes/sort.pipe';\nexport * from './lib/core-ui/pipes/translation-after.pipe';\nexport * from './lib/core-ui/pipes/translation-before.pipe';\nexport * from './lib/core-ui/pipes/translation-between.pipe';\nexport * from './lib/core-ui/pipes/unescape-curly-braces.pipe';\n\n// Directives\nexport * from './lib/core-ui/directives/after-view-init.directive';\nexport * from './lib/core-ui/directives/autoclose.directive';\nexport * from './lib/core-ui/directives/autofocus.directive';\n\n// Components\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/banner/banner.component';\nexport * from './lib/core-ui/components/button-group/button-group.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/card/card.component';\nexport * from './lib/core-ui/components/collapsible/collapsible.component';\nexport * from './lib/core-ui/components/colored-label/colored-label.component';\nexport * from './lib/core-ui/components/ellipsis/ellipsis.component';\nexport * from './lib/core-ui/components/file-download-button/file-download-button.component';\nexport * from './lib/core-ui/components/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\n\n// Tooltip\nexport * from './lib/core-ui/tooltip/tooltip-position.interface';\nexport * from './lib/core-ui/tooltip/tooltip.component';\nexport * from './lib/core-ui/tooltip/tooltip.directive';\n\n// Linkify\nexport * from './lib/core-ui/linkify/linkify.pipe';\nexport * from './lib/core-ui/linkify/unlinkify.pipe';\n\n// Functions\nexport * from './lib/core-ui/functions/core-css.helpers';\nexport * from './lib/core-ui/functions/highlight-text.function';\n\n// Services\nexport * from './lib/core-ui/services/resize-observer.service';\nexport * from './lib/core-ui/directives/autoclose-group.service';\n\n/*----------------- forms-ui -----------------*/\n\nexport * from './lib/forms-ui/forms-ui.module';\n\n// Components\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/basic-dropdown/basic-dropdown.component';\nexport * from './lib/forms-ui/components/breadcrumb/breadcrumb.component';\nexport * from './lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component';\nexport * from './lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/copy-button/copy-button.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/date-input/date-input.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component';\nexport * from './lib/forms-ui/components/error-message/error-message.component';\nexport * from './lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component';\nexport * from './lib/forms-ui/components/form-error/form-error.component';\nexport * from './lib/forms-ui/components/icon/icon.component';\nexport * from './lib/forms-ui/components/multi-select/multi-select.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/option/option.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/picker/picker.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.component';\nexport * from './lib/forms-ui/components/select-list/select-list.component';\nexport * from './lib/forms-ui/components/single-select/single-select.component';\nexport * from './lib/forms-ui/components/slider-toggle/slider-toggle.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component';\n\n// Directives\nexport * from './lib/forms-ui/components/keyboard-select.directive';\nexport * from './lib/forms-ui/components/picker/picker-trigger.directive';\nexport * from './lib/forms-ui/directives/contenteditable.directive';\nexport * from './lib/forms-ui/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/directives/keyboard-action-source.directive';\nexport * from './lib/forms-ui/directives/mark-invalid.directive';\nexport * from './lib/forms-ui/directives/select-dropdown.directive';\nexport * from './lib/forms-ui/directives/selectable-item.directive';\nexport * from './lib/forms-ui/directives/selected-option.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/single-select-padding.interface';\nexport * from './lib/forms-ui/models/sorting.interface';\n\n// Helpers\nexport * from './lib/forms-ui/helpers/key-codes.constants';\n\n// Pipes\nexport * from './lib/forms-ui/pipes/filter-selection.pipe';\nexport * from './lib/forms-ui/pipes/filter-term.pipe';\nexport * from './lib/forms-ui/pipes/format-number.pipe';\n\n// Validators\nexport * from './lib/forms-ui/validators/date-in-foreseeable-future.validator';\nexport * from './lib/forms-ui/validators/string-not-in-array.validator';\n\n// Modules\nexport { LxDragAndDropListModule } from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module';\n\n/*----------------- modal-ui -----------------*/\n\nexport * from './lib/modal-ui/modal.constants';\nexport * from './lib/modal-ui/modal.module';\n\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal/modal.component';\n\nexport * from './lib/modal-ui/directives/modal-content.directive';\n\n/*----------------- popover-ui -----------------*/\n\nexport * from './lib/popover-ui/popover-ui.module';\n\nexport * from './lib/popover-ui/components/popover/popover.component';\n\nexport * from './lib/popover-ui/directives/popover-click.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\nexport * from './lib/popover-ui/directives/popover-hover.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/tab-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ResizeObserverService","i2","i1","i1.AutocloseGroupService","isEqual","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","_toString","_isNaN","format","fm","i1.DatePickerInnerComponent","i1.DatepickerConfig","observableFromEvent","_filter","i2.FormSubmitDirective","filter","map","i4","uniqueId","switchMap"],"mappings":"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"}