@festo-ui/angular 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"festo-ui-angular.mjs","sources":["../../../../libs/angular/src/lib/components/buttons/button/button.component.ts","../../../../libs/angular/src/lib/components/buttons/button/button.component.html","../../../../libs/angular/src/lib/components/buttons/link-button/link-button.component.ts","../../../../libs/angular/src/lib/components/buttons/link-button/link-button.component.html","../../../../libs/angular/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../../libs/angular/src/lib/components/breadcrumb/breadcrumb.component.html","../../../../libs/angular/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../../libs/angular/src/lib/components/loading-indicator/loading-indicator.component.html","../../../../libs/angular/src/lib/components/chips/chip-container/chip-container.component.ts","../../../../libs/angular/src/lib/components/chips/chip-container/chip-container.component.html","../../../../libs/angular/src/lib/components/chips/chip/chip.component.ts","../../../../libs/angular/src/lib/components/chips/chip/chip.component.html","../../../../libs/angular/src/lib/components/table-header-cell/table-header-cell.directive.ts","../../../../libs/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.ts","../../../../libs/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.html","../../../../libs/angular/src/lib/components/stepper-vertical/stepper-vertical.component.ts","../../../../libs/angular/src/lib/components/stepper-vertical/stepper-vertical.component.html","../../../../libs/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.ts","../../../../libs/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.html","../../../../libs/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.ts","../../../../libs/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.html","../../../../libs/angular/src/lib/components/popovers/popover-ref.ts","../../../../libs/angular/src/lib/components/popovers/popover.models.ts","../../../../libs/angular/src/lib/components/popovers/popover/popover.component.ts","../../../../libs/angular/src/lib/components/popovers/popover/popover.component.html","../../../../libs/angular/src/lib/components/popovers/popover.defaults.ts","../../../../libs/angular/src/lib/components/popovers/popover.service.ts","../../../../libs/angular/src/lib/components/popovers/popover-menu/popover-menu.component.ts","../../../../libs/angular/src/lib/components/popovers/popover-menu/popover-menu.component.html","../../../../libs/angular/src/lib/components/popovers/tooltip/tooltip.directive.ts","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.component.ts","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.component.html","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.directive.ts","../../../../libs/angular/src/lib/components/popovers/legend/legend.component.ts","../../../../libs/angular/src/lib/components/popovers/legend/legend.component.html","../../../../libs/angular/src/lib/components/popovers/legend/legend.directive.ts","../../../../libs/angular/src/lib/components/progress/progress.component.ts","../../../../libs/angular/src/lib/components/progress/progress.component.html","../../../../libs/angular/src/lib/components/tabs/tab-pane/tab-pane.component.ts","../../../../libs/angular/src/lib/components/tabs/tab-pane/tab-pane.component.html","../../../../libs/angular/src/lib/components/tabs/tabs.component.ts","../../../../libs/angular/src/lib/components/tabs/tabs.component.html","../../../../libs/angular/src/lib/components/pagination/pagination.component.ts","../../../../libs/angular/src/lib/components/pagination/pagination.component.html","../../../../libs/angular/src/lib/components/scroll/scrollable.directive.ts","../../../../libs/angular/src/lib/components/click-outside.directive.ts","../../../../libs/angular/src/lib/components/search-input/safe-html.pipe.ts","../../../../libs/angular/src/lib/components/search-input/search-input.component.ts","../../../../libs/angular/src/lib/components/search-input/search-input.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../../libs/angular/src/lib/components/accordion/accordion.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-header/accordion-header.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-header/accordion-header.component.html","../../../../libs/angular/src/lib/components/components.module.ts","../../../../libs/angular/src/lib/forms/checkbox/checkbox.component.ts","../../../../libs/angular/src/lib/forms/checkbox/checkbox.component.html","../../../../libs/angular/src/lib/forms/switch/switch.component.ts","../../../../libs/angular/src/lib/forms/switch/switch.component.html","../../../../libs/angular/src/lib/forms/unique-selection-dispatcher.ts","../../../../libs/angular/src/lib/forms/radio/radio.component.ts","../../../../libs/angular/src/lib/forms/radio/radio.component.html","../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.ts","../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.html","../../../../libs/angular/src/lib/forms/select/chip-text.pipe.ts","../../../../libs/angular/src/lib/forms/select/select.component.ts","../../../../libs/angular/src/lib/forms/select/select.component.html","../../../../libs/angular/src/lib/forms/text-input/text-input.component.ts","../../../../libs/angular/src/lib/forms/text-input/text-input.component.html","../../../../libs/angular/src/lib/forms/text-area/text-area.component.ts","../../../../libs/angular/src/lib/forms/text-area/text-area.component.html","../../../../libs/angular/src/lib/forms/color-picker/color-helper.ts","../../../../libs/angular/src/lib/forms/color-picker/color-picker.component.ts","../../../../libs/angular/src/lib/forms/color-picker/color-picker.component.html","../../../../libs/angular/src/lib/forms/slider/slider.component.ts","../../../../libs/angular/src/lib/forms/slider/slider.component.html","../../../../libs/angular/src/lib/forms/color-indicator/color-indicator.component.ts","../../../../libs/angular/src/lib/forms/color-indicator/color-indicator.component.html","../../../../libs/angular/src/lib/forms/value-accessor-base.ts","../../../../libs/angular/src/lib/forms/segment/segment-control/segment-control.component.ts","../../../../libs/angular/src/lib/forms/segment/segment-control/segment-control.component.html","../../../../libs/angular/src/lib/forms/segment/segment.component.ts","../../../../libs/angular/src/lib/forms/segment/segment.component.html","../../../../libs/angular/src/lib/wrappers/flatpickr/flatpickr.component.ts","../../../../libs/angular/src/lib/wrappers/flatpickr/flatpickr.component.html","../../../../libs/angular/src/lib/forms/date-picker/date-picker.component.ts","../../../../libs/angular/src/lib/forms/date-picker/date-picker.component.html","../../../../libs/angular/src/lib/forms/date-range-picker/date-range-picker.component.ts","../../../../libs/angular/src/lib/forms/date-range-picker/date-range-picker.component.html","../../../../libs/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.ts","../../../../libs/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.html","../../../../libs/angular/src/lib/forms/time-picker/time-picker.component.ts","../../../../libs/angular/src/lib/forms/time-picker/time-picker.component.html","../../../../libs/angular/src/lib/forms/text-editor/text-editor.component.ts","../../../../libs/angular/src/lib/forms/text-editor/text-editor.component.html","../../../../libs/angular/src/lib/forms/container-host.ts","../../../../libs/angular/src/lib/forms/forms.module.ts","../../../../libs/angular/src/lib/components/modals/alert/alert.component.ts","../../../../libs/angular/src/lib/components/modals/alert/alert.component.html","../../../../libs/angular/src/lib/components/modals/confirm/confirm.component.ts","../../../../libs/angular/src/lib/components/modals/confirm/confirm.component.html","../../../../libs/angular/src/lib/components/modals/prompt/prompt.component.ts","../../../../libs/angular/src/lib/components/modals/prompt/prompt.component.html","../../../../libs/angular/src/lib/components/modals/custom-modal/custom-modal.component.ts","../../../../libs/angular/src/lib/components/modals/custom-modal/custom-modal.component.html","../../../../libs/angular/src/lib/components/modals/modals.module.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar.component.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar.component.html","../../../../libs/angular/src/lib/components/snackbar/snackbar.service.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.directive.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.component.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.component.html","../../../../libs/angular/src/lib/components/snackbar/snackbar.module.ts","../../../../libs/angular/src/lib/content/icon/icon.component.ts","../../../../libs/angular/src/lib/content/icon/icon.component.html","../../../../libs/angular/src/lib/content/content.module.ts","../../../../libs/angular/src/lib/layout/layout.module.ts","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.component.ts","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.component.html","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.module.ts","../../../../libs/angular/src/lib/festo-angular.module.ts","../../../../libs/angular/src/lib/components/modals/modal.service.ts","../../../../libs/angular/src/index.ts","../../../../libs/angular/src/festo-ui-angular.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'fng-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n @Input() text: string;\n @Input() icon: string;\n @Input() disabled = false;\n @Input() primary = false;\n @Input() iconOnly = false;\n @Input() large = false;\n @Output() fngClick = new EventEmitter<any>();\n @ContentChild('content') content: ElementRef;\n\n onClick(event: any) {\n if (!this.disabled) {\n this.fngClick.emit(event);\n }\n }\n}\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\n 'fwe-btn': true,\n 'fng-button': true,\n 'fwe-btn-icon': iconOnly,\n 'fwe-disabled': disabled,\n 'fwe-btn-hero': primary,\n 'fwe-btn-lg': large\n }\"\n [disabled]=\"disabled\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <div *ngIf=\"!iconOnly\" class=\"fng-button-text\">\n <ng-content></ng-content>\n <span *ngIf=\"!content\">{{ text }}</span>\n </div>\n</button>\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'fng-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LinkButtonComponent {\n @Input() text: string;\n @Input() icon: string;\n @Input() disabled = false;\n @Input() iconOnly = false;\n @Output() fngClick = new EventEmitter<any>();\n @ContentChild('content') content: ElementRef;\n\n onClick(event: any) {\n this.fngClick.emit(event);\n }\n}\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\n 'fwe-btn': true,\n 'fwe-btn-link': true,\n 'fwe-disabled': disabled\n }\"\n [disabled]=\"disabled\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <ng-content *ngIf=\"!iconOnly\"></ng-content>\n <span *ngIf=\"!content\">{{ text }}</span>\n</button>\n","import { Component, Input, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent {\n @Input() useRouterLink = false;\n @Input() locations: { label: string; url: string }[];\n @Output() navigate = new EventEmitter<string>();\n}\n","<div class=\"fwe-breadcrumb\">\n <ng-container *ngFor=\"let location of locations; let i = index\">\n <a *ngIf=\"useRouterLink\" class=\"fng-breadcrumb-location\" [routerLink]=\"location.url\">{{ location.label }}</a>\n <a *ngIf=\"!useRouterLink\" class=\"fng-breadcrumb-location\" (click)=\"navigate.emit(location.url)\">{{ location.label }}</a>\n <i class=\"fwe-icon fwe-icon-arrows-right-2\" *ngIf=\"i + 1 < locations.length\"></i>\n </ng-container>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LoadingIndicatorComponent {\n @Input() size: 'large' | 'medium' | 'small' = 'large';\n}\n","<div class=\"fng-waiting-container\">\n <div\n class=\"fwe-waiting-indicator\"\n [class.fwe-waiting-indicator-md]=\"size === 'medium'\"\n [class.fwe-waiting-indicator-sm]=\"size === 'small'\"\n >\n <div class=\"fwe-waiting-circle-1\"></div>\n <div class=\"fwe-waiting-circle-2\"></div>\n <div class=\"fwe-waiting-circle-3\"></div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-chip-container',\n templateUrl: './chip-container.component.html',\n styleUrls: ['./chip-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChipContainerComponent {\n @Input() large = false;\n}\n","<div class=\"fwe-chip-container\" [class.fwe-chip-container-lg]=\"large\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport enum ChipType {\n Choise = 'CHOISE',\n Category = 'CATEGORY',\n Filter = 'FILTER',\n Action = 'ACTION',\n Readonly = 'READONLY'\n}\n\n@Component({\n selector: 'fng-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChipComponent {\n ChipType = ChipType;\n\n @Input() type: ChipType = ChipType.Choise;\n @Input() selected = false;\n @Input() disabled = false;\n @Input() icon: string;\n @Input() large = false;\n}\n","<div\n [ngClass]=\"{\n 'fwe-chip': true,\n 'fwe-selected': selected,\n 'fwe-disabled': disabled,\n 'fwe-chip-lg': large,\n 'fwe-category': type === ChipType.Category,\n 'fwe-filter': type === ChipType.Filter,\n 'fwe-readonly': type === ChipType.Readonly\n }\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <ng-content></ng-content>\n</div>\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface TableColumnOrder {\n orderBy?: string;\n ascending: boolean;\n}\n\n@Directive({\n selector: '[fngTh]',\n host: {\n '[class.fwe-table-order]': 'order != null',\n '[class.fwe-active]': 'active',\n '[class.fwe-table-order-descending]': 'orderDescending',\n '[attr.abbr]': 'abbr',\n '[attr.colspan]': 'colspan',\n '[attr.headers]': 'headers',\n '[attr.rowspan]': 'rowspan',\n '[attr.scope]': 'scope',\n '(click)': 'onChangeOrder()'\n }\n})\nexport class TableHeaderCellDirective {\n @Input() order: TableColumnOrder;\n @Input() fngTh: string;\n\n @Output() changeOrder = new EventEmitter<string>();\n\n /* Attributes */\n @Input() abbr: string;\n @Input() colspan: number;\n @Input() headers: string;\n @Input() rowspan: number;\n @Input() scope: string;\n\n get active(): boolean {\n if (this.order == null) {\n return false;\n }\n\n if (this.order.orderBy == null || this.fngTh == null) {\n return false;\n }\n\n return this.order.orderBy === this.fngTh;\n }\n\n get orderDescending(): boolean {\n return this.active && !this.order.ascending;\n }\n\n onChangeOrder() {\n this.changeOrder.emit(this.fngTh);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'fng-step-vertical',\n templateUrl: './step-vertical.component.html',\n styleUrls: ['./step-vertical.component.scss']\n})\nexport class StepVerticalComponent implements AfterViewInit {\n @ViewChild('stepContent') stepContent?: ElementRef;\n @ViewChild('stepContentContainer') stepContentContainer?: ElementRef;\n\n @Input() index: number = 0;\n\n @Input() title: string = '';\n\n @Input() isDone: boolean = false;\n\n @Input() isLastElement: boolean = false;\n\n // Note: OnChanges does not work because the input are not updated via bindings\n @Input() set isActive(value: boolean) {\n this._isActive = value;\n this.updateHeight();\n }\n get isActive(): boolean {\n return this._isActive;\n }\n _isActive = false;\n\n public onStepClickCallback: (i: number) => void;\n\n updateHeight() {\n if (this.stepContent && this.stepContentContainer) {\n if (this.isActive) {\n const itemHeight = this.stepContent.nativeElement.offsetHeight;\n this.stepContentContainer.nativeElement.style.height = itemHeight + 'px';\n } else {\n this.stepContentContainer.nativeElement.style.height = '20px';\n }\n }\n }\n\n ngAfterViewInit() {\n this.updateHeight();\n }\n}\n","<div\n class=\"fwe-step-container\"\n [class.fwe-last-element]=\"isLastElement\"\n [class.fwe-step-active]=\"isActive\"\n [class.fwe-step-done]=\"isDone\"\n>\n <div class=\"fwe-step\" (click)=\"onStepClickCallback(index)\">\n <div class=\"fwe-step-no\">{{ index + 1 }}</div>\n <div class=\"fwe-step-name\">{{ title }}</div>\n </div>\n <div #stepContentContainer class=\"fwe-step-content-container\">\n <div #stepContent class=\"fwe-step-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList } from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport { StepVerticalComponent } from './step-vertical/step-vertical.component';\n\n@Component({\n selector: 'fng-stepper-vertical',\n templateUrl: './stepper-vertical.component.html'\n})\nexport class StepperVerticalComponent implements AfterContentInit, OnChanges {\n @ContentChildren(StepVerticalComponent) stepComponents!: QueryList<StepVerticalComponent>;\n\n @Input() stepIndex: number = 0;\n @Output() stepIndexChange = new EventEmitter<number>();\n\n ngOnChanges() {\n this.updateStepComponents();\n }\n\n updateStepComponents(): void {\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\n this.stepComponents.forEach((s, i) => {\n s.index = i;\n s.isDone = i < this.stepIndex;\n s.isActive = i == this.stepIndex;\n s.isLastElement = i == this.stepComponents.length - 1;\n s.onStepClickCallback = i => this.onStepClick(i);\n });\n }\n }\n\n ngAfterContentInit(): void {\n if (!this.stepComponents) {\n return;\n }\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\n this.updateStepComponents();\n });\n this.updateStepComponents();\n }\n\n onStepClick(index: number) {\n if (this.stepIndex > index) {\n this.stepIndex = index;\n this.updateStepComponents();\n this.stepIndexChange?.emit(index);\n }\n }\n}\n","<div class=\"fwe-stepper-vertical\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fng-step-horizontal',\n templateUrl: './step-horizontal.component.html',\n styleUrls: ['./step-horizontal.component.scss']\n})\nexport class StepHorizontalComponent {\n @Input() isActive = false;\n\n @Input() title: string = '';\n}\n","<div class=\"overflow-hidden\" [class.hidden]=\"!isActive\">\n <div class=\"fng-moving-container\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList } from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport { StepHorizontalComponent } from './step-horizontal/step-horizontal.component';\n\n@Component({\n selector: 'fng-stepper-horizontal',\n templateUrl: './stepper-horizontal.component.html'\n})\nexport class StepperHorizontalComponent implements AfterContentInit, OnChanges {\n @ContentChildren(StepHorizontalComponent) stepComponents!: QueryList<StepHorizontalComponent>;\n\n @Input() stepIndex: number = 0;\n @Output() stepIndexChange = new EventEmitter<number>();\n\n ngOnChanges() {\n this.updateStepComponents();\n }\n\n updateStepComponents(): void {\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\n this.stepComponents.forEach((s, i) => {\n s.isActive = i == this.stepIndex;\n });\n }\n }\n\n ngAfterContentInit(): void {\n if (!this.stepComponents) {\n return;\n }\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\n this.updateStepComponents();\n });\n this.updateStepComponents();\n }\n\n onStepClick(index: number) {\n if (this.stepIndex > index) {\n this.stepIndex = index;\n this.updateStepComponents();\n this.stepIndexChange?.emit(index);\n }\n }\n}\n","<div class=\"fwe-stepper-horizontal\">\n <div\n *ngFor=\"let step of stepComponents; index as i\"\n class=\"fwe-step-container\"\n (click)=\"onStepClick(i)\"\n [class.fwe-step-done]=\"stepIndex > i\"\n [class.fwe-step-active]=\"i === stepIndex\"\n >\n <div class=\"fwe-step\">\n <div class=\"fwe-step-no\">{{ i + 1 }}</div>\n <div class=\"fwe-step-name\">{{ step.title }}</div>\n </div>\n </div>\n</div>\n\n<ng-content></ng-content>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\n\nimport { PopoverContent, PopoverCloseEvent } from './popover.models';\n\nexport class PopoverRef<T = any> {\n private afterClosed = new Subject<PopoverCloseEvent<T>>();\n afterClosed$ = this.afterClosed.asObservable();\n\n constructor(public overlay: OverlayRef, public content: PopoverContent, public data: T) {\n overlay.backdropClick().subscribe(() => {\n this._close('backdropClick', null);\n });\n }\n\n close(data?: T) {\n this._close('close', data);\n }\n\n private _close(type: PopoverCloseEvent['type'], data?: T) {\n this.overlay.dispose();\n this.afterClosed.next({\n type,\n data\n });\n this.afterClosed.complete();\n }\n}\n","import { TemplateRef, Type } from '@angular/core';\n\nexport interface PopoverParams<T> {\n origin: HTMLElement;\n content: PopoverContent;\n options?: PopoverOptions;\n data?: T;\n}\n\nexport enum PopoverTypes {\n Tooltip = 'tooltip',\n Menu = 'menu',\n Legend = 'legend',\n Content = 'content'\n}\n\nexport enum PopoverPosition {\n Top = 'top',\n Bottom = 'bottom',\n Right = 'right',\n RightTop = 'right-top',\n Left = 'left',\n LeftTop = 'left-top'\n}\n\nexport interface PopoverOptions {\n type: PopoverTypes;\n width?: string | number;\n height?: string | number;\n maxWidth?: string | number;\n maxHeight?: string | number;\n minWidth?: string | number;\n minHeight?: string | number;\n hasBackdrop?: boolean;\n backdropClass?: string;\n positions?: PopoverPosition[];\n}\n\nexport interface PopoverCloseEvent<T = any> {\n type: 'backdropClick' | 'close';\n data: T;\n}\n\nexport enum PopoverContentTypes {\n Template = 'template',\n Component = 'component',\n Text = 'text'\n}\n\nexport type PopoverContent = TemplateRef<any> | Type<any> | string;\n\nexport interface PopoverMenu<T = any> {\n text: string;\n icon: string;\n action: string;\n data?: T;\n}\n\nexport interface PopoverMenuAction<T = any> {\n action: string;\n payload: T;\n}\n\nexport interface PopoverMenuActionAware<T = any> {\n onMenuAction(event: PopoverMenuAction<T>): void;\n}\n","import { Component, OnInit, TemplateRef } from '@angular/core';\n\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverContent, PopoverContentTypes } from '../popover.models';\n\n@Component({\n selector: 'fng-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent implements OnInit {\n type: PopoverContentTypes = PopoverContentTypes.Text;\n content: PopoverContent;\n context: any;\n\n constructor(private popoverRef: PopoverRef) {}\n\n ngOnInit() {\n this.content = this.popoverRef.content;\n if ('string' === typeof this.content) {\n this.type = PopoverContentTypes.Text;\n }\n\n if (this.content instanceof TemplateRef) {\n this.type = PopoverContentTypes.Template;\n this.context = {\n close: this.popoverRef.close.bind(this.popoverRef)\n };\n }\n }\n}\n","<div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\">\n <ng-container [ngSwitch]=\"type\">\n <div class=\"fwe-popover-content\" *ngSwitchCase=\"'text'\" [innerHTML]=\"content\"></div>\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container *ngTemplateOutlet=\"content; context: context\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'component'\">\n <ng-container *ngComponentOutlet=\"content\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","import { PopoverPosition, PopoverTypes } from './popover.models';\n\nexport const defaultPositions = {\n [PopoverPosition.Bottom]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 22\n },\n [PopoverPosition.Top]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -22\n },\n [PopoverPosition.Right]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 22\n },\n [PopoverPosition.Left]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -22\n },\n [PopoverPosition.LeftTop]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -22,\n offsetY: -32\n },\n [PopoverPosition.RightTop]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 22,\n offsetY: -32\n }\n};\nexport const defaultClasses = {\n [PopoverTypes.Tooltip]: 'fng-popover-tooltip',\n [PopoverTypes.Menu]: 'fng-popover-menu',\n [PopoverTypes.Legend]: 'fng-popover-legend',\n [PopoverTypes.Content]: 'fng-popover-content',\n [PopoverPosition.Bottom]: 'fng-popover-bottom',\n [PopoverPosition.Top]: 'fng-popover-top',\n [PopoverPosition.Right]: 'fng-popover-right',\n [PopoverPosition.Left]: 'fng-popover-left',\n [PopoverPosition.RightTop]: 'fng-popover-right-top',\n [PopoverPosition.LeftTop]: 'fng-popover-left-top'\n};\n","import { Injectable, Injector } from '@angular/core';\nimport {\n Overlay,\n ConnectionPositionPair,\n OverlayConfig,\n FlexibleConnectedPositionStrategy,\n NoopScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport { PopoverRef } from './popover-ref';\nimport { PopoverComponent } from './popover/popover.component';\nimport { defaultPositions, defaultClasses } from './popover.defaults';\nimport { PopoverParams, PopoverOptions, PopoverTypes, PopoverPosition } from './popover.models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PopoverService {\n readonly options: PopoverOptions = {\n type: PopoverTypes.Tooltip,\n width: null,\n height: null,\n maxWidth: null,\n maxHeight: null,\n minWidth: null,\n minHeight: null,\n hasBackdrop: false,\n backdropClass: 'fng-popover-backdrop',\n positions: null\n };\n\n get defaultOptions() {\n return this.options;\n }\n\n constructor(private overlay: Overlay, private injector: Injector) {}\n\n open<T>({ origin, content, data, options }: PopoverParams<T>): PopoverRef<T> {\n if (null == options) {\n options = this.defaultOptions;\n }\n const overlayConfig = this.getOverlayConfig({ origin, options });\n const overlayRef = this.overlay.create(overlayConfig);\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\n const injector = this.createInjector(popoverRef, this.injector);\n\n overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));\n\n return popoverRef;\n }\n\n private getOverlayConfig({ origin, options }: { origin: HTMLElement; options: PopoverOptions }): OverlayConfig {\n const type = null != options.type ? options.type : this.defaultOptions.type;\n const positions = null != options.positions ? options.positions : this.defaultOptions.positions;\n return new OverlayConfig({\n width: null != options.width ? options.width : this.defaultOptions.width,\n height: null != options.height ? options.height : this.defaultOptions.height,\n maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,\n maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,\n minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,\n minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,\n positionStrategy: this.getOverlayPosition(origin, type, positions),\n scrollStrategy:\n null != this.overlay && null != this.overlay.scrollStrategies ? this.overlay.scrollStrategies.block() : ({} as NoopScrollStrategy),\n hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,\n backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass\n });\n }\n\n private getOverlayPosition(origin: HTMLElement, type: PopoverTypes, positions: PopoverPosition[]): FlexibleConnectedPositionStrategy {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions(null != positions ? this.getPositions(type, positions) : this.getDefaultPositions(type))\n .withFlexibleDimensions(false)\n .withViewportMargin(16)\n .withPush(false);\n\n return positionStrategy;\n }\n\n private createInjector(popoverRef: PopoverRef, injector: Injector) {\n return Injector.create({\n parent: injector,\n providers: [{ provide: PopoverRef, useValue: popoverRef }]\n });\n }\n\n private getDefaultPositions(type: PopoverTypes): ConnectionPositionPair[] {\n const pairs: ConnectionPositionPair[] = [];\n let positions = [];\n const fn = (t: PopoverTypes, p: PopoverPosition[]) =>\n p.map(position => {\n pairs.push({\n ...defaultPositions[position as string],\n panelClass: [defaultClasses[t], defaultClasses[position]]\n });\n });\n switch (type) {\n case PopoverTypes.Tooltip:\n positions = [PopoverPosition.Bottom, PopoverPosition.Top];\n fn(PopoverTypes.Tooltip, positions);\n break;\n case PopoverTypes.Menu:\n positions = [PopoverPosition.Right, PopoverPosition.Left];\n fn(PopoverTypes.Menu, positions);\n break;\n case PopoverTypes.Legend:\n positions = [PopoverPosition.Bottom];\n fn(PopoverTypes.Legend, positions);\n break;\n case PopoverTypes.Content:\n positions = [PopoverPosition.Bottom];\n fn(PopoverTypes.Content, positions);\n break;\n default:\n break;\n }\n return pairs;\n }\n\n private getPositions(type: PopoverTypes, positions: PopoverPosition[]): ConnectionPositionPair[] {\n const pairs: ConnectionPositionPair[] = [];\n positions.map(position => {\n pairs.push({\n ...defaultPositions[position as string],\n panelClass: [defaultClasses[type], defaultClasses[position]]\n });\n });\n\n return pairs;\n }\n}\n","import { Component, TemplateRef, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener } from '@angular/core';\n\nimport { PopoverService } from '../popover.service';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes, PopoverMenu, PopoverMenuAction, PopoverPosition } from '../popover.models';\n\nexport interface PopoverMenuOptions {\n positions?: PopoverPosition[];\n}\n\n@Component({\n selector: 'fng-popover-menu',\n templateUrl: './popover-menu.component.html',\n styleUrls: ['./popover-menu.component.scss']\n})\nexport class PopoverMenuComponent {\n @Input() icon = 'fwe-icon-menu-more fwe-icon-lg';\n @Input() menu: PopoverMenu[] = [];\n @Input() options: PopoverMenuOptions = {};\n\n @Output() menuAction: EventEmitter<PopoverMenuAction> = new EventEmitter();\n\n @ViewChild('menuTpl') menuTpl: TemplateRef<any>;\n @ViewChild('origin') origin: ElementRef;\n\n private popoverRef: PopoverRef;\n private itemHeight = 36;\n\n constructor(private popoverService: PopoverService) {}\n\n show(event: Event, content: TemplateRef<any>, origin: HTMLElement) {\n event.stopPropagation();\n event.preventDefault();\n if (0 < this.menu.length) {\n this.popoverRef = this.popoverService.open({\n content,\n origin,\n options: {\n type: PopoverTypes.Menu,\n hasBackdrop: true,\n // height calc is needed for correct vertical positioning (+32 -> 2 * vertical padding 16px)\n height: +(this.itemHeight * this.menu.length + 32),\n positions: this.options != null && this.options.positions ? this.options.positions : null\n }\n });\n }\n }\n\n action(action: string, payload: any) {\n this.menuAction.emit({ action, payload });\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n hide() {\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n}\n","<ng-container *ngIf=\"0 < menu.length\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark origin\" (click)=\"show($event, menuTpl, origin)\" #origin>\n <i class=\"fwe-icon fwe-pr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n <li *ngFor=\"let item of menu\" class=\"fwe-list-group-item\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"action(item?.action, item?.data)\">\n <i class=\"fwe-icon\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n </ul>\n </ng-template>\n</ng-container>\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\n\nimport { PopoverPosition } from './../popover.models';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes } from '../popover.models';\nimport { PopoverService } from '../popover.service';\n\nexport interface TooltipOptions {\n maxWidth?: string | number;\n delay?: number;\n}\n\n@Directive({\n selector: '[fngTooltip]'\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n @Input('fngTooltip') text = '';\n @Input('fngTooltipVisible') isVisible: boolean = false;\n @Input('fngTooltipPositions') positions: PopoverPosition[] = [];\n @Input() options: TooltipOptions = {\n maxWidth: 400,\n delay: 0\n };\n private origin: HTMLElement;\n private popoverRef: PopoverRef;\n private innerIsVisible = false;\n private timeoutHandle = null;\n\n constructor(private elmenetRef: ElementRef, private popoverService: PopoverService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.origin = this.elmenetRef.nativeElement;\n\n if (changes?.isVisible?.currentValue === true) {\n if (this.innerIsVisible === false) {\n this.open();\n }\n }\n if (changes?.isVisible?.currentValue === false) {\n if (this.innerIsVisible === true) {\n this.close();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter')\n show() {\n if (this.options?.delay > 0) {\n this.timeoutHandle = setTimeout(() => {\n this.open();\n }, +this.options?.delay);\n } else {\n this.open();\n }\n }\n\n @HostListener('mouseleave')\n hide() {\n if (this.timeoutHandle != null) {\n clearTimeout(this.timeoutHandle);\n }\n this.close();\n }\n\n private open() {\n if (this.innerIsVisible === false) {\n this.popoverRef = this.popoverService.open({\n content: this.text,\n origin: this.origin,\n options: {\n type: PopoverTypes.Tooltip,\n maxWidth: this.options.maxWidth,\n // using a set here removes duplicate positions and ensures that at least the bottom position will be used\n positions: [...new Set([...this.positions, PopoverPosition.Bottom])]\n }\n });\n this.innerIsVisible = true;\n }\n }\n\n private close() {\n if (this.popoverRef != null) {\n this.popoverRef.close();\n }\n this.innerIsVisible = false;\n }\n}\n","import { Component, ViewChild, TemplateRef, Input, Output, EventEmitter, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { PopoverService } from '../popover.service';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes, PopoverCloseEvent, PopoverPosition } from '../popover.models';\n\nexport interface PopoverContentOptions {\n positions?: PopoverPosition[];\n maxWidth?: string | number;\n minHeight?: string | number;\n}\n\nexport interface PopoverContentActions {\n close: () => void;\n}\n\n@Component({\n selector: 'fng-popover-content',\n templateUrl: './popover-content.component.html',\n styleUrls: ['./popover-content.component.scss']\n})\nexport class PopoverContentComponent implements AfterViewInit, OnDestroy {\n @Input() options: PopoverContentOptions = {};\n @Output() close: EventEmitter<PopoverCloseEvent> = new EventEmitter();\n @Output() actions: EventEmitter<PopoverContentActions> = new EventEmitter();\n @ViewChild('tpl') templateRef: TemplateRef<any>;\n @ViewChild('fngContent') contentRef: ElementRef;\n\n showDefault = false;\n offScreen = true;\n height = 16; // add default padding\n width = 16; // add default padding\n\n private closeSub: Subscription;\n private popoverRef: PopoverRef;\n\n constructor(private popoverService: PopoverService) {}\n\n ngOnDestroy(): void {\n if (this.closeSub) {\n this.closeSub.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n const parent: HTMLElement = this.templateRef.elementRef.nativeElement.parentElement;\n parent.childNodes.forEach((node: HTMLElement) => {\n if (null != node.dataset && undefined !== node.dataset.fngRoot) {\n this.width = this.width + node.getBoundingClientRect().width;\n this.height = this.height + node.getBoundingClientRect().height;\n }\n });\n }\n\n show(origin: HTMLElement) {\n this.offScreen = false;\n this.popoverRef = this.popoverService.open({\n content: this.templateRef,\n origin,\n options: {\n positions: null != this.options && this.options.positions ? this.options.positions : null,\n width: this.width,\n height: this.height,\n type: PopoverTypes.Content,\n hasBackdrop: true\n }\n });\n\n this.actions.emit({\n close: () => {\n this.hide();\n }\n });\n\n if (this.closeSub) {\n this.closeSub.unsubscribe();\n }\n this.closeSub = this.popoverRef.afterClosed$.pipe(take(1)).subscribe(event => {\n this.close.emit(event);\n });\n }\n\n hide() {\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n}\n","<div #default *ngIf=\"showDefault; else tpl\"></div>\n<ng-template #tpl>\n <div data-fng-root [class.fng-off-screen]=\"offScreen\">\n <div #fngContent class=\"fng-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","import { Directive, ElementRef, HostListener, OnInit, ContentChild } from '@angular/core';\n\nimport { PopoverContentComponent } from './popover-content.component';\n\n@Directive({\n selector: '[fngPopoverContent]'\n})\nexport class PopoverContentDirective implements OnInit {\n @ContentChild('fngComponent') component: PopoverContentComponent;\n private origin: HTMLElement;\n\n constructor(private elmenetRef: ElementRef) {}\n\n ngOnInit(): void {\n this.origin = this.elmenetRef.nativeElement;\n }\n\n @HostListener('click')\n show() {\n if (null != this.component) {\n this.component.show(this.origin);\n }\n }\n\n @HostListener('document:keydown.escape')\n hide() {\n if (null != this.component) {\n this.component.hide();\n }\n }\n}\n","import { Component, Input, ViewChild, TemplateRef } from '@angular/core';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes } from '../popover.models';\nimport { PopoverService } from '../popover.service';\n\nexport interface PopoverLegendOptions {\n maxWidth?: string | number;\n}\n\nexport interface LegendItem {\n name: string;\n text: string;\n}\n\n@Component({\n selector: 'fng-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss']\n})\nexport class LegendComponent {\n @Input() items: LegendItem[] = [];\n @Input() options: PopoverLegendOptions = {};\n @ViewChild('tpl') templateRef: TemplateRef<any>;\n private popoverRef: PopoverRef;\n\n constructor(private popoverService: PopoverService) {}\n\n show(origin: HTMLElement) {\n if (0 < this.items.length) {\n this.popoverRef = this.popoverService.open({\n content: this.templateRef,\n origin,\n options: {\n type: PopoverTypes.Legend,\n hasBackdrop: true\n }\n });\n }\n }\n\n hide() {\n this.popoverRef.close();\n }\n}\n","<ng-template #tpl>\n <dl *ngIf=\"0 < items.length\" class=\"fng-legend\">\n <div *ngFor=\"let item of items\" class=\"fng-legend-content\">\n <dt>{{ item?.name }}</dt>\n <dd>{{ item?.text }}</dd>\n </div>\n </dl>\n</ng-template>\n","import { Directive, ElementRef, ContentChild, HostListener, OnInit } from '@angular/core';\n\nimport { PopoverContentComponent } from '../popover-content/popover-content.component';\n\n@Directive({\n selector: '[fngLegend]'\n})\nexport class LegendDirective implements OnInit {\n @ContentChild('fngContent') ref: PopoverContentComponent;\n private origin: HTMLElement;\n\n constructor(private elmenetRef: ElementRef) {}\n\n ngOnInit(): void {\n this.origin = this.elmenetRef.nativeElement;\n }\n\n @HostListener('click')\n show() {\n if (null != this.ref) {\n this.ref.show(this.origin);\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fng-progress',\n templateUrl: './progress.component.html'\n})\nexport class ProgressComponent {\n @Input() progress: number;\n @Input() error: boolean;\n @Input() background: 'white' | 'background' | 'black' = 'white';\n}\n","<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'fng-tab-pane',\n templateUrl: './tab-pane.component.html',\n styleUrls: ['./tab-pane.component.scss']\n})\nexport class TabPaneComponent implements OnChanges {\n static nextId = 0;\n // @deprcated Input() id is not in use anymore but still exists for backwards compatiblity\n @Input() id: string;\n @Input() name: string;\n @Input() icon: string;\n @Input() active: boolean;\n @Input() isVisible: boolean;\n tabId: string;\n tabPaneId = `tab-panel-content-${++TabPaneComponent.nextId}`;\n\n private changesSubject = new Subject<boolean>();\n changes$ = this.changesSubject.asObservable();\n\n ngOnChanges(): void {\n this.changesSubject.next(true);\n }\n}\n","<div role=\"tabpanel\" [id]=\"tabPaneId\" [attr.aria-labelledby]=\"tabId\" [class.fng-show]=\"isVisible\" [class.fng-hide]=\"!isVisible\">\n <ng-content></ng-content>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nexport interface Tab {\n name: string;\n paneId: string;\n active?: boolean;\n icon?: string;\n}\n\n// fill: use the remaining space and add in same proportion to every tab item\n// equal: make all tab items same width (as the one with largest content)\nexport type TabItemAppearance = 'fill' | 'equal' | 'default';\n\n// legacy: recommended for desktop only applications\n// responsive: desktop, tablet, mobile with scrollable tabs\nexport type TabViewType = 'legacy' | 'responsive';\n\n// configuration options for legacy tab view type\nexport interface TabsConfiguration {\n tabBar?: {\n fullWidth?: boolean;\n };\n tabItems?: {\n appearance: TabItemAppearance;\n };\n}\n\n// provides details about the left and right edges of the tab element and the tab content element\n// these values are used to determine the visual position of the tab with respect of its parent container\nexport interface TabDimensions {\n rootLeft: number;\n rootRight: number;\n contentLeft: number;\n contentRight: number;\n}\n\nexport interface TabScrollAnimation {\n finalScrollPosition: number;\n scrollDelta: number;\n}\n\nexport interface TabScrollHorizontalEdges {\n left: number;\n right: number;\n}\n\n@Component({\n selector: 'fng-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n static nextId = 0;\n @Input('fngTabsViewType') viewType: TabViewType = 'responsive';\n @Input('fngTabsUseBottomDivider') showDivider: boolean = false;\n\n @Input() config: TabsConfiguration = null;\n @Output() fngTabChange = new EventEmitter<{ previous: string; current: string }>();\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n @ViewChild('scroller') scroller: ElementRef;\n @ViewChild('scrollAera') scrollAera: ElementRef;\n @ViewChild('scrollContent') scrollContent: ElementRef;\n\n componentId = `tabs-${++TabsComponent.nextId}`;\n tabs: Tab[] = [];\n useCompactDensity: boolean = true;\n private activeTab: Tab = null;\n private elemScroller: HTMLElement;\n private elemScrollArea: HTMLElement;\n private elemScrollContent: HTMLElement;\n private readonly injectedWindow: Window;\n private resizeObserver: ResizeObserver;\n private complete: Subject<boolean> = new Subject();\n\n constructor(\n private elRef: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n private renderer: Renderer2,\n private cd: ChangeDetectorRef\n ) {\n this.injectedWindow = this.document.defaultView;\n }\n\n ngAfterContentInit() {\n this.initTabs();\n if (null === this.activeTab) {\n this.panes.map((pane, i) => {\n if (0 === i) {\n pane.isVisible = true;\n }\n });\n } else {\n this.panes.find(pane => null != this.activeTab.paneId && pane.tabPaneId === this.activeTab.paneId).isVisible = true;\n }\n }\n\n ngAfterViewInit(): void {\n this.elemScroller = this.scroller?.nativeElement;\n this.elemScrollArea = this.scrollAera?.nativeElement;\n this.elemScrollContent = this.scrollContent?.nativeElement;\n const initialWidth = this.elemScrollArea?.offsetWidth;\n if (initialWidth > 768) {\n this.useCompactDensity = false;\n this.cd.detectChanges();\n }\n\n this.resizeObserver = new ResizeObserver(() => {\n const width = this.elemScrollArea.offsetWidth;\n if (width > 768 && this.useCompactDensity === true) {\n this.useCompactDensity = false;\n this.cd.detectChanges();\n } else if (width <= 768 && this.useCompactDensity === false) {\n this.useCompactDensity = true;\n this.cd.detectChanges();\n }\n });\n\n if (this.elemScrollArea != null) {\n this.resizeObserver.observe(this.elemScrollArea);\n }\n\n this.handleTabPaneChanges();\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n showTabPane(id: string) {\n const pane = this.panes.find(p => p.tabPaneId === id);\n if (null != pane) {\n this.panes.map(p => {\n p.isVisible = false;\n });\n pane.isVisible = true;\n\n this.tabs.map(tab => {\n if (tab.paneId !== pane.tabPaneId) {\n tab.active = false;\n } else {\n tab.active = true;\n }\n });\n this.fngTabChange.emit({\n previous: this.activeTab?.paneId,\n current: id\n });\n this.activeTab = this.tabs.find(tab => !!tab.active);\n }\n }\n\n handleTabScroll(event: any, index: number) {\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\n\n // check if no scroll is needed\n if (scrollAreaWidth > scrollContentWidth) {\n return;\n }\n\n // check index\n if (!this.indexIsInRange(index)) {\n return;\n }\n\n // always scroll to 0 if scrolling to the first tab\n if (index === 0) {\n this.scrollTo(0);\n return;\n }\n\n // always scroll to the max value if scrolling to the last tab\n if (index === this.tabs.length - 1) {\n this.scrollTo(this.elemScrollContent.offsetWidth);\n return;\n }\n\n const currentTab: HTMLElement = event.target;\n this.scrollIntoView(index, currentTab);\n }\n\n private initTabs() {\n this.tabs = [];\n this.panes.map((pane, i) => {\n pane.tabId = this.componentId + '-tab-' + i;\n const tab: Tab = {\n name: null != pane.name ? pane.name : '',\n paneId: null != pane.tabPaneId ? pane.tabPaneId : null,\n icon: null != pane.icon ? pane.icon : null,\n active: null != pane.active ? pane.active : false\n };\n this.tabs.push(tab);\n });\n\n this.initActiveTab();\n this.cd.detectChanges();\n }\n\n private initActiveTab() {\n const activeTab: Tab = this.tabs.find((tab: Tab) => !!tab.active);\n if (!activeTab && 0 < this.tabs.length) {\n this.tabs[0] = { ...this.tabs[0], active: true };\n this.activeTab = this.tabs[0];\n } else {\n this.activeTab = activeTab;\n }\n }\n\n private handleTabPaneChanges() {\n // first subscribe to any changes in tab pane, so that the tabs in this view wiil be updated\n this.panes.forEach(pane => {\n pane.changes$.pipe(takeUntil(this.complete)).subscribe(() => {\n // on changes in a tab pane, we init the tabs again\n this.initTabs();\n });\n });\n }\n\n private scrollTo(scrollX: number) {\n const currentScrollX = this.getScrollPosition();\n const safeScrollX = this.clampScrollValue(scrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate({\n finalScrollPosition: safeScrollX,\n scrollDelta\n });\n }\n\n private scrollIntoView(index: number, tab: HTMLElement) {\n const scrollPosition = this.getScrollPosition();\n const barWidth = this.elemScrollArea.offsetWidth;\n const tabDimensions = this.computeDimensions(tab);\n const nextIndex = this.findAdjacentTabIndexClosestToEdge(index, tabDimensions, scrollPosition, barWidth);\n\n if (!this.indexIsInRange(nextIndex)) {\n return;\n }\n\n const scrollIncrement = this.calculateScrollIncrement(index, nextIndex, scrollPosition, barWidth);\n this.incrementScroll(scrollIncrement);\n }\n\n private incrementScroll(scrollXIncrement: number) {\n // no scroll needed\n if (scrollXIncrement === 0) {\n return;\n }\n const scrollOperation = this.getIncrementScrollOperation(scrollXIncrement);\n this.animate(scrollOperation);\n }\n\n private animate(animation: TabScrollAnimation) {\n // no animation needed\n if (animation.scrollDelta === 0) {\n return;\n }\n\n this.stopScrollAnimation();\n\n // this animation uses the flip approach\n // https://aerotwist.com/blog/flip-your-animations/\n // https://css-tricks.com/animating-layouts-with-the-flip-technique/\n this.elemScrollArea.scrollLeft = animation.finalScrollPosition;\n this.setScrollContentStyleProperty('transform', `translateX(${animation.scrollDelta}px)`);\n // force repaint\n this.elemScrollArea.getBoundingClientRect();\n\n requestAnimationFrame(() => {\n this.renderer.addClass(this.elemScroller, 'fng-tab-scroller--animating');\n this.setScrollContentStyleProperty('transform', 'none');\n });\n }\n\n private stopScrollAnimation() {\n const currentScrollPosition = this.getAnimatingScrollPosition();\n this.renderer.removeClass(this.elemScroller, 'fng-tab-scroller--animating');\n this.setScrollContentStyleProperty('transform', 'translateX(0px)');\n this.elemScrollArea.scrollLeft = currentScrollPosition;\n }\n\n private getAnimatingScrollPosition(): number {\n const currentTranslateX = this.calculateCurrentTranslateX();\n const scrollLeft = this.elemScrollArea.scrollLeft;\n return scrollLeft - currentTranslateX;\n }\n\n private getIncrementScrollOperation(scrollX: number): TabScrollAnimation {\n const currentScrollX = this.getScrollPosition();\n const targetScrollX = scrollX + currentScrollX;\n const safeScrollX = this.clampScrollValue(targetScrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n return {\n finalScrollPosition: safeScrollX,\n scrollDelta\n };\n }\n\n private clampScrollValue(scrollX: number): number {\n const edges = this.calculateScrollEdges();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n\n private calculateScrollEdges(): TabScrollHorizontalEdges {\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\n return {\n left: 0,\n right: scrollContentWidth - scrollAreaWidth\n };\n }\n\n private computeDimensions(tab: HTMLElement): TabDimensions {\n const rootWidth = tab.offsetWidth;\n const rootLeft = tab.offsetLeft;\n\n const tabContent: HTMLElement = tab.querySelector<HTMLElement>('.fng-tab-content');\n const contentWidth = tabContent.offsetWidth;\n const contentLeft = tabContent.offsetLeft;\n\n return {\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n rootLeft,\n rootRight: rootLeft + rootWidth\n };\n }\n\n private calculateScrollIncrement(index: number, nextIndex: number, scrollPosition: number, barWidth: number): number {\n const nextTab: HTMLElement = (this.elRef.nativeElement as HTMLElement).querySelector<HTMLElement>(\n `#${this.componentId}-tab-${nextIndex}`\n );\n const nextTabDimensions = this.computeDimensions(nextTab);\n const relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\n const relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\n const leftIncrement = relativeContentRight - 48;\n const rightIncrement = relativeContentLeft + 48;\n\n if (nextIndex < index) {\n return Math.min(leftIncrement, 0);\n }\n\n return Math.max(rightIncrement, 0);\n }\n\n private indexIsInRange(index: number) {\n return index >= 0 && index < this.tabs.length;\n }\n\n private getScrollPosition(): number {\n const currentTranslateX = this.calculateCurrentTranslateX();\n const scrollLeft = this.elemScrollArea.scrollLeft;\n\n return scrollLeft - currentTranslateX;\n }\n\n private calculateCurrentTranslateX(): number {\n const transformValue = this.getScrollContentStyleValue('transform');\n if (transformValue === 'none') {\n return 0;\n }\n\n // the transform value is in form of 'matrix(a, b, c, d, tx, ty)'\n // get all the parenthesized values\n const match = /\\((.+?)\\)/.exec(transformValue);\n if (!match) {\n return 0;\n }\n\n const matrixParams = match[1];\n // we need value of tx -> translateX\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [a, b, c, d, tx, ty] = matrixParams.split(',');\n return parseFloat(tx);\n }\n\n private getScrollContentStyleValue(propName: string) {\n return this.injectedWindow.getComputedStyle(this.elemScrollContent).getPropertyValue(propName);\n }\n\n private setScrollContentStyleProperty(propName: string, value: any) {\n this.renderer.setStyle(this.elemScrollContent, propName, value);\n }\n\n private findAdjacentTabIndexClosestToEdge(index: number, tabDimensions: TabDimensions, scrollPosition: number, barWidth: number): number {\n /**\n * tabs are laid out in the tab scroller like this:\n *\n * scroll position\n * +---+\n * | | bar width\n * | +-----------------------------------+\n * | | |\n * | v v\n * | +-----------------------------------+\n * v | tab scroller |\n * +------------+--------------+-------------------+\n * | tab | tab | tab |\n * +------------+--------------+-------------------+\n * | |\n * +-----------------------------------+\n *\n * to determine the next adjacent index, we look at the tab root left and\n * tab root right, both relative to the scroll position. if the tab root\n * left is less than 0, then we know it's out of view to the left. if the\n * tab root right minus the bar width is greater than 0, we know the tab is\n * out of view to the right. from there, we either increment or decrement\n * the index.\n */\n const relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\n const relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\n const relativeRootDelta = relativeRootLeft + relativeRootRight;\n const leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\n const rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\n\n if (leftEdgeIsCloser) {\n return index - 1;\n }\n\n if (rightEdgeIsCloser) {\n return index + 1;\n }\n\n return -1;\n }\n}\n","<ng-container *ngIf=\"viewType === 'legacy'\">\n <div class=\"fwe-legacy-tabs\">\n <ul\n role=\"tablist\"\n class=\"fwe-legacy-tab-bar\"\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\n >\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"fwe-legacy-tab-item\" [class.fwe-active]=\"tab?.active\">\n <ng-container *ngIf=\"null == tab?.icon\">\n <a\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n >{{ tab.name }}</a\n >\n </ng-container>\n <ng-container *ngIf=\"null != tab?.icon\">\n <a\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\n >\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\n <span>{{ tab.name }}</span>\n </a>\n </ng-container>\n </li>\n </ul>\n <div class=\"fwe-legacy-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"viewType !== 'legacy'\">\n <div class=\"fng-tab-bar\" role=\"tablist\">\n <div class=\"fng-tab-scroller\" #scroller>\n <div\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\n #scrollAera\n >\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\n <button\n *ngFor=\"let tab of tabs; let i = index\"\n role=\"tab\"\n class=\"fng-tab\"\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n [tabindex]=\"i === 0 ? 0 : -1\"\n [class.fng-tab--active]=\"tab?.active\"\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\n >\n <span class=\"fng-tab-content\">\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\n </span>\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\n </span>\n </button>\n <div class=\"fng-tab-scroller-divider-line\"></div>\n </div>\n </div>\n </div>\n <div class=\"fng-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n</ng-container>\n\n<ng-template #tabPanelContent>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\nexport enum PaginationType {\n Numeric = 'NUMERIC',\n Dots = 'DOTS'\n}\n\n@Component({\n selector: 'fng-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PaginationComponent {\n PaginationType = PaginationType;\n\n @Input() type: PaginationType = PaginationType.Numeric;\n @Input() pageCurrent = 0;\n @Input()\n set pageMax(value: number) {\n this.innerPageMax = value;\n this.dotArray = [...Array(value).fill(0).keys()];\n }\n get pageMax() {\n return this.innerPageMax;\n }\n\n @Output() changePage = new EventEmitter<number>();\n\n innerPageMax: number;\n dotArray: number[] = [];\n\n onBtnDown() {\n if (this.pageCurrent > 1) {\n this.pageCurrent--;\n this.changePage.emit(this.pageCurrent);\n }\n }\n\n onBtnUp() {\n if (this.pageCurrent < this.pageMax) {\n this.pageCurrent++;\n this.changePage.emit(this.pageCurrent);\n }\n }\n\n onDotClick(index: number) {\n this.pageCurrent = index + 1;\n this.changePage.emit(this.pageCurrent);\n }\n}\n","<ng-container *ngIf=\"type === PaginationType.Numeric\">\n <div class=\"fwe-pagination fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <button class=\"fwe-navigate-btn-down\" (click)=\"onBtnDown()\" [class.fwe-disabled]=\"pageCurrent <= 1\"></button>\n <span class=\"fwe-page-current\">{{ pageCurrent }}</span>\n <span class=\"fwe-page-max\">{{ pageMax }}</span>\n <button class=\"fwe-navigate-btn-up\" (click)=\"onBtnUp()\" [class.fwe-disabled]=\"pageCurrent >= pageMax\"></button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"type === PaginationType.Dots\">\n <div class=\"fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <div class=\"fwe-pagination\">\n <span\n *ngFor=\"let index of dotArray\"\n class=\"fwe-page-dot\"\n [class.fwe-selected]=\"index + 1 === pageCurrent\"\n (click)=\"onDotClick(index)\"\n ></span>\n </div>\n </div>\n</ng-container>\n","import { Directive, ElementRef, OnChanges, SimpleChanges, Input, AfterViewInit, NgZone, Renderer2, OnDestroy } from '@angular/core';\nimport SimpleBar from 'simplebar';\n\nexport interface ScrollableAware extends AfterViewInit {\n scrollableViewReady: boolean;\n}\n\n@Directive({\n selector: '[fngScrollable]'\n})\nexport class ScrollableDirective implements OnChanges, OnDestroy {\n @Input('fngScrollableScrollbarMinSize') scrollbarMinSize: number = 25;\n @Input('fngScrollableViewReady') viewReady: boolean;\n\n private sb: SimpleBar;\n private isScrolling = false;\n private resizeObserver: ResizeObserver;\n\n constructor(private el: ElementRef, private ngZone: NgZone, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.viewReady.currentValue === true) {\n this.initScrollbar();\n this.initResizeObserver();\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private initScrollbar() {\n const el: HTMLElement = this.el.nativeElement;\n // yes, we explict want to run outside angular to avoid unnecessary change detection cycles\n this.ngZone.runOutsideAngular(() => {\n this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });\n this.sb.getScrollElement().addEventListener(\n 'scroll',\n this.delay(() => {\n // triggered on scroll stop\n this.isScrolling = false;\n }),\n false\n );\n });\n this.updateMaxWidth();\n }\n\n private initResizeObserver() {\n const el: HTMLElement = this.el.nativeElement;\n this.resizeObserver = new ResizeObserver(() => {\n this.updateMaxWidth();\n });\n this.resizeObserver.observe(el);\n }\n\n private updateMaxWidth() {\n const el: HTMLElement = this.el.nativeElement;\n const wrapper = el.querySelector('.simplebar-content-wrapper');\n const width = el.getBoundingClientRect().width;\n this.renderer.setStyle(wrapper, 'max-width', width + 'px');\n }\n\n private delay(callback: any) {\n let timer: number;\n return () => {\n if (!this.isScrolling) {\n // triggered on scroll start\n this.isScrolling = true;\n }\n\n window.clearTimeout(timer);\n timer = window.setTimeout(callback, 50);\n };\n }\n}\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[fngClickOutside]'\n})\nexport class ClickOutsideDirective {\n constructor(private elRef: ElementRef) {}\n\n @Output()\n public clickOutside = new EventEmitter();\n\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: HTMLElement) {\n const inside = this.elRef.nativeElement.contains(targetElement);\n if (!inside) {\n this.clickOutside.emit(null);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(value: any): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { Component, Input, ViewChild, ElementRef, ViewEncapsulation, Output, EventEmitter, HostListener } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class SearchSuggestion {\n /**\n * a html-string. e.g.: '<b> hello </b>'\n */\n template: string;\n\n /**\n * This Value will be used as new query when the user selects the suggestion.\n */\n value: string;\n\n /**\n * Creates a basic Suggestion from a string. The first query match is highlighted by bold tags.\n * @param suggestionString The suggested string (should contain the whole query)\n * @param query The current query. This string will be highlighted.\n * @returns a html-string.\n */\n static basicSuggestion(suggestionString: string, query: string): SearchSuggestion {\n const i = suggestionString.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());\n let template = suggestionString;\n if (i != -1) {\n const boldStart = i;\n const boldEnd = i + query.length;\n const part1 = suggestionString.substring(0, boldStart);\n const part2 = suggestionString.substring(boldStart, boldEnd);\n const part3 = suggestionString.substring(boldEnd, suggestionString.length);\n template = part1 + '<b>' + part2 + '</b>' + part3;\n }\n return { value: suggestionString, template };\n }\n}\n\n/**\n * A custom form element for search inputs.\n */\n@Component({\n selector: 'fng-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchInputComponent {\n @ViewChild('inputElement')\n inputRef!: ElementRef<HTMLInputElement>;\n\n /**\n * the querrry was changed, update the suggetion list\n */\n @Output()\n readonly fngChange = new EventEmitter<string>();\n\n /**\n * Start search on this event\n */\n @Output()\n readonly fngSearch = new EventEmitter<string>();\n\n /**\n * The search input label.\n */\n @Input() label: string = '';\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n innerValue: string = '';\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n }\n\n /**\n * The list of suggestions\n */\n @Input()\n set suggestions(value: SearchSuggestion[]) {\n this.selectedSuggestionIndex = -1;\n this.innerSuggestions = value;\n }\n\n /**\n * The list of suggestions capped by 10 entries\n */\n get cappedSuggestions(): SearchSuggestion[] {\n return this.innerSuggestions.slice(0, 10);\n }\n\n innerSuggestions: SearchSuggestion[] = [];\n hideSuggestionList: boolean = false;\n\n // This is the index of the selected element in dhe suggestion list.\n selectedSuggestionIndex = -1;\n\n @HostListener('document:keydown', ['$event'])\n keyhandler(event: KeyboardEvent) {\n if (!this.cappedSuggestions || !this.cappedSuggestions.length) {\n return;\n }\n\n // navigate inside the suggestion list\n if (event.key === 'ArrowUp') {\n if (this.selectedSuggestionIndex > 0) {\n this.selectedSuggestionIndex--;\n } else {\n this.selectedSuggestionIndex = this.cappedSuggestions.length - 1;\n }\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\n }\n\n if (event.key === 'ArrowDown') {\n if (this.selectedSuggestionIndex >= this.cappedSuggestions.length - 1) {\n this.selectedSuggestionIndex = 0;\n } else {\n this.selectedSuggestionIndex++;\n }\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\n }\n }\n\n onClickOutside(): void {\n this.hideSuggestionList = true;\n }\n\n onFocus() {\n this.hideSuggestionList = false;\n }\n\n onInput(event: any) {\n this.selectedSuggestionIndex = -1;\n this.value = event.target.value;\n this.fngChange.emit(this.value);\n }\n\n // also triggert on \"Enter\" and \"Escape\"\n onSearch(event: any): void {\n event.stopPropagation();\n this.selectedSuggestionIndex = -1;\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n\n onSuggestionClick(suggestion: SearchSuggestion) {\n this.selectedSuggestionIndex = -1;\n this.value = suggestion.value;\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n\n clearQuery(): void {\n this.selectedSuggestionIndex = -1;\n this.value = '';\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n}\n","<div class=\"fwe-search-input fwe-w-100\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\n class=\"fwe-w-100\"\n #inputElement\n [attr.disabled]=\"disabled ? '' : null\"\n [placeholder]=\"label\"\n (focus)=\"onFocus()\"\n type=\"search\"\n (input)=\"onInput($event)\"\n (search)=\"onSearch($event)\"\n [value]=\"innerValue\"\n />\n <div class=\"fwe-search-icon\"></div>\n <div class=\"fwe-clear-icon\" (click)=\"clearQuery()\"></div>\n <div class=\"fwe-search-suggestions\" *ngIf=\"innerSuggestions?.length && !hideSuggestionList\">\n <div\n *ngFor=\"let suggestion of cappedSuggestions; let i = index\"\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | safeHtml\"></div>\n </div>\n <div class=\"fwe-ml-xxs\" *ngIf=\"innerSuggestions.length > 10\">...</div>\n </div>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fng-mobile-flyout-item',\n templateUrl: './mobile-flyout-item.component.html'\n})\nexport class MobileFlyoutItemComponent {\n @Input() icon: string = '';\n\n @Input() pageLink: string = '';\n\n public lastElement = false;\n\n public onNavigateCallback: ((pageName: string) => void) | undefined;\n\n onClick() {\n if (this.onNavigateCallback) {\n this.onNavigateCallback(this.pageLink);\n }\n }\n}\n","<a class=\"fwe-mobile-flyout-item\" [class.fwe-bb]=\"!lastElement\" (click)=\"onClick()\">\n <i *ngIf=\"icon\" [class]=\"'fwe-mr-xs fwe-icon fwe-icon-' + icon\"></i>\n <div class=\"fwe-flex-grow-1\" routerLinkActive=\"fwe-color-hero\">\n <ng-content></ng-content>\n </div>\n <i *ngIf=\"pageLink\" class=\"fwe-icon fwe-icon-arrows-right-2\"></i>\n</a>\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { MobileFlyoutItemComponent } from '../mobile-flyout-item/mobile-flyout-item.component';\n\n@Component({\n selector: 'fng-mobile-flyout-page',\n templateUrl: './mobile-flyout-page.component.html'\n})\nexport class MobileFlyoutPageComponent implements AfterContentInit {\n @ContentChildren(MobileFlyoutItemComponent) itemComponents!: QueryList<MobileFlyoutItemComponent>;\n\n @Input() name: string = '';\n\n public isfirstelement = false;\n public visible = false;\n public onNavigateCallback: ((pageName: string) => void) | undefined;\n\n ngAfterContentInit(): void {\n if (!this.itemComponents) {\n return;\n }\n\n // register click-callbacks\n this.itemComponents.forEach(s => {\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\n });\n if (this.itemComponents.last) {\n this.itemComponents.last.lastElement = true;\n }\n }\n\n onNavigate(pageName: string) {\n if (this.onNavigateCallback) {\n this.onNavigateCallback(pageName);\n }\n }\n\n onBack() {\n this.visible = false;\n }\n}\n","<div class=\"fwe-mobile-flyout-page\" [class.fwe-opened]=\"visible\">\n <div class=\"fwe-page-back\" *ngIf=\"!isfirstelement\" (click)=\"onBack()\">\n <i></i>\n <div>Back</div>\n </div>\n <div class=\"fwe-mobile-flyout-item-container\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, QueryList } from '@angular/core';\nimport { MobileFlyoutPageComponent } from './mobile-flyout-page/mobile-flyout-page.component';\n\n@Component({\n selector: 'fng-mobile-flyout',\n templateUrl: './mobile-flyout.component.html'\n})\nexport class MobileFlyoutComponent implements AfterContentInit {\n @ContentChildren(MobileFlyoutPageComponent) pageComponents!: QueryList<MobileFlyoutPageComponent>;\n\n isOpen = false;\n\n ngAfterContentInit(): void {\n if (!this.pageComponents) {\n return;\n }\n\n // register click-callbacks and open the first element\n this.pageComponents.forEach((s, i) => {\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\n s.isfirstelement = i === 0;\n s.visible = i === 0;\n });\n }\n\n onNavigate(pageName: string) {\n // handle clicks on router links\n if (!pageName) {\n this.isOpen = false;\n }\n\n // handle page-navigation clicks\n const nextPage = this.pageComponents.find(p => p.name === pageName);\n if (nextPage) {\n nextPage.visible = true;\n }\n }\n}\n","<div class=\"fwe-mobile-flyout\" (clickOutside)=\"isOpen = false\" fngClickOutside>\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"isOpen = !isOpen\"></button>\n\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-accordion-item-body',\n templateUrl: './accordion-item-body.component.html',\n styleUrls: ['./accordion-item-body.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemBodyComponent {\n // parentId will be set by accordion item this body belongs to\n id: string = '';\n}\n","<div\n role=\"region\"\n [attr.id]=\"id + '-body'\"\n [attr.aria-labelledby]=\"id + '-header'\"\n class=\"fng-accordion-item-body\"\n>\n <ng-content></ng-content>\n <div class=\"fng-accordion-item-body-spacer-bottom\"></div>\n</div>\n","import { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum AccordionHeaderActions {\n Toggle = 'toggle'\n}\n\n@Component({\n selector: 'fng-accordion-item-header',\n templateUrl: './accordion-item-header.component.html',\n styleUrls: ['./accordion-item-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemHeaderComponent implements OnDestroy {\n // parentId will be set by accordion item this header belongs to\n id: string = '';\n private actions: Subject<AccordionHeaderActions> = new Subject<AccordionHeaderActions>();\n actions$: Observable<AccordionHeaderActions> = this.actions.asObservable();\n\n ngOnDestroy() {\n this.actions.complete();\n }\n\n toggle() {\n this.actions.next(AccordionHeaderActions.Toggle);\n }\n}\n","<div\n class=\"fng-accordion-item-header\"\n role=\"button\"\n tabindex=\"0\"\n [attr.id]=\"id + '-header'\"\n [attr.aria-expanded]=\"\"\n [attr.aria-controls]=\"id + '-body'\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n","import { Subscription } from 'rxjs';\nimport { AccordionActions, AccordionComponent } from './../accordion.component';\nimport {\n Component,\n ContentChild,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ElementRef,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport { AccordionItemBodyComponent } from './accordion-item-body/accordion-item-body.component';\nimport { AccordionHeaderActions, AccordionItemHeaderComponent } from './accordion-item-header/accordion-item-header.component';\n\n@Component({\n selector: 'fng-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemComponent implements OnChanges, AfterViewInit {\n static nextId = 0;\n componentId = `accordion-item-${++AccordionItemComponent.nextId}`;\n expanded: boolean = false;\n _linkText: string = '';\n get linkText() {\n if (this.expanded === true) {\n this._linkText = this?.accordion?.showLess || '';\n } else {\n this._linkText = this?.accordion?.showMore || '';\n }\n return this._linkText;\n }\n\n @ContentChild(AccordionItemHeaderComponent) header: AccordionItemHeaderComponent;\n @ContentChild(AccordionItemBodyComponent) body: AccordionItemBodyComponent;\n\n // compound id of parent id and this component id to get a unique identifier in dom\n id: string;\n // parentId will be set by accordion this item belongs to\n parentId: string = '';\n private accordion: AccordionComponent;\n private accordionSubscription: Subscription;\n private accordionItemHeaderSubscription: Subscription;\n private element: HTMLElement;\n private pristine: boolean = true;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n const element: HTMLElement = this.elementRef.nativeElement;\n this.element = element.querySelector('.fng-accordion-item-body');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.accordion?.currentValue != null) {\n const accordion = changes.accordion.currentValue;\n this.accordion = accordion;\n if (this.accordion) {\n this.subscribeToAccordionActions();\n this.subscribeToAccordionItemHeaderActions();\n }\n }\n\n if (changes?.parentId?.currentValue != null) {\n const parentId = changes.parentId.currentValue;\n this.id = `${parentId}-${this.componentId}`;\n this.header.id = this.id;\n this.body.id = this.id;\n }\n }\n\n toggle(): void {\n // save the new expanded state in another var, because it may be overwritten when closeAll is called\n const newExpandedState = !this.expanded;\n const changeExpandedState = () => {\n this.expanded = newExpandedState;\n if (this.expanded === true) {\n this.expandItem();\n } else {\n this.collapseItem();\n }\n };\n\n // if the accordion allows only one expanded item at once we first have to close all items\n if (this.accordion != null && this.accordion.multi === false) {\n this.accordion.closeAll();\n /// run in new macrotask to avoid render issues when transitioning to new expanded state\n setTimeout(() => {\n changeExpandedState();\n });\n } else {\n changeExpandedState();\n }\n }\n\n collapseItem() {\n // get the height of item body regardless of its actual size\n const itemHeight = this.element.scrollHeight;\n // set the actual item height as style to avoid transition from height: auto\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\n setTimeout(() => {\n this.renderer.setStyle(this.element, 'height', 0 + 'px');\n });\n }\n\n expandItem() {\n // if the item was expanded once, we have to rerun change detection before expanding again\n // because the content inside may have changed\n if (this.pristine === false) {\n this.cd.detectChanges();\n }\n\n // get the height of item body regardless of its actual size\n const itemHeight = this.element.scrollHeight;\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\n setTimeout(() => {\n this.renderer.setStyle(this.element, 'height', null);\n this.pristine = false;\n }, 300);\n }\n\n private handleAction(action: AccordionActions | AccordionHeaderActions) {\n switch (action) {\n case AccordionActions.OpenAll:\n this.expanded = true;\n this.expandItem();\n break;\n case AccordionActions.CloseAll:\n if (this.expanded === true) {\n this.expanded = false;\n this.collapseItem();\n }\n break;\n case AccordionHeaderActions.Toggle:\n this.toggle();\n break;\n default:\n break;\n }\n }\n\n private subscribeToAccordionActions() {\n if (this.accordionSubscription != null) {\n this.accordionSubscription.unsubscribe();\n }\n this.accordionSubscription = this.accordion.actions$.subscribe(action => {\n this.handleAction(action);\n });\n }\n\n private subscribeToAccordionItemHeaderActions() {\n if (this.accordionItemHeaderSubscription != null) {\n this.accordionItemHeaderSubscription.unsubscribe();\n }\n this.accordionItemHeaderSubscription = this.header.actions$.subscribe(action => {\n this.handleAction(action);\n });\n }\n}\n","<div\n class=\"fng-accordion-item\"\n [class.fng-accordion-item--collapsed]=\"!expanded\"\n [class.fng-accordion-item--expanded]=\"expanded === true\"\n>\n <ng-content></ng-content>\n <div class=\"fng-accordion-item-link\">{{ linkText }}</div>\n</div>\n","import { Component, ContentChildren, QueryList, SimpleChange, ViewEncapsulation, AfterViewInit, Input, OnDestroy } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\nimport { AccordionItemComponent } from './accordion-item/accordion-item.component';\n\nexport enum AccordionActions {\n OpenAll = 'openAll',\n CloseAll = 'closeAll'\n}\n\n@Component({\n selector: 'fng-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionComponent implements AfterViewInit, OnDestroy {\n static nextId = 0;\n readonly componentId = `accordion-${++AccordionComponent.nextId}`;\n\n private actions: Subject<AccordionActions> = new Subject<AccordionActions>();\n actions$: Observable<AccordionActions> = this.actions.asObservable();\n\n // if the accordion should only allow one expanded item at once this property can be set to false\n @Input('fngAccordionKeepItemsOpen') multi: boolean = true;\n @Input('fngAccordionShowMoreText') showMore: string = 'Show more';\n @Input('fngAccordionShowLessText') showLess: string = 'Show less';\n @ContentChildren(AccordionItemComponent) items: QueryList<AccordionItemComponent>;\n\n ngAfterViewInit(): void {\n this.items.forEach(item => {\n item.ngOnChanges({\n parentId: new SimpleChange(null, this.componentId, null),\n accordion: new SimpleChange(null, this, null)\n });\n });\n }\n\n ngOnDestroy() {\n this.actions.complete();\n }\n\n openAll(): void {\n if (this.multi) {\n this.actions.next(AccordionActions.OpenAll);\n }\n }\n\n closeAll(): void {\n this.actions.next(AccordionActions.CloseAll);\n }\n}\n","<div class=\"fng-accordion\">\n <ng-content></ng-content>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrls: ['./accordion-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionHeaderComponent {}\n","<div class=\"fng-accordion-header\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\n\nimport { ButtonComponent } from './buttons/button/button.component';\nimport { LinkButtonComponent } from './buttons/link-button/link-button.component';\nimport { BreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';\nimport { ChipContainerComponent } from './chips/chip-container/chip-container.component';\nimport { ChipComponent } from './chips/chip/chip.component';\nimport { TableHeaderCellDirective } from './table-header-cell/table-header-cell.directive';\nimport { StepperVerticalComponent } from './stepper-vertical/stepper-vertical.component';\nimport { StepVerticalComponent } from './stepper-vertical/step-vertical/step-vertical.component';\nimport { StepperHorizontalComponent } from './stepper-horizontal/stepper-horizontal.component';\nimport { StepHorizontalComponent } from './stepper-horizontal/step-horizontal/step-horizontal.component';\nimport { PopoverComponent } from './popovers/popover/popover.component';\nimport { PopoverMenuComponent } from './popovers/popover-menu/popover-menu.component';\nimport { TooltipDirective } from './popovers/tooltip/tooltip.directive';\nimport { PopoverContentComponent } from './popovers/popover-content/popover-content.component';\nimport { PopoverContentDirective } from './popovers/popover-content/popover-content.directive';\nimport { LegendComponent } from './popovers/legend/legend.component';\nimport { LegendDirective } from './popovers/legend/legend.directive';\nimport { ProgressComponent } from './progress/progress.component';\nimport { TabsComponent } from './tabs/tabs.component';\nimport { TabPaneComponent } from './tabs/tab-pane/tab-pane.component';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { ScrollableDirective } from './scroll/scrollable.directive';\nimport { SearchInputComponent } from './search-input/search-input.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { MobileFlyoutComponent } from './mobile-flyout/mobile-flyout.component';\nimport { MobileFlyoutPageComponent } from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\nimport { MobileFlyoutItemComponent } from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\nimport { SafeHtmlPipe } from './search-input/safe-html.pipe';\nimport { AccordionComponent } from './accordion/accordion.component';\nimport { AccordionHeaderComponent } from './accordion/accordion-header/accordion-header.component';\nimport { AccordionItemComponent } from './accordion/accordion-item/accordion-item.component';\nimport { AccordionItemHeaderComponent } from './accordion/accordion-item/accordion-item-header/accordion-item-header.component';\nimport { AccordionItemBodyComponent } from './accordion/accordion-item/accordion-item-body/accordion-item-body.component';\n\nexport * from './buttons/button/button.component';\nexport * from './buttons/link-button/link-button.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './loading-indicator/loading-indicator.component';\nexport * from './chips/chip/chip.component';\nexport * from './chips/chip-container/chip-container.component';\nexport * from './table-header-cell/table-header-cell.directive';\nexport * from './stepper-vertical/stepper-vertical.component';\nexport * from './stepper-vertical/step-vertical/step-vertical.component';\nexport * from './stepper-horizontal/stepper-horizontal.component';\nexport * from './stepper-horizontal/step-horizontal/step-horizontal.component';\nexport * from './popovers/popover/popover.component';\nexport * from './popovers/popover-menu/popover-menu.component';\nexport * from './popovers/tooltip/tooltip.directive';\nexport * from './popovers/popover-content/popover-content.component';\nexport * from './popovers/popover-content/popover-content.directive';\nexport * from './popovers/legend/legend.component';\nexport * from './popovers/legend/legend.directive';\nexport * from './popovers/popover.models';\nexport * from './progress/progress.component';\nexport * from './tabs/tabs.component';\nexport * from './tabs/tab-pane/tab-pane.component';\nexport * from './pagination/pagination.component';\nexport * from './scroll';\nexport * from './search-input/search-input.component';\nexport * from './search-input/safe-html.pipe';\nexport * from './click-outside.directive';\nexport * from './mobile-flyout/mobile-flyout.component';\nexport * from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\nexport * from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\nexport * from './accordion';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n LinkButtonComponent,\n BreadcrumbComponent,\n LoadingIndicatorComponent,\n ChipContainerComponent,\n ChipComponent,\n PaginationComponent,\n TableHeaderCellDirective,\n StepperVerticalComponent,\n StepVerticalComponent,\n StepperHorizontalComponent,\n StepHorizontalComponent,\n PopoverComponent,\n PopoverMenuComponent,\n TooltipDirective,\n PopoverContentComponent,\n PopoverContentDirective,\n LegendComponent,\n LegendDirective,\n ProgressComponent,\n TabsComponent,\n TabPaneComponent,\n ScrollableDirective,\n SearchInputComponent,\n MobileFlyoutComponent,\n MobileFlyoutPageComponent,\n MobileFlyoutItemComponent,\n SafeHtmlPipe,\n ClickOutsideDirective,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionItemComponent,\n AccordionItemHeaderComponent,\n AccordionItemBodyComponent\n ],\n imports: [RouterModule, CommonModule, OverlayModule, PortalModule],\n exports: [\n ButtonComponent,\n LinkButtonComponent,\n BreadcrumbComponent,\n LoadingIndicatorComponent,\n ChipContainerComponent,\n ChipComponent,\n PaginationComponent,\n TableHeaderCellDirective,\n StepperVerticalComponent,\n StepVerticalComponent,\n StepperHorizontalComponent,\n StepHorizontalComponent,\n PopoverComponent,\n PopoverMenuComponent,\n TooltipDirective,\n PopoverContentComponent,\n PopoverContentDirective,\n LegendComponent,\n LegendDirective,\n ProgressComponent,\n TabsComponent,\n TabPaneComponent,\n ScrollableDirective,\n SearchInputComponent,\n SafeHtmlPipe,\n ClickOutsideDirective,\n MobileFlyoutComponent,\n MobileFlyoutPageComponent,\n MobileFlyoutItemComponent,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionItemComponent,\n AccordionItemHeaderComponent,\n AccordionItemBodyComponent\n ],\n providers: [],\n bootstrap: [PopoverComponent]\n})\nexport class FestoAngularComponentsModule {}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n forwardRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fng-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() name: string = null;\n @Input() large = false;\n @Input() valid = true;\n @Input() labelPosition: 'before' | 'after' | 'below' = 'after';\n\n private innerId = `fng-checkbox-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-checkbox-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this.isChecked = value;\n this.changeDetector.markForCheck();\n }\n }\n private isChecked = false;\n\n @Input()\n get disabled() {\n return this.isDisabled;\n }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this.isDisabled = newValue;\n this.changeDetector.markForCheck();\n }\n }\n private isDisabled = false;\n\n @Input()\n get indeterminate(): boolean {\n return this.isIndeterminate;\n }\n set indeterminate(value: boolean) {\n const changed = value !== this.isIndeterminate;\n this.isIndeterminate = coerceBooleanProperty(value);\n if (changed) {\n this.indeterminateChange.emit(this.isIndeterminate);\n }\n this.changeDetector.markForCheck();\n }\n private isIndeterminate = false;\n\n @Input() value: string;\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n private isRequired: boolean;\n\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => any;\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInteractionEvent(event: Event) {\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.isIndeterminate = false;\n this.indeterminateChange.emit(this.isIndeterminate);\n });\n }\n if (!this.valid) {\n this.valid = true;\n }\n if (this.required) {\n this.required = false;\n }\n this.checked = !this.checked;\n if (this.controlValueAccessorChangeFn != null) {\n this.controlValueAccessorChangeFn(this.checked);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.change.emit(this.checked);\n }\n }\n}\n","<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n forwardRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fng-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ]\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() name: string = null;\n @Input() large = false;\n @Input() labelPosition: 'before' | 'after' | 'below' = 'before';\n\n private innerId = `fng-switch-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this.isChecked = value;\n this.changeDetector.markForCheck();\n }\n }\n private isChecked = false;\n\n @Input()\n get disabled() {\n return this.isDisabled;\n }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this.isDisabled = newValue;\n this.changeDetector.markForCheck();\n }\n }\n private isDisabled = false;\n\n @Input() value: string;\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n private isRequired: boolean;\n\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => any;\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInteractionEvent(event: Event) {\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.required) {\n this.required = false;\n }\n this.checked = !this.checked;\n if (this.controlValueAccessorChangeFn != null) {\n this.controlValueAccessorChangeFn(this.checked);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.change.emit(this.checked);\n }\n }\n}\n","<label\n [ngClass]=\"{\n 'fwe-switch-container': true,\n 'fwe-checked': checked,\n 'fwe-disabled': disabled,\n 'fwe-switch-label-below': labelPosition == 'below',\n 'fwe-switch-label-before': labelPosition == 'before',\n 'fwe-switch-lg': large\n }\"\n>\n <input\n title=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n [disabled]=\"disabled\"\n />\n <div class=\"fwe-switch-track\"></div>\n <div class=\"fwe-switch-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nexport type UniqueSelectionDispatcherListener = (id: string, name: string) => void;\n\n@Injectable({ providedIn: 'root' })\nexport class UniqueSelectionDispatcher implements OnDestroy {\n private listeners: UniqueSelectionDispatcherListener[] = [];\n\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id: string, name: string) {\n for (const listener of this.listeners) {\n listener(id, name);\n }\n }\n\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener: UniqueSelectionDispatcherListener): () => void {\n this.listeners.push(listener);\n return () => {\n this.listeners = this.listeners.filter((registered: UniqueSelectionDispatcherListener) => {\n return listener !== registered;\n });\n };\n }\n\n ngOnDestroy() {\n this.listeners = [];\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n ChangeDetectionStrategy,\n Optional,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n OnDestroy,\n ViewEncapsulation,\n Directive,\n forwardRef,\n AfterContentInit,\n ContentChildren,\n HostBinding\n} from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { UniqueSelectionDispatcher } from '../unique-selection-dispatcher';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class RadioChange {\n constructor(public source: RadioComponent, public value: any) {}\n}\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[fngRadioGroup]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupDirective),\n multi: true\n }\n ]\n})\nexport class RadioGroupDirective implements AfterContentInit, ControlValueAccessor {\n @HostBinding('class.fwe-radio-group') hostClass = true;\n @HostBinding('attr.role') role = 'radiogroup';\n\n @Output()\n readonly change = new EventEmitter<RadioChange>();\n\n @ContentChildren(forwardRef(() => RadioComponent), { descendants: true })\n radios: QueryList<RadioComponent>;\n\n @Input()\n get name(): string {\n return this.innerName;\n }\n set name(value: string) {\n this.innerName = value;\n this.updateRadioButtonNames();\n }\n\n @Input()\n get large() {\n return this.isLarge;\n }\n set large(v) {\n this.isLarge = v;\n this.updateRadioButtonSize();\n }\n\n @Input()\n get labelPosition() {\n return this.innerLabelPosition;\n }\n set labelPosition(v) {\n this.innerLabelPosition = v;\n this.markRadiosForCheck();\n }\n\n @Input()\n get value(): any {\n return this.innerValue;\n }\n set value(newValue: any) {\n if (this.innerValue !== newValue) {\n this.innerValue = newValue;\n this.updateSelectedRadioFromValue();\n this.checkSelectedRadioButton();\n }\n }\n\n @Input()\n get selected() {\n return this.isSelected;\n }\n set selected(selected: any | null) {\n this.isSelected = selected;\n this.value = selected ? selected.value : null;\n this.checkSelectedRadioButton();\n }\n\n @Input()\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value) {\n this.isDisabled = coerceBooleanProperty(value);\n this.markRadiosForCheck();\n }\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n this.markRadiosForCheck();\n }\n\n private isLarge = false;\n private isDisabled = false;\n private isRequired = false;\n private innerValue: any = null;\n private isInitialized = false;\n private isSelected: RadioComponent | null = null;\n private innerName = `fngRadioGroup-${nextUniqueId++}`;\n private innerLabelPosition: 'before' | 'after' | 'below' = 'before';\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => void;\n\n ngAfterContentInit() {\n this.isInitialized = true;\n }\n\n checkSelectedRadioButton() {\n if (this.isSelected && !this.isSelected.checked) {\n this.isSelected.checked = true;\n }\n }\n\n touch() {\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n emitChangeEvent(): void {\n if (this.isInitialized) {\n this.change.emit(new RadioChange(this.isSelected, this.innerValue));\n }\n }\n\n markRadiosForCheck() {\n if (this.radios) {\n this.radios.forEach(radio => radio.markForCheck());\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n this.changeDetector.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n\n private updateRadioButtonSize(): void {\n if (this.radios) {\n this.radios.forEach(radio => {\n radio.large = this.large;\n radio.markForCheck();\n });\n }\n }\n\n private updateRadioButtonNames(): void {\n if (this.radios) {\n this.radios.forEach(radio => {\n radio.name = this.name;\n radio.markForCheck();\n });\n }\n }\n\n private updateSelectedRadioFromValue(): void {\n const isAlreadySelected = this.isSelected !== null && this.isSelected.value === this.innerValue;\n if (this.radios && !isAlreadySelected) {\n this.isSelected = null;\n this.radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this.isSelected = radio;\n }\n });\n }\n }\n}\n\n@Component({\n selector: 'fng-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioComponent implements OnInit, OnDestroy {\n @Input() name: string;\n\n private innerId = `fng-radio-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-radio-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this.isChecked !== newCheckedState) {\n this.isChecked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n this.radioGroup.selected = null;\n }\n\n if (newCheckedState) {\n this.radioDispatcher.notify(this.id, this.name);\n }\n this.changeDetector.markForCheck();\n }\n }\n\n @Input()\n get value(): any {\n return this.innerValue;\n }\n set value(value: any) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n @Input()\n get large() {\n return this.isLarge || (this.radioGroup != null && this.radioGroup.large);\n }\n set large(value) {\n this.isLarge = value;\n }\n\n @Input()\n get labelPosition() {\n return this.innerLabelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'before';\n }\n set labelPosition(value) {\n this.innerLabelPosition = value;\n }\n\n @Input()\n get disabled(): boolean {\n return this.isDisabled || (this.radioGroup != null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n const newDisabledState = coerceBooleanProperty(value);\n if (this.isDisabled !== newDisabledState) {\n this.isDisabled = newDisabledState;\n this.changeDetector.markForCheck();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.isRequired || (this.radioGroup && this.radioGroup.required);\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n\n @Output() readonly change = new EventEmitter<RadioChange>();\n\n radioGroup: RadioGroupDirective;\n\n private isLarge = false;\n private isChecked = false;\n private isDisabled: boolean;\n private isRequired: boolean;\n private innerValue: any = null;\n private innerLabelPosition: 'before' | 'after' | 'below';\n private removeUniqueSelectionListener: () => void;\n\n constructor(\n @Optional() radioGroup: RadioGroupDirective,\n private changeDetector: ChangeDetectorRef,\n private radioDispatcher: UniqueSelectionDispatcher\n ) {\n this.radioGroup = radioGroup;\n this.removeUniqueSelectionListener = radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n this.checked = this.radioGroup.value === this.innerValue;\n this.name = this.radioGroup.name;\n }\n }\n\n ngOnDestroy() {\n if (this.removeUniqueSelectionListener != null) {\n this.removeUniqueSelectionListener();\n }\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n }\n\n onInputChange(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this.emitChangeEvent();\n\n if (this.radioGroup) {\n if (typeof this.radioGroup?.controlValueAccessorChangeFn === 'function') {\n this.radioGroup?.controlValueAccessorChangeFn(this.value);\n }\n\n if (groupValueChanged) {\n this.radioGroup.emitChangeEvent();\n }\n }\n }\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n private emitChangeEvent(): void {\n this.change.emit(new RadioChange(this, this.innerValue));\n }\n}\n","<label\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-radio': true,\n 'fwe-radio-label-below': labelPosition == 'below',\n 'fwe-radio-label-before': labelPosition == 'before',\n 'fwe-radio-lg': large\n }\"\n>\n <input\n type=\"radio\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-radio-checkmark\"></div>\n <div class=\"fwe-radio-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { Component, Input, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'fng-select-option',\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss']\n})\nexport class SelectOptionComponent implements AfterViewInit {\n @Input() value: any;\n @ViewChild('root') elementRef!: ElementRef;\n\n el: HTMLElement;\n\n ngAfterViewInit(): void {\n this.el = this.elementRef.nativeElement;\n }\n\n async update(): Promise<HTMLElement> {\n return await Promise.resolve(this.el);\n }\n}\n","<span #root>\n <ng-content></ng-content>\n</span>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction defaultValueKey(key: string): string {\n return key == null ? 'value' : key;\n}\n\nfunction defaultTextKey(key: string): string {\n return key == null ? 'text' : key;\n}\n\n@Pipe({\n name: 'fngChipText',\n pure: false\n})\nexport class ChipTextPipe implements PipeTransform {\n transform(value: any, options: any[], optionsValueKey?: string, optionsTextKey?: string): string {\n let chipText = '';\n optionsValueKey = defaultValueKey(optionsValueKey);\n optionsTextKey = defaultTextKey(optionsTextKey);\n\n options.forEach((_: any, index: number) => {\n if (JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value[optionsValueKey])) {\n chipText = options[index][optionsTextKey];\n }\n\n if (JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value)) {\n chipText = options[index][optionsTextKey];\n }\n });\n\n return chipText;\n }\n}\n","import {\n Component,\n Input,\n HostBinding,\n OnInit,\n ViewEncapsulation,\n Renderer2,\n Inject,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n QueryList,\n ContentChildren,\n Output,\n EventEmitter,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectOptionComponent } from './select-option/select-option.component';\n\nexport interface SelectOption {\n value: any;\n text: string;\n}\n\n@Component({\n selector: 'fng-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n static nextId = 0;\n\n protected _disabled = false;\n protected _required = false;\n protected _value: any;\n protected body: HTMLElement;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n if (this.multiple === true) {\n const index = this._value.indexOf(value);\n if (index === -1) {\n this._value.push(value);\n this.checked.set(value, 'checked');\n } else {\n this._value.splice(index, 1);\n this.checked.set(value, null);\n }\n } else {\n this._value = value;\n }\n\n if (this.onChange != null) {\n this.onChange(this.value);\n }\n this.fngChange.emit(this.value);\n }\n\n onChange: (_: any) => void;\n onTouched: () => void;\n\n touched = false;\n\n @HostBinding()\n id = `input-control-${++SelectComponent.nextId}`;\n\n @Input() multiple: boolean;\n @Input() size: number;\n @Input() options = [];\n @Input() optionsValueKey: string;\n @Input() optionsTextKey: string;\n @Input() optionObjectAsValue: boolean;\n @Input() error: string;\n @Input() label = '';\n @Input() hideLabel = false;\n @Input() hint = '';\n @Input() resetOption: string;\n @ContentChildren(SelectOptionComponent) fngSelectOptions: QueryList<SelectOptionComponent>;\n @ViewChild('div') elementRef: ElementRef;\n @Output() fngChange = new EventEmitter<any>();\n\n selectPanelClasses: string[] = ['fng-select-panel'];\n showOptions = false;\n empty: boolean;\n triggerWidth: any;\n checked = new Map();\n hasProjectedOptions = false;\n projectedHtml = [];\n\n constructor(@Inject(DOCUMENT) protected document: any, protected renderer: Renderer2, protected cd: ChangeDetectorRef) {\n this.body = (this.document as Document).body;\n }\n\n ngOnInit(): void {\n if (this.size != null) {\n this.selectPanelClasses.push('fng-select-panel-options-' + this.size);\n }\n\n if (this.multiple === true) {\n this._value = [];\n this.selectPanelClasses.push('fng-select-panel-multiple');\n }\n }\n\n ngAfterViewInit(): void {\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\n this.initProjectedOptions();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(shouldDisable: boolean): void {\n this.disabled = shouldDisable;\n }\n\n writeValue(value: any | null): void {\n if (value === undefined) {\n return;\n }\n\n if (this.multiple === true) {\n this._value = value;\n // set checkmarks in overlay panel, so that it is displayed correctly when user opens it\n value?.forEach(v => {\n this.checked.set(v, 'checked');\n });\n } else {\n this._value = value;\n }\n }\n\n getOptionText(index: number) {\n if (this.options[index] != null && this.options[index][this.optionsTextKey] != null) {\n return this.options[index][this.optionsTextKey];\n }\n }\n\n getOptionValue(index: number) {\n // if set to true the complete option object is returned as value\n if (this.optionObjectAsValue === true) {\n return this.options[index];\n }\n\n // try to access standard property 'value'\n const v = this.options[index]['value'];\n\n if (v !== undefined) {\n return v;\n }\n\n // try to map the value to a property of the option by given key\n if (this.options[index] != null && this.options[index][this.optionsValueKey] != null) {\n return this.options[index][this.optionsValueKey];\n }\n }\n\n removeChip(event: any, chip: string) {\n event.stopPropagation();\n if (!this._disabled) {\n this.markAsTouched();\n this.value = chip;\n }\n }\n\n onOpenedChange(isOpen: boolean) {\n if (isOpen) {\n this.renderer.addClass(this.body, 'fng-select-panel-open');\n } else {\n this.renderer.removeClass(this.body, 'fng-select-panel-open');\n }\n }\n\n close() {\n this.showOptions = false;\n this.isEmpty();\n }\n\n toggle() {\n if (false === this.disabled) {\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\n this.showOptions = !this.showOptions;\n this.onOpenedChange(this.showOptions);\n this.isEmpty();\n }\n }\n\n select(value: any, event: Event) {\n if (!this._disabled) {\n this.markAsTouched();\n event.stopPropagation();\n this.value = value;\n\n if (this.multiple !== true) {\n // closes overlay panel\n this.toggle();\n }\n }\n }\n\n markAsTouched() {\n if (!this.touched) {\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.touched = true;\n }\n }\n\n onContentChange(changes: MutationRecord[]) {\n if (changes != null) {\n this.options = [];\n this.projectedHtml = [];\n this.initProjectedOptions();\n }\n }\n\n protected initProjectedOptions() {\n if (this.fngSelectOptions.length > 0) {\n this.hasProjectedOptions = true;\n this.fngSelectOptions.forEach(component => {\n component.update().then(el => {\n this.options.push({ value: component.value, text: el.textContent.trim() });\n this.projectedHtml.push(el.innerHTML);\n this.cd.detectChanges();\n });\n });\n }\n this.cd.detectChanges();\n }\n\n protected isEmpty() {\n if (!this.showOptions && (!this._value || '' === this._value)) {\n this.empty = true;\n } else {\n this.empty = false;\n }\n }\n}\n","<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\" (cdkObserveContent)=\"onContentChange($event)\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * A custom form element for text inputs.\n */\n@Component({\n selector: 'fng-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextInputComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TextInputComponent implements OnInit, ControlValueAccessor {\n /**\n * The text input label.\n */\n @Input() label: string;\n\n /**\n * A string specifying the type of control to render.\n */\n @Input()\n get type(): string {\n return this.innerType;\n }\n set type(value: string) {\n const supported = ['text', 'number', 'password', 'date', 'time', 'datetime-local'];\n if (value != null && supported.indexOf(value) !== -1) {\n this.innerType = value;\n } else {\n this.innerType = 'text';\n }\n }\n protected innerType = 'text';\n\n @Input()\n get readonly(): boolean {\n return this.innerReadonly;\n }\n set readonly(value: boolean) {\n this.innerReadonly = coerceBooleanProperty(value);\n }\n private innerReadonly = false;\n\n @Input() step: number;\n @Input() min: number;\n @Input() max: number;\n @Input() tabindex: number;\n @Input() placeholder: string;\n @Input() name: string;\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n\n if (this.focused) {\n this.focused = false;\n }\n }\n protected innerDisabled = false;\n\n /**\n * The inner value.\n */\n innerValue: string;\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n /**\n * Error description when invalid.\n */\n @Input() error: string;\n\n /**\n * Hint description when valid.\n */\n @Input() hint: string;\n\n @ViewChild('inputElement') inputElement: ElementRef;\n\n /**\n * When true the text input has focus.\n */\n focused: boolean;\n\n /**\n * Triggered on change.\n */\n onChange: (value: string) => void;\n\n /**\n * Triggered on touch.\n */\n onTouched: () => void;\n\n /**\n * Called on component initialisation.\n */\n ngOnInit(): void {\n this.onBlur();\n }\n\n /**\n * Writes the value.\n * @param value The value.\n */\n writeValue(value: string): void {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n }\n\n /**\n * Registers a function to onChange.\n * @param fn The registered function.\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a function to onTouched.\n * @param fn The registered function.\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Called when the text input is in focus.\n */\n onFocus() {\n this.focused = true;\n }\n\n onInput(event: any) {\n this.value = event.target.value;\n }\n\n /**\n * Called when the text input blurs.\n */\n onBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n\n /**\n * Sets the disabled state.\n * @param isDisabled When true the control is disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label class=\"fwe-input-text\" [class.fwe-no-pointer-events]=\"readonly === true\">\n <input\n #inputElement\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.type]=\"type\"\n [attr.step]=\"step\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n [value]=\"value\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint; else projectedHint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error; else projectedError\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n\n <ng-template #projectedHint>\n <span class=\"fwe-input-text-info fng-projected\"><ng-content select=\".fng-hint\"></ng-content></span>\n </ng-template>\n\n <ng-template #projectedError>\n <span class=\"fwe-input-text-invalid fng-projected\"><ng-content select=\".fng-error\"></ng-content></span>\n </ng-template>\n</label>\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\n\n/**\n * A custom form element for text inputs.\n */\n@Component({\n selector: 'fng-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TextAreaComponent implements OnInit, ControlValueAccessor {\n /**\n * The text input label.\n */\n @Input() label: string;\n\n @Input()\n get readonly(): boolean {\n return this.innerReadonly;\n }\n set readonly(value: boolean) {\n this.innerReadonly = coerceBooleanProperty(value);\n }\n private innerReadonly = false;\n\n @Input() placeholder: string;\n @Input() tabindex: number;\n @Input() name: string;\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n\n if (this.focused) {\n this.focused = false;\n }\n }\n protected innerDisabled = false;\n\n /**\n * The inner value.\n */\n innerValue: string;\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n /**\n * Error description when invalid.\n */\n @Input() error: string;\n\n /**\n * Hint description when valid.\n */\n @Input() hint: string;\n\n /**\n * the height is managed by classes. the last one is \"fwe-row-10\"\n */\n @Input()\n get rows(): number {\n return this.innerRows;\n }\n set rows(value: number) {\n const v = coerceNumberProperty(value);\n this.innerRows = v > 10 ? 10 : v;\n }\n protected innerRows = 3;\n\n @Input() maxlength: number;\n\n @ViewChild('inputElement') inputElement: ElementRef;\n\n /**\n * When true the text input has focus.\n */\n focused: boolean;\n\n /**\n * Triggered on change.\n */\n onChange: (value: string) => void;\n\n /**\n * Triggered on touch.\n */\n onTouched: () => void;\n\n /**\n * Called on component initialisation.\n */\n ngOnInit(): void {\n this.onBlur();\n }\n\n /**\n * Writes the value.\n * @param value The value.\n */\n writeValue(value: string): void {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n }\n\n /**\n * Registers a function to onChange.\n * @param fn The registered function.\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a function to onTouched.\n * @param fn The registered function.\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Called when the text input is in focus.\n */\n onFocus() {\n this.focused = true;\n }\n\n onInput(event: any) {\n this.value = event.target.value;\n\n // The height is adjusted to the content on \"rows = 0\"\n if (this.rows === 0) {\n const textarea = this.inputElement.nativeElement;\n textarea.style.height = '1px'; // trigger calculation of the textarea.scrollHeight\n textarea.style.height = 25 + textarea.scrollHeight + 'px';\n }\n }\n\n /**\n * Called when the text input blurs.\n */\n onBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n\n /**\n * Sets the disabled state.\n * @param isDisabled When true the control is disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label class=\"fwe-input-text\">\n <textarea\n #inputElement\n [class]=\"'fwe-row-' + rows\"\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value }}</textarea\n >\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n <span *ngIf=\"maxlength > 0 && value != null\" class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n</label>\n","export abstract class ColorHelper {\n // based on: https://gist.github.com/mjackson/5311256\n public static rgbToHsv(rgb: Record<'r' | 'g' | 'b', number>): Record<'h' | 's' | 'v', number> {\n if (!rgb) {\n return undefined;\n }\n\n const r = this.limitToByte(rgb.r) / 255;\n const g = this.limitToByte(rgb.g) / 255;\n const b = this.limitToByte(rgb.b) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = max;\n let s = max;\n const v = max;\n\n const d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max === min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, v };\n }\n\n // based on: https://gist.github.com/mjackson/5311256\n public static hsvToRgb(hsv: Record<'h' | 's' | 'v', number>): Record<'r' | 'g' | 'b', number> {\n if (!hsv) {\n return undefined;\n }\n\n hsv.h = this.limitToOne(hsv.h);\n hsv.s = this.limitToOne(hsv.s);\n hsv.v = this.limitToOne(hsv.v);\n\n let r: number;\n let g: number;\n let b: number;\n\n const i = Math.floor(hsv.h * 6);\n const f = hsv.h * 6 - i;\n const p = hsv.v * (1 - hsv.s);\n const q = hsv.v * (1 - f * hsv.s);\n const t = hsv.v * (1 - (1 - f) * hsv.s);\n\n switch (i % 6) {\n case 0:\n r = hsv.v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = hsv.v;\n b = p;\n break;\n case 2:\n r = p;\n g = hsv.v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = hsv.v;\n break;\n case 4:\n r = t;\n g = p;\n b = hsv.v;\n break;\n case 5:\n r = hsv.v;\n g = p;\n b = q;\n break;\n }\n\n return {\n r: this.limitToByte(r * 255),\n g: this.limitToByte(g * 255),\n b: this.limitToByte(b * 255)\n };\n }\n\n private static limitToByte(num) {\n return Math.round(num <= 0 ? 0 : num >= 255 ? 255 : num);\n }\n\n private static limitToOne(num) {\n return num <= 0 ? 0 : num >= 1 ? 1 : num;\n }\n\n private static numberToHex(rgb: number): string {\n let hex = Math.round(rgb).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n return hex.toUpperCase();\n }\n\n public static rgbToHex(rgb: Record<'r' | 'g' | 'b', number>) {\n if (!rgb) {\n return undefined;\n }\n\n rgb.r = this.limitToByte(rgb.r);\n rgb.g = this.limitToByte(rgb.g);\n rgb.b = this.limitToByte(rgb.b);\n\n const red = this.numberToHex(rgb.r);\n const green = this.numberToHex(rgb.g);\n const blue = this.numberToHex(rgb.b);\n return '#' + red + green + blue;\n }\n\n public static hexToRgb(hexString: string): Record<'r' | 'g' | 'b', number> {\n const numbersOnly = hexString.substring(1);\n const aRgbHex = numbersOnly.match(/.{1,2}/g);\n return { r: parseInt(aRgbHex[0], 16), g: parseInt(aRgbHex[1], 16), b: parseInt(aRgbHex[2], 16) };\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragMove } from '@angular/cdk/drag-drop';\nimport { Component, forwardRef, Input, ViewEncapsulation, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ColorHelper } from './color-helper';\n\nexport const PREDEFINED_COLORS: string[] = [\n '#0091dc',\n '#333333',\n '#ffffff',\n '#f2f3f5',\n '#e5e8eb',\n '#d8dce1',\n '#b6bec6',\n '#80ca3d',\n '#ffd600',\n '#ff9600',\n '#d50000'\n];\n\n/**\n * A custom form element to pick a color.\n */\n@Component({\n selector: 'fng-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['../text-input/text-input.component.scss', './color-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ColorPickerComponent implements OnChanges, ControlValueAccessor {\n baseSize = 184;\n\n inputType = 'RGB';\n\n isSelectOpen = false;\n\n @Input() useAlpha = false;\n\n @Input()\n get alpha(): number {\n return this.innerAlpha;\n }\n set alpha(value: number) {\n if (value <= 100 && value >= 0 && this.innerAlpha !== Math.round(value)) {\n this.innerAlpha = Math.round(value);\n this.alphaInput = this.innerAlpha;\n this.updateKnobs();\n }\n }\n\n @Output() alphaChange = new EventEmitter<number>();\n\n /**\n * The current color\n */\n get color(): string {\n return this.innerColor;\n }\n @Input()\n set color(value: string) {\n if (this.isHexColor(value)) {\n this.innerColor = value.toUpperCase();\n } else {\n this.innerColor = null;\n }\n this.updateColorRgb(true);\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n /**\n * an array with color strings representing the palette.\n * Example: ['#234567, '#AA00FF']\n * Pass null to hide palette.\n */\n @Input() palette: string[];\n\n /**\n * hide the hue and gradient picker and shot the palette only.\n */\n @Input() paletteOnly = false;\n\n private innerColor: string;\n private innerDisabled: boolean;\n private innerAlpha: number;\n\n // input controls\n hexInputColor = '#ff0000';\n redInput = 255;\n greenInput = 0;\n blueInput = 0;\n alphaInput = 100;\n\n // HSV value\n hue: number;\n saturation: number;\n value: number;\n\n // poitions of the knobs in px\n hueKnobOffset = 0;\n alphaKnobOffset = 0;\n saturationKnobOffset = 0;\n valueKnobOffset = 0;\n\n // callbacks for ControlValueAccessor\n onTouched: () => any;\n onChange: (color: string) => any;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.palette?.currentValue?.length > 0 && changes.palette.currentValue.indexOf('FESTO_COLORS') !== -1) {\n this.palette = PREDEFINED_COLORS;\n }\n }\n\n // ControlValueAccessor\n writeValue(color: string): void {\n if (this.isHexColor(color)) {\n this.innerColor = color.toUpperCase();\n } else {\n this.innerColor = null;\n }\n this.updateColorRgb(false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.innerDisabled = isDisabled;\n }\n\n // update method for changes of the rgb value\n updateColorRgb(emitChange: boolean) {\n const currentColor = this.innerColor || '#FFFFFF';\n this.updateInputs(currentColor);\n const rgb = ColorHelper.hexToRgb(currentColor);\n const hsv = ColorHelper.rgbToHsv(rgb);\n this.hue = hsv.h;\n this.saturation = hsv.s;\n this.value = hsv.v;\n this.updateKnobs();\n if (emitChange) {\n if (this.onChange != null) {\n this.onChange(this.innerColor);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n // update method for changes of the hsv value\n updateColorHsv() {\n const rgb = ColorHelper.hsvToRgb({ h: this.hue, s: this.saturation, v: this.value });\n this.innerColor = ColorHelper.rgbToHex(rgb);\n this.updateInputs(this.innerColor);\n if (this.onChange != null) {\n this.onChange(this.innerColor);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n // event handler for inputs\n onHexBlur() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n } else {\n this.hexInputColor = this.color;\n }\n }\n\n onHexInput() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n }\n }\n\n onRgbBlur() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n } else {\n this.hexInputColor = this.color;\n }\n }\n\n onRgbInput(value: number, channel: string) {\n if (value > 255 || value < 0) {\n this.updateInputs(this.innerColor);\n } else {\n const rgb = ColorHelper.hexToRgb(this.innerColor);\n rgb[channel] = value;\n this.innerColor = ColorHelper.rgbToHex(rgb);\n this.updateColorRgb(true);\n }\n }\n\n onAlphaInput(value: number) {\n if (value > 100 || value < 0) {\n this.alphaInput = this.innerAlpha;\n } else {\n this.alpha = value;\n this.alphaChange.emit(this.alpha);\n }\n }\n\n onGradientClick(event: MouseEvent) {\n this.saturation = event.offsetX / this.baseSize;\n this.value = (this.baseSize - event.offsetY) / this.baseSize;\n this.updateColorHsv();\n this.updateKnobs();\n }\n\n onGradientDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.saturation = Math.floor(position.x) / this.baseSize;\n this.value = (this.baseSize - position.y) / this.baseSize;\n this.updateColorHsv();\n }\n\n onHueClick(event: MouseEvent) {\n this.hue = event.offsetY / this.baseSize;\n this.updateColorHsv();\n this.updateKnobs();\n }\n\n onAlphaClick(event: MouseEvent) {\n this.alpha = 100 - Math.round((event.offsetY / this.baseSize) * 100);\n this.alphaChange.emit(this.alpha);\n }\n\n onHueDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.hue = (position.y + this.baseSize + 14) / this.baseSize;\n this.updateColorHsv();\n }\n\n onAlphaDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.innerAlpha = 100 - Math.round((position.y / this.baseSize) * 100);\n this.alphaInput = this.innerAlpha;\n this.alphaChange.emit(this.innerAlpha);\n }\n\n onRemoveColor() {\n if (this.useAlpha) {\n this.alpha = 0;\n this.alphaChange.emit(this.alpha);\n } else {\n this.color = null;\n }\n }\n\n isHexColor(value: string) {\n return /^#[0-9A-F]{6}$/i.test(value);\n }\n\n getSaturationGradient(): string {\n return 'linear-gradient(to right, white, hsl(' + this.hue * 360 + ', 100%, 50%) )';\n }\n\n updateInputs(hexColor: string) {\n this.hexInputColor = hexColor;\n const rgb = ColorHelper.hexToRgb(hexColor);\n this.redInput = rgb.r;\n this.greenInput = rgb.g;\n this.blueInput = rgb.b;\n }\n\n updateKnobs() {\n this.alphaKnobOffset = ((100 - this.alpha) / 100) * this.baseSize;\n this.hueKnobOffset = this.hue * this.baseSize - (this.baseSize + 14);\n this.saturationKnobOffset = this.saturation * this.baseSize;\n this.valueKnobOffset = (1 - this.value) * this.baseSize;\n }\n\n onChangeType(type: string) {\n this.inputType = type;\n this.isSelectOpen = false;\n }\n}\n","<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n <div class=\"fwe-d-flex\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-gradient-picker\">\n <div class=\"fwe-saturation-gradient\" [ngStyle]=\"{ 'background-image': getSaturationGradient() }\"></div>\n <div class=\"fwe-brightness-gradient\" (click)=\"onGradientClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".hue-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: hueKnobOffset }\"\n (cdkDragMoved)=\"onHueDrag($event)\"\n [style.background]=\"'hsl(' + hue * 360 + ', 100%, 50%)'\"\n ></div>\n </div>\n\n <div class=\"fwe-alpha-picker\" *ngIf=\"useAlpha\">\n <svg\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"8\"\n height=\"184\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"4\" ry=\"4\" width=\"8\" height=\"184\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <div\n class=\"fwe-picker-background\"\n (click)=\"onAlphaClick($event)\"\n [ngStyle]=\"{ 'background-image': 'linear-gradient( ' + color + ' , transparent)' }\"\n ></div>\n\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".alpha-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: alphaKnobOffset }\"\n (cdkDragMoved)=\"onAlphaDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n </div>\n\n <div class=\"fwe-mt-s\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-type-select\">\n <div class=\"fwe-type-indicator\" (click)=\"isSelectOpen = !isSelectOpen\">\n <span class=\"fwe-input-type\">{{ inputType }}</span>\n <i class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </div>\n <div class=\"fwe-popover\" *ngIf=\"isSelectOpen\">\n <div class=\"fwe-type-item\" (click)=\"onChangeType('HEX')\" [class.fwe-selected]=\"inputType === 'HEX'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> HEX\n </div>\n <div class=\"fwe-type-item\" (click)=\"onChangeType('RGB')\" [class.fwe-selected]=\"inputType === 'RGB'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> RGB\n </div>\n </div>\n </div>\n\n <div class=\"fwe-d-flex\">\n <ng-container *ngIf=\"inputType === 'HEX'\">\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n </ng-container>\n <ng-container *ngIf=\"inputType === 'RGB'\">\n <label class=\"fwe-input-text fwe-red-input\">\n <input type=\"number\" [(ngModel)]=\"redInput\" (input)=\"onRgbInput(redInput, 'r')\" />\n </label>\n <label class=\"fwe-input-text fwe-green-input\">\n <input type=\"number\" [(ngModel)]=\"greenInput\" (input)=\"onRgbInput(greenInput, 'g')\" />\n </label>\n <label class=\"fwe-input-text fwe-blue-input\">\n <input type=\"number\" min=\"0\" max=\"255\" [(ngModel)]=\"blueInput\" (input)=\"onRgbInput(blueInput, 'b')\" />\n </label>\n </ng-container>\n\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\" *ngIf=\"useAlpha\">\n <span>\n <input type=\"number\" min=\"0\" max=\"100\" [(ngModel)]=\"alphaInput\" (input)=\"onAlphaInput(alphaInput)\" />\n <span class=\"fwe-percent-char\">%</span>\n </span>\n </label>\n </div>\n </div>\n\n <div class=\"fwe-mt-xs fwe-color-grid\" *ngIf=\"palette && palette.length\">\n <div class=\"fwe-remove-color-button\" (click)=\"onRemoveColor()\">\n <svg\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <i class=\"fwe-icon fwe-icon-menu-check\" [class.fwe-color-text]=\"!color\"></i>\n </div>\n <ng-container *ngFor=\"let colorItem of palette\">\n <div\n class=\"fwe-color-item\"\n [class.fwe-white-item]=\"colorItem.toUpperCase() === '#FFFFFF'\"\n [style.background]=\"colorItem\"\n (click)=\"color = colorItem\"\n >\n <i class=\"fwe-icon fwe-icon-menu-check\" *ngIf=\"colorItem.toUpperCase() === color\"></i>\n </div>\n </ng-container>\n </div>\n</div>\n","import { OnDestroy, Component, forwardRef, ViewEncapsulation, Input, ElementRef, AfterViewInit, HostListener } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'fng-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class SliderComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() label: string;\n @Input() large = false;\n\n @Input()\n min = 0;\n\n @Input()\n max = 100;\n\n @Input()\n step: number;\n\n @Input()\n digitsInfo: string;\n\n @Input()\n locale: string;\n\n left: number;\n\n protected innerDisabled = false;\n get disabled(): boolean {\n return this.innerDisabled;\n }\n @Input()\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n protected innerValue: number;\n get value(): number {\n return this.innerValue;\n }\n\n @Input()\n set value(value: number) {\n this.innerValue = coerceNumberProperty(value);\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.updateValuePosition();\n }\n\n private resizeSub: Subscription;\n private resizeSubject = new Subject<boolean>();\n\n constructor(private elementRef: ElementRef) {}\n\n onChange: (value: number) => void;\n\n onTouched: () => void;\n\n @HostListener('window:resize') onResize() {\n this.resizeSubject.next(true);\n }\n\n ngAfterViewInit() {\n this.resizeSub = this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition());\n }\n\n ngOnDestroy() {\n if (this.resizeSub != null) {\n this.resizeSub.unsubscribe();\n }\n }\n\n writeValue(value: any): void {\n this.innerValue = coerceNumberProperty(value);\n this.updateValuePosition();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: any) {\n this.value = coerceNumberProperty((event.target as HTMLInputElement).value);\n }\n\n updateValuePosition() {\n if (this.elementRef != null && this.elementRef.nativeElement != null) {\n const bcr = (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\n const diff = this.max - this.min;\n this.left = ((this.value - this.min) / diff) * (bcr.width - 16);\n }\n }\n}\n","<label class=\"fwe-slider\" [class.fwe-slider-lg]=\"large\" [class.fng-slider-label]=\"label != null\">\n <span *ngIf=\"label\">{{ label }}</span>\n <input\n type=\"range\"\n class=\"fwe-slider-input\"\n [disabled]=\"disabled\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n />\n <span *ngIf=\"left != null\" class=\"fng-slider-value\" [style.left]=\"left + 'px'\">{{ value | number: digitsInfo:locale }}</span>\n</label>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { Component, Input } from '@angular/core';\n\n/**\n * A control to display a color.\n */\n@Component({\n selector: 'fng-color-indicator',\n templateUrl: './color-indicator.component.html',\n styleUrls: ['./color-indicator.component.scss']\n})\nexport class ColorIndicatorComponent {\n /**\n * The label above the color.\n */\n @Input() label: string;\n\n /**\n * A text next to the color.\n */\n @Input() text: string;\n\n /**\n * The current color as a string.\n * Examples: '#ffffff', 'red', 'rgba(1,2,3,0.5)'\n */\n @Input() color: string;\n\n /**\n * enable an overlay to edit the color.\n * The editor must be passed as the content of the indicator.\n */\n @Input() showPopOver: boolean;\n\n @Input() disabled: boolean;\n\n public isEditorOpen = false;\n\n public positions = [\n new ConnectionPositionPair(\n {\n originX: 'center',\n originY: 'top'\n },\n {\n overlayX: 'center',\n overlayY: 'bottom'\n },\n 0,\n -20,\n ['fng-color-indicator-top']\n ),\n new ConnectionPositionPair(\n {\n originX: 'center',\n originY: 'bottom'\n },\n {\n overlayX: 'center',\n overlayY: 'top'\n },\n 0,\n 20,\n ['fng-color-indicator-bottom']\n ),\n new ConnectionPositionPair(\n {\n originX: 'start',\n originY: 'center'\n },\n {\n overlayX: 'end',\n overlayY: 'center'\n },\n -20,\n 0,\n ['fng-color-indicator-left']\n ),\n new ConnectionPositionPair(\n {\n originX: 'end',\n originY: 'center'\n },\n {\n overlayX: 'start',\n overlayY: 'center'\n },\n 20,\n 0,\n ['fng-color-indicator-right']\n )\n ];\n\n getBorderColor(): string {\n if (!this.color || this.color.toUpperCase() === '#FFFFFF' || this.color.toUpperCase() === '#F2F3F5') {\n return '#b6bec6'; // = $control-border\n } else {\n return this.color;\n }\n }\n}\n","<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.disabled]=\"disabled\">\n <div class=\"fwe-color-label\" [style.opacity]=\"isEditorOpen ? 0 : 1\">\n {{ label }}\n </div>\n <div class=\"fwe-color-container\">\n <div\n class=\"fwe-color-box\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [style.background]=\"color\"\n [style.border-color]=\"getBorderColor()\"\n >\n <svg\n *ngIf=\"!color\"\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n </div>\n <div class=\"fwe-color-indicator-text\" *ngIf=\"text\">\n {{ text }}\n </div>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isEditorOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n [cdkConnectedOverlayViewportMargin]=\"32\"\n (backdropClick)=\"isEditorOpen = false\"\n >\n <div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\" #popoverContent>\n <div class=\"fwe-color-label fwe-mb-s\">\n {{ label }}\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Input, Directive } from '@angular/core';\n\n@Directive()\nexport class ValueAccessorBaseDirective<T> implements ControlValueAccessor {\n @Input() disabled = false;\n\n protected innerValue: T;\n\n protected changed = new Array<(value: T) => void>();\n protected touched = new Array<() => void>();\n\n get value(): T {\n return this.innerValue;\n }\n\n set value(value: T) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => f(value));\n }\n }\n\n touch() {\n this.touched.forEach(f => f());\n }\n\n writeValue(value: T) {\n this.innerValue = value;\n }\n\n registerOnChange(fn: (value: T) => void) {\n this.changed.push(fn);\n }\n\n registerOnTouched(fn: () => void) {\n this.touched.push(fn);\n }\n\n setDisabledState?(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n SimpleChanges,\n OnChanges,\n ViewChild,\n TemplateRef,\n AfterViewInit,\n ViewRef,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fng-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: ['./segment-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SegmentControlComponent implements OnInit, OnChanges, AfterViewInit {\n id: string;\n view: ViewRef;\n viewMode: 'text' | 'icon' | 'icon-text';\n\n @Input() name: string;\n @Input() value: any;\n @Input() label: string;\n @Input() icon: string;\n @Input() iconOnly: boolean;\n @Input() checked: boolean;\n @Input() disabled: boolean;\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('tpl') tpl: TemplateRef<any>;\n\n ngOnInit(): void {\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\n this.viewMode = 'text';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (null != changes.icon && null != changes.icon.currentValue) {\n const prefix = 'fwe-icon-';\n let icon: string = changes.icon.currentValue;\n if (icon.indexOf(prefix) === -1) {\n icon = `${prefix}${icon}`;\n }\n this.icon = icon;\n }\n\n if (null != changes.iconOnly && null != changes.iconOnly.currentValue) {\n this.viewMode = changes.iconOnly.currentValue === true ? 'icon' : 'icon-text';\n }\n }\n\n ngAfterViewInit(): void {\n this.view = this.tpl.createEmbeddedView(null);\n }\n\n onChange(event: { target: HTMLInputElement }) {\n this.change.emit(event.target.value);\n }\n}\n","<ng-template #tpl>\n <input\n (change)=\"onChange($event)\"\n class=\"fwe-segment-input\"\n type=\"radio\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n />\n <label class=\"fwe-segment-label\" [for]=\"id\">\n <ng-container [ngSwitch]=\"viewMode\">\n <ng-container *ngSwitchCase=\"'icon'\">\n <span class=\"fwe-sr-only\">{{ label }}</span>\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text'\">\n {{ label }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'icon-text'\"> <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>{{ label }} </ng-container>\n </ng-container>\n </label>\n</ng-template>\n","import {\n Component,\n ContentChildren,\n Input,\n AfterContentInit,\n SimpleChanges,\n OnChanges,\n AfterViewInit,\n ViewChild,\n ViewContainerRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n OnDestroy,\n forwardRef,\n ViewEncapsulation,\n SimpleChange\n} from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ValueAccessorBaseDirective } from '../value-accessor-base';\nimport { SegmentControlComponent } from './segment-control/segment-control.component';\n\nexport interface SegmentComponentConfiguration {\n outline: boolean;\n iconOnly: boolean;\n}\n\n@Component({\n selector: 'fng-segment',\n templateUrl: './segment.component.html',\n styleUrls: ['./segment.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentComponent),\n multi: true\n }\n ]\n})\nexport class SegmentComponent extends ValueAccessorBaseDirective<any> implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n private complete: Subject<boolean> = new Subject();\n\n defaultConfig: SegmentComponentConfiguration = {\n outline: true,\n iconOnly: true\n };\n useIcon = false;\n useIconAndText = false;\n\n @Input() legend = '';\n @Input() config: SegmentComponentConfiguration = this.defaultConfig;\n @ContentChildren(SegmentControlComponent, { descendants: true }) controls: QueryList<SegmentControlComponent>;\n @ViewChild('vc', { read: ViewContainerRef }) vc: ViewContainerRef;\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @Input()\n set value(value: string) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => {\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n return f(value);\n });\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (null != changes.config && null != changes.config.currentValue) {\n this.config = Object.assign({}, this.defaultConfig, changes.config.currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.controls.length > 0) {\n this.controls.forEach(component => {\n component.change.pipe(takeUntil(this.complete)).subscribe(val => {\n this.value = val;\n });\n\n if (component.icon != null && this.config.iconOnly === true) {\n this.useIcon = true;\n component.ngOnChanges({\n iconOnly: new SimpleChange(null, true, false)\n });\n }\n\n if (component.icon != null && this.config.iconOnly !== true) {\n this.useIconAndText = true;\n component.ngOnChanges({\n iconOnly: new SimpleChange(null, false, false)\n });\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.html();\n this.cd.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n private html() {\n this.controls.forEach(component => {\n this.vc.insert(component.view);\n });\n }\n}\n","<fieldset\n class=\"fwe-segment\"\n [ngClass]=\"{\n 'fwe-segment-outline': config.outline,\n 'fwe-segment-icon': useIcon,\n 'fwe-segment-icon-text': useIconAndText\n }\"\n>\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\n <div class=\"fwe-segment-group\">\n <ng-container #vc></ng-container>\n </div>\n</fieldset>\n","import { ElementRef, Input, Output, EventEmitter, Component, ViewChild, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport flatpickr from 'flatpickr';\n\nexport interface FlatPickerOptions {\n maxDate?: Date;\n minDate?: Date;\n mode?: 'single' | 'range';\n}\n\n@Component({\n selector: 'fng-flatpickr',\n templateUrl: './flatpickr.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FlatpickrComponent implements OnInit, OnDestroy {\n @Input() date: Date | Date[];\n @Input() options: FlatPickerOptions;\n @Output() dateChange = new EventEmitter<Date | Date[]>();\n\n @ViewChild('datePicker', { static: true }) datePickerRef: ElementRef;\n\n private datePicker: flatpickr.Instance;\n\n ngOnInit() {\n const options: FlatPickerOptions =\n this.options != null\n ? {\n minDate: this.options.minDate || null,\n maxDate: this.options.maxDate || null,\n mode: this.options.mode || 'single'\n }\n : {\n minDate: null,\n maxDate: null,\n mode: 'single'\n };\n this.datePicker = flatpickr(this.datePickerRef.nativeElement, {\n inline: true,\n defaultDate: this.date,\n onChange: c => this.onDateChange(c),\n maxDate: options.maxDate,\n minDate: options.minDate,\n mode: options.mode\n }) as flatpickr.Instance;\n }\n\n ngOnDestroy() {\n if (this.datePicker != null) {\n this.datePicker.destroy();\n }\n }\n\n onDateChange(dateOption: Date | Date[]) {\n const mode = this.options != null && this.options.mode === 'range' ? 'range' : 'single';\n if (mode === 'range' && Array.isArray(dateOption) && dateOption.length === 2) {\n this.dateChange.emit(dateOption);\n }\n if (mode === 'single' && Array.isArray(dateOption) && dateOption.length === 1) {\n this.dateChange.emit(dateOption[0]);\n }\n }\n}\n","<div class=\"fng-flatpickr\">\n <div #datePicker></div>\n</div>\n","import {\n Component,\n ViewEncapsulation,\n forwardRef,\n Input,\n ElementRef,\n ViewChild,\n ComponentRef,\n HostListener,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { FlatpickrComponent } from '../../wrappers/flatpickr/flatpickr.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { formatDate } from '@angular/common';\nimport { LOCALE_ID, Inject } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface DatePickerOptions {\n maxDate?: Date;\n minDate?: Date;\n keepOpenOnDateChange?: boolean;\n}\n\n@Component({\n selector: 'fng-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n get value(): Date {\n return this.innerValue;\n }\n @Input()\n set value(date: Date) {\n if (!this.disabled) {\n this.innerValue = date;\n if (this.onChange != null) {\n this.onChange(date);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n @Input() hint: string;\n @Input() error: string;\n @Input() options: DatePickerOptions;\n\n /** A locale code for the locale format rules to use. */\n @Input() locale: string;\n\n /* The date-time components to include. See `DatePipe` for details. */\n @Input() format: string;\n\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\n @Input() timezone: string;\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n get displayValue(): string {\n if (!this.value) {\n return null;\n }\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(this.value, format, locale, timezone);\n }\n\n datePickerRef: OverlayRef;\n private innerValue: Date;\n private complete = new Subject<boolean>();\n private datePicker: ComponentRef<FlatpickrComponent>;\n\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string) {}\n\n onTouched: () => any;\n onChange: (date: Date) => any;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n this.dispose();\n }\n }\n\n onDateChange(date: Date) {\n this.value = date;\n }\n\n writeValue(date: Date): void {\n this.innerValue = date;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n if (this.datePickerRef == null) {\n this.datePickerRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const datePickerPortal = new ComponentPortal(FlatpickrComponent);\n this.datePicker = this.datePickerRef.attach(datePickerPortal);\n this.datePicker.instance.options = this.options;\n this.datePicker.instance.date = this.value;\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date) => {\n this.onDateChange(c);\n if (this.options == null || !this.options.keepOpenOnDateChange) {\n this.dispose();\n }\n });\n this.datePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n this.datePicker.instance.ngOnInit();\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.datePickerRef != null) {\n this.datePickerRef.detach();\n this.datePickerRef.dispose();\n this.datePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<label #connector class=\"fng-date-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i\n class=\"fwe-icon fwe-icon-time-calendar\"\n [class.fwe-color-hero]=\"datePickerRef != null\"\n [class.fwe-color-control-disabled]=\"disabled\"\n ></i>\n <input\n aria-label=\"picked date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"datePickerRef != null\"\n [value]=\"displayValue\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n","import {\n Component,\n ViewEncapsulation,\n forwardRef,\n Input,\n ElementRef,\n ViewChild,\n ComponentRef,\n HostListener,\n Output,\n EventEmitter,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { FlatpickrComponent } from '../../wrappers/flatpickr/flatpickr.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LOCALE_ID, Inject } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface DateRangePickerOptions {\n maxDate?: Date;\n minDate?: Date;\n keepOpenOnDateChange?: boolean;\n}\n\n@Component({\n selector: 'fng-date-range-picker',\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n get value(): Date[] {\n return this.innerValue;\n }\n @Input()\n set value(dateRange: Date[]) {\n if (!this.disabled) {\n this.innerValue = dateRange;\n if (this.onChange != null) {\n this.onChange(dateRange);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n @Input() hint: string;\n @Input() error: string;\n\n /** A locale code for the locale format rules to use. */\n @Input() locale: string;\n\n /* The date-time components to include. See `DatePipe` for details. */\n @Input() format: string;\n\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\n @Input() timezone: string;\n\n @Input() options: DateRangePickerOptions;\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n get fromDateDisplayValue(): string {\n const v = this.value;\n if (!v || v.length !== 2) {\n return null;\n }\n const from = this.value[0];\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(from, format, locale, timezone);\n }\n\n get toDateDisplayValue(): string {\n const v = this.value;\n if (!v || v.length !== 2) {\n return null;\n }\n const to = this.value[1];\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(to, format, locale, timezone);\n }\n\n dateRangePickerRef: OverlayRef;\n\n private innerValue: Date[];\n private complete = new Subject<boolean>();\n private datePicker: ComponentRef<FlatpickrComponent>;\n\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string) {}\n\n onTouched: () => any;\n onChange: (dateRange: Date[]) => any;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n this.dispose();\n }\n }\n\n onDateChange(dateRange: Date[]) {\n this.value = dateRange;\n }\n\n writeValue(dateRange: Date[]): void {\n this.innerValue = dateRange;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.dateRangePickerRef == null) {\n this.dateRangePickerRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const datePickerPortal = new ComponentPortal(FlatpickrComponent);\n this.datePicker = this.dateRangePickerRef.attach(datePickerPortal);\n this.datePicker.instance.options = {\n mode: 'range',\n minDate: this.options != null && this.options.minDate != null ? this.options.minDate : null,\n maxDate: this.options != null && this.options.maxDate != null ? this.options.maxDate : null\n };\n this.datePicker.instance.date = this.value;\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date[]) => {\n this.onDateChange(c);\n if (this.options == null || !this.options.keepOpenOnDateChange) {\n this.dispose();\n }\n });\n this.dateRangePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n this.datePicker.instance.ngOnInit();\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.dateRangePickerRef != null) {\n this.dateRangePickerRef.detach();\n this.dateRangePickerRef.dispose();\n this.dateRangePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<div #connector class=\"fng-date-range-picker\" (click)=\"toggle($event)\">\n <label class=\"fwe-input-text fwe-input-text-icon\">\n <i\n class=\"fwe-icon fwe-icon-time-calendar\"\n [class.fwe-color-hero]=\"dateRangePickerRef != null\"\n [class.fwe-color-control-disabled]=\"disabled\"\n ></i>\n <div class=\"fng-date-range-picker-inputs\" [class.fng-date-range-picker-inputs--disabled]=\"disabled\">\n <input\n aria-label=\"picked start date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"dateRangePickerRef != null\"\n [value]=\"fromDateDisplayValue\"\n [disabled]=\"disabled\"\n />\n <input\n aria-label=\"picked end date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"dateRangePickerRef != null\"\n [value]=\"toDateDisplayValue\"\n [disabled]=\"disabled\"\n />\n </div>\n <span class=\"fwe-input-text-label\" [class.fwe-color-text-disabled]=\"disabled\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n </label>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fng-time-picker-dropdown',\n templateUrl: './time-picker-dropdown.component.html',\n styleUrls: ['./time-picker-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TimePickerDropdownComponent implements AfterViewInit {\n @Input() date: Date;\n @Input() showSeconds = false;\n @Input() timeFormat: '12' | '24' = '24';\n @Output() dateChange = new EventEmitter<{ date: Date; close: boolean }>();\n\n @ViewChild('hoursInput') hoursInput: ElementRef;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Enter') {\n this.onDateChange(true, event.key === 'Escape');\n }\n }\n\n ngAfterViewInit() {\n if (this.hoursInput != null && this.hoursInput.nativeElement != null) {\n (this.hoursInput.nativeElement as HTMLElement).focus();\n }\n }\n\n onHourUp() {\n this.date?.setHours(this.date.getHours() + 1);\n this.onDateChange(false, false);\n }\n\n onHourDown() {\n this.date?.setHours(this.date.getHours() - 1);\n this.onDateChange(false, false);\n }\n\n onMinuteUp() {\n this.date?.setMinutes(this.date.getMinutes() + 1);\n this.onDateChange(false, false);\n }\n\n onMinuteDown() {\n this.date?.setMinutes(this.date.getMinutes() - 1);\n this.onDateChange(false, false);\n }\n\n onSecondUp() {\n this.date?.setSeconds(this.date.getSeconds() + 1);\n this.onDateChange(false, false);\n }\n\n onSecondDown() {\n this.date?.setSeconds(this.date.getSeconds() - 1);\n this.onDateChange(false, false);\n }\n\n onHourChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const hour = +(event.target as HTMLInputElement).value;\n this.date?.setHours(hour > max ? max : hour < min ? min : hour);\n }\n\n onMinuteChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const minute = +(event.target as HTMLInputElement).value;\n this.date?.setMinutes(minute > max ? max : minute < min ? min : minute);\n }\n\n onSecondChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const seconds = +(event.target as HTMLInputElement).value;\n this.date?.setSeconds(seconds > max ? max : seconds < min ? min : seconds);\n }\n\n onDateChange(close: boolean, reset: boolean) {\n if (this.date != null) {\n this.date = new Date(this.date);\n this.dateChange.emit({ date: !reset ? new Date(this.date) : null, close });\n }\n }\n}\n","<div class=\"fwe-timepicker\" [class.fwe-timepicker-am-pm]=\"timeFormat === '12'\">\n <div class=\"fwe-timepicker-spinners\">\n <div class=\"fwe-timepicker-spinners-hours\">\n <button type=\"button\" aria-label=\"hour up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onHourUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n #hoursInput\n aria-label=\"hours value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n tabindex=\"1\"\n step=\"1\"\n [value]=\"date | date: (timeFormat === '12' ? 'hh' : 'HH')\"\n [attr.max]=\"timeFormat === '12' ? 12 : 23\"\n (input)=\"onHourChange($event)\"\n />\n <button type=\"button\" aria-label=\"hour down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onHourDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n <div class=\"fwe-timepicker-spinners-minutes\">\n <button type=\"button\" aria-label=\"minute up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onMinuteUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n aria-label=\"minutes value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n step=\"1\"\n tabindex=\"2\"\n [value]=\"date | date: 'mm'\"\n (input)=\"onMinuteChange($event)\"\n />\n <button type=\"button\" aria-label=\"minute down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onMinuteDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n <div *ngIf=\"showSeconds\" class=\"fwe-timepicker-spinners-seconds\">\n <button type=\"button\" aria-label=\"seconds up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onSecondUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n aria-label=\"seconds value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n step=\"1\"\n tabindex=\"3\"\n [value]=\"date | date: 'ss'\"\n (input)=\"onSecondChange($event)\"\n />\n <button type=\"button\" aria-label=\"seconds down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onSecondDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n </div>\n <span *ngIf=\"timeFormat === '12'\" class=\"fwe-badge fwe-badge-control\">\n {{ date | date: 'a' }}\n </span>\n</div>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TimePickerDropdownComponent } from './time-picker-dropdown/time-picker-dropdown.component';\n\nexport interface TimePickerOptions {\n timeFormat?: '12' | '24';\n showSeconds?: boolean;\n}\n\n@Component({\n selector: 'fng-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TimePickerComponent implements ControlValueAccessor {\n get value(): Date {\n return this.innerValue;\n }\n @Input()\n set value(date: Date) {\n if (!this.disabled) {\n this.innerValue = date;\n if (this.onChange != null) {\n this.onChange(date);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @Input() hint: string;\n @Input() error: string;\n @Input() options: TimePickerOptions;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n get timeFormat(): string {\n let timeFormat = 'H:mm';\n if (this.options != null) {\n if (this.options.showSeconds) {\n timeFormat += ':ss';\n }\n if (this.options.timeFormat === '12') {\n timeFormat = timeFormat.toLowerCase() + ' a';\n }\n }\n return timeFormat;\n }\n\n timePickerRef: OverlayRef;\n\n protected innerValue: Date;\n protected innerDisabled = false;\n\n private complete = new Subject<boolean>();\n private timePicker: ComponentRef<TimePickerDropdownComponent>;\n\n constructor(private overlay: Overlay) {}\n\n onTouched: () => void;\n onChange: (date: Date) => void;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.dispose();\n }\n }\n\n writeValue(date: Date): void {\n this.innerValue = date;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n if (this.timePickerRef == null && this.connector != null && this.connector.nativeElement != null) {\n const labelWidth = (this.connector.nativeElement as HTMLElement).clientWidth;\n this.timePickerRef = this.overlay.create({\n width: `${labelWidth}px`,\n panelClass: 'fng-first-child-fullwidth',\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const timePickerPortal = new ComponentPortal(TimePickerDropdownComponent);\n this.timePicker = this.timePickerRef.attach(timePickerPortal);\n this.timePicker.instance.timeFormat = this.options != null && this.options.timeFormat != null ? this.options.timeFormat : '24';\n this.timePicker.instance.showSeconds = this.options != null && this.options.showSeconds != null ? this.options.showSeconds : false;\n this.timePicker.instance.date = new Date(this.value);\n this.timePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe(ev => {\n if (ev.date != null) {\n this.value = ev.date;\n }\n if (ev.close) {\n this.dispose();\n }\n });\n this.timePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.timePickerRef != null) {\n this.timePickerRef.detach();\n this.timePickerRef.dispose();\n this.timePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fwe-icon fwe-icon-time-time\" [class.fwe-color-hero]=\"timePickerRef != null\" [class.fwe-color-control-disabled]=\"disabled\"></i>\n <input\n aria-label=\"picked time\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"timePickerRef != null\"\n [value]=\"value | date: timeFormat\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n AfterViewInit,\n SecurityContext,\n ElementRef,\n Renderer2,\n EventEmitter,\n Output,\n forwardRef,\n OnChanges,\n ViewChild,\n SimpleChanges,\n OnInit\n} from '@angular/core';\nimport QuillType from 'quill';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ValueAccessorBaseDirective } from '../value-accessor-base';\n\nexport interface TextEditorConfiguration {\n toolbar?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n alignCenter?: boolean;\n alignRight?: boolean;\n bulletList?: boolean;\n orderedList?: boolean;\n image?: boolean;\n link?: boolean;\n };\n}\n\n@Component({\n selector: 'fng-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextEditorComponent),\n multi: true\n }\n ]\n})\nexport class TextEditorComponent extends ValueAccessorBaseDirective<string> implements OnInit, AfterViewInit, OnChanges {\n id: string;\n quillEditor!: QuillType;\n editorElem!: HTMLElement;\n defaultConfig: TextEditorConfiguration = {\n toolbar: {\n bold: true,\n italic: true,\n underline: true,\n alignCenter: true,\n alignRight: true,\n bulletList: true,\n orderedList: true,\n image: true,\n link: true\n }\n };\n\n @ViewChild('btnBold') btnBold: ElementRef;\n @ViewChild('btnItalic') btnItalic: ElementRef;\n @ViewChild('btnUnderline') btnUnderline: ElementRef;\n @ViewChild('btnAlignCenter') btnAlignCenter: ElementRef;\n @ViewChild('btnAlignRight') btnAlignRight: ElementRef;\n @ViewChild('btnLink') btnLink: ElementRef;\n @ViewChild('btnUl') btnUl: ElementRef;\n @ViewChild('btnOl') btnOl: ElementRef;\n @ViewChild('btnImage') btnImage: ElementRef;\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @Input() config: TextEditorConfiguration = this.defaultConfig;\n @Input() modules: any;\n @Input() label: string;\n @Input() readOnly: boolean;\n @Input() maxLength: number;\n @Input() error: string;\n @Input() hint: string;\n @Input()\n set value(value: string) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => {\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n return f(value);\n });\n }\n }\n\n get value() {\n return this.innerValue;\n }\n\n // needed to access editor content\n valueGetter = (editorElement: HTMLElement): string | any => {\n let html: string | null = editorElement.querySelector('.ql-editor').innerHTML;\n if (html === '<p><br></p>' || html === '<div><br></div>') {\n html = null;\n }\n return html;\n };\n\n // needed to access editor content\n valueSetter = (quillEditor: QuillType, value: any): any => {\n value = this.domSanitizer.sanitize(SecurityContext.HTML, value);\n value = this.handleWhitespace(value);\n return quillEditor.clipboard.convert(value);\n };\n\n constructor(public elementRef: ElementRef, private renderer: Renderer2, private domSanitizer: DomSanitizer) {\n super();\n }\n\n ngOnInit(): void {\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\n }\n\n ngAfterViewInit(): void {\n this.editorElem = this.elementRef.nativeElement.querySelector(`#editor-${this.id}`);\n\n this.quillEditor = new QuillType(this.editorElem, {\n modules: { toolbar: `#editor-toolbar-${this.id}`, ...this.modules },\n theme: 'snow',\n scrollingContainer: `#editor-container-${this.id}`\n });\n this.setEditorLabel();\n this.addWhitespaceMatcher();\n this.addImageMatcher();\n\n if (this.innerValue) {\n const content = this.valueSetter(this.quillEditor, this.innerValue);\n this.quillEditor.setContents(content, 'silent');\n this.quillEditor.getModule('history').clear();\n }\n\n this.handle();\n\n this.quillEditor.on('text-change', () => {\n this.value = this.valueGetter(this.editorElem);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.config?.currentValue != null) {\n this.config = { toolbar: { ...this.defaultConfig.toolbar, ...changes.config.currentValue?.toolbar } };\n }\n\n if (!this.quillEditor) {\n return;\n }\n\n this.handle();\n }\n\n writeValue(value: string) {\n if (value === null || value === '') {\n return;\n }\n\n this.innerValue = value;\n\n if (!this.quillEditor) {\n return;\n }\n\n const content = this.valueSetter(this.quillEditor, value);\n this.quillEditor.setContents(content);\n }\n\n setDisabledState(isDisabled: boolean = this.disabled): void {\n this.disabled = isDisabled;\n if (this.quillEditor) {\n if (isDisabled) {\n this.quillEditor.disable();\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled');\n } else {\n if (!this.readOnly) {\n this.quillEditor.enable();\n }\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n }\n }\n\n setReadOnlyState() {\n this.quillEditor.enable(!this.readOnly);\n }\n\n delegate(event: any, action: string) {\n let btn: HTMLElement = null;\n switch (action) {\n case 'bold':\n btn = this.btnBold.nativeElement;\n btn.click();\n break;\n case 'italic':\n btn = this.btnItalic.nativeElement;\n btn.click();\n break;\n case 'underline':\n btn = this.btnUnderline.nativeElement;\n btn.click();\n break;\n case 'align-center':\n btn = this.btnAlignCenter.nativeElement;\n btn.click();\n break;\n case 'align-right':\n btn = this.btnAlignRight.nativeElement;\n btn.click();\n break;\n case 'link':\n btn = this.btnLink.nativeElement;\n btn.click();\n break;\n case 'ul':\n btn = this.btnUl.nativeElement;\n btn.click();\n break;\n case 'ol':\n btn = this.btnOl.nativeElement;\n btn.click();\n break;\n case 'image':\n btn = this.btnImage.nativeElement;\n btn.click();\n break;\n default:\n break;\n }\n }\n\n currentLength(): number {\n return this.value?.length;\n }\n\n hideDivider(name: string) {\n const linkOrImage = this.config.toolbar.image || this.config.toolbar.link;\n const lists = this.config.toolbar.bulletList || this.config.toolbar.orderedList;\n const typos = this.config.toolbar.bold || this.config.toolbar.italic || this.config.toolbar.underline;\n const textAlign = this.config.toolbar.alignCenter || this.config.toolbar.alignRight;\n switch (name) {\n case 'typo':\n return !typos || (!textAlign && !linkOrImage && !lists);\n case 'text-align':\n return !textAlign || (!linkOrImage && !lists);\n case 'lists':\n return !lists || !linkOrImage;\n case 'image':\n return !this.config.toolbar.image || !this.config.toolbar.link;\n default:\n break;\n }\n }\n\n private setEditorLabel() {\n const editorDiv = this.elementRef.nativeElement.querySelector('.ql-editor');\n this.renderer.setAttribute(editorDiv, 'role', 'textbox');\n this.renderer.setAttribute(editorDiv, 'aria-labelledby', `editor-label-${this.id}`);\n this.renderer.setAttribute(editorDiv, 'aria-multiline', 'true');\n }\n\n private handle() {\n this.setReadOnlyState();\n this.setDisabledState();\n }\n\n private addWhitespaceMatcher() {\n // set up a matcher that replaces placeholder ###tab### with \\t in delta again\n this.quillEditor.clipboard.addMatcher('p', (_node, delta) => {\n let str = JSON.stringify(delta);\n str = str.replace(/###tab###/g, '\\\\t');\n delta = JSON.parse(str);\n return delta;\n });\n }\n\n private addImageMatcher() {\n // set up a matcher that does allow/disallow to paste images corresponding to config settings\n this.quillEditor.clipboard.addMatcher('img', (_node, delta) => {\n // allowed, passthru delta\n if (this.config.toolbar.image === true) {\n return delta;\n }\n\n // not allowed, remove image by setting up a new delta\n const Delta = QuillType.import('quill-delta');\n return new Delta().insert('');\n });\n }\n\n private handleWhitespace(value: string): string {\n // set a placeholder for tab entity to avoid that quill removes it\n return value.replace(/&#9;/gi, '###tab###');\n }\n}\n","<label class=\"fwe-input-text\" [class.fwe-disabled]=\"disabled\">\n <div class=\"fng-editor-toolbar\" [id]=\"'editor-toolbar-' + id\">\n <span class=\"ql-formats fwe-d-none\">\n <select class=\"ql-size\" aria-hidden=\"true\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n <span class=\"ql-formats fng-editor-toolbar-buttons-container fwe-mr-3\">\n <ng-container *ngIf=\"config?.toolbar?.bold\">\n <button type=\"button\" #btnBold class=\"ql-bold fwe-d-none action-bold\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline || config?.toolbar?.italic\"\n (click)=\"delegate($event, 'bold')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-bold\">B</div>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.italic\">\n <button type=\"button\" #btnItalic class=\"ql-italic fwe-d-none action-italic\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline\"\n (click)=\"delegate($event, 'italic')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-italic\">I</div>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.underline\">\n <button type=\"button\" #btnUnderline class=\"ql-underline fwe-d-none action-underline\" aria-hidden=\"true\"></button>\n <button type=\"button\" class=\"fwe-btn fng-button\" (click)=\"delegate($event, 'underline')\" [disabled]=\"disabled\">\n <div class=\"fng-button-text fng-text-underline\">U</div>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('typo')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.alignCenter\">\n <button type=\"button\" #btnAlignCenter class=\"ql-align fwe-d-none action-align-center\" aria-hidden=\"true\" value=\"center\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.alignRight\"\n (click)=\"delegate($event, 'align-center')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fng-icon-text-align-center fwe-pr-0\" [class.fng-gray]=\"disabled\"></i>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"config?.toolbar?.alignRight\">\n <button type=\"button\" #btnAlignRight class=\"ql-align fwe-d-none action-align-right\" aria-hidden=\"true\" value=\"right\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n (click)=\"delegate($event, 'align-right')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fng-icon-text-align-right fwe-pr-0\" [class.fng-gray]=\"disabled\"></i>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('text-align')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.bulletList\">\n <button type=\"button\" #btnUl class=\"ql-list fwe-d-none action-ul\" aria-hidden=\"true\" value=\"bullet\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.orderedList\"\n (click)=\"delegate($event, 'ul')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-list-list-view fwe-pr-0\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.orderedList\">\n <button type=\"button\" #btnOl class=\"ql-list fwe-d-none action-ol\" aria-hidden=\"true\" value=\"ordered\"></button>\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'ol')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-enumeration fwe-pr-0\"></i>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('lists')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.image\">\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'image')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-image-image fwe-pr-0\"></i>\n </button>\n <button type=\"button\" #btnImage class=\"ql-image fwe-d-none\" aria-hidden=\"true\"></button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('image')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.link\">\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'link')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-file-link fwe-pr-0\"></i>\n </button>\n <button type=\"button\" #btnLink class=\"ql-link fwe-d-none\" aria-hidden=\"true\"></button>\n </ng-container>\n </span>\n </div>\n <div class=\"fng-editor-container\" [id]=\"'editor-container-' + id\">\n <div class=\"fng-editor\" [id]=\"'editor-' + id\"></div>\n </div>\n <span class=\"fwe-input-text-label\" [id]=\"'editor-label-' + id\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fng-text-editor-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fng-text-editor-invalid\">{{ error }}</span>\n <span *ngIf=\"maxLength > 0 && value != null\" class=\"fwe-input-text-count\">{{ currentLength() }} / {{ maxLength }}</span>\n</label>\n","import { HostListener, ElementRef, Directive } from '@angular/core';\n\n@Directive()\nexport abstract class ContainerHostDirective {\n constructor(public elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event.target'])\n public onHostClick(target: Element) {\n if (this.elementRef && this.elementRef.nativeElement) {\n const containsTarget = this.elementRef.nativeElement.contains(target);\n if (!containsTarget) {\n this.onOutsideClick();\n } else {\n this.onContainerClick();\n }\n }\n }\n\n abstract onOutsideClick(): void;\n abstract onContainerClick(): void;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { RadioComponent, RadioGroupDirective } from './radio/radio.component';\nimport { UniqueSelectionDispatcher } from './unique-selection-dispatcher';\nimport { SelectComponent } from './select/select.component';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { TextAreaComponent } from './text-area/text-area.component';\nimport { ColorPickerComponent } from './color-picker/color-picker.component';\nimport { SliderComponent } from './slider/slider.component';\nimport { ColorIndicatorComponent } from './color-indicator/color-indicator.component';\nimport { SegmentComponent } from './segment/segment.component';\nimport { SegmentControlComponent } from './segment/segment-control/segment-control.component';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { FlatpickrComponent } from '../wrappers/flatpickr/flatpickr.component';\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { TimePickerDropdownComponent } from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\nimport { TextEditorComponent } from './text-editor/text-editor.component';\n\nexport * from './checkbox/checkbox.component';\nexport * from './switch/switch.component';\nexport * from './radio/radio.component';\nexport * from './select/select.component';\nexport * from './select/select-option/select-option.component';\nexport * from './select/chip-text.pipe';\nexport * from './text-input/text-input.component';\nexport * from './text-area/text-area.component';\nexport * from './color-picker/color-picker.component';\nexport * from './slider/slider.component';\nexport * from './color-indicator/color-indicator.component';\nexport * from './segment/segment.component';\nexport * from './segment/segment-control/segment-control.component';\nexport * from './date-picker/date-picker.component';\nexport * from './date-range-picker/date-range-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\nexport * from './text-editor/text-editor.component';\nexport { ValueAccessorBaseDirective as ValueAccessorBase } from './value-accessor-base';\nexport { ContainerHostDirective as ContainerHost } from './container-host';\nimport { ChipTextPipe } from './select/chip-text.pipe';\nimport { SelectOptionComponent } from './select/select-option/select-option.component';\n\n@NgModule({\n declarations: [\n CheckboxComponent,\n SwitchComponent,\n RadioGroupDirective,\n RadioComponent,\n TextInputComponent,\n TextAreaComponent,\n ColorIndicatorComponent,\n FlatpickrComponent,\n DatePickerComponent,\n DateRangePickerComponent,\n ColorPickerComponent,\n SelectComponent,\n SelectOptionComponent,\n SliderComponent,\n SegmentComponent,\n SegmentControlComponent,\n TimePickerComponent,\n TimePickerDropdownComponent,\n TextEditorComponent,\n ChipTextPipe\n ],\n imports: [ReactiveFormsModule, FormsModule, CommonModule, OverlayModule, ScrollingModule, DragDropModule, ObserversModule],\n exports: [\n ReactiveFormsModule,\n FormsModule,\n CheckboxComponent,\n SwitchComponent,\n RadioGroupDirective,\n RadioComponent,\n TextInputComponent,\n TextAreaComponent,\n ColorIndicatorComponent,\n DatePickerComponent,\n DateRangePickerComponent,\n ColorPickerComponent,\n SelectComponent,\n SelectOptionComponent,\n SliderComponent,\n SegmentComponent,\n SegmentControlComponent,\n TimePickerComponent,\n TimePickerDropdownComponent,\n TextEditorComponent,\n ChipTextPipe\n ],\n providers: [UniqueSelectionDispatcher]\n})\nexport class FestoAngularFormsModule {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Modal } from '../index';\n\nexport interface AlertData {\n title: string;\n subtitle?: string;\n body: string;\n alertType: 'info' | 'warning' | 'error';\n cancel?: string;\n ok?: string;\n strong?: boolean;\n}\n\n@Component({\n selector: 'fng-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AlertComponent implements AfterViewInit, Modal<AlertData, any> {\n @Input() data: AlertData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n this.ok.emit();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data?.strong === true,\n 'fwe-modal--warning': data?.alertType === 'warning',\n 'fwe-modal--error': data?.alertType === 'error',\n 'fwe-modal--info': data?.alertType === 'info'\n }\"\n>\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data?.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data?.strong\"\n (click)=\"onCancel()\"\n >\n {{ data?.cancel }}\n </button>\n <button\n *ngIf=\"data?.ok\"\n type=\"button\"\n aria-label=\"Ok\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-hero]=\"!data?.strong\"\n (click)=\"onOk()\"\n >\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Modal } from '../index';\n\nexport interface ConfirmData {\n title: string;\n subtitle?: string;\n body: string;\n cancel?: string;\n ok?: string;\n large?: boolean;\n}\n\n@Component({\n selector: 'fng-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmComponent implements AfterViewInit, Modal<ConfirmData, any> {\n @Input() data: ConfirmData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n this.ok.emit();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data?.large }\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControlOptions, AsyncValidatorFn, FormBuilder, FormGroup, ValidatorFn } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Modal } from '../index';\n\nexport interface PromptData {\n title: string;\n subtitle?: string;\n label: string;\n hint?: string;\n errors?: { [key: string]: string };\n cancel?: string;\n ok?: string;\n value?: string;\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\n}\n\n@Component({\n selector: 'fng-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PromptComponent implements OnInit, AfterViewInit, OnDestroy, Modal<PromptData, any> {\n @Input() data: PromptData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n form: FormGroup;\n error = '';\n\n get text(): string {\n return this.form?.get('text')?.value;\n }\n\n get valid(): boolean {\n return this.form?.get('text')?.valid;\n }\n\n private complete: Subject<boolean> = new Subject();\n\n constructor(private formBuilder: FormBuilder) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n ngOnInit(): void {\n const text = this.data?.value || '';\n\n this.form = this.formBuilder.group({\n text: this.formBuilder.control(text, this.data?.validatorOrOpts, this.data?.asyncValidator)\n });\n\n if (text) {\n this.form.get('text').markAsDirty();\n }\n\n this.form\n .get('text')\n .statusChanges.pipe(takeUntil(this.complete))\n .subscribe(sc => {\n if (sc === 'INVALID') {\n this.handleErrors();\n } else {\n this.error = '';\n }\n });\n }\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n if (this.valid) {\n this.ok.emit(this.text);\n }\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n private handleErrors() {\n const e = this.form.get('text').errors;\n const key = Object.keys(e)[0];\n if (this.data.errors != null && this.data.errors[key]) {\n this.error = this.data.errors[key];\n } else {\n this.error = 'Prompt input is invalid.';\n }\n }\n}\n","<div class=\"fwe-modal\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input formControlName=\"text\" [label]=\"data?.label\" [hint]=\"data?.hint\" type=\"text\" [error]=\"error\"></fng-text-input>\n </form>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'fng-custom-modal',\n templateUrl: './custom-modal.component.html'\n})\nexport class CustomModalComponent {\n @Input() closeOnBackdrop: boolean = false;\n @Input() large: boolean = false;\n @Input() visible: boolean = false;\n @Output() visibleChange = new EventEmitter<boolean>(false);\n\n @Input() header: string = '';\n @Input() subheader: string = '';\n\n @Input() acknowledgeLabel: string = 'Ok';\n @Output() acknowledge = new EventEmitter<void>();\n\n @Input() cancelLabel: string = 'Cancel';\n @Output() cancel = new EventEmitter<void>();\n\n closeModal(): void {\n this.visible = false;\n if (this.visibleChange) {\n this.visibleChange.emit(false);\n }\n }\n\n onCancel(): void {\n this.closeModal();\n if (this.cancel) {\n this.cancel.emit();\n }\n }\n\n onAcknowledge(): void {\n if (this.acknowledge) {\n this.acknowledge.emit();\n }\n }\n\n onClickOutside(): void {\n if (this.closeOnBackdrop) {\n this.onCancel();\n }\n }\n\n onClickInside(event: MouseEvent): void {\n event.stopPropagation();\n }\n}\n","<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <div class=\"fwe-modal-close\">\n <button class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onCancel()\">\n <i class=\"fwe-icon fwe-icon-2x fwe-icon-close-small\"></i>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <fng-button [large]=\"true\" (click)=\"onCancel()\">{{ cancelLabel }}</fng-button>\n <fng-button [large]=\"true\" (click)=\"onAcknowledge()\" [primary]=\"true\">{{ acknowledgeLabel }}</fng-button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { FestoAngularFormsModule } from '../../forms/forms.module';\nimport { AlertComponent } from './alert/alert.component';\nimport { ConfirmComponent } from './confirm/confirm.component';\nimport { PromptComponent } from './prompt/prompt.component';\nimport { CustomModalComponent } from './custom-modal/custom-modal.component';\nimport { FestoAngularComponentsModule } from '../components.module';\n\nexport * from './index';\nexport * from './alert/alert.component';\nexport * from './confirm/confirm.component';\nexport * from './prompt/prompt.component';\nexport * from './custom-modal/custom-modal.component';\n\n@NgModule({\n declarations: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],\n imports: [CommonModule, RouterModule, OverlayModule, FestoAngularFormsModule, FestoAngularComponentsModule],\n exports: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],\n providers: []\n})\nexport class FestoAngularModalsModule {}\n","import { AfterViewInit, Component, EventEmitter, HostBinding, Input, OnDestroy, Output, ViewEncapsulation } from '@angular/core';\nimport { animate, sequence, state, style, transition, trigger } from '@angular/animations';\nimport { SnackbarData } from './snackbar.models';\n\n@Component({\n selector: 'fng-snackbar',\n templateUrl: './snackbar.component.html',\n styleUrls: ['./snackbar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('appearDisappear', [\n state('init', style({ opacity: 0 })),\n state(\n 'first',\n style({\n opacity: 1,\n transform: 'translateY(0)'\n })\n ),\n state('fadeIn', style({ opacity: '1' })),\n transition('void => fadeIn', [style({ opacity: 0 }), animate('0.6s ease-out')]),\n transition('void => first', [style({ transform: 'translateY(100px)' }), animate('0.6s ease-out')]),\n transition(\n ':leave',\n sequence([\n style({ 'margin-bottom': '24px' }),\n animate('0.3s ease-out', style({ opacity: 0 })),\n animate('0.3s ease-out', style({ height: '0px', 'margin-bottom': '0px' }))\n ])\n )\n ])\n ]\n})\nexport class SnackbarComponent implements AfterViewInit, OnDestroy {\n @Input() data: SnackbarData;\n @Output() close = new EventEmitter<any>();\n @Output() action = new EventEmitter<any>();\n\n @HostBinding('style.display') blockDisplay = 'block';\n @HostBinding('@appearDisappear') animationState: 'init' | 'first' | 'fadeIn' = 'init';\n\n private timeout: any;\n\n ngAfterViewInit() {\n if (this.data && this.data.disappearAfter) {\n this.timeout = setTimeout(() => this.onClose(), this.data.disappearAfter);\n }\n }\n\n ngOnDestroy() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n }\n\n onAction() {\n this.action.emit();\n }\n\n onClose() {\n this.close.emit();\n }\n}\n","<div\n [ngClass]=\"{\n 'fwe-snackbar': true,\n 'fwe-snackbar-b': data?.variant === 'b',\n 'fwe-snackbar-c': data?.variant === 'c',\n 'fwe-snackbar-warning': data?.type === 'warning',\n 'fwe-snackbar-error': data?.type === 'error',\n 'fwe-snackbar-shadow': data?.darkBackground\n }\"\n>\n <i\n *ngIf=\"data?.type\"\n aria-hidden=\"true\"\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-info': data?.type === 'info',\n 'fwe-icon-status-warning': data?.type === 'warning',\n 'fwe-icon-status-failure': data?.type === 'error'\n }\"\n ></i>\n <span>{{ data?.text }}</span>\n <button *ngIf=\"data?.action\" aria-label=\"UserAction\" type=\"button\" class=\"fwe-btn fwe-btn-link\" (click)=\"onAction()\">\n {{ data?.action }}\n </button>\n <button *ngIf=\"data?.showClose\" aria-label=\"Close\" type=\"button\" class=\"fwe-btn fwe-btn-link\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SnackbarData } from './snackbar.models';\n\nexport type SnackDescription = {\n data: SnackbarData;\n actionCallback?: () => void;\n closeCallback?: () => void;\n resolve: (value: unknown) => void;\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackbarService {\n snacks$: Observable<SnackDescription>;\n\n private snacks = new Subject<SnackDescription>();\n\n constructor() {\n this.snacks$ = this.snacks.asObservable();\n }\n\n snack(data: SnackbarData, actionCallback?: () => void, closeCallback?: () => void) {\n return new Promise(resolve => {\n this.snacks.next({ data, actionCallback, closeCallback, resolve });\n });\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarConfig } from './snackbar.models';\nimport { SnackbarService, SnackDescription } from './snackbar.service';\n\ninterface SnackbarRef {\n componentRef: ComponentRef<SnackbarComponent>;\n complete: Subject<boolean>;\n}\n\n@Directive({\n selector: '[fngSnackbarContainer]'\n})\nexport class SnackbarContainerDirective implements OnDestroy, OnInit {\n @Input() fngSnackbarContainer: SnackbarConfig;\n\n private snacks: SnackbarRef[] = [];\n\n private snacksSub: Subscription;\n private factory: ComponentFactory<SnackbarComponent>;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private snackbarService: SnackbarService\n ) {\n this.factory = this.componentFactoryResolver.resolveComponentFactory(SnackbarComponent);\n }\n\n ngOnInit() {\n this.snacksSub = this.snackbarService.snacks$.subscribe(SnackDescription => this.push(SnackDescription));\n }\n\n ngOnDestroy() {\n if (this.snacks != null && this.snacks.length > 0) {\n this.snacks.forEach(snack => {\n snack.complete.next(true);\n snack.complete.complete();\n snack.complete.unsubscribe();\n });\n }\n if (this.snacksSub != null) {\n this.snacksSub.unsubscribe();\n }\n }\n\n private push(snackDescription: SnackDescription) {\n const complete = new Subject<boolean>();\n const componentRef = this.viewContainerRef.createComponent(this.factory, 0);\n const componentInstance = componentRef.instance;\n componentInstance.data = { ...this.fngSnackbarContainer, ...snackDescription.data };\n componentInstance.animationState = this.snacks.length === 0 ? 'first' : 'fadeIn';\n const snackbarRef = { componentRef, complete };\n componentInstance.close.pipe(takeUntil(complete)).subscribe(() => {\n this.remove(snackbarRef);\n if (snackDescription.closeCallback) {\n snackDescription.closeCallback();\n }\n });\n componentInstance.action.pipe(takeUntil(complete)).subscribe(() => {\n if (componentInstance.data.closeOnAction) {\n this.remove(snackbarRef);\n }\n if (snackDescription.actionCallback) {\n snackDescription.actionCallback();\n }\n });\n this.snacks.push(snackbarRef);\n snackDescription.resolve(snackbarRef.componentRef);\n }\n\n private remove(snackbarRef: SnackbarRef) {\n const index = this.snacks.indexOf(snackbarRef);\n if (index !== -1) {\n const deletedSnackbarRef = this.snacks.splice(index, 1);\n if (deletedSnackbarRef != null && deletedSnackbarRef.length > 0) {\n const deletedSnackbar = deletedSnackbarRef[0];\n if (deletedSnackbar.complete != null) {\n deletedSnackbar.complete.next(true);\n deletedSnackbar.complete.complete();\n deletedSnackbar.complete.unsubscribe();\n }\n if (deletedSnackbar.componentRef != null) {\n deletedSnackbar.componentRef.destroy();\n }\n }\n }\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SnackbarConfig } from './snackbar.models';\n\n@Component({\n selector: 'fng-snackbar-container',\n templateUrl: './snackbar-container.component.html',\n styleUrls: ['./snackbar-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SnackbarContainerComponent {\n @Input() config: SnackbarConfig = {\n darkBackground: true,\n disappearAfter: 5000,\n closeOnAction: true\n };\n}\n","<div class=\"fwe-snackbar-container\">\n <div [fngSnackbarContainer]=\"config\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarContainerDirective } from './snackbar-container.directive';\nimport { SnackbarContainerComponent } from './snackbar-container.component';\n\nexport * from './snackbar.models';\nexport * from './snackbar.component';\nexport * from './snackbar-container.component';\nexport * from './snackbar-container.directive';\n\n@NgModule({\n declarations: [SnackbarComponent, SnackbarContainerDirective, SnackbarContainerComponent],\n imports: [CommonModule],\n exports: [SnackbarContainerComponent, SnackbarContainerDirective, SnackbarContainerComponent],\n providers: [],\n bootstrap: [SnackbarComponent]\n})\nexport class FestoAngularSnackbarModule {}\n","import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\nexport type IconType = 'font' | 'img' | 'svg';\n\n/**\n * Describes an icon.\n */\nexport interface Icon {\n /**\n * The icon type.\n * - 'font' uses [name]{@link Icon#name} to resolve the icon from the icon font.\n * - 'img' uses [url]{@link Icon#url}, [height]{@link Icon#height}, [width]{@link Icon#width}\n * - 'svg' uses ng-content to display svg, [height]{@link Icon#height}, [width]{@link Icon#width}\n */\n type: IconType;\n\n /**\n * The name used to resolve the icon.\n */\n name?: string;\n\n /**\n * The url used to resolve the image.\n */\n url?: string;\n\n /**\n * Height of the image in pixel (px).\n */\n height?: number;\n\n /**\n * Width of the image in pixel (px).\n */\n width?: number;\n\n /**\n * This string will be added as css class to the icon.\n */\n class?: string;\n}\n\n/**\n * An icon component.\n */\n@Component({\n selector: 'fng-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent {\n /**\n * The icon.\n */\n @Input() icon: Icon;\n}\n","<i *ngIf=\"icon?.type === 'font'\" [class]=\"'fwe-icon fwe-icon-' + icon?.name + ' ' + (icon.class || '')\"></i>\n<img\n *ngIf=\"icon?.type === 'img'\"\n [class]=\"icon.class\"\n [src]=\"icon?.url\"\n [ngStyle]=\"{ width: icon?.width + 'px', height: icon?.height + 'px' }\"\n/>\n<ng-content *ngIf=\"icon?.type === 'svg'\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from './icon/icon.component';\n\nexport * from './icon/icon.component';\n\n@NgModule({\n declarations: [IconComponent],\n imports: [CommonModule],\n exports: [IconComponent],\n providers: []\n})\nexport class FestoAngularContentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n exports: [],\n providers: []\n})\nexport class FestoAngularLayoutModule {}\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\n\nimport SwiperCore, { FreeMode, Keyboard, Navigation, Thumbs, Zoom } from 'swiper';\nimport { Modal } from '../modals';\n\nSwiperCore.use([FreeMode, Navigation, Keyboard, Thumbs, Zoom]);\n\nexport interface ImageGalleryData {\n startIndex: number;\n images: { url: string; alt: string }[];\n thumbnailImages?: { url: string; alt: string }[];\n pagination?: boolean;\n slideChanged?: (index: number) => void;\n}\n\n@Component({\n selector: 'fng-image-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ImageGalleryComponent implements Modal<ImageGalleryData, any> {\n @Input() data: ImageGalleryData = {\n startIndex: 0,\n images: null,\n thumbnailImages: null,\n slideChanged: null,\n pagination: true\n };\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n thumbsSwiper: any;\n currentIndex = this.data.startIndex + 1;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n onSlideChange(swiper: { activeIndex: number }[]) {\n this.currentIndex = swiper[0].activeIndex + 1;\n this.cd.markForCheck();\n this.cd.detectChanges();\n if (this.data?.slideChanged) {\n this.data.slideChanged(swiper[0].activeIndex);\n }\n }\n\n onClose() {\n this.close.emit();\n }\n}\n","<div class=\"fwe-modal fwe-modal-image-gallery\" *ngIf=\"data != null\" [class.fwe-modal-image-gallery--with-thumbnails]=\"data.thumbnailImages?.length > 0\">\n <div class=\"fwe-image-gallery-header\">\n <div *ngIf=\"data.pagination\" class=\"fwe-pagination fwe-pagination--on-dark-bg\">\n <button aria-label=\"previous\" type=\"button\" class=\"fwe-navigate-btn-down\"></button>\n <span id=\"currentslide\" class=\"fwe-page-current\">{{currentIndex}}</span>\n <span id=\"slideslength\" class=\"fwe-page-max\">{{data.images?.length}}</span>\n <button aria-label=\"next\" type=\"button\" class=\"fwe-navigate-btn-up\"></button>\n </div>\n <button aria-label=\"close\" type=\"button\" class=\"fwe-btn fwe-btn-link fwe-ml-auto\" (click)=\"onClose()\">\n <i class=\"fwe-icon fwe-icon-lg fwe-color-white fwe-icon-menu-close fwe-modal-image-gallery-close\"></i>\n </button>\n </div>\n <swiper\n [initialSlide]=\"data.startIndex\"\n [keyboard]=\"{\n enabled: true\n }\"\n [spaceBetween]=\"0\"\n [zoom]=\"true\"\n [navigation]=\"{\n nextEl: '.fwe-navigate-btn-up',\n prevEl: '.fwe-navigate-btn-down'\n }\"\n [thumbs]=\"{ swiper: thumbsSwiper }\"\n (slideChange)=\"onSlideChange($event)\"\n class=\"gallery-swiper fwe-image-gallery\"\n >\n <ng-template *ngFor=\"let image of data.images\" swiperSlide>\n <div class=\"swiper-zoom-container\">\n <img [alt]=\"image.alt\" [src]=\"image.url\" />\n </div>\n </ng-template>\n </swiper>\n <swiper *ngIf=\"data.thumbnailImages?.length > 0\"\n (swiper)=\"thumbsSwiper = $event\"\n [slidesPerView]=\"'auto'\"\n [freeMode]=\"true\"\n [watchSlidesProgress]=\"true\"\n class=\"thumbs-swiper fwe-image-gallery-thumbs\"\n >\n <ng-template *ngFor=\"let thumbnail of data.thumbnailImages\" swiperSlide>\n <img [alt]=\"thumbnail.alt\" [src]=\"thumbnail.url\" />\n </ng-template>\n </swiper>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperModule } from 'swiper/angular';\nimport { ImageGalleryComponent } from './image-gallery.component';\n\nexport * from './image-gallery.component';\n\n@NgModule({\n declarations: [ImageGalleryComponent],\n imports: [CommonModule, SwiperModule],\n exports: [ImageGalleryComponent],\n providers: []\n})\nexport class FestoAngularImageGalleryModule {}\n","import { NgModule } from '@angular/core';\nimport { FestoAngularLayoutModule } from './layout/layout.module';\nimport { FestoAngularComponentsModule } from './components/components.module';\nimport { FestoAngularContentModule } from './content/content.module';\nimport { FestoAngularFormsModule } from './forms/forms.module';\nimport { FestoAngularModalsModule } from './components/modals/modals.module';\nimport { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';\nimport { FestoAngularImageGalleryModule } from './components/image-gallery/image-gallery.module';\n\n@NgModule({\n declarations: [],\n imports: [\n FestoAngularLayoutModule,\n FestoAngularComponentsModule,\n FestoAngularContentModule,\n FestoAngularFormsModule,\n FestoAngularModalsModule,\n FestoAngularSnackbarModule,\n FestoAngularImageGalleryModule\n ],\n exports: [\n FestoAngularLayoutModule,\n FestoAngularComponentsModule,\n FestoAngularContentModule,\n FestoAngularFormsModule,\n FestoAngularModalsModule,\n FestoAngularSnackbarModule,\n FestoAngularImageGalleryModule\n ]\n})\nexport class FestoAngularModule {}\n","import { Injectable, SimpleChange } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { Modal, ModalOptions, ModalResult } from './index';\nimport { AlertComponent, AlertData } from './alert/alert.component';\nimport { ConfirmComponent, ConfirmData } from './confirm/confirm.component';\nimport { Subject } from 'rxjs';\nimport { PromptComponent, PromptData } from './prompt/prompt.component';\nimport { ImageGalleryComponent, ImageGalleryData } from '../image-gallery/image-gallery.component';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(protected overlay: Overlay, private router: Router) {}\n\n alert(data: AlertData, options?: ModalOptions) {\n return this.open<AlertData, any, AlertComponent>(data, AlertComponent, {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n });\n }\n\n confirm(data: ConfirmData, options?: ModalOptions) {\n options = options || {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n };\n return this.open<ConfirmData, any, ConfirmComponent>(data, ConfirmComponent, options);\n }\n\n prompt(data: PromptData, options?: ModalOptions) {\n options = options || {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n };\n return this.open<PromptData, any, PromptComponent>(data, PromptComponent, options);\n }\n\n openImageGallery(data: ImageGalleryData) {\n const options: ModalOptions = {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true\n };\n return this.open<ImageGalleryData, any, ImageGalleryComponent>(data, ImageGalleryComponent, options);\n }\n\n open<TData, TResult, TModal extends Modal<TData, TResult>>(\n data: TData,\n modal: ComponentType<TModal>,\n options: ModalOptions\n ): Promise<ModalResult<TResult>> {\n return new Promise((resolve, reject) => {\n const complete = new Subject<boolean>();\n const positionStrategy = options.positionStrategy || this.overlay.position().global().centerHorizontally().centerVertically();\n const scrollStrategy = this.overlay.scrollStrategies.block();\n const overlayRef = this.overlay.create({\n panelClass: options.overlayClass,\n positionStrategy,\n scrollStrategy,\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n ...options\n });\n\n if (options.closeOnNavigation) {\n this.router.events\n .pipe(\n filter(e => e instanceof NavigationStart),\n takeUntil(complete)\n )\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'navigated' })));\n }\n\n if (options.shouldCloseOnBackdrop) {\n overlayRef\n .backdropClick()\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'backdrop' })));\n }\n\n const modalPortal = new ComponentPortal(modal);\n const componentRef = overlayRef.attach(modalPortal);\n if (componentRef != null && componentRef.instance != null) {\n componentRef.instance.data = data;\n if (componentRef.instance.close != null) {\n componentRef.instance.close\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'close' })));\n }\n if (componentRef.instance.cancel != null) {\n componentRef.instance.cancel\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'cancel' })));\n }\n if (componentRef.instance.ok != null) {\n componentRef.instance.ok\n .pipe(takeUntil(complete))\n .subscribe(result => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'ok', result })));\n }\n if (componentRef.instance.ngOnChanges != null) {\n componentRef.instance.ngOnChanges({ data: new SimpleChange(null, data, true) });\n }\n } else {\n this.dispose(overlayRef, complete).then(() => reject(new Error('Could not attach component to overlay.')));\n }\n });\n }\n\n private dispose(overlayRef: OverlayRef, complete: Subject<boolean>) {\n return new Promise<void>(resolve => {\n complete.next(true);\n complete.complete();\n complete.unsubscribe();\n overlayRef.dispose();\n resolve();\n });\n }\n}\n","// COMPONENTS\nexport * from './lib/components/components.module';\n\n// MODALS\nexport * from './lib/components/modals/modals.module';\n\n// SNACKBAR\nexport * from './lib/components/snackbar/snackbar.module';\n\n// CONTENT\nexport * from './lib/content/content.module';\n\n// FORMS\nexport * from './lib/forms/forms.module';\n\n// LAYOUT\nexport * from './lib/layout/layout.module';\n\n// IMAGE GALLERY\nexport * from './lib/components/image-gallery/image-gallery.module';\n\n// MAIN\nexport * from './lib/festo-angular.module';\n\n// SERVICES\nexport * from './lib/components/modals/modal.service';\nexport * from './lib/components/snackbar/snackbar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId"],"mappings":"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"}
1
+ {"version":3,"file":"festo-ui-angular.mjs","sources":["../../../../libs/angular/src/lib/components/buttons/button/button.component.ts","../../../../libs/angular/src/lib/components/buttons/button/button.component.html","../../../../libs/angular/src/lib/components/buttons/link-button/link-button.component.ts","../../../../libs/angular/src/lib/components/buttons/link-button/link-button.component.html","../../../../libs/angular/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../../libs/angular/src/lib/components/breadcrumb/breadcrumb.component.html","../../../../libs/angular/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../../libs/angular/src/lib/components/loading-indicator/loading-indicator.component.html","../../../../libs/angular/src/lib/components/chips/chip-container/chip-container.component.ts","../../../../libs/angular/src/lib/components/chips/chip-container/chip-container.component.html","../../../../libs/angular/src/lib/components/chips/chip/chip.component.ts","../../../../libs/angular/src/lib/components/chips/chip/chip.component.html","../../../../libs/angular/src/lib/components/table-header-cell/table-header-cell.directive.ts","../../../../libs/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.ts","../../../../libs/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.html","../../../../libs/angular/src/lib/components/stepper-vertical/stepper-vertical.component.ts","../../../../libs/angular/src/lib/components/stepper-vertical/stepper-vertical.component.html","../../../../libs/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.ts","../../../../libs/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.html","../../../../libs/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.ts","../../../../libs/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.html","../../../../libs/angular/src/lib/components/popovers/popover-ref.ts","../../../../libs/angular/src/lib/components/popovers/popover.models.ts","../../../../libs/angular/src/lib/components/popovers/popover/popover.component.ts","../../../../libs/angular/src/lib/components/popovers/popover/popover.component.html","../../../../libs/angular/src/lib/components/popovers/popover.defaults.ts","../../../../libs/angular/src/lib/components/popovers/popover.service.ts","../../../../libs/angular/src/lib/components/popovers/popover-menu/popover-menu.component.ts","../../../../libs/angular/src/lib/components/popovers/popover-menu/popover-menu.component.html","../../../../libs/angular/src/lib/components/popovers/tooltip/tooltip.directive.ts","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.component.ts","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.component.html","../../../../libs/angular/src/lib/components/popovers/popover-content/popover-content.directive.ts","../../../../libs/angular/src/lib/components/popovers/legend/legend.component.ts","../../../../libs/angular/src/lib/components/popovers/legend/legend.component.html","../../../../libs/angular/src/lib/components/popovers/legend/legend.directive.ts","../../../../libs/angular/src/lib/components/progress/progress.component.ts","../../../../libs/angular/src/lib/components/progress/progress.component.html","../../../../libs/angular/src/lib/components/tabs/tab-pane/tab-pane.component.ts","../../../../libs/angular/src/lib/components/tabs/tab-pane/tab-pane.component.html","../../../../libs/angular/src/lib/components/tabs/tabs.component.ts","../../../../libs/angular/src/lib/components/tabs/tabs.component.html","../../../../libs/angular/src/lib/components/pagination/pagination.component.ts","../../../../libs/angular/src/lib/components/pagination/pagination.component.html","../../../../libs/angular/src/lib/components/scroll/scrollable.directive.ts","../../../../libs/angular/src/lib/components/click-outside.directive.ts","../../../../libs/angular/src/lib/components/search-input/safe-html.pipe.ts","../../../../libs/angular/src/lib/components/search-input/search-input.component.ts","../../../../libs/angular/src/lib/components/search-input/search-input.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.html","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout.component.ts","../../../../libs/angular/src/lib/components/mobile-flyout/mobile-flyout.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../../libs/angular/src/lib/components/accordion/accordion.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion.component.html","../../../../libs/angular/src/lib/components/accordion/accordion-header/accordion-header.component.ts","../../../../libs/angular/src/lib/components/accordion/accordion-header/accordion-header.component.html","../../../../libs/angular/src/lib/components/components.module.ts","../../../../libs/angular/src/lib/forms/checkbox/checkbox.component.ts","../../../../libs/angular/src/lib/forms/checkbox/checkbox.component.html","../../../../libs/angular/src/lib/forms/switch/switch.component.ts","../../../../libs/angular/src/lib/forms/switch/switch.component.html","../../../../libs/angular/src/lib/forms/unique-selection-dispatcher.ts","../../../../libs/angular/src/lib/forms/radio/radio.component.ts","../../../../libs/angular/src/lib/forms/radio/radio.component.html","../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.ts","../../../../libs/angular/src/lib/forms/select/select-option/select-option.component.html","../../../../libs/angular/src/lib/forms/select/chip-text.pipe.ts","../../../../libs/angular/src/lib/forms/select/select.component.ts","../../../../libs/angular/src/lib/forms/select/select.component.html","../../../../libs/angular/src/lib/forms/text-input/text-input.component.ts","../../../../libs/angular/src/lib/forms/text-input/text-input.component.html","../../../../libs/angular/src/lib/forms/text-area/text-area.component.ts","../../../../libs/angular/src/lib/forms/text-area/text-area.component.html","../../../../libs/angular/src/lib/forms/color-picker/color-helper.ts","../../../../libs/angular/src/lib/forms/color-picker/color-picker.component.ts","../../../../libs/angular/src/lib/forms/color-picker/color-picker.component.html","../../../../libs/angular/src/lib/forms/slider/slider.component.ts","../../../../libs/angular/src/lib/forms/slider/slider.component.html","../../../../libs/angular/src/lib/forms/color-indicator/color-indicator.component.ts","../../../../libs/angular/src/lib/forms/color-indicator/color-indicator.component.html","../../../../libs/angular/src/lib/forms/value-accessor-base.ts","../../../../libs/angular/src/lib/forms/segment/segment-control/segment-control.component.ts","../../../../libs/angular/src/lib/forms/segment/segment-control/segment-control.component.html","../../../../libs/angular/src/lib/forms/segment/segment.component.ts","../../../../libs/angular/src/lib/forms/segment/segment.component.html","../../../../libs/angular/src/lib/wrappers/flatpickr/flatpickr.component.ts","../../../../libs/angular/src/lib/wrappers/flatpickr/flatpickr.component.html","../../../../libs/angular/src/lib/forms/date-picker/date-picker.component.ts","../../../../libs/angular/src/lib/forms/date-picker/date-picker.component.html","../../../../libs/angular/src/lib/forms/date-range-picker/date-range-picker.component.ts","../../../../libs/angular/src/lib/forms/date-range-picker/date-range-picker.component.html","../../../../libs/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.ts","../../../../libs/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.html","../../../../libs/angular/src/lib/forms/time-picker/time-picker.component.ts","../../../../libs/angular/src/lib/forms/time-picker/time-picker.component.html","../../../../libs/angular/src/lib/forms/text-editor/text-editor.component.ts","../../../../libs/angular/src/lib/forms/text-editor/text-editor.component.html","../../../../libs/angular/src/lib/forms/container-host.ts","../../../../libs/angular/src/lib/forms/forms.module.ts","../../../../libs/angular/src/lib/components/modals/alert/alert.component.ts","../../../../libs/angular/src/lib/components/modals/alert/alert.component.html","../../../../libs/angular/src/lib/components/modals/confirm/confirm.component.ts","../../../../libs/angular/src/lib/components/modals/confirm/confirm.component.html","../../../../libs/angular/src/lib/components/modals/prompt/prompt.component.ts","../../../../libs/angular/src/lib/components/modals/prompt/prompt.component.html","../../../../libs/angular/src/lib/components/modals/custom-modal/custom-modal.component.ts","../../../../libs/angular/src/lib/components/modals/custom-modal/custom-modal.component.html","../../../../libs/angular/src/lib/components/modals/modals.module.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar.component.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar.component.html","../../../../libs/angular/src/lib/components/snackbar/snackbar.service.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.directive.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.component.ts","../../../../libs/angular/src/lib/components/snackbar/snackbar-container.component.html","../../../../libs/angular/src/lib/components/snackbar/snackbar.module.ts","../../../../libs/angular/src/lib/content/icon/icon.component.ts","../../../../libs/angular/src/lib/content/icon/icon.component.html","../../../../libs/angular/src/lib/content/content.module.ts","../../../../libs/angular/src/lib/layout/layout.module.ts","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.component.ts","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.component.html","../../../../libs/angular/src/lib/components/image-gallery/image-gallery.module.ts","../../../../libs/angular/src/lib/festo-angular.module.ts","../../../../libs/angular/src/lib/components/modals/modal.service.ts","../../../../libs/angular/src/index.ts","../../../../libs/angular/src/festo-ui-angular.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'fng-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ButtonComponent {\n @Input() text: string;\n @Input() icon: string;\n @Input() disabled = false;\n @Input() primary = false;\n @Input() iconOnly = false;\n @Input() large = false;\n @Output() fngClick = new EventEmitter<any>();\n @ContentChild('content') content: ElementRef;\n\n onClick(event: any) {\n if (!this.disabled) {\n this.fngClick.emit(event);\n }\n }\n}\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\n 'fwe-btn': true,\n 'fng-button': true,\n 'fwe-btn-icon': iconOnly,\n 'fwe-disabled': disabled,\n 'fwe-btn-hero': primary,\n 'fwe-btn-lg': large\n }\"\n [disabled]=\"disabled\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <div *ngIf=\"!iconOnly\" class=\"fng-button-text\">\n <ng-content></ng-content>\n <span *ngIf=\"!content\">{{ text }}</span>\n </div>\n</button>\n","import { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'fng-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LinkButtonComponent {\n @Input() text: string;\n @Input() icon: string;\n @Input() disabled = false;\n @Input() iconOnly = false;\n @Output() fngClick = new EventEmitter<any>();\n @ContentChild('content') content: ElementRef;\n\n onClick(event: any) {\n this.fngClick.emit(event);\n }\n}\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\n 'fwe-btn': true,\n 'fwe-btn-link': true,\n 'fwe-disabled': disabled\n }\"\n [disabled]=\"disabled\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <ng-content *ngIf=\"!iconOnly\"></ng-content>\n <span *ngIf=\"!content\">{{ text }}</span>\n</button>\n","import { Component, Input, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class BreadcrumbComponent {\n @Input() useRouterLink = false;\n @Input() locations: { label: string; url: string }[];\n @Output() navigate = new EventEmitter<string>();\n}\n","<div class=\"fwe-breadcrumb\">\n <ng-container *ngFor=\"let location of locations; let i = index\">\n <a *ngIf=\"useRouterLink\" class=\"fng-breadcrumb-location\" [routerLink]=\"location.url\">{{ location.label }}</a>\n <a *ngIf=\"!useRouterLink\" class=\"fng-breadcrumb-location\" (click)=\"navigate.emit(location.url)\">{{ location.label }}</a>\n <i class=\"fwe-icon fwe-icon-arrows-right-2\" *ngIf=\"i + 1 < locations.length\"></i>\n </ng-container>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class LoadingIndicatorComponent {\n @Input() size: 'large' | 'medium' | 'small' = 'large';\n}\n","<div class=\"fng-waiting-container\">\n <div\n class=\"fwe-waiting-indicator\"\n [class.fwe-waiting-indicator-md]=\"size === 'medium'\"\n [class.fwe-waiting-indicator-sm]=\"size === 'small'\"\n >\n <div class=\"fwe-waiting-circle-1\"></div>\n <div class=\"fwe-waiting-circle-2\"></div>\n <div class=\"fwe-waiting-circle-3\"></div>\n </div>\n <ng-content></ng-content>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-chip-container',\n templateUrl: './chip-container.component.html',\n styleUrls: ['./chip-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChipContainerComponent {\n @Input() large = false;\n}\n","<div class=\"fwe-chip-container\" [class.fwe-chip-container-lg]=\"large\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport enum ChipType {\n Choise = 'CHOISE',\n Category = 'CATEGORY',\n Filter = 'FILTER',\n Action = 'ACTION',\n Readonly = 'READONLY'\n}\n\n@Component({\n selector: 'fng-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ChipComponent {\n ChipType = ChipType;\n\n @Input() type: ChipType = ChipType.Choise;\n @Input() selected = false;\n @Input() disabled = false;\n @Input() icon: string;\n @Input() large = false;\n}\n","<div\n [ngClass]=\"{\n 'fwe-chip': true,\n 'fwe-selected': selected,\n 'fwe-disabled': disabled,\n 'fwe-chip-lg': large,\n 'fwe-category': type === ChipType.Category,\n 'fwe-filter': type === ChipType.Filter,\n 'fwe-readonly': type === ChipType.Readonly\n }\"\n>\n <i *ngIf=\"icon\" [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n <ng-content></ng-content>\n</div>\n","import { Directive, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface TableColumnOrder {\n orderBy?: string;\n ascending: boolean;\n}\n\n@Directive({\n selector: '[fngTh]',\n host: {\n '[class.fwe-table-order]': 'order != null',\n '[class.fwe-active]': 'active',\n '[class.fwe-table-order-descending]': 'orderDescending',\n '[attr.abbr]': 'abbr',\n '[attr.colspan]': 'colspan',\n '[attr.headers]': 'headers',\n '[attr.rowspan]': 'rowspan',\n '[attr.scope]': 'scope',\n '(click)': 'onChangeOrder()'\n }\n})\nexport class TableHeaderCellDirective {\n @Input() order: TableColumnOrder;\n @Input() fngTh: string;\n\n @Output() changeOrder = new EventEmitter<string>();\n\n /* Attributes */\n @Input() abbr: string;\n @Input() colspan: number;\n @Input() headers: string;\n @Input() rowspan: number;\n @Input() scope: string;\n\n get active(): boolean {\n if (this.order == null) {\n return false;\n }\n\n if (this.order.orderBy == null || this.fngTh == null) {\n return false;\n }\n\n return this.order.orderBy === this.fngTh;\n }\n\n get orderDescending(): boolean {\n return this.active && !this.order.ascending;\n }\n\n onChangeOrder() {\n this.changeOrder.emit(this.fngTh);\n }\n}\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'fng-step-vertical',\n templateUrl: './step-vertical.component.html',\n styleUrls: ['./step-vertical.component.scss']\n})\nexport class StepVerticalComponent implements AfterViewInit {\n @ViewChild('stepContent') stepContent?: ElementRef;\n @ViewChild('stepContentContainer') stepContentContainer?: ElementRef;\n\n @Input() index: number = 0;\n\n @Input() title: string = '';\n\n @Input() isDone: boolean = false;\n\n @Input() isLastElement: boolean = false;\n\n // Note: OnChanges does not work because the input are not updated via bindings\n @Input() set isActive(value: boolean) {\n this._isActive = value;\n this.updateHeight();\n }\n get isActive(): boolean {\n return this._isActive;\n }\n _isActive = false;\n\n public onStepClickCallback: (i: number) => void;\n\n updateHeight() {\n if (this.stepContent && this.stepContentContainer) {\n if (this.isActive) {\n const itemHeight = this.stepContent.nativeElement.offsetHeight;\n this.stepContentContainer.nativeElement.style.height = itemHeight + 'px';\n } else {\n this.stepContentContainer.nativeElement.style.height = '20px';\n }\n }\n }\n\n ngAfterViewInit() {\n this.updateHeight();\n }\n}\n","<div\n class=\"fwe-step-container\"\n [class.fwe-last-element]=\"isLastElement\"\n [class.fwe-step-active]=\"isActive\"\n [class.fwe-step-done]=\"isDone\"\n>\n <div class=\"fwe-step\" (click)=\"onStepClickCallback(index)\">\n <div class=\"fwe-step-no\">{{ index + 1 }}</div>\n <div class=\"fwe-step-name\">{{ title }}</div>\n </div>\n <div #stepContentContainer class=\"fwe-step-content-container\">\n <div #stepContent class=\"fwe-step-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList } from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport { StepVerticalComponent } from './step-vertical/step-vertical.component';\n\n@Component({\n selector: 'fng-stepper-vertical',\n templateUrl: './stepper-vertical.component.html'\n})\nexport class StepperVerticalComponent implements AfterContentInit, OnChanges {\n @ContentChildren(StepVerticalComponent) stepComponents!: QueryList<StepVerticalComponent>;\n\n @Input() stepIndex: number = 0;\n @Output() stepIndexChange = new EventEmitter<number>();\n\n ngOnChanges() {\n this.updateStepComponents();\n }\n\n updateStepComponents(): void {\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\n this.stepComponents.forEach((s, i) => {\n s.index = i;\n s.isDone = i < this.stepIndex;\n s.isActive = i == this.stepIndex;\n s.isLastElement = i == this.stepComponents.length - 1;\n s.onStepClickCallback = i => this.onStepClick(i);\n });\n }\n }\n\n ngAfterContentInit(): void {\n if (!this.stepComponents) {\n return;\n }\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\n this.updateStepComponents();\n });\n this.updateStepComponents();\n }\n\n onStepClick(index: number) {\n if (this.stepIndex > index) {\n this.stepIndex = index;\n this.updateStepComponents();\n this.stepIndexChange?.emit(index);\n }\n }\n}\n","<div class=\"fwe-stepper-vertical\">\n <ng-content></ng-content>\n</div>\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fng-step-horizontal',\n templateUrl: './step-horizontal.component.html',\n styleUrls: ['./step-horizontal.component.scss']\n})\nexport class StepHorizontalComponent {\n @Input() isActive = false;\n\n @Input() title: string = '';\n}\n","<div class=\"overflow-hidden\" [class.hidden]=\"!isActive\">\n <div class=\"fng-moving-container\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList } from '@angular/core';\nimport { delay } from 'rxjs/operators';\nimport { StepHorizontalComponent } from './step-horizontal/step-horizontal.component';\n\n@Component({\n selector: 'fng-stepper-horizontal',\n templateUrl: './stepper-horizontal.component.html'\n})\nexport class StepperHorizontalComponent implements AfterContentInit, OnChanges {\n @ContentChildren(StepHorizontalComponent) stepComponents!: QueryList<StepHorizontalComponent>;\n\n @Input() stepIndex: number = 0;\n @Output() stepIndexChange = new EventEmitter<number>();\n\n ngOnChanges() {\n this.updateStepComponents();\n }\n\n updateStepComponents(): void {\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\n this.stepComponents.forEach((s, i) => {\n s.isActive = i == this.stepIndex;\n });\n }\n }\n\n ngAfterContentInit(): void {\n if (!this.stepComponents) {\n return;\n }\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\n this.updateStepComponents();\n });\n this.updateStepComponents();\n }\n\n onStepClick(index: number) {\n if (this.stepIndex > index) {\n this.stepIndex = index;\n this.updateStepComponents();\n this.stepIndexChange?.emit(index);\n }\n }\n}\n","<div class=\"fwe-stepper-horizontal\">\n <div\n *ngFor=\"let step of stepComponents; index as i\"\n class=\"fwe-step-container\"\n (click)=\"onStepClick(i)\"\n [class.fwe-step-done]=\"stepIndex > i\"\n [class.fwe-step-active]=\"i === stepIndex\"\n >\n <div class=\"fwe-step\">\n <div class=\"fwe-step-no\">{{ i + 1 }}</div>\n <div class=\"fwe-step-name\">{{ step.title }}</div>\n </div>\n </div>\n</div>\n\n<ng-content></ng-content>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\n\nimport { PopoverContent, PopoverCloseEvent } from './popover.models';\n\nexport class PopoverRef<T = any> {\n private afterClosed = new Subject<PopoverCloseEvent<T>>();\n afterClosed$ = this.afterClosed.asObservable();\n\n constructor(public overlay: OverlayRef, public content: PopoverContent, public data: T) {\n overlay.backdropClick().subscribe(() => {\n this._close('backdropClick', null);\n });\n }\n\n close(data?: T) {\n this._close('close', data);\n }\n\n private _close(type: PopoverCloseEvent['type'], data?: T) {\n this.overlay.dispose();\n this.afterClosed.next({\n type,\n data\n });\n this.afterClosed.complete();\n }\n}\n","import { TemplateRef, Type } from '@angular/core';\n\nexport interface PopoverParams<T> {\n origin: HTMLElement;\n content: PopoverContent;\n options?: PopoverOptions;\n data?: T;\n}\n\nexport enum PopoverTypes {\n Tooltip = 'tooltip',\n Menu = 'menu',\n Legend = 'legend',\n Content = 'content'\n}\n\nexport enum PopoverPosition {\n Top = 'top',\n Bottom = 'bottom',\n Right = 'right',\n RightTop = 'right-top',\n Left = 'left',\n LeftTop = 'left-top'\n}\n\nexport interface PopoverOptions {\n type: PopoverTypes;\n width?: string | number;\n height?: string | number;\n maxWidth?: string | number;\n maxHeight?: string | number;\n minWidth?: string | number;\n minHeight?: string | number;\n hasBackdrop?: boolean;\n backdropClass?: string;\n positions?: PopoverPosition[];\n}\n\nexport interface PopoverCloseEvent<T = any> {\n type: 'backdropClick' | 'close';\n data: T;\n}\n\nexport enum PopoverContentTypes {\n Template = 'template',\n Component = 'component',\n Text = 'text'\n}\n\nexport type PopoverContent = TemplateRef<any> | Type<any> | string;\n\nexport interface PopoverMenu<T = any> {\n text: string;\n icon: string;\n action: string;\n data?: T;\n}\n\nexport interface PopoverMenuAction<T = any> {\n action: string;\n payload: T;\n}\n\nexport interface PopoverMenuActionAware<T = any> {\n onMenuAction(event: PopoverMenuAction<T>): void;\n}\n","import { Component, OnInit, TemplateRef } from '@angular/core';\n\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverContent, PopoverContentTypes } from '../popover.models';\n\n@Component({\n selector: 'fng-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss']\n})\nexport class PopoverComponent implements OnInit {\n type: PopoverContentTypes = PopoverContentTypes.Text;\n content: PopoverContent;\n context: any;\n\n constructor(private popoverRef: PopoverRef) {}\n\n ngOnInit() {\n this.content = this.popoverRef.content;\n if ('string' === typeof this.content) {\n this.type = PopoverContentTypes.Text;\n }\n\n if (this.content instanceof TemplateRef) {\n this.type = PopoverContentTypes.Template;\n this.context = {\n close: this.popoverRef.close.bind(this.popoverRef)\n };\n }\n }\n}\n","<div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\">\n <ng-container [ngSwitch]=\"type\">\n <div class=\"fwe-popover-content\" *ngSwitchCase=\"'text'\" [innerHTML]=\"content\"></div>\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container *ngTemplateOutlet=\"content; context: context\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'component'\">\n <ng-container *ngComponentOutlet=\"content\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n</div>\n","import { PopoverPosition, PopoverTypes } from './popover.models';\n\nexport const defaultPositions = {\n [PopoverPosition.Bottom]: {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 22\n },\n [PopoverPosition.Top]: {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -22\n },\n [PopoverPosition.Right]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: 22\n },\n [PopoverPosition.Left]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -22\n },\n [PopoverPosition.LeftTop]: {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -22,\n offsetY: -32\n },\n [PopoverPosition.RightTop]: {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: 22,\n offsetY: -32\n }\n};\nexport const defaultClasses = {\n [PopoverTypes.Tooltip]: 'fng-popover-tooltip',\n [PopoverTypes.Menu]: 'fng-popover-menu',\n [PopoverTypes.Legend]: 'fng-popover-legend',\n [PopoverTypes.Content]: 'fng-popover-content',\n [PopoverPosition.Bottom]: 'fng-popover-bottom',\n [PopoverPosition.Top]: 'fng-popover-top',\n [PopoverPosition.Right]: 'fng-popover-right',\n [PopoverPosition.Left]: 'fng-popover-left',\n [PopoverPosition.RightTop]: 'fng-popover-right-top',\n [PopoverPosition.LeftTop]: 'fng-popover-left-top'\n};\n","import { Injectable, Injector } from '@angular/core';\nimport {\n Overlay,\n ConnectionPositionPair,\n OverlayConfig,\n FlexibleConnectedPositionStrategy,\n NoopScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\n\nimport { PopoverRef } from './popover-ref';\nimport { PopoverComponent } from './popover/popover.component';\nimport { defaultPositions, defaultClasses } from './popover.defaults';\nimport { PopoverParams, PopoverOptions, PopoverTypes, PopoverPosition } from './popover.models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PopoverService {\n readonly options: PopoverOptions = {\n type: PopoverTypes.Tooltip,\n width: null,\n height: null,\n maxWidth: null,\n maxHeight: null,\n minWidth: null,\n minHeight: null,\n hasBackdrop: false,\n backdropClass: 'fng-popover-backdrop',\n positions: null\n };\n\n get defaultOptions() {\n return this.options;\n }\n\n constructor(private overlay: Overlay, private injector: Injector) {}\n\n open<T>({ origin, content, data, options }: PopoverParams<T>): PopoverRef<T> {\n if (null == options) {\n options = this.defaultOptions;\n }\n const overlayConfig = this.getOverlayConfig({ origin, options });\n const overlayRef = this.overlay.create(overlayConfig);\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\n const injector = this.createInjector(popoverRef, this.injector);\n\n overlayRef.attach(new ComponentPortal(PopoverComponent, null, injector));\n\n return popoverRef;\n }\n\n private getOverlayConfig({ origin, options }: { origin: HTMLElement; options: PopoverOptions }): OverlayConfig {\n const type = null != options.type ? options.type : this.defaultOptions.type;\n const positions = null != options.positions ? options.positions : this.defaultOptions.positions;\n return new OverlayConfig({\n width: null != options.width ? options.width : this.defaultOptions.width,\n height: null != options.height ? options.height : this.defaultOptions.height,\n maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,\n maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,\n minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,\n minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,\n positionStrategy: this.getOverlayPosition(origin, type, positions),\n scrollStrategy:\n null != this.overlay && null != this.overlay.scrollStrategies ? this.overlay.scrollStrategies.block() : ({} as NoopScrollStrategy),\n hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,\n backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass\n });\n }\n\n private getOverlayPosition(origin: HTMLElement, type: PopoverTypes, positions: PopoverPosition[]): FlexibleConnectedPositionStrategy {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions(null != positions ? this.getPositions(type, positions) : this.getDefaultPositions(type))\n .withFlexibleDimensions(false)\n .withViewportMargin(16)\n .withPush(false);\n\n return positionStrategy;\n }\n\n private createInjector(popoverRef: PopoverRef, injector: Injector) {\n return Injector.create({\n parent: injector,\n providers: [{ provide: PopoverRef, useValue: popoverRef }]\n });\n }\n\n private getDefaultPositions(type: PopoverTypes): ConnectionPositionPair[] {\n const pairs: ConnectionPositionPair[] = [];\n let positions = [];\n const fn = (t: PopoverTypes, p: PopoverPosition[]) =>\n p.map(position => {\n pairs.push({\n ...defaultPositions[position as string],\n panelClass: [defaultClasses[t], defaultClasses[position]]\n });\n });\n switch (type) {\n case PopoverTypes.Tooltip:\n positions = [PopoverPosition.Bottom, PopoverPosition.Top];\n fn(PopoverTypes.Tooltip, positions);\n break;\n case PopoverTypes.Menu:\n positions = [PopoverPosition.Right, PopoverPosition.Left];\n fn(PopoverTypes.Menu, positions);\n break;\n case PopoverTypes.Legend:\n positions = [PopoverPosition.Bottom];\n fn(PopoverTypes.Legend, positions);\n break;\n case PopoverTypes.Content:\n positions = [PopoverPosition.Bottom];\n fn(PopoverTypes.Content, positions);\n break;\n default:\n break;\n }\n return pairs;\n }\n\n private getPositions(type: PopoverTypes, positions: PopoverPosition[]): ConnectionPositionPair[] {\n const pairs: ConnectionPositionPair[] = [];\n positions.map(position => {\n pairs.push({\n ...defaultPositions[position as string],\n panelClass: [defaultClasses[type], defaultClasses[position]]\n });\n });\n\n return pairs;\n }\n}\n","import { Component, TemplateRef, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener } from '@angular/core';\n\nimport { PopoverService } from '../popover.service';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes, PopoverMenu, PopoverMenuAction, PopoverPosition } from '../popover.models';\n\nexport interface PopoverMenuOptions {\n positions?: PopoverPosition[];\n}\n\n@Component({\n selector: 'fng-popover-menu',\n templateUrl: './popover-menu.component.html',\n styleUrls: ['./popover-menu.component.scss']\n})\nexport class PopoverMenuComponent {\n @Input() icon = 'fwe-icon-menu-more fwe-icon-lg';\n @Input() menu: PopoverMenu[] = [];\n @Input() options: PopoverMenuOptions = {};\n\n @Output() menuAction: EventEmitter<PopoverMenuAction> = new EventEmitter();\n\n @ViewChild('menuTpl') menuTpl: TemplateRef<any>;\n @ViewChild('origin') origin: ElementRef;\n\n private popoverRef: PopoverRef;\n private itemHeight = 36;\n\n constructor(private popoverService: PopoverService) {}\n\n show(event: Event, content: TemplateRef<any>, origin: HTMLElement) {\n event.stopPropagation();\n event.preventDefault();\n if (0 < this.menu.length) {\n this.popoverRef = this.popoverService.open({\n content,\n origin,\n options: {\n type: PopoverTypes.Menu,\n hasBackdrop: true,\n // height calc is needed for correct vertical positioning (+32 -> 2 * vertical padding 16px)\n height: +(this.itemHeight * this.menu.length + 32),\n positions: this.options != null && this.options.positions ? this.options.positions : null\n }\n });\n }\n }\n\n action(action: string, payload: any) {\n this.menuAction.emit({ action, payload });\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n\n @HostListener('document:keydown.escape')\n hide() {\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n}\n","<ng-container *ngIf=\"0 < menu.length\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark origin\" (click)=\"show($event, menuTpl, origin)\" #origin>\n <i class=\"fwe-icon fwe-pr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n <li *ngFor=\"let item of menu\" class=\"fwe-list-group-item\">\n <button type=\"button\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"action(item?.action, item?.data)\">\n <i class=\"fwe-icon\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n </ul>\n </ng-template>\n</ng-container>\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\n\nimport { PopoverPosition } from './../popover.models';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes } from '../popover.models';\nimport { PopoverService } from '../popover.service';\n\nexport interface TooltipOptions {\n maxWidth?: string | number;\n delay?: number;\n}\n\n@Directive({\n selector: '[fngTooltip]'\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n @Input('fngTooltip') text = '';\n @Input('fngTooltipVisible') isVisible: boolean = false;\n @Input('fngTooltipPositions') positions: PopoverPosition[] = [];\n @Input() options: TooltipOptions = {\n maxWidth: 400,\n delay: 0\n };\n private origin: HTMLElement;\n private popoverRef: PopoverRef;\n private innerIsVisible = false;\n private timeoutHandle = null;\n\n constructor(private elmenetRef: ElementRef, private popoverService: PopoverService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n this.origin = this.elmenetRef.nativeElement;\n\n if (changes?.isVisible?.currentValue === true) {\n if (this.innerIsVisible === false) {\n this.open();\n }\n }\n if (changes?.isVisible?.currentValue === false) {\n if (this.innerIsVisible === true) {\n this.close();\n }\n }\n }\n\n ngOnDestroy(): void {\n this.hide();\n }\n\n @HostListener('mouseenter')\n show() {\n if (this.options?.delay > 0) {\n this.timeoutHandle = setTimeout(() => {\n this.open();\n }, +this.options?.delay);\n } else {\n this.open();\n }\n }\n\n @HostListener('mouseleave')\n hide() {\n if (this.timeoutHandle != null) {\n clearTimeout(this.timeoutHandle);\n }\n this.close();\n }\n\n private open() {\n if (this.innerIsVisible === false) {\n this.popoverRef = this.popoverService.open({\n content: this.text,\n origin: this.origin,\n options: {\n type: PopoverTypes.Tooltip,\n maxWidth: this.options.maxWidth,\n // using a set here removes duplicate positions and ensures that at least the bottom position will be used\n positions: [...new Set([...this.positions, PopoverPosition.Bottom])]\n }\n });\n this.innerIsVisible = true;\n }\n }\n\n private close() {\n if (this.popoverRef != null) {\n this.popoverRef.close();\n }\n this.innerIsVisible = false;\n }\n}\n","import { Component, ViewChild, TemplateRef, Input, Output, EventEmitter, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { PopoverService } from '../popover.service';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes, PopoverCloseEvent, PopoverPosition } from '../popover.models';\n\nexport interface PopoverContentOptions {\n positions?: PopoverPosition[];\n maxWidth?: string | number;\n minHeight?: string | number;\n}\n\nexport interface PopoverContentActions {\n close: () => void;\n}\n\n@Component({\n selector: 'fng-popover-content',\n templateUrl: './popover-content.component.html',\n styleUrls: ['./popover-content.component.scss']\n})\nexport class PopoverContentComponent implements AfterViewInit, OnDestroy {\n @Input() options: PopoverContentOptions = {};\n @Output() close: EventEmitter<PopoverCloseEvent> = new EventEmitter();\n @Output() actions: EventEmitter<PopoverContentActions> = new EventEmitter();\n @ViewChild('tpl') templateRef: TemplateRef<any>;\n @ViewChild('fngContent') contentRef: ElementRef;\n\n showDefault = false;\n offScreen = true;\n height = 16; // add default padding\n width = 16; // add default padding\n\n private closeSub: Subscription;\n private popoverRef: PopoverRef;\n\n constructor(private popoverService: PopoverService) {}\n\n ngOnDestroy(): void {\n if (this.closeSub) {\n this.closeSub.unsubscribe();\n }\n }\n\n ngAfterViewInit(): void {\n const parent: HTMLElement = this.templateRef.elementRef.nativeElement.parentElement;\n parent.childNodes.forEach((node: HTMLElement) => {\n if (null != node.dataset && undefined !== node.dataset.fngRoot) {\n this.width = this.width + node.getBoundingClientRect().width;\n this.height = this.height + node.getBoundingClientRect().height;\n }\n });\n }\n\n show(origin: HTMLElement) {\n this.offScreen = false;\n this.popoverRef = this.popoverService.open({\n content: this.templateRef,\n origin,\n options: {\n positions: null != this.options && this.options.positions ? this.options.positions : null,\n width: this.width,\n height: this.height,\n type: PopoverTypes.Content,\n hasBackdrop: true\n }\n });\n\n this.actions.emit({\n close: () => {\n this.hide();\n }\n });\n\n if (this.closeSub) {\n this.closeSub.unsubscribe();\n }\n this.closeSub = this.popoverRef.afterClosed$.pipe(take(1)).subscribe(event => {\n this.close.emit(event);\n });\n }\n\n hide() {\n if (null != this.popoverRef) {\n this.popoverRef.close();\n }\n }\n}\n","<div #default *ngIf=\"showDefault; else tpl\"></div>\n<ng-template #tpl>\n <div data-fng-root [class.fng-off-screen]=\"offScreen\">\n <div #fngContent class=\"fng-content\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n","import { Directive, ElementRef, HostListener, OnInit, ContentChild } from '@angular/core';\n\nimport { PopoverContentComponent } from './popover-content.component';\n\n@Directive({\n selector: '[fngPopoverContent]'\n})\nexport class PopoverContentDirective implements OnInit {\n @ContentChild('fngComponent') component: PopoverContentComponent;\n private origin: HTMLElement;\n\n constructor(private elmenetRef: ElementRef) {}\n\n ngOnInit(): void {\n this.origin = this.elmenetRef.nativeElement;\n }\n\n @HostListener('click')\n show() {\n if (null != this.component) {\n this.component.show(this.origin);\n }\n }\n\n @HostListener('document:keydown.escape')\n hide() {\n if (null != this.component) {\n this.component.hide();\n }\n }\n}\n","import { Component, Input, ViewChild, TemplateRef } from '@angular/core';\nimport { PopoverRef } from '../popover-ref';\nimport { PopoverTypes } from '../popover.models';\nimport { PopoverService } from '../popover.service';\n\nexport interface PopoverLegendOptions {\n maxWidth?: string | number;\n}\n\nexport interface LegendItem {\n name: string;\n text: string;\n}\n\n@Component({\n selector: 'fng-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss']\n})\nexport class LegendComponent {\n @Input() items: LegendItem[] = [];\n @Input() options: PopoverLegendOptions = {};\n @ViewChild('tpl') templateRef: TemplateRef<any>;\n private popoverRef: PopoverRef;\n\n constructor(private popoverService: PopoverService) {}\n\n show(origin: HTMLElement) {\n if (0 < this.items.length) {\n this.popoverRef = this.popoverService.open({\n content: this.templateRef,\n origin,\n options: {\n type: PopoverTypes.Legend,\n hasBackdrop: true\n }\n });\n }\n }\n\n hide() {\n this.popoverRef.close();\n }\n}\n","<ng-template #tpl>\n <dl *ngIf=\"0 < items.length\" class=\"fng-legend\">\n <div *ngFor=\"let item of items\" class=\"fng-legend-content\">\n <dt>{{ item?.name }}</dt>\n <dd>{{ item?.text }}</dd>\n </div>\n </dl>\n</ng-template>\n","import { Directive, ElementRef, ContentChild, HostListener, OnInit } from '@angular/core';\n\nimport { PopoverContentComponent } from '../popover-content/popover-content.component';\n\n@Directive({\n selector: '[fngLegend]'\n})\nexport class LegendDirective implements OnInit {\n @ContentChild('fngContent') ref: PopoverContentComponent;\n private origin: HTMLElement;\n\n constructor(private elmenetRef: ElementRef) {}\n\n ngOnInit(): void {\n this.origin = this.elmenetRef.nativeElement;\n }\n\n @HostListener('click')\n show() {\n if (null != this.ref) {\n this.ref.show(this.origin);\n }\n }\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'fng-progress',\n templateUrl: './progress.component.html'\n})\nexport class ProgressComponent {\n @Input() progress: number;\n @Input() error: boolean;\n @Input() background: 'white' | 'background' | 'black' = 'white';\n}\n","<div class=\"fwe-progress\">\n <div\n class=\"fwe-progress-bar\"\n role=\"progressbar\"\n [style.width.%]=\"progress\"\n [class.fwe-bg-red]=\"error\"\n [class.fwe-progress-bar-black]=\"background === 'black'\"\n [class.fwe-progress-bar-background]=\"background === 'background'\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n ></div>\n</div>\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Component({\n selector: 'fng-tab-pane',\n templateUrl: './tab-pane.component.html',\n styleUrls: ['./tab-pane.component.scss']\n})\nexport class TabPaneComponent implements OnChanges {\n static nextId = 0;\n // @deprcated Input() id is not in use anymore but still exists for backwards compatiblity\n @Input() id: string;\n @Input() name: string;\n @Input() icon: string;\n @Input() active: boolean;\n @Input() isVisible: boolean;\n tabId: string;\n tabPaneId = `tab-panel-content-${++TabPaneComponent.nextId}`;\n\n private changesSubject = new Subject<boolean>();\n changes$ = this.changesSubject.asObservable();\n\n ngOnChanges(): void {\n this.changesSubject.next(true);\n }\n}\n","<div role=\"tabpanel\" [id]=\"tabPaneId\" [attr.aria-labelledby]=\"tabId\" [class.fng-show]=\"isVisible\" [class.fng-hide]=\"!isVisible\">\n <ng-content></ng-content>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nexport interface Tab {\n name: string;\n paneId: string;\n active?: boolean;\n icon?: string;\n}\n\n// fill: use the remaining space and add in same proportion to every tab item\n// equal: make all tab items same width (as the one with largest content)\nexport type TabItemAppearance = 'fill' | 'equal' | 'default';\n\n// legacy: recommended for desktop only applications\n// responsive: desktop, tablet, mobile with scrollable tabs\nexport type TabViewType = 'legacy' | 'responsive';\n\n// configuration options for legacy tab view type\nexport interface TabsConfiguration {\n tabBar?: {\n fullWidth?: boolean;\n };\n tabItems?: {\n appearance: TabItemAppearance;\n };\n}\n\n// provides details about the left and right edges of the tab element and the tab content element\n// these values are used to determine the visual position of the tab with respect of its parent container\nexport interface TabDimensions {\n rootLeft: number;\n rootRight: number;\n contentLeft: number;\n contentRight: number;\n}\n\nexport interface TabScrollAnimation {\n finalScrollPosition: number;\n scrollDelta: number;\n}\n\nexport interface TabScrollHorizontalEdges {\n left: number;\n right: number;\n}\n\n@Component({\n selector: 'fng-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TabsComponent implements AfterContentInit, AfterViewInit, OnDestroy {\n static nextId = 0;\n @Input('fngTabsViewType') viewType: TabViewType = 'responsive';\n @Input('fngTabsUseBottomDivider') showDivider: boolean = false;\n\n @Input() config: TabsConfiguration = null;\n @Output() fngTabChange = new EventEmitter<{ previous: string; current: string }>();\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n @ViewChild('scroller') scroller: ElementRef;\n @ViewChild('scrollAera') scrollAera: ElementRef;\n @ViewChild('scrollContent') scrollContent: ElementRef;\n\n componentId = `tabs-${++TabsComponent.nextId}`;\n tabs: Tab[] = [];\n useCompactDensity: boolean = true;\n private activeTab: Tab = null;\n private elemScroller: HTMLElement;\n private elemScrollArea: HTMLElement;\n private elemScrollContent: HTMLElement;\n private readonly injectedWindow: Window;\n private resizeObserver: ResizeObserver;\n private complete: Subject<boolean> = new Subject();\n\n constructor(\n private elRef: ElementRef,\n @Inject(DOCUMENT) private document: Document,\n private renderer: Renderer2,\n private cd: ChangeDetectorRef\n ) {\n this.injectedWindow = this.document.defaultView;\n }\n\n ngAfterContentInit() {\n this.initTabs();\n if (null === this.activeTab) {\n this.panes.map((pane, i) => {\n if (0 === i) {\n pane.isVisible = true;\n }\n });\n } else {\n this.panes.find(pane => null != this.activeTab.paneId && pane.tabPaneId === this.activeTab.paneId).isVisible = true;\n }\n }\n\n ngAfterViewInit(): void {\n this.elemScroller = this.scroller?.nativeElement;\n this.elemScrollArea = this.scrollAera?.nativeElement;\n this.elemScrollContent = this.scrollContent?.nativeElement;\n const initialWidth = this.elemScrollArea?.offsetWidth;\n if (initialWidth > 768) {\n this.useCompactDensity = false;\n this.cd.detectChanges();\n }\n\n this.resizeObserver = new ResizeObserver(() => {\n const width = this.elemScrollArea.offsetWidth;\n if (width > 768 && this.useCompactDensity === true) {\n this.useCompactDensity = false;\n this.cd.detectChanges();\n } else if (width <= 768 && this.useCompactDensity === false) {\n this.useCompactDensity = true;\n this.cd.detectChanges();\n }\n });\n\n if (this.elemScrollArea != null) {\n this.resizeObserver.observe(this.elemScrollArea);\n }\n\n this.handleTabPaneChanges();\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n showTabPane(id: string) {\n const pane = this.panes.find(p => p.tabPaneId === id);\n if (null != pane) {\n this.panes.map(p => {\n p.isVisible = false;\n });\n pane.isVisible = true;\n\n this.tabs.map(tab => {\n if (tab.paneId !== pane.tabPaneId) {\n tab.active = false;\n } else {\n tab.active = true;\n }\n });\n this.fngTabChange.emit({\n previous: this.activeTab?.paneId,\n current: id\n });\n this.activeTab = this.tabs.find(tab => !!tab.active);\n }\n }\n\n handleTabScroll(event: any, index: number) {\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\n\n // check if no scroll is needed\n if (scrollAreaWidth > scrollContentWidth) {\n return;\n }\n\n // check index\n if (!this.indexIsInRange(index)) {\n return;\n }\n\n // always scroll to 0 if scrolling to the first tab\n if (index === 0) {\n this.scrollTo(0);\n return;\n }\n\n // always scroll to the max value if scrolling to the last tab\n if (index === this.tabs.length - 1) {\n this.scrollTo(this.elemScrollContent.offsetWidth);\n return;\n }\n\n const currentTab: HTMLElement = event.target;\n this.scrollIntoView(index, currentTab);\n }\n\n private initTabs() {\n this.tabs = [];\n this.panes.map((pane, i) => {\n pane.tabId = this.componentId + '-tab-' + i;\n const tab: Tab = {\n name: null != pane.name ? pane.name : '',\n paneId: null != pane.tabPaneId ? pane.tabPaneId : null,\n icon: null != pane.icon ? pane.icon : null,\n active: null != pane.active ? pane.active : false\n };\n this.tabs.push(tab);\n });\n\n this.initActiveTab();\n this.cd.detectChanges();\n }\n\n private initActiveTab() {\n const activeTab: Tab = this.tabs.find((tab: Tab) => !!tab.active);\n if (!activeTab && 0 < this.tabs.length) {\n this.tabs[0] = { ...this.tabs[0], active: true };\n this.activeTab = this.tabs[0];\n } else {\n this.activeTab = activeTab;\n }\n }\n\n private handleTabPaneChanges() {\n // first subscribe to any changes in tab pane, so that the tabs in this view wiil be updated\n this.panes.forEach(pane => {\n pane.changes$.pipe(takeUntil(this.complete)).subscribe(() => {\n // on changes in a tab pane, we init the tabs again\n this.initTabs();\n });\n });\n }\n\n private scrollTo(scrollX: number) {\n const currentScrollX = this.getScrollPosition();\n const safeScrollX = this.clampScrollValue(scrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n this.animate({\n finalScrollPosition: safeScrollX,\n scrollDelta\n });\n }\n\n private scrollIntoView(index: number, tab: HTMLElement) {\n const scrollPosition = this.getScrollPosition();\n const barWidth = this.elemScrollArea.offsetWidth;\n const tabDimensions = this.computeDimensions(tab);\n const nextIndex = this.findAdjacentTabIndexClosestToEdge(index, tabDimensions, scrollPosition, barWidth);\n\n if (!this.indexIsInRange(nextIndex)) {\n return;\n }\n\n const scrollIncrement = this.calculateScrollIncrement(index, nextIndex, scrollPosition, barWidth);\n this.incrementScroll(scrollIncrement);\n }\n\n private incrementScroll(scrollXIncrement: number) {\n // no scroll needed\n if (scrollXIncrement === 0) {\n return;\n }\n const scrollOperation = this.getIncrementScrollOperation(scrollXIncrement);\n this.animate(scrollOperation);\n }\n\n private animate(animation: TabScrollAnimation) {\n // no animation needed\n if (animation.scrollDelta === 0) {\n return;\n }\n\n this.stopScrollAnimation();\n\n // this animation uses the flip approach\n // https://aerotwist.com/blog/flip-your-animations/\n // https://css-tricks.com/animating-layouts-with-the-flip-technique/\n this.elemScrollArea.scrollLeft = animation.finalScrollPosition;\n this.setScrollContentStyleProperty('transform', `translateX(${animation.scrollDelta}px)`);\n // force repaint\n this.elemScrollArea.getBoundingClientRect();\n\n requestAnimationFrame(() => {\n this.renderer.addClass(this.elemScroller, 'fng-tab-scroller--animating');\n this.setScrollContentStyleProperty('transform', 'none');\n });\n }\n\n private stopScrollAnimation() {\n const currentScrollPosition = this.getAnimatingScrollPosition();\n this.renderer.removeClass(this.elemScroller, 'fng-tab-scroller--animating');\n this.setScrollContentStyleProperty('transform', 'translateX(0px)');\n this.elemScrollArea.scrollLeft = currentScrollPosition;\n }\n\n private getAnimatingScrollPosition(): number {\n const currentTranslateX = this.calculateCurrentTranslateX();\n const scrollLeft = this.elemScrollArea.scrollLeft;\n return scrollLeft - currentTranslateX;\n }\n\n private getIncrementScrollOperation(scrollX: number): TabScrollAnimation {\n const currentScrollX = this.getScrollPosition();\n const targetScrollX = scrollX + currentScrollX;\n const safeScrollX = this.clampScrollValue(targetScrollX);\n const scrollDelta = safeScrollX - currentScrollX;\n return {\n finalScrollPosition: safeScrollX,\n scrollDelta\n };\n }\n\n private clampScrollValue(scrollX: number): number {\n const edges = this.calculateScrollEdges();\n return Math.min(Math.max(edges.left, scrollX), edges.right);\n }\n\n private calculateScrollEdges(): TabScrollHorizontalEdges {\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\n return {\n left: 0,\n right: scrollContentWidth - scrollAreaWidth\n };\n }\n\n private computeDimensions(tab: HTMLElement): TabDimensions {\n const rootWidth = tab.offsetWidth;\n const rootLeft = tab.offsetLeft;\n\n const tabContent: HTMLElement = tab.querySelector<HTMLElement>('.fng-tab-content');\n const contentWidth = tabContent.offsetWidth;\n const contentLeft = tabContent.offsetLeft;\n\n return {\n contentLeft: rootLeft + contentLeft,\n contentRight: rootLeft + contentLeft + contentWidth,\n rootLeft,\n rootRight: rootLeft + rootWidth\n };\n }\n\n private calculateScrollIncrement(index: number, nextIndex: number, scrollPosition: number, barWidth: number): number {\n const nextTab: HTMLElement = (this.elRef.nativeElement as HTMLElement).querySelector<HTMLElement>(\n `#${this.componentId}-tab-${nextIndex}`\n );\n const nextTabDimensions = this.computeDimensions(nextTab);\n const relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\n const relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\n const leftIncrement = relativeContentRight - 48;\n const rightIncrement = relativeContentLeft + 48;\n\n if (nextIndex < index) {\n return Math.min(leftIncrement, 0);\n }\n\n return Math.max(rightIncrement, 0);\n }\n\n private indexIsInRange(index: number) {\n return index >= 0 && index < this.tabs.length;\n }\n\n private getScrollPosition(): number {\n const currentTranslateX = this.calculateCurrentTranslateX();\n const scrollLeft = this.elemScrollArea.scrollLeft;\n\n return scrollLeft - currentTranslateX;\n }\n\n private calculateCurrentTranslateX(): number {\n const transformValue = this.getScrollContentStyleValue('transform');\n if (transformValue === 'none') {\n return 0;\n }\n\n // the transform value is in form of 'matrix(a, b, c, d, tx, ty)'\n // get all the parenthesized values\n const match = /\\((.+?)\\)/.exec(transformValue);\n if (!match) {\n return 0;\n }\n\n const matrixParams = match[1];\n // we need value of tx -> translateX\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [a, b, c, d, tx, ty] = matrixParams.split(',');\n return parseFloat(tx);\n }\n\n private getScrollContentStyleValue(propName: string) {\n return this.injectedWindow.getComputedStyle(this.elemScrollContent).getPropertyValue(propName);\n }\n\n private setScrollContentStyleProperty(propName: string, value: any) {\n this.renderer.setStyle(this.elemScrollContent, propName, value);\n }\n\n private findAdjacentTabIndexClosestToEdge(index: number, tabDimensions: TabDimensions, scrollPosition: number, barWidth: number): number {\n /**\n * tabs are laid out in the tab scroller like this:\n *\n * scroll position\n * +---+\n * | | bar width\n * | +-----------------------------------+\n * | | |\n * | v v\n * | +-----------------------------------+\n * v | tab scroller |\n * +------------+--------------+-------------------+\n * | tab | tab | tab |\n * +------------+--------------+-------------------+\n * | |\n * +-----------------------------------+\n *\n * to determine the next adjacent index, we look at the tab root left and\n * tab root right, both relative to the scroll position. if the tab root\n * left is less than 0, then we know it's out of view to the left. if the\n * tab root right minus the bar width is greater than 0, we know the tab is\n * out of view to the right. from there, we either increment or decrement\n * the index.\n */\n const relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\n const relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\n const relativeRootDelta = relativeRootLeft + relativeRootRight;\n const leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\n const rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\n\n if (leftEdgeIsCloser) {\n return index - 1;\n }\n\n if (rightEdgeIsCloser) {\n return index + 1;\n }\n\n return -1;\n }\n}\n","<ng-container *ngIf=\"viewType === 'legacy'\">\n <div class=\"fwe-legacy-tabs\">\n <ul\n role=\"tablist\"\n class=\"fwe-legacy-tab-bar\"\n [class.fwe-legacy-tab-bar-full-width]=\"config?.tabBar?.fullWidth\"\n [class.fwe-legacy-tab-items-equal-width]=\"'equal' === config?.tabItems?.appearance\"\n [class.fwe-legacy-tab-items-fill]=\"'fill' === config?.tabItems?.appearance\"\n >\n <li *ngFor=\"let tab of tabs; let i = index\" class=\"fwe-legacy-tab-item\" [class.fwe-active]=\"tab?.active\">\n <ng-container *ngIf=\"null == tab?.icon\">\n <a\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n >{{ tab.name }}</a\n >\n </ng-container>\n <ng-container *ngIf=\"null != tab?.icon\">\n <a\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n [class.fwe-can-swap-icon]=\"2 === tabs.length && 1 === i\"\n >\n <i [class]=\"'fwe-icon ' + tab.icon\"></i>\n <span>{{ tab.name }}</span>\n </a>\n </ng-container>\n </li>\n </ul>\n <div class=\"fwe-legacy-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"viewType !== 'legacy'\">\n <div class=\"fng-tab-bar\" role=\"tablist\">\n <div class=\"fng-tab-scroller\" #scroller>\n <div\n class=\"fng-tab-scroller-scroll-area fng-tab-scroller-scroll-area--scroll\"\n [class.fng-tab-scroller-scroll-area--compact]=\"useCompactDensity\"\n #scrollAera\n >\n <div class=\"fng-tab-scroller-scroll-content\" [class.fng-tab-scroller-scroll-content--with-divider]=\"showDivider\" #scrollContent>\n <button\n *ngFor=\"let tab of tabs; let i = index\"\n role=\"tab\"\n class=\"fng-tab\"\n [id]=\"componentId + '-tab-' + i\"\n [attr.aria-controls]=\"tab.paneId\"\n [attr.aria-selected]=\"true === tab?.active ? 'true' : 'false'\"\n [tabindex]=\"i === 0 ? 0 : -1\"\n [class.fng-tab--active]=\"tab?.active\"\n (click)=\"handleTabScroll($event, i); showTabPane(tab.paneId)\"\n >\n <span class=\"fng-tab-content\">\n <span class=\"fng-tab-text-label\">{{ tab.name }}</span>\n </span>\n <span class=\"fng-tab-indicator\" [class.fng-tab-indicator--active]=\"tab?.active\">\n <span class=\"fng-tab-indicator-content fng-tab-indicator-content--underline\"></span>\n </span>\n </button>\n <div class=\"fng-tab-scroller-divider-line\"></div>\n </div>\n </div>\n </div>\n <div class=\"fng-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n</ng-container>\n\n<ng-template #tabPanelContent>\n <ng-content></ng-content>\n</ng-template>\n","import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\nexport enum PaginationType {\n Numeric = 'NUMERIC',\n Dots = 'DOTS'\n}\n\n@Component({\n selector: 'fng-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PaginationComponent {\n PaginationType = PaginationType;\n\n @Input() type: PaginationType = PaginationType.Numeric;\n @Input() pageCurrent = 0;\n @Input()\n set pageMax(value: number) {\n this.innerPageMax = value;\n this.dotArray = [...Array(value).fill(0).keys()];\n }\n get pageMax() {\n return this.innerPageMax;\n }\n\n @Output() changePage = new EventEmitter<number>();\n\n innerPageMax: number;\n dotArray: number[] = [];\n\n onBtnDown() {\n if (this.pageCurrent > 1) {\n this.pageCurrent--;\n this.changePage.emit(this.pageCurrent);\n }\n }\n\n onBtnUp() {\n if (this.pageCurrent < this.pageMax) {\n this.pageCurrent++;\n this.changePage.emit(this.pageCurrent);\n }\n }\n\n onDotClick(index: number) {\n this.pageCurrent = index + 1;\n this.changePage.emit(this.pageCurrent);\n }\n}\n","<ng-container *ngIf=\"type === PaginationType.Numeric\">\n <div class=\"fwe-pagination fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <button class=\"fwe-navigate-btn-down\" (click)=\"onBtnDown()\" [class.fwe-disabled]=\"pageCurrent <= 1\"></button>\n <span class=\"fwe-page-current\">{{ pageCurrent }}</span>\n <span class=\"fwe-page-max\">{{ pageMax }}</span>\n <button class=\"fwe-navigate-btn-up\" (click)=\"onBtnUp()\" [class.fwe-disabled]=\"pageCurrent >= pageMax\"></button>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"type === PaginationType.Dots\">\n <div class=\"fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <div class=\"fwe-pagination\">\n <span\n *ngFor=\"let index of dotArray\"\n class=\"fwe-page-dot\"\n [class.fwe-selected]=\"index + 1 === pageCurrent\"\n (click)=\"onDotClick(index)\"\n ></span>\n </div>\n </div>\n</ng-container>\n","import { Directive, ElementRef, OnChanges, SimpleChanges, Input, AfterViewInit, NgZone, Renderer2, OnDestroy } from '@angular/core';\nimport SimpleBar from 'simplebar';\n\nexport interface ScrollableAware extends AfterViewInit {\n scrollableViewReady: boolean;\n}\n\n@Directive({\n selector: '[fngScrollable]'\n})\nexport class ScrollableDirective implements OnChanges, OnDestroy {\n @Input('fngScrollableScrollbarMinSize') scrollbarMinSize: number = 25;\n @Input('fngScrollableViewReady') viewReady: boolean;\n\n private sb: SimpleBar;\n private isScrolling = false;\n private resizeObserver: ResizeObserver;\n\n constructor(private el: ElementRef, private ngZone: NgZone, private renderer: Renderer2) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.viewReady.currentValue === true) {\n this.initScrollbar();\n this.initResizeObserver();\n }\n }\n\n ngOnDestroy(): void {\n this.resizeObserver?.disconnect();\n }\n\n private initScrollbar() {\n const el: HTMLElement = this.el.nativeElement;\n // yes, we explict want to run outside angular to avoid unnecessary change detection cycles\n this.ngZone.runOutsideAngular(() => {\n this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });\n this.sb.getScrollElement().addEventListener(\n 'scroll',\n this.delay(() => {\n // triggered on scroll stop\n this.isScrolling = false;\n }),\n false\n );\n });\n this.updateMaxWidth();\n }\n\n private initResizeObserver() {\n const el: HTMLElement = this.el.nativeElement;\n this.resizeObserver = new ResizeObserver(() => {\n this.updateMaxWidth();\n });\n this.resizeObserver.observe(el);\n }\n\n private updateMaxWidth() {\n const el: HTMLElement = this.el.nativeElement;\n const wrapper = el.querySelector('.simplebar-content-wrapper');\n const width = el.getBoundingClientRect().width;\n this.renderer.setStyle(wrapper, 'max-width', width + 'px');\n }\n\n private delay(callback: any) {\n let timer: number;\n return () => {\n if (!this.isScrolling) {\n // triggered on scroll start\n this.isScrolling = true;\n }\n\n window.clearTimeout(timer);\n timer = window.setTimeout(callback, 50);\n };\n }\n}\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[fngClickOutside]'\n})\nexport class ClickOutsideDirective {\n constructor(private elRef: ElementRef) {}\n\n @Output()\n public clickOutside = new EventEmitter();\n\n @HostListener('document:click', ['$event.target'])\n public onClick(targetElement: HTMLElement) {\n const inside = this.elRef.nativeElement.contains(targetElement);\n if (!inside) {\n this.clickOutside.emit(null);\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) {}\n\n public transform(value: any): SafeHtml {\n return this.sanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { Component, Input, ViewChild, ElementRef, ViewEncapsulation, Output, EventEmitter, HostListener } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class SearchSuggestion {\n /**\n * a html-string. e.g.: '<b> hello </b>'\n */\n template: string;\n\n /**\n * This Value will be used as new query when the user selects the suggestion.\n */\n value: string;\n\n /**\n * Creates a basic Suggestion from a string. The first query match is highlighted by bold tags.\n * @param suggestionString The suggested string (should contain the whole query)\n * @param query The current query. This string will be highlighted.\n * @returns a html-string.\n */\n static basicSuggestion(suggestionString: string, query: string): SearchSuggestion {\n const i = suggestionString.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());\n let template = suggestionString;\n if (i != -1) {\n const boldStart = i;\n const boldEnd = i + query.length;\n const part1 = suggestionString.substring(0, boldStart);\n const part2 = suggestionString.substring(boldStart, boldEnd);\n const part3 = suggestionString.substring(boldEnd, suggestionString.length);\n template = part1 + '<b>' + part2 + '</b>' + part3;\n }\n return { value: suggestionString, template };\n }\n}\n\n/**\n * A custom form element for search inputs.\n */\n@Component({\n selector: 'fng-search-input',\n templateUrl: './search-input.component.html',\n styleUrls: ['./search-input.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SearchInputComponent {\n @ViewChild('inputElement')\n inputRef!: ElementRef<HTMLInputElement>;\n\n /**\n * the querrry was changed, update the suggetion list\n */\n @Output()\n readonly fngChange = new EventEmitter<string>();\n\n /**\n * Start search on this event\n */\n @Output()\n readonly fngSearch = new EventEmitter<string>();\n\n /**\n * The search input label.\n */\n @Input() label: string = '';\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n innerValue: string = '';\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n }\n\n /**\n * The list of suggestions\n */\n @Input()\n set suggestions(value: SearchSuggestion[]) {\n this.selectedSuggestionIndex = -1;\n this.innerSuggestions = value;\n }\n\n /**\n * The list of suggestions capped by 10 entries\n */\n get cappedSuggestions(): SearchSuggestion[] {\n return this.innerSuggestions.slice(0, 10);\n }\n\n innerSuggestions: SearchSuggestion[] = [];\n hideSuggestionList: boolean = false;\n\n // This is the index of the selected element in dhe suggestion list.\n selectedSuggestionIndex = -1;\n\n @HostListener('document:keydown', ['$event'])\n keyhandler(event: KeyboardEvent) {\n if (!this.cappedSuggestions || !this.cappedSuggestions.length) {\n return;\n }\n\n // navigate inside the suggestion list\n if (event.key === 'ArrowUp') {\n if (this.selectedSuggestionIndex > 0) {\n this.selectedSuggestionIndex--;\n } else {\n this.selectedSuggestionIndex = this.cappedSuggestions.length - 1;\n }\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\n }\n\n if (event.key === 'ArrowDown') {\n if (this.selectedSuggestionIndex >= this.cappedSuggestions.length - 1) {\n this.selectedSuggestionIndex = 0;\n } else {\n this.selectedSuggestionIndex++;\n }\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\n }\n }\n\n onClickOutside(): void {\n this.hideSuggestionList = true;\n }\n\n onFocus() {\n this.hideSuggestionList = false;\n }\n\n onInput(event: any) {\n this.selectedSuggestionIndex = -1;\n this.value = event.target.value;\n this.fngChange.emit(this.value);\n }\n\n // also triggert on \"Enter\" and \"Escape\"\n onSearch(event: any): void {\n event.stopPropagation();\n this.selectedSuggestionIndex = -1;\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n\n onSuggestionClick(suggestion: SearchSuggestion) {\n this.selectedSuggestionIndex = -1;\n this.value = suggestion.value;\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n\n clearQuery(): void {\n this.selectedSuggestionIndex = -1;\n this.value = '';\n this.fngSearch.emit(this.value);\n this.hideSuggestionList = true;\n this.inputRef.nativeElement.blur();\n }\n}\n","<div class=\"fwe-search-input fwe-w-100\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\n class=\"fwe-w-100\"\n #inputElement\n [attr.disabled]=\"disabled ? '' : null\"\n [placeholder]=\"label\"\n (focus)=\"onFocus()\"\n type=\"search\"\n (input)=\"onInput($event)\"\n (search)=\"onSearch($event)\"\n [value]=\"innerValue\"\n />\n <div class=\"fwe-search-icon\"></div>\n <div class=\"fwe-clear-icon\" (click)=\"clearQuery()\"></div>\n <div class=\"fwe-search-suggestions\" *ngIf=\"innerSuggestions?.length && !hideSuggestionList\">\n <div\n *ngFor=\"let suggestion of cappedSuggestions; let i = index\"\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | safeHtml\"></div>\n </div>\n <div class=\"fwe-ml-xxs\" *ngIf=\"innerSuggestions.length > 10\">...</div>\n </div>\n</div>\n","/* eslint-disable @angular-eslint/no-empty-lifecycle-method */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Component, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\n\n@Component({\n selector: 'fng-mobile-flyout-item',\n templateUrl: './mobile-flyout-item.component.html'\n})\nexport class MobileFlyoutItemComponent implements OnChanges {\n @Input() icon: string = '';\n @Input() pageLink: string = '';\n @Input() lastElement = false;\n\n onNavigateCallback: ((pageName: string) => void) | undefined;\n\n constructor(@Optional() public rla: RouterLinkActive) {}\n\n ngOnChanges(_: SimpleChanges): void {\n // lifecycle hook is called by parent component so do not remove it\n }\n\n onClick() {\n if (this.onNavigateCallback) {\n this.onNavigateCallback(this.pageLink);\n }\n }\n}\n","<a class=\"fwe-mobile-flyout-item\" [class.fwe-bb]=\"!lastElement\" (click)=\"onClick()\">\n <i *ngIf=\"icon\" [class]=\"'fwe-mr-xs fwe-icon fwe-icon-' + icon\"></i>\n <div *ngIf=\"!rla\" class=\"fwe-flex-grow-1\" routerLinkActive=\"fwe-color-hero\">\n <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n </div>\n <div\n *ngIf=\"rla?.routerLinkActiveOptions\"\n class=\"fwe-flex-grow-1\"\n routerLinkActive=\"fwe-color-hero\"\n [routerLinkActiveOptions]=\"rla.routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n </div>\n <i *ngIf=\"pageLink\" class=\"fwe-icon fwe-icon-arrows-right-2\"></i>\n</a>\n<ng-template #itemContent>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList, OnDestroy, SimpleChange } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { MobileFlyoutItemComponent } from '../mobile-flyout-item/mobile-flyout-item.component';\n\n@Component({\n selector: 'fng-mobile-flyout-page',\n templateUrl: './mobile-flyout-page.component.html'\n})\nexport class MobileFlyoutPageComponent implements AfterContentInit, OnDestroy {\n @ContentChildren(MobileFlyoutItemComponent) itemComponents!: QueryList<MobileFlyoutItemComponent>;\n @Input() name: string = '';\n @Input() back: string = 'Back';\n\n isfirstelement = false;\n visible = false;\n onNavigateCallback: ((pageName: string) => void) | undefined;\n\n private complete: Subject<boolean> = new Subject();\n\n ngAfterContentInit(): void {\n this.initItemComponents();\n\n // if we have item components that are added dynamically (e.g. *ngIf)\n // we need to call init again to have all navigate callbacks defined\n this.itemComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\n this.initItemComponents();\n });\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n onNavigate(pageName: string) {\n if (this.onNavigateCallback) {\n this.onNavigateCallback(pageName);\n }\n }\n\n onBack() {\n this.visible = false;\n }\n\n private initItemComponents() {\n if (!this.itemComponents) {\n return;\n }\n\n // register click-callbacks\n this.itemComponents.forEach(s => {\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\n });\n\n if (this.itemComponents.last) {\n // pass new value by ngOnChanges for proper change detection\n this.itemComponents.last.ngOnChanges({\n lastElement: new SimpleChange(null, true, false)\n });\n }\n }\n}\n","<div class=\"fwe-mobile-flyout-page\" [class.fwe-opened]=\"visible\">\n <div class=\"fwe-page-back\" *ngIf=\"!isfirstelement\" (click)=\"onBack()\">\n <i></i>\n <div>{{ back }}</div>\n </div>\n <div class=\"fwe-mobile-flyout-item-container\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { AfterContentInit, Component, ContentChildren, OnDestroy, Output, QueryList, EventEmitter } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { MobileFlyoutPageComponent } from './mobile-flyout-page/mobile-flyout-page.component';\n\n@Component({\n selector: 'fng-mobile-flyout',\n templateUrl: './mobile-flyout.component.html'\n})\nexport class MobileFlyoutComponent implements AfterContentInit, OnDestroy {\n @Output() flyoutOpenChange: EventEmitter<boolean> = new EventEmitter();\n @ContentChildren(MobileFlyoutPageComponent) pageComponents!: QueryList<MobileFlyoutPageComponent>;\n isOpen = false;\n\n private complete: Subject<boolean> = new Subject();\n\n ngAfterContentInit(): void {\n this.initPageComponents();\n\n // if we have page components that are added dynamically (e.g. *ngIf)\n // we need to call init again to have all navigate callbacks defined\n this.pageComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\n this.initPageComponents();\n });\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n onNavigate(pageName: string) {\n // handle clicks on router links\n if (!pageName) {\n this.isOpen = false;\n this.flyoutOpenChange.emit(this.isOpen);\n }\n\n // handle page-navigation clicks\n const nextPage = this.pageComponents.find(p => p.name === pageName);\n if (nextPage) {\n nextPage.visible = true;\n }\n }\n\n toggle() {\n this.isOpen = !this.isOpen;\n this.flyoutOpenChange.emit(this.isOpen);\n }\n\n onClickOutside() {\n this.isOpen = false;\n this.flyoutOpenChange.emit(this.isOpen);\n }\n\n private initPageComponents() {\n if (!this.pageComponents) {\n return;\n }\n\n // register click-callbacks and open the first element\n this.pageComponents.forEach((s, i) => {\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\n s.isfirstelement = i === 0;\n s.visible = i === 0;\n });\n }\n}\n","<div class=\"fwe-mobile-flyout\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"toggle()\"></button>\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-accordion-item-body',\n templateUrl: './accordion-item-body.component.html',\n styleUrls: ['./accordion-item-body.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemBodyComponent {\n // parentId will be set by accordion item this body belongs to\n id: string = '';\n}\n","<div\n role=\"region\"\n [attr.id]=\"id + '-body'\"\n [attr.aria-labelledby]=\"id + '-header'\"\n class=\"fng-accordion-item-body\"\n>\n <ng-content></ng-content>\n <div class=\"fng-accordion-item-body-spacer-bottom\"></div>\n</div>\n","import { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nexport enum AccordionHeaderActions {\n Toggle = 'toggle'\n}\n\n@Component({\n selector: 'fng-accordion-item-header',\n templateUrl: './accordion-item-header.component.html',\n styleUrls: ['./accordion-item-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemHeaderComponent implements OnDestroy {\n // parentId will be set by accordion item this header belongs to\n id: string = '';\n private actions: Subject<AccordionHeaderActions> = new Subject<AccordionHeaderActions>();\n actions$: Observable<AccordionHeaderActions> = this.actions.asObservable();\n\n ngOnDestroy() {\n this.actions.complete();\n }\n\n toggle() {\n this.actions.next(AccordionHeaderActions.Toggle);\n }\n}\n","<div\n class=\"fng-accordion-item-header\"\n role=\"button\"\n tabindex=\"0\"\n [attr.id]=\"id + '-header'\"\n [attr.aria-expanded]=\"\"\n [attr.aria-controls]=\"id + '-body'\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n","import { Subscription } from 'rxjs';\nimport { AccordionActions, AccordionComponent } from './../accordion.component';\nimport {\n Component,\n ContentChild,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ElementRef,\n Renderer2,\n AfterViewInit,\n ChangeDetectorRef\n} from '@angular/core';\n\nimport { AccordionItemBodyComponent } from './accordion-item-body/accordion-item-body.component';\nimport { AccordionHeaderActions, AccordionItemHeaderComponent } from './accordion-item-header/accordion-item-header.component';\n\n@Component({\n selector: 'fng-accordion-item',\n templateUrl: './accordion-item.component.html',\n styleUrls: ['./accordion-item.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionItemComponent implements OnChanges, AfterViewInit {\n static nextId = 0;\n componentId = `accordion-item-${++AccordionItemComponent.nextId}`;\n expanded: boolean = false;\n _linkText: string = '';\n get linkText() {\n if (this.expanded === true) {\n this._linkText = this?.accordion?.showLess || '';\n } else {\n this._linkText = this?.accordion?.showMore || '';\n }\n return this._linkText;\n }\n\n @ContentChild(AccordionItemHeaderComponent) header: AccordionItemHeaderComponent;\n @ContentChild(AccordionItemBodyComponent) body: AccordionItemBodyComponent;\n\n // compound id of parent id and this component id to get a unique identifier in dom\n id: string;\n // parentId will be set by accordion this item belongs to\n parentId: string = '';\n private accordion: AccordionComponent;\n private accordionSubscription: Subscription;\n private accordionItemHeaderSubscription: Subscription;\n private element: HTMLElement;\n private pristine: boolean = true;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit(): void {\n const element: HTMLElement = this.elementRef.nativeElement;\n this.element = element.querySelector('.fng-accordion-item-body');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.accordion?.currentValue != null) {\n const accordion = changes.accordion.currentValue;\n this.accordion = accordion;\n if (this.accordion) {\n this.subscribeToAccordionActions();\n this.subscribeToAccordionItemHeaderActions();\n }\n }\n\n if (changes?.parentId?.currentValue != null) {\n const parentId = changes.parentId.currentValue;\n this.id = `${parentId}-${this.componentId}`;\n this.header.id = this.id;\n this.body.id = this.id;\n }\n }\n\n toggle(): void {\n // save the new expanded state in another var, because it may be overwritten when closeAll is called\n const newExpandedState = !this.expanded;\n const changeExpandedState = () => {\n this.expanded = newExpandedState;\n if (this.expanded === true) {\n this.expandItem();\n } else {\n this.collapseItem();\n }\n };\n\n // if the accordion allows only one expanded item at once we first have to close all items\n if (this.accordion != null && this.accordion.multi === false) {\n this.accordion.closeAll();\n /// run in new macrotask to avoid render issues when transitioning to new expanded state\n setTimeout(() => {\n changeExpandedState();\n });\n } else {\n changeExpandedState();\n }\n }\n\n collapseItem() {\n // get the height of item body regardless of its actual size\n const itemHeight = this.element.scrollHeight;\n // set the actual item height as style to avoid transition from height: auto\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\n setTimeout(() => {\n this.renderer.setStyle(this.element, 'height', 0 + 'px');\n });\n }\n\n expandItem() {\n // if the item was expanded once, we have to rerun change detection before expanding again\n // because the content inside may have changed\n if (this.pristine === false) {\n this.cd.detectChanges();\n }\n\n // get the height of item body regardless of its actual size\n const itemHeight = this.element.scrollHeight;\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\n setTimeout(() => {\n this.renderer.setStyle(this.element, 'height', null);\n this.pristine = false;\n }, 300);\n }\n\n private handleAction(action: AccordionActions | AccordionHeaderActions) {\n switch (action) {\n case AccordionActions.OpenAll:\n this.expanded = true;\n this.expandItem();\n break;\n case AccordionActions.CloseAll:\n if (this.expanded === true) {\n this.expanded = false;\n this.collapseItem();\n }\n break;\n case AccordionHeaderActions.Toggle:\n this.toggle();\n break;\n default:\n break;\n }\n }\n\n private subscribeToAccordionActions() {\n if (this.accordionSubscription != null) {\n this.accordionSubscription.unsubscribe();\n }\n this.accordionSubscription = this.accordion.actions$.subscribe(action => {\n this.handleAction(action);\n });\n }\n\n private subscribeToAccordionItemHeaderActions() {\n if (this.accordionItemHeaderSubscription != null) {\n this.accordionItemHeaderSubscription.unsubscribe();\n }\n this.accordionItemHeaderSubscription = this.header.actions$.subscribe(action => {\n this.handleAction(action);\n });\n }\n}\n","<div\n class=\"fng-accordion-item\"\n [class.fng-accordion-item--collapsed]=\"!expanded\"\n [class.fng-accordion-item--expanded]=\"expanded === true\"\n>\n <ng-content></ng-content>\n <div class=\"fng-accordion-item-link\">{{ linkText }}</div>\n</div>\n","import { Component, ContentChildren, QueryList, SimpleChange, ViewEncapsulation, AfterViewInit, Input, OnDestroy } from '@angular/core';\nimport { Subject, Observable } from 'rxjs';\n\nimport { AccordionItemComponent } from './accordion-item/accordion-item.component';\n\nexport enum AccordionActions {\n OpenAll = 'openAll',\n CloseAll = 'closeAll'\n}\n\n@Component({\n selector: 'fng-accordion',\n templateUrl: './accordion.component.html',\n styleUrls: ['./accordion.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionComponent implements AfterViewInit, OnDestroy {\n static nextId = 0;\n readonly componentId = `accordion-${++AccordionComponent.nextId}`;\n\n private actions: Subject<AccordionActions> = new Subject<AccordionActions>();\n actions$: Observable<AccordionActions> = this.actions.asObservable();\n\n // if the accordion should only allow one expanded item at once this property can be set to false\n @Input('fngAccordionKeepItemsOpen') multi: boolean = true;\n @Input('fngAccordionShowMoreText') showMore: string = 'Show more';\n @Input('fngAccordionShowLessText') showLess: string = 'Show less';\n @ContentChildren(AccordionItemComponent) items: QueryList<AccordionItemComponent>;\n\n ngAfterViewInit(): void {\n this.items.forEach(item => {\n item.ngOnChanges({\n parentId: new SimpleChange(null, this.componentId, null),\n accordion: new SimpleChange(null, this, null)\n });\n });\n }\n\n ngOnDestroy() {\n this.actions.complete();\n }\n\n openAll(): void {\n if (this.multi) {\n this.actions.next(AccordionActions.OpenAll);\n }\n }\n\n closeAll(): void {\n this.actions.next(AccordionActions.CloseAll);\n }\n}\n","<div class=\"fng-accordion\">\n <ng-content></ng-content>\n</div>\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'fng-accordion-header',\n templateUrl: './accordion-header.component.html',\n styleUrls: ['./accordion-header.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AccordionHeaderComponent {}\n","<div class=\"fng-accordion-header\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\n\nimport { ButtonComponent } from './buttons/button/button.component';\nimport { LinkButtonComponent } from './buttons/link-button/link-button.component';\nimport { BreadcrumbComponent } from './breadcrumb/breadcrumb.component';\nimport { LoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';\nimport { ChipContainerComponent } from './chips/chip-container/chip-container.component';\nimport { ChipComponent } from './chips/chip/chip.component';\nimport { TableHeaderCellDirective } from './table-header-cell/table-header-cell.directive';\nimport { StepperVerticalComponent } from './stepper-vertical/stepper-vertical.component';\nimport { StepVerticalComponent } from './stepper-vertical/step-vertical/step-vertical.component';\nimport { StepperHorizontalComponent } from './stepper-horizontal/stepper-horizontal.component';\nimport { StepHorizontalComponent } from './stepper-horizontal/step-horizontal/step-horizontal.component';\nimport { PopoverComponent } from './popovers/popover/popover.component';\nimport { PopoverMenuComponent } from './popovers/popover-menu/popover-menu.component';\nimport { TooltipDirective } from './popovers/tooltip/tooltip.directive';\nimport { PopoverContentComponent } from './popovers/popover-content/popover-content.component';\nimport { PopoverContentDirective } from './popovers/popover-content/popover-content.directive';\nimport { LegendComponent } from './popovers/legend/legend.component';\nimport { LegendDirective } from './popovers/legend/legend.directive';\nimport { ProgressComponent } from './progress/progress.component';\nimport { TabsComponent } from './tabs/tabs.component';\nimport { TabPaneComponent } from './tabs/tab-pane/tab-pane.component';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { ScrollableDirective } from './scroll/scrollable.directive';\nimport { SearchInputComponent } from './search-input/search-input.component';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport { MobileFlyoutComponent } from './mobile-flyout/mobile-flyout.component';\nimport { MobileFlyoutPageComponent } from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\nimport { MobileFlyoutItemComponent } from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\nimport { SafeHtmlPipe } from './search-input/safe-html.pipe';\nimport { AccordionComponent } from './accordion/accordion.component';\nimport { AccordionHeaderComponent } from './accordion/accordion-header/accordion-header.component';\nimport { AccordionItemComponent } from './accordion/accordion-item/accordion-item.component';\nimport { AccordionItemHeaderComponent } from './accordion/accordion-item/accordion-item-header/accordion-item-header.component';\nimport { AccordionItemBodyComponent } from './accordion/accordion-item/accordion-item-body/accordion-item-body.component';\n\nexport * from './buttons/button/button.component';\nexport * from './buttons/link-button/link-button.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './loading-indicator/loading-indicator.component';\nexport * from './chips/chip/chip.component';\nexport * from './chips/chip-container/chip-container.component';\nexport * from './table-header-cell/table-header-cell.directive';\nexport * from './stepper-vertical/stepper-vertical.component';\nexport * from './stepper-vertical/step-vertical/step-vertical.component';\nexport * from './stepper-horizontal/stepper-horizontal.component';\nexport * from './stepper-horizontal/step-horizontal/step-horizontal.component';\nexport * from './popovers/popover/popover.component';\nexport * from './popovers/popover-menu/popover-menu.component';\nexport * from './popovers/tooltip/tooltip.directive';\nexport * from './popovers/popover-content/popover-content.component';\nexport * from './popovers/popover-content/popover-content.directive';\nexport * from './popovers/legend/legend.component';\nexport * from './popovers/legend/legend.directive';\nexport * from './popovers/popover.models';\nexport * from './progress/progress.component';\nexport * from './tabs/tabs.component';\nexport * from './tabs/tab-pane/tab-pane.component';\nexport * from './pagination/pagination.component';\nexport * from './scroll';\nexport * from './search-input/search-input.component';\nexport * from './search-input/safe-html.pipe';\nexport * from './click-outside.directive';\nexport * from './mobile-flyout/mobile-flyout.component';\nexport * from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\nexport * from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\nexport * from './accordion';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n LinkButtonComponent,\n BreadcrumbComponent,\n LoadingIndicatorComponent,\n ChipContainerComponent,\n ChipComponent,\n PaginationComponent,\n TableHeaderCellDirective,\n StepperVerticalComponent,\n StepVerticalComponent,\n StepperHorizontalComponent,\n StepHorizontalComponent,\n PopoverComponent,\n PopoverMenuComponent,\n TooltipDirective,\n PopoverContentComponent,\n PopoverContentDirective,\n LegendComponent,\n LegendDirective,\n ProgressComponent,\n TabsComponent,\n TabPaneComponent,\n ScrollableDirective,\n SearchInputComponent,\n MobileFlyoutComponent,\n MobileFlyoutPageComponent,\n MobileFlyoutItemComponent,\n SafeHtmlPipe,\n ClickOutsideDirective,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionItemComponent,\n AccordionItemHeaderComponent,\n AccordionItemBodyComponent\n ],\n imports: [RouterModule, CommonModule, OverlayModule, PortalModule],\n exports: [\n ButtonComponent,\n LinkButtonComponent,\n BreadcrumbComponent,\n LoadingIndicatorComponent,\n ChipContainerComponent,\n ChipComponent,\n PaginationComponent,\n TableHeaderCellDirective,\n StepperVerticalComponent,\n StepVerticalComponent,\n StepperHorizontalComponent,\n StepHorizontalComponent,\n PopoverComponent,\n PopoverMenuComponent,\n TooltipDirective,\n PopoverContentComponent,\n PopoverContentDirective,\n LegendComponent,\n LegendDirective,\n ProgressComponent,\n TabsComponent,\n TabPaneComponent,\n ScrollableDirective,\n SearchInputComponent,\n SafeHtmlPipe,\n ClickOutsideDirective,\n MobileFlyoutComponent,\n MobileFlyoutPageComponent,\n MobileFlyoutItemComponent,\n AccordionComponent,\n AccordionHeaderComponent,\n AccordionItemComponent,\n AccordionItemHeaderComponent,\n AccordionItemBodyComponent\n ],\n providers: [],\n bootstrap: [PopoverComponent]\n})\nexport class FestoAngularComponentsModule {}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n forwardRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fng-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ]\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() name: string = null;\n @Input() large = false;\n @Input() valid = true;\n @Input() labelPosition: 'before' | 'after' | 'below' = 'after';\n\n private innerId = `fng-checkbox-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-checkbox-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this.isChecked = value;\n this.changeDetector.markForCheck();\n }\n }\n private isChecked = false;\n\n @Input()\n get disabled() {\n return this.isDisabled;\n }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this.isDisabled = newValue;\n this.changeDetector.markForCheck();\n }\n }\n private isDisabled = false;\n\n @Input()\n get indeterminate(): boolean {\n return this.isIndeterminate;\n }\n set indeterminate(value: boolean) {\n const changed = value !== this.isIndeterminate;\n this.isIndeterminate = coerceBooleanProperty(value);\n if (changed) {\n this.indeterminateChange.emit(this.isIndeterminate);\n }\n this.changeDetector.markForCheck();\n }\n private isIndeterminate = false;\n\n @Input() value: string;\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n private isRequired: boolean;\n\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => any;\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInteractionEvent(event: Event) {\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.indeterminate) {\n Promise.resolve().then(() => {\n this.isIndeterminate = false;\n this.indeterminateChange.emit(this.isIndeterminate);\n });\n }\n if (!this.valid) {\n this.valid = true;\n }\n if (this.required) {\n this.required = false;\n }\n this.checked = !this.checked;\n if (this.controlValueAccessorChangeFn != null) {\n this.controlValueAccessorChangeFn(this.checked);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.change.emit(this.checked);\n }\n }\n}\n","<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n forwardRef,\n ChangeDetectorRef\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'fng-switch',\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ]\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() name: string = null;\n @Input() large = false;\n @Input() labelPosition: 'before' | 'after' | 'below' = 'before';\n\n private innerId = `fng-switch-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n if (value !== this.checked) {\n this.isChecked = value;\n this.changeDetector.markForCheck();\n }\n }\n private isChecked = false;\n\n @Input()\n get disabled() {\n return this.isDisabled;\n }\n set disabled(value: any) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this.disabled) {\n this.isDisabled = newValue;\n this.changeDetector.markForCheck();\n }\n }\n private isDisabled = false;\n\n @Input() value: string;\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n private isRequired: boolean;\n\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => any;\n\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInteractionEvent(event: Event) {\n event.stopPropagation();\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.required) {\n this.required = false;\n }\n this.checked = !this.checked;\n if (this.controlValueAccessorChangeFn != null) {\n this.controlValueAccessorChangeFn(this.checked);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.change.emit(this.checked);\n }\n }\n}\n","<label\n [ngClass]=\"{\n 'fwe-switch-container': true,\n 'fwe-checked': checked,\n 'fwe-disabled': disabled,\n 'fwe-switch-label-below': labelPosition == 'below',\n 'fwe-switch-label-before': labelPosition == 'before',\n 'fwe-switch-lg': large\n }\"\n>\n <input\n title=\"checkbox\"\n type=\"checkbox\"\n [checked]=\"checked\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n [disabled]=\"disabled\"\n />\n <div class=\"fwe-switch-track\"></div>\n <div class=\"fwe-switch-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { Injectable, OnDestroy } from '@angular/core';\n\nexport type UniqueSelectionDispatcherListener = (id: string, name: string) => void;\n\n@Injectable({ providedIn: 'root' })\nexport class UniqueSelectionDispatcher implements OnDestroy {\n private listeners: UniqueSelectionDispatcherListener[] = [];\n\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id: string, name: string) {\n for (const listener of this.listeners) {\n listener(id, name);\n }\n }\n\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener: UniqueSelectionDispatcherListener): () => void {\n this.listeners.push(listener);\n return () => {\n this.listeners = this.listeners.filter((registered: UniqueSelectionDispatcherListener) => {\n return listener !== registered;\n });\n };\n }\n\n ngOnDestroy() {\n this.listeners = [];\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n ChangeDetectionStrategy,\n Optional,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n OnDestroy,\n ViewEncapsulation,\n Directive,\n forwardRef,\n AfterContentInit,\n ContentChildren,\n HostBinding\n} from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { UniqueSelectionDispatcher } from '../unique-selection-dispatcher';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport class RadioChange {\n constructor(public source: RadioComponent, public value: any) {}\n}\n\nlet nextUniqueId = 0;\n\n@Directive({\n selector: '[fngRadioGroup]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupDirective),\n multi: true\n }\n ]\n})\nexport class RadioGroupDirective implements AfterContentInit, ControlValueAccessor {\n @HostBinding('class.fwe-radio-group') hostClass = true;\n @HostBinding('attr.role') role = 'radiogroup';\n\n @Output()\n readonly change = new EventEmitter<RadioChange>();\n\n @ContentChildren(forwardRef(() => RadioComponent), { descendants: true })\n radios: QueryList<RadioComponent>;\n\n @Input()\n get name(): string {\n return this.innerName;\n }\n set name(value: string) {\n this.innerName = value;\n this.updateRadioButtonNames();\n }\n\n @Input()\n get large() {\n return this.isLarge;\n }\n set large(v) {\n this.isLarge = v;\n this.updateRadioButtonSize();\n }\n\n @Input()\n get labelPosition() {\n return this.innerLabelPosition;\n }\n set labelPosition(v) {\n this.innerLabelPosition = v;\n this.markRadiosForCheck();\n }\n\n @Input()\n get value(): any {\n return this.innerValue;\n }\n set value(newValue: any) {\n if (this.innerValue !== newValue) {\n this.innerValue = newValue;\n this.updateSelectedRadioFromValue();\n this.checkSelectedRadioButton();\n }\n }\n\n @Input()\n get selected() {\n return this.isSelected;\n }\n set selected(selected: any | null) {\n this.isSelected = selected;\n this.value = selected ? selected.value : null;\n this.checkSelectedRadioButton();\n }\n\n @Input()\n get disabled(): boolean {\n return this.isDisabled;\n }\n set disabled(value) {\n this.isDisabled = coerceBooleanProperty(value);\n this.markRadiosForCheck();\n }\n\n @Input()\n get required(): boolean {\n return this.isRequired;\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n this.markRadiosForCheck();\n }\n\n private isLarge = false;\n private isDisabled = false;\n private isRequired = false;\n private innerValue: any = null;\n private isInitialized = false;\n private isSelected: RadioComponent | null = null;\n private innerName = `fngRadioGroup-${nextUniqueId++}`;\n private innerLabelPosition: 'before' | 'after' | 'below' = 'before';\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n controlValueAccessorChangeFn: (value: any) => void;\n\n onTouched: () => void;\n\n ngAfterContentInit() {\n this.isInitialized = true;\n }\n\n checkSelectedRadioButton() {\n if (this.isSelected && !this.isSelected.checked) {\n this.isSelected.checked = true;\n }\n }\n\n touch() {\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n emitChangeEvent(): void {\n if (this.isInitialized) {\n this.change.emit(new RadioChange(this.isSelected, this.innerValue));\n }\n }\n\n markRadiosForCheck() {\n if (this.radios) {\n this.radios.forEach(radio => radio.markForCheck());\n }\n }\n\n writeValue(value: any) {\n this.value = value;\n this.changeDetector.markForCheck();\n }\n\n registerOnChange(fn: (value: any) => void) {\n this.controlValueAccessorChangeFn = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n\n private updateRadioButtonSize(): void {\n if (this.radios) {\n this.radios.forEach(radio => {\n radio.large = this.large;\n radio.markForCheck();\n });\n }\n }\n\n private updateRadioButtonNames(): void {\n if (this.radios) {\n this.radios.forEach(radio => {\n radio.name = this.name;\n radio.markForCheck();\n });\n }\n }\n\n private updateSelectedRadioFromValue(): void {\n const isAlreadySelected = this.isSelected !== null && this.isSelected.value === this.innerValue;\n if (this.radios && !isAlreadySelected) {\n this.isSelected = null;\n this.radios.forEach(radio => {\n radio.checked = this.value === radio.value;\n if (radio.checked) {\n this.isSelected = radio;\n }\n });\n }\n }\n}\n\n@Component({\n selector: 'fng-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class RadioComponent implements OnInit, OnDestroy {\n @Input() name: string;\n\n private innerId = `fng-radio-${++nextUniqueId}`;\n get id(): string {\n return this.innerId;\n }\n @Input()\n set id(value: string) {\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-radio-${++nextUniqueId}`;\n }\n\n get inputId(): string {\n return `${this.innerId}-input`;\n }\n\n @Input()\n get checked(): boolean {\n return this.isChecked;\n }\n set checked(value: boolean) {\n const newCheckedState = coerceBooleanProperty(value);\n if (this.isChecked !== newCheckedState) {\n this.isChecked = newCheckedState;\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\n this.radioGroup.selected = this;\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\n this.radioGroup.selected = null;\n }\n\n if (newCheckedState) {\n this.radioDispatcher.notify(this.id, this.name);\n }\n this.changeDetector.markForCheck();\n }\n }\n\n @Input()\n get value(): any {\n return this.innerValue;\n }\n set value(value: any) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n if (this.radioGroup !== null) {\n if (!this.checked) {\n this.checked = this.radioGroup.value === value;\n }\n if (this.checked) {\n this.radioGroup.selected = this;\n }\n }\n }\n }\n\n @Input()\n get large() {\n return this.isLarge || (this.radioGroup != null && this.radioGroup.large);\n }\n set large(value) {\n this.isLarge = value;\n }\n\n @Input()\n get labelPosition() {\n return this.innerLabelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'before';\n }\n set labelPosition(value) {\n this.innerLabelPosition = value;\n }\n\n @Input()\n get disabled(): boolean {\n return this.isDisabled || (this.radioGroup != null && this.radioGroup.disabled);\n }\n set disabled(value: boolean) {\n const newDisabledState = coerceBooleanProperty(value);\n if (this.isDisabled !== newDisabledState) {\n this.isDisabled = newDisabledState;\n this.changeDetector.markForCheck();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.isRequired || (this.radioGroup && this.radioGroup.required);\n }\n set required(value: boolean) {\n this.isRequired = coerceBooleanProperty(value);\n }\n\n @Output() readonly change = new EventEmitter<RadioChange>();\n\n radioGroup: RadioGroupDirective;\n\n private isLarge = false;\n private isChecked = false;\n private isDisabled: boolean;\n private isRequired: boolean;\n private innerValue: any = null;\n private innerLabelPosition: 'before' | 'after' | 'below';\n private removeUniqueSelectionListener: () => void;\n\n constructor(\n @Optional() radioGroup: RadioGroupDirective,\n private changeDetector: ChangeDetectorRef,\n private radioDispatcher: UniqueSelectionDispatcher\n ) {\n this.radioGroup = radioGroup;\n this.removeUniqueSelectionListener = radioDispatcher.listen((id: string, name: string) => {\n if (id !== this.id && name === this.name) {\n this.checked = false;\n }\n });\n }\n\n ngOnInit() {\n if (this.radioGroup) {\n this.checked = this.radioGroup.value === this.innerValue;\n this.name = this.radioGroup.name;\n }\n }\n\n ngOnDestroy() {\n if (this.removeUniqueSelectionListener != null) {\n this.removeUniqueSelectionListener();\n }\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n }\n\n onInputChange(event: Event) {\n event.stopPropagation();\n\n if (!this.disabled) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\n this.checked = true;\n this.emitChangeEvent();\n\n if (this.radioGroup) {\n if (typeof this.radioGroup?.controlValueAccessorChangeFn === 'function') {\n this.radioGroup?.controlValueAccessorChangeFn(this.value);\n }\n\n if (groupValueChanged) {\n this.radioGroup.emitChangeEvent();\n }\n }\n }\n }\n\n markForCheck() {\n this.changeDetector.markForCheck();\n }\n\n private emitChangeEvent(): void {\n this.change.emit(new RadioChange(this, this.innerValue));\n }\n}\n","<label\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-radio': true,\n 'fwe-radio-label-below': labelPosition == 'below',\n 'fwe-radio-label-before': labelPosition == 'before',\n 'fwe-radio-lg': large\n }\"\n>\n <input\n type=\"radio\"\n [id]=\"inputId\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [required]=\"required\"\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-radio-checkmark\"></div>\n <div class=\"fwe-radio-label-content\">\n <ng-content></ng-content>\n </div>\n</label>\n","import { Component, Input, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\n\n@Component({\n selector: 'fng-select-option',\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss']\n})\nexport class SelectOptionComponent implements AfterViewInit {\n @Input() value: any;\n @ViewChild('root') elementRef!: ElementRef;\n\n el: HTMLElement;\n\n ngAfterViewInit(): void {\n this.el = this.elementRef.nativeElement;\n }\n\n async update(): Promise<HTMLElement> {\n return await Promise.resolve(this.el);\n }\n}\n","<span #root>\n <ng-content></ng-content>\n</span>\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction defaultValueKey(key: string): string {\n return key == null ? 'value' : key;\n}\n\nfunction defaultTextKey(key: string): string {\n return key == null ? 'text' : key;\n}\n\n@Pipe({\n name: 'fngChipText',\n pure: false\n})\nexport class ChipTextPipe implements PipeTransform {\n transform(value: any, options: any[], optionsValueKey?: string, optionsTextKey?: string): string {\n let chipText = '';\n optionsValueKey = defaultValueKey(optionsValueKey);\n optionsTextKey = defaultTextKey(optionsTextKey);\n\n options.forEach((_: any, index: number) => {\n if (JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value[optionsValueKey])) {\n chipText = options[index][optionsTextKey];\n }\n\n if (JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value)) {\n chipText = options[index][optionsTextKey];\n }\n });\n\n return chipText;\n }\n}\n","import {\n Component,\n Input,\n HostBinding,\n OnInit,\n ViewEncapsulation,\n Renderer2,\n Inject,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n QueryList,\n ContentChildren,\n Output,\n EventEmitter,\n ChangeDetectorRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectOptionComponent } from './select-option/select-option.component';\n\nexport interface SelectOption {\n value: any;\n text: string;\n}\n\n@Component({\n selector: 'fng-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ]\n})\nexport class SelectComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n static nextId = 0;\n\n protected _disabled = false;\n protected _required = false;\n protected _value: any;\n protected body: HTMLElement;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n }\n\n get value(): any {\n return this._value;\n }\n\n set value(value: any) {\n if (this.multiple === true) {\n const index = this._value.indexOf(value);\n if (index === -1) {\n this._value.push(value);\n this.checked.set(value, 'checked');\n } else {\n this._value.splice(index, 1);\n this.checked.set(value, null);\n }\n } else {\n this._value = value;\n }\n\n if (this.onChange != null) {\n this.onChange(this.value);\n }\n this.fngChange.emit(this.value);\n }\n\n onChange: (_: any) => void;\n onTouched: () => void;\n\n touched = false;\n\n @HostBinding()\n id = `input-control-${++SelectComponent.nextId}`;\n\n @Input() multiple: boolean;\n @Input() size: number;\n @Input() options = [];\n @Input() optionsValueKey: string;\n @Input() optionsTextKey: string;\n @Input() optionObjectAsValue: boolean;\n @Input() error: string;\n @Input() label = '';\n @Input() hideLabel = false;\n @Input() hint = '';\n @Input() resetOption: string;\n @ContentChildren(SelectOptionComponent) fngSelectOptions: QueryList<SelectOptionComponent>;\n @ViewChild('div') elementRef: ElementRef;\n @Output() fngChange = new EventEmitter<any>();\n\n selectPanelClasses: string[] = ['fng-select-panel'];\n showOptions = false;\n empty: boolean;\n triggerWidth: any;\n checked = new Map();\n hasProjectedOptions = false;\n projectedHtml = [];\n\n constructor(@Inject(DOCUMENT) protected document: any, protected renderer: Renderer2, protected cd: ChangeDetectorRef) {\n this.body = (this.document as Document).body;\n }\n\n ngOnInit(): void {\n if (this.size != null) {\n this.selectPanelClasses.push('fng-select-panel-options-' + this.size);\n }\n\n if (this.multiple === true) {\n this._value = [];\n this.selectPanelClasses.push('fng-select-panel-multiple');\n }\n }\n\n ngAfterViewInit(): void {\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\n this.initProjectedOptions();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(shouldDisable: boolean): void {\n this.disabled = shouldDisable;\n }\n\n writeValue(value: any | null): void {\n if (value === undefined) {\n return;\n }\n\n if (this.multiple === true) {\n this._value = value;\n // set checkmarks in overlay panel, so that it is displayed correctly when user opens it\n value?.forEach(v => {\n this.checked.set(v, 'checked');\n });\n } else {\n this._value = value;\n }\n }\n\n getOptionText(index: number) {\n if (this.options[index] != null && this.options[index][this.optionsTextKey] != null) {\n return this.options[index][this.optionsTextKey];\n }\n }\n\n getOptionValue(index: number) {\n // if set to true the complete option object is returned as value\n if (this.optionObjectAsValue === true) {\n return this.options[index];\n }\n\n // try to access standard property 'value'\n const v = this.options[index]['value'];\n\n if (v !== undefined) {\n return v;\n }\n\n // try to map the value to a property of the option by given key\n if (this.options[index] != null && this.options[index][this.optionsValueKey] != null) {\n return this.options[index][this.optionsValueKey];\n }\n }\n\n removeChip(event: any, chip: string) {\n event.stopPropagation();\n if (!this._disabled) {\n this.markAsTouched();\n this.value = chip;\n }\n }\n\n onOpenedChange(isOpen: boolean) {\n if (isOpen) {\n this.renderer.addClass(this.body, 'fng-select-panel-open');\n } else {\n this.renderer.removeClass(this.body, 'fng-select-panel-open');\n }\n }\n\n close() {\n this.showOptions = false;\n this.isEmpty();\n }\n\n toggle() {\n if (false === this.disabled) {\n this.triggerWidth = this.elementRef.nativeElement?.getBoundingClientRect()?.width;\n this.showOptions = !this.showOptions;\n this.onOpenedChange(this.showOptions);\n this.isEmpty();\n }\n }\n\n select(value: any, event: Event) {\n if (!this._disabled) {\n this.markAsTouched();\n event.stopPropagation();\n this.value = value;\n\n if (this.multiple !== true) {\n // closes overlay panel\n this.toggle();\n }\n }\n }\n\n markAsTouched() {\n if (!this.touched) {\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.touched = true;\n }\n }\n\n onContentChange(changes: MutationRecord[]) {\n if (changes != null) {\n this.options = [];\n this.projectedHtml = [];\n this.initProjectedOptions();\n }\n }\n\n protected initProjectedOptions() {\n if (this.fngSelectOptions.length > 0) {\n this.hasProjectedOptions = true;\n this.fngSelectOptions.forEach(component => {\n component.update().then(el => {\n this.options.push({ value: component.value, text: el.textContent.trim() });\n this.projectedHtml.push(el.innerHTML);\n this.cd.detectChanges();\n });\n });\n }\n this.cd.detectChanges();\n }\n\n protected isEmpty() {\n if (!this.showOptions && (!this._value || '' === this._value)) {\n this.empty = true;\n } else {\n this.empty = false;\n }\n }\n}\n","<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\" (cdkObserveContent)=\"onContentChange($event)\">\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * A custom form element for text inputs.\n */\n@Component({\n selector: 'fng-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextInputComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TextInputComponent implements OnInit, ControlValueAccessor {\n /**\n * The text input label.\n */\n @Input() label: string;\n\n /**\n * A string specifying the type of control to render.\n */\n @Input()\n get type(): string {\n return this.innerType;\n }\n set type(value: string) {\n const supported = ['text', 'number', 'password', 'date', 'time', 'datetime-local'];\n if (value != null && supported.indexOf(value) !== -1) {\n this.innerType = value;\n } else {\n this.innerType = 'text';\n }\n }\n protected innerType = 'text';\n\n @Input()\n get readonly(): boolean {\n return this.innerReadonly;\n }\n set readonly(value: boolean) {\n this.innerReadonly = coerceBooleanProperty(value);\n }\n private innerReadonly = false;\n\n @Input() step: number;\n @Input() min: number;\n @Input() max: number;\n @Input() tabindex: number;\n @Input() placeholder: string;\n @Input() name: string;\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n\n if (this.focused) {\n this.focused = false;\n }\n }\n protected innerDisabled = false;\n\n /**\n * The inner value.\n */\n innerValue: string;\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n /**\n * Error description when invalid.\n */\n @Input() error: string;\n\n /**\n * Hint description when valid.\n */\n @Input() hint: string;\n\n @ViewChild('inputElement') inputElement: ElementRef;\n\n /**\n * When true the text input has focus.\n */\n focused: boolean;\n\n /**\n * Triggered on change.\n */\n onChange: (value: string) => void;\n\n /**\n * Triggered on touch.\n */\n onTouched: () => void;\n\n /**\n * Called on component initialisation.\n */\n ngOnInit(): void {\n this.onBlur();\n }\n\n /**\n * Writes the value.\n * @param value The value.\n */\n writeValue(value: string): void {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n }\n\n /**\n * Registers a function to onChange.\n * @param fn The registered function.\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a function to onTouched.\n * @param fn The registered function.\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Called when the text input is in focus.\n */\n onFocus() {\n this.focused = true;\n }\n\n onInput(event: any) {\n this.value = event.target.value;\n }\n\n /**\n * Called when the text input blurs.\n */\n onBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n\n /**\n * Sets the disabled state.\n * @param isDisabled When true the control is disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label class=\"fwe-input-text\" [class.fwe-no-pointer-events]=\"readonly === true\">\n <input\n #inputElement\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.type]=\"type\"\n [attr.step]=\"step\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n [value]=\"value\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint; else projectedHint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error; else projectedError\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n\n <ng-template #projectedHint>\n <span class=\"fwe-input-text-info fng-projected\"><ng-content select=\".fng-hint\"></ng-content></span>\n </ng-template>\n\n <ng-template #projectedError>\n <span class=\"fwe-input-text-invalid fng-projected\"><ng-content select=\".fng-error\"></ng-content></span>\n </ng-template>\n</label>\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\n\n/**\n * A custom form element for text inputs.\n */\n@Component({\n selector: 'fng-text-area',\n templateUrl: './text-area.component.html',\n styleUrls: ['./text-area.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextAreaComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TextAreaComponent implements OnInit, ControlValueAccessor {\n /**\n * The text input label.\n */\n @Input() label: string;\n\n @Input()\n get readonly(): boolean {\n return this.innerReadonly;\n }\n set readonly(value: boolean) {\n this.innerReadonly = coerceBooleanProperty(value);\n }\n private innerReadonly = false;\n\n @Input() placeholder: string;\n @Input() tabindex: number;\n @Input() name: string;\n\n /**\n * When true the control's disabled attribute is set\n * and it gets addeed the .disabled css class.\n */\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n\n if (this.focused) {\n this.focused = false;\n }\n }\n protected innerDisabled = false;\n\n /**\n * The inner value.\n */\n innerValue: string;\n\n /**\n * The getter for value.\n */\n get value(): string {\n return this.innerValue;\n }\n\n /**\n * The setter for value.\n */\n @Input()\n set value(value: string) {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n /**\n * Error description when invalid.\n */\n @Input() error: string;\n\n /**\n * Hint description when valid.\n */\n @Input() hint: string;\n\n /**\n * the height is managed by classes. the last one is \"fwe-row-10\"\n */\n @Input()\n get rows(): number {\n return this.innerRows;\n }\n set rows(value: number) {\n const v = coerceNumberProperty(value);\n this.innerRows = v > 10 ? 10 : v;\n }\n protected innerRows = 3;\n\n @Input() maxlength: number;\n\n @ViewChild('inputElement') inputElement: ElementRef;\n\n /**\n * When true the text input has focus.\n */\n focused: boolean;\n\n /**\n * Triggered on change.\n */\n onChange: (value: string) => void;\n\n /**\n * Triggered on touch.\n */\n onTouched: () => void;\n\n /**\n * Called on component initialisation.\n */\n ngOnInit(): void {\n this.onBlur();\n }\n\n /**\n * Writes the value.\n * @param value The value.\n */\n writeValue(value: string): void {\n if (value != null) {\n value = '' + value;\n }\n this.innerValue = value;\n this.focused = !!value;\n }\n\n /**\n * Registers a function to onChange.\n * @param fn The registered function.\n */\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n /**\n * Registers a function to onTouched.\n * @param fn The registered function.\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Called when the text input is in focus.\n */\n onFocus() {\n this.focused = true;\n }\n\n onInput(event: any) {\n this.value = event.target.value;\n\n // The height is adjusted to the content on \"rows = 0\"\n if (this.rows === 0) {\n const textarea = this.inputElement.nativeElement;\n textarea.style.height = '1px'; // trigger calculation of the textarea.scrollHeight\n textarea.style.height = 25 + textarea.scrollHeight + 'px';\n }\n }\n\n /**\n * Called when the text input blurs.\n */\n onBlur() {\n if (this.focused) {\n this.focused = false;\n }\n }\n\n /**\n * Sets the disabled state.\n * @param isDisabled When true the control is disabled\n */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","<label class=\"fwe-input-text\">\n <textarea\n #inputElement\n [class]=\"'fwe-row-' + rows\"\n [disabled]=\"disabled\"\n [required]=\"required === true || null\"\n [attr.readonly]=\"readonly === true || null\"\n [attr.placeholder]=\"placeholder || null\"\n [attr.name]=\"name || null\"\n [attr.tabindex]=\"tabindex\"\n [class.fng-has-value]=\"value != null && value !== ''\"\n autocomplete=\"off\"\n (focus)=\"onFocus()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n >{{ value }}</textarea\n >\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n <span *ngIf=\"maxlength > 0 && value != null\" class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n</label>\n","export abstract class ColorHelper {\n // based on: https://gist.github.com/mjackson/5311256\n public static rgbToHsv(rgb: Record<'r' | 'g' | 'b', number>): Record<'h' | 's' | 'v', number> {\n if (!rgb) {\n return undefined;\n }\n\n const r = this.limitToByte(rgb.r) / 255;\n const g = this.limitToByte(rgb.g) / 255;\n const b = this.limitToByte(rgb.b) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n\n let h = max;\n let s = max;\n const v = max;\n\n const d = max - min;\n s = max === 0 ? 0 : d / max;\n\n if (max === min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n\n h /= 6;\n }\n\n return { h, s, v };\n }\n\n // based on: https://gist.github.com/mjackson/5311256\n public static hsvToRgb(hsv: Record<'h' | 's' | 'v', number>): Record<'r' | 'g' | 'b', number> {\n if (!hsv) {\n return undefined;\n }\n\n hsv.h = this.limitToOne(hsv.h);\n hsv.s = this.limitToOne(hsv.s);\n hsv.v = this.limitToOne(hsv.v);\n\n let r: number;\n let g: number;\n let b: number;\n\n const i = Math.floor(hsv.h * 6);\n const f = hsv.h * 6 - i;\n const p = hsv.v * (1 - hsv.s);\n const q = hsv.v * (1 - f * hsv.s);\n const t = hsv.v * (1 - (1 - f) * hsv.s);\n\n switch (i % 6) {\n case 0:\n r = hsv.v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = hsv.v;\n b = p;\n break;\n case 2:\n r = p;\n g = hsv.v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = hsv.v;\n break;\n case 4:\n r = t;\n g = p;\n b = hsv.v;\n break;\n case 5:\n r = hsv.v;\n g = p;\n b = q;\n break;\n }\n\n return {\n r: this.limitToByte(r * 255),\n g: this.limitToByte(g * 255),\n b: this.limitToByte(b * 255)\n };\n }\n\n private static limitToByte(num) {\n return Math.round(num <= 0 ? 0 : num >= 255 ? 255 : num);\n }\n\n private static limitToOne(num) {\n return num <= 0 ? 0 : num >= 1 ? 1 : num;\n }\n\n private static numberToHex(rgb: number): string {\n let hex = Math.round(rgb).toString(16);\n if (hex.length < 2) {\n hex = '0' + hex;\n }\n return hex.toUpperCase();\n }\n\n public static rgbToHex(rgb: Record<'r' | 'g' | 'b', number>) {\n if (!rgb) {\n return undefined;\n }\n\n rgb.r = this.limitToByte(rgb.r);\n rgb.g = this.limitToByte(rgb.g);\n rgb.b = this.limitToByte(rgb.b);\n\n const red = this.numberToHex(rgb.r);\n const green = this.numberToHex(rgb.g);\n const blue = this.numberToHex(rgb.b);\n return '#' + red + green + blue;\n }\n\n public static hexToRgb(hexString: string): Record<'r' | 'g' | 'b', number> {\n const numbersOnly = hexString.substring(1);\n const aRgbHex = numbersOnly.match(/.{1,2}/g);\n return { r: parseInt(aRgbHex[0], 16), g: parseInt(aRgbHex[1], 16), b: parseInt(aRgbHex[2], 16) };\n }\n}\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CdkDragMove } from '@angular/cdk/drag-drop';\nimport { Component, forwardRef, Input, ViewEncapsulation, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ColorHelper } from './color-helper';\n\nexport const PREDEFINED_COLORS: string[] = [\n '#0091dc',\n '#333333',\n '#ffffff',\n '#f2f3f5',\n '#e5e8eb',\n '#d8dce1',\n '#b6bec6',\n '#80ca3d',\n '#ffd600',\n '#ff9600',\n '#d50000'\n];\n\n/**\n * A custom form element to pick a color.\n */\n@Component({\n selector: 'fng-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['../text-input/text-input.component.scss', './color-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ColorPickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class ColorPickerComponent implements OnChanges, ControlValueAccessor {\n baseSize = 184;\n\n inputType = 'RGB';\n\n isSelectOpen = false;\n\n @Input() useAlpha = false;\n\n @Input()\n get alpha(): number {\n return this.innerAlpha;\n }\n set alpha(value: number) {\n if (value <= 100 && value >= 0 && this.innerAlpha !== Math.round(value)) {\n this.innerAlpha = Math.round(value);\n this.alphaInput = this.innerAlpha;\n this.updateKnobs();\n }\n }\n\n @Output() alphaChange = new EventEmitter<number>();\n\n /**\n * The current color\n */\n get color(): string {\n return this.innerColor;\n }\n @Input()\n set color(value: string) {\n if (this.isHexColor(value)) {\n this.innerColor = value.toUpperCase();\n } else {\n this.innerColor = null;\n }\n this.updateColorRgb(true);\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n /**\n * an array with color strings representing the palette.\n * Example: ['#234567, '#AA00FF']\n * Pass null to hide palette.\n */\n @Input() palette: string[];\n\n /**\n * hide the hue and gradient picker and shot the palette only.\n */\n @Input() paletteOnly = false;\n\n private innerColor: string;\n private innerDisabled: boolean;\n private innerAlpha: number;\n\n // input controls\n hexInputColor = '#ff0000';\n redInput = 255;\n greenInput = 0;\n blueInput = 0;\n alphaInput = 100;\n\n // HSV value\n hue: number;\n saturation: number;\n value: number;\n\n // poitions of the knobs in px\n hueKnobOffset = 0;\n alphaKnobOffset = 0;\n saturationKnobOffset = 0;\n valueKnobOffset = 0;\n\n // callbacks for ControlValueAccessor\n onTouched: () => any;\n onChange: (color: string) => any;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.palette?.currentValue?.length > 0 && changes.palette.currentValue.indexOf('FESTO_COLORS') !== -1) {\n this.palette = PREDEFINED_COLORS;\n }\n }\n\n // ControlValueAccessor\n writeValue(color: string): void {\n if (this.isHexColor(color)) {\n this.innerColor = color.toUpperCase();\n } else {\n this.innerColor = null;\n }\n this.updateColorRgb(false);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.innerDisabled = isDisabled;\n }\n\n // update method for changes of the rgb value\n updateColorRgb(emitChange: boolean) {\n const currentColor = this.innerColor || '#FFFFFF';\n this.updateInputs(currentColor);\n const rgb = ColorHelper.hexToRgb(currentColor);\n const hsv = ColorHelper.rgbToHsv(rgb);\n this.hue = hsv.h;\n this.saturation = hsv.s;\n this.value = hsv.v;\n this.updateKnobs();\n if (emitChange) {\n if (this.onChange != null) {\n this.onChange(this.innerColor);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n // update method for changes of the hsv value\n updateColorHsv() {\n const rgb = ColorHelper.hsvToRgb({ h: this.hue, s: this.saturation, v: this.value });\n this.innerColor = ColorHelper.rgbToHex(rgb);\n this.updateInputs(this.innerColor);\n if (this.onChange != null) {\n this.onChange(this.innerColor);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n\n // event handler for inputs\n onHexBlur() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n } else {\n this.hexInputColor = this.color;\n }\n }\n\n onHexInput() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n }\n }\n\n onRgbBlur() {\n if (this.isHexColor(this.hexInputColor)) {\n this.color = this.hexInputColor.toUpperCase();\n } else {\n this.hexInputColor = this.color;\n }\n }\n\n onRgbInput(value: number, channel: string) {\n if (value > 255 || value < 0) {\n this.updateInputs(this.innerColor);\n } else {\n const rgb = ColorHelper.hexToRgb(this.innerColor);\n rgb[channel] = value;\n this.innerColor = ColorHelper.rgbToHex(rgb);\n this.updateColorRgb(true);\n }\n }\n\n onAlphaInput(value: number) {\n if (value > 100 || value < 0) {\n this.alphaInput = this.innerAlpha;\n } else {\n this.alpha = value;\n this.alphaChange.emit(this.alpha);\n }\n }\n\n onGradientClick(event: MouseEvent) {\n this.saturation = event.offsetX / this.baseSize;\n this.value = (this.baseSize - event.offsetY) / this.baseSize;\n this.updateColorHsv();\n this.updateKnobs();\n }\n\n onGradientDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.saturation = Math.floor(position.x) / this.baseSize;\n this.value = (this.baseSize - position.y) / this.baseSize;\n this.updateColorHsv();\n }\n\n onHueClick(event: MouseEvent) {\n this.hue = event.offsetY / this.baseSize;\n this.updateColorHsv();\n this.updateKnobs();\n }\n\n onAlphaClick(event: MouseEvent) {\n this.alpha = 100 - Math.round((event.offsetY / this.baseSize) * 100);\n this.alphaChange.emit(this.alpha);\n }\n\n onHueDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.hue = (position.y + this.baseSize + 14) / this.baseSize;\n this.updateColorHsv();\n }\n\n onAlphaDrag(event: CdkDragMove) {\n const position = event.source.getFreeDragPosition();\n this.innerAlpha = 100 - Math.round((position.y / this.baseSize) * 100);\n this.alphaInput = this.innerAlpha;\n this.alphaChange.emit(this.innerAlpha);\n }\n\n onRemoveColor() {\n if (this.useAlpha) {\n this.alpha = 0;\n this.alphaChange.emit(this.alpha);\n } else {\n this.color = null;\n }\n }\n\n isHexColor(value: string) {\n return /^#[0-9A-F]{6}$/i.test(value);\n }\n\n getSaturationGradient(): string {\n return 'linear-gradient(to right, white, hsl(' + this.hue * 360 + ', 100%, 50%) )';\n }\n\n updateInputs(hexColor: string) {\n this.hexInputColor = hexColor;\n const rgb = ColorHelper.hexToRgb(hexColor);\n this.redInput = rgb.r;\n this.greenInput = rgb.g;\n this.blueInput = rgb.b;\n }\n\n updateKnobs() {\n this.alphaKnobOffset = ((100 - this.alpha) / 100) * this.baseSize;\n this.hueKnobOffset = this.hue * this.baseSize - (this.baseSize + 14);\n this.saturationKnobOffset = this.saturation * this.baseSize;\n this.valueKnobOffset = (1 - this.value) * this.baseSize;\n }\n\n onChangeType(type: string) {\n this.inputType = type;\n this.isSelectOpen = false;\n }\n}\n","<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n <div class=\"fwe-d-flex\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-gradient-picker\">\n <div class=\"fwe-saturation-gradient\" [ngStyle]=\"{ 'background-image': getSaturationGradient() }\"></div>\n <div class=\"fwe-brightness-gradient\" (click)=\"onGradientClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".hue-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: hueKnobOffset }\"\n (cdkDragMoved)=\"onHueDrag($event)\"\n [style.background]=\"'hsl(' + hue * 360 + ', 100%, 50%)'\"\n ></div>\n </div>\n\n <div class=\"fwe-alpha-picker\" *ngIf=\"useAlpha\">\n <svg\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"8\"\n height=\"184\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"4\" ry=\"4\" width=\"8\" height=\"184\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <div\n class=\"fwe-picker-background\"\n (click)=\"onAlphaClick($event)\"\n [ngStyle]=\"{ 'background-image': 'linear-gradient( ' + color + ' , transparent)' }\"\n ></div>\n\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".alpha-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: alphaKnobOffset }\"\n (cdkDragMoved)=\"onAlphaDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n </div>\n\n <div class=\"fwe-mt-s\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-type-select\">\n <div class=\"fwe-type-indicator\" (click)=\"isSelectOpen = !isSelectOpen\">\n <span class=\"fwe-input-type\">{{ inputType }}</span>\n <i class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </div>\n <div class=\"fwe-popover\" *ngIf=\"isSelectOpen\">\n <div class=\"fwe-type-item\" (click)=\"onChangeType('HEX')\" [class.fwe-selected]=\"inputType === 'HEX'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> HEX\n </div>\n <div class=\"fwe-type-item\" (click)=\"onChangeType('RGB')\" [class.fwe-selected]=\"inputType === 'RGB'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> RGB\n </div>\n </div>\n </div>\n\n <div class=\"fwe-d-flex\">\n <ng-container *ngIf=\"inputType === 'HEX'\">\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n </ng-container>\n <ng-container *ngIf=\"inputType === 'RGB'\">\n <label class=\"fwe-input-text fwe-red-input\">\n <input type=\"number\" [(ngModel)]=\"redInput\" (input)=\"onRgbInput(redInput, 'r')\" />\n </label>\n <label class=\"fwe-input-text fwe-green-input\">\n <input type=\"number\" [(ngModel)]=\"greenInput\" (input)=\"onRgbInput(greenInput, 'g')\" />\n </label>\n <label class=\"fwe-input-text fwe-blue-input\">\n <input type=\"number\" min=\"0\" max=\"255\" [(ngModel)]=\"blueInput\" (input)=\"onRgbInput(blueInput, 'b')\" />\n </label>\n </ng-container>\n\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\" *ngIf=\"useAlpha\">\n <span>\n <input type=\"number\" min=\"0\" max=\"100\" [(ngModel)]=\"alphaInput\" (input)=\"onAlphaInput(alphaInput)\" />\n <span class=\"fwe-percent-char\">%</span>\n </span>\n </label>\n </div>\n </div>\n\n <div class=\"fwe-mt-xs fwe-color-grid\" *ngIf=\"palette && palette.length\">\n <div class=\"fwe-remove-color-button\" (click)=\"onRemoveColor()\">\n <svg\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <i class=\"fwe-icon fwe-icon-menu-check\" [class.fwe-color-text]=\"!color\"></i>\n </div>\n <ng-container *ngFor=\"let colorItem of palette\">\n <div\n class=\"fwe-color-item\"\n [class.fwe-white-item]=\"colorItem.toUpperCase() === '#FFFFFF'\"\n [style.background]=\"colorItem\"\n (click)=\"color = colorItem\"\n >\n <i class=\"fwe-icon fwe-icon-menu-check\" *ngIf=\"colorItem.toUpperCase() === color\"></i>\n </div>\n </ng-container>\n </div>\n</div>\n","import { OnDestroy, Component, forwardRef, ViewEncapsulation, Input, ElementRef, AfterViewInit, HostListener } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subscription, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n selector: 'fng-slider',\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class SliderComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() label: string;\n @Input() large = false;\n\n @Input()\n min = 0;\n\n @Input()\n max = 100;\n\n @Input()\n step: number;\n\n @Input()\n digitsInfo: string;\n\n @Input()\n locale: string;\n\n left: number;\n\n protected innerDisabled = false;\n get disabled(): boolean {\n return this.innerDisabled;\n }\n @Input()\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n protected innerValue: number;\n get value(): number {\n return this.innerValue;\n }\n\n @Input()\n set value(value: number) {\n this.innerValue = coerceNumberProperty(value);\n if (this.onChange != null) {\n this.onChange(value);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.updateValuePosition();\n }\n\n private resizeSub: Subscription;\n private resizeSubject = new Subject<boolean>();\n\n constructor(private elementRef: ElementRef) {}\n\n onChange: (value: number) => void;\n\n onTouched: () => void;\n\n @HostListener('window:resize') onResize() {\n this.resizeSubject.next(true);\n }\n\n ngAfterViewInit() {\n this.resizeSub = this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition());\n }\n\n ngOnDestroy() {\n if (this.resizeSub != null) {\n this.resizeSub.unsubscribe();\n }\n }\n\n writeValue(value: any): void {\n this.innerValue = coerceNumberProperty(value);\n this.updateValuePosition();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n onInput(event: any) {\n this.value = coerceNumberProperty((event.target as HTMLInputElement).value);\n }\n\n updateValuePosition() {\n if (this.elementRef != null && this.elementRef.nativeElement != null) {\n const bcr = (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\n const diff = this.max - this.min;\n this.left = ((this.value - this.min) / diff) * (bcr.width - 16);\n }\n }\n}\n","<label class=\"fwe-slider\" [class.fwe-slider-lg]=\"large\" [class.fng-slider-label]=\"label != null\">\n <span *ngIf=\"label\">{{ label }}</span>\n <input\n type=\"range\"\n class=\"fwe-slider-input\"\n [disabled]=\"disabled\"\n [attr.min]=\"min\"\n [attr.max]=\"max\"\n [attr.step]=\"step\"\n autocomplete=\"off\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n />\n <span *ngIf=\"left != null\" class=\"fng-slider-value\" [style.left]=\"left + 'px'\">{{ value | number: digitsInfo:locale }}</span>\n</label>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { Component, Input } from '@angular/core';\n\n/**\n * A control to display a color.\n */\n@Component({\n selector: 'fng-color-indicator',\n templateUrl: './color-indicator.component.html',\n styleUrls: ['./color-indicator.component.scss']\n})\nexport class ColorIndicatorComponent {\n /**\n * The label above the color.\n */\n @Input() label: string;\n\n /**\n * A text next to the color.\n */\n @Input() text: string;\n\n /**\n * The current color as a string.\n * Examples: '#ffffff', 'red', 'rgba(1,2,3,0.5)'\n */\n @Input() color: string;\n\n /**\n * enable an overlay to edit the color.\n * The editor must be passed as the content of the indicator.\n */\n @Input() showPopOver: boolean;\n\n @Input() disabled: boolean;\n\n public isEditorOpen = false;\n\n public positions = [\n new ConnectionPositionPair(\n {\n originX: 'center',\n originY: 'top'\n },\n {\n overlayX: 'center',\n overlayY: 'bottom'\n },\n 0,\n -20,\n ['fng-color-indicator-top']\n ),\n new ConnectionPositionPair(\n {\n originX: 'center',\n originY: 'bottom'\n },\n {\n overlayX: 'center',\n overlayY: 'top'\n },\n 0,\n 20,\n ['fng-color-indicator-bottom']\n ),\n new ConnectionPositionPair(\n {\n originX: 'start',\n originY: 'center'\n },\n {\n overlayX: 'end',\n overlayY: 'center'\n },\n -20,\n 0,\n ['fng-color-indicator-left']\n ),\n new ConnectionPositionPair(\n {\n originX: 'end',\n originY: 'center'\n },\n {\n overlayX: 'start',\n overlayY: 'center'\n },\n 20,\n 0,\n ['fng-color-indicator-right']\n )\n ];\n\n getBorderColor(): string {\n if (!this.color || this.color.toUpperCase() === '#FFFFFF' || this.color.toUpperCase() === '#F2F3F5') {\n return '#b6bec6'; // = $control-border\n } else {\n return this.color;\n }\n }\n}\n","<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.disabled]=\"disabled\">\n <div class=\"fwe-color-label\" [style.opacity]=\"isEditorOpen ? 0 : 1\">\n {{ label }}\n </div>\n <div class=\"fwe-color-container\">\n <div\n class=\"fwe-color-box\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [style.background]=\"color\"\n [style.border-color]=\"getBorderColor()\"\n >\n <svg\n *ngIf=\"!color\"\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n </div>\n <div class=\"fwe-color-indicator-text\" *ngIf=\"text\">\n {{ text }}\n </div>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isEditorOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n [cdkConnectedOverlayViewportMargin]=\"32\"\n (backdropClick)=\"isEditorOpen = false\"\n >\n <div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\" #popoverContent>\n <div class=\"fwe-color-label fwe-mb-s\">\n {{ label }}\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n</div>\n","import { ControlValueAccessor } from '@angular/forms';\nimport { Input, Directive } from '@angular/core';\n\n@Directive()\nexport class ValueAccessorBaseDirective<T> implements ControlValueAccessor {\n @Input() disabled = false;\n\n protected innerValue: T;\n\n protected changed = new Array<(value: T) => void>();\n protected touched = new Array<() => void>();\n\n get value(): T {\n return this.innerValue;\n }\n\n set value(value: T) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => f(value));\n }\n }\n\n touch() {\n this.touched.forEach(f => f());\n }\n\n writeValue(value: T) {\n this.innerValue = value;\n }\n\n registerOnChange(fn: (value: T) => void) {\n this.changed.push(fn);\n }\n\n registerOnTouched(fn: () => void) {\n this.touched.push(fn);\n }\n\n setDisabledState?(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n SimpleChanges,\n OnChanges,\n ViewChild,\n TemplateRef,\n AfterViewInit,\n ViewRef,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fng-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: ['./segment-control.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class SegmentControlComponent implements OnInit, OnChanges, AfterViewInit {\n id: string;\n view: ViewRef;\n viewMode: 'text' | 'icon' | 'icon-text';\n\n @Input() name: string;\n @Input() value: any;\n @Input() label: string;\n @Input() icon: string;\n @Input() iconOnly: boolean;\n @Input() checked: boolean;\n @Input() disabled: boolean;\n @Output() change: EventEmitter<any> = new EventEmitter();\n\n @ViewChild('tpl') tpl: TemplateRef<any>;\n\n ngOnInit(): void {\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\n this.viewMode = 'text';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (null != changes.icon && null != changes.icon.currentValue) {\n const prefix = 'fwe-icon-';\n let icon: string = changes.icon.currentValue;\n if (icon.indexOf(prefix) === -1) {\n icon = `${prefix}${icon}`;\n }\n this.icon = icon;\n }\n\n if (null != changes.iconOnly && null != changes.iconOnly.currentValue) {\n this.viewMode = changes.iconOnly.currentValue === true ? 'icon' : 'icon-text';\n }\n }\n\n ngAfterViewInit(): void {\n this.view = this.tpl.createEmbeddedView(null);\n }\n\n onChange(event: { target: HTMLInputElement }) {\n this.change.emit(event.target.value);\n }\n}\n","<ng-template #tpl>\n <input\n (change)=\"onChange($event)\"\n class=\"fwe-segment-input\"\n type=\"radio\"\n [id]=\"id\"\n [name]=\"name\"\n [value]=\"value\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n />\n <label class=\"fwe-segment-label\" [for]=\"id\">\n <ng-container [ngSwitch]=\"viewMode\">\n <ng-container *ngSwitchCase=\"'icon'\">\n <span class=\"fwe-sr-only\">{{ label }}</span>\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'text'\">\n {{ label }}\n </ng-container>\n <ng-container *ngSwitchCase=\"'icon-text'\"> <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>{{ label }} </ng-container>\n </ng-container>\n </label>\n</ng-template>\n","import {\n Component,\n ContentChildren,\n Input,\n AfterContentInit,\n SimpleChanges,\n OnChanges,\n AfterViewInit,\n ViewChild,\n ViewContainerRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n Output,\n EventEmitter,\n OnDestroy,\n forwardRef,\n ViewEncapsulation,\n SimpleChange\n} from '@angular/core';\nimport type { QueryList } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ValueAccessorBaseDirective } from '../value-accessor-base';\nimport { SegmentControlComponent } from './segment-control/segment-control.component';\n\nexport interface SegmentComponentConfiguration {\n outline: boolean;\n iconOnly: boolean;\n}\n\n@Component({\n selector: 'fng-segment',\n templateUrl: './segment.component.html',\n styleUrls: ['./segment.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentComponent),\n multi: true\n }\n ]\n})\nexport class SegmentComponent extends ValueAccessorBaseDirective<any> implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n private complete: Subject<boolean> = new Subject();\n\n defaultConfig: SegmentComponentConfiguration = {\n outline: true,\n iconOnly: true\n };\n useIcon = false;\n useIconAndText = false;\n\n @Input() legend = '';\n @Input() config: SegmentComponentConfiguration = this.defaultConfig;\n @ContentChildren(SegmentControlComponent, { descendants: true }) controls: QueryList<SegmentControlComponent>;\n @ViewChild('vc', { read: ViewContainerRef }) vc: ViewContainerRef;\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @Input()\n set value(value: string) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => {\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n return f(value);\n });\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (null != changes.config && null != changes.config.currentValue) {\n this.config = Object.assign({}, this.defaultConfig, changes.config.currentValue);\n }\n }\n\n ngAfterContentInit(): void {\n if (this.controls.length > 0) {\n this.controls.forEach(component => {\n component.change.pipe(takeUntil(this.complete)).subscribe(val => {\n this.value = val;\n });\n\n if (component.icon != null && this.config.iconOnly === true) {\n this.useIcon = true;\n component.ngOnChanges({\n iconOnly: new SimpleChange(null, true, false)\n });\n }\n\n if (component.icon != null && this.config.iconOnly !== true) {\n this.useIconAndText = true;\n component.ngOnChanges({\n iconOnly: new SimpleChange(null, false, false)\n });\n }\n });\n }\n }\n\n ngAfterViewInit(): void {\n this.html();\n this.cd.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n private html() {\n this.controls.forEach(component => {\n this.vc.insert(component.view);\n });\n }\n}\n","<fieldset\n class=\"fwe-segment\"\n [ngClass]=\"{\n 'fwe-segment-outline': config.outline,\n 'fwe-segment-icon': useIcon,\n 'fwe-segment-icon-text': useIconAndText\n }\"\n>\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\n <div class=\"fwe-segment-group\">\n <ng-container #vc></ng-container>\n </div>\n</fieldset>\n","import { ElementRef, Input, Output, EventEmitter, Component, ViewChild, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport flatpickr from 'flatpickr';\n\nexport interface FlatPickerOptions {\n maxDate?: Date;\n minDate?: Date;\n mode?: 'single' | 'range';\n}\n\n@Component({\n selector: 'fng-flatpickr',\n templateUrl: './flatpickr.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class FlatpickrComponent implements OnInit, OnDestroy {\n @Input() date: Date | Date[];\n @Input() options: FlatPickerOptions;\n @Output() dateChange = new EventEmitter<Date | Date[]>();\n\n @ViewChild('datePicker', { static: true }) datePickerRef: ElementRef;\n\n private datePicker: flatpickr.Instance;\n\n ngOnInit() {\n const options: FlatPickerOptions =\n this.options != null\n ? {\n minDate: this.options.minDate || null,\n maxDate: this.options.maxDate || null,\n mode: this.options.mode || 'single'\n }\n : {\n minDate: null,\n maxDate: null,\n mode: 'single'\n };\n this.datePicker = flatpickr(this.datePickerRef.nativeElement, {\n inline: true,\n defaultDate: this.date,\n onChange: c => this.onDateChange(c),\n maxDate: options.maxDate,\n minDate: options.minDate,\n mode: options.mode\n }) as flatpickr.Instance;\n }\n\n ngOnDestroy() {\n if (this.datePicker != null) {\n this.datePicker.destroy();\n }\n }\n\n onDateChange(dateOption: Date | Date[]) {\n const mode = this.options != null && this.options.mode === 'range' ? 'range' : 'single';\n if (mode === 'range' && Array.isArray(dateOption) && dateOption.length === 2) {\n this.dateChange.emit(dateOption);\n }\n if (mode === 'single' && Array.isArray(dateOption) && dateOption.length === 1) {\n this.dateChange.emit(dateOption[0]);\n }\n }\n}\n","<div class=\"fng-flatpickr\">\n <div #datePicker></div>\n</div>\n","import {\n Component,\n ViewEncapsulation,\n forwardRef,\n Input,\n ElementRef,\n ViewChild,\n ComponentRef,\n HostListener,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { FlatpickrComponent } from '../../wrappers/flatpickr/flatpickr.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { formatDate } from '@angular/common';\nimport { LOCALE_ID, Inject } from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface DatePickerOptions {\n maxDate?: Date;\n minDate?: Date;\n keepOpenOnDateChange?: boolean;\n}\n\n@Component({\n selector: 'fng-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrls: ['./date-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n get value(): Date {\n return this.innerValue;\n }\n @Input()\n set value(date: Date) {\n if (!this.disabled) {\n this.innerValue = date;\n if (this.onChange != null) {\n this.onChange(date);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n @Input() hint: string;\n @Input() error: string;\n @Input() options: DatePickerOptions;\n\n /** A locale code for the locale format rules to use. */\n @Input() locale: string;\n\n /* The date-time components to include. See `DatePipe` for details. */\n @Input() format: string;\n\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\n @Input() timezone: string;\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n get displayValue(): string {\n if (!this.value) {\n return null;\n }\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(this.value, format, locale, timezone);\n }\n\n datePickerRef: OverlayRef;\n private innerValue: Date;\n private complete = new Subject<boolean>();\n private datePicker: ComponentRef<FlatpickrComponent>;\n\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string) {}\n\n onTouched: () => any;\n onChange: (date: Date) => any;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n this.dispose();\n }\n }\n\n onDateChange(date: Date) {\n this.value = date;\n }\n\n writeValue(date: Date): void {\n this.innerValue = date;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n if (this.datePickerRef == null) {\n this.datePickerRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const datePickerPortal = new ComponentPortal(FlatpickrComponent);\n this.datePicker = this.datePickerRef.attach(datePickerPortal);\n this.datePicker.instance.options = this.options;\n this.datePicker.instance.date = this.value;\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date) => {\n this.onDateChange(c);\n if (this.options == null || !this.options.keepOpenOnDateChange) {\n this.dispose();\n }\n });\n this.datePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n this.datePicker.instance.ngOnInit();\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.datePickerRef != null) {\n this.datePickerRef.detach();\n this.datePickerRef.dispose();\n this.datePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<label #connector class=\"fng-date-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i\n class=\"fwe-icon fwe-icon-time-calendar\"\n [class.fwe-color-hero]=\"datePickerRef != null\"\n [class.fwe-color-control-disabled]=\"disabled\"\n ></i>\n <input\n aria-label=\"picked date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"datePickerRef != null\"\n [value]=\"displayValue\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n","import {\n Component,\n ViewEncapsulation,\n forwardRef,\n Input,\n ElementRef,\n ViewChild,\n ComponentRef,\n HostListener,\n Output,\n EventEmitter,\n HostBinding\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { FlatpickrComponent } from '../../wrappers/flatpickr/flatpickr.component';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LOCALE_ID, Inject } from '@angular/core';\nimport { formatDate } from '@angular/common';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport interface DateRangePickerOptions {\n maxDate?: Date;\n minDate?: Date;\n keepOpenOnDateChange?: boolean;\n}\n\n@Component({\n selector: 'fng-date-range-picker',\n templateUrl: './date-range-picker.component.html',\n styleUrls: ['./date-range-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n get value(): Date[] {\n return this.innerValue;\n }\n @Input()\n set value(dateRange: Date[]) {\n if (!this.disabled) {\n this.innerValue = dateRange;\n if (this.onChange != null) {\n this.onChange(dateRange);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n protected innerDisabled = false;\n\n @Input() hint: string;\n @Input() error: string;\n\n /** A locale code for the locale format rules to use. */\n @Input() locale: string;\n\n /* The date-time components to include. See `DatePipe` for details. */\n @Input() format: string;\n\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\n @Input() timezone: string;\n\n @Input() options: DateRangePickerOptions;\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n get fromDateDisplayValue(): string {\n const v = this.value;\n if (!v || v.length !== 2) {\n return null;\n }\n const from = this.value[0];\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(from, format, locale, timezone);\n }\n\n get toDateDisplayValue(): string {\n const v = this.value;\n if (!v || v.length !== 2) {\n return null;\n }\n const to = this.value[1];\n const format = this.format || 'mediumDate';\n const locale = this.locale || this.localeDefault;\n const timezone = this.timezone;\n return formatDate(to, format, locale, timezone);\n }\n\n dateRangePickerRef: OverlayRef;\n\n private innerValue: Date[];\n private complete = new Subject<boolean>();\n private datePicker: ComponentRef<FlatpickrComponent>;\n\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string) {}\n\n onTouched: () => any;\n onChange: (dateRange: Date[]) => any;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Tab') {\n this.dispose();\n }\n }\n\n onDateChange(dateRange: Date[]) {\n this.value = dateRange;\n }\n\n writeValue(dateRange: Date[]): void {\n this.innerValue = dateRange;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.disabled) {\n if (this.dateRangePickerRef == null) {\n this.dateRangePickerRef = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4,\n offsetX: -10,\n panelClass: ['flatpickr-calendar', 'open']\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const datePickerPortal = new ComponentPortal(FlatpickrComponent);\n this.datePicker = this.dateRangePickerRef.attach(datePickerPortal);\n this.datePicker.instance.options = {\n mode: 'range',\n minDate: this.options != null && this.options.minDate != null ? this.options.minDate : null,\n maxDate: this.options != null && this.options.maxDate != null ? this.options.maxDate : null\n };\n this.datePicker.instance.date = this.value;\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date[]) => {\n this.onDateChange(c);\n if (this.options == null || !this.options.keepOpenOnDateChange) {\n this.dispose();\n }\n });\n this.dateRangePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n this.datePicker.instance.ngOnInit();\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.dateRangePickerRef != null) {\n this.dateRangePickerRef.detach();\n this.dateRangePickerRef.dispose();\n this.dateRangePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<div #connector class=\"fng-date-range-picker\" (click)=\"toggle($event)\">\n <label class=\"fwe-input-text fwe-input-text-icon\">\n <i\n class=\"fwe-icon fwe-icon-time-calendar\"\n [class.fwe-color-hero]=\"dateRangePickerRef != null\"\n [class.fwe-color-control-disabled]=\"disabled\"\n ></i>\n <div class=\"fng-date-range-picker-inputs\" [class.fng-date-range-picker-inputs--disabled]=\"disabled\">\n <input\n aria-label=\"picked start date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"dateRangePickerRef != null\"\n [value]=\"fromDateDisplayValue\"\n [disabled]=\"disabled\"\n />\n <input\n aria-label=\"picked end date\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"dateRangePickerRef != null\"\n [value]=\"toDateDisplayValue\"\n [disabled]=\"disabled\"\n />\n </div>\n <span class=\"fwe-input-text-label\" [class.fwe-color-text-disabled]=\"disabled\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n </label>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\n@Component({\n selector: 'fng-time-picker-dropdown',\n templateUrl: './time-picker-dropdown.component.html',\n styleUrls: ['./time-picker-dropdown.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TimePickerDropdownComponent implements AfterViewInit {\n @Input() date: Date;\n @Input() showSeconds = false;\n @Input() timeFormat: '12' | '24' = '24';\n @Output() dateChange = new EventEmitter<{ date: Date; close: boolean }>();\n\n @ViewChild('hoursInput') hoursInput: ElementRef;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape' || event.key === 'Enter') {\n this.onDateChange(true, event.key === 'Escape');\n }\n }\n\n ngAfterViewInit() {\n if (this.hoursInput != null && this.hoursInput.nativeElement != null) {\n (this.hoursInput.nativeElement as HTMLElement).focus();\n }\n }\n\n onHourUp() {\n this.date?.setHours(this.date.getHours() + 1);\n this.onDateChange(false, false);\n }\n\n onHourDown() {\n this.date?.setHours(this.date.getHours() - 1);\n this.onDateChange(false, false);\n }\n\n onMinuteUp() {\n this.date?.setMinutes(this.date.getMinutes() + 1);\n this.onDateChange(false, false);\n }\n\n onMinuteDown() {\n this.date?.setMinutes(this.date.getMinutes() - 1);\n this.onDateChange(false, false);\n }\n\n onSecondUp() {\n this.date?.setSeconds(this.date.getSeconds() + 1);\n this.onDateChange(false, false);\n }\n\n onSecondDown() {\n this.date?.setSeconds(this.date.getSeconds() - 1);\n this.onDateChange(false, false);\n }\n\n onHourChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const hour = +(event.target as HTMLInputElement).value;\n this.date?.setHours(hour > max ? max : hour < min ? min : hour);\n }\n\n onMinuteChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const minute = +(event.target as HTMLInputElement).value;\n this.date?.setMinutes(minute > max ? max : minute < min ? min : minute);\n }\n\n onSecondChange(event: KeyboardEvent) {\n const max = +(event.target as HTMLInputElement).max;\n const min = +(event.target as HTMLInputElement).min;\n const seconds = +(event.target as HTMLInputElement).value;\n this.date?.setSeconds(seconds > max ? max : seconds < min ? min : seconds);\n }\n\n onDateChange(close: boolean, reset: boolean) {\n if (this.date != null) {\n this.date = new Date(this.date);\n this.dateChange.emit({ date: !reset ? new Date(this.date) : null, close });\n }\n }\n}\n","<div class=\"fwe-timepicker\" [class.fwe-timepicker-am-pm]=\"timeFormat === '12'\">\n <div class=\"fwe-timepicker-spinners\">\n <div class=\"fwe-timepicker-spinners-hours\">\n <button type=\"button\" aria-label=\"hour up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onHourUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n #hoursInput\n aria-label=\"hours value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n tabindex=\"1\"\n step=\"1\"\n [value]=\"date | date: (timeFormat === '12' ? 'hh' : 'HH')\"\n [attr.max]=\"timeFormat === '12' ? 12 : 23\"\n (input)=\"onHourChange($event)\"\n />\n <button type=\"button\" aria-label=\"hour down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onHourDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n <div class=\"fwe-timepicker-spinners-minutes\">\n <button type=\"button\" aria-label=\"minute up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onMinuteUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n aria-label=\"minutes value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n step=\"1\"\n tabindex=\"2\"\n [value]=\"date | date: 'mm'\"\n (input)=\"onMinuteChange($event)\"\n />\n <button type=\"button\" aria-label=\"minute down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onMinuteDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n <div *ngIf=\"showSeconds\" class=\"fwe-timepicker-spinners-seconds\">\n <button type=\"button\" aria-label=\"seconds up\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onSecondUp()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-expand\"></i>\n </button>\n <input\n aria-label=\"seconds value\"\n class=\"fwe-timepicker-hide-spinners\"\n type=\"number\"\n min=\"0\"\n max=\"59\"\n step=\"1\"\n tabindex=\"3\"\n [value]=\"date | date: 'ss'\"\n (input)=\"onSecondChange($event)\"\n />\n <button type=\"button\" aria-label=\"seconds down\" class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onSecondDown()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </button>\n </div>\n </div>\n <span *ngIf=\"timeFormat === '12'\" class=\"fwe-badge fwe-badge-control\">\n {{ date | date: 'a' }}\n </span>\n</div>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n ElementRef,\n forwardRef,\n HostBinding,\n HostListener,\n Input,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TimePickerDropdownComponent } from './time-picker-dropdown/time-picker-dropdown.component';\n\nexport interface TimePickerOptions {\n timeFormat?: '12' | '24';\n showSeconds?: boolean;\n}\n\n@Component({\n selector: 'fng-time-picker',\n templateUrl: './time-picker.component.html',\n styleUrls: ['./time-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TimePickerComponent implements ControlValueAccessor {\n get value(): Date {\n return this.innerValue;\n }\n @Input()\n set value(date: Date) {\n if (!this.disabled) {\n this.innerValue = date;\n if (this.onChange != null) {\n this.onChange(date);\n }\n if (this.onTouched != null) {\n this.onTouched();\n }\n }\n }\n\n @Input()\n get disabled(): boolean {\n return this.innerDisabled;\n }\n set disabled(value: boolean) {\n this.innerDisabled = coerceBooleanProperty(value);\n }\n\n @Input()\n get required(): boolean {\n return this.innerRequired;\n }\n set required(value: boolean) {\n this.innerRequired = coerceBooleanProperty(value);\n }\n protected innerRequired = false;\n\n @Input() hint: string;\n @Input() error: string;\n @Input() options: TimePickerOptions;\n\n @Input()\n @HostBinding('style.width')\n width: string;\n @HostBinding('style.display') display: string = 'block';\n\n @ViewChild('connector', { static: true }) connector: ElementRef;\n\n get timeFormat(): string {\n let timeFormat = 'H:mm';\n if (this.options != null) {\n if (this.options.showSeconds) {\n timeFormat += ':ss';\n }\n if (this.options.timeFormat === '12') {\n timeFormat = timeFormat.toLowerCase() + ' a';\n }\n }\n return timeFormat;\n }\n\n timePickerRef: OverlayRef;\n\n protected innerValue: Date;\n protected innerDisabled = false;\n\n private complete = new Subject<boolean>();\n private timePicker: ComponentRef<TimePickerDropdownComponent>;\n\n constructor(private overlay: Overlay) {}\n\n onTouched: () => void;\n onChange: (date: Date) => void;\n\n @HostListener('document:keydown', ['$event'])\n hide(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.dispose();\n }\n }\n\n writeValue(date: Date): void {\n this.innerValue = date;\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n toggle(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n if (this.timePickerRef == null && this.connector != null && this.connector.nativeElement != null) {\n const labelWidth = (this.connector.nativeElement as HTMLElement).clientWidth;\n this.timePickerRef = this.overlay.create({\n width: `${labelWidth}px`,\n panelClass: 'fng-first-child-fullwidth',\n hasBackdrop: true,\n backdropClass: 'fng-date-picker-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.connector.nativeElement)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: -12\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: 4\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(false)\n });\n const timePickerPortal = new ComponentPortal(TimePickerDropdownComponent);\n this.timePicker = this.timePickerRef.attach(timePickerPortal);\n this.timePicker.instance.timeFormat = this.options != null && this.options.timeFormat != null ? this.options.timeFormat : '24';\n this.timePicker.instance.showSeconds = this.options != null && this.options.showSeconds != null ? this.options.showSeconds : false;\n this.timePicker.instance.date = new Date(this.value);\n this.timePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe(ev => {\n if (ev.date != null) {\n this.value = ev.date;\n }\n if (ev.close) {\n this.dispose();\n }\n });\n this.timePickerRef\n .backdropClick()\n .pipe(takeUntil(this.complete))\n .subscribe(() => this.dispose());\n } else {\n this.dispose();\n }\n }\n }\n\n private dispose() {\n if (this.timePickerRef != null) {\n this.timePickerRef.detach();\n this.timePickerRef.dispose();\n this.timePickerRef = null;\n }\n if (this.complete != null) {\n this.complete.next(true);\n this.complete.complete();\n }\n }\n}\n","<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fwe-icon fwe-icon-time-time\" [class.fwe-color-hero]=\"timePickerRef != null\" [class.fwe-color-control-disabled]=\"disabled\"></i>\n <input\n aria-label=\"picked time\"\n type=\"text\"\n readonly\n [required]=\"required === true || null\"\n [class.fwe-border-hero]=\"timePickerRef != null\"\n [value]=\"value | date: timeFormat\"\n [disabled]=\"disabled\"\n />\n <span class=\"fwe-input-text-label\"><ng-content></ng-content></span>\n <span *ngIf=\"hint\" class=\"fwe-input-text-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fwe-input-text-invalid\">{{ error }}</span>\n</label>\n","import {\n Component,\n ViewEncapsulation,\n Input,\n AfterViewInit,\n SecurityContext,\n ElementRef,\n Renderer2,\n EventEmitter,\n Output,\n forwardRef,\n OnChanges,\n ViewChild,\n SimpleChanges,\n OnInit\n} from '@angular/core';\nimport QuillType from 'quill';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { ValueAccessorBaseDirective } from '../value-accessor-base';\n\nexport interface TextEditorConfiguration {\n toolbar?: {\n bold?: boolean;\n italic?: boolean;\n underline?: boolean;\n alignCenter?: boolean;\n alignRight?: boolean;\n bulletList?: boolean;\n orderedList?: boolean;\n image?: boolean;\n link?: boolean;\n };\n}\n\n@Component({\n selector: 'fng-text-editor',\n templateUrl: './text-editor.component.html',\n styleUrls: ['./text-editor.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextEditorComponent),\n multi: true\n }\n ]\n})\nexport class TextEditorComponent extends ValueAccessorBaseDirective<string> implements OnInit, AfterViewInit, OnChanges {\n id: string;\n quillEditor!: QuillType;\n editorElem!: HTMLElement;\n defaultConfig: TextEditorConfiguration = {\n toolbar: {\n bold: true,\n italic: true,\n underline: true,\n alignCenter: true,\n alignRight: true,\n bulletList: true,\n orderedList: true,\n image: true,\n link: true\n }\n };\n\n @ViewChild('btnBold') btnBold: ElementRef;\n @ViewChild('btnItalic') btnItalic: ElementRef;\n @ViewChild('btnUnderline') btnUnderline: ElementRef;\n @ViewChild('btnAlignCenter') btnAlignCenter: ElementRef;\n @ViewChild('btnAlignRight') btnAlignRight: ElementRef;\n @ViewChild('btnLink') btnLink: ElementRef;\n @ViewChild('btnUl') btnUl: ElementRef;\n @ViewChild('btnOl') btnOl: ElementRef;\n @ViewChild('btnImage') btnImage: ElementRef;\n\n @Output() fngChange = new EventEmitter<any>();\n @Output() change = new EventEmitter<any>();\n\n @Input() config: TextEditorConfiguration = this.defaultConfig;\n @Input() modules: any;\n @Input() label: string;\n @Input() readOnly: boolean;\n @Input() maxLength: number;\n @Input() error: string;\n @Input() hint: string;\n @Input()\n set value(value: string) {\n if (this.innerValue !== value) {\n this.innerValue = value;\n this.changed.forEach(f => {\n this.fngChange.emit(this.innerValue);\n this.change.emit(this.innerValue);\n return f(value);\n });\n }\n }\n\n get value() {\n return this.innerValue;\n }\n\n // needed to access editor content\n valueGetter = (editorElement: HTMLElement): string | any => {\n let html: string | null = editorElement.querySelector('.ql-editor').innerHTML;\n if (html === '<p><br></p>' || html === '<div><br></div>') {\n html = null;\n }\n return html;\n };\n\n // needed to access editor content\n valueSetter = (quillEditor: QuillType, value: any): any => {\n value = this.domSanitizer.sanitize(SecurityContext.HTML, value);\n value = this.handleWhitespace(value);\n return quillEditor.clipboard.convert(value);\n };\n\n constructor(public elementRef: ElementRef, private renderer: Renderer2, private domSanitizer: DomSanitizer) {\n super();\n }\n\n ngOnInit(): void {\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\n }\n\n ngAfterViewInit(): void {\n this.editorElem = this.elementRef.nativeElement.querySelector(`#editor-${this.id}`);\n\n this.quillEditor = new QuillType(this.editorElem, {\n modules: { toolbar: `#editor-toolbar-${this.id}`, ...this.modules },\n theme: 'snow',\n scrollingContainer: `#editor-container-${this.id}`\n });\n this.setEditorLabel();\n this.addWhitespaceMatcher();\n this.addImageMatcher();\n\n if (this.innerValue) {\n const content = this.valueSetter(this.quillEditor, this.innerValue);\n this.quillEditor.setContents(content, 'silent');\n this.quillEditor.getModule('history').clear();\n }\n\n this.handle();\n\n this.quillEditor.on('text-change', () => {\n this.value = this.valueGetter(this.editorElem);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes?.config?.currentValue != null) {\n this.config = { toolbar: { ...this.defaultConfig.toolbar, ...changes.config.currentValue?.toolbar } };\n }\n\n if (!this.quillEditor) {\n return;\n }\n\n this.handle();\n }\n\n writeValue(value: string) {\n if (value === null || value === '') {\n return;\n }\n\n this.innerValue = value;\n\n if (!this.quillEditor) {\n return;\n }\n\n const content = this.valueSetter(this.quillEditor, value);\n this.quillEditor.setContents(content);\n }\n\n setDisabledState(isDisabled: boolean = this.disabled): void {\n this.disabled = isDisabled;\n if (this.quillEditor) {\n if (isDisabled) {\n this.quillEditor.disable();\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled');\n } else {\n if (!this.readOnly) {\n this.quillEditor.enable();\n }\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\n }\n }\n }\n\n setReadOnlyState() {\n this.quillEditor.enable(!this.readOnly);\n }\n\n delegate(event: any, action: string) {\n let btn: HTMLElement = null;\n switch (action) {\n case 'bold':\n btn = this.btnBold.nativeElement;\n btn.click();\n break;\n case 'italic':\n btn = this.btnItalic.nativeElement;\n btn.click();\n break;\n case 'underline':\n btn = this.btnUnderline.nativeElement;\n btn.click();\n break;\n case 'align-center':\n btn = this.btnAlignCenter.nativeElement;\n btn.click();\n break;\n case 'align-right':\n btn = this.btnAlignRight.nativeElement;\n btn.click();\n break;\n case 'link':\n btn = this.btnLink.nativeElement;\n btn.click();\n break;\n case 'ul':\n btn = this.btnUl.nativeElement;\n btn.click();\n break;\n case 'ol':\n btn = this.btnOl.nativeElement;\n btn.click();\n break;\n case 'image':\n btn = this.btnImage.nativeElement;\n btn.click();\n break;\n default:\n break;\n }\n }\n\n currentLength(): number {\n return this.value?.length;\n }\n\n hideDivider(name: string) {\n const linkOrImage = this.config.toolbar.image || this.config.toolbar.link;\n const lists = this.config.toolbar.bulletList || this.config.toolbar.orderedList;\n const typos = this.config.toolbar.bold || this.config.toolbar.italic || this.config.toolbar.underline;\n const textAlign = this.config.toolbar.alignCenter || this.config.toolbar.alignRight;\n switch (name) {\n case 'typo':\n return !typos || (!textAlign && !linkOrImage && !lists);\n case 'text-align':\n return !textAlign || (!linkOrImage && !lists);\n case 'lists':\n return !lists || !linkOrImage;\n case 'image':\n return !this.config.toolbar.image || !this.config.toolbar.link;\n default:\n break;\n }\n }\n\n private setEditorLabel() {\n const editorDiv = this.elementRef.nativeElement.querySelector('.ql-editor');\n this.renderer.setAttribute(editorDiv, 'role', 'textbox');\n this.renderer.setAttribute(editorDiv, 'aria-labelledby', `editor-label-${this.id}`);\n this.renderer.setAttribute(editorDiv, 'aria-multiline', 'true');\n }\n\n private handle() {\n this.setReadOnlyState();\n this.setDisabledState();\n }\n\n private addWhitespaceMatcher() {\n // set up a matcher that replaces placeholder ###tab### with \\t in delta again\n this.quillEditor.clipboard.addMatcher('p', (_node, delta) => {\n let str = JSON.stringify(delta);\n str = str.replace(/###tab###/g, '\\\\t');\n delta = JSON.parse(str);\n return delta;\n });\n }\n\n private addImageMatcher() {\n // set up a matcher that does allow/disallow to paste images corresponding to config settings\n this.quillEditor.clipboard.addMatcher('img', (_node, delta) => {\n // allowed, passthru delta\n if (this.config.toolbar.image === true) {\n return delta;\n }\n\n // not allowed, remove image by setting up a new delta\n const Delta = QuillType.import('quill-delta');\n return new Delta().insert('');\n });\n }\n\n private handleWhitespace(value: string): string {\n // set a placeholder for tab entity to avoid that quill removes it\n return value.replace(/&#9;/gi, '###tab###');\n }\n}\n","<label class=\"fwe-input-text\" [class.fwe-disabled]=\"disabled\">\n <div class=\"fng-editor-toolbar\" [id]=\"'editor-toolbar-' + id\">\n <span class=\"ql-formats fwe-d-none\">\n <select class=\"ql-size\" aria-hidden=\"true\">\n <option value=\"small\"></option>\n <option selected></option>\n <option value=\"large\"></option>\n <option value=\"huge\"></option>\n </select>\n </span>\n <span class=\"ql-formats fng-editor-toolbar-buttons-container fwe-mr-3\">\n <ng-container *ngIf=\"config?.toolbar?.bold\">\n <button type=\"button\" #btnBold class=\"ql-bold fwe-d-none action-bold\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline || config?.toolbar?.italic\"\n (click)=\"delegate($event, 'bold')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-bold\">B</div>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.italic\">\n <button type=\"button\" #btnItalic class=\"ql-italic fwe-d-none action-italic\" aria-hidden=\"true\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.underline\"\n (click)=\"delegate($event, 'italic')\"\n [disabled]=\"disabled\"\n >\n <div class=\"fng-button-text fng-text-italic\">I</div>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.underline\">\n <button type=\"button\" #btnUnderline class=\"ql-underline fwe-d-none action-underline\" aria-hidden=\"true\"></button>\n <button type=\"button\" class=\"fwe-btn fng-button\" (click)=\"delegate($event, 'underline')\" [disabled]=\"disabled\">\n <div class=\"fng-button-text fng-text-underline\">U</div>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('typo')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.alignCenter\">\n <button type=\"button\" #btnAlignCenter class=\"ql-align fwe-d-none action-align-center\" aria-hidden=\"true\" value=\"center\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.alignRight\"\n (click)=\"delegate($event, 'align-center')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fng-icon-text-align-center fwe-pr-0\" [class.fng-gray]=\"disabled\"></i>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"config?.toolbar?.alignRight\">\n <button type=\"button\" #btnAlignRight class=\"ql-align fwe-d-none action-align-right\" aria-hidden=\"true\" value=\"right\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n (click)=\"delegate($event, 'align-right')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fng-icon-text-align-right fwe-pr-0\" [class.fng-gray]=\"disabled\"></i>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('text-align')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.bulletList\">\n <button type=\"button\" #btnUl class=\"ql-list fwe-d-none action-ul\" aria-hidden=\"true\" value=\"bullet\"></button>\n <button\n type=\"button\"\n class=\"fwe-btn fng-btn-toolbar-list fng-button\"\n [class.fwe-mr-3]=\"config?.toolbar?.orderedList\"\n (click)=\"delegate($event, 'ul')\"\n [disabled]=\"disabled\"\n >\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-list-list-view fwe-pr-0\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"config?.toolbar?.orderedList\">\n <button type=\"button\" #btnOl class=\"ql-list fwe-d-none action-ol\" aria-hidden=\"true\" value=\"ordered\"></button>\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'ol')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-enumeration fwe-pr-0\"></i>\n </button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('lists')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.image\">\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'image')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-image-image fwe-pr-0\"></i>\n </button>\n <button type=\"button\" #btnImage class=\"ql-image fwe-d-none\" aria-hidden=\"true\"></button>\n </ng-container>\n\n <div *ngIf=\"!hideDivider('image')\" class=\"fng-divider-y fwe-mx-4\"></div>\n\n <ng-container *ngIf=\"config?.toolbar?.link\">\n <button type=\"button\" class=\"fwe-btn fng-btn-toolbar-list fng-button\" (click)=\"delegate($event, 'link')\" [disabled]=\"disabled\">\n <i class=\"fwe-icon fwe-icon-toolbar-list fwe-icon-file-link fwe-pr-0\"></i>\n </button>\n <button type=\"button\" #btnLink class=\"ql-link fwe-d-none\" aria-hidden=\"true\"></button>\n </ng-container>\n </span>\n </div>\n <div class=\"fng-editor-container\" [id]=\"'editor-container-' + id\">\n <div class=\"fng-editor\" [id]=\"'editor-' + id\"></div>\n </div>\n <span class=\"fwe-input-text-label\" [id]=\"'editor-label-' + id\">{{ label }}</span>\n <span *ngIf=\"hint\" class=\"fng-text-editor-info\">{{ hint }}</span>\n <span *ngIf=\"error\" class=\"fng-text-editor-invalid\">{{ error }}</span>\n <span *ngIf=\"maxLength > 0 && value != null\" class=\"fwe-input-text-count\">{{ currentLength() }} / {{ maxLength }}</span>\n</label>\n","import { HostListener, ElementRef, Directive } from '@angular/core';\n\n@Directive()\nexport abstract class ContainerHostDirective {\n constructor(public elementRef: ElementRef) {}\n\n @HostListener('document:click', ['$event.target'])\n public onHostClick(target: Element) {\n if (this.elementRef && this.elementRef.nativeElement) {\n const containsTarget = this.elementRef.nativeElement.contains(target);\n if (!containsTarget) {\n this.onOutsideClick();\n } else {\n this.onContainerClick();\n }\n }\n }\n\n abstract onOutsideClick(): void;\n abstract onContainerClick(): void;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { CheckboxComponent } from './checkbox/checkbox.component';\nimport { SwitchComponent } from './switch/switch.component';\nimport { RadioComponent, RadioGroupDirective } from './radio/radio.component';\nimport { UniqueSelectionDispatcher } from './unique-selection-dispatcher';\nimport { SelectComponent } from './select/select.component';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { TextAreaComponent } from './text-area/text-area.component';\nimport { ColorPickerComponent } from './color-picker/color-picker.component';\nimport { SliderComponent } from './slider/slider.component';\nimport { ColorIndicatorComponent } from './color-indicator/color-indicator.component';\nimport { SegmentComponent } from './segment/segment.component';\nimport { SegmentControlComponent } from './segment/segment-control/segment-control.component';\nimport { DatePickerComponent } from './date-picker/date-picker.component';\nimport { FlatpickrComponent } from '../wrappers/flatpickr/flatpickr.component';\nimport { DateRangePickerComponent } from './date-range-picker/date-range-picker.component';\nimport { TimePickerComponent } from './time-picker/time-picker.component';\nimport { TimePickerDropdownComponent } from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\nimport { TextEditorComponent } from './text-editor/text-editor.component';\n\nexport * from './checkbox/checkbox.component';\nexport * from './switch/switch.component';\nexport * from './radio/radio.component';\nexport * from './select/select.component';\nexport * from './select/select-option/select-option.component';\nexport * from './select/chip-text.pipe';\nexport * from './text-input/text-input.component';\nexport * from './text-area/text-area.component';\nexport * from './color-picker/color-picker.component';\nexport * from './slider/slider.component';\nexport * from './color-indicator/color-indicator.component';\nexport * from './segment/segment.component';\nexport * from './segment/segment-control/segment-control.component';\nexport * from './date-picker/date-picker.component';\nexport * from './date-range-picker/date-range-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\nexport * from './text-editor/text-editor.component';\nexport { ValueAccessorBaseDirective as ValueAccessorBase } from './value-accessor-base';\nexport { ContainerHostDirective as ContainerHost } from './container-host';\nimport { ChipTextPipe } from './select/chip-text.pipe';\nimport { SelectOptionComponent } from './select/select-option/select-option.component';\n\n@NgModule({\n declarations: [\n CheckboxComponent,\n SwitchComponent,\n RadioGroupDirective,\n RadioComponent,\n TextInputComponent,\n TextAreaComponent,\n ColorIndicatorComponent,\n FlatpickrComponent,\n DatePickerComponent,\n DateRangePickerComponent,\n ColorPickerComponent,\n SelectComponent,\n SelectOptionComponent,\n SliderComponent,\n SegmentComponent,\n SegmentControlComponent,\n TimePickerComponent,\n TimePickerDropdownComponent,\n TextEditorComponent,\n ChipTextPipe\n ],\n imports: [ReactiveFormsModule, FormsModule, CommonModule, OverlayModule, ScrollingModule, DragDropModule, ObserversModule],\n exports: [\n ReactiveFormsModule,\n FormsModule,\n CheckboxComponent,\n SwitchComponent,\n RadioGroupDirective,\n RadioComponent,\n TextInputComponent,\n TextAreaComponent,\n ColorIndicatorComponent,\n DatePickerComponent,\n DateRangePickerComponent,\n ColorPickerComponent,\n SelectComponent,\n SelectOptionComponent,\n SliderComponent,\n SegmentComponent,\n SegmentControlComponent,\n TimePickerComponent,\n TimePickerDropdownComponent,\n TextEditorComponent,\n ChipTextPipe\n ],\n providers: [UniqueSelectionDispatcher]\n})\nexport class FestoAngularFormsModule {}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { Modal } from '../index';\n\nexport interface AlertData {\n title: string;\n subtitle?: string;\n body: string;\n alertType: 'info' | 'warning' | 'error';\n cancel?: string;\n ok?: string;\n strong?: boolean;\n}\n\n@Component({\n selector: 'fng-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class AlertComponent implements AfterViewInit, Modal<AlertData, any> {\n @Input() data: AlertData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n this.ok.emit();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","<div\n class=\"fwe-modal\"\n [ngClass]=\"{\n 'fwe-modal--with-indicator-bar': data?.strong === true,\n 'fwe-modal--warning': data?.alertType === 'warning',\n 'fwe-modal--error': data?.alertType === 'error',\n 'fwe-modal--info': data?.alertType === 'info'\n }\"\n>\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.subtitle }}\n </h2>\n <h1 class=\"fwe-modal-h1\">\n <i\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-warning': data?.alertType === 'warning',\n 'fwe-icon-status-failure': data?.alertType === 'error',\n 'fwe-icon-status-check-status': data?.alertType === 'info'\n }\"\n ></i\n >{{ data?.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button\n *ngIf=\"data?.cancel\"\n type=\"button\"\n aria-label=\"Cancel\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-link]=\"data?.strong\"\n (click)=\"onCancel()\"\n >\n {{ data?.cancel }}\n </button>\n <button\n *ngIf=\"data?.ok\"\n type=\"button\"\n aria-label=\"Ok\"\n class=\"fwe-btn fwe-btn-lg\"\n [class.fwe-btn-hero]=\"!data?.strong\"\n (click)=\"onOk()\"\n >\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { Modal } from '../index';\n\nexport interface ConfirmData {\n title: string;\n subtitle?: string;\n body: string;\n cancel?: string;\n ok?: string;\n large?: boolean;\n}\n\n@Component({\n selector: 'fng-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class ConfirmComponent implements AfterViewInit, Modal<ConfirmData, any> {\n @Input() data: ConfirmData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n constructor(private cd: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n this.ok.emit();\n }\n\n onCancel() {\n this.cancel.emit();\n }\n}\n","<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data?.large }\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <p>{{ data?.body }}</p>\n </div>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { AbstractControlOptions, AsyncValidatorFn, FormBuilder, FormGroup, ValidatorFn } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Modal } from '../index';\n\nexport interface PromptData {\n title: string;\n subtitle?: string;\n label: string;\n hint?: string;\n errors?: { [key: string]: string };\n cancel?: string;\n ok?: string;\n value?: string;\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\n}\n\n@Component({\n selector: 'fng-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PromptComponent implements OnInit, AfterViewInit, OnDestroy, Modal<PromptData, any> {\n @Input() data: PromptData;\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n @ViewChild('closeBtn') closeBtn: ElementRef;\n\n form: FormGroup;\n error = '';\n\n get text(): string {\n return this.form?.get('text')?.value;\n }\n\n get valid(): boolean {\n return this.form?.get('text')?.valid;\n }\n\n private complete: Subject<boolean> = new Subject();\n\n constructor(private formBuilder: FormBuilder) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n ngOnInit(): void {\n const text = this.data?.value || '';\n\n this.form = this.formBuilder.group({\n text: this.formBuilder.control(text, this.data?.validatorOrOpts, this.data?.asyncValidator)\n });\n\n if (text) {\n this.form.get('text').markAsDirty();\n }\n\n this.form\n .get('text')\n .statusChanges.pipe(takeUntil(this.complete))\n .subscribe(sc => {\n if (sc === 'INVALID') {\n this.handleErrors();\n } else {\n this.error = '';\n }\n });\n }\n\n ngAfterViewInit() {\n if (this.closeBtn) {\n (this.closeBtn.nativeElement as HTMLElement).focus();\n }\n }\n\n ngOnDestroy(): void {\n this.complete.next(true);\n this.complete.unsubscribe();\n }\n\n onClose() {\n this.close.emit();\n }\n\n onOk() {\n if (this.valid) {\n this.ok.emit(this.text);\n }\n }\n\n onCancel() {\n this.cancel.emit();\n }\n\n private handleErrors() {\n const e = this.form.get('text').errors;\n const key = Object.keys(e)[0];\n if (this.data.errors != null && this.data.errors[key]) {\n this.error = this.data.errors[key];\n } else {\n this.error = 'Prompt input is invalid.';\n }\n }\n}\n","<div class=\"fwe-modal\">\n <div class=\"fwe-modal-close\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 *ngIf=\"data?.subtitle\" class=\"fwe-modal-h2\">{{ data?.subtitle }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ data?.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input formControlName=\"text\" [label]=\"data?.label\" [hint]=\"data?.hint\" type=\"text\" [error]=\"error\"></fng-text-input>\n </form>\n <div class=\"fwe-modal-footer\" *ngIf=\"data?.cancel || data?.ok\">\n <div class=\"fwe-modal-buttons\">\n <button *ngIf=\"data?.cancel\" type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data?.cancel }}\n </button>\n <button *ngIf=\"data?.ok\" type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data?.ok }}\n </button>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'fng-custom-modal',\n templateUrl: './custom-modal.component.html'\n})\nexport class CustomModalComponent {\n @Input() closeOnBackdrop: boolean = false;\n @Input() large: boolean = false;\n @Input() visible: boolean = false;\n @Output() visibleChange = new EventEmitter<boolean>(false);\n\n @Input() header: string = '';\n @Input() subheader: string = '';\n\n @Input() acknowledgeLabel: string = 'Ok';\n @Output() acknowledge = new EventEmitter<void>();\n\n @Input() cancelLabel: string = 'Cancel';\n @Output() cancel = new EventEmitter<void>();\n\n closeModal(): void {\n this.visible = false;\n if (this.visibleChange) {\n this.visibleChange.emit(false);\n }\n }\n\n onCancel(): void {\n this.closeModal();\n if (this.cancel) {\n this.cancel.emit();\n }\n }\n\n onAcknowledge(): void {\n if (this.acknowledge) {\n this.acknowledge.emit();\n }\n }\n\n onClickOutside(): void {\n if (this.closeOnBackdrop) {\n this.onCancel();\n }\n }\n\n onClickInside(event: MouseEvent): void {\n event.stopPropagation();\n }\n}\n","<div class=\"fwe-modal-backdrop\" *ngIf=\"visible\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <div class=\"fwe-modal-close\">\n <button class=\"fwe-btn fwe-btn-link fwe-dark\" (click)=\"onCancel()\">\n <i class=\"fwe-icon fwe-icon-2x fwe-icon-close-small\"></i>\n </button>\n </div>\n <div class=\"fwe-modal-header\">\n <h2 class=\"fwe-modal-h2\" *ngIf=\"subheader?.length\">{{ subheader }}</h2>\n <h1 class=\"fwe-modal-h1\">{{ header }}</h1>\n </div>\n <div class=\"fwe-modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n <fng-button [large]=\"true\" (click)=\"onCancel()\">{{ cancelLabel }}</fng-button>\n <fng-button [large]=\"true\" (click)=\"onAcknowledge()\" [primary]=\"true\">{{ acknowledgeLabel }}</fng-button>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { FestoAngularFormsModule } from '../../forms/forms.module';\nimport { AlertComponent } from './alert/alert.component';\nimport { ConfirmComponent } from './confirm/confirm.component';\nimport { PromptComponent } from './prompt/prompt.component';\nimport { CustomModalComponent } from './custom-modal/custom-modal.component';\nimport { FestoAngularComponentsModule } from '../components.module';\n\nexport * from './index';\nexport * from './alert/alert.component';\nexport * from './confirm/confirm.component';\nexport * from './prompt/prompt.component';\nexport * from './custom-modal/custom-modal.component';\n\n@NgModule({\n declarations: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],\n imports: [CommonModule, RouterModule, OverlayModule, FestoAngularFormsModule, FestoAngularComponentsModule],\n exports: [AlertComponent, ConfirmComponent, PromptComponent, CustomModalComponent],\n providers: []\n})\nexport class FestoAngularModalsModule {}\n","import { AfterViewInit, Component, EventEmitter, HostBinding, Input, OnDestroy, Output, ViewEncapsulation } from '@angular/core';\nimport { animate, sequence, state, style, transition, trigger } from '@angular/animations';\nimport { SnackbarData } from './snackbar.models';\n\n@Component({\n selector: 'fng-snackbar',\n templateUrl: './snackbar.component.html',\n styleUrls: ['./snackbar.component.scss'],\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('appearDisappear', [\n state('init', style({ opacity: 0 })),\n state(\n 'first',\n style({\n opacity: 1,\n transform: 'translateY(0)'\n })\n ),\n state('fadeIn', style({ opacity: '1' })),\n transition('void => fadeIn', [style({ opacity: 0 }), animate('0.6s ease-out')]),\n transition('void => first', [style({ transform: 'translateY(100px)' }), animate('0.6s ease-out')]),\n transition(\n ':leave',\n sequence([\n style({ 'margin-bottom': '24px' }),\n animate('0.3s ease-out', style({ opacity: 0 })),\n animate('0.3s ease-out', style({ height: '0px', 'margin-bottom': '0px' }))\n ])\n )\n ])\n ]\n})\nexport class SnackbarComponent implements AfterViewInit, OnDestroy {\n @Input() data: SnackbarData;\n @Output() close = new EventEmitter<any>();\n @Output() action = new EventEmitter<any>();\n\n @HostBinding('style.display') blockDisplay = 'block';\n @HostBinding('@appearDisappear') animationState: 'init' | 'first' | 'fadeIn' = 'init';\n\n private timeout: any;\n\n ngAfterViewInit() {\n if (this.data && this.data.disappearAfter) {\n this.timeout = setTimeout(() => this.onClose(), this.data.disappearAfter);\n }\n }\n\n ngOnDestroy() {\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n }\n\n onAction() {\n this.action.emit();\n }\n\n onClose() {\n this.close.emit();\n }\n}\n","<div\n [ngClass]=\"{\n 'fwe-snackbar': true,\n 'fwe-snackbar-b': data?.variant === 'b',\n 'fwe-snackbar-c': data?.variant === 'c',\n 'fwe-snackbar-warning': data?.type === 'warning',\n 'fwe-snackbar-error': data?.type === 'error',\n 'fwe-snackbar-shadow': data?.darkBackground\n }\"\n>\n <i\n *ngIf=\"data?.type\"\n aria-hidden=\"true\"\n [ngClass]=\"{\n 'fwe-icon': true,\n 'fwe-icon-status-info': data?.type === 'info',\n 'fwe-icon-status-warning': data?.type === 'warning',\n 'fwe-icon-status-failure': data?.type === 'error'\n }\"\n ></i>\n <span>{{ data?.text }}</span>\n <button *ngIf=\"data?.action\" aria-label=\"UserAction\" type=\"button\" class=\"fwe-btn fwe-btn-link\" (click)=\"onAction()\">\n {{ data?.action }}\n </button>\n <button *ngIf=\"data?.showClose\" aria-label=\"Close\" type=\"button\" class=\"fwe-btn fwe-btn-link\" (click)=\"onClose()\">\n <i aria-hidden=\"true\" class=\"fwe-icon fwe-icon-close-small\"></i>\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n</div>\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { SnackbarData } from './snackbar.models';\n\nexport type SnackDescription = {\n data: SnackbarData;\n actionCallback?: () => void;\n closeCallback?: () => void;\n resolve: (value: unknown) => void;\n};\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SnackbarService {\n snacks$: Observable<SnackDescription>;\n\n private snacks = new Subject<SnackDescription>();\n\n constructor() {\n this.snacks$ = this.snacks.asObservable();\n }\n\n snack(data: SnackbarData, actionCallback?: () => void, closeCallback?: () => void) {\n return new Promise(resolve => {\n this.snacks.next({ data, actionCallback, closeCallback, resolve });\n });\n }\n}\n","import {\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarConfig } from './snackbar.models';\nimport { SnackbarService, SnackDescription } from './snackbar.service';\n\ninterface SnackbarRef {\n componentRef: ComponentRef<SnackbarComponent>;\n complete: Subject<boolean>;\n}\n\n@Directive({\n selector: '[fngSnackbarContainer]'\n})\nexport class SnackbarContainerDirective implements OnDestroy, OnInit {\n @Input() fngSnackbarContainer: SnackbarConfig;\n\n private snacks: SnackbarRef[] = [];\n\n private snacksSub: Subscription;\n private factory: ComponentFactory<SnackbarComponent>;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private snackbarService: SnackbarService\n ) {\n this.factory = this.componentFactoryResolver.resolveComponentFactory(SnackbarComponent);\n }\n\n ngOnInit() {\n this.snacksSub = this.snackbarService.snacks$.subscribe(SnackDescription => this.push(SnackDescription));\n }\n\n ngOnDestroy() {\n if (this.snacks != null && this.snacks.length > 0) {\n this.snacks.forEach(snack => {\n snack.complete.next(true);\n snack.complete.complete();\n snack.complete.unsubscribe();\n });\n }\n if (this.snacksSub != null) {\n this.snacksSub.unsubscribe();\n }\n }\n\n private push(snackDescription: SnackDescription) {\n const complete = new Subject<boolean>();\n const componentRef = this.viewContainerRef.createComponent(this.factory, 0);\n const componentInstance = componentRef.instance;\n componentInstance.data = { ...this.fngSnackbarContainer, ...snackDescription.data };\n componentInstance.animationState = this.snacks.length === 0 ? 'first' : 'fadeIn';\n const snackbarRef = { componentRef, complete };\n componentInstance.close.pipe(takeUntil(complete)).subscribe(() => {\n this.remove(snackbarRef);\n if (snackDescription.closeCallback) {\n snackDescription.closeCallback();\n }\n });\n componentInstance.action.pipe(takeUntil(complete)).subscribe(() => {\n if (componentInstance.data.closeOnAction) {\n this.remove(snackbarRef);\n }\n if (snackDescription.actionCallback) {\n snackDescription.actionCallback();\n }\n });\n this.snacks.push(snackbarRef);\n snackDescription.resolve(snackbarRef.componentRef);\n }\n\n private remove(snackbarRef: SnackbarRef) {\n const index = this.snacks.indexOf(snackbarRef);\n if (index !== -1) {\n const deletedSnackbarRef = this.snacks.splice(index, 1);\n if (deletedSnackbarRef != null && deletedSnackbarRef.length > 0) {\n const deletedSnackbar = deletedSnackbarRef[0];\n if (deletedSnackbar.complete != null) {\n deletedSnackbar.complete.next(true);\n deletedSnackbar.complete.complete();\n deletedSnackbar.complete.unsubscribe();\n }\n if (deletedSnackbar.componentRef != null) {\n deletedSnackbar.componentRef.destroy();\n }\n }\n }\n }\n}\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { SnackbarConfig } from './snackbar.models';\n\n@Component({\n selector: 'fng-snackbar-container',\n templateUrl: './snackbar-container.component.html',\n styleUrls: ['./snackbar-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SnackbarContainerComponent {\n @Input() config: SnackbarConfig = {\n darkBackground: true,\n disappearAfter: 5000,\n closeOnAction: true\n };\n}\n","<div class=\"fwe-snackbar-container\">\n <div [fngSnackbarContainer]=\"config\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { SnackbarComponent } from './snackbar.component';\nimport { SnackbarContainerDirective } from './snackbar-container.directive';\nimport { SnackbarContainerComponent } from './snackbar-container.component';\n\nexport * from './snackbar.models';\nexport * from './snackbar.component';\nexport * from './snackbar-container.component';\nexport * from './snackbar-container.directive';\n\n@NgModule({\n declarations: [SnackbarComponent, SnackbarContainerDirective, SnackbarContainerComponent],\n imports: [CommonModule],\n exports: [SnackbarContainerComponent, SnackbarContainerDirective, SnackbarContainerComponent],\n providers: [],\n bootstrap: [SnackbarComponent]\n})\nexport class FestoAngularSnackbarModule {}\n","import { Component, Input, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\n\nexport type IconType = 'font' | 'img' | 'svg';\n\n/**\n * Describes an icon.\n */\nexport interface Icon {\n /**\n * The icon type.\n * - 'font' uses [name]{@link Icon#name} to resolve the icon from the icon font.\n * - 'img' uses [url]{@link Icon#url}, [height]{@link Icon#height}, [width]{@link Icon#width}\n * - 'svg' uses ng-content to display svg, [height]{@link Icon#height}, [width]{@link Icon#width}\n */\n type: IconType;\n\n /**\n * The name used to resolve the icon.\n */\n name?: string;\n\n /**\n * The url used to resolve the image.\n */\n url?: string;\n\n /**\n * Height of the image in pixel (px).\n */\n height?: number;\n\n /**\n * Width of the image in pixel (px).\n */\n width?: number;\n\n /**\n * This string will be added as css class to the icon.\n */\n class?: string;\n}\n\n/**\n * An icon component.\n */\n@Component({\n selector: 'fng-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class IconComponent {\n /**\n * The icon.\n */\n @Input() icon: Icon;\n}\n","<i *ngIf=\"icon?.type === 'font'\" [class]=\"'fwe-icon fwe-icon-' + icon?.name + ' ' + (icon.class || '')\"></i>\n<img\n *ngIf=\"icon?.type === 'img'\"\n [class]=\"icon.class\"\n [src]=\"icon?.url\"\n [ngStyle]=\"{ width: icon?.width + 'px', height: icon?.height + 'px' }\"\n/>\n<ng-content *ngIf=\"icon?.type === 'svg'\"></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IconComponent } from './icon/icon.component';\n\nexport * from './icon/icon.component';\n\n@NgModule({\n declarations: [IconComponent],\n imports: [CommonModule],\n exports: [IconComponent],\n providers: []\n})\nexport class FestoAngularContentModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n declarations: [],\n imports: [CommonModule],\n exports: [],\n providers: []\n})\nexport class FestoAngularLayoutModule {}\n","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\n\nimport SwiperCore, { FreeMode, Keyboard, Navigation, Thumbs, Zoom } from 'swiper';\nimport { Modal } from '../modals';\n\nSwiperCore.use([FreeMode, Navigation, Keyboard, Thumbs, Zoom]);\n\nexport interface ImageGalleryData {\n startIndex: number;\n images: { url: string; alt: string }[];\n thumbnailImages?: { url: string; alt: string }[];\n pagination?: boolean;\n slideChanged?: (index: number) => void;\n}\n\n@Component({\n selector: 'fng-image-gallery',\n templateUrl: './image-gallery.component.html',\n styleUrls: ['./image-gallery.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ImageGalleryComponent implements Modal<ImageGalleryData, any> {\n @Input() data: ImageGalleryData = {\n startIndex: 0,\n images: null,\n thumbnailImages: null,\n slideChanged: null,\n pagination: true\n };\n @Output() close = new EventEmitter<any>();\n @Output() cancel = new EventEmitter<any>();\n @Output() ok = new EventEmitter<any>();\n\n thumbsSwiper: any;\n currentIndex = this.data.startIndex + 1;\n\n constructor(private cd: ChangeDetectorRef) {}\n\n @HostListener('window:keyup', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (event.key === 'Esc' || event.key === 'Escape') {\n this.onClose();\n }\n }\n\n onSlideChange(swiper: { activeIndex: number }[]) {\n this.currentIndex = swiper[0].activeIndex + 1;\n this.cd.markForCheck();\n this.cd.detectChanges();\n if (this.data?.slideChanged) {\n this.data.slideChanged(swiper[0].activeIndex);\n }\n }\n\n onClose() {\n this.close.emit();\n }\n}\n","<div class=\"fwe-modal fwe-modal-image-gallery\" *ngIf=\"data != null\" [class.fwe-modal-image-gallery--with-thumbnails]=\"data.thumbnailImages?.length > 0\">\n <div class=\"fwe-image-gallery-header\">\n <div *ngIf=\"data.pagination\" class=\"fwe-pagination fwe-pagination--on-dark-bg\">\n <button aria-label=\"previous\" type=\"button\" class=\"fwe-navigate-btn-down\"></button>\n <span id=\"currentslide\" class=\"fwe-page-current\">{{currentIndex}}</span>\n <span id=\"slideslength\" class=\"fwe-page-max\">{{data.images?.length}}</span>\n <button aria-label=\"next\" type=\"button\" class=\"fwe-navigate-btn-up\"></button>\n </div>\n <button aria-label=\"close\" type=\"button\" class=\"fwe-btn fwe-btn-link fwe-ml-auto\" (click)=\"onClose()\">\n <i class=\"fwe-icon fwe-icon-lg fwe-color-white fwe-icon-menu-close fwe-modal-image-gallery-close\"></i>\n </button>\n </div>\n <swiper\n [initialSlide]=\"data.startIndex\"\n [keyboard]=\"{\n enabled: true\n }\"\n [spaceBetween]=\"0\"\n [zoom]=\"true\"\n [navigation]=\"{\n nextEl: '.fwe-navigate-btn-up',\n prevEl: '.fwe-navigate-btn-down'\n }\"\n [thumbs]=\"{ swiper: thumbsSwiper }\"\n (slideChange)=\"onSlideChange($event)\"\n class=\"gallery-swiper fwe-image-gallery\"\n >\n <ng-template *ngFor=\"let image of data.images\" swiperSlide>\n <div class=\"swiper-zoom-container\">\n <img [alt]=\"image.alt\" [src]=\"image.url\" />\n </div>\n </ng-template>\n </swiper>\n <swiper *ngIf=\"data.thumbnailImages?.length > 0\"\n (swiper)=\"thumbsSwiper = $event\"\n [slidesPerView]=\"'auto'\"\n [freeMode]=\"true\"\n [watchSlidesProgress]=\"true\"\n class=\"thumbs-swiper fwe-image-gallery-thumbs\"\n >\n <ng-template *ngFor=\"let thumbnail of data.thumbnailImages\" swiperSlide>\n <img [alt]=\"thumbnail.alt\" [src]=\"thumbnail.url\" />\n </ng-template>\n </swiper>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SwiperModule } from 'swiper/angular';\nimport { ImageGalleryComponent } from './image-gallery.component';\n\nexport * from './image-gallery.component';\n\n@NgModule({\n declarations: [ImageGalleryComponent],\n imports: [CommonModule, SwiperModule],\n exports: [ImageGalleryComponent],\n providers: []\n})\nexport class FestoAngularImageGalleryModule {}\n","import { NgModule } from '@angular/core';\nimport { FestoAngularLayoutModule } from './layout/layout.module';\nimport { FestoAngularComponentsModule } from './components/components.module';\nimport { FestoAngularContentModule } from './content/content.module';\nimport { FestoAngularFormsModule } from './forms/forms.module';\nimport { FestoAngularModalsModule } from './components/modals/modals.module';\nimport { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';\nimport { FestoAngularImageGalleryModule } from './components/image-gallery/image-gallery.module';\n\n@NgModule({\n declarations: [],\n imports: [\n FestoAngularLayoutModule,\n FestoAngularComponentsModule,\n FestoAngularContentModule,\n FestoAngularFormsModule,\n FestoAngularModalsModule,\n FestoAngularSnackbarModule,\n FestoAngularImageGalleryModule\n ],\n exports: [\n FestoAngularLayoutModule,\n FestoAngularComponentsModule,\n FestoAngularContentModule,\n FestoAngularFormsModule,\n FestoAngularModalsModule,\n FestoAngularSnackbarModule,\n FestoAngularImageGalleryModule\n ]\n})\nexport class FestoAngularModule {}\n","import { Injectable, SimpleChange } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { Modal, ModalOptions, ModalResult } from './index';\nimport { AlertComponent, AlertData } from './alert/alert.component';\nimport { ConfirmComponent, ConfirmData } from './confirm/confirm.component';\nimport { Subject } from 'rxjs';\nimport { PromptComponent, PromptData } from './prompt/prompt.component';\nimport { ImageGalleryComponent, ImageGalleryData } from '../image-gallery/image-gallery.component';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(protected overlay: Overlay, private router: Router) {}\n\n alert(data: AlertData, options?: ModalOptions) {\n return this.open<AlertData, any, AlertComponent>(data, AlertComponent, {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n });\n }\n\n confirm(data: ConfirmData, options?: ModalOptions) {\n options = options || {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n };\n return this.open<ConfirmData, any, ConfirmComponent>(data, ConfirmComponent, options);\n }\n\n prompt(data: PromptData, options?: ModalOptions) {\n options = options || {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true,\n ...options\n };\n return this.open<PromptData, any, PromptComponent>(data, PromptComponent, options);\n }\n\n openImageGallery(data: ImageGalleryData) {\n const options: ModalOptions = {\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n shouldCloseOnBackdrop: true\n };\n return this.open<ImageGalleryData, any, ImageGalleryComponent>(data, ImageGalleryComponent, options);\n }\n\n open<TData, TResult, TModal extends Modal<TData, TResult>>(\n data: TData,\n modal: ComponentType<TModal>,\n options: ModalOptions\n ): Promise<ModalResult<TResult>> {\n return new Promise((resolve, reject) => {\n const complete = new Subject<boolean>();\n const positionStrategy = options.positionStrategy || this.overlay.position().global().centerHorizontally().centerVertically();\n const scrollStrategy = this.overlay.scrollStrategies.block();\n const overlayRef = this.overlay.create({\n panelClass: options.overlayClass,\n positionStrategy,\n scrollStrategy,\n backdropClass: 'fwe-modal-backdrop',\n hasBackdrop: true,\n ...options\n });\n\n if (options.closeOnNavigation) {\n this.router.events\n .pipe(\n filter(e => e instanceof NavigationStart),\n takeUntil(complete)\n )\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'navigated' })));\n }\n\n if (options.shouldCloseOnBackdrop) {\n overlayRef\n .backdropClick()\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'backdrop' })));\n }\n\n const modalPortal = new ComponentPortal(modal);\n const componentRef = overlayRef.attach(modalPortal);\n if (componentRef != null && componentRef.instance != null) {\n componentRef.instance.data = data;\n if (componentRef.instance.close != null) {\n componentRef.instance.close\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'close' })));\n }\n if (componentRef.instance.cancel != null) {\n componentRef.instance.cancel\n .pipe(takeUntil(complete))\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'cancel' })));\n }\n if (componentRef.instance.ok != null) {\n componentRef.instance.ok\n .pipe(takeUntil(complete))\n .subscribe(result => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'ok', result })));\n }\n if (componentRef.instance.ngOnChanges != null) {\n componentRef.instance.ngOnChanges({ data: new SimpleChange(null, data, true) });\n }\n } else {\n this.dispose(overlayRef, complete).then(() => reject(new Error('Could not attach component to overlay.')));\n }\n });\n }\n\n private dispose(overlayRef: OverlayRef, complete: Subject<boolean>) {\n return new Promise<void>(resolve => {\n complete.next(true);\n complete.complete();\n complete.unsubscribe();\n overlayRef.dispose();\n resolve();\n });\n }\n}\n","// COMPONENTS\nexport * from './lib/components/components.module';\n\n// MODALS\nexport * from './lib/components/modals/modals.module';\n\n// SNACKBAR\nexport * from './lib/components/snackbar/snackbar.module';\n\n// CONTENT\nexport * from './lib/content/content.module';\n\n// FORMS\nexport * from './lib/forms/forms.module';\n\n// LAYOUT\nexport * from './lib/layout/layout.module';\n\n// IMAGE GALLERY\nexport * from './lib/components/image-gallery/image-gallery.module';\n\n// MAIN\nexport * from './lib/festo-angular.module';\n\n// SERVICES\nexport * from './lib/components/modals/modal.service';\nexport * from './lib/components/snackbar/snackbar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextUniqueId"],"mappings":"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"}