@leanix/components 0.3.91 → 0.3.93

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/components/badge/badge.component.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.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/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/directives/html.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/core-ui.constants.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/tooltip/tooltip.module.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/annotations/required.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/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/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-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/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/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/directives/mark-invalid.directive.ts","../../../../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/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.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/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/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/modal.constants.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/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 { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-badge',\n templateUrl: 'badge.component.html',\n styleUrls: ['badge.component.scss']\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 { 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})\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})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\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})\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})\nexport class CardComponent {\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content></ng-content>\n","import { 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})\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 { 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})\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})\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(private overlayPositionBuilder: OverlayPositionBuilder, private elementRef: ElementRef, private overlay: Overlay) {}\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 { ChangeDetectionStrategy, Component, Input } from '@angular/core';\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})\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 {\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';\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})\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 { 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})\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})\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 {\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})\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(private elmentRef: ElementRef<HTMLElement>, private changeDetection: ChangeDetectorRef) {}\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})\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({ selector: '[lxAfterViewInit]' })\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()\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({ selector: '[lxAutoclose]' })\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(private elementRef: ElementRef, private groupService: AutocloseGroupService) {}\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({ selector: '[lxAutofocus]' })\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private ngZone: NgZone) {}\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 { Directive, ElementRef, Input, OnChanges, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Sanitizes the string assigned to [lxHtml] and sets it as the element's innterHtml\n * routerLink attributes on anchors will automatically be converted to click handlers.\n */\n@Directive({ selector: '[lxHtml]' })\nexport class HtmlDirective implements OnChanges {\n @Input() lxHtml: string | null | undefined = '';\n\n constructor(private elementRef: ElementRef<HTMLElement>, private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): any {\n if ('lxHtml' in changes) {\n const html = this.sanitizer.sanitize(SecurityContext.HTML, this.lxHtml ?? '');\n this.elementRef.nativeElement.innerHTML = html || '';\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({ name: 'lxLinkify' })\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): string | undefined | null {\n if (text && typeof text === 'string') {\n const escapedText = this.escapeHtmlInUserProvidedString(text);\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escapedText);\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({ name: 'lxUnlinkify' })\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})\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})\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 { 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 { 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})\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 { sanitize } from 'dompurify';\n\n@Pipe({ name: 'lxHighlightRange' })\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 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 { sanitize } 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({ name: 'lxHighlightTerm' })\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 ? 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})\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({ name: 'lxTimeAgo', pure: true })\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 _ from 'lodash';\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})\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({ name: 'lxMarkdown' })\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({ name: 'lxNbsp' })\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({ name: 'lxSort' })\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 _ from 'lodash';\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})\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})\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 _ from 'lodash';\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})\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})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [TooltipDirective, TooltipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [TooltipDirective]\n})\nexport class LxTooltipModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BadgeComponent } from './components/badge/badge.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 { 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 { AutocloseGroupService } from './directives/autoclose-group.service';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { HtmlDirective } from './directives/html.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 { LxTooltipModule } from './tooltip/tooltip.module';\n\n@NgModule({\n declarations: [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n HtmlDirective,\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 TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n imports: [CommonModule, LxTooltipModule],\n exports: [\n LxTooltipModule,\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n HtmlDirective,\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 TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n providers: [LxTimeAgo, AutocloseGroupService]\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","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\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})\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 @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","<div [class.boldLabel]=\"labelFontWeight === 'bold'\" [lxHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n<div class=\"optionDescription\" [style.font-style]=\"descriptionFontStyle\">\n {{ description }}\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})\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, 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 @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 { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\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 changeDetection: ChangeDetectionStrategy.OnPush\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\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\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 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","<ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\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 >\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 >\n {{ 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 >\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 >\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","// 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;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } 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, ENTER, ESCAPE, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]'\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 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","import { 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})\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 { Component, ElementRef, EventEmitter, forwardRef, HostListener, Inject, Input, Optional, Output } from '@angular/core';\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})\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\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\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\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 }\n}\n","<li\n class=\"option\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\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, 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})\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 { 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 { 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})\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","// 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 { 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})\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 [lxHtml]=\"currency$ | async\"></span>\n","import {\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, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\ntype 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})\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\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 [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\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 {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { DateFormatter, DatePickerComponent } from 'ngx-bootstrap/datepicker';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\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})\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\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 <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\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 <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\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 <ng-container *ngTemplateOutlet=\"dateInput\"></ng-container>\n <ng-container *ngIf=\"showDatepicker\">\n <ng-container *ngTemplateOutlet=\"datePicker\"></ng-container>\n </ng-container>\n </span>\n </div>\n</ng-template>\n\n<ng-template #dateInput>\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 (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</ng-template>\n\n<ng-template #datePicker>\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","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\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})\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})\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})\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 { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\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 { 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';\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})\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 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 declarations: [KeyboardSortableItemDirective, KeyboardSortableListDirective, DragAndDropListComponent, DragAndDropListItemComponent],\n imports: [CommonModule, DragDropModule, LxCoreUiModule, TranslateModule.forChild()],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/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})\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 { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\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})\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.controls[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})\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})\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})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\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 } 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\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\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, 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})\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 { 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})\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(private element: ElementRef<HTMLElement>, private renderer: Renderer2) {}\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","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { fromEvent as observableFromEvent, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\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';\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})\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 addItemToSelection(option: any) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\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 { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n readonly NAME = 'OptionGroupDropdownComponent';\n\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\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\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","<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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList\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 { 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})\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\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.changeDetection.markForCheck();\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\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 readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\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 )\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 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 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.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","<div (click)=\"open = !open\" class=\"triggerContainer\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ul\n *ngIf=\"open\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n>\n <ng-content></ng-content>\n</ul>\n","import {\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 { 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})\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 {\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';\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})\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(private cdRef: ChangeDetectorRef, private translateService: TranslateService) {}\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 } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]'\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click');\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 {\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 { 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})\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(private dir: Directionality, private cdRef: ChangeDetectorRef) {}\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 { 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})\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 {\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 { 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})\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 { 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})\nexport class SelectedOptionDirective {}\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 {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { fromEvent, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\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})\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\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 if (eventSet.event.keyCode !== 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 && !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 [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 && 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 { 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})\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';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss']\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\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})\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","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})\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';\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})\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({ name: 'lxFilterBySelection' })\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({ name: 'lxFilterByTerm' })\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 [lxHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber'\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 { 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 { DatepickerModule } from 'ngx-bootstrap/datepicker';\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 { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.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 { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.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 { 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 { 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 declarations: [\n BasicDropdownComponent,\n BasicDropdownItemComponent,\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 SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerModule,\n InfiniteScrollModule,\n OverlayModule,\n LxCoreUiModule,\n LxDragAndDropListModule\n ],\n exports: [\n BasicDropdownComponent,\n BasicDropdownItemComponent,\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 SingleSelectComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule\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, ValidatorFn } from '@angular/forms';\n\n/**\n * Validates that a string is not inside an array of strings\n */\nexport function ValidateStringNotInArray(array: string[], valueMapFunction?: (value: string) => string): ValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return null;\n }\n const valueToFind = valueMapFunction ? valueMapFunction(control.value).toLocaleLowerCase() : control.value.toLowerCase();\n if (array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1) {\n return {\n stringNotInArray: true\n };\n }\n return null;\n };\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss']\n})\nexport class ModalFooterComponent {}\n","<div class=\"footerContainer\">\n <ng-content></ng-content>\n</div>\n","import { 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})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public subtitle: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.withSubtitle]=\"subtitle.length > 0\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content></ng-content>\n <h1>{{ title }}</h1>\n <h2 *ngIf=\"subtitle.length > 0\">{{ subtitle }}</h2>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]'\n})\nexport class ModalContentDirective {}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<void>>('MODAL_CLOSE');\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 } from '@angular/cdk/portal';\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 { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE } 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})\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() isFocusTrap: boolean = false;\n @Input() canModalBeClosed?: () => Promise<boolean>;\n @Output() close = new EventEmitter<void>();\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\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 this.closeModal();\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$?.pipe(takeUntil(this.destroyed$)).subscribe(() => this.closeModal());\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: '600px', // NB: Some modal implementations rely on this minWidth being 600px\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());\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();\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() {\n if (!this.canModalBeClosed || (await this.canModalBeClosed())) {\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();\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()\"\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\">\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: [CommonModule, PortalModule, OverlayModule, A11yModule, TranslateModule.forChild()],\n declarations: [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective],\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})\nexport class PopoverContentDirective {}\n","import { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopover, SatPopoverHorizontalAlign, 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})\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, of, Subject } 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})\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 { of, Subject } 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})\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 declarations: [PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n imports: [CommonModule, SatPopoverModule],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\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 @Input() tabLink?: string;\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\n tabPanelId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\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(private cd: ChangeDetectorRef) {\n this.tabPanelId = uniqueId('panelId');\n }\n}\n","<li\n class=\"tab\"\n [attr.tabindex]=\"isActive || disabled || tabLink ? '-1' : '0'\"\n [attr.aria-selected]=\"isActive\"\n [attr.aria-controls]=\"tabPanelId\"\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 role=\"tab\"\n (keyup.enter)=\"switch.emit()\"\n (click)=\"switch.emit()\"\n>\n <a *ngIf=\"tabLink; else portalTab\" [routerLink]=\"tabLink\" routerLinkActive [routerLinkActiveOptions]=\"routerLinkActiveOptions\">\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\n *ngIf=\"counter\"\n [size]=\"counterBadgeSize\"\n class=\"lx-margin-left\"\n [content]=\"counter\"\n [color]=\"isActive ? 'darkgray' : 'gray'\"\n ></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\" [attr.id]=\"tabPanelId\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { TabComponent } from '../tab/tab.component';\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})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\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\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) {\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\n ngOnDestroy() {\n this.destroyed$.next();\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.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n}\n","<ul class=\"tabs\" role=\"tablist\" [class.centered]=\"isCentered\">\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 declarations: [TabGroupComponent, TabComponent],\n imports: [PortalModule, CommonModule, LxCoreUiModule, RouterModule],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.module';\nexport * from './lib/core-ui/core-ui.constants';\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/custom-date.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/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.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/sort.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.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';\nexport * from './lib/core-ui/directives/html.directive';\n\n// Components\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/button-group/button-group.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/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.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';\nexport * from './lib/core-ui/tooltip/tooltip.module';\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';\n\n// Services\nexport * from './lib/core-ui/services/resize-observer.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/basic-dropdown.component';\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.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/error-message/error-message.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/option.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.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/picker/picker.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.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/sorting-dropdown.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/date-input/date-input.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/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/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/sorting.interface';\nexport * from './lib/forms-ui/models/single-select-padding.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.module';\nexport * from './lib/modal-ui/modal.constants';\n\nexport * from './lib/modal-ui/components/modal/modal.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.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-hover.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/tab-ui.module';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.TinySpinnerComponent","i2.ButtonComponent","i1","i2.TooltipDirective","i1.ResizeObserverService","i2","i3","i4.ButtonComponent","i1.AutocloseGroupService","i1.HtmlDirective","i2.HighlightTermPipe","i3.BadgeComponent","i4.SpinnerComponent","i5.SelectableItemDirective","i6","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","i2.AutocloseDirective","i3.CurrencySymbolComponent","_toString","_isNaN","i4","i5.AutofocusDirective","i6.CustomDatePipe","i3.KeyboardSortableItemDirective","i4.KeyboardSortableListDirective","i5.DragAndDropListItemComponent","observableFromEvent","_filter","i3.MarkInvalidDirective","i4.ResponsiveInputComponent","i5.BasicDropdownItemComponent","i6.SelectableItemDirective","i7","i1.AutocloseDirective","i3.IconComponent","i3.AutocloseDirective","i2.PillItemComponent","i3.SelectableItemDirective","i1.ButtonComponent","i2.KeyboardActionSourceDirective","i3.OptionComponent","i4.OptionGroupComponent","i5.OptionsDropdownComponent","i6.SortingDropdownTriggerComponent","i2.FormSubmitDirective","filter","i5"],"mappings":"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"}
1
+ {"version":3,"file":"leanix-components.mjs","sources":["../../../../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/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/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/directives/html.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/core-ui.constants.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/tooltip/tooltip.module.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/annotations/required.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/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/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-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/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/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/directives/mark-invalid.directive.ts","../../../../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/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.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/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/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/modal.constants.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/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 { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-badge',\n templateUrl: 'badge.component.html',\n styleUrls: ['badge.component.scss']\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 { 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})\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})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\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})\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})\nexport class CardComponent {\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content></ng-content>\n","import { 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})\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 { 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})\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})\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(private overlayPositionBuilder: OverlayPositionBuilder, private elementRef: ElementRef, private overlay: Overlay) {}\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 { ChangeDetectionStrategy, Component, Input } from '@angular/core';\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})\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 {\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';\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})\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 { 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})\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})\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 {\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})\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(private elmentRef: ElementRef<HTMLElement>, private changeDetection: ChangeDetectorRef) {}\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})\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({ selector: '[lxAfterViewInit]' })\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()\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({ selector: '[lxAutoclose]' })\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(private elementRef: ElementRef, private groupService: AutocloseGroupService) {}\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({ selector: '[lxAutofocus]' })\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private ngZone: NgZone) {}\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 { Directive, ElementRef, Input, OnChanges, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n/**\n * Sanitizes the string assigned to [lxHtml] and sets it as the element's innterHtml\n * routerLink attributes on anchors will automatically be converted to click handlers.\n */\n@Directive({ selector: '[lxHtml]' })\nexport class HtmlDirective implements OnChanges {\n @Input() lxHtml: string | null | undefined = '';\n\n constructor(private elementRef: ElementRef<HTMLElement>, private sanitizer: DomSanitizer) {}\n\n ngOnChanges(changes: SimpleChanges): any {\n if ('lxHtml' in changes) {\n const html = this.sanitizer.sanitize(SecurityContext.HTML, this.lxHtml ?? '');\n this.elementRef.nativeElement.innerHTML = html || '';\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({ name: 'lxLinkify' })\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): string | undefined | null {\n if (text && typeof text === 'string') {\n const escapedText = this.escapeHtmlInUserProvidedString(text);\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escapedText);\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({ name: 'lxUnlinkify' })\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})\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})\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 { 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 { 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})\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 { sanitize } from 'dompurify';\n\n@Pipe({ name: 'lxHighlightRange' })\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 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 { sanitize } 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({ name: 'lxHighlightTerm' })\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 ? 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})\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({ name: 'lxTimeAgo', pure: true })\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 _ from 'lodash';\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})\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({ name: 'lxMarkdown' })\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({ name: 'lxNbsp' })\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({ name: 'lxSort' })\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 _ from 'lodash';\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})\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})\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 _ from 'lodash';\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})\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})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TooltipComponent } from './tooltip.component';\nimport { TooltipDirective } from './tooltip.directive';\n\n@NgModule({\n declarations: [TooltipDirective, TooltipComponent],\n imports: [CommonModule, OverlayModule],\n exports: [TooltipDirective]\n})\nexport class LxTooltipModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { BadgeComponent } from './components/badge/badge.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 { 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 { AutocloseGroupService } from './directives/autoclose-group.service';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { HtmlDirective } from './directives/html.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 { LxTooltipModule } from './tooltip/tooltip.module';\n\n@NgModule({\n declarations: [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n HtmlDirective,\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 TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n imports: [CommonModule, LxTooltipModule],\n exports: [\n LxTooltipModule,\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n ColoredLabelComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n HtmlDirective,\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 TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe\n ],\n providers: [LxTimeAgo, AutocloseGroupService]\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","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\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})\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 @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","<div [class.boldLabel]=\"labelFontWeight === 'bold'\" [lxHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n<div class=\"optionDescription\" [style.font-style]=\"descriptionFontStyle\">\n {{ description }}\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})\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, 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 @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 { AfterViewInit, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\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 changeDetection: ChangeDetectionStrategy.OnPush\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\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\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 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","<ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\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 >\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 >\n {{ 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 >\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 >\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","// 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;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } 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, ENTER, ESCAPE, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]'\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 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","import { 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})\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 { Component, ElementRef, EventEmitter, forwardRef, HostListener, Inject, Input, Optional, Output } from '@angular/core';\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})\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\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\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\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 }\n}\n","<li\n class=\"option\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\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, 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})\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 { 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 { 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})\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","// 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 { 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})\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 [lxHtml]=\"currency$ | async\"></span>\n","import {\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, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { fromEvent, Observable, ReplaySubject, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\ntype 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})\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\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 [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\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 {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { DateFormatter, DatePickerComponent } from 'ngx-bootstrap/datepicker';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\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})\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\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 (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 [(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 {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\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})\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})\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})\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 { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\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 { 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';\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})\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 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 declarations: [KeyboardSortableItemDirective, KeyboardSortableListDirective, DragAndDropListComponent, DragAndDropListItemComponent],\n imports: [CommonModule, DragDropModule, LxCoreUiModule, TranslateModule.forChild()],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input } from '@angular/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})\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 { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\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})\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.controls[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})\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})\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})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\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 } 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\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\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, 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})\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 { 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})\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(private element: ElementRef<HTMLElement>, private renderer: Renderer2) {}\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","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { fromEvent as observableFromEvent, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\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';\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})\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 addItemToSelection(option: any) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.selectionChange.emit([...this.selection]);\n this.propagateChange([...this.selection]);\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 { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\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 changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n readonly NAME = 'OptionGroupDropdownComponent';\n\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\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\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","<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","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n OnDestroy,\n QueryList\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 { 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})\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\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.changeDetection.markForCheck();\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\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 readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\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 )\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 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 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.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","<div (click)=\"open = !open\" class=\"triggerContainer\">\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</div>\n<ul\n *ngIf=\"open\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n>\n <ng-content></ng-content>\n</ul>\n","import {\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 { 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})\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 {\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';\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})\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(private cdRef: ChangeDetectorRef, private translateService: TranslateService) {}\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 } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]'\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click');\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 {\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 { 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})\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(private dir: Directionality, private cdRef: ChangeDetectorRef) {}\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 { 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})\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 {\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 { 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})\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 { 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})\nexport class SelectedOptionDirective {}\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 {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { fromEvent, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\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})\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\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 if (eventSet.event.keyCode !== 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 && !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 [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 && 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 { 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})\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';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss']\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 { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\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})\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","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})\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';\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})\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({ name: 'lxFilterBySelection' })\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({ name: 'lxFilterByTerm' })\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 [lxHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber'\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 { 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 { DatepickerModule } from 'ngx-bootstrap/datepicker';\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 { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.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 { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.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 { 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 { 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 declarations: [\n BasicDropdownComponent,\n BasicDropdownItemComponent,\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 SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerModule,\n InfiniteScrollModule,\n OverlayModule,\n LxCoreUiModule,\n LxDragAndDropListModule\n ],\n exports: [\n BasicDropdownComponent,\n BasicDropdownItemComponent,\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 SingleSelectComponent,\n SliderToggleComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule\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 { Component } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss']\n})\nexport class ModalFooterComponent {}\n","<div class=\"footerContainer\">\n <ng-content></ng-content>\n</div>\n","import { 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})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public subtitle: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.withSubtitle]=\"subtitle.length > 0\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content></ng-content>\n <h1>{{ title }}</h1>\n <h2 *ngIf=\"subtitle.length > 0\">{{ subtitle }}</h2>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]'\n})\nexport class ModalContentDirective {}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<void>>('MODAL_CLOSE');\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 } from '@angular/cdk/portal';\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 { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE } 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})\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() isFocusTrap: boolean = false;\n @Input() canModalBeClosed?: () => Promise<boolean>;\n @Output() close = new EventEmitter<void>();\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\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 this.closeModal();\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$?.pipe(takeUntil(this.destroyed$)).subscribe(() => this.closeModal());\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: '600px', // NB: Some modal implementations rely on this minWidth being 600px\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());\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();\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() {\n if (!this.canModalBeClosed || (await this.canModalBeClosed())) {\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();\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()\"\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\">\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: [CommonModule, PortalModule, OverlayModule, A11yModule, TranslateModule.forChild()],\n declarations: [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective],\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})\nexport class PopoverContentDirective {}\n","import { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopover, SatPopoverHorizontalAlign, 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})\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, of, Subject } 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})\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 { of, Subject } 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})\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 declarations: [PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n imports: [CommonModule, SatPopoverModule],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\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 @Input() tabLink?: string;\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\n tabPanelId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\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(private cd: ChangeDetectorRef) {\n this.tabPanelId = uniqueId('panelId');\n }\n}\n","<li\n class=\"tab\"\n [attr.tabindex]=\"isActive || disabled || tabLink ? '-1' : '0'\"\n [attr.aria-selected]=\"isActive\"\n [attr.aria-controls]=\"tabPanelId\"\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 role=\"tab\"\n (keyup.enter)=\"switch.emit()\"\n (click)=\"switch.emit()\"\n>\n <a *ngIf=\"tabLink; else portalTab\" [routerLink]=\"tabLink\" routerLinkActive [routerLinkActiveOptions]=\"routerLinkActiveOptions\">\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\n *ngIf=\"counter\"\n [size]=\"counterBadgeSize\"\n class=\"lx-margin-left\"\n [content]=\"counter\"\n [color]=\"isActive ? 'darkgray' : 'gray'\"\n ></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\" [attr.id]=\"tabPanelId\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { TabComponent } from '../tab/tab.component';\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})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\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\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) {\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\n ngOnDestroy() {\n this.destroyed$.next();\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.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n}\n","<ul class=\"tabs\" role=\"tablist\" [class.centered]=\"isCentered\">\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 declarations: [TabGroupComponent, TabComponent],\n imports: [PortalModule, CommonModule, LxCoreUiModule, RouterModule],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.module';\nexport * from './lib/core-ui/core-ui.constants';\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/custom-date.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/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.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/sort.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.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';\nexport * from './lib/core-ui/directives/html.directive';\n\n// Components\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/button-group/button-group.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/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.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';\nexport * from './lib/core-ui/tooltip/tooltip.module';\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';\n\n// Services\nexport * from './lib/core-ui/services/resize-observer.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/basic-dropdown.component';\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.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/error-message/error-message.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/option.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.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/picker/picker.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.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/sorting-dropdown.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/date-input/date-input.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/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/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/sorting.interface';\nexport * from './lib/forms-ui/models/single-select-padding.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.module';\nexport * from './lib/modal-ui/modal.constants';\n\nexport * from './lib/modal-ui/components/modal/modal.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.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-hover.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/tab-ui.module';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.TinySpinnerComponent","i2.ButtonComponent","i1","i2.TooltipDirective","i1.ResizeObserverService","i2","i3","i4.ButtonComponent","i1.AutocloseGroupService","i1.HtmlDirective","i2.HighlightTermPipe","i3.BadgeComponent","i4.SpinnerComponent","i5.SelectableItemDirective","i6","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","i2.AutocloseDirective","i3.CurrencySymbolComponent","_toString","_isNaN","i4","i5.AutofocusDirective","i6.CustomDatePipe","i3.KeyboardSortableItemDirective","i4.KeyboardSortableListDirective","i5.DragAndDropListItemComponent","observableFromEvent","_filter","i3.MarkInvalidDirective","i4.ResponsiveInputComponent","i5.BasicDropdownItemComponent","i6.SelectableItemDirective","i7","i1.AutocloseDirective","i3.IconComponent","i3.AutocloseDirective","i2.PillItemComponent","i3.SelectableItemDirective","i1.ButtonComponent","i2.KeyboardActionSourceDirective","i3.OptionComponent","i4.OptionGroupComponent","i5.OptionsDropdownComponent","i6.SortingDropdownTriggerComponent","i2.FormSubmitDirective","filter","map","i5"],"mappings":"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"}