@festo-ui/angular 9.0.0-dev.697 → 9.0.0-dev.707

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":["../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.html","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.html","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../projects/angular/src/lib/components/accordion/accordion.component.ts","../../../projects/angular/src/lib/components/accordion/accordion.component.html","../../../projects/angular/src/lib/components/accordion/accordion-header/accordion-header.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-header/accordion-header.component.html","../../../projects/angular/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular/src/lib/components/buttons/button/button.component.ts","../../../projects/angular/src/lib/components/buttons/button/button.component.html","../../../projects/angular/src/lib/components/buttons/link-button/link-button.component.ts","../../../projects/angular/src/lib/components/buttons/link-button/link-button.component.html","../../../projects/angular/src/lib/components/chips/chip-container/chip-container.component.ts","../../../projects/angular/src/lib/components/chips/chip-container/chip-container.component.html","../../../projects/angular/src/lib/components/chips/chip/chip.component.ts","../../../projects/angular/src/lib/components/chips/chip/chip.component.html","../../../projects/angular/src/lib/directives/click-outside.directive.ts","../../../projects/angular/src/lib/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/angular/src/lib/components/bottom-sheet/bottom-sheet.component.html","../../../projects/angular/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../projects/angular/src/lib/components/loading-indicator/loading-indicator.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout.component.html","../../../projects/angular/src/lib/components/pagination/pagination.component.ts","../../../projects/angular/src/lib/components/pagination/pagination.component.html","../../../projects/angular/src/lib/components/popovers/popover-ref.ts","../../../projects/angular/src/lib/components/popovers/popover.models.ts","../../../projects/angular/src/lib/components/popovers/popover/popover.component.ts","../../../projects/angular/src/lib/components/popovers/popover/popover.component.html","../../../projects/angular/src/lib/components/popovers/popover.defaults.ts","../../../projects/angular/src/lib/components/popovers/popover.service.ts","../../../projects/angular/src/lib/components/popovers/legend/legend.component.ts","../../../projects/angular/src/lib/components/popovers/legend/legend.component.html","../../../projects/angular/src/lib/components/popovers/legend/legend.directive.ts","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.component.ts","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.component.html","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.directive.ts","../../../projects/angular/src/lib/components/popovers/popover-menu/popover-menu.component.ts","../../../projects/angular/src/lib/components/popovers/popover-menu/popover-menu.component.html","../../../projects/angular/src/lib/components/popovers/tooltip/tooltip.directive.ts","../../../projects/angular/src/lib/components/progress/progress.component.ts","../../../projects/angular/src/lib/components/progress/progress.component.html","../../../projects/angular/src/lib/components/scroll/scrollable.directive.ts","../../../projects/angular/src/lib/pipes/safe-html.pipe.ts","../../../projects/angular/src/lib/components/search-input/search-input.component.ts","../../../projects/angular/src/lib/components/search-input/search-input.component.html","../../../projects/angular/src/lib/components/sidebar-overlay/sidebar-overlay.component.ts","../../../projects/angular/src/lib/components/sidebar-overlay/sidebar-overlay.component.html","../../../projects/angular/src/lib/components/snackbar/snackbar.component.ts","../../../projects/angular/src/lib/components/snackbar/snackbar.component.html","../../../projects/angular/src/lib/components/snackbar/snackbar.service.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.directive.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.component.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.component.html","../../../projects/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.ts","../../../projects/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.html","../../../projects/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.ts","../../../projects/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.html","../../../projects/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.ts","../../../projects/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.html","../../../projects/angular/src/lib/components/stepper-vertical/stepper-vertical.component.ts","../../../projects/angular/src/lib/components/stepper-vertical/stepper-vertical.component.html","../../../projects/angular/src/lib/components/table-header-cell/table-header-cell.directive.ts","../../../projects/angular/src/lib/components/tabs/tab-pane/tab-pane.component.ts","../../../projects/angular/src/lib/components/tabs/tab-pane/tab-pane.component.html","../../../projects/angular/src/lib/components/tabs/tabs.component.ts","../../../projects/angular/src/lib/components/tabs/tabs.component.html","../../../projects/angular/src/lib/components/overlay/overlay-outlet.directive.ts","../../../projects/angular/src/lib/components/overlay/overlay-content/overlay-content.component.ts","../../../projects/angular/src/lib/components/overlay/overlay-content/overlay-content.component.html","../../../projects/angular/src/lib/components/components.module.ts","../../../projects/angular/src/lib/components/snackbar/snackbar.module.ts","../../../projects/angular/src/lib/modals/alert/alert.component.ts","../../../projects/angular/src/lib/modals/alert/alert.component.html","../../../projects/angular/src/lib/modals/confirm/confirm.component.ts","../../../projects/angular/src/lib/modals/confirm/confirm.component.html","../../../projects/angular/src/lib/forms/text-input/text-input.component.ts","../../../projects/angular/src/lib/forms/text-input/text-input.component.html","../../../projects/angular/src/lib/modals/prompt/prompt.component.ts","../../../projects/angular/src/lib/modals/prompt/prompt.component.html","../../../projects/angular/src/lib/modals/image-gallery/image-gallery.component.ts","../../../projects/angular/src/lib/modals/image-gallery/image-gallery.component.html","../../../projects/angular/src/lib/modals/modal.service.ts","../../../projects/angular/src/lib/modals/custom-modal/custom-modal.component.ts","../../../projects/angular/src/lib/modals/custom-modal/custom-modal.component.html","../../../projects/angular/src/lib/modals/modals.module.ts","../../../projects/angular/src/lib/forms/checkbox/checkbox.component.ts","../../../projects/angular/src/lib/forms/checkbox/checkbox.component.html","../../../projects/angular/src/lib/forms/color-indicator/color-indicator.component.ts","../../../projects/angular/src/lib/forms/color-indicator/color-indicator.component.html","../../../projects/angular/src/lib/forms/color-picker/color-helper.ts","../../../projects/angular/src/lib/forms/color-picker/color-picker.component.ts","../../../projects/angular/src/lib/forms/color-picker/color-picker.component.html","../../../projects/angular/src/lib/forms/flatpickr/flatpickr.component.ts","../../../projects/angular/src/lib/forms/flatpickr/flatpickr.component.html","../../../projects/angular/src/lib/forms/date-picker/date-picker.component.ts","../../../projects/angular/src/lib/forms/date-picker/date-picker.component.html","../../../projects/angular/src/lib/forms/date-range-picker/date-range-picker.component.ts","../../../projects/angular/src/lib/forms/date-range-picker/date-range-picker.component.html","../../../projects/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.ts","../../../projects/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.html","../../../projects/angular/src/lib/forms/time-picker/time-picker.component.ts","../../../projects/angular/src/lib/forms/time-picker/time-picker.component.html","../../../projects/angular/src/lib/forms/unique-selection-dispatcher.ts","../../../projects/angular/src/lib/forms/radio/radio.component.ts","../../../projects/angular/src/lib/forms/radio/radio.component.html","../../../projects/angular/src/lib/forms/segment/segment-control/segment-control.component.ts","../../../projects/angular/src/lib/forms/segment/segment-control/segment-control.component.html","../../../projects/angular/src/lib/forms/segment/segment.component.ts","../../../projects/angular/src/lib/forms/segment/segment.component.html","../../../projects/angular/src/lib/forms/select/select-option/select-option.component.ts","../../../projects/angular/src/lib/forms/select/select-option/select-option.component.html","../../../projects/angular/src/lib/forms/select/chip-text.pipe.ts","../../../projects/angular/src/lib/forms/select/select.component.ts","../../../projects/angular/src/lib/forms/select/select.component.html","../../../projects/angular/src/lib/forms/slider/slider.component.ts","../../../projects/angular/src/lib/forms/slider/slider.component.html","../../../projects/angular/src/lib/forms/switch/switch.component.ts","../../../projects/angular/src/lib/forms/switch/switch.component.html","../../../projects/angular/src/lib/forms/text-area/text-area.component.ts","../../../projects/angular/src/lib/forms/text-area/text-area.component.html","../../../projects/angular/src/lib/forms/value-accessor-base.ts","../../../projects/angular/src/lib/forms/text-editor/text-editor.component.ts","../../../projects/angular/src/lib/forms/text-editor/text-editor.component.html","../../../projects/angular/src/lib/forms/forms.module.ts","../../../projects/angular/src/lib/festo-angular.module.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/festo-ui-angular.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item-body',\r\n templateUrl: './accordion-item-body.component.html',\r\n styleUrls: ['./accordion-item-body.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemBodyComponent {\r\n // parentId will be set by accordion item this body belongs to\r\n id: string = '';\r\n}\r\n","<div\r\n role=\"region\"\r\n [attr.id]=\"id + '-body'\"\r\n [attr.aria-labelledby]=\"id + '-header'\"\r\n class=\"fng-accordion-item-body\"\r\n>\r\n <ng-content></ng-content>\r\n <div class=\"fng-accordion-item-body-spacer-bottom\"></div>\r\n</div>\r\n","import { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport enum FngAccordionHeaderActions {\r\n Toggle = 'toggle'\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item-header',\r\n templateUrl: './accordion-item-header.component.html',\r\n styleUrls: ['./accordion-item-header.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemHeaderComponent implements OnDestroy {\r\n // parentId will be set by accordion item this header belongs to\r\n id: string = '';\r\n private actions: Subject<FngAccordionHeaderActions> = new Subject<FngAccordionHeaderActions>();\r\n actions$: Observable<FngAccordionHeaderActions> = this.actions.asObservable();\r\n\r\n ngOnDestroy() {\r\n this.actions.complete();\r\n }\r\n\r\n toggle() {\r\n this.actions.next(FngAccordionHeaderActions.Toggle);\r\n }\r\n}\r\n","<div\r\n class=\"fng-accordion-item-header\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.id]=\"id + '-header'\"\r\n [attr.aria-expanded]=\"\"\r\n [attr.aria-controls]=\"id + '-body'\"\r\n (click)=\"toggle()\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Subscription } from 'rxjs';\r\nimport { FngAccordionActions, FngAccordionComponent } from './../accordion.component';\r\nimport {\r\n Component,\r\n ContentChild,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n ElementRef,\r\n Renderer2,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n AfterContentInit\r\n} from '@angular/core';\r\n\r\nimport { FngAccordionItemBodyComponent } from './accordion-item-body/accordion-item-body.component';\r\nimport { FngAccordionHeaderActions, FngAccordionItemHeaderComponent } from './accordion-item-header/accordion-item-header.component';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrls: ['./accordion-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemComponent implements OnChanges, AfterViewInit, AfterContentInit {\r\n static nextId = 0;\r\n componentId = `accordion-item-${++FngAccordionItemComponent.nextId}`;\r\n expanded: boolean = false;\r\n _linkText: string = '';\r\n get linkText() {\r\n if (this.expanded === true) {\r\n this._linkText = this?.accordion?.showLess || '';\r\n } else {\r\n this._linkText = this?.accordion?.showMore || '';\r\n }\r\n return this._linkText;\r\n }\r\n\r\n @ContentChild(FngAccordionItemHeaderComponent) header: FngAccordionItemHeaderComponent | undefined;\r\n @ContentChild(FngAccordionItemBodyComponent) body: FngAccordionItemBodyComponent | undefined;\r\n\r\n // compound id of parent id and this component id to get a unique identifier in dom\r\n id = '';\r\n\r\n // parentId will be set by accordion this item belongs to\r\n parentId: string = '';\r\n private accordion: FngAccordionComponent | undefined;\r\n private accordionSubscription: Subscription | undefined;\r\n private accordionItemHeaderSubscription: Subscription | undefined;\r\n private element: HTMLElement | null = null;\r\n private pristine: boolean = true;\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private cd: ChangeDetectorRef) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.id = `${this.parentId}-${this.componentId}`;\r\n if (this.header && this.body) {\r\n this.header.id = this.id;\r\n this.body.id = this.id;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const element: HTMLElement = this.elementRef.nativeElement;\r\n this.element = element.querySelector('.fng-accordion-item-body');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes?.['accordion']?.currentValue != null) {\r\n const accordion = changes?.['accordion']?.currentValue;\r\n this.accordion = accordion;\r\n if (this.accordion) {\r\n this.subscribeToAccordionActions();\r\n this.subscribeToAccordionItemHeaderActions();\r\n }\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n toggle(): void {\r\n // save the new expanded state in another var, because it may be overwritten when closeAll is called\r\n const newExpandedState = !this.expanded;\r\n const changeExpandedState = () => {\r\n this.expanded = newExpandedState;\r\n if (this.expanded === true) {\r\n this.expandItem();\r\n } else {\r\n this.collapseItem();\r\n }\r\n };\r\n\r\n // if the accordion allows only one expanded item at once we first have to close all items\r\n if (this.accordion != null && this.accordion.multi === false) {\r\n this.accordion.closeAll();\r\n /// run in new macrotask to avoid render issues when transitioning to new expanded state\r\n setTimeout(() => {\r\n changeExpandedState();\r\n });\r\n } else {\r\n changeExpandedState();\r\n }\r\n }\r\n\r\n collapseItem() {\r\n // get the height of item body regardless of its actual size\r\n const itemHeight = this.element?.scrollHeight;\r\n // set the actual item height as style to avoid transition from height: auto\r\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\r\n setTimeout(() => {\r\n this.renderer.setStyle(this.element, 'height', 0 + 'px');\r\n });\r\n }\r\n\r\n expandItem() {\r\n // if the item was expanded once, we have to rerun change detection before expanding again\r\n // because the content inside may have changed\r\n if (this.pristine === false) {\r\n this.cd.detectChanges();\r\n }\r\n\r\n // get the height of item body regardless of its actual size\r\n const itemHeight = this.element?.scrollHeight;\r\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\r\n setTimeout(() => {\r\n this.renderer.setStyle(this.element, 'height', null);\r\n this.pristine = false;\r\n }, 300);\r\n }\r\n\r\n private handleAction(action: FngAccordionActions | FngAccordionHeaderActions) {\r\n switch (action) {\r\n case FngAccordionActions.OpenAll:\r\n this.expanded = true;\r\n this.expandItem();\r\n break;\r\n case FngAccordionActions.CloseAll:\r\n if (this.expanded === true) {\r\n this.expanded = false;\r\n this.collapseItem();\r\n }\r\n break;\r\n case FngAccordionHeaderActions.Toggle:\r\n this.toggle();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private subscribeToAccordionActions() {\r\n if (this.accordionSubscription != null) {\r\n this.accordionSubscription.unsubscribe();\r\n }\r\n this.accordionSubscription = this.accordion?.actions$.subscribe(action => {\r\n this.handleAction(action);\r\n });\r\n }\r\n\r\n private subscribeToAccordionItemHeaderActions() {\r\n if (this.accordionItemHeaderSubscription != null) {\r\n this.accordionItemHeaderSubscription.unsubscribe();\r\n }\r\n this.accordionItemHeaderSubscription = this.header?.actions$.subscribe(action => {\r\n this.handleAction(action);\r\n });\r\n }\r\n}\r\n","<div class=\"fng-accordion-item\" [class.fng-accordion-item--collapsed]=\"!expanded\" [class.fng-accordion-item--expanded]=\"expanded === true\">\r\n <ng-content></ng-content>\r\n <div class=\"fng-accordion-item-link\">{{ linkText }}</div>\r\n</div>\r\n","import { Component, ContentChildren, QueryList, SimpleChange, ViewEncapsulation, AfterViewInit, Input, OnDestroy } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { FngAccordionItemComponent } from './accordion-item/accordion-item.component';\r\n\r\nexport enum FngAccordionActions {\r\n OpenAll = 'openAll',\r\n CloseAll = 'closeAll'\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionComponent implements AfterViewInit, OnDestroy {\r\n static nextId = 0;\r\n readonly componentId = `accordion-${++FngAccordionComponent.nextId}`;\r\n\r\n private actions: Subject<FngAccordionActions> = new Subject<FngAccordionActions>();\r\n actions$: Observable<FngAccordionActions> = this.actions.asObservable();\r\n\r\n // if the accordion should only allow one expanded item at once this property can be set to false\r\n @Input('fngAccordionKeepItemsOpen') multi: boolean = true;\r\n @Input('fngAccordionShowMoreText') showMore: string = 'Show more';\r\n @Input('fngAccordionShowLessText') showLess: string = 'Show less';\r\n @ContentChildren(FngAccordionItemComponent) items: QueryList<FngAccordionItemComponent> | undefined;\r\n\r\n ngAfterViewInit(): void {\r\n this.items?.forEach(item => {\r\n item.ngOnChanges({\r\n parentId: new SimpleChange(null, this.componentId, false),\r\n accordion: new SimpleChange(null, this, false)\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.actions.complete();\r\n }\r\n\r\n openAll(): void {\r\n if (this.multi) {\r\n this.actions.next(FngAccordionActions.OpenAll);\r\n }\r\n }\r\n\r\n closeAll(): void {\r\n this.actions.next(FngAccordionActions.CloseAll);\r\n }\r\n}\r\n","<div class=\"fng-accordion\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-header',\r\n templateUrl: './accordion-header.component.html',\r\n styleUrls: ['./accordion-header.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionHeaderComponent {}\r\n","<div class=\"fng-accordion-header\">\r\n <ng-content></ng-content>\r\n</div>\r\n","\r\nimport { Component, Input, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\n imports: [RouterModule],\n selector: 'fng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngBreadcrumbComponent {\r\n @Input() useRouterLink = false;\r\n @Input() locations: { label: string; url: string }[] = [];\r\n @Output() navigate = new EventEmitter<string>();\r\n}\r\n","<div class=\"fwe-breadcrumb\">\n @for (location of locations; track location) {\n @if (useRouterLink) {\n <a class=\"fng-breadcrumb-location\" [routerLink]=\"location.url\">{{ location.label }}</a>\n }\n @if (!useRouterLink) {\n <a class=\"fng-breadcrumb-location\" (click)=\"navigate.emit(location.url)\">{{ location.label }}</a>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngButtonComponent {\r\n @Input() text: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() disabled = false;\r\n @Input() primary = false;\r\n @Input() tertiary = false;\r\n @Input() iconOnly = false;\r\n @Input() large = false;\r\n @Input() floating = false;\r\n @Output() fngClick = new EventEmitter<any>();\r\n @ContentChild('content') content: ElementRef | undefined;\r\n\r\n onClick(event: any) {\r\n if (!this.disabled) {\r\n this.fngClick.emit(event);\r\n }\r\n }\r\n}\r\n","\n<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\r\n 'fwe-btn': true,\r\n 'fng-button': true,\r\n 'fwe-btn-icon': iconOnly,\r\n 'fwe-disabled': disabled,\r\n 'fwe-btn-hero': primary && !tertiary,\r\n 'fwe-btn-link': tertiary && !primary,\r\n 'fwe-btn-lg': large,\r\n 'fwe-btn-floating': floating\r\n }\"\r\n [disabled]=\"disabled\"\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!iconOnly) {\n <div>\n <ng-content></ng-content>\n @if (!content) {\n <span>{{ text }}</span>\n }\n </div>\n }\n</button>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLinkButtonComponent {\r\n @Input() text: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() disabled = false;\r\n @Input() iconOnly = false;\r\n @Output() fngClick = new EventEmitter<any>();\r\n @ContentChild('content') content: ElementRef | undefined;\r\n\r\n onClick(event: any) {\r\n this.fngClick.emit(event);\r\n }\r\n}\r\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\r\n 'fwe-btn': true,\r\n 'fwe-btn-link': true,\r\n 'fwe-disabled': disabled\r\n }\"\r\n [disabled]=\"disabled\"\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!iconOnly) {\n <ng-content></ng-content>\n }\n @if (!content) {\n <span>{{ text }}</span>\n }\n</button>\n","\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-chip-container',\n templateUrl: './chip-container.component.html',\n styleUrls: ['./chip-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngChipContainerComponent {\r\n @Input() large = false;\r\n}\r\n","<div class=\"fwe-chip-container\" [class.fwe-chip-container-lg]=\"large\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum ChipType {\r\n Choise = 'CHOISE',\r\n Category = 'CATEGORY',\r\n Filter = 'FILTER',\r\n Action = 'ACTION',\r\n Readonly = 'READONLY'\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngChipComponent {\r\n ChipType = ChipType;\r\n\r\n @Input() type: ChipType = ChipType.Choise;\r\n @Input() selected = false;\r\n @Input() disabled = false;\r\n @Input() icon: string | undefined;\r\n @Input() large = false;\r\n}\r\n","<div\n [ngClass]=\"{\r\n 'fwe-chip': true,\r\n 'fwe-selected': selected,\r\n 'fwe-disabled': disabled,\r\n 'fwe-chip-lg': large,\r\n 'fwe-category': type === ChipType.Category,\r\n 'fwe-filter': type === ChipType.Filter,\r\n 'fwe-readonly': type === ChipType.Readonly\r\n }\"\r\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n <ng-content></ng-content>\n</div>\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngClickOutside]'\r\n})\r\nexport class FngClickOutsideDirective {\r\n constructor(private elRef: ElementRef) {}\r\n\r\n @Output()\r\n public clickOutside = new EventEmitter();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement: HTMLElement) {\r\n const inside = this.elRef.nativeElement.contains(targetElement);\r\n if (!inside) {\r\n this.clickOutside.emit(null);\r\n }\r\n }\r\n}\r\n","\r\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n selector: 'fng-bottom-sheet',\n imports: [],\n templateUrl: './bottom-sheet.component.html',\n styleUrl: './bottom-sheet.component.scss',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngBottomSheetComponent {\r\n @Input() hasBackdrop: boolean = true;\r\n @Input() isExpanded: boolean = false;\r\n @Input() hideCloseIcon: boolean = false;\r\n @Input() expandFrom: 'bottom' | 'center' = 'center';\r\n\r\n @Output() close = new EventEmitter<void>();\r\n\r\n @HostBinding('class.bottom-sheet--open') isOpen = false;\r\n @HostBinding('class.bottom-sheet--expanded') get isExpandedState() {\r\n return this.isExpanded;\r\n }\r\n\r\n isClosing: boolean = false;\r\n\r\n private startY: number = 0;\r\n private currentY: number = 0;\r\n private swiping: boolean = false;\r\n\r\n ngOnInit() {\r\n setTimeout(() => {\r\n this.isOpen = true;\r\n }, 0); // trigger the transition on open\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart(event: TouchEvent) {\r\n this.startY = event.touches[0].clientY;\r\n this.swiping = true;\r\n }\r\n\r\n @HostListener('touchmove', ['$event'])\r\n onTouchMove(event: TouchEvent) {\r\n if (!this.swiping) return;\r\n\r\n this.currentY = event.touches[0].clientY;\r\n const deltaY = this.currentY - this.startY;\r\n\r\n if (deltaY < -50 && !this.isExpanded) {\r\n // swipe up to expand\r\n this.isExpanded = true;\r\n this.swiping = false;\r\n } else if (deltaY > 50 && this.isExpanded) {\r\n // swipe down to collapse\r\n this.isExpanded = false;\r\n this.swiping = false;\r\n } else if (deltaY > 100 && !this.isExpanded) {\r\n // swipe down to close\r\n this.closeBottomSheet();\r\n this.swiping = false;\r\n }\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd() {\r\n this.swiping = false;\r\n }\r\n\r\n toggleExpand() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n closeBottomSheet() {\r\n this.isClosing = true;\r\n this.hasBackdrop = false;\r\n setTimeout(() => {\r\n this.isClosing = false;\r\n this.isOpen = false;\r\n this.close.emit();\r\n }, 300); // wait for the transition to finish before closing\r\n }\r\n}\r\n","<div class=\"fwe-bottom-sheet-backdrop\" [class.fwe-bottom-sheet-backdrop--visible]=\"hasBackdrop\"\n(click)=\"closeBottomSheet()\"></div>\n<div class=\"fwe-bottom-sheet-container\" [class.fwe-bottom-sheet-container--open]=\"isOpen\"\n [class.fwe-bottom-sheet-container--expanded]=\"isExpanded\"\n [class.fwe-bottom-sheet-container--expand-from-center]=\"expandFrom === 'center'\"\n [class.fwe-bottom-sheet-container--with-backdrop]=\"hasBackdrop\"\n [class.fwe-bottom-sheet-container--closing]=\"isClosing\"\n >\n <div class=\"fwe-bottom-sheet-header\">\n <div class=\"fwe-bottom-sheet-drag-handle-container\" (click)=\"toggleExpand()\">\n <div class=\"fwe-bottom-sheet-drag-handle\"></div>\n </div>\n @if (!hideCloseIcon) {\n <button type=\"button\"\n class=\"fwe-bottom-sheet-close-btn\" (click)=\"closeBottomSheet()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n }\n </div>\n <div class=\"fwe-bottom-sheet-content\">\n <ng-content></ng-content>\n </div>\n</div>","\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLoadingIndicatorComponent {\r\n @Input() size: 'large' | 'medium' | 'small' = 'large';\r\n}\r\n","<div class=\"fwe-waiting-container\" [class.fwe-waiting-container-sm]=\"size === 'small'\">\r\n <div\r\n class=\"fwe-waiting-indicator\"\r\n [class.fwe-waiting-indicator-md]=\"size === 'medium'\"\r\n [class.fwe-waiting-indicator-sm]=\"size === 'small'\"\r\n >\r\n <div class=\"fwe-waiting-circle-1\"></div>\r\n <div class=\"fwe-waiting-circle-2\"></div>\r\n <div class=\"fwe-waiting-circle-3\"></div>\r\n <div class=\"fwe-waiting-circle-4\"></div>\r\n </div>\r\n <div class=\"fwe-waiting-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","/* eslint-disable @angular-eslint/no-empty-lifecycle-method */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnChanges, Optional, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { RouterLinkActive, RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n imports: [CommonModule, RouterModule],\r\n selector: 'fng-mobile-flyout-item',\r\n templateUrl: './mobile-flyout-item.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngMobileFlyoutItemComponent implements OnChanges {\r\n @Input() icon: string = '';\r\n @Input() pageLink: string = '';\r\n @Input() lastElement = false;\r\n\r\n onNavigateCallback: ((pageName: string) => void) | undefined;\r\n\r\n constructor(@Optional() public rla: RouterLinkActive | null) {}\r\n\r\n ngOnChanges(_: SimpleChanges): void {\r\n // lifecycle hook is called by parent component so do not remove it\r\n }\r\n\r\n onClick() {\r\n if (this.onNavigateCallback) {\r\n this.onNavigateCallback(this.pageLink);\r\n }\r\n }\r\n}\r\n","<a class=\"fwe-mobile-flyout-item\" [class.fwe-bb]=\"!lastElement\" (click)=\"onClick()\">\n @if (icon) {\n <i [class]=\"'fwe-mr-xs fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!rla) {\n <div class=\"fwe-flex-grow-1\" routerLinkActive=\"fwe-color-hero\">\n <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n </div>\n }\n @if (rla?.routerLinkActiveOptions) {\n <div\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 }\n @if (pageLink) {\n <i class=\"fwe-icon fwe-icon-arrows-right-2\"></i>\n }\n</a>\n<ng-template #itemContent>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList, OnDestroy, SimpleChange, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngMobileFlyoutItemComponent } from '../mobile-flyout-item/mobile-flyout-item.component';\r\n\r\n\r\n@Component({\n imports: [],\n selector: 'fng-mobile-flyout-page',\n templateUrl: './mobile-flyout-page.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngMobileFlyoutPageComponent implements AfterContentInit, OnDestroy {\r\n @ContentChildren(FngMobileFlyoutItemComponent) itemComponents!: QueryList<FngMobileFlyoutItemComponent>;\r\n @Input() name: string = '';\r\n @Input() back: string = 'Back';\r\n\r\n isfirstelement = false;\r\n visible = false;\r\n onNavigateCallback: ((pageName: string) => void) | undefined;\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n ngAfterContentInit(): void {\r\n this.initItemComponents();\r\n\r\n // if we have item components that are added dynamically (e.g. *ngIf)\r\n // we need to call init again to have all navigate callbacks defined\r\n this.itemComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\r\n this.initItemComponents();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onNavigate(pageName: string) {\r\n if (this.onNavigateCallback) {\r\n this.onNavigateCallback(pageName);\r\n }\r\n }\r\n\r\n onBack() {\r\n this.visible = false;\r\n }\r\n\r\n private initItemComponents() {\r\n if (!this.itemComponents) {\r\n return;\r\n }\r\n\r\n // register click-callbacks\r\n this.itemComponents.forEach(s => {\r\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\r\n });\r\n\r\n if (this.itemComponents.last) {\r\n // pass new value by ngOnChanges for proper change detection\r\n this.itemComponents.last.ngOnChanges({\r\n lastElement: new SimpleChange(null, true, false)\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-mobile-flyout-page\" [class.fwe-opened]=\"visible\">\n @if (!isfirstelement) {\n <div class=\"fwe-page-back\" (click)=\"onBack()\">\n <i></i>\n <div>{{ back }}</div>\n </div>\n }\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, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngMobileFlyoutPageComponent } from './mobile-flyout-page/mobile-flyout-page.component';\r\n\r\nimport { FngClickOutsideDirective } from '../../directives/click-outside.directive';\r\n\r\n@Component({\n imports: [FngClickOutsideDirective],\n selector: 'fng-mobile-flyout',\n templateUrl: './mobile-flyout.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngMobileFlyoutComponent implements AfterContentInit, OnDestroy {\r\n @Output() flyoutOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n @ContentChildren(FngMobileFlyoutPageComponent) pageComponents!: QueryList<FngMobileFlyoutPageComponent>;\r\n isOpen = false;\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n ngAfterContentInit(): void {\r\n this.initPageComponents();\r\n\r\n // if we have page components that are added dynamically (e.g. *ngIf)\r\n // we need to call init again to have all navigate callbacks defined\r\n this.pageComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\r\n this.initPageComponents();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onNavigate(pageName: string) {\r\n // handle clicks on router links\r\n if (!pageName) {\r\n this.isOpen = false;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n // handle page-navigation clicks\r\n const nextPage = this.pageComponents.find(p => p.name === pageName);\r\n if (nextPage) {\r\n nextPage.visible = true;\r\n }\r\n }\r\n\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n onClickOutside() {\r\n this.isOpen = false;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n private initPageComponents() {\r\n if (!this.pageComponents) {\r\n return;\r\n }\r\n\r\n // register click-callbacks and open the first element\r\n this.pageComponents.forEach((s, i) => {\r\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\r\n s.isfirstelement = i === 0;\r\n s.visible = i === 0;\r\n });\r\n }\r\n}\r\n","<div class=\"fwe-mobile-flyout\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\r\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"toggle()\"></button>\r\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum FngPaginationType {\r\n Numeric = 'NUMERIC',\r\n Dots = 'DOTS'\r\n}\r\n\r\n@Component({\n imports: [],\n selector: 'fng-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPaginationComponent {\r\n PaginationType = FngPaginationType;\r\n\r\n @Input() type: FngPaginationType = FngPaginationType.Numeric;\r\n @Input() pageCurrent = 0;\r\n @Input()\r\n set pageMax(value: number) {\r\n this.innerPageMax = value;\r\n this.dotArray = [...Array(value).fill(0).keys()];\r\n }\r\n get pageMax() {\r\n return this.innerPageMax;\r\n }\r\n\r\n @Output() changePage = new EventEmitter<number>();\r\n\r\n innerPageMax: number = 0;\r\n dotArray: number[] = [];\r\n\r\n onBtnDown() {\r\n if (this.pageCurrent > 1) {\r\n this.pageCurrent--;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n }\r\n\r\n onBtnUp() {\r\n if (this.pageCurrent < this.pageMax) {\r\n this.pageCurrent++;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n }\r\n\r\n onDotClick(index: number) {\r\n this.pageCurrent = index + 1;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n}\r\n","@if (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}\n\n@if (type === PaginationType.Dots) {\n <div class=\"fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <div class=\"fwe-pagination\">\n @for (index of dotArray; track index) {\n <span\n class=\"fwe-page-dot\"\n [class.fwe-selected]=\"index + 1 === pageCurrent\"\n (click)=\"onDotClick(index)\"\n ></span>\n }\n </div>\n </div>\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { FngPopoverContent, FngPopoverCloseEvent } from './popover.models';\r\n\r\nexport class PopoverRef<T = any> {\r\n private afterClosed = new Subject<FngPopoverCloseEvent<T>>();\r\n afterClosed$ = this.afterClosed.asObservable();\r\n\r\n constructor(public overlay: OverlayRef, public content: FngPopoverContent | undefined, public data: T) {\r\n overlay.backdropClick().subscribe(() => {\r\n this._close('backdropClick', undefined);\r\n });\r\n }\r\n\r\n close(data?: T) {\r\n this._close('close', data);\r\n }\r\n\r\n private _close(type: FngPopoverCloseEvent['type'], data?: T) {\r\n this.overlay.dispose();\r\n this.afterClosed.next({\r\n type,\r\n data\r\n });\r\n this.afterClosed.complete();\r\n }\r\n}\r\n","import { TemplateRef, Type } from '@angular/core';\r\n\r\nexport interface FngPopoverParams<T> {\r\n origin?: HTMLElement;\r\n content?: FngPopoverContent;\r\n options?: FngPopoverOptions;\r\n data: T;\r\n}\r\n\r\nexport type FngPopoverTypes = 'tooltip' | 'menu' | 'legend' | 'content';\r\nexport type FngPopoverPosition = 'top' | 'bottom' | 'right' | 'left';\r\n\r\nexport interface FngPopoverOptions {\r\n type: FngPopoverTypes;\r\n width?: string | number;\r\n height?: string | number;\r\n maxWidth?: string | number;\r\n maxHeight?: string | number;\r\n minWidth?: string | number;\r\n minHeight?: string | number;\r\n hasBackdrop?: boolean;\r\n backdropClass?: string;\r\n panelClass?: string;\r\n positions?: FngPopoverPosition[] | undefined;\r\n scrollStrategy?: FngScrollStrategy;\r\n}\r\n\r\nexport type FngScrollStrategy = 'noop' | 'close' | 'block';\r\n\r\nexport interface FngPopoverCloseEvent<T = any> {\r\n type: 'backdropClick' | 'close';\r\n data: T | undefined;\r\n}\r\n\r\nexport enum FngPopoverContentTypes {\r\n Template = 'template',\r\n Component = 'component',\r\n Text = 'text'\r\n}\r\n\r\nexport type FngPopoverContent = TemplateRef<any> | Type<any> | string;\r\n\r\nexport interface FngPopoverMenu<T = any> {\r\n text: string;\r\n icon: string;\r\n action: string;\r\n data?: T;\r\n}\r\n\r\nexport interface FngPopoverMenuAction<T = any> {\r\n action: string;\r\n payload: T;\r\n}\r\n\r\nexport interface FngPopoverMenuActionAware<T = any> {\r\n onMenuAction(event: FngPopoverMenuAction<T>): void;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverContentTypes } from '../popover.models';\r\n\r\n@Component({\n selector: 'fng-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverComponent implements OnInit {\r\n type: FngPopoverContentTypes | null = FngPopoverContentTypes.Text;\r\n content: any;\r\n context: any;\r\n\r\n constructor(private popoverRef: PopoverRef) {}\r\n\r\n ngOnInit() {\r\n this.content = this.popoverRef.content;\r\n if ('string' === typeof this.content) {\r\n this.type = FngPopoverContentTypes.Text;\r\n }\r\n\r\n if (this.content instanceof TemplateRef) {\r\n this.type = FngPopoverContentTypes.Template;\r\n this.context = {\r\n close: this.popoverRef.close.bind(this.popoverRef)\r\n };\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\">\n @switch (type) {\n @case ('text') {\n <div class=\"fwe-popover-content\" [innerHTML]=\"content\"></div>\n }\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"content; context: context\"></ng-container>\n }\n @case ('component') {\n <ng-container *ngComponentOutlet=\"content\"></ng-container>\n }\n }\n </div>\n</div>\n","export const defaultPositions = {\r\n bottom: {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: 22\r\n },\r\n top: {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -22\r\n },\r\n right: {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: 22\r\n },\r\n left: {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -22\r\n }\r\n};\r\nexport const defaultClasses = {\r\n tooltip: 'fng-popover-tooltip',\r\n menu: 'fng-popover-menu',\r\n legend: 'fng-popover-legend',\r\n content: 'fng-popover-content',\r\n bottom: 'fng-popover-bottom',\r\n top: 'fng-popover-top',\r\n right: 'fng-popover-right',\r\n left: 'fng-popover-left',\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport {\r\n Overlay,\r\n ConnectionPositionPair,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n NoopScrollStrategy,\r\n ConnectedPosition,\r\n CloseScrollStrategy,\r\n BlockScrollStrategy\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { PopoverRef } from './popover-ref';\r\nimport { FngPopoverComponent } from './popover/popover.component';\r\nimport { defaultPositions, defaultClasses } from './popover.defaults';\r\nimport { FngPopoverParams, FngPopoverOptions, FngPopoverTypes, FngPopoverPosition, FngScrollStrategy } from './popover.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FngPopoverService {\r\n readonly options: FngPopoverOptions = {\r\n type: 'tooltip',\r\n width: undefined,\r\n height: undefined,\r\n maxWidth: undefined,\r\n maxHeight: undefined,\r\n minWidth: undefined,\r\n minHeight: undefined,\r\n hasBackdrop: false,\r\n backdropClass: 'fng-popover-backdrop',\r\n panelClass: undefined,\r\n positions: undefined\r\n };\r\n\r\n get defaultOptions() {\r\n return this.options;\r\n }\r\n\r\n constructor(private overlay: Overlay, private injector: Injector) {}\r\n\r\n open<T>({ origin, content, data, options }: FngPopoverParams<T>): PopoverRef<T> {\r\n if (null == options) {\r\n options = this.defaultOptions;\r\n }\r\n const overlayConfig = this.getOverlayConfig({ origin, options });\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\r\n const injector = this.createInjector(popoverRef, this.injector);\r\n\r\n overlayRef.attach(new ComponentPortal(FngPopoverComponent, null, injector));\r\n\r\n return popoverRef;\r\n }\r\n\r\n private getOverlayConfig({ origin, options }: { origin: HTMLElement | undefined; options: FngPopoverOptions }): OverlayConfig { \r\n const type = null != options.type ? options.type : this.defaultOptions.type;\r\n const positions = null != options.positions ? options.positions : this.defaultOptions.positions;\r\n\r\n return new OverlayConfig({\r\n width: null != options.width ? options.width : this.defaultOptions.width,\r\n height: null != options.height ? options.height : this.defaultOptions.height,\r\n maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,\r\n maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,\r\n minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,\r\n minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,\r\n positionStrategy: this.getOverlayPosition(origin!, type, positions),\r\n scrollStrategy: this.overlay.scrollStrategies != null ? this.getScrollStrategy(options?.scrollStrategy) : ({} as NoopScrollStrategy),\r\n hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,\r\n backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass,\r\n panelClass: null != options.panelClass ? options.panelClass : this.defaultOptions.panelClass,\r\n });\r\n }\r\n\r\n private getScrollStrategy(scrollStrategy: FngScrollStrategy | undefined): NoopScrollStrategy | CloseScrollStrategy | BlockScrollStrategy {\r\n let strategy: NoopScrollStrategy | CloseScrollStrategy | BlockScrollStrategy;\r\n switch (scrollStrategy) {\r\n case 'noop':\r\n strategy = this.overlay.scrollStrategies.noop();\r\n break;\r\n case 'close':\r\n strategy = this.overlay.scrollStrategies.close();\r\n break;\r\n case 'block':\r\n strategy = this.overlay.scrollStrategies.block();\r\n break;\r\n default:\r\n strategy = this.overlay.scrollStrategies.block();\r\n break;\r\n }\r\n\r\n return strategy;\r\n }\r\n\r\n private getOverlayPosition(\r\n origin: HTMLElement,\r\n type: FngPopoverTypes,\r\n positions: FngPopoverPosition[] | undefined\r\n ): FlexibleConnectedPositionStrategy {\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions(null != positions ? this.getPositions(type, positions) : (this.getDefaultPositions(type) as ConnectedPosition[]))\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(16)\r\n .withPush(false);\r\n\r\n return positionStrategy;\r\n }\r\n\r\n private createInjector(popoverRef: PopoverRef, injector: Injector) {\r\n return Injector.create({\r\n parent: injector,\r\n providers: [{ provide: PopoverRef, useValue: popoverRef }]\r\n });\r\n }\r\n\r\n private getDefaultPositions(type: FngPopoverTypes | undefined | null): any {\r\n const pairs: any = [];\r\n let positions = [];\r\n const fn = (t: FngPopoverTypes, p: string[]) =>\r\n p.map(position => {\r\n pairs.push({\r\n ...defaultPositions[position as keyof typeof defaultPositions],\r\n panelClass: [defaultClasses[t], defaultClasses[position as keyof typeof defaultClasses]]\r\n });\r\n });\r\n switch (type) {\r\n case 'tooltip':\r\n positions = ['bottom', 'top'];\r\n fn('tooltip', positions);\r\n break;\r\n case 'menu':\r\n positions = ['right', 'left', 'bottom', 'top'];\r\n fn('menu', positions);\r\n break;\r\n case 'legend':\r\n positions = ['bottom'];\r\n fn('legend', positions);\r\n break;\r\n case 'content':\r\n positions = ['bottom'];\r\n fn('content', positions);\r\n break;\r\n default:\r\n break;\r\n }\r\n return pairs;\r\n }\r\n\r\n private getPositions(type: FngPopoverTypes, positions: FngPopoverPosition[]): ConnectionPositionPair[] {\r\n const pairs: any[] = [];\r\n positions.map(position => {\r\n pairs.push({\r\n ...defaultPositions[position as keyof typeof defaultPositions],\r\n panelClass: [defaultClasses[type], defaultClasses[position as keyof typeof defaultClasses]]\r\n });\r\n });\r\n\r\n return pairs;\r\n }\r\n}\r\n","\r\nimport { Component, Input, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngPopoverLegendOptions {\r\n maxWidth?: string | number;\r\n}\r\n\r\nexport interface FngLegendItem {\r\n name: string;\r\n text: string;\r\n}\r\n\r\n@Component({\n selector: 'fng-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n imports: [],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLegendComponent {\r\n @Input() items: FngLegendItem[] = [];\r\n @Input() options: FngPopoverLegendOptions = {};\r\n @ViewChild('tpl') templateRef: TemplateRef<any> | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n show(origin: HTMLElement) {\r\n if (0 < this.items.length && this.templateRef) {\r\n this.popoverRef = this.popoverService.open({\r\n content: this.templateRef,\r\n origin,\r\n options: {\r\n type: 'legend',\r\n hasBackdrop: true\r\n },\r\n data: undefined\r\n });\r\n }\r\n }\r\n\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","<ng-template #tpl>\n @if (0 < items.length) {\n <dl class=\"fng-legend\">\n @for (item of items; track item) {\n <div class=\"fng-legend-content\">\n <dt>{{ item?.name }}</dt>\n <dd>{{ item?.text }}</dd>\n </div>\n }\n </dl>\n }\n</ng-template>\n","import { Directive, ElementRef, ContentChild, HostListener, OnInit } from '@angular/core';\r\n\r\nimport { FngPopoverContentComponent } from '../popover-content/popover-content.component';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngLegend]'\r\n})\r\nexport class FngLegendDirective implements OnInit {\r\n @ContentChild('fngContent') ref: FngPopoverContentComponent | undefined;\r\n private origin: HTMLElement | undefined;\r\n\r\n constructor(private elmenetRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n }\r\n\r\n @HostListener('click')\r\n show() {\r\n if (null != this.ref && this.origin) {\r\n this.ref.show(this.origin);\r\n }\r\n }\r\n}\r\n","\r\nimport {\r\n Component,\r\n ViewChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { FngPopoverService } from '../popover.service';\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverCloseEvent, FngPopoverPosition } from '../popover.models';\r\n\r\nexport interface FngPopoverContentOptions {\r\n positions?: FngPopoverPosition[];\r\n maxWidth?: string | number;\r\n minHeight?: string | number;\r\n}\r\n\r\nexport interface FngPopoverContentActions {\r\n close: () => void;\r\n}\r\n\r\n@Component({\n selector: 'fng-popover-content',\n templateUrl: './popover-content.component.html',\n styleUrls: ['./popover-content.component.scss'],\n imports: [],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverContentComponent implements AfterViewInit, OnDestroy {\r\n @Input() options: FngPopoverContentOptions = {};\r\n @Output() close: EventEmitter<FngPopoverCloseEvent> = new EventEmitter();\r\n @Output() actions: EventEmitter<FngPopoverContentActions> = new EventEmitter();\r\n @ViewChild('tpl') templateRef!: TemplateRef<any>;\r\n @ViewChild('fngContent') contentRef: ElementRef | undefined;\r\n\r\n showDefault = false;\r\n offScreen = true;\r\n height = 16; // add default padding\r\n width = 16; // add default padding\r\n\r\n private closeSub: Subscription | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n ngOnDestroy(): void {\r\n if (this.closeSub) {\r\n this.closeSub.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const parent: HTMLElement = this.templateRef.elementRef.nativeElement.parentElement;\r\n parent.childNodes.forEach((node: any) => {\r\n if (null != node.dataset && undefined !== node.dataset['fngRoot']) {\r\n this.width = this.width + node.getBoundingClientRect().width;\r\n this.height = this.height + node.getBoundingClientRect().height;\r\n }\r\n });\r\n }\r\n\r\n show(origin: HTMLElement) {\r\n this.offScreen = false;\r\n this.popoverRef = this.popoverService.open({\r\n content: this.templateRef,\r\n origin,\r\n options: {\r\n positions: null != this.options && this.options.positions ? this.options.positions : undefined,\r\n width: this.width,\r\n height: this.height,\r\n maxWidth: null != this.options && this.options.maxWidth ? this.options.maxWidth : undefined, \r\n type: 'content',\r\n hasBackdrop: true\r\n },\r\n data: undefined\r\n });\r\n\r\n this.actions.emit({\r\n close: () => {\r\n this.hide();\r\n }\r\n });\r\n\r\n if (this.closeSub) {\r\n this.closeSub.unsubscribe();\r\n }\r\n\r\n this.closeSub = this.popoverRef?.afterClosed$.pipe(take(1)).subscribe(event => {\r\n this.close.emit(event);\r\n });\r\n }\r\n\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","@if (showDefault) {\n <div #default></div>\n} @else {\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}\n","import { Directive, ElementRef, HostListener, OnInit, ContentChild } from '@angular/core';\r\n\r\nimport { FngPopoverContentComponent } from './popover-content.component';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngPopoverContent]'\r\n})\r\nexport class FngPopoverContentDirective implements OnInit {\r\n @ContentChild('fngComponent') component: FngPopoverContentComponent | undefined;\r\n private origin!: HTMLElement;\r\n\r\n constructor(private elmenetRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n }\r\n\r\n @HostListener('click')\r\n show() {\r\n if (null != this.component) {\r\n this.component.show(this.origin);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n hide() {\r\n if (null != this.component) {\r\n this.component.hide();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverMenu, FngPopoverMenuAction, FngPopoverPosition } from '../popover.models';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngPopoverMenuOptions {\r\n positions?: FngPopoverPosition[];\r\n}\r\n\r\n@Component({\n selector: 'fng-popover-menu',\n templateUrl: './popover-menu.component.html',\n styleUrls: ['./popover-menu.component.scss'],\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverMenuComponent {\r\n @Input() icon = 'fwe-icon-menu-more fwe-icon-lg';\r\n @Input() menu: FngPopoverMenu[] = [];\r\n @Input() options: FngPopoverMenuOptions = {};\r\n\r\n @Output() menuAction: EventEmitter<FngPopoverMenuAction> = new EventEmitter();\r\n\r\n @ViewChild('menuTpl') menuTpl: TemplateRef<any> | undefined;\r\n @ViewChild('origin') origin: ElementRef | undefined;\r\n\r\n private popoverRef: PopoverRef | undefined;\r\n private itemHeight = 36;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n show(event: Event, content: TemplateRef<any> | undefined, origin: HTMLElement) {\r\n if (!content) {\r\n return;\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (0 < this.menu.length) {\r\n this.popoverRef = this.popoverService.open({\r\n content,\r\n origin,\r\n options: {\r\n type: 'menu',\r\n hasBackdrop: true,\r\n // height calc is needed for correct vertical positioning (+32 -> 2 * vertical padding 16px)\r\n height: +(this.itemHeight * this.menu.length + 32),\r\n positions: this.options != null && this.options.positions ? this.options.positions : undefined\r\n },\r\n data: undefined\r\n });\r\n }\r\n }\r\n\r\n action(action: string, payload: any) {\r\n this.menuAction.emit({ action, payload });\r\n\r\n this.popoverRef?.close();\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","@if (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-mr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n @for (item of menu; track item) {\n <li 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 fwe-mr-0\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n }\n </ul>\n </ng-template>\n}\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\n\r\nimport { FngPopoverPosition } from './../popover.models';\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngTooltipOptions {\r\n /**\r\n * @deprecated\r\n * Direct number input of maximum width of the tooltip is not supported anymore.\r\n * Use the `customClass` option instead and style the tooltip with CSS.\r\n * This option is kept for backward compatibility.\r\n */\r\n maxWidth?: string | number;\r\n delay?: number;\r\n customClass?: string;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngTooltip]'\r\n})\r\nexport class FngTooltipDirective implements OnChanges, OnDestroy {\r\n @Input('fngTooltip') text = '';\r\n @Input('fngTooltipVisible') isVisible: boolean = false;\r\n @Input('fngTooltipPositions') positions: FngPopoverPosition[] = [];\r\n @Input('fngTooltipOptions') options: FngTooltipOptions = { \r\n delay: 0,\r\n customClass: undefined\r\n };\r\n private origin: HTMLElement | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n private innerIsVisible = false;\r\n private timeoutHandle: any = null;\r\n\r\n constructor(\r\n private elmenetRef: ElementRef,\r\n private popoverService: FngPopoverService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n\r\n if (changes?.['isVisible']?.currentValue === true) {\r\n if (this.innerIsVisible === false) {\r\n this.open();\r\n }\r\n }\r\n if (changes?.['isVisible']?.currentValue === false) {\r\n if (this.innerIsVisible === true) {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n show() {\r\n if (this.options && this.options.delay && this.options.delay > 0) {\r\n this.timeoutHandle = setTimeout(() => {\r\n this.open();\r\n }, +this.options?.delay);\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n hide() {\r\n if (this.timeoutHandle != null) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n this.close();\r\n }\r\n\r\n private open() {\r\n if (this.innerIsVisible === false && this.origin) {\r\n this.popoverRef = this.popoverService.open({\r\n content: this.text,\r\n origin: this.origin,\r\n options: {\r\n type: 'tooltip',\r\n // using a set here removes duplicate positions and ensures that at least the bottom position will be used\r\n positions: [...new Set([...this.positions, 'bottom'] as FngPopoverPosition[])],\r\n scrollStrategy: 'close',\r\n panelClass: this.options.customClass || 'fng-tooltip-panel'\r\n },\r\n data: undefined\r\n });\r\n this.innerIsVisible = true;\r\n }\r\n }\r\n\r\n private close() {\r\n if (this.popoverRef != null) {\r\n this.popoverRef.close();\r\n }\r\n this.innerIsVisible = false;\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-progress',\r\n templateUrl: './progress.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngProgressComponent {\r\n @Input() progress: number = 0;\r\n @Input() error: boolean = false;\r\n @Input() background: 'white' | 'background' | 'black' = 'white';\r\n}\r\n","<div class=\"fwe-progress\">\r\n <div\r\n class=\"fwe-progress-bar\"\r\n role=\"progressbar\"\r\n [style.width.%]=\"progress\"\r\n [class.fwe-bg-red]=\"error\"\r\n [class.fwe-progress-bar-black]=\"background === 'black'\"\r\n [class.fwe-progress-bar-background]=\"background === 'background'\"\r\n [attr.aria-valuenow]=\"progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n</div>\r\n","import { Directive, ElementRef, OnChanges, SimpleChanges, Input, AfterViewInit, NgZone, Renderer2, OnDestroy } from '@angular/core';\r\nimport SimpleBar from 'simplebar';\r\n\r\n\r\nexport interface FngScrollableAware extends AfterViewInit {\r\n scrollableViewReady: boolean;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngScrollable]'\r\n})\r\nexport class FngScrollableDirective implements OnChanges, OnDestroy {\r\n @Input('fngScrollableScrollbarMinSize') scrollbarMinSize: number = 25;\r\n @Input('fngScrollableViewReady') viewReady: boolean = false;\r\n\r\n private sb: SimpleBar | undefined;\r\n private isScrolling = false;\r\n private resizeObserver: ResizeObserver = {} as ResizeObserver;\r\n\r\n constructor(private el: ElementRef, private ngZone: NgZone, private renderer: Renderer2) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['viewReady'].currentValue === true) {\r\n this.initScrollbar();\r\n this.initResizeObserver();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n private initScrollbar() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n // yes, we explict want to run outside angular to avoid unnecessary change detection cycles\r\n this.ngZone.runOutsideAngular(() => {\r\n this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });\r\n this.sb.getScrollElement()?.addEventListener(\r\n 'scroll',\r\n this.delay(() => {\r\n // triggered on scroll stop\r\n this.isScrolling = false;\r\n }),\r\n false\r\n );\r\n });\r\n this.updateMaxWidth();\r\n }\r\n\r\n private initResizeObserver() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateMaxWidth();\r\n });\r\n this.resizeObserver.observe(el);\r\n }\r\n\r\n private updateMaxWidth() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n const wrapper = el.querySelector('.simplebar-content-wrapper');\r\n const width = el.getBoundingClientRect().width;\r\n this.renderer.setStyle(wrapper, 'max-width', width + 'px');\r\n }\r\n\r\n private delay(callback: any) {\r\n let timer: number;\r\n return () => {\r\n if (!this.isScrolling) {\r\n // triggered on scroll start\r\n this.isScrolling = true;\r\n }\r\n\r\n window.clearTimeout(timer);\r\n timer = window.setTimeout(callback, 50);\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'fngSafeHtml'\r\n})\r\nexport class FngSafeHtmlPipe implements PipeTransform {\r\n constructor(protected sanitizer: DomSanitizer) {}\r\n\r\n public transform(value: any): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ElementRef, ViewEncapsulation, Output, EventEmitter, HostListener } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\n\r\nimport { FngSafeHtmlPipe } from '../../pipes/safe-html.pipe';\r\n\r\nexport class FngSearchSuggestion {\r\n /**\r\n * a html-string. e.g.: '<strong> hello </strong>'\r\n */\r\n template: string = '';\r\n\r\n /**\r\n * This Value will be used as new query when the user selects the suggestion.\r\n */\r\n value: string = '';\r\n\r\n /**\r\n * Creates a basic Suggestion from a string. The first query match is highlighted by bold tags.\r\n * @param suggestionString The suggested string (should contain the whole query)\r\n * @param query The current query. This string will be highlighted.\r\n * @returns a html-string.\r\n */\r\n static basicSuggestion(suggestionString: string, query: string): FngSearchSuggestion {\r\n const i = suggestionString.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());\r\n let template = suggestionString;\r\n if (i != -1) {\r\n const boldStart = i;\r\n const boldEnd = i + query.length;\r\n const part1 = suggestionString.substring(0, boldStart);\r\n const part2 = suggestionString.substring(boldStart, boldEnd);\r\n const part3 = suggestionString.substring(boldEnd, suggestionString.length);\r\n template = part1 + '<strong>' + part2 + '</strong>' + part3;\r\n }\r\n return { value: suggestionString, template };\r\n }\r\n}\r\n\r\n/**\r\n * A custom form element for search inputs.\r\n */\r\n@Component({\r\n imports: [FngSafeHtmlPipe],\r\n selector: 'fng-search-input',\r\n templateUrl: './search-input.component.html',\r\n styleUrls: ['./search-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngSearchInputComponent {\r\n @ViewChild('inputElement')\r\n inputRef!: ElementRef<HTMLInputElement>;\r\n\r\n /**\r\n * the querrry was changed, update the suggetion list\r\n */\r\n @Output()\r\n readonly fngChange = new EventEmitter<string>();\r\n\r\n /**\r\n * Start search on this event\r\n */\r\n @Output()\r\n readonly fngSearch = new EventEmitter<string>();\r\n\r\n /**\r\n * The search input label.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n innerValue: string = '';\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n }\r\n\r\n /**\r\n * The list of suggestions\r\n */\r\n @Input()\r\n set suggestions(value: FngSearchSuggestion[]) {\r\n this.selectedSuggestionIndex = -1;\r\n this.innerSuggestions = value;\r\n }\r\n\r\n /**\r\n * The list of suggestions capped by 10 entries\r\n */\r\n get cappedSuggestions(): FngSearchSuggestion[] {\r\n return this.innerSuggestions.slice(0, 10);\r\n }\r\n\r\n innerSuggestions: FngSearchSuggestion[] = [];\r\n hideSuggestionList: boolean = false;\r\n\r\n // This is the index of the selected element in dhe suggestion list.\r\n selectedSuggestionIndex = -1;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n keyhandler(event: KeyboardEvent) {\r\n if (!this.cappedSuggestions || !this.cappedSuggestions.length) {\r\n return;\r\n }\r\n\r\n // navigate inside the suggestion list\r\n if (event.key === 'ArrowUp') {\r\n if (this.selectedSuggestionIndex > 0) {\r\n this.selectedSuggestionIndex--;\r\n } else {\r\n this.selectedSuggestionIndex = this.cappedSuggestions.length - 1;\r\n }\r\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n if (this.selectedSuggestionIndex >= this.cappedSuggestions.length - 1) {\r\n this.selectedSuggestionIndex = 0;\r\n } else {\r\n this.selectedSuggestionIndex++;\r\n }\r\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\r\n }\r\n }\r\n\r\n onClickOutside(): void {\r\n this.hideSuggestionList = true;\r\n }\r\n\r\n onFocus() {\r\n this.hideSuggestionList = false;\r\n }\r\n\r\n onInput(event: any) {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = event.target.value;\r\n this.fngChange.emit(this.value);\r\n }\r\n\r\n // also triggert on \"Enter\" and \"Escape\"\r\n onSearch(event: any): void {\r\n event.stopPropagation();\r\n this.selectedSuggestionIndex = -1;\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n\r\n onSuggestionClick(suggestion: FngSearchSuggestion) {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = suggestion.value;\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n\r\n clearQuery(): void {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = '';\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n}\r\n","<div class=\"fwe-search-input\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\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 @if (innerSuggestions.length && !hideSuggestionList) {\n <div class=\"fwe-search-suggestions\">\n @for (suggestion of cappedSuggestions; track suggestion; let i = $index) {\n <div\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | fngSafeHtml\"></div>\n </div>\n }\n @if (innerSuggestions.length > 10) {\n <div class=\"fwe-ml-xxs\">...</div>\n }\n </div>\n }\n </div>\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Every sidebar instance has its unique instanceID.\r\n * When a sidebar is opened, this ID is the next currentsInstanceID.\r\n * Every instance with an other ID will be closed then.\r\n *\r\n * usage: <fng-sidebar-overlay [(open)]=\"sidebarOpen\" fngNavbarMargin> ... </fng-details-sidebar>\r\n */\r\n@Component({\n imports: [],\n selector: 'fng-sidebar-overlay',\n templateUrl: './sidebar-overlay.component.html',\n styleUrls: ['./sidebar-overlay.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSidebarOverlayComponent {\r\n static currentsInstanceID$ = new BehaviorSubject<number>(0);\r\n\r\n private instanceID: number;\r\n\r\n private internalOpen = false;\r\n\r\n @Input() get fngNavbarMargin(): boolean {\r\n return this.internalNavbarMargin;\r\n }\r\n set fngNavbarMargin(value: boolean | '') {\r\n this.internalNavbarMargin = value === '' || value;\r\n }\r\n internalNavbarMargin = false;\r\n\r\n @Input() set open(value: boolean | '') {\r\n this.internalOpen = value === '' || value;\r\n if (this.internalOpen) {\r\n FngSidebarOverlayComponent.currentsInstanceID$.next(this.instanceID);\r\n }\r\n }\r\n get open(): boolean {\r\n return this.internalOpen;\r\n }\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n constructor() {\r\n this.instanceID = Math.random();\r\n FngSidebarOverlayComponent.currentsInstanceID$.subscribe(id => {\r\n // close open instances when an other is opened\r\n if (this.internalOpen && id !== this.instanceID) {\r\n this.internalOpen = false;\r\n this.openChange.emit(this.internalOpen);\r\n }\r\n });\r\n }\r\n\r\n closeSidebar() {\r\n this.internalOpen = false;\r\n this.openChange.emit(this.internalOpen);\r\n }\r\n}\r\n","<div class=\"fwe-sidebar-overlay\" [class.fwe-sidebar-overlay--open]=\"open\" [class.fwe-navbar-margin]=\"internalNavbarMargin\">\r\n <button type=\"button\" class=\"fwe-sidebar-overlay-close-btn\" (click)=\"closeSidebar()\">\r\n <span class=\"fwe-sr-only\">Close</span>\r\n </button>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { AfterViewInit, Component, OnDestroy, output, signal, ViewEncapsulation } from '@angular/core';\r\nimport { FngSnackbarData } from './snackbar.models';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'fng-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styleUrls: ['./snackbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: { 'class': 'fng-snackbar' }\r\n})\r\nexport class FngSnackbarComponent implements AfterViewInit, OnDestroy {\r\n readonly data = signal<FngSnackbarData | undefined | null>({} as FngSnackbarData);\r\n readonly close = output();\r\n readonly action = output();\r\n readonly isShown = signal(false);\r\n readonly transformTranslateY = signal('translateY(24px)');\r\n\r\n private timeout: any;\r\n\r\n ngAfterViewInit() {\r\n const data = this.data();\r\n if (data && data.disappearAfter) {\r\n this.timeout = setTimeout(() => this.onClose(), data.disappearAfter);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout);\r\n }\r\n }\r\n\r\n onAction() {\r\n this.action.emit();\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\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-info': data()?.type === 'info',\n 'fwe-snackbar-warning': data()?.type === 'warning',\n 'fwe-snackbar-error': data()?.type === 'error',\n 'fwe-snackbar-shadow': data()?.darkBackground,\n 'fng-snackbar-entering': isShown(),\n 'fng-snackbar-leaving': !isShown()\n }\"\n [style.transform]=\"transformTranslateY()\"\n >\n <span>{{ data()?.text }}</span>\n @if (data()?.action) {\n <button aria-label=\"UserAction\" type=\"button\" class=\"fwe-snackbar-link-btn\" (click)=\"onAction()\">\n {{ data()?.action }}\n </button>\n }\n\n @if (data()?.action && data()?.showClose) {\n <div class=\"fwe-snackbar-separator\"></div>\n }\n\n @if (data()?.showClose) {\n <button aria-label=\"Close\" type=\"button\" class=\"fwe-snackbar-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n }\n</div>\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FngSnackbarData } from './snackbar.models';\r\n\r\nexport type FngSnackDescription = {\r\n data: FngSnackbarData;\r\n actionCallback?: () => void;\r\n closeCallback?: () => void;\r\n resolve: (value: unknown) => void;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FngSnackbarService {\r\n snacks$: Observable<FngSnackDescription>;\r\n\r\n private snacks = new Subject<FngSnackDescription>();\r\n\r\n constructor() {\r\n this.snacks$ = this.snacks.asObservable();\r\n }\r\n\r\n snack(data: FngSnackbarData, actionCallback?: () => void, closeCallback?: () => void) {\r\n return new Promise(resolve => {\r\n this.snacks.next({ data, actionCallback, closeCallback, resolve });\r\n });\r\n }\r\n}\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { FngSnackbarComponent } from './snackbar.component';\r\nimport { FngSnackbarConfig } from './snackbar.models';\r\nimport { FngSnackbarService, FngSnackDescription } from './snackbar.service';\r\n\r\ninterface FngSnackbarRef {\r\n componentRef: ComponentRef<FngSnackbarComponent>;\r\n complete: Subject<boolean>;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngSnackbarContainer]'\r\n})\r\nexport class FngSnackbarContainerDirective implements OnDestroy {\r\n @Input() fngSnackbarContainer: FngSnackbarConfig = {} as FngSnackbarConfig;\r\n\r\n private snacks: FngSnackbarRef[] = [];\r\n\r\n private snacksSub: Subscription;\r\n\r\n constructor(private viewContainerRef: ViewContainerRef, private snackbarService: FngSnackbarService) {\r\n this.snacksSub = this.snackbarService.snacks$.subscribe(SnackDescription => this.push(SnackDescription));\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.snacks != null && this.snacks.length > 0) {\r\n this.snacks.forEach(snack => {\r\n snack.complete.next(true);\r\n snack.complete.complete();\r\n snack.complete.unsubscribe();\r\n });\r\n }\r\n if (this.snacksSub != null) {\r\n this.snacksSub.unsubscribe();\r\n }\r\n }\r\n\r\n private push(snackDescription: FngSnackDescription) {\r\n const complete = new Subject<boolean>();\r\n const componentRef = this.viewContainerRef.createComponent(FngSnackbarComponent);\r\n const componentInstance = componentRef.instance;\r\n componentInstance.data.set({ ...this.fngSnackbarContainer, ...snackDescription.data });\r\n const snackbarRef = { componentRef, complete };\r\n componentInstance.close.subscribe(async () => {\r\n await this.remove(snackbarRef);\r\n if (snackDescription.closeCallback) {\r\n snackDescription.closeCallback();\r\n }\r\n });\r\n componentInstance.action.subscribe(async () => {\r\n if (componentInstance.data()?.closeOnAction) {\r\n await this.remove(snackbarRef);\r\n }\r\n if (snackDescription.actionCallback) {\r\n snackDescription.actionCallback();\r\n }\r\n });\r\n this.snacks.push(snackbarRef);\r\n this.updateStackIndices();\r\n snackDescription.resolve(snackbarRef.componentRef);\r\n }\r\n\r\n private async remove(snackbarRef: FngSnackbarRef) {\r\n const index = this.snacks.indexOf(snackbarRef);\r\n if (index !== -1) {\r\n const deletedSnackbarRef = this.snacks.splice(index, 1);\r\n await this.prepareRemove(snackbarRef, index);\r\n if (deletedSnackbarRef != null && deletedSnackbarRef.length > 0) {\r\n const deletedSnackbar = deletedSnackbarRef[0];\r\n if (deletedSnackbar.complete != null) {\r\n deletedSnackbar.complete.next(true);\r\n deletedSnackbar.complete.complete();\r\n deletedSnackbar.complete.unsubscribe();\r\n }\r\n if (deletedSnackbar.componentRef != null) {\r\n deletedSnackbar.componentRef.destroy();\r\n }\r\n }\r\n this.updateStackIndices();\r\n }\r\n }\r\n\r\n private prepareRemove(removedSnack?: FngSnackbarRef, removedIndex?: number): Promise<void> {\r\n return new Promise<void>(resolve => {\r\n if (removedSnack && removedIndex != null) {\r\n const stackIndex = this.snacks.length - removedIndex;\r\n const animatedValue = (stackIndex - 1) * 24;\r\n const translateY = stackIndex > 0 ? `translateY(-${animatedValue}px)` : 'translateY(24px)';\r\n removedSnack.componentRef.instance.isShown.set(false);\r\n removedSnack.componentRef.instance.transformTranslateY.set(translateY);\r\n setTimeout(() => resolve(), 300);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n private updateStackIndices() {\r\n this.snacks.forEach((snack, index) => {\r\n const stackIndex = this.snacks.length - 1 - index;\r\n const animatedValue = stackIndex * 24;\r\n setTimeout(() => {\r\n snack.componentRef.instance.isShown.set(true);\r\n snack.componentRef.instance.transformTranslateY.set(`translateY(-${animatedValue}px)`);\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FngSnackbarConfig } from './snackbar.models';\r\nimport { FngSnackbarContainerDirective } from './snackbar-container.directive';\r\n\r\n@Component({\n imports: [FngSnackbarContainerDirective],\n selector: 'fng-snackbar-container',\n templateUrl: './snackbar-container.component.html',\n styleUrls: ['./snackbar-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSnackbarContainerComponent {\r\n @Input() config: FngSnackbarConfig = {\r\n darkBackground: true,\r\n disappearAfter: 5000,\r\n closeOnAction: true\r\n };\r\n}\r\n","<div class=\"fwe-snackbar-container\">\r\n <div [fngSnackbarContainer]=\"config\"></div>\r\n</div>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-step-horizontal',\r\n templateUrl: './step-horizontal.component.html',\r\n styleUrls: ['./step-horizontal.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepHorizontalComponent {\r\n @Input() isActive = false;\r\n\r\n @Input() title: string = '';\r\n}\r\n","<div class=\"fng-overflow-hidden\" [class.fng-hidden]=\"!isActive\">\r\n <div class=\"fng-moving-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { delay } from 'rxjs/operators';\r\nimport { FngStepHorizontalComponent } from './step-horizontal/step-horizontal.component';\r\n\r\n\r\n@Component({\n imports: [],\n selector: 'fng-stepper-horizontal',\n templateUrl: './stepper-horizontal.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngStepperHorizontalComponent implements AfterContentInit, OnChanges {\r\n @ContentChildren(FngStepHorizontalComponent) stepComponents!: QueryList<FngStepHorizontalComponent>;\r\n\r\n @Input() stepIndex: number = 0;\r\n @Output() stepIndexChange = new EventEmitter<number>();\r\n\r\n ngOnChanges() {\r\n this.updateStepComponents();\r\n }\r\n\r\n updateStepComponents(): void {\r\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\r\n this.stepComponents.forEach((s, i) => {\r\n s.isActive = i == this.stepIndex;\r\n });\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.stepComponents) {\r\n return;\r\n }\r\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\r\n this.updateStepComponents();\r\n });\r\n this.updateStepComponents();\r\n }\r\n\r\n onStepClick(index: number) {\r\n if (this.stepIndex > index) {\r\n this.stepIndex = index;\r\n this.updateStepComponents();\r\n this.stepIndexChange?.emit(index);\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-stepper-horizontal\">\n @for (step of stepComponents; track step; let i = $index) {\n <div\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 }\n</div>\n\n<ng-content></ng-content>\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-step-vertical',\r\n templateUrl: './step-vertical.component.html',\r\n styleUrls: ['./step-vertical.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepVerticalComponent implements AfterViewInit {\r\n @ViewChild('stepContent') stepContent?: ElementRef;\r\n @ViewChild('stepContentContainer') stepContentContainer?: ElementRef;\r\n\r\n @Input() index: number = 0;\r\n\r\n @Input() title: string = '';\r\n\r\n @Input() isDone: boolean = false;\r\n\r\n @Input() isLastElement: boolean = false;\r\n\r\n // Note: OnChanges does not work because the input are not updated via bindings\r\n @Input() set isActive(value: boolean) {\r\n this._isActive = value;\r\n this.updateHeight();\r\n }\r\n get isActive(): boolean {\r\n return this._isActive;\r\n }\r\n _isActive = false;\r\n\r\n public onStepClickCallback: (i: number) => void = () => null;\r\n\r\n updateHeight() {\r\n if (this.stepContent && this.stepContentContainer) {\r\n if (this.isActive) {\r\n const itemHeight = this.stepContent.nativeElement.offsetHeight;\r\n this.stepContentContainer.nativeElement.style.height = itemHeight + 'px';\r\n } else {\r\n this.stepContentContainer.nativeElement.style.height = '20px';\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.updateHeight();\r\n }\r\n}\r\n","<div\r\n class=\"fwe-step-container\"\r\n [class.fwe-last-element]=\"isLastElement\"\r\n [class.fwe-step-active]=\"isActive\"\r\n [class.fwe-step-done]=\"isDone\"\r\n>\r\n <div class=\"fwe-step\" (click)=\"onStepClickCallback(index)\">\r\n <div class=\"fwe-step-no\">{{ index + 1 }}</div>\r\n <div class=\"fwe-step-name\">{{ title }}</div>\r\n </div>\r\n <div #stepContentContainer class=\"fwe-step-content-container\">\r\n <div #stepContent class=\"fwe-step-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { delay } from 'rxjs/operators';\r\nimport { FngStepVerticalComponent } from './step-vertical/step-vertical.component';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-stepper-vertical',\r\n templateUrl: './stepper-vertical.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepperVerticalComponent implements AfterContentInit, OnChanges {\r\n @ContentChildren(FngStepVerticalComponent) stepComponents!: QueryList<FngStepVerticalComponent>;\r\n\r\n @Input() stepIndex: number = 0;\r\n @Output() stepIndexChange = new EventEmitter<number>();\r\n\r\n ngOnChanges() {\r\n this.updateStepComponents();\r\n }\r\n\r\n updateStepComponents(): void {\r\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\r\n this.stepComponents.forEach((s, i) => {\r\n s.index = i;\r\n s.isDone = i < this.stepIndex;\r\n s.isActive = i == this.stepIndex;\r\n s.isLastElement = i == this.stepComponents.length - 1;\r\n s.onStepClickCallback = i => this.onStepClick(i);\r\n });\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.stepComponents) {\r\n return;\r\n }\r\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\r\n this.updateStepComponents();\r\n });\r\n this.updateStepComponents();\r\n }\r\n\r\n onStepClick(index: number) {\r\n if (this.stepIndex > index) {\r\n this.stepIndex = index;\r\n this.updateStepComponents();\r\n this.stepIndexChange?.emit(index);\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-stepper-vertical\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport interface FngTableColumnOrder {\r\n orderBy?: string;\r\n ascending: boolean;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngTh]',\r\n host: {\r\n '[class.fwe-table-order]': 'order != null',\r\n '[class.fwe-active]': 'active',\r\n '[class.fwe-table-order-ascending]': 'active && orderDescending === false',\r\n '[class.fwe-table-order-descending]': 'active && orderDescending === true',\r\n '[attr.abbr]': 'abbr',\r\n '[attr.colspan]': 'colspan',\r\n '[attr.headers]': 'headers',\r\n '[attr.rowspan]': 'rowspan',\r\n '[attr.scope]': 'scope',\r\n '(click)': 'onChangeOrder()'\r\n }\r\n})\r\nexport class FngTableHeaderCellDirective {\r\n @Input() order: FngTableColumnOrder | undefined;\r\n @Input() fngTh: string | undefined;\r\n\r\n @Output() changeOrder = new EventEmitter<string>();\r\n\r\n /* Attributes */\r\n @Input() abbr: string | undefined;\r\n @Input() colspan: number | undefined;\r\n @Input() headers: string | undefined;\r\n @Input() rowspan: number | undefined;\r\n @Input() scope: string | undefined;\r\n\r\n get active(): boolean {\r\n if (!this.order) {\r\n return false;\r\n }\r\n\r\n if (!this.order.orderBy || !this.fngTh) {\r\n return false;\r\n }\r\n\r\n return this.order.orderBy === this.fngTh;\r\n }\r\n\r\n get orderDescending(): boolean {\r\n return this.active && !this.order?.ascending;\r\n }\r\n\r\n onChangeOrder() {\r\n this.changeOrder.emit(this.fngTh);\r\n }\r\n}\r\n","import { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-tab-pane',\r\n templateUrl: './tab-pane.component.html',\r\n styleUrls: ['./tab-pane.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngTabPaneComponent implements OnChanges {\r\n static nextId = 0;\r\n // @deprecated Input() id is not in use anymore but still exists for backwards compatiblity\r\n @Input() id: string | undefined;\r\n @Input() name: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() active: boolean | undefined;\r\n @Input() isVisible: boolean | undefined;\r\n @Input() disabled: boolean = false;\r\n\r\n tabId: string | undefined;\r\n tabPaneId = `tab-panel-content-${++FngTabPaneComponent.nextId}`;\r\n\r\n private changesSubject = new Subject<boolean>();\r\n changes$ = this.changesSubject.asObservable();\r\n\r\n ngOnChanges(): void {\r\n this.changesSubject.next(true);\r\n }\r\n}\r\n","<div role=\"tabpanel\" [id]=\"tabPaneId\" [attr.aria-labelledby]=\"tabId\" [class.fng-show]=\"isVisible\" [class.fng-hide]=\"!isVisible\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\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 ViewEncapsulation,\n DOCUMENT\n} from '@angular/core';\r\nimport { noop, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngTabPaneComponent } from './tab-pane/tab-pane.component';\r\n\r\nexport interface FngTab {\r\n name: string;\r\n paneId: string | null;\r\n active?: boolean;\r\n icon?: string | null;\r\n disabled?: boolean;\r\n}\r\n\r\n// fill: use the remaining space and add in same proportion to every tab item\r\n// equal: make all tab items same width (as the one with largest content)\r\nexport type FngTabItemAppearance = 'fill' | 'equal' | 'default';\r\n\r\n// legacy: recommended for desktop only applications\r\n// responsive: desktop, tablet, mobile with scrollable tabs\r\nexport type FngTabViewType = 'legacy' | 'responsive';\r\n\r\n// configuration options for legacy tab view type\r\nexport interface FngTabsConfiguration {\r\n tabBar?: {\r\n fullWidth?: boolean;\r\n };\r\n tabItems?: {\r\n appearance: FngTabItemAppearance;\r\n };\r\n}\r\n\r\n// provides details about the left and right edges of the tab element and the tab content element\r\n// these values are used to determine the visual position of the tab with respect of its parent container\r\nexport interface FngTabDimensions {\r\n rootLeft: number;\r\n rootRight: number;\r\n contentLeft: number;\r\n contentRight: number;\r\n}\r\n\r\nexport interface FngTabScrollAnimation {\r\n finalScrollPosition: number;\r\n scrollDelta: number;\r\n}\r\n\r\nexport interface FngTabScrollHorizontalEdges {\r\n left: number;\r\n right: number;\r\n}\r\n\r\nexport interface FngBeforeTabChangeEvent {\r\n ok: () => void;\r\n cancel: () => void;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy {\r\n static nextId = 0;\r\n @Input('fngTabsViewType') viewType: FngTabViewType = 'responsive';\r\n @Input('fngTabsUseBottomDivider') showDivider: boolean = false;\r\n\r\n @Input() config: FngTabsConfiguration | null = null;\r\n @Output() fngBeforeTabChange = new EventEmitter<FngBeforeTabChangeEvent>();\r\n @Output() fngTabChange = new EventEmitter<{ previous: string; current: string }>();\r\n\r\n @ContentChildren(FngTabPaneComponent) panes: QueryList<FngTabPaneComponent> | undefined;\r\n @ViewChild('scroller') scroller: ElementRef | undefined;\r\n @ViewChild('scrollAera') scrollAera: ElementRef | undefined;\r\n @ViewChild('scrollContent') scrollContent: ElementRef | undefined;\r\n\r\n componentId = `tabs-${++FngTabsComponent.nextId}`;\r\n tabs: FngTab[] = [];\r\n useCompactDensity: boolean = true;\r\n private activeTab: FngTab | undefined = undefined;\r\n private elemScroller: HTMLElement | undefined;\r\n private elemScrollArea: HTMLElement | undefined;\r\n private elemScrollContent: HTMLElement | undefined;\r\n private readonly injectedWindow: Window | null;\r\n private resizeObserver!: ResizeObserver;\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n constructor(\r\n private elRef: ElementRef,\r\n @Inject(DOCUMENT) private document: Document,\r\n private renderer: Renderer2,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.injectedWindow = this.document.defaultView;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initTabs();\r\n if (null == this.activeTab) {\r\n this.panes?.map((pane, i) => {\r\n if (0 === i) {\r\n pane.isVisible = true;\r\n }\r\n });\r\n } else {\r\n const pane = this.panes?.find(pane => {\r\n if (this.activeTab) {\r\n return this.activeTab.paneId != null && pane.tabPaneId === this.activeTab.paneId;\r\n } else {\r\n return false;\r\n }\r\n });\r\n if (pane) {\r\n pane.isVisible = true;\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.elemScroller = this.scroller?.nativeElement;\r\n this.elemScrollArea = this.scrollAera?.nativeElement;\r\n this.elemScrollContent = this.scrollContent?.nativeElement;\r\n if (this.elemScroller == null || this.elemScrollArea == null || this.elemScrollContent == null) {\r\n return;\r\n }\r\n const initialWidth = this.elemScrollArea.offsetWidth;\r\n if (initialWidth != null && initialWidth > 768) {\r\n this.useCompactDensity = false;\r\n this.cd.detectChanges();\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n const width = this.elemScrollArea.offsetWidth;\r\n if (width != null && width > 768 && this.useCompactDensity === true) {\r\n this.useCompactDensity = false;\r\n this.cd.detectChanges();\r\n } else if (width != null && width <= 768 && this.useCompactDensity === false) {\r\n this.useCompactDensity = true;\r\n this.cd.detectChanges();\r\n }\r\n });\r\n\r\n if (this.elemScrollArea != null) {\r\n this.resizeObserver.observe(this.elemScrollArea);\r\n }\r\n\r\n this.handleTabPaneChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n showTabPane(id: string | null) {\r\n if (id == null) {\r\n return;\r\n }\r\n\r\n const pane = this.panes?.find(p => p.tabPaneId === id);\r\n const handleTabChange = (id: string) => {\r\n if (pane != null && pane.disabled !== true) {\r\n this.panes?.map(p => {\r\n p.isVisible = false;\r\n });\r\n pane.isVisible = true;\r\n\r\n this.tabs.map(tab => {\r\n if (tab.paneId !== pane.tabPaneId) {\r\n tab.active = false;\r\n } else {\r\n tab.active = true;\r\n }\r\n });\r\n this.fngTabChange.emit({\r\n previous: this.activeTab?.paneId || '',\r\n current: id\r\n });\r\n this.activeTab = this.tabs.find(tab => !!tab.active);\r\n this.cd.detectChanges();\r\n }\r\n };\r\n\r\n if (this.fngBeforeTabChange?.observers?.length > 0 && pane?.disabled !== true) {\r\n this.fngBeforeTabChange.emit({\r\n ok: () => {\r\n handleTabChange(id);\r\n },\r\n cancel: () => {\r\n noop();\r\n }\r\n });\r\n } else {\r\n handleTabChange(id);\r\n }\r\n }\r\n\r\n handleTabScroll(event: any, index: number) {\r\n if (this.elemScrollContent == null || this.elemScrollArea == null) {\r\n return;\r\n }\r\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\r\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\r\n\r\n // check if no scroll is needed\r\n if (scrollAreaWidth > scrollContentWidth) {\r\n return;\r\n }\r\n\r\n // check index\r\n if (!this.indexIsInRange(index)) {\r\n return;\r\n }\r\n\r\n // always scroll to 0 if scrolling to the first tab\r\n if (index === 0) {\r\n this.scrollTo(0);\r\n return;\r\n }\r\n\r\n // always scroll to the max value if scrolling to the last tab\r\n if (index === this.tabs.length - 1) {\r\n this.scrollTo(this.elemScrollContent.offsetWidth);\r\n return;\r\n }\r\n\r\n const currentTab: HTMLElement = event.target;\r\n this.scrollIntoView(index, currentTab);\r\n }\r\n\r\n private initTabs() {\r\n this.tabs = [];\r\n this.panes?.map((pane, i) => {\r\n pane.tabId = this.componentId + '-tab-' + i;\r\n const tab: FngTab = {\r\n name: null != pane.name ? pane.name : '',\r\n paneId: null != pane.tabPaneId ? pane.tabPaneId : null,\r\n icon: null != pane.icon ? pane.icon : null,\r\n active: null != pane.active ? pane.active : false,\r\n disabled: null != pane.disabled ? pane.disabled : false\r\n };\r\n this.tabs.push(tab);\r\n });\r\n\r\n this.initActiveTab();\r\n this.cd.detectChanges();\r\n }\r\n\r\n private initActiveTab() {\r\n const activeTab: FngTab | undefined = this.tabs.find((tab: FngTab) => !!tab.active);\r\n if (!activeTab && 0 < this.tabs.length) {\r\n this.tabs[0] = { ...this.tabs[0], active: true };\r\n this.activeTab = this.tabs[0];\r\n } else {\r\n this.activeTab = activeTab;\r\n }\r\n }\r\n\r\n private handleTabPaneChanges() {\r\n // first subscribe to any changes in tab pane, so that the tabs in this view wiil be updated\r\n this.panes?.forEach(pane => {\r\n pane.changes$.pipe(takeUntil(this.complete)).subscribe(() => {\r\n // on changes in a tab pane, we init the tabs again\r\n this.initTabs();\r\n });\r\n });\r\n }\r\n\r\n private scrollTo(scrollX: number | undefined) {\r\n if (scrollX == null) {\r\n return;\r\n }\r\n const currentScrollX = this.getScrollPosition();\r\n const safeScrollX = this.clampScrollValue(scrollX);\r\n if (safeScrollX == null || currentScrollX == null) {\r\n return;\r\n }\r\n const scrollDelta = safeScrollX - currentScrollX;\r\n this.animate({\r\n finalScrollPosition: safeScrollX,\r\n scrollDelta\r\n });\r\n }\r\n\r\n private scrollIntoView(index: number, tab: HTMLElement) {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n\r\n const scrollPosition = this.getScrollPosition();\r\n const barWidth = this.elemScrollArea.offsetWidth;\r\n if (barWidth == null || scrollPosition == null) {\r\n return;\r\n }\r\n\r\n const tabDimensions = this.computeDimensions(tab);\r\n if (tabDimensions == null) {\r\n return;\r\n }\r\n\r\n const nextIndex = this.findAdjacentTabIndexClosestToEdge(index, tabDimensions, scrollPosition, barWidth);\r\n if (!this.indexIsInRange(nextIndex)) {\r\n return;\r\n }\r\n\r\n const scrollIncrement = this.calculateScrollIncrement(index, nextIndex, scrollPosition, barWidth);\r\n if (scrollIncrement == null) {\r\n return;\r\n }\r\n\r\n this.incrementScroll(scrollIncrement);\r\n }\r\n\r\n private incrementScroll(scrollXIncrement: number) {\r\n // no scroll needed\r\n if (scrollXIncrement === 0) {\r\n return;\r\n }\r\n const scrollOperation = this.getIncrementScrollOperation(scrollXIncrement);\r\n if (scrollOperation == null) {\r\n return;\r\n }\r\n this.animate(scrollOperation);\r\n }\r\n\r\n private animate(animation: FngTabScrollAnimation) {\r\n // no animation needed\r\n if (animation.scrollDelta === 0) {\r\n return;\r\n }\r\n\r\n // no animation possible\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n\r\n this.stopScrollAnimation();\r\n\r\n // this animation uses the flip approach\r\n // https://aerotwist.com/blog/flip-your-animations/\r\n // https://css-tricks.com/animating-layouts-with-the-flip-technique/\r\n this.elemScrollArea.scrollLeft = animation.finalScrollPosition;\r\n this.setScrollContentStyleProperty('transform', `translateX(${animation.scrollDelta}px)`);\r\n // force repaint\r\n this.elemScrollArea.getBoundingClientRect();\r\n\r\n requestAnimationFrame(() => {\r\n this.renderer.addClass(this.elemScroller, 'fng-tab-scroller--animating');\r\n this.setScrollContentStyleProperty('transform', 'none');\r\n });\r\n }\r\n\r\n private stopScrollAnimation() {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n const currentScrollPosition = this.getAnimatingScrollPosition();\r\n if (currentScrollPosition == null) {\r\n return;\r\n }\r\n\r\n this.renderer.removeClass(this.elemScroller, 'fng-tab-scroller--animating');\r\n this.setScrollContentStyleProperty('transform', 'translateX(0px)');\r\n this.elemScrollArea.scrollLeft = currentScrollPosition;\r\n }\r\n\r\n private getAnimatingScrollPosition(): number | null {\r\n if (this.elemScrollArea == null) {\r\n return null;\r\n }\r\n const currentTranslateX = this.calculateCurrentTranslateX();\r\n const scrollLeft = this.elemScrollArea.scrollLeft;\r\n return scrollLeft - currentTranslateX;\r\n }\r\n\r\n private getIncrementScrollOperation(scrollX: number): FngTabScrollAnimation | null {\r\n const currentScrollX = this.getScrollPosition();\r\n if (currentScrollX == null) {\r\n return null;\r\n }\r\n\r\n const targetScrollX = scrollX + currentScrollX;\r\n const safeScrollX = this.clampScrollValue(targetScrollX);\r\n if (safeScrollX == null) {\r\n return null;\r\n }\r\n const scrollDelta = safeScrollX - currentScrollX;\r\n return {\r\n finalScrollPosition: safeScrollX,\r\n scrollDelta\r\n };\r\n }\r\n\r\n private clampScrollValue(scrollX: number): number | null {\r\n const edges = this.calculateScrollEdges();\r\n if (edges == null) {\r\n return null;\r\n }\r\n return Math.min(Math.max(edges.left, scrollX), edges.right);\r\n }\r\n\r\n private calculateScrollEdges(): FngTabScrollHorizontalEdges | null {\r\n if (this.elemScrollArea == null || this.elemScrollContent == null) {\r\n return null;\r\n }\r\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\r\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\r\n return {\r\n left: 0,\r\n right: scrollContentWidth - scrollAreaWidth\r\n };\r\n }\r\n\r\n private computeDimensions(tab: HTMLElement): FngTabDimensions | null {\r\n const rootWidth = tab.offsetWidth;\r\n const rootLeft = tab.offsetLeft;\r\n\r\n const tabContent: HTMLElement | null = tab.querySelector<HTMLElement>('.fng-tab-content');\r\n if (tabContent == null) {\r\n return null;\r\n }\r\n\r\n const contentWidth = tabContent.offsetWidth;\r\n const contentLeft = tabContent.offsetLeft;\r\n\r\n return {\r\n contentLeft: rootLeft + contentLeft,\r\n contentRight: rootLeft + contentLeft + contentWidth,\r\n rootLeft,\r\n rootRight: rootLeft + rootWidth\r\n };\r\n }\r\n\r\n private calculateScrollIncrement(index: number, nextIndex: number, scrollPosition: number, barWidth: number): number | null {\r\n const nextTab: HTMLElement | null = (this.elRef.nativeElement as HTMLElement).querySelector<HTMLElement>(\r\n `#${this.componentId}-tab-${nextIndex}`\r\n );\r\n\r\n if (nextTab == null) {\r\n return null;\r\n }\r\n\r\n const nextTabDimensions = this.computeDimensions(nextTab);\r\n\r\n if (nextTabDimensions == null) {\r\n return null;\r\n }\r\n\r\n const relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\r\n const relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\r\n const leftIncrement = relativeContentRight - 48;\r\n const rightIncrement = relativeContentLeft + 48;\r\n\r\n if (nextIndex < index) {\r\n return Math.min(leftIncrement, 0);\r\n }\r\n\r\n return Math.max(rightIncrement, 0);\r\n }\r\n\r\n private indexIsInRange(index: number) {\r\n return index >= 0 && index < this.tabs.length;\r\n }\r\n\r\n private getScrollPosition(): number | null {\r\n if (this.elemScrollArea == null) {\r\n return null;\r\n }\r\n const currentTranslateX = this.calculateCurrentTranslateX();\r\n const scrollLeft = this.elemScrollArea.scrollLeft;\r\n\r\n return scrollLeft - currentTranslateX;\r\n }\r\n\r\n private calculateCurrentTranslateX(): number {\r\n const transformValue = this.getScrollContentStyleValue('transform');\r\n if (transformValue == null) {\r\n return 0;\r\n }\r\n\r\n if (transformValue === 'none') {\r\n return 0;\r\n }\r\n\r\n // the transform value is in form of 'matrix(a, b, c, d, tx, ty)'\r\n // get all the parenthesized values\r\n const match = /\\((.+?)\\)/.exec(transformValue);\r\n if (!match) {\r\n return 0;\r\n }\r\n\r\n const matrixParams = match[1];\r\n // we need value of tx -> translateX\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [a, b, c, d, tx, ty] = matrixParams.split(',');\r\n return parseFloat(tx);\r\n }\r\n\r\n private getScrollContentStyleValue(propName: string) {\r\n if (this.elemScrollContent == null) {\r\n return;\r\n }\r\n return this.injectedWindow?.getComputedStyle(this.elemScrollContent).getPropertyValue(propName);\r\n }\r\n\r\n private setScrollContentStyleProperty(propName: string, value: any) {\r\n this.renderer.setStyle(this.elemScrollContent, propName, value);\r\n }\r\n\r\n private findAdjacentTabIndexClosestToEdge(\r\n index: number,\r\n tabDimensions: FngTabDimensions,\r\n scrollPosition: number,\r\n barWidth: number\r\n ): number {\r\n /**\r\n * tabs are laid out in the tab scroller like this:\r\n *\r\n * scroll position\r\n * +---+\r\n * | | bar width\r\n * | +-----------------------------------+\r\n * | | |\r\n * | v v\r\n * | +-----------------------------------+\r\n * v | tab scroller |\r\n * +------------+--------------+-------------------+\r\n * | tab | tab | tab |\r\n * +------------+--------------+-------------------+\r\n * | |\r\n * +-----------------------------------+\r\n *\r\n * to determine the next adjacent index, we look at the tab root left and\r\n * tab root right, both relative to the scroll position. if the tab root\r\n * left is less than 0, then we know it's out of view to the left. if the\r\n * tab root right minus the bar width is greater than 0, we know the tab is\r\n * out of view to the right. from there, we either increment or decrement\r\n * the index.\r\n */\r\n const relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\r\n const relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\r\n const relativeRootDelta = relativeRootLeft + relativeRootRight;\r\n const leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\r\n const rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\r\n\r\n if (leftEdgeIsCloser) {\r\n return index - 1;\r\n }\r\n\r\n if (rightEdgeIsCloser) {\r\n return index + 1;\r\n }\r\n\r\n return -1;\r\n }\r\n}\r\n","@if (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 @for (tab of tabs; track tab; let i = $index) {\n <li\n class=\"fwe-legacy-tab-item\"\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\n >\n @if (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 [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n >{{ tab.name }}</a\n >\n }\n @if (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 [attr.aria-disabled]=\"true === tab?.disabled ? 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 }\n </li>\n }\n </ul>\n <div class=\"fwe-legacy-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n }\n\n @if (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 @for (tab of tabs; track tab; let i = $index) {\n <button\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 [class.fng-tab--disabled]=\"tab?.disabled\"\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 }\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 }\n\n <ng-template #tabPanelContent>\n <ng-content></ng-content>\n </ng-template>\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n inject,\r\n TemplateRef,\r\n ViewContainerRef,\r\n Injector,\r\n Type,\r\n HostBinding,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\r\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// public type for position names\r\nexport type ConnectedPositionName =\r\n | 'topStart'\r\n | 'topCenter'\r\n | 'topEnd'\r\n | 'bottomStart'\r\n | 'bottomCenter'\r\n | 'bottomEnd'\r\n | 'startTop'\r\n | 'startCenter'\r\n | 'startBottom'\r\n | 'endTop'\r\n | 'endCenter'\r\n | 'endBottom';\r\n\r\n// build the 12 standard connected positions (rtl-friendly via start/end)\r\nexport const POSITION_MAP: Record<ConnectedPositionName, ConnectedPosition> = {\r\n // above the origin\r\n topStart: { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n topCenter: { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\r\n topEnd: { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n\r\n // below the origin\r\n bottomStart: { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n bottomCenter: { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\r\n bottomEnd: { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n\r\n // to the start (left in ltr, right in rtl)\r\n startTop: { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\r\n startCenter: { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\r\n startBottom: { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\r\n\r\n // to the end (right in ltr, left in rtl)\r\n endTop: { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\r\n endCenter: { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\r\n endBottom: { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }\r\n};\r\n\r\n// a convenient fallback order that tries below → above → right → left\r\nexport const ALL_POSITIONS: ConnectedPosition[] = [\r\n POSITION_MAP.bottomCenter,\r\n POSITION_MAP.bottomStart,\r\n POSITION_MAP.bottomEnd,\r\n POSITION_MAP.topCenter,\r\n POSITION_MAP.topStart,\r\n POSITION_MAP.topEnd,\r\n POSITION_MAP.endCenter,\r\n POSITION_MAP.endTop,\r\n POSITION_MAP.endBottom,\r\n POSITION_MAP.startCenter,\r\n POSITION_MAP.startTop,\r\n POSITION_MAP.startBottom\r\n];\r\n\r\n@Directive({\r\n selector: '[fngOverlayOutlet]',\r\n standalone: true\r\n})\r\nexport class FngOverlayOutletDirective implements OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly injector = inject(Injector);\r\n private overlayRef?: OverlayRef;\r\n private portalInstance?: TemplatePortal | ComponentPortal<unknown>;\r\n private positionSubscription?: Subscription;\r\n\r\n /**\r\n * content for the overlay. supply either a templateref (preferred for arbitrary html)\r\n * or a component type (will be created via componentportal).\r\n *\r\n * example (templateref): [fngOverlayOutlet]=\"tplref\"\r\n * example (component): [fngOverlayOutlet]=\"youroverlaycomponent\"\r\n */\r\n @Input('fngOverlayOutlet') content!: TemplateRef<any> | Type<any>;\r\n\r\n /** optional context when using templateref content. */\r\n @Input() fngOverlayContext: Record<string, any> | null = null;\r\n\r\n /** css class(es) to apply to the overlay panel. */\r\n @Input() fngOverlayPanelClass: string | string[] | undefined;\r\n\r\n /** whether the overlay should have a backdrop. defaults to true. */\r\n @Input() fngOverlayHasBackdrop = true;\r\n\r\n /** backdrop class; defaults to a transparent clickable backdrop. */\r\n @Input() fngOverlayBackdropClass: string = 'cdk-overlay-transparent-backdrop';\r\n\r\n /** close the overlay when the backdrop is clicked (if there is one). */\r\n @Input() fngOverlayCloseOnBackdropClick = true;\r\n\r\n /** close the overlay when pressing escape. */\r\n @Input() fngOverlayCloseOnEscape = true;\r\n\r\n /** optional x/y offsets applied to every position. */\r\n @Input() fngOverlayOffsetX: number = 0;\r\n @Input() fngOverlayOffsetY: number = 0;\r\n\r\n /**\r\n * choose positions by name, or omit to use all_positions fallback order.\r\n * example: [fngOverlayPositions]=\"['topEnd','topStart']\"\r\n */\r\n @Input() fngOverlayPositions?: ConnectedPositionName[];\r\n\r\n /**\r\n * if you want a different origin element than the host (rare), pass an htmlelement here.\r\n */\r\n @Input() fngOverlayOrigin?: HTMLElement | ElementRef<HTMLElement> | null;\r\n\r\n /** emits when the overlay is closed */\r\n @Output() fngOverlayClosed = new EventEmitter<void>();\r\n\r\n @HostListener('click', ['$event'])\r\n _onHostClick(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n this.toggle();\r\n }\r\n\r\n // adds css class to the host element to indicate interactivity\r\n @HostBinding('class.fwe-cursor-pointer') readonly cssClass = true;\r\n\r\n constructor(private readonly host: ElementRef<HTMLElement>) {}\r\n\r\n ngOnDestroy(): void {\r\n this.positionSubscription?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n this.portalInstance = undefined;\r\n }\r\n\r\n open(): void {\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.createOverlay();\r\n this.bindOverlayLifecycle();\r\n }\r\n\r\n if (!this.portalInstance) {\r\n this.portalInstance = this.createPortalFromContent();\r\n }\r\n\r\n if (this.overlayRef && this.portalInstance && !this.overlayRef.hasAttached()) {\r\n this.overlayRef.attach(this.portalInstance);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.overlayRef.detach();\r\n this.fngOverlayClosed.emit();\r\n }\r\n }\r\n\r\n toggle(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private getPositionClass(position: ConnectedPosition): string {\r\n if (position.overlayY === 'bottom' && position.overlayX === 'center') {\r\n return 'fng-popover-top';\r\n } else if (position.overlayY === 'top' && position.overlayX === 'center') {\r\n return 'fng-popover-bottom';\r\n } else if (position.overlayX === 'end' && position.overlayY === 'center') {\r\n return 'fng-popover-left';\r\n } else if (position.overlayX === 'start' && position.overlayY === 'center') {\r\n return 'fng-popover-right';\r\n }\r\n return 'fng-popover-default';\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n const originEl = this.resolveOriginElement();\r\n const positions = this.resolvePositions(); \r\n\r\n const initialPanelClasses = ['fng-overlay'];\r\n let initialOffsetX = this.fngOverlayOffsetX || 0;\r\n let initialOffsetY = this.fngOverlayOffsetY || 0;\r\n\r\n // add any user-specified panel classes\r\n if (this.fngOverlayPanelClass) {\r\n if (typeof this.fngOverlayPanelClass === 'string') {\r\n initialPanelClasses.push(this.fngOverlayPanelClass);\r\n } else {\r\n initialPanelClasses.push(...this.fngOverlayPanelClass);\r\n }\r\n } \r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(originEl)\r\n .withFlexibleDimensions(true)\r\n .withPush(true)\r\n .withViewportMargin(16)\r\n .withPositions(positions)\r\n .withDefaultOffsetX(initialOffsetX)\r\n .withDefaultOffsetY(initialOffsetY);\r\n\r\n const scrollStrategy = this.overlay.scrollStrategies.block();\r\n\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: this.fngOverlayHasBackdrop,\r\n backdropClass: this.fngOverlayBackdropClass,\r\n panelClass: initialPanelClasses,\r\n disposeOnNavigation: true\r\n });\r\n\r\n // clean up any existing subscription\r\n this.positionSubscription?.unsubscribe();\r\n \r\n let previousPositionClass: string | undefined;\r\n \r\n // create new subscription and store it\r\n this.positionSubscription = positionStrategy.positionChanges.subscribe(position => {\r\n // remove all possible position classes first\r\n ['fng-popover-right', 'fng-popover-left', 'fng-popover-top', 'fng-popover-bottom', 'fng-popover-default'].forEach(cls => {\r\n overlayRef.removePanelClass(cls);\r\n });\r\n \r\n const newPositionClass = this.getPositionClass(position.connectionPair); \r\n \r\n // if this is not the first position change and the position class has changed,\r\n // use the default class instead\r\n if (previousPositionClass && previousPositionClass !== newPositionClass) {\r\n overlayRef.addPanelClass('fng-popover-default');\r\n } else {\r\n overlayRef.addPanelClass(newPositionClass || 'fng-popover-default');\r\n }\r\n \r\n previousPositionClass = newPositionClass;\r\n });\r\n\r\n return overlayRef;\r\n }\r\n\r\n private createPortalFromContent(): TemplatePortal | ComponentPortal<unknown> {\r\n // handle templateref content\r\n if (this.content instanceof TemplateRef) {\r\n return new TemplatePortal(this.content, this.vcr, this.fngOverlayContext ?? {});\r\n }\r\n // assume it is a component type\r\n const componentType = this.content as Type<any>;\r\n return new ComponentPortal(componentType, this.vcr, this.injector);\r\n }\r\n\r\n private bindOverlayLifecycle(): void {\r\n if (!this.overlayRef) return;\r\n\r\n if (this.fngOverlayHasBackdrop && this.fngOverlayCloseOnBackdropClick) {\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n\r\n if (this.fngOverlayCloseOnEscape) {\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n const ev = event as KeyboardEvent & { keyCode: number };\r\n if (ev.key === 'Escape' || ev.keyCode === ESCAPE) {\r\n // avoid closing if user holds a modifier (e.g., ctrl+esc) — rare but safe\r\n if (!hasModifierKey(ev)) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private resolveOriginElement(): HTMLElement {\r\n const o = this.fngOverlayOrigin;\r\n if (!o) return this.host.nativeElement;\r\n if (o instanceof ElementRef) return o.nativeElement;\r\n return o;\r\n }\r\n\r\n private resolvePositions(): ConnectedPosition[] {\r\n if (this.fngOverlayPositions?.length) {\r\n // convert specified position names to actual positions\r\n const specifiedPositions = this.fngOverlayPositions.map(name => ({ ...POSITION_MAP[name] }));\r\n\r\n // get all remaining positions that weren't specified\r\n const remainingPositions = ALL_POSITIONS.filter(\r\n defaultPos => !this.fngOverlayPositions!.some(name => JSON.stringify(POSITION_MAP[name]) === JSON.stringify(defaultPos))\r\n );\r\n\r\n // return specified positions first, followed by remaining positions\r\n return [...specifiedPositions, ...remainingPositions];\r\n }\r\n return ALL_POSITIONS.map(p => ({ ...p }));\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'fng-overlay-content',\n imports: [],\n templateUrl: './overlay-content.component.html',\n styleUrl: './overlay-content.component.scss'\n})\r\nexport class FngOverlayContentComponent {}\r\n","<div class=\"fwe-popover-container\">\r\n <div class=\"fwe-triangle\"></div>\r\n <div class=\"fwe-popover\">\r\n <div class=\"fwe-popover-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { FngClickOutsideDirective } from '../directives/click-outside.directive';\r\nimport {\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemHeaderComponent\r\n} from './accordion';\r\nimport { FngBottomSheetComponent } from './bottom-sheet/bottom-sheet.component';\r\nimport { FngBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { FngButtonComponent } from './buttons/button/button.component';\r\nimport { FngLinkButtonComponent } from './buttons/link-button/link-button.component';\r\nimport { FngChipContainerComponent } from './chips/chip-container/chip-container.component';\r\nimport { FngChipComponent } from './chips/chip/chip.component';\r\nimport { FngLoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';\r\nimport { FngMobileFlyoutItemComponent } from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\r\nimport { FngMobileFlyoutPageComponent } from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\r\nimport { FngMobileFlyoutComponent } from './mobile-flyout/mobile-flyout.component';\r\nimport { FngPaginationComponent } from './pagination/pagination.component';\r\nimport { FngLegendComponent } from './popovers/legend/legend.component';\r\nimport { FngLegendDirective } from './popovers/legend/legend.directive';\r\nimport { FngPopoverContentComponent } from './popovers/popover-content/popover-content.component';\r\nimport { FngPopoverContentDirective } from './popovers/popover-content/popover-content.directive';\r\nimport { FngPopoverMenuComponent } from './popovers/popover-menu/popover-menu.component';\r\nimport { FngPopoverComponent } from './popovers/popover/popover.component';\r\nimport { FngTooltipDirective } from './popovers/tooltip/tooltip.directive';\r\nimport { FngProgressComponent } from './progress/progress.component';\r\nimport { FngScrollableDirective } from './scroll';\r\nimport { FngSearchInputComponent } from './search-input/search-input.component';\r\nimport { FngSidebarOverlayComponent } from './sidebar-overlay/sidebar-overlay.component';\r\nimport { FngSnackbarContainerComponent } from './snackbar/snackbar-container.component';\r\nimport { FngStepHorizontalComponent } from './stepper-horizontal/step-horizontal/step-horizontal.component';\r\nimport { FngStepperHorizontalComponent } from './stepper-horizontal/stepper-horizontal.component';\r\nimport { FngStepVerticalComponent } from './stepper-vertical/step-vertical/step-vertical.component';\r\nimport { FngStepperVerticalComponent } from './stepper-vertical/stepper-vertical.component';\r\nimport { FngTableHeaderCellDirective } from './table-header-cell/table-header-cell.directive';\r\nimport { FngTabPaneComponent } from './tabs/tab-pane/tab-pane.component';\r\nimport { FngTabsComponent } from './tabs/tabs.component';\r\nimport { FngOverlayOutletDirective } from './overlay/overlay-outlet.directive';\r\nimport { FngOverlayContentComponent } from './overlay/overlay-content/overlay-content.component'; \r\n\r\n@NgModule({\r\n imports: [\r\n FngClickOutsideDirective,\r\n FngPaginationComponent,\r\n FngMobileFlyoutPageComponent,\r\n FngMobileFlyoutItemComponent,\r\n FngMobileFlyoutComponent,\r\n FngLoadingIndicatorComponent,\r\n FngChipComponent,\r\n FngChipContainerComponent,\r\n FngTabsComponent,\r\n FngTabPaneComponent,\r\n FngBreadcrumbComponent,\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemHeaderComponent,\r\n FngButtonComponent,\r\n FngLinkButtonComponent,\r\n FngSearchInputComponent,\r\n FngSnackbarContainerComponent,\r\n FngStepHorizontalComponent,\r\n FngStepperHorizontalComponent,\r\n FngStepperVerticalComponent,\r\n FngStepVerticalComponent,\r\n FngTableHeaderCellDirective,\r\n FngScrollableDirective,\r\n FngProgressComponent,\r\n FngLegendDirective,\r\n FngPopoverComponent,\r\n FngPopoverContentDirective,\r\n FngPopoverContentComponent,\r\n FngPopoverMenuComponent,\r\n FngTooltipDirective,\r\n FngLegendDirective,\r\n FngLegendComponent,\r\n FngSidebarOverlayComponent,\r\n FngBottomSheetComponent,\r\n FngOverlayOutletDirective,\r\n FngOverlayContentComponent\r\n ],\r\n exports: [\r\n FngClickOutsideDirective,\r\n FngBreadcrumbComponent,\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemHeaderComponent,\r\n FngButtonComponent,\r\n FngLinkButtonComponent,\r\n FngChipContainerComponent,\r\n FngChipComponent,\r\n FngLoadingIndicatorComponent,\r\n FngMobileFlyoutComponent,\r\n FngMobileFlyoutItemComponent,\r\n FngMobileFlyoutPageComponent,\r\n FngPaginationComponent,\r\n FngSearchInputComponent,\r\n FngSnackbarContainerComponent,\r\n FngStepHorizontalComponent,\r\n FngStepperHorizontalComponent,\r\n FngStepperVerticalComponent,\r\n FngStepVerticalComponent,\r\n FngTableHeaderCellDirective,\r\n FngScrollableDirective,\r\n FngProgressComponent,\r\n FngTabsComponent,\r\n FngTabPaneComponent,\r\n FngLegendDirective,\r\n FngPopoverComponent,\r\n FngPopoverContentDirective,\r\n FngPopoverContentComponent,\r\n FngPopoverMenuComponent,\r\n FngTooltipDirective,\r\n FngLegendDirective,\r\n FngLegendComponent,\r\n FngSidebarOverlayComponent,\r\n FngBottomSheetComponent,\r\n FngOverlayOutletDirective,\r\n FngOverlayContentComponent\r\n ]\r\n})\r\nexport class FestoAngularComponentsModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FngSnackbarComponent } from './snackbar.component';\r\nimport { FngSnackbarContainerDirective } from './snackbar-container.directive';\r\nimport { FngSnackbarContainerComponent } from './snackbar-container.component';\r\n\r\nexport * from './snackbar.models';\r\nexport * from './snackbar.component';\r\nexport * from './snackbar-container.component';\r\nexport * from './snackbar-container.directive';\r\n\r\n@NgModule({\r\n imports: [FngSnackbarComponent, FngSnackbarContainerDirective, FngSnackbarContainerComponent],\r\n exports: [FngSnackbarContainerComponent, FngSnackbarContainerDirective, FngSnackbarContainerComponent],\r\n providers: []\r\n // bootstrap: [SnackbarComponent]\r\n})\r\nexport class FestoAngularSnackbarModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';\r\nimport { Modal } from '../index';\r\n\r\nexport interface FngAlertData {\r\n title: string;\r\n subtitle?: string;\r\n body: string;\r\n alertType: 'info' | 'warning' | 'error';\r\n cancel?: string;\r\n ok?: string;\r\n strong?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule, FngSafeHtmlPipe],\n selector: 'fng-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngAlertComponent implements AfterViewInit, Modal<FngAlertData, any> {\r\n @Input() data: FngAlertData = {} as FngAlertData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.closeBtn) {\r\n (this.closeBtn.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n this.ok.emit();\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n}\r\n","<div\n class=\"fwe-modal\"\n [ngClass]=\"{\r\n 'fwe-modal--with-indicator-bar': data.strong === true,\r\n 'fwe-modal--warning': data.alertType === 'warning',\r\n 'fwe-modal--error': data.alertType === 'error',\r\n 'fwe-modal--info': data.alertType === 'info'\r\n }\"\r\n >\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">\n {{ data.subtitle }}\n </h2>\n }\n <h1 class=\"fwe-modal-h1\">\n {{ data.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button\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 }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg\" [class.fwe-btn-hero]=\"!data.strong\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';\r\nimport { Modal } from '../index';\r\n\r\nexport interface FngConfirmData {\r\n title: string;\r\n subtitle?: string;\r\n body: string;\r\n cancel?: string;\r\n ok?: string;\r\n large?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule, FngSafeHtmlPipe],\n selector: 'fng-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngConfirmComponent implements AfterViewInit, Modal<FngConfirmData, any> {\r\n @Input() data: FngConfirmData = {} as FngConfirmData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n if (this.closeBtn) {\r\n (this.closeBtn.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n this.ok.emit();\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n}\r\n","<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data.large }\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n }\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n\r\n/**\r\n * A custom form element for text inputs.\r\n */\r\n@Component({\r\n imports: [FormsModule, NgClass],\r\n selector: 'fng-text-input',\r\n templateUrl: './text-input.component.html',\r\n styleUrls: ['./text-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngTextInputComponent),\r\n multi: true\r\n }\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngTextInputComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * The text input label.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * When true, shows validation state icons (checkmark for valid, X for invalid).\r\n */\r\n @Input() showValidationIcons: boolean = false;\r\n\r\n /**\r\n * A string specifying the type of control to render.\r\n */\r\n @Input()\r\n get type(): string {\r\n return this.innerType;\r\n }\r\n set type(value: string) {\r\n const supported = ['text', 'number', 'password', 'date', 'time', 'datetime-local'];\r\n if (value != null && supported.indexOf(value) !== -1) {\r\n this.innerType = value;\r\n } else {\r\n this.innerType = 'text';\r\n }\r\n }\r\n protected innerType = 'text';\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this.innerReadonly;\r\n }\r\n set readonly(value: boolean) {\r\n this.innerReadonly = coerceBooleanProperty(value);\r\n }\r\n private innerReadonly = false;\r\n\r\n @Input() step: number | undefined = undefined;\r\n @Input() min: number | undefined = undefined;\r\n @Input() max: number | undefined = undefined;\r\n @Input() tabindex: number | undefined = undefined;\r\n @Input() placeholder: string | undefined = undefined;\r\n @Input() name: string = '';\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n protected innerDisabled = false;\r\n\r\n /**\r\n * The inner value.\r\n */\r\n innerValue: string = '';\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n /**\r\n * Error description when invalid.\r\n */\r\n @Input() error: string = '';\r\n\r\n /**\r\n * Hint description when valid.\r\n */\r\n @Input() hint: string | undefined= undefined;\r\n\r\n @ViewChild('inputElement') inputElement: ElementRef | undefined;\r\n\r\n /**\r\n * When true the text input has focus.\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Triggered on change.\r\n */\r\n onChange: ((value: string) => void) | undefined;\r\n\r\n /**\r\n * Triggered on touch.\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n /**\r\n * Called on component initialisation.\r\n */\r\n ngOnInit(): void {\r\n this.onBlur();\r\n }\r\n\r\n /**\r\n * Writes the value.\r\n * @param value The value.\r\n */\r\n writeValue(value: string): void {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n }\r\n\r\n /**\r\n * Registers a function to onChange.\r\n * @param fn The registered function.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a function to onTouched.\r\n * @param fn The registered function.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Called when the text input is in focus.\r\n */\r\n onFocus() {\r\n this.focused = true;\r\n }\r\n\r\n /**\r\n * Called when the text input blurs.\r\n */\r\n onBlur() {\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the disabled state.\r\n * @param isDisabled When true the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"fwe-input-text\" [class.fwe-no-pointer-events]=\"readonly === true\" [ngClass]=\"{ 'fng-input-text--with-icon': showValidationIcons }\">\n <input\n #inputElement\n [disabled]=\"disabled\"\n [required]=\"required === true || false\"\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 (focus)=\"onFocus()\"\n [(ngModel)]=\"value\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n } @else {\n <span class=\"fwe-input-text-info fng-projected\"><ng-content select=\".fng-hint\"></ng-content></span>\n } @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n } @else {\n <span class=\"fwe-input-text-invalid fng-projected\"><ng-content select=\".fng-error\"></ng-content></span>\n } @if(showValidationIcons){\n <i class=\"fng-icon-svg-validation-state\" aria-hidden=\"true\"></i>\n }\n</label>\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n AbstractControlOptions,\r\n AsyncValidatorFn,\r\n FormBuilder,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidatorFn\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { Modal } from '../index';\r\n\r\nimport { FngTextInputComponent } from '../../forms/text-input/text-input.component';\r\n\r\nexport interface FngPromptData {\r\n title: string;\r\n subtitle?: string;\r\n label: string;\r\n hint?: string;\r\n errors?: { [key: string]: string };\r\n cancel?: string;\r\n ok?: string;\r\n value?: string;\r\n placeholder?: string;\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\r\n}\r\n\r\n@Component({\n imports: [ReactiveFormsModule, FormsModule, FngTextInputComponent],\n selector: 'fng-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPromptComponent implements OnInit, AfterViewInit, OnDestroy, Modal<FngPromptData, any> {\r\n @Input() data: FngPromptData = {} as FngPromptData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n @ViewChild('inputField') inputField: FngTextInputComponent | undefined;\r\n\r\n form: FormGroup = this.formBuilder.group({\r\n text: this.formBuilder.control('')\r\n });\r\n\r\n error = '';\r\n\r\n get text(): string {\r\n return this.form?.get('text')?.value;\r\n }\r\n\r\n get valid(): boolean {\r\n return !!this.form.get('text')?.valid;\r\n }\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n constructor(private formBuilder: FormBuilder) {}\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n this.onOk();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n const text = this.data.value || '';\r\n\r\n const textControl = this.formBuilder.control(text, this.data?.validatorOrOpts, this.data?.asyncValidator);\r\n\r\n this.form = this.formBuilder.group({\r\n text: textControl\r\n });\r\n\r\n if (text) {\r\n textControl.markAsDirty();\r\n }\r\n\r\n textControl.statusChanges.pipe(takeUntil(this.complete)).subscribe(sc => {\r\n if (sc === 'INVALID') {\r\n this.handleErrors();\r\n } else {\r\n this.error = '';\r\n }\r\n });\r\n this.handleErrors();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.inputField) {\r\n (this.inputField.inputElement?.nativeElement as HTMLInputElement).focus();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n if (this.valid) {\r\n this.ok.emit(this.text);\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n\r\n private handleErrors() {\r\n const e = this.form.get('text')?.errors;\r\n if (e) {\r\n const key = Object.keys(e)[0];\r\n if (this.data.errors != null && this.data.errors[key]) {\r\n this.error = this.data.errors[key];\r\n } else {\r\n this.error = 'Prompt input is invalid.';\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-modal\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n }\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input\n #inputField\n type=\"text\"\n [label]=\"data.label\"\n formControlName=\"text\"\n [error]=\"error\"\n [hint]=\"data.hint\"\n [placeholder]=\"data.placeholder\"\n >\n </fng-text-input>\n </form>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FngSafeHtmlPipe } from '../../pipes/safe-html.pipe';\r\nimport { Modal } from '../modals.module';\r\n\r\nimport { register } from 'swiper/element/bundle';\r\nimport { Swiper } from 'swiper/types';\r\n\r\nregister();\r\n\r\nexport interface FngImageDescriptiveContent {\r\n title: string;\r\n body: string;\r\n}\r\n\r\nexport interface FngImageGalleryData {\r\n startIndex: number;\r\n images: { url: string; alt: string; content?: FngImageDescriptiveContent; containMode?: boolean }[];\r\n thumbnailImages?: { url: string; alt: string; containMode?: boolean }[];\r\n pagination?: boolean;\r\n descriptiveContent?: boolean;\r\n slideChanged?: (index: number) => void;\r\n showScaleButton: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [CommonModule, FngSafeHtmlPipe],\r\n selector: 'fng-image-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class FngImageGalleryComponent implements Modal<FngImageGalleryData, any> {\r\n @Input() data: FngImageGalleryData = {\r\n startIndex: 0,\r\n images: [],\r\n thumbnailImages: [],\r\n slideChanged: () => null,\r\n pagination: true,\r\n descriptiveContent: false,\r\n showScaleButton: false\r\n };\r\n\r\n @Output() close = new EventEmitter<any>();\r\n @Output() scaleUp = new EventEmitter<any>();\r\n @Output() scaleDown = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n currentIndex = this.data.startIndex + 1;\r\n isScaled = false;\r\n swiperRef: Swiper | undefined;\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n onSwiperInit(event: CustomEvent<[Swiper]>) {\r\n const [swiper] = event.detail;\r\n this.swiperRef = swiper;\r\n setTimeout(() => {\r\n swiper.slideTo(this.data.startIndex - 1, 0, false);\r\n });\r\n }\r\n\r\n onNext() {\r\n this.swiperRef?.slideNext();\r\n }\r\n\r\n onPrev() {\r\n this.swiperRef?.slidePrev();\r\n }\r\n\r\n onSlideChange(event: CustomEvent<[Swiper]>) {\r\n const [swiper] = event.detail;\r\n this.currentIndex = swiper.activeIndex + 1;\r\n this.cd.markForCheck();\r\n this.cd.detectChanges();\r\n if (this.data?.slideChanged) {\r\n this.data.slideChanged(swiper.activeIndex);\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onScale() {\r\n if(!this.isScaled) {\r\n this.scaleUp.emit();\r\n this.isScaled = true;\r\n } else {\r\n this.scaleDown.emit();\r\n this.isScaled = false;\r\n }\r\n }\r\n}\r\n","@if (data != null) {\n <div\n class=\"fwe-modal fwe-modal-image-gallery\"\n [class.fwe-modal-image-gallery--with-thumbnails]=\"data.thumbnailImages?.length\"\n [class.fwe-modal-image-gallery--with-container]=\"data.descriptiveContent\"\n >\n <div class=\"fwe-image-gallery-header\">\n @if (data.pagination) {\n <div class=\"fwe-pagination fwe-pagination--on-dark-bg\">\n <button aria-label=\"previous\" type=\"button\" class=\"fwe-navigate-btn-down\" (click)=\"onPrev()\"></button>\n <span class=\"fwe-page-current\">{{ currentIndex }}</span>\n <span class=\"fwe-page-max\">{{ data.images.length }}</span>\n <button aria-label=\"next\" type=\"button\" class=\"fwe-navigate-btn-up\" (click)=\"onNext()\"></button>\n </div>\n }\n @if (data.showScaleButton === true) {\n <button\n aria-label=\"scale up\"\n type=\"button\"\n class=\"fwe-btn fwe-btn-link fwe-ml-auto\"\n (click)=\"onScale()\"\n >\n <i\n class=\"fwe-icon fwe-icon-lg fwe-color-white fwe-modal-image-gallery-scale\"\n [ngClass]=\"{ 'fwe-icon-arrows-scale-down': isScaled === true, 'fwe-icon-arrows-scale-up': isScaled === false }\"\n ></i>\n </button>\n }\n <button\n aria-label=\"close\"\n type=\"button\"\n class=\"fwe-btn fwe-btn-link\"\n (click)=\"onClose()\"\n [ngClass]=\"{ 'fwe-ml-auto': !data.showScaleButton, 'fwe-ml-3': data.showScaleButton }\"\n >\n <i class=\"fwe-icon fwe-icon-2x fwe-color-white fwe-icon-menu-close fwe-modal-image-gallery-close\"></i>\n </button>\n </div>\n @switch (data.descriptiveContent) {\n @case (true) {\n <div class=\"fwe-image-gallery-container\">\n <ng-container *ngTemplateOutlet=\"baseGallery\"></ng-container>\n @if (data.images[currentIndex - 1].content; as imageContent) {\n <div class=\"fwe-image-gallery-content\">\n <h3>{{ imageContent.title }}</h3>\n <div [innerHTML]=\"imageContent.body | fngSafeHtml\"></div>\n </div>\n }\n </div>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"baseGallery\"></ng-container>\n }\n }\n </div>\n}\n\n<ng-template #baseGallery>\n <div class=\"fwe-image-gallery-wrapper\">\n <swiper-container\n keyboard\n space-between=\"0\"\n zoom=\"true\"\n thumbs-swiper=\".fng-image-gallery-thumbs-swiper\"\n (swiperinit)=\"onSwiperInit($any($event))\"\n (swipernavigationnext)=\"onSlideChange($any($event))\"\n (swipernavigationprev)=\"onSlideChange($any($event))\"\n (swiperslidechange)=\"onSlideChange($any($event))\"\n class=\"gallery-swiper fwe-image-gallery\"\n >\n @for (image of data.images; track image) {\n <swiper-slide>\n <div class=\"swiper-zoom-container\">\n <img [alt]=\"image.alt\" [src]=\"image.url\" [class.fwe-object-fit-contain]=\"image.containMode\" [class.fwe-p-m]=\"image.containMode\" />\n </div>\n </swiper-slide>\n }\n </swiper-container>\n @if (data.thumbnailImages?.length) {\n <swiper-container\n slides-per-view=\"auto\"\n free-mode=\"true\"\n threshold=\"20\"\n watch-slides-progress=\"true\"\n class=\"thumbs-swiper fng-image-gallery-thumbs-swiper\"\n >\n @for (thumbnail of data.thumbnailImages; track thumbnail) {\n <swiper-slide class=\"fng-image-gallery-thumbs-swiper-slide\">\n <img\n [alt]=\"thumbnail.alt\"\n [src]=\"thumbnail.url\"\n [class.fwe-object-fit-contain]=\"thumbnail.containMode\"\n [class.fwe-p-xxxs]=\"thumbnail.containMode\"\n />\n </swiper-slide>\n }\n </swiper-container>\n }\n </div>\n </ng-template>\n","import { Injectable, SimpleChange } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { Modal, ModalOptions, ModalResult } from './index';\r\nimport { FngAlertComponent, FngAlertData } from './alert/alert.component';\r\nimport { FngConfirmComponent, FngConfirmData } from './confirm/confirm.component';\r\nimport { Subject } from 'rxjs';\r\nimport { FngPromptComponent, FngPromptData } from './prompt/prompt.component';\r\nimport { FngImageGalleryComponent, FngImageGalleryData } from './image-gallery/image-gallery.component';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FngModalService {\r\n constructor(protected overlay: Overlay, private router: Router) {}\r\n\r\n alert(data: FngAlertData, options?: ModalOptions) {\r\n return this.open<FngAlertData, any, FngAlertComponent>(data, FngAlertComponent, {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true,\r\n ...options\r\n });\r\n }\r\n\r\n confirm(data: FngConfirmData, options?: ModalOptions) {\r\n options = options || {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngConfirmData, any, FngConfirmComponent>(data, FngConfirmComponent, options);\r\n }\r\n\r\n prompt(data: FngPromptData, options?: ModalOptions) {\r\n options = options || {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngPromptData, any, FngPromptComponent>(data, FngPromptComponent, options);\r\n }\r\n\r\n openImageGallery(data: FngImageGalleryData) {\r\n const options: ModalOptions = {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngImageGalleryData, any, FngImageGalleryComponent>(data, FngImageGalleryComponent, options);\r\n }\r\n\r\n open<TData, TResult, TModal extends Modal<TData, TResult>>(\r\n data: TData,\r\n modal: ComponentType<TModal>,\r\n options: ModalOptions\r\n ): Promise<ModalResult<TResult>> {\r\n return new Promise((resolve, reject) => {\r\n const complete = new Subject<boolean>();\r\n const positionStrategy = options.positionStrategy || this.overlay.position().global().centerHorizontally().centerVertically();\r\n const scrollStrategy = this.overlay.scrollStrategies.block();\r\n const overlayRef = this.overlay.create({\r\n panelClass: options.overlayClass,\r\n positionStrategy,\r\n scrollStrategy,\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n ...options\r\n });\r\n\r\n if (options.closeOnNavigation) {\r\n this.router.events\r\n .pipe(\r\n filter(e => e instanceof NavigationStart),\r\n takeUntil(complete)\r\n )\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'navigated' })));\r\n }\r\n\r\n if (options.shouldCloseOnBackdrop) {\r\n overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'backdrop' })));\r\n }\r\n\r\n const modalPortal = new ComponentPortal(modal);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n if (componentRef != null && componentRef.instance != null) {\r\n componentRef.instance.data = data;\r\n if (componentRef.instance.close != null) {\r\n componentRef.instance.close\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'close' })));\r\n }\r\n if (componentRef.instance.cancel != null) {\r\n componentRef.instance.cancel\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'cancel' })));\r\n }\r\n if (componentRef.instance.ok != null) {\r\n componentRef.instance.ok\r\n .pipe(takeUntil(complete))\r\n .subscribe(result => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'ok', result })));\r\n }\r\n if (componentRef.instance.ngOnChanges != null) {\r\n componentRef.instance.ngOnChanges({ data: new SimpleChange(null, data, true) });\r\n }\r\n } else {\r\n this.dispose(overlayRef, complete).then(() => reject(new Error('Could not attach component to overlay.')));\r\n }\r\n });\r\n }\r\n\r\n private dispose(overlayRef: OverlayRef, complete: Subject<boolean>) {\r\n return new Promise<void>(resolve => {\r\n complete.next(true);\r\n complete.complete();\r\n complete.unsubscribe();\r\n overlayRef.dispose();\r\n resolve();\r\n });\r\n }\r\n}\r\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n imports: [],\r\n selector: 'fng-custom-modal',\r\n templateUrl: './custom-modal.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngCustomModalComponent {\r\n private _visible: boolean = false;\r\n\r\n @Input() closeOnBackdrop: boolean = false;\r\n @Input() large: boolean = false;\r\n @Input()\r\n set visible(value: boolean) {\r\n this._visible = value;\r\n\r\n if (!value && this.visibleChange) {\r\n this.visibleChange.emit(false);\r\n }\r\n }\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n /**\r\n * Emits false on close modal by close, cancel, click outside and close by providing value false to visible\r\n */\r\n @Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input() header: string = '';\r\n @Input() subheader: string | null = '';\r\n\r\n @Input() acknowledgeLabel: string = 'Ok';\r\n @Output() acknowledge: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Input() cancelLabel: string = 'Cancel';\r\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n closeModal(): void {\r\n this.visible = false;\r\n }\r\n\r\n onClose(): void {\r\n if (this.close) {\r\n this.close.emit();\r\n }\r\n this.closeModal();\r\n }\r\n\r\n onCancel(): void {\r\n this.closeModal();\r\n if (this.cancel) {\r\n this.cancel.emit();\r\n }\r\n }\r\n\r\n onAcknowledge(): void {\r\n if (this.acknowledge) {\r\n this.acknowledge.emit();\r\n }\r\n }\r\n\r\n onClickOutside(): void {\r\n if (this.closeOnBackdrop) {\r\n this.onClose();\r\n }\r\n }\r\n\r\n onClickInside(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","@if (visible) {\n <div class=\"fwe-modal-backdrop\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (subheader?.length) {\n <h2 class=\"fwe-modal-h2\">{{ subheader }}</h2>\n }\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 <button class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ cancelLabel }}\n </button>\n <button class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onAcknowledge()\">\n {{ acknowledgeLabel }}\n </button>\n </div>\n </div>\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FngAlertComponent } from './alert/alert.component';\r\nimport { FngConfirmComponent } from './confirm/confirm.component';\r\nimport { FngPromptComponent } from './prompt/prompt.component';\r\nimport { FngCustomModalComponent } from './custom-modal/custom-modal.component';\r\nimport { FngImageGalleryComponent } from './image-gallery/image-gallery.component';\r\n\r\nexport * from './index';\r\nexport * from './alert/alert.component';\r\nexport * from './confirm/confirm.component';\r\nexport * from './prompt/prompt.component';\r\nexport * from './custom-modal/custom-modal.component';\r\nexport * from './image-gallery/image-gallery.component';\r\n\r\n@NgModule({\r\n imports: [FngAlertComponent, FngConfirmComponent, FngPromptComponent, FngCustomModalComponent, FngImageGalleryComponent],\r\n exports: [FngAlertComponent, FngConfirmComponent, FngPromptComponent, FngCustomModalComponent, FngImageGalleryComponent],\r\n providers: []\r\n})\r\nexport class FestoAngularModalsModule {}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n forwardRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngCheckboxComponent),\n multi: true\n }\n ]\n})\r\nexport class FngCheckboxComponent implements ControlValueAccessor {\r\n @Input() name: string = '';\r\n @Input() large = false;\r\n @Input() valid = true;\r\n @Input() labelPosition: 'before' | 'after' | 'below' = 'after';\r\n\r\n private innerId = `fng-checkbox-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-checkbox-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n if (value !== this.checked) {\r\n this.isChecked = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isChecked = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this.isDisabled;\r\n }\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this.disabled) {\r\n this.isDisabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isDisabled = false;\r\n\r\n @Input()\r\n get indeterminate(): boolean {\r\n return this.isIndeterminate;\r\n }\r\n set indeterminate(value: boolean) {\r\n const changed = value !== this.isIndeterminate;\r\n this.isIndeterminate = coerceBooleanProperty(value);\r\n if (changed) {\r\n this.indeterminateChange.emit(this.isIndeterminate);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n private isIndeterminate = false;\r\n\r\n @Input() value: string = 'false';\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n private isRequired: boolean = false;\r\n\r\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: (value: any) => void = () => null;\r\n\r\n onTouched: () => any = () => null;\r\n\r\n writeValue(value: any) {\r\n this.checked = !!value;\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInteractionEvent(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.indeterminate) {\r\n Promise.resolve().then(() => {\r\n this.isIndeterminate = false;\r\n this.indeterminateChange.emit(this.isIndeterminate);\r\n });\r\n }\r\n if (!this.valid) {\r\n this.valid = true;\r\n }\r\n if (this.required) {\r\n this.required = false;\r\n }\r\n this.checked = !this.checked;\r\n if (this.controlValueAccessorChangeFn != null) {\r\n this.controlValueAccessorChangeFn(this.checked);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.change.emit(this.checked);\r\n }\r\n }\r\n}\r\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]=\"{\r\n 'fwe-label-below': labelPosition == 'below',\r\n 'fwe-label-before': labelPosition == 'before'\r\n }\"\r\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 @if (!indeterminate && checked) {\n @if (large) {\n <svg 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 }\n @if (!large) {\n <svg 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 }\n }\n @if (indeterminate && !checked) {\n <div class=\"fwe-indeterminate-indicator\"></div>\n }\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n </label>\n","import { ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * A control to display a color.\r\n */\r\n@Component({\n imports: [OverlayModule],\n selector: 'fng-color-indicator',\n templateUrl: './color-indicator.component.html',\n styleUrls: ['./color-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngColorIndicatorComponent {\r\n /**\r\n * The label above the color.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * A text next to the color.\r\n */\r\n @Input() text: string = '';\r\n\r\n /**\r\n * The current color as a string.\r\n * Examples: '#ffffff', 'red', 'rgba(1,2,3,0.5)'\r\n */\r\n @Input() color: string = '#ffffff';\r\n\r\n /**\r\n * enable an overlay to edit the color.\r\n * The editor must be passed as the content of the indicator.\r\n */\r\n @Input() showPopOver: boolean = false;\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n public isEditorOpen = false;\r\n\r\n public positions = [\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'center',\r\n originY: 'top'\r\n },\r\n {\r\n overlayX: 'center',\r\n overlayY: 'bottom'\r\n },\r\n 0,\r\n -20,\r\n ['fng-color-indicator-top']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'center',\r\n originY: 'bottom'\r\n },\r\n {\r\n overlayX: 'center',\r\n overlayY: 'top'\r\n },\r\n 0,\r\n 20,\r\n ['fng-color-indicator-bottom']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'start',\r\n originY: 'center'\r\n },\r\n {\r\n overlayX: 'end',\r\n overlayY: 'center'\r\n },\r\n -20,\r\n 0,\r\n ['fng-color-indicator-left']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'end',\r\n originY: 'center'\r\n },\r\n {\r\n overlayX: 'start',\r\n overlayY: 'center'\r\n },\r\n 20,\r\n 0,\r\n ['fng-color-indicator-right']\r\n )\r\n ];\r\n\r\n getBorderColor(): string {\r\n if (!this.color || this.color.toUpperCase() === '#FFFFFF' || this.color.toUpperCase() === '#F0F2F3') {\r\n return '#b6bec6'; // = $control-border\r\n } else {\r\n return this.color;\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.fwe-color-indicator--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 @if (!color) {\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 }\n </div>\n @if (text) {\n <div class=\"fwe-color-indicator-text\">\n {{ text }}\n </div>\n }\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 [cdkConnectedOverlayPush]=\"true\"\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","export abstract class ColorHelper {\r\n // based on: https://gist.github.com/mjackson/5311256\r\n public static rgbToHsv(rgb: Record<'r' | 'g' | 'b', number> | undefined | null): Record<'h' | 's' | 'v', number> {\r\n if (!rgb) {\r\n return { h: 0, s: 0, v: 0 };\r\n }\r\n\r\n const r = this.limitToByte(rgb.r) / 255;\r\n const g = this.limitToByte(rgb.g) / 255;\r\n const b = this.limitToByte(rgb.b) / 255;\r\n\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n\r\n let h = max;\r\n let s = max;\r\n const v = max;\r\n\r\n const d = max - min;\r\n s = max === 0 ? 0 : d / max;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n } else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return { h, s, v };\r\n }\r\n\r\n // based on: https://gist.github.com/mjackson/5311256\r\n public static hsvToRgb(hsv: Record<'h' | 's' | 'v', number> | undefined | null): Record<'r' | 'g' | 'b', number> {\r\n if (!hsv) {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n\r\n hsv.h = this.limitToOne(hsv.h);\r\n hsv.s = this.limitToOne(hsv.s);\r\n hsv.v = this.limitToOne(hsv.v);\r\n\r\n let r: number = 0;\r\n let g: number = 0;\r\n let b: number = 0;\r\n\r\n const i = Math.floor(hsv.h * 6);\r\n const f = hsv.h * 6 - i;\r\n const p = hsv.v * (1 - hsv.s);\r\n const q = hsv.v * (1 - f * hsv.s);\r\n const t = hsv.v * (1 - (1 - f) * hsv.s);\r\n\r\n switch (i % 6) {\r\n case 0:\r\n r = hsv.v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = hsv.v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = hsv.v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = hsv.v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = hsv.v;\r\n break;\r\n case 5:\r\n r = hsv.v;\r\n g = p;\r\n b = q;\r\n break;\r\n }\r\n\r\n return {\r\n r: this.limitToByte(r * 255),\r\n g: this.limitToByte(g * 255),\r\n b: this.limitToByte(b * 255)\r\n };\r\n }\r\n\r\n private static limitToByte(num: number) {\r\n return Math.round(num <= 0 ? 0 : num >= 255 ? 255 : num);\r\n }\r\n\r\n private static limitToOne(num: number) {\r\n return num <= 0 ? 0 : num >= 1 ? 1 : num;\r\n }\r\n\r\n private static numberToHex(rgb: number): string {\r\n let hex = Math.round(rgb).toString(16);\r\n if (hex.length < 2) {\r\n hex = '0' + hex;\r\n }\r\n return hex.toUpperCase();\r\n }\r\n\r\n public static rgbToHex(rgb: Record<'r' | 'g' | 'b', number> | undefined | null) {\r\n if (!rgb) {\r\n return '#FFFFFF';\r\n }\r\n\r\n rgb.r = this.limitToByte(rgb.r);\r\n rgb.g = this.limitToByte(rgb.g);\r\n rgb.b = this.limitToByte(rgb.b);\r\n\r\n const red = this.numberToHex(rgb.r);\r\n const green = this.numberToHex(rgb.g);\r\n const blue = this.numberToHex(rgb.b);\r\n return '#' + red + green + blue;\r\n }\r\n\r\n public static hexToRgb(hexString: string | null): Record<'r' | 'g' | 'b', number> {\r\n if (!hexString) {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n const numbersOnly = hexString.substring(1);\r\n const aRgbHex = numbersOnly.match(/.{1,2}/g);\r\n if (aRgbHex?.length === 3) {\r\n return { r: parseInt(aRgbHex[0], 16), g: parseInt(aRgbHex[1], 16), b: parseInt(aRgbHex[2], 16) };\r\n } else {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CdkDragMove, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Component, forwardRef, Input, ViewEncapsulation, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { ColorHelper } from './color-helper';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport const PREDEFINED_COLORS: string[] = [\r\n '#0091dc',\r\n '#333333',\r\n '#ffffff',\r\n '#f0f2f3',\r\n '#e2e5e8',\r\n '#d3d8dd',\r\n '#b6bec6',\r\n '#80ca3d',\r\n '#ffd600',\r\n '#ff9600',\r\n '#d50000'\r\n];\r\n\r\n/**\r\n * A custom form element to pick a color.\r\n */\r\n@Component({\n imports: [CommonModule, DragDropModule, FormsModule],\n selector: 'fng-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FngColorPickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngColorPickerComponent implements OnChanges, ControlValueAccessor {\r\n baseSize = 184;\r\n\r\n inputType = 'RGB';\r\n\r\n isSelectOpen = false;\r\n\r\n @Input() useAlpha = false;\r\n\r\n @Input()\r\n get alpha(): number {\r\n return this.innerAlpha;\r\n }\r\n set alpha(value: number) {\r\n if (value <= 100 && value >= 0 && this.innerAlpha !== Math.round(value)) {\r\n this.innerAlpha = Math.round(value);\r\n this.alphaInput = this.innerAlpha;\r\n this.updateKnobs();\r\n }\r\n }\r\n\r\n @Output() alphaChange = new EventEmitter<number>();\r\n\r\n /**\r\n * The current color\r\n */\r\n get color(): string | null {\r\n return this.innerColor;\r\n }\r\n @Input()\r\n set color(value: string | null) {\r\n if (value && this.isHexColor(value)) {\r\n this.innerColor = value.toUpperCase();\r\n } else {\r\n this.innerColor = null;\r\n }\r\n this.updateColorRgb(true);\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * an array with color strings representing the palette.\r\n * Example: ['#234567, '#AA00FF']\r\n * Pass null to hide palette.\r\n */\r\n @Input() palette: string[] = [];\r\n\r\n /**\r\n * hide the hue and gradient picker and shot the palette only.\r\n */\r\n @Input() paletteOnly = false;\r\n\r\n private innerColor: string | null = null;\r\n private innerDisabled: boolean = true;\r\n private innerAlpha: number = 1;\r\n\r\n // input controls\r\n hexInputColor: string | null = '#ff0000';\r\n redInput = 255;\r\n greenInput = 0;\r\n blueInput = 0;\r\n alphaInput = 100;\r\n\r\n // HSV value\r\n hue: number = 0;\r\n saturation: number = 0;\r\n value: number = 0;\r\n\r\n // poitions of the knobs in px\r\n hueKnobOffset = 0;\r\n alphaKnobOffset = 0;\r\n saturationKnobOffset = 0;\r\n valueKnobOffset = 0;\r\n\r\n // callbacks for ControlValueAccessor\r\n onTouched: () => any = () => null;\r\n onChange: (color: string | null) => any = () => null;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const paletteChanged = changes['palette'];\r\n if (paletteChanged['currentValue'].length > 0 && paletteChanged['currentValue'].indexOf('FESTO_COLORS') !== -1) {\r\n this.palette = PREDEFINED_COLORS;\r\n }\r\n }\r\n\r\n // ControlValueAccessor\r\n writeValue(color: string): void {\r\n if (this.isHexColor(color)) {\r\n this.innerColor = color.toUpperCase();\r\n } else {\r\n this.innerColor = null;\r\n }\r\n this.updateColorRgb(false);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.innerDisabled = isDisabled;\r\n }\r\n\r\n // update method for changes of the rgb value\r\n updateColorRgb(emitChange: boolean) {\r\n const currentColor = this.innerColor || '#FFFFFF';\r\n this.updateInputs(currentColor);\r\n const rgb = ColorHelper.hexToRgb(currentColor);\r\n const hsv = ColorHelper.rgbToHsv(rgb);\r\n this.hue = hsv.h;\r\n this.saturation = hsv.s;\r\n this.value = hsv.v;\r\n this.updateKnobs();\r\n if (emitChange) {\r\n if (this.onChange != null) {\r\n this.onChange(this.innerColor);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n // update method for changes of the hsv value\r\n updateColorHsv() {\r\n const rgb = ColorHelper.hsvToRgb({ h: this.hue, s: this.saturation, v: this.value });\r\n this.innerColor = ColorHelper.rgbToHex(rgb);\r\n this.updateInputs(this.innerColor);\r\n if (this.onChange != null) {\r\n this.onChange(this.innerColor);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n // event handler for inputs\r\n onHexBlur() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n } else {\r\n this.hexInputColor = this.color;\r\n }\r\n }\r\n\r\n onHexInput() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n }\r\n }\r\n\r\n onRgbBlur() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n } else {\r\n this.hexInputColor = this.color;\r\n }\r\n }\r\n\r\n onRgbInput(value: number, channel: string) {\r\n if (value > 255 || value < 0) {\r\n this.updateInputs(this.innerColor);\r\n } else {\r\n const rgb = ColorHelper.hexToRgb(this.innerColor);\r\n rgb[channel as keyof typeof rgb] = value;\r\n this.innerColor = ColorHelper.rgbToHex(rgb);\r\n this.updateColorRgb(true);\r\n }\r\n }\r\n\r\n onAlphaInput(value: number) {\r\n if (value > 100 || value < 0) {\r\n this.alphaInput = this.innerAlpha;\r\n } else {\r\n this.alpha = value;\r\n this.alphaChange.emit(this.alpha);\r\n }\r\n }\r\n\r\n onGradientClick(event: MouseEvent) {\r\n this.saturation = event.offsetX / this.baseSize;\r\n this.value = (this.baseSize - event.offsetY) / this.baseSize;\r\n this.updateColorHsv();\r\n this.updateKnobs();\r\n }\r\n\r\n onGradientDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.saturation = Math.floor(position.x) / this.baseSize;\r\n this.value = (this.baseSize - position.y) / this.baseSize;\r\n this.updateColorHsv();\r\n }\r\n\r\n onHueClick(event: MouseEvent) {\r\n this.hue = event.offsetY / this.baseSize;\r\n this.updateColorHsv();\r\n this.updateKnobs();\r\n }\r\n\r\n onAlphaClick(event: MouseEvent) {\r\n this.alpha = 100 - Math.round((event.offsetY / this.baseSize) * 100);\r\n this.alphaChange.emit(this.alpha);\r\n }\r\n\r\n onHueDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.hue = (position.y + this.baseSize + 14) / this.baseSize;\r\n this.updateColorHsv();\r\n }\r\n\r\n onAlphaDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.innerAlpha = 100 - Math.round((position.y / this.baseSize) * 100);\r\n this.alphaInput = this.innerAlpha;\r\n this.alphaChange.emit(this.innerAlpha);\r\n }\r\n\r\n onRemoveColor() {\r\n if (this.useAlpha) {\r\n this.alpha = 0;\r\n this.alphaChange.emit(this.alpha);\r\n } else {\r\n this.color = null;\r\n }\r\n }\r\n\r\n isHexColor(value: string) {\r\n return /^#[0-9A-F]{6}$/i.test(value);\r\n }\r\n\r\n getSaturationGradient(): string {\r\n return 'linear-gradient(to right, white, hsl(' + this.hue * 360 + ', 100%, 50%) )';\r\n }\r\n\r\n updateInputs(hexColor: string | null) {\r\n this.hexInputColor = hexColor;\r\n const rgb = ColorHelper.hexToRgb(hexColor);\r\n this.redInput = rgb.r;\r\n this.greenInput = rgb.g;\r\n this.blueInput = rgb.b;\r\n }\r\n\r\n updateKnobs() {\r\n this.alphaKnobOffset = ((100 - this.alpha) / 100) * this.baseSize;\r\n this.hueKnobOffset = this.hue * this.baseSize - (this.baseSize + 14);\r\n this.saturationKnobOffset = this.saturation * this.baseSize;\r\n this.valueKnobOffset = (1 - this.value) * this.baseSize;\r\n }\r\n\r\n onChangeType(type: string) {\r\n this.inputType = type;\r\n this.isSelectOpen = false;\r\n }\r\n}\r\n","<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n @if (!paletteOnly) {\n <div class=\"fwe-d-flex\">\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=\".fwe-gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-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 @if (useAlpha) {\n <div class=\"fwe-alpha-picker\">\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-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 }\n </div>\n }\n\n @if (!paletteOnly) {\n <div class=\"fwe-mt-s\">\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 @if (isSelectOpen) {\n <div class=\"fwe-popover\">\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 }\n </div>\n <div class=\"fwe-d-flex\">\n @if (inputType === 'HEX') {\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n }\n @if (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 }\n @if (useAlpha) {\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\">\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 }\n </div>\n </div>\n }\n\n @if (palette && palette.length) {\n <div class=\"fwe-mt-xs fwe-color-grid\">\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 @for (colorItem of palette; track colorItem) {\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 @if (colorItem.toUpperCase() === color) {\n <i class=\"fwe-icon fwe-icon-menu-check\"></i>\n }\n </div>\n }\n </div>\n }\n</div>\n","import { ElementRef, Input, Output, EventEmitter, Component, ViewChild, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\r\nimport flatpickr from 'flatpickr';\r\nimport { BaseOptions } from 'flatpickr/dist/types/options';\r\n\r\nexport interface FlatPickerOptions {\r\n maxDate?: Date | undefined;\r\n minDate?: Date | undefined;\r\n mode?: 'single' | 'range';\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-flatpickr',\r\n templateUrl: './flatpickr.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngFlatpickrComponent implements OnInit, OnDestroy {\r\n @Input() date: Date | Date[] = new Date();\r\n @Input() options: FlatPickerOptions | undefined;\r\n @Output() dateChange = new EventEmitter<Date | Date[]>();\r\n\r\n @ViewChild('datePicker', { static: true }) datePickerRef: ElementRef | undefined;\r\n\r\n private datePicker: flatpickr.Instance | undefined;\r\n\r\n ngOnInit() {\r\n const options: FlatPickerOptions = {\r\n minDate: this.options?.minDate || undefined,\r\n maxDate: this.options?.maxDate || undefined,\r\n mode: this.options?.mode || 'single'\r\n };\r\n const config: Partial<BaseOptions> = {\r\n inline: true,\r\n defaultDate: this.date,\r\n onChange: c => this.onDateChange(c),\r\n maxDate: options.maxDate,\r\n minDate: options.minDate,\r\n mode: options.mode\r\n };\r\n this.datePicker = flatpickr(this.datePickerRef?.nativeElement, config) as flatpickr.Instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.datePicker != null) {\r\n this.datePicker.destroy();\r\n }\r\n }\r\n\r\n onDateChange(dateOption: Date | Date[]) {\r\n const mode = this.options != null && this.options.mode === 'range' ? 'range' : 'single';\r\n if (mode === 'range' && Array.isArray(dateOption) && dateOption.length === 2) {\r\n this.dateChange.emit(dateOption);\r\n }\r\n if (mode === 'single' && Array.isArray(dateOption) && dateOption.length === 1) {\r\n this.dateChange.emit(dateOption[0]);\r\n }\r\n }\r\n}\r\n","<div class=\"fng-flatpickr\">\r\n <div #datePicker></div>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n forwardRef,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n HostListener,\r\n HostBinding, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { formatDate } from '@angular/common';\r\nimport { LOCALE_ID, Inject } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngFlatpickrComponent } from '../flatpickr/flatpickr.component';\r\n\r\nexport interface FngDatePickerOptions {\r\n maxDate?: Date;\r\n minDate?: Date;\r\n keepOpenOnDateChange?: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [],\r\n selector: 'fng-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngDatePickerComponent implements ControlValueAccessor {\r\n get value(): Date {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(date: Date) {\r\n if (!this.disabled) {\r\n this.innerValue = date;\r\n if (this.onChange != null) {\r\n this.onChange(date);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n @Input() options: FngDatePickerOptions = {} as FngDatePickerOptions;\r\n\r\n /** A locale code for the locale format rules to use. */\r\n @Input() locale: string | undefined;\r\n\r\n /* The date-time components to include. See `DatePipe` for details. */\r\n @Input() format: string | undefined;\r\n\r\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\r\n @Input() timezone: string | undefined;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string | undefined;\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n get displayValue(): string {\r\n if (!this.value) {\r\n return '';\r\n }\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(this.value, format, locale, timezone);\r\n }\r\n\r\n datePickerRef: OverlayRef | undefined;\r\n private innerValue: Date = new Date();\r\n private complete = new Subject<boolean>();\r\n private datePicker: ComponentRef<FngFlatpickrComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => any) | undefined;\r\n onChange: ((date: Date) => any) | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Tab') {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onDateChange(date: Date) {\r\n this.value = date;\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n }\r\n\r\n writeValue(date: Date): void {\r\n this.innerValue = date;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled) {\r\n if (this.datePickerRef == null) {\r\n this.datePickerRef = this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector?.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const datePickerPortal = new ComponentPortal(FngFlatpickrComponent);\r\n this.datePicker = this.datePickerRef.attach(datePickerPortal);\r\n this.datePicker.instance.options = this.options;\r\n this.datePicker.instance.date = this.value;\r\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date | Date[]) => {\r\n if (c instanceof Date) {\r\n this.onDateChange(c);\r\n }\r\n if (this.options == null || !this.options.keepOpenOnDateChange) {\r\n this.dispose();\r\n }\r\n });\r\n this.datePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.dispose());\r\n this.datePicker.instance.ngOnInit();\r\n } else {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n private dispose() {\r\n if (this.datePickerRef != null) {\r\n this.datePickerRef.detach();\r\n this.datePickerRef.dispose();\r\n this.datePickerRef = undefined;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\n","<label #connector class=\"fng-date-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i\n class=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n forwardRef,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n HostBinding, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LOCALE_ID, Inject } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngFlatpickrComponent } from '../flatpickr/flatpickr.component';\r\n\r\nexport interface FngDateRangePickerOptions {\r\n maxDate?: Date;\r\n minDate?: Date;\r\n keepOpenOnDateChange?: boolean;\r\n}\r\n\r\n@Component({\n imports: [],\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(() => FngDateRangePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngDateRangePickerComponent implements ControlValueAccessor {\r\n get value(): Date[] {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(dateRange: Date[]) {\r\n if (!this.disabled) {\r\n this.innerValue = dateRange;\r\n if (this.onChange != null) {\r\n this.onChange(dateRange);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n\r\n /** A locale code for the locale format rules to use. */\r\n @Input() locale: string | undefined;\r\n\r\n /* The date-time components to include. See `DatePipe` for details. */\r\n @Input() format: string | undefined;\r\n\r\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\r\n @Input() timezone: string | undefined;\r\n\r\n @Input() options: FngDateRangePickerOptions = {} as FngDateRangePickerOptions;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string = 'none';\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n get fromDateDisplayValue(): string | null {\r\n const v = this.value;\r\n if (!v || v.length !== 2) {\r\n return null;\r\n }\r\n const from = this.value[0];\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(from, format, locale, timezone);\r\n }\r\n\r\n get toDateDisplayValue(): string | null {\r\n const v = this.value;\r\n if (!v || v.length !== 2) {\r\n return null;\r\n }\r\n const to = this.value[1];\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(to, format, locale, timezone);\r\n }\r\n\r\n dateRangePickerRef: OverlayRef | undefined;\r\n\r\n private innerValue: Date[] = [new Date(), new Date()];\r\n private complete = new Subject<boolean>();\r\n private datePicker: ComponentRef<FngFlatpickrComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => any) | undefined;\r\n onChange: ((dateRange: Date[]) => any) | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Tab') {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onDateChange(dateRange: Date[]) {\r\n this.value = dateRange;\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n }\r\n\r\n writeValue(dateRange: Date[]): void {\r\n this.innerValue = dateRange;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.dateRangePickerRef == null) {\r\n this.dateRangePickerRef = this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector?.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const datePickerPortal = new ComponentPortal(FngFlatpickrComponent);\r\n this.datePicker = this.dateRangePickerRef.attach(datePickerPortal);\r\n this.datePicker.instance.options = {\r\n mode: 'range',\r\n minDate: this.options && this.options.minDate ? this.options.minDate : undefined,\r\n maxDate: this.options && this.options.maxDate ? this.options.maxDate : undefined\r\n };\r\n this.datePicker.instance.date = this.value;\r\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date | Date[]) => {\r\n if (Array.isArray(c)) {\r\n this.onDateChange(c);\r\n }\r\n if (this.options == null || !this.options.keepOpenOnDateChange) {\r\n this.dispose();\r\n }\r\n });\r\n this.dateRangePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.dispose());\r\n this.datePicker.instance.ngOnInit();\r\n } else {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n private dispose() {\r\n if (this.dateRangePickerRef != null) {\r\n this.dateRangePickerRef.detach();\r\n this.dateRangePickerRef.dispose();\r\n this.dateRangePickerRef = undefined;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\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=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n </div>\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\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})\r\nexport class FngTimePickerDropdownComponent implements AfterViewInit {\r\n @Input() date: Date = new Date();\r\n @Input() showSeconds = false;\r\n @Input() timeFormat: '12' | '24' = '24';\r\n @Output() dateChange = new EventEmitter<{ reset: boolean; date: Date; close: boolean }>();\r\n\r\n @ViewChild('hoursInput') hoursInput: ElementRef | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Enter') {\r\n this.onDateChange(true, event.key === 'Escape');\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.hoursInput != null && this.hoursInput.nativeElement != null) {\r\n (this.hoursInput.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onHourUp() {\r\n this.date?.setHours(this.date.getHours() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onHourDown() {\r\n this.date?.setHours(this.date.getHours() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteUp() {\r\n this.date?.setMinutes(this.date.getMinutes() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteDown() {\r\n this.date?.setMinutes(this.date.getMinutes() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondUp() {\r\n this.date?.setSeconds(this.date.getSeconds() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondDown() {\r\n this.date?.setSeconds(this.date.getSeconds() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onHourChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const hour = +(event.target as HTMLInputElement).value;\r\n this.date?.setHours(hour > max ? max : hour < min ? min : hour);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const minute = +(event.target as HTMLInputElement).value;\r\n this.date?.setMinutes(minute > max ? max : minute < min ? min : minute);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const seconds = +(event.target as HTMLInputElement).value;\r\n this.date?.setSeconds(seconds > max ? max : seconds < min ? min : seconds);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onToggleTimeFormat() {\r\n // Get the current hour in 24-hour format\r\n let hours = this.date.getHours();\r\n\r\n if (hours >= 0 && hours < 12) {\r\n // Switching from AM to PM\r\n this.date.setHours(hours + 12);\r\n } else {\r\n // Switching from PM to AM\r\n this.date.setHours(hours - 12);\r\n }\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onDateChange(close: boolean, reset: boolean) {\r\n if (this.date != null) {\r\n this.date = new Date(this.date);\r\n this.dateChange.emit({ reset, date: new Date(this.date), close });\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-timepicker\">\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 @if (showSeconds) {\n <div 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 }\n </div>\n @if (timeFormat === '12') {\n <button class=\"fwe-btn fwe-ml-m\" (click)=\"onToggleTimeFormat()\">\n {{ date | date : 'a' }}\n </button>\n }\n </div>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n forwardRef,\r\n HostBinding,\r\n Input,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngTimePickerDropdownComponent } from './time-picker-dropdown/time-picker-dropdown.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface FngTimePickerOptions {\r\n timeFormat?: '12' | '24';\r\n showSeconds?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngTimePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTimePickerComponent implements ControlValueAccessor {\r\n get value(): Date {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(date: Date) {\r\n if (!this.disabled) {\r\n this.innerValue = date;\r\n if (this.onChange != null) {\r\n this.onChange(date);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n @Input() options: FngTimePickerOptions | undefined;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string = 'none';\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n get timeFormat(): string {\r\n let timeFormat = 'H:mm';\r\n if (this.options != null) {\r\n if (this.options.showSeconds) {\r\n timeFormat += ':ss';\r\n }\r\n if (this.options.timeFormat === '12') {\r\n timeFormat = timeFormat.toLowerCase() + ' a';\r\n }\r\n }\r\n return timeFormat;\r\n }\r\n\r\n timePickerRef: OverlayRef | null = null;\r\n\r\n protected innerValue: Date = new Date();\r\n protected innerDisabled = false;\r\n\r\n private complete = new Subject<boolean>();\r\n private timePicker: ComponentRef<FngTimePickerDropdownComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => void) | undefined;\r\n onChange: ((date: Date) => void) | undefined;\r\n\r\n writeValue(date: Date): void {\r\n this.innerValue = date;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n const resetValue = this.value;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled) {\r\n if (this.timePickerRef == null && this.connector != null && this.connector.nativeElement != null) {\r\n const labelWidth = (this.connector.nativeElement as HTMLElement).clientWidth;\r\n this.timePickerRef = this.overlay.create({\r\n minWidth: `${labelWidth}px`,\r\n panelClass: 'fng-first-child-fullwidth',\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -12\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: 4\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const timePickerPortal = new ComponentPortal(FngTimePickerDropdownComponent);\r\n this.timePicker = this.timePickerRef.attach(timePickerPortal);\r\n this.timePicker.instance.timeFormat = this.options != null && this.options.timeFormat != null ? this.options.timeFormat : '24';\r\n this.timePicker.instance.showSeconds = this.options != null && this.options.showSeconds != null ? this.options.showSeconds : false;\r\n this.timePicker.instance.date = new Date(this.value);\r\n this.timePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe(ev => {\r\n if (ev.reset) {\r\n this.value = resetValue;\r\n } else {\r\n this.value = ev.date;\r\n }\r\n if (ev.close) {\r\n this.disposeDropdown();\r\n }\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n });\r\n this.timePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.disposeDropdown());\r\n } else {\r\n this.disposeDropdown();\r\n }\r\n }\r\n }\r\n\r\n public disposeDropdown() {\r\n if (this.timePickerRef != null) {\r\n this.timePickerRef.detach();\r\n this.timePickerRef.dispose();\r\n this.timePickerRef = null;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\n","<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nexport type UniqueSelectionDispatcherListener = (id: string, name: string) => void;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FngUniqueSelectionDispatcher implements OnDestroy {\r\n private listeners: UniqueSelectionDispatcherListener[] = [];\r\n\r\n /**\r\n * Notify other items that selection for the given name has been set.\r\n * @param id ID of the item.\r\n * @param name Name of the item.\r\n */\r\n notify(id: string, name?: string) {\r\n for (const listener of this.listeners) {\r\n if (name) {\r\n listener(id, name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Listen for future changes to item selection.\r\n * @return Function used to deregister listener\r\n */\r\n listen(listener: UniqueSelectionDispatcherListener): () => void {\r\n this.listeners.push(listener);\r\n return () => {\r\n this.listeners = this.listeners.filter((registered: UniqueSelectionDispatcherListener) => {\r\n return listener !== registered;\r\n });\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listeners = [];\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectionStrategy,\r\n Optional,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n Directive,\r\n forwardRef,\r\n AfterContentInit,\r\n ContentChildren,\r\n HostBinding\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\nimport { FngUniqueSelectionDispatcher } from '../unique-selection-dispatcher';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport class FngRadioChange {\r\n constructor(public source: FngRadioComponent | null, public value: any) {}\r\n}\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngRadioGroup]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngRadioGroupDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngRadioGroupDirective implements AfterContentInit, ControlValueAccessor {\r\n @HostBinding('class.fwe-radio-group') hostClass = true;\r\n @HostBinding('attr.role') role = 'radiogroup';\r\n\r\n @Output()\r\n readonly change = new EventEmitter<FngRadioChange>();\r\n\r\n @ContentChildren(forwardRef(() => FngRadioComponent), { descendants: true })\r\n radios: QueryList<FngRadioComponent> | undefined;\r\n\r\n @Input()\r\n get name(): string {\r\n return this.innerName;\r\n }\r\n set name(value: string) {\r\n this.innerName = value;\r\n this.updateRadioButtonNames();\r\n }\r\n\r\n @Input()\r\n get large() {\r\n return this.isLarge;\r\n }\r\n set large(v) {\r\n this.isLarge = v;\r\n this.updateRadioButtonSize();\r\n }\r\n\r\n @Input()\r\n get labelPosition() {\r\n return this.innerLabelPosition;\r\n }\r\n set labelPosition(v) {\r\n this.innerLabelPosition = v;\r\n this.markRadiosForCheck();\r\n }\r\n\r\n @Input()\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n set value(newValue: any) {\r\n if (this.innerValue !== newValue) {\r\n this.innerValue = newValue;\r\n this.updateSelectedRadioFromValue();\r\n this.checkSelectedRadioButton();\r\n }\r\n }\r\n\r\n @Input()\r\n get selected() {\r\n return this.isSelected;\r\n }\r\n set selected(selected: any | null) {\r\n this.isSelected = selected;\r\n this.value = selected ? selected.value : null;\r\n this.checkSelectedRadioButton();\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.isDisabled;\r\n }\r\n set disabled(value) {\r\n this.isDisabled = coerceBooleanProperty(value);\r\n this.markRadiosForCheck();\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n this.markRadiosForCheck();\r\n }\r\n\r\n private isLarge = false;\r\n private isDisabled = false;\r\n private isRequired = false;\r\n private innerValue: any = null;\r\n private isInitialized = false;\r\n private isSelected: FngRadioComponent | null = null;\r\n private innerName = `fngRadioGroup-${nextUniqueId++}`;\r\n private innerLabelPosition: 'before' | 'after' | 'below' = 'after';\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: ((value: any) => void) | undefined;\r\n\r\n onTouched: (() => void) | undefined;\r\n\r\n ngAfterContentInit() {\r\n this.isInitialized = true;\r\n }\r\n\r\n checkSelectedRadioButton() {\r\n if (this.isSelected && !this.isSelected.checked) {\r\n this.isSelected.checked = true;\r\n }\r\n }\r\n\r\n touch() {\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n emitChangeEvent(): void {\r\n if (this.isInitialized) {\r\n this.change.emit(new FngRadioChange(this.isSelected, this.innerValue));\r\n }\r\n }\r\n\r\n markRadiosForCheck() {\r\n if (this.radios) {\r\n this.radios.forEach(radio => radio.markForCheck());\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n this.value = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private updateRadioButtonSize(): void {\r\n if (this.radios) {\r\n this.radios.forEach(radio => {\r\n radio.large = this.large;\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private updateRadioButtonNames(): void {\r\n if (this.radios) {\r\n this.radios.forEach(radio => {\r\n radio.name = this.name;\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private updateSelectedRadioFromValue(): void {\r\n const isAlreadySelected = this.isSelected !== null && this.isSelected.value === this.innerValue;\r\n if (this.radios && !isAlreadySelected) {\r\n this.isSelected = null;\r\n this.radios.forEach(radio => {\r\n radio.checked = this.value === radio.value;\r\n if (radio.checked) {\r\n this.isSelected = radio;\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngRadioComponent implements OnInit, OnDestroy {\r\n @Input() name: string | undefined;\r\n\r\n private innerId = `fng-radio-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-radio-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n const newCheckedState = coerceBooleanProperty(value);\r\n if (this.isChecked !== newCheckedState) {\r\n this.isChecked = newCheckedState;\r\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\r\n this.radioGroup.selected = this;\r\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\r\n this.radioGroup.selected = null;\r\n }\r\n\r\n if (newCheckedState) {\r\n this.radioDispatcher.notify(this.id, this.name);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n @Input()\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n set value(value: any) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n if (this.radioGroup !== null) {\r\n if (!this.checked) {\r\n this.checked = this.radioGroup.value === value;\r\n }\r\n if (this.checked) {\r\n this.radioGroup.selected = this;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get large() {\r\n return this.isLarge || (this.radioGroup != null && this.radioGroup.large);\r\n }\r\n set large(value) {\r\n this.isLarge = value;\r\n }\r\n\r\n @Input()\r\n get labelPosition() {\r\n return this.innerLabelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'before';\r\n }\r\n set labelPosition(value) {\r\n this.innerLabelPosition = value;\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.isDisabled || (this.radioGroup != null && this.radioGroup.disabled);\r\n }\r\n set disabled(value: boolean) {\r\n const newDisabledState = coerceBooleanProperty(value);\r\n if (this.isDisabled !== newDisabledState) {\r\n this.isDisabled = newDisabledState;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired || (this.radioGroup && this.radioGroup.required);\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n\r\n @Output() readonly change = new EventEmitter<FngRadioChange>();\r\n\r\n radioGroup: FngRadioGroupDirective;\r\n\r\n private isLarge = false;\r\n private isChecked = false;\r\n private isDisabled: boolean = false;\r\n private isRequired: boolean = false;\r\n private innerValue: any = null;\r\n private innerLabelPosition: 'before' | 'after' | 'below' | undefined;\r\n private removeUniqueSelectionListener: () => void;\r\n\r\n constructor(\r\n @Optional() radioGroup: FngRadioGroupDirective,\r\n private changeDetector: ChangeDetectorRef,\r\n private radioDispatcher: FngUniqueSelectionDispatcher\r\n ) {\r\n this.radioGroup = radioGroup;\r\n this.removeUniqueSelectionListener = radioDispatcher.listen((id: string, name: string) => {\r\n if (id !== this.id && name === this.name) {\r\n this.checked = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.radioGroup) {\r\n this.checked = this.radioGroup.value === this.innerValue;\r\n this.name = this.radioGroup.name;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.removeUniqueSelectionListener != null) {\r\n this.removeUniqueSelectionListener();\r\n }\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputChange(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\r\n this.checked = true;\r\n this.emitChangeEvent();\r\n\r\n if (this.radioGroup) {\r\n if (typeof this.radioGroup?.controlValueAccessorChangeFn === 'function') {\r\n this.radioGroup?.controlValueAccessorChangeFn(this.value);\r\n }\r\n\r\n if (groupValueChanged) {\r\n this.radioGroup.emitChangeEvent();\r\n }\r\n }\r\n }\r\n }\r\n\r\n markForCheck() {\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private emitChangeEvent(): void {\r\n this.change.emit(new FngRadioChange(this, this.innerValue));\r\n }\r\n}\r\n","<label\r\n [attr.for]=\"inputId\"\r\n [ngClass]=\"{\r\n 'fwe-radio': true,\r\n 'fwe-radio-label-below': labelPosition == 'below',\r\n 'fwe-radio-label-before': labelPosition == 'before',\r\n 'fwe-radio-lg': large\r\n }\"\r\n>\r\n <input\r\n type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n (change)=\"onInputChange($event)\"\r\n (click)=\"onInputClick($event)\"\r\n />\r\n <div class=\"fwe-radio-checkmark\"></div>\r\n <div class=\"fwe-radio-label-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewChild,\r\n TemplateRef,\r\n AfterViewInit,\r\n ViewRef,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: ['./segment-control.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSegmentControlComponent implements OnInit, OnChanges, AfterViewInit {\r\n id: string | undefined;\r\n view: ViewRef | undefined;\r\n viewMode: 'text' | 'icon' | 'icon-text' = 'text';\r\n\r\n @Input() name: string | undefined;\r\n @Input() value: any;\r\n @Input() label: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() iconOnly: boolean | undefined;\r\n @Input() checked: boolean | undefined;\r\n @Input() disabled: boolean | undefined;\r\n @Output() change: EventEmitter<any> = new EventEmitter();\r\n\r\n @ViewChild('tpl') tpl: TemplateRef<any> | undefined;\r\n\r\n ngOnInit(): void {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n this.viewMode = 'text';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['icon']?.currentValue) {\r\n const prefix = 'fwe-icon-';\r\n let icon: string = changes['icon'].currentValue;\r\n if (icon.indexOf(prefix) === -1) {\r\n icon = `${prefix}${icon}`;\r\n }\r\n this.icon = icon;\r\n }\r\n\r\n if (changes['iconOnly']?.currentValue) {\r\n this.viewMode = changes['iconOnly'].currentValue === true ? 'icon' : 'icon-text';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.view = this.tpl?.createEmbeddedView(null);\r\n }\r\n\r\n onInputChange(event: Event) {\r\n event.stopPropagation();\r\n this.checked = true;\r\n const target = (event as unknown as { target: HTMLInputElement }).target;\r\n this.change.emit(target.value);\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<ng-template #tpl>\n <input\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($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 @switch (viewMode) {\n @case ('icon') {\n <span class=\"fwe-sr-only\">{{ label }}</span>\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>\n }\n @case ('text') {\n {{ label }}\n }\n @case ('icon-text') {\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>{{ label }}\n }\n }\n </label>\n </ng-template>\n","import {\r\n Component,\r\n ContentChildren,\r\n Input,\r\n AfterContentInit,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n ViewChild,\r\n ViewContainerRef,\r\n ChangeDetectorRef,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n forwardRef,\r\n ViewEncapsulation,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngSegmentControlComponent } from './segment-control/segment-control.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface FngSegmentComponentConfiguration {\r\n outline: boolean;\r\n iconOnly: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-segment',\n templateUrl: './segment.component.html',\n styleUrls: ['./segment.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FngSegmentComponent),\n multi: true\n }\n ]\n})\r\nexport class FngSegmentComponent implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n protected changed = new Array<(value: string) => void>();\r\n protected touched = new Array<() => void>();\r\n\r\n protected innerValue: any;\r\n\r\n writeValue(value: string) {\r\n this.innerValue = value;\r\n this.updateCheckState();\r\n }\r\n\r\n updateCheckState() {\r\n if (this.controls) {\r\n this.controls.forEach(component => {\r\n component.checked = component.value === this.value;\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void) {\r\n this.changed.push(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.touched.push(fn);\r\n }\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n defaultConfig: FngSegmentComponentConfiguration = {\r\n outline: true,\r\n iconOnly: true\r\n };\r\n useIcon = false;\r\n useIconAndText = false;\r\n id: string;\r\n\r\n @Input() legend = '';\r\n @Input() config: FngSegmentComponentConfiguration = this.defaultConfig;\r\n @ContentChildren(FngSegmentControlComponent, { descendants: true }) controls: QueryList<FngSegmentControlComponent> | undefined;\r\n @ViewChild('vc', { read: ViewContainerRef }) vc: ViewContainerRef | undefined;\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => {\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n return f(value);\r\n });\r\n }\r\n }\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n constructor(private cd: ChangeDetectorRef) {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config']?.currentValue) {\r\n this.config = Object.assign({}, this.defaultConfig, changes['config'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.controls?.length) {\r\n this.controls.forEach(component => {\r\n component.change.pipe(takeUntil(this.complete)).subscribe(val => {\r\n this.value = val;\r\n this.updateCheckState();\r\n });\r\n\r\n if (component.icon != null && this.config.iconOnly === true) {\r\n this.useIcon = true;\r\n component.ngOnChanges({\r\n iconOnly: new SimpleChange(null, true, false)\r\n });\r\n }\r\n\r\n if (component.icon != null && this.config.iconOnly !== true) {\r\n this.useIconAndText = true;\r\n component.ngOnChanges({\r\n iconOnly: new SimpleChange(null, false, false)\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.html();\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n private html() {\r\n if (this.controls) {\r\n this.controls.forEach(component => {\r\n if (component.view) {\r\n if (!component.name) {\r\n component.name = this.id;\r\n }\r\n this.vc?.insert(component.view);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<fieldset\r\n class=\"fwe-segment\"\r\n [ngClass]=\"{\r\n 'fwe-segment-outline': config.outline,\r\n 'fwe-segment-icon': useIcon,\r\n 'fwe-segment-icon-text': useIconAndText\r\n }\"\r\n>\r\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\r\n <div class=\"fwe-segment-group\">\r\n <ng-container #vc></ng-container>\r\n </div>\r\n</fieldset>\r\n","\r\nimport { Component, Input, ViewChild, ElementRef, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-select-option',\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSelectOptionComponent implements AfterViewInit {\r\n @Input() value: any;\r\n @ViewChild('root') elementRef!: ElementRef;\r\n\r\n el: HTMLElement | undefined;\r\n\r\n ngAfterViewInit(): void {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n async update(): Promise<HTMLElement | undefined> {\r\n return await Promise.resolve(this.el);\r\n }\r\n}\r\n","<span #root>\r\n <ng-content></ng-content>\r\n</span>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nfunction defaultValueKey(key: string | undefined): string | undefined {\r\n return key === undefined ? 'value' : key;\r\n}\r\n\r\nfunction defaultTextKey(key: string | undefined): string | undefined {\r\n return key === undefined ? 'text' : key;\r\n}\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'fngChipText',\r\n pure: false\r\n})\r\nexport class FngChipTextPipe implements PipeTransform {\r\n transform(value: any, options: any[], optionsValueKey?: string, optionsTextKey?: string): string {\r\n let chipText = '';\r\n\r\n optionsValueKey = defaultValueKey(optionsValueKey);\r\n optionsTextKey = defaultTextKey(optionsTextKey);\r\n\r\n options.forEach((_: any, index: number) => {\r\n if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value[optionsValueKey])) {\r\n if (optionsTextKey) {\r\n chipText = options[index][optionsTextKey];\r\n }\r\n }\r\n\r\n if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value)) {\r\n if (optionsTextKey) {\r\n chipText = options[index][optionsTextKey];\r\n }\r\n }\r\n });\r\n\r\n return chipText;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n DOCUMENT\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngSelectOptionComponent } from './select-option/select-option.component';\r\nimport { FngChipTextPipe } from './chip-text.pipe';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nexport interface FngSelectOption {\r\n value: any;\r\n text: string;\r\n}\r\n\r\n@Component({\r\n imports: [CommonModule, FngChipTextPipe, OverlayModule],\r\n selector: 'fng-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngSelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, AfterContentInit {\r\n static nextId = 0;\r\n\r\n protected _disabled = false;\r\n protected _required = false;\r\n protected _value: any;\r\n protected body: HTMLElement;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n set value(value: any) {\r\n if (this.multiple === true) {\r\n const index = this._value.indexOf(value);\r\n if (index === -1) {\r\n this._value.push(value);\r\n this.checked.set(value, 'checked');\r\n } else {\r\n this._value.splice(index, 1);\r\n this.checked.set(value, null);\r\n }\r\n } else {\r\n this._value = value;\r\n }\r\n\r\n if (this.onChange != null) {\r\n this.onChange(this.value);\r\n }\r\n this.fngChange.emit(this.value);\r\n }\r\n\r\n onChange: (value: any) => void = (): void => {};\r\n onTouched: () => void = (): void => {};\r\n\r\n @HostBinding()\r\n id = `input-control-${++FngSelectComponent.nextId}`;\r\n\r\n @Input() multiple: boolean = false;\r\n @Input() size: number = 0;\r\n @Input() options: any[] = [];\r\n @Input() optionsValueKey: string | undefined;\r\n @Input() optionsTextKey: string | undefined;\r\n @Input() optionObjectAsValue: boolean | undefined;\r\n @Input() error: string | undefined;\r\n @Input() label = '';\r\n @Input() hideLabel = false;\r\n @Input() hint = '';\r\n @Input() resetOption: string | undefined;\r\n @ContentChildren(FngSelectOptionComponent) fngSelectOptions: QueryList<FngSelectOptionComponent> | undefined;\r\n @ViewChild('div') elementRef: ElementRef | undefined;\r\n @Output() fngChange = new EventEmitter<any>();\r\n\r\n selectPanelClasses: string[] = ['fng-select-panel'];\r\n showOptions = false;\r\n empty: boolean = false;\r\n triggerWidth: any;\r\n checked = new Map();\r\n hasProjectedOptions = false;\r\n projectedHtml: any[] = [];\r\n\r\n constructor(\r\n public cd: ChangeDetectorRef,\r\n @Inject(DOCUMENT) protected document: Document,\r\n protected renderer: Renderer2,\r\n protected destroy: DestroyRef\r\n ) {\r\n this.body = this.document.body;\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.fngSelectOptions) {\r\n return;\r\n }\r\n // observe if any of the projected content (fng-select-option) changes\r\n this.fngSelectOptions.changes.pipe(takeUntilDestroyed(this.destroy)).subscribe(_ => {\r\n // if content changes init again\r\n this.options = [];\r\n this.projectedHtml = [];\r\n this.initProjectedOptions();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.size != null) {\r\n this.selectPanelClasses.push('fng-select-panel-options-' + this.size);\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = [];\r\n this.selectPanelClasses.push('fng-select-panel-multiple');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;\r\n this.initProjectedOptions();\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(shouldDisable: boolean): void {\r\n this.disabled = shouldDisable;\r\n }\r\n\r\n writeValue(value: any | null): void {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = value;\r\n\r\n // clear any previous state of overlay panel\r\n this.checked.clear();\r\n\r\n // set checkmarks in overlay panel, so that it is displayed correctly when user opens it\r\n value?.forEach((v: any) => {\r\n this.checked.set(v, 'checked');\r\n });\r\n } else {\r\n this._value = value;\r\n }\r\n }\r\n\r\n getOptionText(index: number) {\r\n if (this.options[index] && this.optionsTextKey && this.options[index][this.optionsTextKey] != null) {\r\n return this.options[index][this.optionsTextKey];\r\n }\r\n return undefined;\r\n }\r\n\r\n getOptionValue(index: number) {\r\n // if set to true the complete option object is returned as value\r\n if (this.optionObjectAsValue === true) {\r\n return this.options[index];\r\n }\r\n\r\n // try to access standard property 'value'\r\n const v = this.options[index]['value'];\r\n\r\n if (v !== undefined) {\r\n return v;\r\n }\r\n\r\n // try to map the value to a property of the option by given key\r\n if (this.options[index] && this.optionsValueKey && this.options[index][this.optionsValueKey] != null) {\r\n return this.options[index][this.optionsValueKey];\r\n }\r\n return undefined;\r\n }\r\n\r\n removeChip(event: any, chip: string) {\r\n event.stopPropagation();\r\n if (!this._disabled) {\r\n this.value = chip;\r\n }\r\n }\r\n\r\n onOpenedChange(isOpen: boolean) {\r\n if (isOpen) {\r\n this.renderer.addClass(this.body, 'fng-select-panel-open');\r\n } else {\r\n this.renderer.removeClass(this.body, 'fng-select-panel-open');\r\n }\r\n }\r\n\r\n close() {\r\n this.showOptions = false;\r\n this.isEmpty();\r\n this.cd.markForCheck();\r\n }\r\n\r\n toggle() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;\r\n this.showOptions = !this.showOptions;\r\n this.onOpenedChange(this.showOptions);\r\n this.isEmpty();\r\n this.cd.markForCheck();\r\n }\r\n\r\n select(value: any, event: Event) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n this.value = value;\r\n\r\n if (this.multiple !== true) {\r\n // closes overlay panel\r\n this.toggle();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n markAsTouched(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.onTouched();\r\n this.cd.markForCheck();\r\n }\r\n\r\n initProjectedOptions() {\r\n if (this.fngSelectOptions?.length) {\r\n this.hasProjectedOptions = true;\r\n this.fngSelectOptions.forEach(component => {\r\n component.update().then(el => {\r\n if (el) {\r\n this.options.push({ value: component.value, text: el.textContent?.trim() });\r\n this.projectedHtml.push(el.innerHTML);\r\n this.cd.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n isEmpty() {\r\n this.empty = !this.showOptions && (!this._value || '' === this._value);\r\n }\r\n}\r\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 @if (!multiple) {\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n } @else {\n <div class=\"fwe-chip-container\">\n @for (v of value; track v) {\n <div\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 }\n </div>\n }\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 (detach)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n @if (resetOption != null && !multiple) {\n <li class=\"fwe-select-option\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n }\n @for (option of options; track option; let i = $index) {\n <li\n class=\"fwe-select-option\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n @if (multiple) {\n <span\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n }\n @if (hasProjectedOptions) {\n <span [innerHTML]=\"projectedHtml[i]\"></span>\n } @else {\n {{ getOptionText(i) || option?.text }}\n }\n </span>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n @if (hint) {\n <div class=\"fwe-select-description\">\n {{ hint }}\n </div>\n }\n @if (error) {\n <div class=\"fwe-select-invalid\">\n {{ error }}\n </div>\n }\n</div>\n<div class=\"fwe-d-none\">\n <ng-content></ng-content>\n</div>\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewEncapsulation, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngSliderComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSliderComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\r\n @Input() label: string | undefined;\r\n\r\n @Input()\r\n min = 0;\r\n\r\n @Input()\r\n max = 100;\r\n\r\n @Input()\r\n step: number = 0;\r\n\r\n @Input()\r\n digitsInfo: string | undefined;\r\n\r\n @Input()\r\n locale: string | undefined;\r\n\r\n @Input()\r\n hideValue = false;\r\n\r\n left: number = 0;\r\n\r\n numberoffset: number = 0;\r\n\r\n protected innerDisabled = false;\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n @Input()\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n protected innerValue: number = 0;\r\n get value(): number {\r\n return this.innerValue;\r\n }\r\n\r\n @Input()\r\n set value(value: number) {\r\n this.innerValue = coerceNumberProperty(value);\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.updateValuePosition();\r\n }\r\n\r\n private resizeSub = new Subscription();\r\n private resizeSubject = new Subject<boolean>();\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n onChange: ((value: number) => void) | undefined;\r\n\r\n onTouched: (() => void) | undefined;\r\n\r\n @HostListener('window:resize') onResize() {\r\n this.resizeSubject.next(true);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeSub.add(this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition()));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeSub.unsubscribe();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.innerValue = coerceNumberProperty(value);\r\n this.updateValuePosition();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput(event: any) {\r\n this.value = coerceNumberProperty((event.target as HTMLInputElement).value);\r\n }\r\n\r\n updateValuePosition() {\r\n if (this.elementRef != null && this.elementRef.nativeElement != null) {\r\n const bcr = (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\r\n const diff = this.max - this.min;\r\n this.left = ((this.value - this.min) / diff) * (bcr.width - 8);\r\n const decimalPipe = new DecimalPipe(this.locale || 'en-US');\r\n const stringValue = decimalPipe.transform(this.value, this.digitsInfo);\r\n this.numberoffset = 8 - (stringValue || '1').length * 6;\r\n }\r\n }\r\n}\r\n","<label class=\"fwe-slider\" [class.fng-slider-label]=\"label != null\">\n @if (label) {\n <span>{{ label }}</span>\n }\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 @if (left != null && !hideValue) {\n <span class=\"fng-slider-value\" [style.left]=\"left + numberoffset + 'px'\">{{\n value | number: digitsInfo : locale\n }}</span>\n }\n <div class=\"fng-slider-indicator\" [class.disabled]=\"disabled\" [style.width]=\"left + 'px'\"></div>\n </label>\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n forwardRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngSwitchComponent),\n multi: true\n }\n ]\n})\r\nexport class FngSwitchComponent implements ControlValueAccessor {\r\n @Input() name: string | undefined;\r\n @Input() large = false;\r\n @Input() labelPosition: 'before' | 'after' | 'below' = 'before';\r\n\r\n private innerId = `fng-switch-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n if (value !== this.checked) {\r\n this.isChecked = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isChecked = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this.isDisabled;\r\n }\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this.disabled) {\r\n this.isDisabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isDisabled = false;\r\n\r\n @Input() value: string | undefined;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n private isRequired: boolean = false;\r\n\r\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: ((value: any) => void) | undefined;\r\n\r\n onTouched: (() => any) | undefined;\r\n\r\n writeValue(value: any) {\r\n this.checked = !!value;\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInteractionEvent(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.required) {\r\n this.required = false;\r\n }\r\n this.checked = !this.checked;\r\n if (this.controlValueAccessorChangeFn != null) {\r\n this.controlValueAccessorChangeFn(this.checked);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.change.emit(this.checked);\r\n }\r\n }\r\n}\r\n","<label\r\n [ngClass]=\"{\r\n 'fwe-switch-container': true,\r\n 'fwe-checked': checked,\r\n 'fwe-disabled': disabled,\r\n 'fwe-switch-label-below': labelPosition == 'below',\r\n 'fwe-switch-label-before': labelPosition == 'before',\r\n 'fwe-switch-lg': large\r\n }\"\r\n>\r\n <input\r\n title=\"checkbox\"\r\n type=\"checkbox\"\r\n [checked]=\"checked\"\r\n [attr.value]=\"value\"\r\n [attr.name]=\"name\"\r\n (change)=\"onInteractionEvent($event)\"\r\n (click)=\"onInputClick($event)\"\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"fwe-switch-track\"></div>\r\n <div class=\"fwe-switch-label-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\r\n\r\n\r\n/**\r\n * A custom form element for text inputs.\r\n */\r\n@Component({\n imports: [],\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(() => FngTextAreaComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTextAreaComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * The text input label.\r\n */\r\n @Input() label: string | undefined;\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this.innerReadonly;\r\n }\r\n set readonly(value: boolean) {\r\n this.innerReadonly = coerceBooleanProperty(value);\r\n }\r\n private innerReadonly = false;\r\n\r\n @Input() placeholder: string | undefined;\r\n @Input() tabindex: number = 0;\r\n @Input() name: string | undefined;\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n protected innerDisabled = false;\r\n\r\n /**\r\n * The inner value.\r\n */\r\n innerValue: string | undefined;\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string | undefined {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string | undefined) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n /**\r\n * Error description when invalid.\r\n */\r\n @Input() error: string | undefined;\r\n\r\n /**\r\n * Hint description when valid.\r\n */\r\n @Input() hint: string | undefined;\r\n\r\n /**\r\n * the height is managed by classes. the last one is \"fwe-row-10\"\r\n */\r\n @Input()\r\n get rows(): number {\r\n return this.innerRows;\r\n }\r\n set rows(value: number) {\r\n const v = coerceNumberProperty(value);\r\n this.innerRows = v > 10 ? 10 : v;\r\n }\r\n protected innerRows = 3;\r\n\r\n @Input() maxlength: number = 0;\r\n\r\n @ViewChild('inputElement') inputElement: ElementRef | undefined;\r\n\r\n /**\r\n * When true the text input has focus.\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Triggered on change.\r\n */\r\n onChange: ((value: string | undefined) => void) | undefined;\r\n\r\n /**\r\n * Triggered on touch.\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n /**\r\n * Called on component initialisation.\r\n */\r\n ngOnInit(): void {\r\n this.onBlur();\r\n }\r\n\r\n /**\r\n * Writes the value.\r\n * @param value The value.\r\n */\r\n writeValue(value: string): void {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n }\r\n\r\n /**\r\n * Registers a function to onChange.\r\n * @param fn The registered function.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a function to onTouched.\r\n * @param fn The registered function.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Called when the text input is in focus.\r\n */\r\n onFocus() {\r\n this.focused = true;\r\n }\r\n\r\n onInput(event: any) {\r\n this.value = event.target.value;\r\n\r\n // The height is adjusted to the content on \"rows = 0\"\r\n if (this.rows === 0) {\r\n const textarea = this.inputElement?.nativeElement;\r\n textarea.style.height = '1px'; // trigger calculation of the textarea.scrollHeight\r\n textarea.style.height = 25 + textarea.scrollHeight + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Called when the text input blurs.\r\n */\r\n onBlur() {\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the disabled state.\r\n * @param isDisabled When true the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n @if (maxlength > 0 && value != null) {\n <span class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n }\n </label>\n","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Input, Directive } from '@angular/core';\r\n\r\n@Directive()\r\nexport class FngValueAccessorBaseDirective<T> implements ControlValueAccessor {\r\n @Input() disabled = false;\r\n\r\n protected innerValue: T | undefined;\r\n\r\n protected changed = new Array<(value: T) => void>();\r\n protected touched = new Array<() => void>();\r\n\r\n get value(): T | undefined {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: T | undefined) {\r\n if (value && this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => f(value));\r\n }\r\n }\r\n\r\n touch() {\r\n this.touched.forEach(f => f());\r\n }\r\n\r\n writeValue(value: T) {\r\n this.innerValue = value;\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void) {\r\n this.changed.push(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.touched.push(fn);\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SecurityContext,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport QuillType from 'quill';\r\n\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { ObserversModule } from '@angular/cdk/observers';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nimport Delta from 'quill-delta';\r\nimport { FngValueAccessorBaseDirective } from '../value-accessor-base';\r\n\r\nexport interface FngTextEditorConfiguration {\r\n toolbar?: {\r\n bold?: boolean;\r\n italic?: boolean;\r\n underline?: boolean;\r\n alignCenter?: boolean;\r\n alignRight?: boolean;\r\n bulletList?: boolean;\r\n orderedList?: boolean;\r\n image?: boolean;\r\n link?: boolean;\r\n };\r\n sanitizing?: {\r\n skipDefaultSanitizing?: boolean;\r\n skipWhitespaceHandling?: boolean;\r\n sanitizingFn?: (ds: DomSanitizer, value: string) => string;\r\n };\r\n focusCursorToEndOnWrite?: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [ReactiveFormsModule, FormsModule, OverlayModule, ScrollingModule, DragDropModule, ObserversModule],\r\n selector: 'fng-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['./text-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngTextEditorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngTextEditorComponent\r\n extends FngValueAccessorBaseDirective<string | null | undefined>\r\n implements OnInit, AfterViewInit, OnChanges\r\n{\r\n id: string | undefined;\r\n quillEditor!: QuillType;\r\n editorElem!: HTMLElement;\r\n defaultConfig: FngTextEditorConfiguration = {\r\n toolbar: {\r\n bold: true,\r\n italic: true,\r\n underline: true,\r\n alignCenter: false,\r\n alignRight: false,\r\n bulletList: true,\r\n orderedList: true,\r\n image: true,\r\n link: true\r\n },\r\n sanitizing: {\r\n sanitizingFn: undefined,\r\n skipDefaultSanitizing: false,\r\n skipWhitespaceHandling: false\r\n },\r\n focusCursorToEndOnWrite: true\r\n };\r\n\r\n @ViewChild('btnBold') btnBold: ElementRef | undefined;\r\n @ViewChild('btnItalic') btnItalic: ElementRef | undefined;\r\n @ViewChild('btnUnderline') btnUnderline: ElementRef | undefined;\r\n @ViewChild('btnAlignCenter') btnAlignCenter: ElementRef | undefined;\r\n @ViewChild('btnAlignRight') btnAlignRight: ElementRef | undefined;\r\n @ViewChild('btnLink') btnLink: ElementRef | undefined;\r\n @ViewChild('btnUl') btnUl: ElementRef | undefined;\r\n @ViewChild('btnOl') btnOl: ElementRef | undefined;\r\n @ViewChild('btnImage') btnImage: ElementRef | undefined;\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @Input() config: FngTextEditorConfiguration | null | undefined = this.defaultConfig;\r\n @Input() modules: any;\r\n @Input() label: string | undefined;\r\n @Input() readOnly: boolean = false;\r\n @Input() maxLength: number = 0;\r\n @Input() error: string | undefined;\r\n @Input() hint: string | undefined;\r\n @Input()\r\n override set value(value: string | null | undefined) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => {\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n return f(value);\r\n });\r\n }\r\n }\r\n\r\n override get value() {\r\n return this.innerValue;\r\n }\r\n\r\n // needed to access editor content\r\n valueGetter = (editorElement: HTMLElement): string | any => {\r\n let html: string | undefined = editorElement?.querySelector('.ql-editor')?.innerHTML;\r\n if (html === '<p><br></p>' || html === '<div><br></div>') {\r\n html = undefined;\r\n }\r\n return html;\r\n };\r\n\r\n // needed to access editor content\r\n valueSetter = (quillEditor: QuillType, value: any): any => {\r\n const sanitizeConfig = this.config?.sanitizing || this.defaultConfig.sanitizing;\r\n\r\n if (sanitizeConfig?.sanitizingFn) {\r\n value = sanitizeConfig.sanitizingFn(this.domSanitizer, value);\r\n }\r\n if (sanitizeConfig && !sanitizeConfig.skipDefaultSanitizing) {\r\n value = this.domSanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n if (sanitizeConfig && !sanitizeConfig.skipWhitespaceHandling) {\r\n value = this.handleWhitespace(value);\r\n }\r\n\r\n return quillEditor.clipboard.convert({ html: value });\r\n };\r\n\r\n constructor(\r\n public elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private domSanitizer: DomSanitizer\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editorElem = this.elementRef.nativeElement.querySelector(`#editor-${this.id}`);\r\n\r\n this.quillEditor = new QuillType(this.editorElem, {\r\n modules: { toolbar: `#editor-toolbar-${this.id}`, ...this.modules },\r\n theme: 'snow'\r\n });\r\n this.setEditorLabel();\r\n this.addWhitespaceMatcher();\r\n this.addImageMatcher();\r\n\r\n const content = this.valueSetter(this.quillEditor, this.innerValue || '');\r\n this.quillEditor.setContents(content, 'silent');\r\n (this.quillEditor.getModule('history') as any).clear();\r\n\r\n this.handle();\r\n\r\n this.quillEditor.on('text-change', () => {\r\n this.value = this.valueGetter(this.editorElem);\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes?.['config']?.currentValue != null) {\r\n this.config = {\r\n toolbar: { ...this.defaultConfig.toolbar, ...changes['config'].currentValue?.toolbar },\r\n sanitizing: { ...this.defaultConfig.sanitizing, ...changes['config'].currentValue?.sanitizing }\r\n };\r\n }\r\n\r\n if (!this.quillEditor) {\r\n return;\r\n }\r\n\r\n this.handle();\r\n }\r\n\r\n override writeValue(value: string) {\r\n this.innerValue = value;\r\n\r\n if (!this.quillEditor) {\r\n return;\r\n }\r\n\r\n const content = this.valueSetter(this.quillEditor, value || '');\r\n this.quillEditor.setContents(content);\r\n\r\n if (this.config?.focusCursorToEndOnWrite) {\r\n // when new content gets written we always set cursor focus to end of text\r\n this.quillEditor.setSelection(Number.MAX_SAFE_INTEGER, 0);\r\n }\r\n }\r\n\r\n override setDisabledState(isDisabled: boolean = this.disabled): void {\r\n this.disabled = isDisabled;\r\n if (this.quillEditor) {\r\n if (isDisabled) {\r\n this.quillEditor.disable();\r\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled');\r\n } else {\r\n if (!this.readOnly) {\r\n this.quillEditor.enable();\r\n }\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\r\n }\r\n }\r\n }\r\n\r\n setReadOnlyState() {\r\n this.quillEditor.enable(!this.readOnly);\r\n }\r\n\r\n delegate(event: any, action: string) {\r\n let btn: HTMLElement | undefined = undefined;\r\n switch (action) {\r\n case 'bold':\r\n btn = this.btnBold?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'italic':\r\n btn = this.btnItalic?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'underline':\r\n btn = this.btnUnderline?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'align-center':\r\n btn = this.btnAlignCenter?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'align-right':\r\n btn = this.btnAlignRight?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'link':\r\n btn = this.btnLink?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'ul':\r\n btn = this.btnUl?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'ol':\r\n btn = this.btnOl?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'image':\r\n btn = this.btnImage?.nativeElement;\r\n btn?.click();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n currentLength(): number {\r\n return this.value?.length || 0;\r\n }\r\n\r\n hideDivider(name: string) {\r\n const linkOrImage = this.config?.toolbar?.image || this.config?.toolbar?.link;\r\n const lists = this.config?.toolbar?.bulletList || this.config?.toolbar?.orderedList;\r\n const typos = this.config?.toolbar?.bold || this.config?.toolbar?.italic || this.config?.toolbar?.underline;\r\n const textAlign = this.config?.toolbar?.alignCenter || this.config?.toolbar?.alignRight;\r\n switch (name) {\r\n case 'typo':\r\n return !typos || (!textAlign && !linkOrImage && !lists);\r\n case 'text-align':\r\n return !textAlign || (!linkOrImage && !lists);\r\n case 'lists':\r\n return !lists || !linkOrImage;\r\n case 'image':\r\n return !this.config?.toolbar?.image || !this.config?.toolbar.link;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private setEditorLabel() {\r\n const editorDiv = this.elementRef.nativeElement.querySelector('.ql-editor');\r\n this.renderer.setAttribute(editorDiv, 'role', 'textbox');\r\n this.renderer.setAttribute(editorDiv, 'aria-labelledby', `editor-label-${this.id}`);\r\n this.renderer.setAttribute(editorDiv, 'aria-multiline', 'true');\r\n }\r\n\r\n private handle() {\r\n this.setReadOnlyState();\r\n this.setDisabledState();\r\n }\r\n\r\n private addWhitespaceMatcher() {\r\n // set up a matcher that replaces placeholder ###tab### with \\t in delta again\r\n this.quillEditor.clipboard.addMatcher('P', (_node, delta) => {\r\n let str = JSON.stringify(delta);\r\n str = str.replace(/###tab###/g, '\\\\t');\r\n delta = JSON.parse(str);\r\n return delta;\r\n });\r\n }\r\n\r\n private addImageMatcher() {\r\n // set up a matcher that does allow/disallow to paste images corresponding to config settings\r\n this.quillEditor.clipboard.addMatcher('IMG', (_node, delta) => {\r\n // allowed, passthru delta\r\n if (this.config?.toolbar?.image === true) {\r\n return delta;\r\n }\r\n // not allowed, remove image by setting up a new delta\r\n return new Delta().insert('');\r\n });\r\n }\r\n\r\n private handleWhitespace(value: string): string {\r\n // set a placeholder for tab entity to avoid that quill removes it\r\n return value.replace(/&#9;/gi, '###tab###');\r\n }\r\n}\r\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 @if (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 }\n @if (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 }\n @if (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 }\n\n @if (!hideDivider('typo')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-text-align-center\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (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=\"fng-icon-svg-text-align-right\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (!hideDivider('text-align')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-list-view\"></i>\n </button>\n }\n @if (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=\"fng-icon-svg-enumeration\"></i>\n </button>\n }\n\n @if (!hideDivider('lists')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-image\"></i>\n </button>\n <button type=\"button\" #btnImage class=\"ql-image fwe-d-none\" aria-hidden=\"true\"></button>\n }\n\n @if (!hideDivider('image')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-link\"></i>\n </button>\n <button type=\"button\" #btnLink class=\"ql-link fwe-d-none\" aria-hidden=\"true\"></button>\n }\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 @if (hint) {\n <span class=\"fng-text-editor-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fng-text-editor-invalid\">{{ error }}</span>\n }\n @if (maxLength > 0 && value != null) {\n <span class=\"fwe-input-text-count\">{{ currentLength() }} / {{ maxLength }}</span>\n }\n</label>\n","import { NgModule } from '@angular/core';\r\nimport { FngCheckboxComponent } from './checkbox/checkbox.component';\r\nimport { FngColorIndicatorComponent } from './color-indicator/color-indicator.component';\r\nimport { FngColorPickerComponent } from './color-picker/color-picker.component';\r\nimport { FngTextInputComponent } from './text-input/text-input.component';\r\nimport { FngTimePickerDropdownComponent } from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\r\nimport { FngTimePickerComponent } from './time-picker/time-picker.component';\r\nimport { FngDatePickerComponent } from './date-picker/date-picker.component';\r\nimport { FngDateRangePickerComponent } from './date-range-picker/date-range-picker.component';\r\nimport { FngRadioComponent, FngRadioGroupDirective } from './radio/radio.component';\r\nimport { FngSegmentComponent } from './segment/segment.component';\r\nimport { FngSegmentControlComponent } from './segment/segment-control/segment-control.component';\r\nimport { FngSelectOptionComponent } from './select/select-option/select-option.component';\r\nimport { FngSelectComponent } from './select/select.component';\r\nimport { FngSliderComponent } from './slider/slider.component';\r\nimport { FngSwitchComponent } from './switch/switch.component';\r\nimport { FngTextAreaComponent } from './text-area/text-area.component';\r\nimport { FngTextEditorComponent } from './text-editor/text-editor.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FngCheckboxComponent,\r\n FngColorIndicatorComponent,\r\n FngColorPickerComponent,\r\n FngTextInputComponent,\r\n FngTimePickerDropdownComponent,\r\n FngTimePickerComponent,\r\n FngDatePickerComponent,\r\n FngDateRangePickerComponent,\r\n FngRadioGroupDirective,\r\n FngRadioComponent,\r\n FngSegmentComponent,\r\n FngSegmentControlComponent,\r\n FngSelectOptionComponent,\r\n FngSelectComponent,\r\n FngSliderComponent,\r\n FngSwitchComponent,\r\n FngTextAreaComponent,\r\n FngTextEditorComponent\r\n ],\r\n exports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FngCheckboxComponent,\r\n FngColorIndicatorComponent,\r\n FngColorPickerComponent,\r\n FngTextInputComponent,\r\n FngTimePickerDropdownComponent,\r\n FngTimePickerComponent,\r\n FngDatePickerComponent,\r\n FngDateRangePickerComponent,\r\n FngRadioGroupDirective,\r\n FngRadioComponent,\r\n FngSegmentComponent,\r\n FngSegmentControlComponent,\r\n FngSelectOptionComponent,\r\n FngSelectComponent,\r\n FngSliderComponent,\r\n FngSwitchComponent,\r\n FngTextAreaComponent,\r\n FngTextEditorComponent\r\n ]\r\n})\r\nexport class FestoAngularFormsModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { FestoAngularComponentsModule } from './components/components.module';\r\nimport { FestoAngularFormsModule } from './forms/forms.module';\r\nimport { FngSafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { FestoAngularModalsModule } from './modals/modals.module';\r\nimport { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule],\r\n exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule]\r\n})\r\nexport class FestoAngularModule {}\r\n","/*\r\n * Public API Surface of angular\r\n */\r\n\r\nexport * from './lib/components/accordion/index';\r\nexport * from './lib/components/breadcrumb/breadcrumb.component';\r\nexport * from './lib/components/buttons/button/button.component';\r\nexport * from './lib/components/buttons/link-button/link-button.component';\r\nexport * from './lib/components/chips/chip-container/chip-container.component';\r\nexport * from './lib/components/chips/chip/chip.component';\r\nexport * from './lib/components/components.module';\r\nexport * from './lib/components/loading-indicator/loading-indicator.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout.component';\r\nexport * from './lib/components/pagination/pagination.component';\r\nexport * from './lib/components/popovers/legend/legend.component';\r\nexport * from './lib/components/popovers/legend/legend.directive';\r\nexport * from './lib/components/popovers/popover-content/popover-content.component';\r\nexport * from './lib/components/popovers/popover-content/popover-content.directive';\r\nexport * from './lib/components/popovers/popover-menu/popover-menu.component';\r\nexport * from './lib/components/popovers/popover.models';\r\nexport * from './lib/components/popovers/popover.service';\r\nexport * from './lib/components/popovers/popover/popover.component';\r\nexport * from './lib/components/popovers/tooltip/tooltip.directive';\r\nexport * from './lib/components/progress/progress.component';\r\nexport * from './lib/components/scroll/scrollable.directive';\r\nexport * from './lib/components/search-input/search-input.component';\r\nexport * from './lib/components/snackbar/snackbar-container.component';\r\nexport * from './lib/components/snackbar/snackbar-container.directive';\r\nexport * from './lib/components/snackbar/snackbar.module';\r\nexport * from './lib/components/snackbar/snackbar.service';\r\nexport * from './lib/components/stepper-horizontal/step-horizontal/step-horizontal.component';\r\nexport * from './lib/components/stepper-horizontal/stepper-horizontal.component';\r\nexport * from './lib/components/stepper-vertical/step-vertical/step-vertical.component';\r\nexport * from './lib/components/stepper-vertical/stepper-vertical.component';\r\nexport * from './lib/components/table-header-cell/table-header-cell.directive';\r\nexport * from './lib/components/tabs/tab-pane/tab-pane.component';\r\nexport * from './lib/components/tabs/tabs.component';\r\nexport * from './lib/components/overlay/overlay-outlet.directive';\r\nexport * from './lib/components/overlay/overlay-content/overlay-content.component';\r\n\r\nexport * from './lib/modals/alert/alert.component';\r\nexport * from './lib/modals/index';\r\nexport * from './lib/modals/modal.service';\r\nexport * from './lib/modals/modals.module';\r\n\r\nexport * from './lib/components/bottom-sheet/bottom-sheet.component';\r\nexport * from './lib/components/sidebar-overlay/sidebar-overlay.component';\r\nexport * from './lib/forms/checkbox/checkbox.component';\r\nexport * from './lib/forms/color-indicator/color-indicator.component';\r\nexport * from './lib/forms/color-picker/color-picker.component';\r\nexport * from './lib/forms/date-picker/date-picker.component';\r\nexport * from './lib/forms/date-range-picker/date-range-picker.component';\r\nexport * from './lib/forms/forms.module';\r\nexport * from './lib/forms/radio/radio.component';\r\nexport * from './lib/forms/segment/segment-control/segment-control.component';\r\nexport * from './lib/forms/segment/segment.component';\r\nexport * from './lib/forms/select/select-option/select-option.component';\r\nexport * from './lib/forms/select/select.component';\r\nexport * from './lib/forms/slider/slider.component';\r\nexport * from './lib/forms/switch/switch.component';\r\nexport * from './lib/forms/text-area/text-area.component';\r\nexport * from './lib/forms/text-editor/text-editor.component';\r\nexport * from './lib/forms/text-input/text-input.component';\r\nexport * from './lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component';\r\nexport * from './lib/forms/time-picker/time-picker.component';\r\n\r\nexport * from './lib/directives/click-outside.directive';\r\n\r\nexport * from './lib/pipes/safe-html.pipe';\r\n\r\nexport * from './lib/festo-angular.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.PopoverRef","i2","i1.FngPopoverService","i1.FngSnackbarService","nextUniqueId","i3","i1.FngUniqueSelectionDispatcher"],"mappings":"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"}
1
+ {"version":3,"file":"festo-ui-angular.mjs","sources":["../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.html","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.html","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../projects/angular/src/lib/components/accordion/accordion.component.ts","../../../projects/angular/src/lib/components/accordion/accordion.component.html","../../../projects/angular/src/lib/components/accordion/accordion-header/accordion-header.component.ts","../../../projects/angular/src/lib/components/accordion/accordion-header/accordion-header.component.html","../../../projects/angular/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular/src/lib/components/buttons/button/button.component.ts","../../../projects/angular/src/lib/components/buttons/button/button.component.html","../../../projects/angular/src/lib/components/buttons/link-button/link-button.component.ts","../../../projects/angular/src/lib/components/buttons/link-button/link-button.component.html","../../../projects/angular/src/lib/components/chips/chip-container/chip-container.component.ts","../../../projects/angular/src/lib/components/chips/chip-container/chip-container.component.html","../../../projects/angular/src/lib/components/chips/chip/chip.component.ts","../../../projects/angular/src/lib/components/chips/chip/chip.component.html","../../../projects/angular/src/lib/directives/click-outside.directive.ts","../../../projects/angular/src/lib/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/angular/src/lib/components/bottom-sheet/bottom-sheet.component.html","../../../projects/angular/src/lib/components/loading-indicator/loading-indicator.component.ts","../../../projects/angular/src/lib/components/loading-indicator/loading-indicator.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.html","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout.component.ts","../../../projects/angular/src/lib/components/mobile-flyout/mobile-flyout.component.html","../../../projects/angular/src/lib/components/pagination/pagination.component.ts","../../../projects/angular/src/lib/components/pagination/pagination.component.html","../../../projects/angular/src/lib/components/popovers/popover-ref.ts","../../../projects/angular/src/lib/components/popovers/popover.models.ts","../../../projects/angular/src/lib/components/popovers/popover/popover.component.ts","../../../projects/angular/src/lib/components/popovers/popover/popover.component.html","../../../projects/angular/src/lib/components/popovers/popover.defaults.ts","../../../projects/angular/src/lib/components/popovers/popover.service.ts","../../../projects/angular/src/lib/components/popovers/legend/legend.component.ts","../../../projects/angular/src/lib/components/popovers/legend/legend.component.html","../../../projects/angular/src/lib/components/popovers/legend/legend.directive.ts","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.component.ts","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.component.html","../../../projects/angular/src/lib/components/popovers/popover-content/popover-content.directive.ts","../../../projects/angular/src/lib/components/popovers/popover-menu/popover-menu.component.ts","../../../projects/angular/src/lib/components/popovers/popover-menu/popover-menu.component.html","../../../projects/angular/src/lib/components/popovers/tooltip/tooltip.directive.ts","../../../projects/angular/src/lib/components/progress/progress.component.ts","../../../projects/angular/src/lib/components/progress/progress.component.html","../../../projects/angular/src/lib/components/scroll/scrollable.directive.ts","../../../projects/angular/src/lib/pipes/safe-html.pipe.ts","../../../projects/angular/src/lib/components/search-input/search-input.component.ts","../../../projects/angular/src/lib/components/search-input/search-input.component.html","../../../projects/angular/src/lib/components/sidebar-overlay/sidebar-overlay.component.ts","../../../projects/angular/src/lib/components/sidebar-overlay/sidebar-overlay.component.html","../../../projects/angular/src/lib/components/snackbar/snackbar.component.ts","../../../projects/angular/src/lib/components/snackbar/snackbar.component.html","../../../projects/angular/src/lib/components/snackbar/snackbar.service.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.directive.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.component.ts","../../../projects/angular/src/lib/components/snackbar/snackbar-container.component.html","../../../projects/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.ts","../../../projects/angular/src/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.html","../../../projects/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.ts","../../../projects/angular/src/lib/components/stepper-horizontal/stepper-horizontal.component.html","../../../projects/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.ts","../../../projects/angular/src/lib/components/stepper-vertical/step-vertical/step-vertical.component.html","../../../projects/angular/src/lib/components/stepper-vertical/stepper-vertical.component.ts","../../../projects/angular/src/lib/components/stepper-vertical/stepper-vertical.component.html","../../../projects/angular/src/lib/components/table-header-cell/table-header-cell.directive.ts","../../../projects/angular/src/lib/components/tabs/tab-pane/tab-pane.component.ts","../../../projects/angular/src/lib/components/tabs/tab-pane/tab-pane.component.html","../../../projects/angular/src/lib/components/tabs/tabs.component.ts","../../../projects/angular/src/lib/components/tabs/tabs.component.html","../../../projects/angular/src/lib/components/overlay/overlay-outlet.directive.ts","../../../projects/angular/src/lib/components/overlay/overlay-content/overlay-content.component.ts","../../../projects/angular/src/lib/components/overlay/overlay-content/overlay-content.component.html","../../../projects/angular/src/lib/components/components.module.ts","../../../projects/angular/src/lib/components/snackbar/snackbar.module.ts","../../../projects/angular/src/lib/modals/alert/alert.component.ts","../../../projects/angular/src/lib/modals/alert/alert.component.html","../../../projects/angular/src/lib/modals/confirm/confirm.component.ts","../../../projects/angular/src/lib/modals/confirm/confirm.component.html","../../../projects/angular/src/lib/forms/text-input/text-input.component.ts","../../../projects/angular/src/lib/forms/text-input/text-input.component.html","../../../projects/angular/src/lib/modals/prompt/prompt.component.ts","../../../projects/angular/src/lib/modals/prompt/prompt.component.html","../../../projects/angular/src/lib/modals/image-gallery/image-gallery.component.ts","../../../projects/angular/src/lib/modals/image-gallery/image-gallery.component.html","../../../projects/angular/src/lib/modals/modal.service.ts","../../../projects/angular/src/lib/modals/custom-modal/custom-modal.component.ts","../../../projects/angular/src/lib/modals/custom-modal/custom-modal.component.html","../../../projects/angular/src/lib/modals/modals.module.ts","../../../projects/angular/src/lib/forms/checkbox/checkbox.component.ts","../../../projects/angular/src/lib/forms/checkbox/checkbox.component.html","../../../projects/angular/src/lib/forms/color-indicator/color-indicator.component.ts","../../../projects/angular/src/lib/forms/color-indicator/color-indicator.component.html","../../../projects/angular/src/lib/forms/color-picker/color-helper.ts","../../../projects/angular/src/lib/forms/color-picker/color-picker.component.ts","../../../projects/angular/src/lib/forms/color-picker/color-picker.component.html","../../../projects/angular/src/lib/forms/flatpickr/flatpickr.component.ts","../../../projects/angular/src/lib/forms/flatpickr/flatpickr.component.html","../../../projects/angular/src/lib/forms/date-picker/date-picker.component.ts","../../../projects/angular/src/lib/forms/date-picker/date-picker.component.html","../../../projects/angular/src/lib/forms/date-range-picker/date-range-picker.component.ts","../../../projects/angular/src/lib/forms/date-range-picker/date-range-picker.component.html","../../../projects/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.ts","../../../projects/angular/src/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.html","../../../projects/angular/src/lib/forms/time-picker/time-picker.component.ts","../../../projects/angular/src/lib/forms/time-picker/time-picker.component.html","../../../projects/angular/src/lib/forms/unique-selection-dispatcher.ts","../../../projects/angular/src/lib/forms/radio/radio.component.ts","../../../projects/angular/src/lib/forms/radio/radio.component.html","../../../projects/angular/src/lib/forms/segment/segment-control/segment-control.component.ts","../../../projects/angular/src/lib/forms/segment/segment-control/segment-control.component.html","../../../projects/angular/src/lib/forms/segment/segment.component.ts","../../../projects/angular/src/lib/forms/segment/segment.component.html","../../../projects/angular/src/lib/forms/select/select-option/select-option.component.ts","../../../projects/angular/src/lib/forms/select/select-option/select-option.component.html","../../../projects/angular/src/lib/forms/select/chip-text.pipe.ts","../../../projects/angular/src/lib/forms/select/select.component.ts","../../../projects/angular/src/lib/forms/select/select.component.html","../../../projects/angular/src/lib/forms/slider/slider.component.ts","../../../projects/angular/src/lib/forms/slider/slider.component.html","../../../projects/angular/src/lib/forms/switch/switch.component.ts","../../../projects/angular/src/lib/forms/switch/switch.component.html","../../../projects/angular/src/lib/forms/text-area/text-area.component.ts","../../../projects/angular/src/lib/forms/text-area/text-area.component.html","../../../projects/angular/src/lib/forms/value-accessor-base.ts","../../../projects/angular/src/lib/forms/text-editor/text-editor.component.ts","../../../projects/angular/src/lib/forms/text-editor/text-editor.component.html","../../../projects/angular/src/lib/forms/forms.module.ts","../../../projects/angular/src/lib/festo-angular.module.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/festo-ui-angular.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item-body',\r\n templateUrl: './accordion-item-body.component.html',\r\n styleUrls: ['./accordion-item-body.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemBodyComponent {\r\n // parentId will be set by accordion item this body belongs to\r\n id: string = '';\r\n}\r\n","<div\r\n role=\"region\"\r\n [attr.id]=\"id + '-body'\"\r\n [attr.aria-labelledby]=\"id + '-header'\"\r\n class=\"fng-accordion-item-body\"\r\n>\r\n <ng-content></ng-content>\r\n <div class=\"fng-accordion-item-body-spacer-bottom\"></div>\r\n</div>\r\n","import { Component, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport enum FngAccordionHeaderActions {\r\n Toggle = 'toggle'\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item-header',\r\n templateUrl: './accordion-item-header.component.html',\r\n styleUrls: ['./accordion-item-header.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemHeaderComponent implements OnDestroy {\r\n // parentId will be set by accordion item this header belongs to\r\n id: string = '';\r\n private actions: Subject<FngAccordionHeaderActions> = new Subject<FngAccordionHeaderActions>();\r\n actions$: Observable<FngAccordionHeaderActions> = this.actions.asObservable();\r\n\r\n ngOnDestroy() {\r\n this.actions.complete();\r\n }\r\n\r\n toggle() {\r\n this.actions.next(FngAccordionHeaderActions.Toggle);\r\n }\r\n}\r\n","<div\r\n class=\"fng-accordion-item-header\"\r\n role=\"button\"\r\n tabindex=\"0\"\r\n [attr.id]=\"id + '-header'\"\r\n [attr.aria-expanded]=\"\"\r\n [attr.aria-controls]=\"id + '-body'\"\r\n (click)=\"toggle()\"\r\n>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Subscription } from 'rxjs';\r\nimport { FngAccordionActions, FngAccordionComponent } from './../accordion.component';\r\nimport {\r\n Component,\r\n ContentChild,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n ElementRef,\r\n Renderer2,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n AfterContentInit\r\n} from '@angular/core';\r\n\r\nimport { FngAccordionItemBodyComponent } from './accordion-item-body/accordion-item-body.component';\r\nimport { FngAccordionHeaderActions, FngAccordionItemHeaderComponent } from './accordion-item-header/accordion-item-header.component';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrls: ['./accordion-item.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionItemComponent implements OnChanges, AfterViewInit, AfterContentInit {\r\n static nextId = 0;\r\n componentId = `accordion-item-${++FngAccordionItemComponent.nextId}`;\r\n expanded: boolean = false;\r\n _linkText: string = '';\r\n get linkText() {\r\n if (this.expanded === true) {\r\n this._linkText = this?.accordion?.showLess || '';\r\n } else {\r\n this._linkText = this?.accordion?.showMore || '';\r\n }\r\n return this._linkText;\r\n }\r\n\r\n @ContentChild(FngAccordionItemHeaderComponent) header: FngAccordionItemHeaderComponent | undefined;\r\n @ContentChild(FngAccordionItemBodyComponent) body: FngAccordionItemBodyComponent | undefined;\r\n\r\n // compound id of parent id and this component id to get a unique identifier in dom\r\n id = '';\r\n\r\n // parentId will be set by accordion this item belongs to\r\n parentId: string = '';\r\n private accordion: FngAccordionComponent | undefined;\r\n private accordionSubscription: Subscription | undefined;\r\n private accordionItemHeaderSubscription: Subscription | undefined;\r\n private element: HTMLElement | null = null;\r\n private pristine: boolean = true;\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private cd: ChangeDetectorRef) {}\r\n\r\n ngAfterContentInit(): void {\r\n this.id = `${this.parentId}-${this.componentId}`;\r\n if (this.header && this.body) {\r\n this.header.id = this.id;\r\n this.body.id = this.id;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const element: HTMLElement = this.elementRef.nativeElement;\r\n this.element = element.querySelector('.fng-accordion-item-body');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes?.['accordion']?.currentValue != null) {\r\n const accordion = changes?.['accordion']?.currentValue;\r\n this.accordion = accordion;\r\n if (this.accordion) {\r\n this.subscribeToAccordionActions();\r\n this.subscribeToAccordionItemHeaderActions();\r\n }\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n toggle(): void {\r\n // save the new expanded state in another var, because it may be overwritten when closeAll is called\r\n const newExpandedState = !this.expanded;\r\n const changeExpandedState = () => {\r\n this.expanded = newExpandedState;\r\n if (this.expanded === true) {\r\n this.expandItem();\r\n } else {\r\n this.collapseItem();\r\n }\r\n };\r\n\r\n // if the accordion allows only one expanded item at once we first have to close all items\r\n if (this.accordion != null && this.accordion.multi === false) {\r\n this.accordion.closeAll();\r\n /// run in new macrotask to avoid render issues when transitioning to new expanded state\r\n setTimeout(() => {\r\n changeExpandedState();\r\n });\r\n } else {\r\n changeExpandedState();\r\n }\r\n }\r\n\r\n collapseItem() {\r\n // get the height of item body regardless of its actual size\r\n const itemHeight = this.element?.scrollHeight;\r\n // set the actual item height as style to avoid transition from height: auto\r\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\r\n setTimeout(() => {\r\n this.renderer.setStyle(this.element, 'height', 0 + 'px');\r\n });\r\n }\r\n\r\n expandItem() {\r\n // if the item was expanded once, we have to rerun change detection before expanding again\r\n // because the content inside may have changed\r\n if (this.pristine === false) {\r\n this.cd.detectChanges();\r\n }\r\n\r\n // get the height of item body regardless of its actual size\r\n const itemHeight = this.element?.scrollHeight;\r\n this.renderer.setStyle(this.element, 'height', itemHeight + 'px');\r\n setTimeout(() => {\r\n this.renderer.setStyle(this.element, 'height', null);\r\n this.pristine = false;\r\n }, 300);\r\n }\r\n\r\n private handleAction(action: FngAccordionActions | FngAccordionHeaderActions) {\r\n switch (action) {\r\n case FngAccordionActions.OpenAll:\r\n this.expanded = true;\r\n this.expandItem();\r\n break;\r\n case FngAccordionActions.CloseAll:\r\n if (this.expanded === true) {\r\n this.expanded = false;\r\n this.collapseItem();\r\n }\r\n break;\r\n case FngAccordionHeaderActions.Toggle:\r\n this.toggle();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n private subscribeToAccordionActions() {\r\n if (this.accordionSubscription != null) {\r\n this.accordionSubscription.unsubscribe();\r\n }\r\n this.accordionSubscription = this.accordion?.actions$.subscribe(action => {\r\n this.handleAction(action);\r\n });\r\n }\r\n\r\n private subscribeToAccordionItemHeaderActions() {\r\n if (this.accordionItemHeaderSubscription != null) {\r\n this.accordionItemHeaderSubscription.unsubscribe();\r\n }\r\n this.accordionItemHeaderSubscription = this.header?.actions$.subscribe(action => {\r\n this.handleAction(action);\r\n });\r\n }\r\n}\r\n","<div class=\"fng-accordion-item\" [class.fng-accordion-item--collapsed]=\"!expanded\" [class.fng-accordion-item--expanded]=\"expanded === true\">\r\n <ng-content></ng-content>\r\n <div class=\"fng-accordion-item-link\">{{ linkText }}</div>\r\n</div>\r\n","import { Component, ContentChildren, QueryList, SimpleChange, ViewEncapsulation, AfterViewInit, Input, OnDestroy } from '@angular/core';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { FngAccordionItemComponent } from './accordion-item/accordion-item.component';\r\n\r\nexport enum FngAccordionActions {\r\n OpenAll = 'openAll',\r\n CloseAll = 'closeAll'\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionComponent implements AfterViewInit, OnDestroy {\r\n static nextId = 0;\r\n readonly componentId = `accordion-${++FngAccordionComponent.nextId}`;\r\n\r\n private actions: Subject<FngAccordionActions> = new Subject<FngAccordionActions>();\r\n actions$: Observable<FngAccordionActions> = this.actions.asObservable();\r\n\r\n // if the accordion should only allow one expanded item at once this property can be set to false\r\n @Input('fngAccordionKeepItemsOpen') multi: boolean = true;\r\n @Input('fngAccordionShowMoreText') showMore: string = 'Show more';\r\n @Input('fngAccordionShowLessText') showLess: string = 'Show less';\r\n @ContentChildren(FngAccordionItemComponent) items: QueryList<FngAccordionItemComponent> | undefined;\r\n\r\n ngAfterViewInit(): void {\r\n this.items?.forEach(item => {\r\n item.ngOnChanges({\r\n parentId: new SimpleChange(null, this.componentId, false),\r\n accordion: new SimpleChange(null, this, false)\r\n });\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.actions.complete();\r\n }\r\n\r\n openAll(): void {\r\n if (this.multi) {\r\n this.actions.next(FngAccordionActions.OpenAll);\r\n }\r\n }\r\n\r\n closeAll(): void {\r\n this.actions.next(FngAccordionActions.CloseAll);\r\n }\r\n}\r\n","<div class=\"fng-accordion\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-accordion-header',\r\n templateUrl: './accordion-header.component.html',\r\n styleUrls: ['./accordion-header.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngAccordionHeaderComponent {}\r\n","<div class=\"fng-accordion-header\">\r\n <ng-content></ng-content>\r\n</div>\r\n","\r\nimport { Component, Input, EventEmitter, Output, ViewEncapsulation } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@Component({\n imports: [RouterModule],\n selector: 'fng-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngBreadcrumbComponent {\r\n @Input() useRouterLink = false;\r\n @Input() locations: { label: string; url: string }[] = [];\r\n @Output() navigate = new EventEmitter<string>();\r\n}\r\n","<div class=\"fwe-breadcrumb\">\n @for (location of locations; track location) {\n @if (useRouterLink) {\n <a class=\"fng-breadcrumb-location\" [routerLink]=\"location.url\">{{ location.label }}</a>\n }\n @if (!useRouterLink) {\n <a class=\"fng-breadcrumb-location\" (click)=\"navigate.emit(location.url)\">{{ location.label }}</a>\n }\n }\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngButtonComponent {\r\n @Input() text: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() disabled = false;\r\n @Input() primary = false;\r\n @Input() tertiary = false;\r\n @Input() iconOnly = false;\r\n @Input() large = false;\r\n @Input() floating = false;\r\n @Output() fngClick = new EventEmitter<any>();\r\n @ContentChild('content') content: ElementRef | undefined;\r\n\r\n onClick(event: any) {\r\n if (!this.disabled) {\r\n this.fngClick.emit(event);\r\n }\r\n }\r\n}\r\n","\n<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\r\n 'fwe-btn': true,\r\n 'fng-button': true,\r\n 'fwe-btn-icon': iconOnly,\r\n 'fwe-disabled': disabled,\r\n 'fwe-btn-hero': primary && !tertiary,\r\n 'fwe-btn-link': tertiary && !primary,\r\n 'fwe-btn-lg': large,\r\n 'fwe-btn-floating': floating\r\n }\"\r\n [disabled]=\"disabled\"\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!iconOnly) {\n <div>\n <ng-content></ng-content>\n @if (!content) {\n <span>{{ text }}</span>\n }\n </div>\n }\n</button>\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, Output, EventEmitter, ViewEncapsulation, ContentChild, ElementRef } from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-link-button',\n templateUrl: './link-button.component.html',\n styleUrls: ['./link-button.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLinkButtonComponent {\r\n @Input() text: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() disabled = false;\r\n @Input() iconOnly = false;\r\n @Output() fngClick = new EventEmitter<any>();\r\n @ContentChild('content') content: ElementRef | undefined;\r\n\r\n onClick(event: any) {\r\n this.fngClick.emit(event);\r\n }\r\n}\r\n","<button\n (click)=\"onClick($event)\"\n [ngClass]=\"{\r\n 'fwe-btn': true,\r\n 'fwe-btn-link': true,\r\n 'fwe-disabled': disabled\r\n }\"\r\n [disabled]=\"disabled\"\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!iconOnly) {\n <ng-content></ng-content>\n }\n @if (!content) {\n <span>{{ text }}</span>\n }\n</button>\n","\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-chip-container',\n templateUrl: './chip-container.component.html',\n styleUrls: ['./chip-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngChipContainerComponent {\r\n @Input() large = false;\r\n}\r\n","<div class=\"fwe-chip-container\" [class.fwe-chip-container-lg]=\"large\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum ChipType {\r\n Choise = 'CHOISE',\r\n Category = 'CATEGORY',\r\n Filter = 'FILTER',\r\n Action = 'ACTION',\r\n Readonly = 'READONLY'\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-chip',\n templateUrl: './chip.component.html',\n styleUrls: ['./chip.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngChipComponent {\r\n ChipType = ChipType;\r\n\r\n @Input() type: ChipType = ChipType.Choise;\r\n @Input() selected = false;\r\n @Input() disabled = false;\r\n @Input() icon: string | undefined;\r\n @Input() large = false;\r\n}\r\n","<div\n [ngClass]=\"{\r\n 'fwe-chip': true,\r\n 'fwe-selected': selected,\r\n 'fwe-disabled': disabled,\r\n 'fwe-chip-lg': large,\r\n 'fwe-category': type === ChipType.Category,\r\n 'fwe-filter': type === ChipType.Filter,\r\n 'fwe-readonly': type === ChipType.Readonly\r\n }\"\r\n >\n @if (icon) {\n <i [class]=\"'fwe-icon fwe-icon-' + icon\"></i>\n }\n <ng-content></ng-content>\n</div>\n","import { Directive, ElementRef, Output, EventEmitter, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngClickOutside]'\r\n})\r\nexport class FngClickOutsideDirective {\r\n constructor(private elRef: ElementRef) {}\r\n\r\n @Output()\r\n public clickOutside = new EventEmitter();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(targetElement: HTMLElement) {\r\n const inside = this.elRef.nativeElement.contains(targetElement);\r\n if (!inside) {\r\n this.clickOutside.emit(null);\r\n }\r\n }\r\n}\r\n","\r\nimport { Component, EventEmitter, HostBinding, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n selector: 'fng-bottom-sheet',\n imports: [],\n templateUrl: './bottom-sheet.component.html',\n styleUrl: './bottom-sheet.component.scss',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngBottomSheetComponent {\r\n @Input() hasBackdrop: boolean = true;\r\n @Input() isExpanded: boolean = false;\r\n @Input() hideCloseIcon: boolean = false;\r\n @Input() expandFrom: 'bottom' | 'center' = 'center';\r\n\r\n @Output() close = new EventEmitter<void>();\r\n\r\n @HostBinding('class.bottom-sheet--open') isOpen = false;\r\n @HostBinding('class.bottom-sheet--expanded') get isExpandedState() {\r\n return this.isExpanded;\r\n }\r\n\r\n isClosing: boolean = false;\r\n\r\n private startY: number = 0;\r\n private currentY: number = 0;\r\n private swiping: boolean = false;\r\n\r\n ngOnInit() {\r\n setTimeout(() => {\r\n this.isOpen = true;\r\n }, 0); // trigger the transition on open\r\n }\r\n\r\n @HostListener('touchstart', ['$event'])\r\n onTouchStart(event: TouchEvent) {\r\n this.startY = event.touches[0].clientY;\r\n this.swiping = true;\r\n }\r\n\r\n @HostListener('touchmove', ['$event'])\r\n onTouchMove(event: TouchEvent) {\r\n if (!this.swiping) return;\r\n\r\n this.currentY = event.touches[0].clientY;\r\n const deltaY = this.currentY - this.startY;\r\n\r\n if (deltaY < -50 && !this.isExpanded) {\r\n // swipe up to expand\r\n this.isExpanded = true;\r\n this.swiping = false;\r\n } else if (deltaY > 50 && this.isExpanded) {\r\n // swipe down to collapse\r\n this.isExpanded = false;\r\n this.swiping = false;\r\n } else if (deltaY > 100 && !this.isExpanded) {\r\n // swipe down to close\r\n this.closeBottomSheet();\r\n this.swiping = false;\r\n }\r\n }\r\n\r\n @HostListener('touchend')\r\n onTouchEnd() {\r\n this.swiping = false;\r\n }\r\n\r\n toggleExpand() {\r\n this.isExpanded = !this.isExpanded;\r\n }\r\n\r\n closeBottomSheet() {\r\n this.isClosing = true;\r\n this.hasBackdrop = false;\r\n setTimeout(() => {\r\n this.isClosing = false;\r\n this.isOpen = false;\r\n this.close.emit();\r\n }, 300); // wait for the transition to finish before closing\r\n }\r\n}\r\n","<div class=\"fwe-bottom-sheet-backdrop\" [class.fwe-bottom-sheet-backdrop--visible]=\"hasBackdrop\"\n(click)=\"closeBottomSheet()\"></div>\n<div class=\"fwe-bottom-sheet-container\" [class.fwe-bottom-sheet-container--open]=\"isOpen\"\n [class.fwe-bottom-sheet-container--expanded]=\"isExpanded\"\n [class.fwe-bottom-sheet-container--expand-from-center]=\"expandFrom === 'center'\"\n [class.fwe-bottom-sheet-container--with-backdrop]=\"hasBackdrop\"\n [class.fwe-bottom-sheet-container--closing]=\"isClosing\"\n >\n <div class=\"fwe-bottom-sheet-header\">\n <div class=\"fwe-bottom-sheet-drag-handle-container\" (click)=\"toggleExpand()\">\n <div class=\"fwe-bottom-sheet-drag-handle\"></div>\n </div>\n @if (!hideCloseIcon) {\n <button type=\"button\"\n class=\"fwe-bottom-sheet-close-btn\" (click)=\"closeBottomSheet()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n }\n </div>\n <div class=\"fwe-bottom-sheet-content\">\n <ng-content></ng-content>\n </div>\n</div>","\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-loading-indicator',\n templateUrl: './loading-indicator.component.html',\n styleUrls: ['./loading-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLoadingIndicatorComponent {\r\n @Input() size: 'large' | 'medium' | 'small' = 'large';\r\n}\r\n","<div class=\"fwe-waiting-container\" [class.fwe-waiting-container-sm]=\"size === 'small'\">\r\n <div\r\n class=\"fwe-waiting-indicator\"\r\n [class.fwe-waiting-indicator-md]=\"size === 'medium'\"\r\n [class.fwe-waiting-indicator-sm]=\"size === 'small'\"\r\n >\r\n <div class=\"fwe-waiting-circle-1\"></div>\r\n <div class=\"fwe-waiting-circle-2\"></div>\r\n <div class=\"fwe-waiting-circle-3\"></div>\r\n <div class=\"fwe-waiting-circle-4\"></div>\r\n </div>\r\n <div class=\"fwe-waiting-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","/* eslint-disable @angular-eslint/no-empty-lifecycle-method */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnChanges, Optional, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { RouterLinkActive, RouterModule } from '@angular/router';\r\n\r\n@Component({\r\n imports: [CommonModule, RouterModule],\r\n selector: 'fng-mobile-flyout-item',\r\n templateUrl: './mobile-flyout-item.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngMobileFlyoutItemComponent implements OnChanges {\r\n @Input() icon: string = '';\r\n @Input() pageLink: string = '';\r\n @Input() lastElement = false;\r\n\r\n onNavigateCallback: ((pageName: string) => void) | undefined;\r\n\r\n constructor(@Optional() public rla: RouterLinkActive | null) {}\r\n\r\n ngOnChanges(_: SimpleChanges): void {\r\n // lifecycle hook is called by parent component so do not remove it\r\n }\r\n\r\n onClick() {\r\n if (this.onNavigateCallback) {\r\n this.onNavigateCallback(this.pageLink);\r\n }\r\n }\r\n}\r\n","<a class=\"fwe-mobile-flyout-item\" [class.fwe-bb]=\"!lastElement\" (click)=\"onClick()\">\n @if (icon) {\n <i [class]=\"'fwe-mr-xs fwe-icon fwe-icon-' + icon\"></i>\n }\n @if (!rla) {\n <div class=\"fwe-flex-grow-1\" routerLinkActive=\"fwe-color-hero\">\n <ng-container *ngTemplateOutlet=\"itemContent\"></ng-container>\n </div>\n }\n @if (rla?.routerLinkActiveOptions) {\n <div\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 }\n @if (pageLink) {\n <i class=\"fwe-icon fwe-icon-arrows-right-2\"></i>\n }\n</a>\n<ng-template #itemContent>\n <ng-content></ng-content>\n</ng-template>\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList, OnDestroy, SimpleChange, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngMobileFlyoutItemComponent } from '../mobile-flyout-item/mobile-flyout-item.component';\r\n\r\n\r\n@Component({\n imports: [],\n selector: 'fng-mobile-flyout-page',\n templateUrl: './mobile-flyout-page.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngMobileFlyoutPageComponent implements AfterContentInit, OnDestroy {\r\n @ContentChildren(FngMobileFlyoutItemComponent) itemComponents!: QueryList<FngMobileFlyoutItemComponent>;\r\n @Input() name: string = '';\r\n @Input() back: string = 'Back';\r\n\r\n isfirstelement = false;\r\n visible = false;\r\n onNavigateCallback: ((pageName: string) => void) | undefined;\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n ngAfterContentInit(): void {\r\n this.initItemComponents();\r\n\r\n // if we have item components that are added dynamically (e.g. *ngIf)\r\n // we need to call init again to have all navigate callbacks defined\r\n this.itemComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\r\n this.initItemComponents();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onNavigate(pageName: string) {\r\n if (this.onNavigateCallback) {\r\n this.onNavigateCallback(pageName);\r\n }\r\n }\r\n\r\n onBack() {\r\n this.visible = false;\r\n }\r\n\r\n private initItemComponents() {\r\n if (!this.itemComponents) {\r\n return;\r\n }\r\n\r\n // register click-callbacks\r\n this.itemComponents.forEach(s => {\r\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\r\n });\r\n\r\n if (this.itemComponents.last) {\r\n // pass new value by ngOnChanges for proper change detection\r\n this.itemComponents.last.ngOnChanges({\r\n lastElement: new SimpleChange(null, true, false)\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-mobile-flyout-page\" [class.fwe-opened]=\"visible\">\n @if (!isfirstelement) {\n <div class=\"fwe-page-back\" (click)=\"onBack()\">\n <i></i>\n <div>{{ back }}</div>\n </div>\n }\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, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngMobileFlyoutPageComponent } from './mobile-flyout-page/mobile-flyout-page.component';\r\n\r\nimport { FngClickOutsideDirective } from '../../directives/click-outside.directive';\r\n\r\n@Component({\n imports: [FngClickOutsideDirective],\n selector: 'fng-mobile-flyout',\n templateUrl: './mobile-flyout.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngMobileFlyoutComponent implements AfterContentInit, OnDestroy {\r\n @Output() flyoutOpenChange: EventEmitter<boolean> = new EventEmitter();\r\n @ContentChildren(FngMobileFlyoutPageComponent) pageComponents!: QueryList<FngMobileFlyoutPageComponent>;\r\n isOpen = false;\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n ngAfterContentInit(): void {\r\n this.initPageComponents();\r\n\r\n // if we have page components that are added dynamically (e.g. *ngIf)\r\n // we need to call init again to have all navigate callbacks defined\r\n this.pageComponents.changes.pipe(takeUntil(this.complete)).subscribe(() => {\r\n this.initPageComponents();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onNavigate(pageName: string) {\r\n // handle clicks on router links\r\n if (!pageName) {\r\n this.isOpen = false;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n // handle page-navigation clicks\r\n const nextPage = this.pageComponents.find(p => p.name === pageName);\r\n if (nextPage) {\r\n nextPage.visible = true;\r\n }\r\n }\r\n\r\n toggle() {\r\n this.isOpen = !this.isOpen;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n onClickOutside() {\r\n this.isOpen = false;\r\n this.flyoutOpenChange.emit(this.isOpen);\r\n }\r\n\r\n private initPageComponents() {\r\n if (!this.pageComponents) {\r\n return;\r\n }\r\n\r\n // register click-callbacks and open the first element\r\n this.pageComponents.forEach((s, i) => {\r\n s.onNavigateCallback = pageName => this.onNavigate(pageName);\r\n s.isfirstelement = i === 0;\r\n s.visible = i === 0;\r\n });\r\n }\r\n}\r\n","<div class=\"fwe-mobile-flyout\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\r\n <button [class.fwe-burger-button]=\"!isOpen\" [class.fwe-close-button]=\"isOpen\" (click)=\"toggle()\"></button>\r\n <div class=\"fwe-mobile-flyout-container\" [class.fwe-opened]=\"isOpen\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nexport enum FngPaginationType {\r\n Numeric = 'NUMERIC',\r\n Dots = 'DOTS'\r\n}\r\n\r\n@Component({\n imports: [],\n selector: 'fng-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: ['./pagination.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPaginationComponent {\r\n PaginationType = FngPaginationType;\r\n\r\n @Input() type: FngPaginationType = FngPaginationType.Numeric;\r\n @Input() pageCurrent = 0;\r\n @Input()\r\n set pageMax(value: number) {\r\n this.innerPageMax = value;\r\n this.dotArray = [...Array(value).fill(0).keys()];\r\n }\r\n get pageMax() {\r\n return this.innerPageMax;\r\n }\r\n\r\n @Output() changePage = new EventEmitter<number>();\r\n\r\n innerPageMax: number = 0;\r\n dotArray: number[] = [];\r\n\r\n onBtnDown() {\r\n if (this.pageCurrent > 1) {\r\n this.pageCurrent--;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n }\r\n\r\n onBtnUp() {\r\n if (this.pageCurrent < this.pageMax) {\r\n this.pageCurrent++;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n }\r\n\r\n onDotClick(index: number) {\r\n this.pageCurrent = index + 1;\r\n this.changePage.emit(this.pageCurrent);\r\n }\r\n}\r\n","@if (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}\n\n@if (type === PaginationType.Dots) {\n <div class=\"fwe-p-m\" [class.fwe-d-none]=\"pageMax < 2\">\n <div class=\"fwe-pagination\">\n @for (index of dotArray; track index) {\n <span\n class=\"fwe-page-dot\"\n [class.fwe-selected]=\"index + 1 === pageCurrent\"\n (click)=\"onDotClick(index)\"\n ></span>\n }\n </div>\n </div>\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { FngPopoverContent, FngPopoverCloseEvent } from './popover.models';\r\n\r\nexport class PopoverRef<T = any> {\r\n private afterClosed = new Subject<FngPopoverCloseEvent<T>>();\r\n afterClosed$ = this.afterClosed.asObservable();\r\n\r\n constructor(public overlay: OverlayRef, public content: FngPopoverContent | undefined, public data: T) {\r\n overlay.backdropClick().subscribe(() => {\r\n this._close('backdropClick', undefined);\r\n });\r\n }\r\n\r\n close(data?: T) {\r\n this._close('close', data);\r\n }\r\n\r\n private _close(type: FngPopoverCloseEvent['type'], data?: T) {\r\n this.overlay.dispose();\r\n this.afterClosed.next({\r\n type,\r\n data\r\n });\r\n this.afterClosed.complete();\r\n }\r\n}\r\n","import { TemplateRef, Type } from '@angular/core';\r\n\r\nexport interface FngPopoverParams<T> {\r\n origin?: HTMLElement;\r\n content?: FngPopoverContent;\r\n options?: FngPopoverOptions;\r\n data: T;\r\n}\r\n\r\nexport type FngPopoverTypes = 'tooltip' | 'menu' | 'legend' | 'content';\r\nexport type FngPopoverPosition = 'top' | 'bottom' | 'right' | 'left';\r\n\r\nexport interface FngPopoverOptions {\r\n type: FngPopoverTypes;\r\n width?: string | number;\r\n height?: string | number;\r\n maxWidth?: string | number;\r\n maxHeight?: string | number;\r\n minWidth?: string | number;\r\n minHeight?: string | number;\r\n hasBackdrop?: boolean;\r\n backdropClass?: string;\r\n panelClass?: string;\r\n positions?: FngPopoverPosition[] | undefined;\r\n scrollStrategy?: FngScrollStrategy;\r\n}\r\n\r\nexport type FngScrollStrategy = 'noop' | 'close' | 'block';\r\n\r\nexport interface FngPopoverCloseEvent<T = any> {\r\n type: 'backdropClick' | 'close';\r\n data: T | undefined;\r\n}\r\n\r\nexport enum FngPopoverContentTypes {\r\n Template = 'template',\r\n Component = 'component',\r\n Text = 'text'\r\n}\r\n\r\nexport type FngPopoverContent = TemplateRef<any> | Type<any> | string;\r\n\r\nexport interface FngPopoverMenu<T = any> {\r\n text: string;\r\n icon: string;\r\n action: string;\r\n data?: T;\r\n}\r\n\r\nexport interface FngPopoverMenuAction<T = any> {\r\n action: string;\r\n payload: T;\r\n}\r\n\r\nexport interface FngPopoverMenuActionAware<T = any> {\r\n onMenuAction(event: FngPopoverMenuAction<T>): void;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverContentTypes } from '../popover.models';\r\n\r\n@Component({\n selector: 'fng-popover',\n templateUrl: './popover.component.html',\n styleUrls: ['./popover.component.scss'],\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverComponent implements OnInit {\r\n type: FngPopoverContentTypes | null = FngPopoverContentTypes.Text;\r\n content: any;\r\n context: any;\r\n\r\n constructor(private popoverRef: PopoverRef) {}\r\n\r\n ngOnInit() {\r\n this.content = this.popoverRef.content;\r\n if ('string' === typeof this.content) {\r\n this.type = FngPopoverContentTypes.Text;\r\n }\r\n\r\n if (this.content instanceof TemplateRef) {\r\n this.type = FngPopoverContentTypes.Template;\r\n this.context = {\r\n close: this.popoverRef.close.bind(this.popoverRef)\r\n };\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\">\n @switch (type) {\n @case ('text') {\n <div class=\"fwe-popover-content\" [innerHTML]=\"content\"></div>\n }\n @case ('template') {\n <ng-container *ngTemplateOutlet=\"content; context: context\"></ng-container>\n }\n @case ('component') {\n <ng-container *ngComponentOutlet=\"content\"></ng-container>\n }\n }\n </div>\n</div>\n","export const defaultPositions = {\r\n bottom: {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: 22\r\n },\r\n top: {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -22\r\n },\r\n right: {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: 22\r\n },\r\n left: {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -22\r\n }\r\n};\r\nexport const defaultClasses = {\r\n tooltip: 'fng-popover-tooltip',\r\n menu: 'fng-popover-menu',\r\n legend: 'fng-popover-legend',\r\n content: 'fng-popover-content',\r\n bottom: 'fng-popover-bottom',\r\n top: 'fng-popover-top',\r\n right: 'fng-popover-right',\r\n left: 'fng-popover-left',\r\n};\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport {\r\n Overlay,\r\n ConnectionPositionPair,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n NoopScrollStrategy,\r\n ConnectedPosition,\r\n CloseScrollStrategy,\r\n BlockScrollStrategy\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { PopoverRef } from './popover-ref';\r\nimport { FngPopoverComponent } from './popover/popover.component';\r\nimport { defaultPositions, defaultClasses } from './popover.defaults';\r\nimport { FngPopoverParams, FngPopoverOptions, FngPopoverTypes, FngPopoverPosition, FngScrollStrategy } from './popover.models';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FngPopoverService {\r\n readonly options: FngPopoverOptions = {\r\n type: 'tooltip',\r\n width: undefined,\r\n height: undefined,\r\n maxWidth: undefined,\r\n maxHeight: undefined,\r\n minWidth: undefined,\r\n minHeight: undefined,\r\n hasBackdrop: false,\r\n backdropClass: 'fng-popover-backdrop',\r\n panelClass: undefined,\r\n positions: undefined\r\n };\r\n\r\n get defaultOptions() {\r\n return this.options;\r\n }\r\n\r\n constructor(private overlay: Overlay, private injector: Injector) {}\r\n\r\n open<T>({ origin, content, data, options }: FngPopoverParams<T>): PopoverRef<T> {\r\n if (null == options) {\r\n options = this.defaultOptions;\r\n }\r\n const overlayConfig = this.getOverlayConfig({ origin, options });\r\n const overlayRef = this.overlay.create(overlayConfig);\r\n const popoverRef = new PopoverRef<T>(overlayRef, content, data);\r\n const injector = this.createInjector(popoverRef, this.injector);\r\n\r\n overlayRef.attach(new ComponentPortal(FngPopoverComponent, null, injector));\r\n\r\n return popoverRef;\r\n }\r\n\r\n private getOverlayConfig({ origin, options }: { origin: HTMLElement | undefined; options: FngPopoverOptions }): OverlayConfig { \r\n const type = null != options.type ? options.type : this.defaultOptions.type;\r\n const positions = null != options.positions ? options.positions : this.defaultOptions.positions;\r\n\r\n return new OverlayConfig({\r\n width: null != options.width ? options.width : this.defaultOptions.width,\r\n height: null != options.height ? options.height : this.defaultOptions.height,\r\n maxWidth: null != options.maxWidth ? options.maxWidth : this.defaultOptions.maxWidth,\r\n maxHeight: null != options.maxHeight ? options.maxHeight : this.defaultOptions.maxHeight,\r\n minWidth: null != options.minWidth ? options.minWidth : this.defaultOptions.minWidth,\r\n minHeight: null != options.minHeight ? options.minHeight : this.defaultOptions.minHeight,\r\n positionStrategy: this.getOverlayPosition(origin!, type, positions),\r\n scrollStrategy: this.overlay.scrollStrategies != null ? this.getScrollStrategy(options?.scrollStrategy) : ({} as NoopScrollStrategy),\r\n hasBackdrop: null != options.hasBackdrop ? options.hasBackdrop : this.defaultOptions.hasBackdrop,\r\n backdropClass: null != options.backdropClass ? options.backdropClass : this.defaultOptions.backdropClass,\r\n panelClass: null != options.panelClass ? options.panelClass : this.defaultOptions.panelClass,\r\n });\r\n }\r\n\r\n private getScrollStrategy(scrollStrategy: FngScrollStrategy | undefined): NoopScrollStrategy | CloseScrollStrategy | BlockScrollStrategy {\r\n let strategy: NoopScrollStrategy | CloseScrollStrategy | BlockScrollStrategy;\r\n switch (scrollStrategy) {\r\n case 'noop':\r\n strategy = this.overlay.scrollStrategies.noop();\r\n break;\r\n case 'close':\r\n strategy = this.overlay.scrollStrategies.close();\r\n break;\r\n case 'block':\r\n strategy = this.overlay.scrollStrategies.block();\r\n break;\r\n default:\r\n strategy = this.overlay.scrollStrategies.block();\r\n break;\r\n }\r\n\r\n return strategy;\r\n }\r\n\r\n private getOverlayPosition(\r\n origin: HTMLElement,\r\n type: FngPopoverTypes,\r\n positions: FngPopoverPosition[] | undefined\r\n ): FlexibleConnectedPositionStrategy {\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .withPositions(null != positions ? this.getPositions(type, positions) : (this.getDefaultPositions(type) as ConnectedPosition[]))\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(16)\r\n .withPush(false);\r\n\r\n return positionStrategy;\r\n }\r\n\r\n private createInjector(popoverRef: PopoverRef, injector: Injector) {\r\n return Injector.create({\r\n parent: injector,\r\n providers: [{ provide: PopoverRef, useValue: popoverRef }]\r\n });\r\n }\r\n\r\n private getDefaultPositions(type: FngPopoverTypes | undefined | null): any {\r\n const pairs: any = [];\r\n let positions = [];\r\n const fn = (t: FngPopoverTypes, p: string[]) =>\r\n p.map(position => {\r\n pairs.push({\r\n ...defaultPositions[position as keyof typeof defaultPositions],\r\n panelClass: [defaultClasses[t], defaultClasses[position as keyof typeof defaultClasses]]\r\n });\r\n });\r\n switch (type) {\r\n case 'tooltip':\r\n positions = ['bottom', 'top'];\r\n fn('tooltip', positions);\r\n break;\r\n case 'menu':\r\n positions = ['right', 'left', 'bottom', 'top'];\r\n fn('menu', positions);\r\n break;\r\n case 'legend':\r\n positions = ['bottom'];\r\n fn('legend', positions);\r\n break;\r\n case 'content':\r\n positions = ['bottom'];\r\n fn('content', positions);\r\n break;\r\n default:\r\n break;\r\n }\r\n return pairs;\r\n }\r\n\r\n private getPositions(type: FngPopoverTypes, positions: FngPopoverPosition[]): ConnectionPositionPair[] {\r\n const pairs: any[] = [];\r\n positions.map(position => {\r\n pairs.push({\r\n ...defaultPositions[position as keyof typeof defaultPositions],\r\n panelClass: [defaultClasses[type], defaultClasses[position as keyof typeof defaultClasses]]\r\n });\r\n });\r\n\r\n return pairs;\r\n }\r\n}\r\n","\r\nimport { Component, Input, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngPopoverLegendOptions {\r\n maxWidth?: string | number;\r\n}\r\n\r\nexport interface FngLegendItem {\r\n name: string;\r\n text: string;\r\n}\r\n\r\n@Component({\n selector: 'fng-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n imports: [],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngLegendComponent {\r\n @Input() items: FngLegendItem[] = [];\r\n @Input() options: FngPopoverLegendOptions = {};\r\n @ViewChild('tpl') templateRef: TemplateRef<any> | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n show(origin: HTMLElement) {\r\n if (0 < this.items.length && this.templateRef) {\r\n this.popoverRef = this.popoverService.open({\r\n content: this.templateRef,\r\n origin,\r\n options: {\r\n type: 'legend',\r\n hasBackdrop: true\r\n },\r\n data: undefined\r\n });\r\n }\r\n }\r\n\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","<ng-template #tpl>\n @if (0 < items.length) {\n <dl class=\"fng-legend\">\n @for (item of items; track item) {\n <div class=\"fng-legend-content\">\n <dt>{{ item?.name }}</dt>\n <dd>{{ item?.text }}</dd>\n </div>\n }\n </dl>\n }\n</ng-template>\n","import { Directive, ElementRef, ContentChild, HostListener, OnInit } from '@angular/core';\r\n\r\nimport { FngPopoverContentComponent } from '../popover-content/popover-content.component';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngLegend]'\r\n})\r\nexport class FngLegendDirective implements OnInit {\r\n @ContentChild('fngContent') ref: FngPopoverContentComponent | undefined;\r\n private origin: HTMLElement | undefined;\r\n\r\n constructor(private elmenetRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n }\r\n\r\n @HostListener('click')\r\n show() {\r\n if (null != this.ref && this.origin) {\r\n this.ref.show(this.origin);\r\n }\r\n }\r\n}\r\n","\r\nimport {\r\n Component,\r\n ViewChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { FngPopoverService } from '../popover.service';\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverCloseEvent, FngPopoverPosition } from '../popover.models';\r\n\r\nexport interface FngPopoverContentOptions {\r\n positions?: FngPopoverPosition[];\r\n maxWidth?: string | number;\r\n minHeight?: string | number;\r\n}\r\n\r\nexport interface FngPopoverContentActions {\r\n close: () => void;\r\n}\r\n\r\n@Component({\n selector: 'fng-popover-content',\n templateUrl: './popover-content.component.html',\n styleUrls: ['./popover-content.component.scss'],\n imports: [],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverContentComponent implements AfterViewInit, OnDestroy {\r\n @Input() options: FngPopoverContentOptions = {};\r\n @Output() close: EventEmitter<FngPopoverCloseEvent> = new EventEmitter();\r\n @Output() actions: EventEmitter<FngPopoverContentActions> = new EventEmitter();\r\n @ViewChild('tpl') templateRef!: TemplateRef<any>;\r\n @ViewChild('fngContent') contentRef: ElementRef | undefined;\r\n\r\n showDefault = false;\r\n offScreen = true;\r\n height = 16; // add default padding\r\n width = 16; // add default padding\r\n\r\n private closeSub: Subscription | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n ngOnDestroy(): void {\r\n if (this.closeSub) {\r\n this.closeSub.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const parent: HTMLElement = this.templateRef.elementRef.nativeElement.parentElement;\r\n parent.childNodes.forEach((node: any) => {\r\n if (null != node.dataset && undefined !== node.dataset['fngRoot']) {\r\n this.width = this.width + node.getBoundingClientRect().width;\r\n this.height = this.height + node.getBoundingClientRect().height;\r\n }\r\n });\r\n }\r\n\r\n show(origin: HTMLElement) {\r\n this.offScreen = false;\r\n this.popoverRef = this.popoverService.open({\r\n content: this.templateRef,\r\n origin,\r\n options: {\r\n positions: null != this.options && this.options.positions ? this.options.positions : undefined,\r\n width: this.width,\r\n height: this.height,\r\n maxWidth: null != this.options && this.options.maxWidth ? this.options.maxWidth : undefined, \r\n type: 'content',\r\n hasBackdrop: true\r\n },\r\n data: undefined\r\n });\r\n\r\n this.actions.emit({\r\n close: () => {\r\n this.hide();\r\n }\r\n });\r\n\r\n if (this.closeSub) {\r\n this.closeSub.unsubscribe();\r\n }\r\n\r\n this.closeSub = this.popoverRef?.afterClosed$.pipe(take(1)).subscribe(event => {\r\n this.close.emit(event);\r\n });\r\n }\r\n\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","@if (showDefault) {\n <div #default></div>\n} @else {\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}\n","import { Directive, ElementRef, HostListener, OnInit, ContentChild } from '@angular/core';\r\n\r\nimport { FngPopoverContentComponent } from './popover-content.component';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngPopoverContent]'\r\n})\r\nexport class FngPopoverContentDirective implements OnInit {\r\n @ContentChild('fngComponent') component: FngPopoverContentComponent | undefined;\r\n private origin!: HTMLElement;\r\n\r\n constructor(private elmenetRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n }\r\n\r\n @HostListener('click')\r\n show() {\r\n if (null != this.component) {\r\n this.component.show(this.origin);\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n hide() {\r\n if (null != this.component) {\r\n this.component.hide();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverMenu, FngPopoverMenuAction, FngPopoverPosition } from '../popover.models';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngPopoverMenuOptions {\r\n positions?: FngPopoverPosition[];\r\n}\r\n\r\n@Component({\n selector: 'fng-popover-menu',\n templateUrl: './popover-menu.component.html',\n styleUrls: ['./popover-menu.component.scss'],\n imports: [CommonModule],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPopoverMenuComponent {\r\n @Input() icon = 'fwe-icon-menu-more fwe-icon-lg';\r\n @Input() menu: FngPopoverMenu[] = [];\r\n @Input() options: FngPopoverMenuOptions = {};\r\n\r\n @Output() menuAction: EventEmitter<FngPopoverMenuAction> = new EventEmitter();\r\n\r\n @ViewChild('menuTpl') menuTpl: TemplateRef<any> | undefined;\r\n @ViewChild('origin') origin: ElementRef | undefined;\r\n\r\n private popoverRef: PopoverRef | undefined;\r\n private itemHeight = 36;\r\n\r\n constructor(private popoverService: FngPopoverService) {}\r\n\r\n show(event: Event, content: TemplateRef<any> | undefined, origin: HTMLElement) {\r\n if (!content) {\r\n return;\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (0 < this.menu.length) {\r\n this.popoverRef = this.popoverService.open({\r\n content,\r\n origin,\r\n options: {\r\n type: 'menu',\r\n hasBackdrop: true,\r\n // height calc is needed for correct vertical positioning (+32 -> 2 * vertical padding 16px)\r\n height: +(this.itemHeight * this.menu.length + 32),\r\n positions: this.options != null && this.options.positions ? this.options.positions : undefined\r\n },\r\n data: undefined\r\n });\r\n }\r\n }\r\n\r\n action(action: string, payload: any) {\r\n this.menuAction.emit({ action, payload });\r\n\r\n this.popoverRef?.close();\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n hide() {\r\n this.popoverRef?.close();\r\n }\r\n}\r\n","@if (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-mr-0\" [ngClass]=\"icon\"></i>\n </button>\n <ng-template #menuTpl>\n <ul class=\"fwe-list-group\">\n @for (item of menu; track item) {\n <li 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 fwe-mr-0\" [ngClass]=\"item?.icon\"></i>\n <span>{{ item?.text }}</span>\n </button>\n </li>\n }\n </ul>\n </ng-template>\n}\n","import { Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\r\n\r\nimport { FngPopoverPosition } from './../popover.models';\r\nimport { PopoverRef } from '../popover-ref';\r\nimport { FngPopoverService } from '../popover.service';\r\n\r\nexport interface FngTooltipOptions {\r\n /**\r\n * @deprecated\r\n * Direct number input of maximum width of the tooltip is not supported anymore.\r\n * Use the `customClass` option instead and style the tooltip with CSS.\r\n * This option is kept for backward compatibility.\r\n */\r\n maxWidth?: string | number;\r\n delay?: number;\r\n customClass?: string;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngTooltip]'\r\n})\r\nexport class FngTooltipDirective implements OnChanges, OnDestroy {\r\n @Input('fngTooltip') text = '';\r\n @Input('fngTooltipVisible') isVisible: boolean = false;\r\n @Input('fngTooltipPositions') positions: FngPopoverPosition[] = [];\r\n @Input('fngTooltipOptions') options: FngTooltipOptions = { \r\n delay: 0,\r\n customClass: undefined\r\n };\r\n private origin: HTMLElement | undefined;\r\n private popoverRef: PopoverRef | undefined;\r\n private innerIsVisible = false;\r\n private timeoutHandle: any = null;\r\n\r\n constructor(\r\n private elmenetRef: ElementRef,\r\n private popoverService: FngPopoverService\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.origin = this.elmenetRef.nativeElement;\r\n\r\n if (changes?.['isVisible']?.currentValue === true) {\r\n if (this.innerIsVisible === false) {\r\n this.open();\r\n }\r\n }\r\n if (changes?.['isVisible']?.currentValue === false) {\r\n if (this.innerIsVisible === true) {\r\n this.close();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n show() {\r\n if (this.options && this.options.delay && this.options.delay > 0) {\r\n this.timeoutHandle = setTimeout(() => {\r\n this.open();\r\n }, +this.options?.delay);\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n hide() {\r\n if (this.timeoutHandle != null) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n this.close();\r\n }\r\n\r\n private open() {\r\n if (this.innerIsVisible === false && this.origin) {\r\n this.popoverRef = this.popoverService.open({\r\n content: this.text,\r\n origin: this.origin,\r\n options: {\r\n type: 'tooltip',\r\n // using a set here removes duplicate positions and ensures that at least the bottom position will be used\r\n positions: [...new Set([...this.positions, 'bottom'] as FngPopoverPosition[])],\r\n scrollStrategy: 'close',\r\n panelClass: this.options.customClass || 'fng-tooltip-panel'\r\n },\r\n data: undefined\r\n });\r\n this.innerIsVisible = true;\r\n }\r\n }\r\n\r\n private close() {\r\n if (this.popoverRef != null) {\r\n this.popoverRef.close();\r\n }\r\n this.innerIsVisible = false;\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-progress',\r\n templateUrl: './progress.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngProgressComponent {\r\n @Input() progress: number = 0;\r\n @Input() error: boolean = false;\r\n @Input() background: 'white' | 'background' | 'black' = 'white';\r\n}\r\n","<div class=\"fwe-progress\">\r\n <div\r\n class=\"fwe-progress-bar\"\r\n role=\"progressbar\"\r\n [style.width.%]=\"progress\"\r\n [class.fwe-bg-red]=\"error\"\r\n [class.fwe-progress-bar-black]=\"background === 'black'\"\r\n [class.fwe-progress-bar-background]=\"background === 'background'\"\r\n [attr.aria-valuenow]=\"progress\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\"\r\n ></div>\r\n</div>\r\n","import { Directive, ElementRef, OnChanges, SimpleChanges, Input, AfterViewInit, NgZone, Renderer2, OnDestroy } from '@angular/core';\r\nimport SimpleBar from 'simplebar';\r\n\r\n\r\nexport interface FngScrollableAware extends AfterViewInit {\r\n scrollableViewReady: boolean;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngScrollable]'\r\n})\r\nexport class FngScrollableDirective implements OnChanges, OnDestroy {\r\n @Input('fngScrollableScrollbarMinSize') scrollbarMinSize: number = 25;\r\n @Input('fngScrollableViewReady') viewReady: boolean = false;\r\n\r\n private sb: SimpleBar | undefined;\r\n private isScrolling = false;\r\n private resizeObserver: ResizeObserver = {} as ResizeObserver;\r\n\r\n constructor(private el: ElementRef, private ngZone: NgZone, private renderer: Renderer2) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['viewReady'].currentValue === true) {\r\n this.initScrollbar();\r\n this.initResizeObserver();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.resizeObserver?.disconnect();\r\n }\r\n\r\n private initScrollbar() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n // yes, we explict want to run outside angular to avoid unnecessary change detection cycles\r\n this.ngZone.runOutsideAngular(() => {\r\n this.sb = new SimpleBar(el, { scrollbarMinSize: this.scrollbarMinSize });\r\n this.sb.getScrollElement()?.addEventListener(\r\n 'scroll',\r\n this.delay(() => {\r\n // triggered on scroll stop\r\n this.isScrolling = false;\r\n }),\r\n false\r\n );\r\n });\r\n this.updateMaxWidth();\r\n }\r\n\r\n private initResizeObserver() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.updateMaxWidth();\r\n });\r\n this.resizeObserver.observe(el);\r\n }\r\n\r\n private updateMaxWidth() {\r\n const el: HTMLElement = this.el.nativeElement;\r\n const wrapper = el.querySelector('.simplebar-content-wrapper');\r\n const width = el.getBoundingClientRect().width;\r\n this.renderer.setStyle(wrapper, 'max-width', width + 'px');\r\n }\r\n\r\n private delay(callback: any) {\r\n let timer: number;\r\n return () => {\r\n if (!this.isScrolling) {\r\n // triggered on scroll start\r\n this.isScrolling = true;\r\n }\r\n\r\n window.clearTimeout(timer);\r\n timer = window.setTimeout(callback, 50);\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'fngSafeHtml'\r\n})\r\nexport class FngSafeHtmlPipe implements PipeTransform {\r\n constructor(protected sanitizer: DomSanitizer) {}\r\n\r\n public transform(value: any): SafeHtml {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ElementRef, ViewEncapsulation, Output, EventEmitter, HostListener } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\n\r\nimport { FngSafeHtmlPipe } from '../../pipes/safe-html.pipe';\r\n\r\nexport class FngSearchSuggestion {\r\n /**\r\n * a html-string. e.g.: '<strong> hello </strong>'\r\n */\r\n template: string = '';\r\n\r\n /**\r\n * This Value will be used as new query when the user selects the suggestion.\r\n */\r\n value: string = '';\r\n\r\n /**\r\n * Creates a basic Suggestion from a string. The first query match is highlighted by bold tags.\r\n * @param suggestionString The suggested string (should contain the whole query)\r\n * @param query The current query. This string will be highlighted.\r\n * @returns a html-string.\r\n */\r\n static basicSuggestion(suggestionString: string, query: string): FngSearchSuggestion {\r\n const i = suggestionString.toLocaleLowerCase().indexOf(query.toLocaleLowerCase());\r\n let template = suggestionString;\r\n if (i != -1) {\r\n const boldStart = i;\r\n const boldEnd = i + query.length;\r\n const part1 = suggestionString.substring(0, boldStart);\r\n const part2 = suggestionString.substring(boldStart, boldEnd);\r\n const part3 = suggestionString.substring(boldEnd, suggestionString.length);\r\n template = part1 + '<strong>' + part2 + '</strong>' + part3;\r\n }\r\n return { value: suggestionString, template };\r\n }\r\n}\r\n\r\n/**\r\n * A custom form element for search inputs.\r\n */\r\n@Component({\r\n imports: [FngSafeHtmlPipe],\r\n selector: 'fng-search-input',\r\n templateUrl: './search-input.component.html',\r\n styleUrls: ['./search-input.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngSearchInputComponent {\r\n @ViewChild('inputElement')\r\n inputRef!: ElementRef<HTMLInputElement>;\r\n\r\n /**\r\n * the querrry was changed, update the suggetion list\r\n */\r\n @Output()\r\n readonly fngChange = new EventEmitter<string>();\r\n\r\n /**\r\n * Start search on this event\r\n */\r\n @Output()\r\n readonly fngSearch = new EventEmitter<string>();\r\n\r\n /**\r\n * The search input label.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n innerValue: string = '';\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n }\r\n\r\n /**\r\n * The list of suggestions\r\n */\r\n @Input()\r\n set suggestions(value: FngSearchSuggestion[]) {\r\n this.selectedSuggestionIndex = -1;\r\n this.innerSuggestions = value;\r\n }\r\n\r\n /**\r\n * The list of suggestions capped by 10 entries\r\n */\r\n get cappedSuggestions(): FngSearchSuggestion[] {\r\n return this.innerSuggestions.slice(0, 10);\r\n }\r\n\r\n innerSuggestions: FngSearchSuggestion[] = [];\r\n hideSuggestionList: boolean = false;\r\n\r\n // This is the index of the selected element in dhe suggestion list.\r\n selectedSuggestionIndex = -1;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n keyhandler(event: KeyboardEvent) {\r\n if (!this.cappedSuggestions || !this.cappedSuggestions.length) {\r\n return;\r\n }\r\n\r\n // navigate inside the suggestion list\r\n if (event.key === 'ArrowUp') {\r\n if (this.selectedSuggestionIndex > 0) {\r\n this.selectedSuggestionIndex--;\r\n } else {\r\n this.selectedSuggestionIndex = this.cappedSuggestions.length - 1;\r\n }\r\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n if (this.selectedSuggestionIndex >= this.cappedSuggestions.length - 1) {\r\n this.selectedSuggestionIndex = 0;\r\n } else {\r\n this.selectedSuggestionIndex++;\r\n }\r\n this.value = this.cappedSuggestions[this.selectedSuggestionIndex].value;\r\n }\r\n }\r\n\r\n onClickOutside(): void {\r\n this.hideSuggestionList = true;\r\n }\r\n\r\n onFocus() {\r\n this.hideSuggestionList = false;\r\n }\r\n\r\n onInput(event: any) {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = event.target.value;\r\n this.fngChange.emit(this.value);\r\n }\r\n\r\n // also triggert on \"Enter\" and \"Escape\"\r\n onSearch(event: any): void {\r\n event.stopPropagation();\r\n this.selectedSuggestionIndex = -1;\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n\r\n onSuggestionClick(suggestion: FngSearchSuggestion) {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = suggestion.value;\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n\r\n clearQuery(): void {\r\n this.selectedSuggestionIndex = -1;\r\n this.value = '';\r\n this.fngSearch.emit(this.value);\r\n this.hideSuggestionList = true;\r\n this.inputRef.nativeElement.blur();\r\n }\r\n}\r\n","<div class=\"fwe-search-input\" (clickOutside)=\"onClickOutside()\" fngClickOutside>\n <input\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 @if (innerSuggestions.length && !hideSuggestionList) {\n <div class=\"fwe-search-suggestions\">\n @for (suggestion of cappedSuggestions; track suggestion; let i = $index) {\n <div\n (click)=\"onSuggestionClick(suggestion)\"\n [class.fwe-selected]=\"selectedSuggestionIndex === i\"\n class=\"fwe-search-suggestion\"\n >\n <div [innerHTML]=\"suggestion.template | fngSafeHtml\"></div>\n </div>\n }\n @if (innerSuggestions.length > 10) {\n <div class=\"fwe-ml-xxs\">...</div>\n }\n </div>\n }\n </div>\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n/**\r\n * Every sidebar instance has its unique instanceID.\r\n * When a sidebar is opened, this ID is the next currentsInstanceID.\r\n * Every instance with an other ID will be closed then.\r\n *\r\n * usage: <fng-sidebar-overlay [(open)]=\"sidebarOpen\" fngNavbarMargin> ... </fng-details-sidebar>\r\n */\r\n@Component({\n imports: [],\n selector: 'fng-sidebar-overlay',\n templateUrl: './sidebar-overlay.component.html',\n styleUrls: ['./sidebar-overlay.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSidebarOverlayComponent {\r\n static currentsInstanceID$ = new BehaviorSubject<number>(0);\r\n\r\n private instanceID: number;\r\n\r\n private internalOpen = false;\r\n\r\n @Input() get fngNavbarMargin(): boolean {\r\n return this.internalNavbarMargin;\r\n }\r\n set fngNavbarMargin(value: boolean | '') {\r\n this.internalNavbarMargin = value === '' || value;\r\n }\r\n internalNavbarMargin = false;\r\n\r\n @Input() set open(value: boolean | '') {\r\n this.internalOpen = value === '' || value;\r\n if (this.internalOpen) {\r\n FngSidebarOverlayComponent.currentsInstanceID$.next(this.instanceID);\r\n }\r\n }\r\n get open(): boolean {\r\n return this.internalOpen;\r\n }\r\n\r\n @Output() openChange = new EventEmitter<boolean>();\r\n\r\n constructor() {\r\n this.instanceID = Math.random();\r\n FngSidebarOverlayComponent.currentsInstanceID$.subscribe(id => {\r\n // close open instances when an other is opened\r\n if (this.internalOpen && id !== this.instanceID) {\r\n this.internalOpen = false;\r\n this.openChange.emit(this.internalOpen);\r\n }\r\n });\r\n }\r\n\r\n closeSidebar() {\r\n this.internalOpen = false;\r\n this.openChange.emit(this.internalOpen);\r\n }\r\n}\r\n","<div class=\"fwe-sidebar-overlay\" [class.fwe-sidebar-overlay--open]=\"open\" [class.fwe-navbar-margin]=\"internalNavbarMargin\">\r\n <button type=\"button\" class=\"fwe-sidebar-overlay-close-btn\" (click)=\"closeSidebar()\">\r\n <span class=\"fwe-sr-only\">Close</span>\r\n </button>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { AfterViewInit, Component, OnDestroy, output, signal, ViewEncapsulation } from '@angular/core';\r\nimport { FngSnackbarData } from './snackbar.models';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'fng-snackbar',\r\n templateUrl: './snackbar.component.html',\r\n styleUrls: ['./snackbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n host: { 'class': 'fng-snackbar' }\r\n})\r\nexport class FngSnackbarComponent implements AfterViewInit, OnDestroy {\r\n readonly data = signal<FngSnackbarData | undefined | null>({} as FngSnackbarData);\r\n readonly close = output();\r\n readonly action = output();\r\n readonly isShown = signal(false);\r\n readonly transformTranslateY = signal('translateY(24px)');\r\n\r\n private timeout: any;\r\n\r\n ngAfterViewInit() {\r\n const data = this.data();\r\n if (data && data.disappearAfter) {\r\n this.timeout = setTimeout(() => this.onClose(), data.disappearAfter);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.timeout) {\r\n clearTimeout(this.timeout);\r\n }\r\n }\r\n\r\n onAction() {\r\n this.action.emit();\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n}\r\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-info': data()?.type === 'info',\n 'fwe-snackbar-warning': data()?.type === 'warning',\n 'fwe-snackbar-error': data()?.type === 'error',\n 'fwe-snackbar-shadow': data()?.darkBackground,\n 'fng-snackbar-entering': isShown(),\n 'fng-snackbar-leaving': !isShown()\n }\"\n [style.transform]=\"transformTranslateY()\"\n >\n <span>{{ data()?.text }}</span>\n @if (data()?.action) {\n <button aria-label=\"UserAction\" type=\"button\" class=\"fwe-snackbar-link-btn\" (click)=\"onAction()\">\n {{ data()?.action }}\n </button>\n }\n\n @if (data()?.action && data()?.showClose) {\n <div class=\"fwe-snackbar-separator\"></div>\n }\n\n @if (data()?.showClose) {\n <button aria-label=\"Close\" type=\"button\" class=\"fwe-snackbar-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n }\n</div>\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FngSnackbarData } from './snackbar.models';\r\n\r\nexport type FngSnackDescription = {\r\n data: FngSnackbarData;\r\n actionCallback?: () => void;\r\n closeCallback?: () => void;\r\n resolve: (value: unknown) => void;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FngSnackbarService {\r\n snacks$: Observable<FngSnackDescription>;\r\n\r\n private snacks = new Subject<FngSnackDescription>();\r\n\r\n constructor() {\r\n this.snacks$ = this.snacks.asObservable();\r\n }\r\n\r\n snack(data: FngSnackbarData, actionCallback?: () => void, closeCallback?: () => void) {\r\n return new Promise(resolve => {\r\n this.snacks.next({ data, actionCallback, closeCallback, resolve });\r\n });\r\n }\r\n}\r\n","import {\r\n ComponentRef,\r\n Directive,\r\n Input,\r\n OnDestroy,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { FngSnackbarComponent } from './snackbar.component';\r\nimport { FngSnackbarConfig } from './snackbar.models';\r\nimport { FngSnackbarService, FngSnackDescription } from './snackbar.service';\r\n\r\ninterface FngSnackbarRef {\r\n componentRef: ComponentRef<FngSnackbarComponent>;\r\n complete: Subject<boolean>;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngSnackbarContainer]'\r\n})\r\nexport class FngSnackbarContainerDirective implements OnDestroy {\r\n @Input() fngSnackbarContainer: FngSnackbarConfig = {} as FngSnackbarConfig;\r\n\r\n private snacks: FngSnackbarRef[] = [];\r\n\r\n private snacksSub: Subscription;\r\n\r\n constructor(private viewContainerRef: ViewContainerRef, private snackbarService: FngSnackbarService) {\r\n this.snacksSub = this.snackbarService.snacks$.subscribe(SnackDescription => this.push(SnackDescription));\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.snacks != null && this.snacks.length > 0) {\r\n this.snacks.forEach(snack => {\r\n snack.complete.next(true);\r\n snack.complete.complete();\r\n snack.complete.unsubscribe();\r\n });\r\n }\r\n if (this.snacksSub != null) {\r\n this.snacksSub.unsubscribe();\r\n }\r\n }\r\n\r\n private push(snackDescription: FngSnackDescription) {\r\n const complete = new Subject<boolean>();\r\n const componentRef = this.viewContainerRef.createComponent(FngSnackbarComponent);\r\n const componentInstance = componentRef.instance;\r\n componentInstance.data.set({ ...this.fngSnackbarContainer, ...snackDescription.data });\r\n const snackbarRef = { componentRef, complete };\r\n componentInstance.close.subscribe(async () => {\r\n await this.remove(snackbarRef);\r\n if (snackDescription.closeCallback) {\r\n snackDescription.closeCallback();\r\n }\r\n });\r\n componentInstance.action.subscribe(async () => {\r\n if (componentInstance.data()?.closeOnAction) {\r\n await this.remove(snackbarRef);\r\n }\r\n if (snackDescription.actionCallback) {\r\n snackDescription.actionCallback();\r\n }\r\n });\r\n this.snacks.push(snackbarRef);\r\n this.updateStackIndices();\r\n snackDescription.resolve(snackbarRef.componentRef);\r\n }\r\n\r\n private async remove(snackbarRef: FngSnackbarRef) {\r\n const index = this.snacks.indexOf(snackbarRef);\r\n if (index !== -1) {\r\n const deletedSnackbarRef = this.snacks.splice(index, 1);\r\n await this.prepareRemove(snackbarRef, index);\r\n if (deletedSnackbarRef != null && deletedSnackbarRef.length > 0) {\r\n const deletedSnackbar = deletedSnackbarRef[0];\r\n if (deletedSnackbar.complete != null) {\r\n deletedSnackbar.complete.next(true);\r\n deletedSnackbar.complete.complete();\r\n deletedSnackbar.complete.unsubscribe();\r\n }\r\n if (deletedSnackbar.componentRef != null) {\r\n deletedSnackbar.componentRef.destroy();\r\n }\r\n }\r\n this.updateStackIndices();\r\n }\r\n }\r\n\r\n private prepareRemove(removedSnack?: FngSnackbarRef, removedIndex?: number): Promise<void> {\r\n return new Promise<void>(resolve => {\r\n if (removedSnack && removedIndex != null) {\r\n const stackIndex = this.snacks.length - removedIndex;\r\n const animatedValue = (stackIndex - 1) * 24;\r\n const translateY = stackIndex > 0 ? `translateY(-${animatedValue}px)` : 'translateY(24px)';\r\n removedSnack.componentRef.instance.isShown.set(false);\r\n removedSnack.componentRef.instance.transformTranslateY.set(translateY);\r\n setTimeout(() => resolve(), 300);\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n private updateStackIndices() {\r\n this.snacks.forEach((snack, index) => {\r\n const stackIndex = this.snacks.length - 1 - index;\r\n const animatedValue = stackIndex * 24;\r\n setTimeout(() => {\r\n snack.componentRef.instance.isShown.set(true);\r\n snack.componentRef.instance.transformTranslateY.set(`translateY(-${animatedValue}px)`);\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FngSnackbarConfig } from './snackbar.models';\r\nimport { FngSnackbarContainerDirective } from './snackbar-container.directive';\r\n\r\n@Component({\n imports: [FngSnackbarContainerDirective],\n selector: 'fng-snackbar-container',\n templateUrl: './snackbar-container.component.html',\n styleUrls: ['./snackbar-container.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSnackbarContainerComponent {\r\n @Input() config: FngSnackbarConfig = {\r\n darkBackground: true,\r\n disappearAfter: 5000,\r\n closeOnAction: true\r\n };\r\n}\r\n","<div class=\"fwe-snackbar-container\">\r\n <div [fngSnackbarContainer]=\"config\"></div>\r\n</div>\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-step-horizontal',\r\n templateUrl: './step-horizontal.component.html',\r\n styleUrls: ['./step-horizontal.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepHorizontalComponent {\r\n @Input() isActive = false;\r\n\r\n @Input() title: string = '';\r\n}\r\n","<div class=\"fng-overflow-hidden\" [class.fng-hidden]=\"!isActive\">\r\n <div class=\"fng-moving-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { delay } from 'rxjs/operators';\r\nimport { FngStepHorizontalComponent } from './step-horizontal/step-horizontal.component';\r\n\r\n\r\n@Component({\n imports: [],\n selector: 'fng-stepper-horizontal',\n templateUrl: './stepper-horizontal.component.html',\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngStepperHorizontalComponent implements AfterContentInit, OnChanges {\r\n @ContentChildren(FngStepHorizontalComponent) stepComponents!: QueryList<FngStepHorizontalComponent>;\r\n\r\n @Input() stepIndex: number = 0;\r\n @Output() stepIndexChange = new EventEmitter<number>();\r\n\r\n ngOnChanges() {\r\n this.updateStepComponents();\r\n }\r\n\r\n updateStepComponents(): void {\r\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\r\n this.stepComponents.forEach((s, i) => {\r\n s.isActive = i == this.stepIndex;\r\n });\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.stepComponents) {\r\n return;\r\n }\r\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\r\n this.updateStepComponents();\r\n });\r\n this.updateStepComponents();\r\n }\r\n\r\n onStepClick(index: number) {\r\n if (this.stepIndex > index) {\r\n this.stepIndex = index;\r\n this.updateStepComponents();\r\n this.stepIndexChange?.emit(index);\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-stepper-horizontal\">\n @for (step of stepComponents; track step; let i = $index) {\n <div\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 }\n</div>\n\n<ng-content></ng-content>\n","import { AfterViewInit, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-step-vertical',\r\n templateUrl: './step-vertical.component.html',\r\n styleUrls: ['./step-vertical.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepVerticalComponent implements AfterViewInit {\r\n @ViewChild('stepContent') stepContent?: ElementRef;\r\n @ViewChild('stepContentContainer') stepContentContainer?: ElementRef;\r\n\r\n @Input() index: number = 0;\r\n\r\n @Input() title: string = '';\r\n\r\n @Input() isDone: boolean = false;\r\n\r\n @Input() isLastElement: boolean = false;\r\n\r\n // Note: OnChanges does not work because the input are not updated via bindings\r\n @Input() set isActive(value: boolean) {\r\n this._isActive = value;\r\n this.updateHeight();\r\n }\r\n get isActive(): boolean {\r\n return this._isActive;\r\n }\r\n _isActive = false;\r\n\r\n public onStepClickCallback: (i: number) => void = () => null;\r\n\r\n updateHeight() {\r\n if (this.stepContent && this.stepContentContainer) {\r\n if (this.isActive) {\r\n const itemHeight = this.stepContent.nativeElement.offsetHeight;\r\n this.stepContentContainer.nativeElement.style.height = itemHeight + 'px';\r\n } else {\r\n this.stepContentContainer.nativeElement.style.height = '20px';\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.updateHeight();\r\n }\r\n}\r\n","<div\r\n class=\"fwe-step-container\"\r\n [class.fwe-last-element]=\"isLastElement\"\r\n [class.fwe-step-active]=\"isActive\"\r\n [class.fwe-step-done]=\"isDone\"\r\n>\r\n <div class=\"fwe-step\" (click)=\"onStepClickCallback(index)\">\r\n <div class=\"fwe-step-no\">{{ index + 1 }}</div>\r\n <div class=\"fwe-step-name\">{{ title }}</div>\r\n </div>\r\n <div #stepContentContainer class=\"fwe-step-content-container\">\r\n <div #stepContent class=\"fwe-step-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n AfterContentInit,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n QueryList,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { delay } from 'rxjs/operators';\r\nimport { FngStepVerticalComponent } from './step-vertical/step-vertical.component';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-stepper-vertical',\r\n templateUrl: './stepper-vertical.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngStepperVerticalComponent implements AfterContentInit, OnChanges {\r\n @ContentChildren(FngStepVerticalComponent) stepComponents!: QueryList<FngStepVerticalComponent>;\r\n\r\n @Input() stepIndex: number = 0;\r\n @Output() stepIndexChange = new EventEmitter<number>();\r\n\r\n ngOnChanges() {\r\n this.updateStepComponents();\r\n }\r\n\r\n updateStepComponents(): void {\r\n if (this.stepIndex > -1 && this.stepComponents?.length > this.stepIndex) {\r\n this.stepComponents.forEach((s, i) => {\r\n s.index = i;\r\n s.isDone = i < this.stepIndex;\r\n s.isActive = i == this.stepIndex;\r\n s.isLastElement = i == this.stepComponents.length - 1;\r\n s.onStepClickCallback = i => this.onStepClick(i);\r\n });\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (!this.stepComponents) {\r\n return;\r\n }\r\n this.stepComponents.changes.pipe(delay(0)).subscribe(() => {\r\n this.updateStepComponents();\r\n });\r\n this.updateStepComponents();\r\n }\r\n\r\n onStepClick(index: number) {\r\n if (this.stepIndex > index) {\r\n this.stepIndex = index;\r\n this.updateStepComponents();\r\n this.stepIndexChange?.emit(index);\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-stepper-vertical\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { Directive, EventEmitter, Input, Output } from '@angular/core';\r\n\r\nexport interface FngTableColumnOrder {\r\n orderBy?: string;\r\n ascending: boolean;\r\n}\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngTh]',\r\n host: {\r\n '[class.fwe-table-order]': 'order != null',\r\n '[class.fwe-active]': 'active',\r\n '[class.fwe-table-order-ascending]': 'active && orderDescending === false',\r\n '[class.fwe-table-order-descending]': 'active && orderDescending === true',\r\n '[attr.abbr]': 'abbr',\r\n '[attr.colspan]': 'colspan',\r\n '[attr.headers]': 'headers',\r\n '[attr.rowspan]': 'rowspan',\r\n '[attr.scope]': 'scope',\r\n '(click)': 'onChangeOrder()'\r\n }\r\n})\r\nexport class FngTableHeaderCellDirective {\r\n @Input() order: FngTableColumnOrder | undefined;\r\n @Input() fngTh: string | undefined;\r\n\r\n @Output() changeOrder = new EventEmitter<string>();\r\n\r\n /* Attributes */\r\n @Input() abbr: string | undefined;\r\n @Input() colspan: number | undefined;\r\n @Input() headers: string | undefined;\r\n @Input() rowspan: number | undefined;\r\n @Input() scope: string | undefined;\r\n\r\n get active(): boolean {\r\n if (!this.order) {\r\n return false;\r\n }\r\n\r\n if (!this.order.orderBy || !this.fngTh) {\r\n return false;\r\n }\r\n\r\n return this.order.orderBy === this.fngTh;\r\n }\r\n\r\n get orderDescending(): boolean {\r\n return this.active && !this.order?.ascending;\r\n }\r\n\r\n onChangeOrder() {\r\n this.changeOrder.emit(this.fngTh);\r\n }\r\n}\r\n","import { Component, Input, OnChanges, ViewEncapsulation } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-tab-pane',\r\n templateUrl: './tab-pane.component.html',\r\n styleUrls: ['./tab-pane.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngTabPaneComponent implements OnChanges {\r\n static nextId = 0;\r\n // @deprecated Input() id is not in use anymore but still exists for backwards compatiblity\r\n @Input() id: string | undefined;\r\n @Input() name: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() active: boolean | undefined;\r\n @Input() isVisible: boolean | undefined;\r\n @Input() disabled: boolean = false;\r\n\r\n tabId: string | undefined;\r\n tabPaneId = `tab-panel-content-${++FngTabPaneComponent.nextId}`;\r\n\r\n private changesSubject = new Subject<boolean>();\r\n changes$ = this.changesSubject.asObservable();\r\n\r\n ngOnChanges(): void {\r\n this.changesSubject.next(true);\r\n }\r\n}\r\n","<div role=\"tabpanel\" [id]=\"tabPaneId\" [attr.aria-labelledby]=\"tabId\" [class.fng-show]=\"isVisible\" [class.fng-hide]=\"!isVisible\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\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 ViewEncapsulation,\n DOCUMENT\n} from '@angular/core';\r\nimport { noop, Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngTabPaneComponent } from './tab-pane/tab-pane.component';\r\n\r\nexport interface FngTab {\r\n name: string;\r\n paneId: string | null;\r\n active?: boolean;\r\n icon?: string | null;\r\n disabled?: boolean;\r\n}\r\n\r\n// fill: use the remaining space and add in same proportion to every tab item\r\n// equal: make all tab items same width (as the one with largest content)\r\nexport type FngTabItemAppearance = 'fill' | 'equal' | 'default';\r\n\r\n// legacy: recommended for desktop only applications\r\n// responsive: desktop, tablet, mobile with scrollable tabs\r\nexport type FngTabViewType = 'legacy' | 'responsive';\r\n\r\n// configuration options for legacy tab view type\r\nexport interface FngTabsConfiguration {\r\n tabBar?: {\r\n fullWidth?: boolean;\r\n };\r\n tabItems?: {\r\n appearance: FngTabItemAppearance;\r\n };\r\n}\r\n\r\n// provides details about the left and right edges of the tab element and the tab content element\r\n// these values are used to determine the visual position of the tab with respect of its parent container\r\nexport interface FngTabDimensions {\r\n rootLeft: number;\r\n rootRight: number;\r\n contentLeft: number;\r\n contentRight: number;\r\n}\r\n\r\nexport interface FngTabScrollAnimation {\r\n finalScrollPosition: number;\r\n scrollDelta: number;\r\n}\r\n\r\nexport interface FngTabScrollHorizontalEdges {\r\n left: number;\r\n right: number;\r\n}\r\n\r\nexport interface FngBeforeTabChangeEvent {\r\n ok: () => void;\r\n cancel: () => void;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTabsComponent implements AfterContentInit, AfterViewInit, OnDestroy {\r\n static nextId = 0;\r\n @Input('fngTabsViewType') viewType: FngTabViewType = 'responsive';\r\n @Input('fngTabsUseBottomDivider') showDivider: boolean = false;\r\n\r\n @Input() config: FngTabsConfiguration | null = null;\r\n @Output() fngBeforeTabChange = new EventEmitter<FngBeforeTabChangeEvent>();\r\n @Output() fngTabChange = new EventEmitter<{ previous: string; current: string }>();\r\n\r\n @ContentChildren(FngTabPaneComponent) panes: QueryList<FngTabPaneComponent> | undefined;\r\n @ViewChild('scroller') scroller: ElementRef | undefined;\r\n @ViewChild('scrollAera') scrollAera: ElementRef | undefined;\r\n @ViewChild('scrollContent') scrollContent: ElementRef | undefined;\r\n\r\n componentId = `tabs-${++FngTabsComponent.nextId}`;\r\n tabs: FngTab[] = [];\r\n useCompactDensity: boolean = true;\r\n private activeTab: FngTab | undefined = undefined;\r\n private elemScroller: HTMLElement | undefined;\r\n private elemScrollArea: HTMLElement | undefined;\r\n private elemScrollContent: HTMLElement | undefined;\r\n private readonly injectedWindow: Window | null;\r\n private resizeObserver!: ResizeObserver;\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n constructor(\r\n private elRef: ElementRef,\r\n @Inject(DOCUMENT) private document: Document,\r\n private renderer: Renderer2,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.injectedWindow = this.document.defaultView;\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initTabs();\r\n if (null == this.activeTab) {\r\n this.panes?.map((pane, i) => {\r\n if (0 === i) {\r\n pane.isVisible = true;\r\n }\r\n });\r\n } else {\r\n const pane = this.panes?.find(pane => {\r\n if (this.activeTab) {\r\n return this.activeTab.paneId != null && pane.tabPaneId === this.activeTab.paneId;\r\n } else {\r\n return false;\r\n }\r\n });\r\n if (pane) {\r\n pane.isVisible = true;\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.elemScroller = this.scroller?.nativeElement;\r\n this.elemScrollArea = this.scrollAera?.nativeElement;\r\n this.elemScrollContent = this.scrollContent?.nativeElement;\r\n if (this.elemScroller == null || this.elemScrollArea == null || this.elemScrollContent == null) {\r\n return;\r\n }\r\n const initialWidth = this.elemScrollArea.offsetWidth;\r\n if (initialWidth != null && initialWidth > 768) {\r\n this.useCompactDensity = false;\r\n this.cd.detectChanges();\r\n }\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n const width = this.elemScrollArea.offsetWidth;\r\n if (width != null && width > 768 && this.useCompactDensity === true) {\r\n this.useCompactDensity = false;\r\n this.cd.detectChanges();\r\n } else if (width != null && width <= 768 && this.useCompactDensity === false) {\r\n this.useCompactDensity = true;\r\n this.cd.detectChanges();\r\n }\r\n });\r\n\r\n if (this.elemScrollArea != null) {\r\n this.resizeObserver.observe(this.elemScrollArea);\r\n }\r\n\r\n this.handleTabPaneChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n showTabPane(id: string | null) {\r\n if (id == null) {\r\n return;\r\n }\r\n\r\n const pane = this.panes?.find(p => p.tabPaneId === id);\r\n const handleTabChange = (id: string) => {\r\n if (pane != null && pane.disabled !== true) {\r\n this.panes?.map(p => {\r\n p.isVisible = false;\r\n });\r\n pane.isVisible = true;\r\n\r\n this.tabs.map(tab => {\r\n if (tab.paneId !== pane.tabPaneId) {\r\n tab.active = false;\r\n } else {\r\n tab.active = true;\r\n }\r\n });\r\n this.fngTabChange.emit({\r\n previous: this.activeTab?.paneId || '',\r\n current: id\r\n });\r\n this.activeTab = this.tabs.find(tab => !!tab.active);\r\n this.cd.detectChanges();\r\n }\r\n };\r\n\r\n if (this.fngBeforeTabChange?.observers?.length > 0 && pane?.disabled !== true) {\r\n this.fngBeforeTabChange.emit({\r\n ok: () => {\r\n handleTabChange(id);\r\n },\r\n cancel: () => {\r\n noop();\r\n }\r\n });\r\n } else {\r\n handleTabChange(id);\r\n }\r\n }\r\n\r\n handleTabScroll(event: any, index: number) {\r\n if (this.elemScrollContent == null || this.elemScrollArea == null) {\r\n return;\r\n }\r\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\r\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\r\n\r\n // check if no scroll is needed\r\n if (scrollAreaWidth > scrollContentWidth) {\r\n return;\r\n }\r\n\r\n // check index\r\n if (!this.indexIsInRange(index)) {\r\n return;\r\n }\r\n\r\n // always scroll to 0 if scrolling to the first tab\r\n if (index === 0) {\r\n this.scrollTo(0);\r\n return;\r\n }\r\n\r\n // always scroll to the max value if scrolling to the last tab\r\n if (index === this.tabs.length - 1) {\r\n this.scrollTo(this.elemScrollContent.offsetWidth);\r\n return;\r\n }\r\n\r\n const currentTab: HTMLElement = event.target;\r\n this.scrollIntoView(index, currentTab);\r\n }\r\n\r\n private initTabs() {\r\n this.tabs = [];\r\n this.panes?.map((pane, i) => {\r\n pane.tabId = this.componentId + '-tab-' + i;\r\n const tab: FngTab = {\r\n name: null != pane.name ? pane.name : '',\r\n paneId: null != pane.tabPaneId ? pane.tabPaneId : null,\r\n icon: null != pane.icon ? pane.icon : null,\r\n active: null != pane.active ? pane.active : false,\r\n disabled: null != pane.disabled ? pane.disabled : false\r\n };\r\n this.tabs.push(tab);\r\n });\r\n\r\n this.initActiveTab();\r\n this.cd.detectChanges();\r\n }\r\n\r\n private initActiveTab() {\r\n const activeTab: FngTab | undefined = this.tabs.find((tab: FngTab) => !!tab.active);\r\n if (!activeTab && 0 < this.tabs.length) {\r\n this.tabs[0] = { ...this.tabs[0], active: true };\r\n this.activeTab = this.tabs[0];\r\n } else {\r\n this.activeTab = activeTab;\r\n }\r\n }\r\n\r\n private handleTabPaneChanges() {\r\n // first subscribe to any changes in tab pane, so that the tabs in this view wiil be updated\r\n this.panes?.forEach(pane => {\r\n pane.changes$.pipe(takeUntil(this.complete)).subscribe(() => {\r\n // on changes in a tab pane, we init the tabs again\r\n this.initTabs();\r\n });\r\n });\r\n }\r\n\r\n private scrollTo(scrollX: number | undefined) {\r\n if (scrollX == null) {\r\n return;\r\n }\r\n const currentScrollX = this.getScrollPosition();\r\n const safeScrollX = this.clampScrollValue(scrollX);\r\n if (safeScrollX == null || currentScrollX == null) {\r\n return;\r\n }\r\n const scrollDelta = safeScrollX - currentScrollX;\r\n this.animate({\r\n finalScrollPosition: safeScrollX,\r\n scrollDelta\r\n });\r\n }\r\n\r\n private scrollIntoView(index: number, tab: HTMLElement) {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n\r\n const scrollPosition = this.getScrollPosition();\r\n const barWidth = this.elemScrollArea.offsetWidth;\r\n if (barWidth == null || scrollPosition == null) {\r\n return;\r\n }\r\n\r\n const tabDimensions = this.computeDimensions(tab);\r\n if (tabDimensions == null) {\r\n return;\r\n }\r\n\r\n const nextIndex = this.findAdjacentTabIndexClosestToEdge(index, tabDimensions, scrollPosition, barWidth);\r\n if (!this.indexIsInRange(nextIndex)) {\r\n return;\r\n }\r\n\r\n const scrollIncrement = this.calculateScrollIncrement(index, nextIndex, scrollPosition, barWidth);\r\n if (scrollIncrement == null) {\r\n return;\r\n }\r\n\r\n this.incrementScroll(scrollIncrement);\r\n }\r\n\r\n private incrementScroll(scrollXIncrement: number) {\r\n // no scroll needed\r\n if (scrollXIncrement === 0) {\r\n return;\r\n }\r\n const scrollOperation = this.getIncrementScrollOperation(scrollXIncrement);\r\n if (scrollOperation == null) {\r\n return;\r\n }\r\n this.animate(scrollOperation);\r\n }\r\n\r\n private animate(animation: FngTabScrollAnimation) {\r\n // no animation needed\r\n if (animation.scrollDelta === 0) {\r\n return;\r\n }\r\n\r\n // no animation possible\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n\r\n this.stopScrollAnimation();\r\n\r\n // this animation uses the flip approach\r\n // https://aerotwist.com/blog/flip-your-animations/\r\n // https://css-tricks.com/animating-layouts-with-the-flip-technique/\r\n this.elemScrollArea.scrollLeft = animation.finalScrollPosition;\r\n this.setScrollContentStyleProperty('transform', `translateX(${animation.scrollDelta}px)`);\r\n // force repaint\r\n this.elemScrollArea.getBoundingClientRect();\r\n\r\n requestAnimationFrame(() => {\r\n this.renderer.addClass(this.elemScroller, 'fng-tab-scroller--animating');\r\n this.setScrollContentStyleProperty('transform', 'none');\r\n });\r\n }\r\n\r\n private stopScrollAnimation() {\r\n if (this.elemScrollArea == null) {\r\n return;\r\n }\r\n const currentScrollPosition = this.getAnimatingScrollPosition();\r\n if (currentScrollPosition == null) {\r\n return;\r\n }\r\n\r\n this.renderer.removeClass(this.elemScroller, 'fng-tab-scroller--animating');\r\n this.setScrollContentStyleProperty('transform', 'translateX(0px)');\r\n this.elemScrollArea.scrollLeft = currentScrollPosition;\r\n }\r\n\r\n private getAnimatingScrollPosition(): number | null {\r\n if (this.elemScrollArea == null) {\r\n return null;\r\n }\r\n const currentTranslateX = this.calculateCurrentTranslateX();\r\n const scrollLeft = this.elemScrollArea.scrollLeft;\r\n return scrollLeft - currentTranslateX;\r\n }\r\n\r\n private getIncrementScrollOperation(scrollX: number): FngTabScrollAnimation | null {\r\n const currentScrollX = this.getScrollPosition();\r\n if (currentScrollX == null) {\r\n return null;\r\n }\r\n\r\n const targetScrollX = scrollX + currentScrollX;\r\n const safeScrollX = this.clampScrollValue(targetScrollX);\r\n if (safeScrollX == null) {\r\n return null;\r\n }\r\n const scrollDelta = safeScrollX - currentScrollX;\r\n return {\r\n finalScrollPosition: safeScrollX,\r\n scrollDelta\r\n };\r\n }\r\n\r\n private clampScrollValue(scrollX: number): number | null {\r\n const edges = this.calculateScrollEdges();\r\n if (edges == null) {\r\n return null;\r\n }\r\n return Math.min(Math.max(edges.left, scrollX), edges.right);\r\n }\r\n\r\n private calculateScrollEdges(): FngTabScrollHorizontalEdges | null {\r\n if (this.elemScrollArea == null || this.elemScrollContent == null) {\r\n return null;\r\n }\r\n const scrollContentWidth = this.elemScrollContent.offsetWidth;\r\n const scrollAreaWidth = this.elemScrollArea.offsetWidth;\r\n return {\r\n left: 0,\r\n right: scrollContentWidth - scrollAreaWidth\r\n };\r\n }\r\n\r\n private computeDimensions(tab: HTMLElement): FngTabDimensions | null {\r\n const rootWidth = tab.offsetWidth;\r\n const rootLeft = tab.offsetLeft;\r\n\r\n const tabContent: HTMLElement | null = tab.querySelector<HTMLElement>('.fng-tab-content');\r\n if (tabContent == null) {\r\n return null;\r\n }\r\n\r\n const contentWidth = tabContent.offsetWidth;\r\n const contentLeft = tabContent.offsetLeft;\r\n\r\n return {\r\n contentLeft: rootLeft + contentLeft,\r\n contentRight: rootLeft + contentLeft + contentWidth,\r\n rootLeft,\r\n rootRight: rootLeft + rootWidth\r\n };\r\n }\r\n\r\n private calculateScrollIncrement(index: number, nextIndex: number, scrollPosition: number, barWidth: number): number | null {\r\n const nextTab: HTMLElement | null = (this.elRef.nativeElement as HTMLElement).querySelector<HTMLElement>(\r\n `#${this.componentId}-tab-${nextIndex}`\r\n );\r\n\r\n if (nextTab == null) {\r\n return null;\r\n }\r\n\r\n const nextTabDimensions = this.computeDimensions(nextTab);\r\n\r\n if (nextTabDimensions == null) {\r\n return null;\r\n }\r\n\r\n const relativeContentLeft = nextTabDimensions.contentLeft - scrollPosition - barWidth;\r\n const relativeContentRight = nextTabDimensions.contentRight - scrollPosition;\r\n const leftIncrement = relativeContentRight - 48;\r\n const rightIncrement = relativeContentLeft + 48;\r\n\r\n if (nextIndex < index) {\r\n return Math.min(leftIncrement, 0);\r\n }\r\n\r\n return Math.max(rightIncrement, 0);\r\n }\r\n\r\n private indexIsInRange(index: number) {\r\n return index >= 0 && index < this.tabs.length;\r\n }\r\n\r\n private getScrollPosition(): number | null {\r\n if (this.elemScrollArea == null) {\r\n return null;\r\n }\r\n const currentTranslateX = this.calculateCurrentTranslateX();\r\n const scrollLeft = this.elemScrollArea.scrollLeft;\r\n\r\n return scrollLeft - currentTranslateX;\r\n }\r\n\r\n private calculateCurrentTranslateX(): number {\r\n const transformValue = this.getScrollContentStyleValue('transform');\r\n if (transformValue == null) {\r\n return 0;\r\n }\r\n\r\n if (transformValue === 'none') {\r\n return 0;\r\n }\r\n\r\n // the transform value is in form of 'matrix(a, b, c, d, tx, ty)'\r\n // get all the parenthesized values\r\n const match = /\\((.+?)\\)/.exec(transformValue);\r\n if (!match) {\r\n return 0;\r\n }\r\n\r\n const matrixParams = match[1];\r\n // we need value of tx -> translateX\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const [a, b, c, d, tx, ty] = matrixParams.split(',');\r\n return parseFloat(tx);\r\n }\r\n\r\n private getScrollContentStyleValue(propName: string) {\r\n if (this.elemScrollContent == null) {\r\n return;\r\n }\r\n return this.injectedWindow?.getComputedStyle(this.elemScrollContent).getPropertyValue(propName);\r\n }\r\n\r\n private setScrollContentStyleProperty(propName: string, value: any) {\r\n this.renderer.setStyle(this.elemScrollContent, propName, value);\r\n }\r\n\r\n private findAdjacentTabIndexClosestToEdge(\r\n index: number,\r\n tabDimensions: FngTabDimensions,\r\n scrollPosition: number,\r\n barWidth: number\r\n ): number {\r\n /**\r\n * tabs are laid out in the tab scroller like this:\r\n *\r\n * scroll position\r\n * +---+\r\n * | | bar width\r\n * | +-----------------------------------+\r\n * | | |\r\n * | v v\r\n * | +-----------------------------------+\r\n * v | tab scroller |\r\n * +------------+--------------+-------------------+\r\n * | tab | tab | tab |\r\n * +------------+--------------+-------------------+\r\n * | |\r\n * +-----------------------------------+\r\n *\r\n * to determine the next adjacent index, we look at the tab root left and\r\n * tab root right, both relative to the scroll position. if the tab root\r\n * left is less than 0, then we know it's out of view to the left. if the\r\n * tab root right minus the bar width is greater than 0, we know the tab is\r\n * out of view to the right. from there, we either increment or decrement\r\n * the index.\r\n */\r\n const relativeRootLeft = tabDimensions.rootLeft - scrollPosition;\r\n const relativeRootRight = tabDimensions.rootRight - scrollPosition - barWidth;\r\n const relativeRootDelta = relativeRootLeft + relativeRootRight;\r\n const leftEdgeIsCloser = relativeRootLeft < 0 || relativeRootDelta < 0;\r\n const rightEdgeIsCloser = relativeRootRight > 0 || relativeRootDelta > 0;\r\n\r\n if (leftEdgeIsCloser) {\r\n return index - 1;\r\n }\r\n\r\n if (rightEdgeIsCloser) {\r\n return index + 1;\r\n }\r\n\r\n return -1;\r\n }\r\n}\r\n","@if (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 @for (tab of tabs; track tab; let i = $index) {\n <li\n class=\"fwe-legacy-tab-item\"\n [ngClass]=\"{ 'fwe-active': tab?.active, 'fwe-disabled': tab?.disabled }\"\n >\n @if (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 [attr.aria-disabled]=\"true === tab?.disabled ? true : false\"\n role=\"tab\"\n class=\"fwe-legacy-tab-link\"\n (click)=\"showTabPane(tab.paneId)\"\n >{{ tab.name }}</a\n >\n }\n @if (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 [attr.aria-disabled]=\"true === tab?.disabled ? 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 }\n </li>\n }\n </ul>\n <div class=\"fwe-legacy-tab-panel-content\">\n <ng-container *ngTemplateOutlet=\"tabPanelContent\"></ng-container>\n </div>\n </div>\n }\n\n @if (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 @for (tab of tabs; track tab; let i = $index) {\n <button\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 [class.fng-tab--disabled]=\"tab?.disabled\"\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 }\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 }\n\n <ng-template #tabPanelContent>\n <ng-content></ng-content>\n </ng-template>\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n inject,\r\n TemplateRef,\r\n ViewContainerRef,\r\n Injector,\r\n Type,\r\n HostBinding,\r\n Output,\r\n EventEmitter\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\r\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\r\nimport { Subscription } from 'rxjs';\r\n\r\n// public type for position names\r\nexport type ConnectedPositionName =\r\n | 'topStart'\r\n | 'topCenter'\r\n | 'topEnd'\r\n | 'bottomStart'\r\n | 'bottomCenter'\r\n | 'bottomEnd'\r\n | 'startTop'\r\n | 'startCenter'\r\n | 'startBottom'\r\n | 'endTop'\r\n | 'endCenter'\r\n | 'endBottom';\r\n\r\n// build the 12 standard connected positions (rtl-friendly via start/end)\r\nexport const POSITION_MAP: Record<ConnectedPositionName, ConnectedPosition> = {\r\n // above the origin\r\n topStart: { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\r\n topCenter: { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\r\n topEnd: { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\r\n\r\n // below the origin\r\n bottomStart: { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n bottomCenter: { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\r\n bottomEnd: { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\r\n\r\n // to the start (left in ltr, right in rtl)\r\n startTop: { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\r\n startCenter: { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\r\n startBottom: { originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' },\r\n\r\n // to the end (right in ltr, left in rtl)\r\n endTop: { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\r\n endCenter: { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\r\n endBottom: { originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }\r\n};\r\n\r\n// a convenient fallback order that tries below → above → right → left\r\nexport const ALL_POSITIONS: ConnectedPosition[] = [\r\n POSITION_MAP.bottomCenter,\r\n POSITION_MAP.bottomStart,\r\n POSITION_MAP.bottomEnd,\r\n POSITION_MAP.topCenter,\r\n POSITION_MAP.topStart,\r\n POSITION_MAP.topEnd,\r\n POSITION_MAP.endCenter,\r\n POSITION_MAP.endTop,\r\n POSITION_MAP.endBottom,\r\n POSITION_MAP.startCenter,\r\n POSITION_MAP.startTop,\r\n POSITION_MAP.startBottom\r\n];\r\n\r\n@Directive({\r\n selector: '[fngOverlayOutlet]',\r\n standalone: true\r\n})\r\nexport class FngOverlayOutletDirective implements OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly injector = inject(Injector);\r\n private overlayRef?: OverlayRef;\r\n private portalInstance?: TemplatePortal | ComponentPortal<unknown>;\r\n private positionSubscription?: Subscription;\r\n\r\n /**\r\n * content for the overlay. supply either a templateref (preferred for arbitrary html)\r\n * or a component type (will be created via componentportal).\r\n *\r\n * example (templateref): [fngOverlayOutlet]=\"tplref\"\r\n * example (component): [fngOverlayOutlet]=\"youroverlaycomponent\"\r\n */\r\n @Input('fngOverlayOutlet') content!: TemplateRef<any> | Type<any>;\r\n\r\n /** optional context when using templateref content. */\r\n @Input() fngOverlayContext: Record<string, any> | null = null;\r\n\r\n /** css class(es) to apply to the overlay panel. */\r\n @Input() fngOverlayPanelClass: string | string[] | undefined;\r\n\r\n /** whether the overlay should have a backdrop. defaults to true. */\r\n @Input() fngOverlayHasBackdrop = true;\r\n\r\n /** backdrop class; defaults to a transparent clickable backdrop. */\r\n @Input() fngOverlayBackdropClass: string = 'cdk-overlay-transparent-backdrop';\r\n\r\n /** close the overlay when the backdrop is clicked (if there is one). */\r\n @Input() fngOverlayCloseOnBackdropClick = true;\r\n\r\n /** close the overlay when pressing escape. */\r\n @Input() fngOverlayCloseOnEscape = true;\r\n\r\n /** optional x/y offsets applied to every position. */\r\n @Input() fngOverlayOffsetX: number = 0;\r\n @Input() fngOverlayOffsetY: number = 0;\r\n\r\n /**\r\n * choose positions by name, or omit to use all_positions fallback order.\r\n * example: [fngOverlayPositions]=\"['topEnd','topStart']\"\r\n */\r\n @Input() fngOverlayPositions?: ConnectedPositionName[];\r\n\r\n /**\r\n * if you want a different origin element than the host (rare), pass an htmlelement here.\r\n */\r\n @Input() fngOverlayOrigin?: HTMLElement | ElementRef<HTMLElement> | null;\r\n\r\n /** emits when the overlay is closed */\r\n @Output() fngOverlayClosed = new EventEmitter<void>();\r\n\r\n @HostListener('click', ['$event'])\r\n _onHostClick(evt: MouseEvent) {\r\n evt.stopPropagation();\r\n this.toggle();\r\n }\r\n\r\n // adds css class to the host element to indicate interactivity\r\n @HostBinding('class.fwe-cursor-pointer') readonly cssClass = true;\r\n\r\n constructor(private readonly host: ElementRef<HTMLElement>) {}\r\n\r\n ngOnDestroy(): void {\r\n this.positionSubscription?.unsubscribe();\r\n this.overlayRef?.dispose();\r\n this.portalInstance = undefined;\r\n }\r\n\r\n open(): void {\r\n if (!this.overlayRef) {\r\n this.overlayRef = this.createOverlay();\r\n this.bindOverlayLifecycle();\r\n }\r\n\r\n if (!this.portalInstance) {\r\n this.portalInstance = this.createPortalFromContent();\r\n }\r\n\r\n if (this.overlayRef && this.portalInstance && !this.overlayRef.hasAttached()) {\r\n this.overlayRef.attach(this.portalInstance);\r\n }\r\n }\r\n\r\n close(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.overlayRef.detach();\r\n this.fngOverlayClosed.emit();\r\n }\r\n }\r\n\r\n toggle(): void {\r\n if (this.overlayRef?.hasAttached()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private getPositionClass(position: ConnectedPosition): string {\r\n if (position.overlayY === 'bottom' && position.overlayX === 'center') {\r\n return 'fng-popover-top';\r\n } else if (position.overlayY === 'top' && position.overlayX === 'center') {\r\n return 'fng-popover-bottom';\r\n } else if (position.overlayX === 'end' && position.overlayY === 'center') {\r\n return 'fng-popover-left';\r\n } else if (position.overlayX === 'start' && position.overlayY === 'center') {\r\n return 'fng-popover-right';\r\n }\r\n return 'fng-popover-default';\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n const originEl = this.resolveOriginElement();\r\n const positions = this.resolvePositions(); \r\n\r\n const initialPanelClasses = ['fng-overlay'];\r\n let initialOffsetX = this.fngOverlayOffsetX || 0;\r\n let initialOffsetY = this.fngOverlayOffsetY || 0;\r\n\r\n // add any user-specified panel classes\r\n if (this.fngOverlayPanelClass) {\r\n if (typeof this.fngOverlayPanelClass === 'string') {\r\n initialPanelClasses.push(this.fngOverlayPanelClass);\r\n } else {\r\n initialPanelClasses.push(...this.fngOverlayPanelClass);\r\n }\r\n } \r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(originEl)\r\n .withFlexibleDimensions(true)\r\n .withPush(true)\r\n .withViewportMargin(16)\r\n .withPositions(positions)\r\n .withDefaultOffsetX(initialOffsetX)\r\n .withDefaultOffsetY(initialOffsetY);\r\n\r\n const scrollStrategy = this.overlay.scrollStrategies.block();\r\n\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: this.fngOverlayHasBackdrop,\r\n backdropClass: this.fngOverlayBackdropClass,\r\n panelClass: initialPanelClasses,\r\n disposeOnNavigation: true\r\n });\r\n\r\n // clean up any existing subscription\r\n this.positionSubscription?.unsubscribe();\r\n \r\n let previousPositionClass: string | undefined;\r\n \r\n // create new subscription and store it\r\n this.positionSubscription = positionStrategy.positionChanges.subscribe(position => {\r\n // remove all possible position classes first\r\n ['fng-popover-right', 'fng-popover-left', 'fng-popover-top', 'fng-popover-bottom', 'fng-popover-default'].forEach(cls => {\r\n overlayRef.removePanelClass(cls);\r\n });\r\n \r\n const newPositionClass = this.getPositionClass(position.connectionPair); \r\n \r\n // if this is not the first position change and the position class has changed,\r\n // use the default class instead\r\n if (previousPositionClass && previousPositionClass !== newPositionClass) {\r\n overlayRef.addPanelClass('fng-popover-default');\r\n } else {\r\n overlayRef.addPanelClass(newPositionClass || 'fng-popover-default');\r\n }\r\n \r\n previousPositionClass = newPositionClass;\r\n });\r\n\r\n return overlayRef;\r\n }\r\n\r\n private createPortalFromContent(): TemplatePortal | ComponentPortal<unknown> {\r\n // handle templateref content\r\n if (this.content instanceof TemplateRef) {\r\n return new TemplatePortal(this.content, this.vcr, this.fngOverlayContext ?? {});\r\n }\r\n // assume it is a component type\r\n const componentType = this.content as Type<any>;\r\n return new ComponentPortal(componentType, this.vcr, this.injector);\r\n }\r\n\r\n private bindOverlayLifecycle(): void {\r\n if (!this.overlayRef) return;\r\n\r\n if (this.fngOverlayHasBackdrop && this.fngOverlayCloseOnBackdropClick) {\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n\r\n if (this.fngOverlayCloseOnEscape) {\r\n this.overlayRef.keydownEvents().subscribe(event => {\r\n const ev = event as KeyboardEvent & { keyCode: number };\r\n if (ev.key === 'Escape' || ev.keyCode === ESCAPE) {\r\n // avoid closing if user holds a modifier (e.g., ctrl+esc) — rare but safe\r\n if (!hasModifierKey(ev)) {\r\n this.close();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n private resolveOriginElement(): HTMLElement {\r\n const o = this.fngOverlayOrigin;\r\n if (!o) return this.host.nativeElement;\r\n if (o instanceof ElementRef) return o.nativeElement;\r\n return o;\r\n }\r\n\r\n private resolvePositions(): ConnectedPosition[] {\r\n if (this.fngOverlayPositions?.length) {\r\n // convert specified position names to actual positions\r\n const specifiedPositions = this.fngOverlayPositions.map(name => ({ ...POSITION_MAP[name] }));\r\n\r\n // get all remaining positions that weren't specified\r\n const remainingPositions = ALL_POSITIONS.filter(\r\n defaultPos => !this.fngOverlayPositions!.some(name => JSON.stringify(POSITION_MAP[name]) === JSON.stringify(defaultPos))\r\n );\r\n\r\n // return specified positions first, followed by remaining positions\r\n return [...specifiedPositions, ...remainingPositions];\r\n }\r\n return ALL_POSITIONS.map(p => ({ ...p }));\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\n selector: 'fng-overlay-content',\n imports: [],\n templateUrl: './overlay-content.component.html',\n styleUrl: './overlay-content.component.scss'\n})\r\nexport class FngOverlayContentComponent {}\r\n","<div class=\"fwe-popover-container\">\r\n <div class=\"fwe-triangle\"></div>\r\n <div class=\"fwe-popover\">\r\n <div class=\"fwe-popover-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { FngClickOutsideDirective } from '../directives/click-outside.directive';\r\nimport {\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemHeaderComponent\r\n} from './accordion';\r\nimport { FngBottomSheetComponent } from './bottom-sheet/bottom-sheet.component';\r\nimport { FngBreadcrumbComponent } from './breadcrumb/breadcrumb.component';\r\nimport { FngButtonComponent } from './buttons/button/button.component';\r\nimport { FngLinkButtonComponent } from './buttons/link-button/link-button.component';\r\nimport { FngChipContainerComponent } from './chips/chip-container/chip-container.component';\r\nimport { FngChipComponent } from './chips/chip/chip.component';\r\nimport { FngLoadingIndicatorComponent } from './loading-indicator/loading-indicator.component';\r\nimport { FngMobileFlyoutItemComponent } from './mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\r\nimport { FngMobileFlyoutPageComponent } from './mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\r\nimport { FngMobileFlyoutComponent } from './mobile-flyout/mobile-flyout.component';\r\nimport { FngPaginationComponent } from './pagination/pagination.component';\r\nimport { FngLegendComponent } from './popovers/legend/legend.component';\r\nimport { FngLegendDirective } from './popovers/legend/legend.directive';\r\nimport { FngPopoverContentComponent } from './popovers/popover-content/popover-content.component';\r\nimport { FngPopoverContentDirective } from './popovers/popover-content/popover-content.directive';\r\nimport { FngPopoverMenuComponent } from './popovers/popover-menu/popover-menu.component';\r\nimport { FngPopoverComponent } from './popovers/popover/popover.component';\r\nimport { FngTooltipDirective } from './popovers/tooltip/tooltip.directive';\r\nimport { FngProgressComponent } from './progress/progress.component';\r\nimport { FngScrollableDirective } from './scroll';\r\nimport { FngSearchInputComponent } from './search-input/search-input.component';\r\nimport { FngSidebarOverlayComponent } from './sidebar-overlay/sidebar-overlay.component';\r\nimport { FngSnackbarContainerComponent } from './snackbar/snackbar-container.component';\r\nimport { FngStepHorizontalComponent } from './stepper-horizontal/step-horizontal/step-horizontal.component';\r\nimport { FngStepperHorizontalComponent } from './stepper-horizontal/stepper-horizontal.component';\r\nimport { FngStepVerticalComponent } from './stepper-vertical/step-vertical/step-vertical.component';\r\nimport { FngStepperVerticalComponent } from './stepper-vertical/stepper-vertical.component';\r\nimport { FngTableHeaderCellDirective } from './table-header-cell/table-header-cell.directive';\r\nimport { FngTabPaneComponent } from './tabs/tab-pane/tab-pane.component';\r\nimport { FngTabsComponent } from './tabs/tabs.component';\r\nimport { FngOverlayOutletDirective } from './overlay/overlay-outlet.directive';\r\nimport { FngOverlayContentComponent } from './overlay/overlay-content/overlay-content.component'; \r\n\r\n@NgModule({\r\n imports: [\r\n FngClickOutsideDirective,\r\n FngPaginationComponent,\r\n FngMobileFlyoutPageComponent,\r\n FngMobileFlyoutItemComponent,\r\n FngMobileFlyoutComponent,\r\n FngLoadingIndicatorComponent,\r\n FngChipComponent,\r\n FngChipContainerComponent,\r\n FngTabsComponent,\r\n FngTabPaneComponent,\r\n FngBreadcrumbComponent,\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemHeaderComponent,\r\n FngButtonComponent,\r\n FngLinkButtonComponent,\r\n FngSearchInputComponent,\r\n FngSnackbarContainerComponent,\r\n FngStepHorizontalComponent,\r\n FngStepperHorizontalComponent,\r\n FngStepperVerticalComponent,\r\n FngStepVerticalComponent,\r\n FngTableHeaderCellDirective,\r\n FngScrollableDirective,\r\n FngProgressComponent,\r\n FngLegendDirective,\r\n FngPopoverComponent,\r\n FngPopoverContentDirective,\r\n FngPopoverContentComponent,\r\n FngPopoverMenuComponent,\r\n FngTooltipDirective,\r\n FngLegendDirective,\r\n FngLegendComponent,\r\n FngSidebarOverlayComponent,\r\n FngBottomSheetComponent,\r\n FngOverlayOutletDirective,\r\n FngOverlayContentComponent\r\n ],\r\n exports: [\r\n FngClickOutsideDirective,\r\n FngBreadcrumbComponent,\r\n FngAccordionComponent,\r\n FngAccordionHeaderComponent,\r\n FngAccordionItemComponent,\r\n FngAccordionItemBodyComponent,\r\n FngAccordionItemHeaderComponent,\r\n FngButtonComponent,\r\n FngLinkButtonComponent,\r\n FngChipContainerComponent,\r\n FngChipComponent,\r\n FngLoadingIndicatorComponent,\r\n FngMobileFlyoutComponent,\r\n FngMobileFlyoutItemComponent,\r\n FngMobileFlyoutPageComponent,\r\n FngPaginationComponent,\r\n FngSearchInputComponent,\r\n FngSnackbarContainerComponent,\r\n FngStepHorizontalComponent,\r\n FngStepperHorizontalComponent,\r\n FngStepperVerticalComponent,\r\n FngStepVerticalComponent,\r\n FngTableHeaderCellDirective,\r\n FngScrollableDirective,\r\n FngProgressComponent,\r\n FngTabsComponent,\r\n FngTabPaneComponent,\r\n FngLegendDirective,\r\n FngPopoverComponent,\r\n FngPopoverContentDirective,\r\n FngPopoverContentComponent,\r\n FngPopoverMenuComponent,\r\n FngTooltipDirective,\r\n FngLegendDirective,\r\n FngLegendComponent,\r\n FngSidebarOverlayComponent,\r\n FngBottomSheetComponent,\r\n FngOverlayOutletDirective,\r\n FngOverlayContentComponent\r\n ]\r\n})\r\nexport class FestoAngularComponentsModule {}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FngSnackbarComponent } from './snackbar.component';\r\nimport { FngSnackbarContainerDirective } from './snackbar-container.directive';\r\nimport { FngSnackbarContainerComponent } from './snackbar-container.component';\r\n\r\nexport * from './snackbar.models';\r\nexport * from './snackbar.component';\r\nexport * from './snackbar-container.component';\r\nexport * from './snackbar-container.directive';\r\n\r\n@NgModule({\r\n imports: [FngSnackbarComponent, FngSnackbarContainerDirective, FngSnackbarContainerComponent],\r\n exports: [FngSnackbarContainerComponent, FngSnackbarContainerDirective, FngSnackbarContainerComponent],\r\n providers: []\r\n // bootstrap: [SnackbarComponent]\r\n})\r\nexport class FestoAngularSnackbarModule {}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';\r\nimport { Modal } from '../index';\r\n\r\nexport interface FngAlertData {\r\n title: string;\r\n subtitle?: string;\r\n body: string;\r\n alertType: 'info' | 'warning' | 'error';\r\n cancel?: string;\r\n ok?: string;\r\n strong?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule, FngSafeHtmlPipe],\n selector: 'fng-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngAlertComponent implements AfterViewInit, Modal<FngAlertData, any> {\r\n @Input() data: FngAlertData = {} as FngAlertData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.closeBtn) {\r\n (this.closeBtn.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n this.ok.emit();\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n}\r\n","<div\n class=\"fwe-modal\"\n [ngClass]=\"{\r\n 'fwe-modal--with-indicator-bar': data.strong === true,\r\n 'fwe-modal--warning': data.alertType === 'warning',\r\n 'fwe-modal--error': data.alertType === 'error',\r\n 'fwe-modal--info': data.alertType === 'info'\r\n }\"\r\n >\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">\n {{ data.subtitle }}\n </h2>\n }\n <h1 class=\"fwe-modal-h1\">\n {{ data.title }}\n </h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button\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 }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg\" [class.fwe-btn-hero]=\"!data.strong\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { FngSafeHtmlPipe } from './../../pipes/safe-html.pipe';\r\nimport { Modal } from '../index';\r\n\r\nexport interface FngConfirmData {\r\n title: string;\r\n subtitle?: string;\r\n body: string;\r\n cancel?: string;\r\n ok?: string;\r\n large?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule, FngSafeHtmlPipe],\n selector: 'fng-confirm',\n templateUrl: './confirm.component.html',\n styleUrls: ['./confirm.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngConfirmComponent implements AfterViewInit, Modal<FngConfirmData, any> {\r\n @Input() data: FngConfirmData = {} as FngConfirmData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n ngAfterViewInit() {\r\n if (this.closeBtn) {\r\n (this.closeBtn.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n this.ok.emit();\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n}\r\n","<div class=\"fwe-modal\" [ngClass]=\"{ 'fwe-modal--large': data.large }\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n }\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <div class=\"fwe-modal-body\" [innerHTML]=\"data.body | fngSafeHtml\"></div>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-lg fwe-btn-hero\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { Component, ElementRef, forwardRef, Input, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n\r\n/**\r\n * A custom form element for text inputs.\r\n */\r\n@Component({\r\n imports: [FormsModule, NgClass],\r\n selector: 'fng-text-input',\r\n templateUrl: './text-input.component.html',\r\n styleUrls: ['./text-input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngTextInputComponent),\r\n multi: true\r\n }\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngTextInputComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * The text input label.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * When true, shows validation state icons (checkmark for valid, X for invalid).\r\n */\r\n @Input() showValidationIcons: boolean = false;\r\n\r\n /**\r\n * A string specifying the type of control to render.\r\n */\r\n @Input()\r\n get type(): string {\r\n return this.innerType;\r\n }\r\n set type(value: string) {\r\n const supported = ['text', 'number', 'password', 'date', 'time', 'datetime-local'];\r\n if (value != null && supported.indexOf(value) !== -1) {\r\n this.innerType = value;\r\n } else {\r\n this.innerType = 'text';\r\n }\r\n }\r\n protected innerType = 'text';\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this.innerReadonly;\r\n }\r\n set readonly(value: boolean) {\r\n this.innerReadonly = coerceBooleanProperty(value);\r\n }\r\n private innerReadonly = false;\r\n\r\n @Input() step: number | undefined = undefined;\r\n @Input() min: number | undefined = undefined;\r\n @Input() max: number | undefined = undefined;\r\n @Input() tabindex: number | undefined = undefined;\r\n @Input() placeholder: string | undefined = undefined;\r\n @Input() name: string = '';\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n protected innerDisabled = false;\r\n\r\n /**\r\n * The inner value.\r\n */\r\n innerValue: string = '';\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n /**\r\n * Error description when invalid.\r\n */\r\n @Input() error: string = '';\r\n\r\n /**\r\n * Hint description when valid.\r\n */\r\n @Input() hint: string | undefined= undefined;\r\n\r\n @ViewChild('inputElement') inputElement: ElementRef | undefined;\r\n\r\n /**\r\n * When true the text input has focus.\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Triggered on change.\r\n */\r\n onChange: ((value: string) => void) | undefined;\r\n\r\n /**\r\n * Triggered on touch.\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n /**\r\n * Called on component initialisation.\r\n */\r\n ngOnInit(): void {\r\n this.onBlur();\r\n }\r\n\r\n /**\r\n * Writes the value.\r\n * @param value The value.\r\n */\r\n writeValue(value: string): void {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n }\r\n\r\n /**\r\n * Registers a function to onChange.\r\n * @param fn The registered function.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a function to onTouched.\r\n * @param fn The registered function.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Called when the text input is in focus.\r\n */\r\n onFocus() {\r\n this.focused = true;\r\n }\r\n\r\n /**\r\n * Called when the text input blurs.\r\n */\r\n onBlur() {\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the disabled state.\r\n * @param isDisabled When true the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","<label class=\"fwe-input-text\" [class.fwe-no-pointer-events]=\"readonly === true\" [ngClass]=\"{ 'fng-input-text--with-icon': showValidationIcons }\">\n <input\n #inputElement\n [disabled]=\"disabled\"\n [required]=\"required === true || false\"\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 (focus)=\"onFocus()\"\n [(ngModel)]=\"value\"\n (blur)=\"onBlur()\"\n />\n <span class=\"fwe-input-text-label\">{{ label }}</span>\n @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n } @else {\n <span class=\"fwe-input-text-info fng-projected\"><ng-content select=\".fng-hint\"></ng-content></span>\n } @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n } @else {\n <span class=\"fwe-input-text-invalid fng-projected\"><ng-content select=\".fng-error\"></ng-content></span>\n } @if(showValidationIcons){\n <i class=\"fng-icon-svg-validation-state\" aria-hidden=\"true\"></i>\n }\n</label>\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport {\r\n AbstractControlOptions,\r\n AsyncValidatorFn,\r\n FormBuilder,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ValidatorFn\r\n} from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { Modal } from '../index';\r\n\r\nimport { FngTextInputComponent } from '../../forms/text-input/text-input.component';\r\n\r\nexport interface FngPromptData {\r\n title: string;\r\n subtitle?: string;\r\n label: string;\r\n hint?: string;\r\n errors?: { [key: string]: string };\r\n cancel?: string;\r\n ok?: string;\r\n value?: string;\r\n placeholder?: string;\r\n validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null;\r\n asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null;\r\n}\r\n\r\n@Component({\n imports: [ReactiveFormsModule, FormsModule, FngTextInputComponent],\n selector: 'fng-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngPromptComponent implements OnInit, AfterViewInit, OnDestroy, Modal<FngPromptData, any> {\r\n @Input() data: FngPromptData = {} as FngPromptData;\r\n @Output() close = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n @ViewChild('closeBtn') closeBtn: ElementRef | undefined;\r\n @ViewChild('inputField') inputField: FngTextInputComponent | undefined;\r\n\r\n form: FormGroup = this.formBuilder.group({\r\n text: this.formBuilder.control('')\r\n });\r\n\r\n error = '';\r\n\r\n get text(): string {\r\n return this.form?.get('text')?.value;\r\n }\r\n\r\n get valid(): boolean {\r\n return !!this.form.get('text')?.valid;\r\n }\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n constructor(private formBuilder: FormBuilder) {}\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n\r\n if (event.key === 'Enter') {\r\n this.onOk();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n const text = this.data.value || '';\r\n\r\n const textControl = this.formBuilder.control(text, this.data?.validatorOrOpts, this.data?.asyncValidator);\r\n\r\n this.form = this.formBuilder.group({\r\n text: textControl\r\n });\r\n\r\n if (text) {\r\n textControl.markAsDirty();\r\n }\r\n\r\n textControl.statusChanges.pipe(takeUntil(this.complete)).subscribe(sc => {\r\n if (sc === 'INVALID') {\r\n this.handleErrors();\r\n } else {\r\n this.error = '';\r\n }\r\n });\r\n this.handleErrors();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.inputField) {\r\n (this.inputField.inputElement?.nativeElement as HTMLInputElement).focus();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onOk() {\r\n if (this.valid) {\r\n this.ok.emit(this.text);\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.cancel.emit();\r\n }\r\n\r\n private handleErrors() {\r\n const e = this.form.get('text')?.errors;\r\n if (e) {\r\n const key = Object.keys(e)[0];\r\n if (this.data.errors != null && this.data.errors[key]) {\r\n this.error = this.data.errors[key];\r\n } else {\r\n this.error = 'Prompt input is invalid.';\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-modal\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (data.subtitle) {\n <h2 class=\"fwe-modal-h2\">{{ data.subtitle }}</h2>\n }\n <h1 class=\"fwe-modal-h1\">{{ data.title }}</h1>\n </div>\n <form [formGroup]=\"form\" class=\"fwe-modal-body\">\n <fng-text-input\n #inputField\n type=\"text\"\n [label]=\"data.label\"\n formControlName=\"text\"\n [error]=\"error\"\n [hint]=\"data.hint\"\n [placeholder]=\"data.placeholder\"\n >\n </fng-text-input>\n </form>\n @if (data.cancel || data.ok) {\n <div class=\"fwe-modal-footer\">\n <div class=\"fwe-modal-buttons\">\n @if (data.cancel) {\n <button type=\"button\" aria-label=\"Cancel\" class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ data.cancel }}\n </button>\n }\n @if (data.ok) {\n <button type=\"button\" aria-label=\"Ok\" class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onOk()\">\n {{ data.ok }}\n </button>\n }\n </div>\n </div>\n }\n</div>\n","import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, HostListener, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FngSafeHtmlPipe } from '../../pipes/safe-html.pipe';\r\nimport { Modal } from '../modals.module';\r\n\r\nimport { register } from 'swiper/element/bundle';\r\nimport { Swiper } from 'swiper/types';\r\n\r\nregister();\r\n\r\nexport interface FngImageDescriptiveContent {\r\n title: string;\r\n body: string;\r\n}\r\n\r\nexport interface FngImageGalleryData {\r\n startIndex: number;\r\n images: { url: string; alt: string; content?: FngImageDescriptiveContent; containMode?: boolean }[];\r\n thumbnailImages?: { url: string; alt: string; containMode?: boolean }[];\r\n pagination?: boolean;\r\n descriptiveContent?: boolean;\r\n slideChanged?: (index: number) => void;\r\n showScaleButton: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [CommonModule, FngSafeHtmlPipe],\r\n selector: 'fng-image-gallery',\r\n templateUrl: './image-gallery.component.html',\r\n styleUrls: ['./image-gallery.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n})\r\nexport class FngImageGalleryComponent implements Modal<FngImageGalleryData, any> {\r\n @Input() data: FngImageGalleryData = {\r\n startIndex: 0,\r\n images: [],\r\n thumbnailImages: [],\r\n slideChanged: () => null,\r\n pagination: true,\r\n descriptiveContent: false,\r\n showScaleButton: false\r\n };\r\n\r\n @Output() close = new EventEmitter<any>();\r\n @Output() scaleUp = new EventEmitter<any>();\r\n @Output() scaleDown = new EventEmitter<any>();\r\n @Output() cancel = new EventEmitter<any>();\r\n @Output() ok = new EventEmitter<any>();\r\n\r\n currentIndex = this.data.startIndex + 1;\r\n isScaled = false;\r\n swiperRef: Swiper | undefined;\r\n\r\n constructor(private cd: ChangeDetectorRef) {}\r\n\r\n @HostListener('window:keyup', ['$event'])\r\n onKeyUp(event: KeyboardEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (event.key === 'Esc' || event.key === 'Escape') {\r\n this.onClose();\r\n }\r\n }\r\n\r\n onSwiperInit(event: CustomEvent<[Swiper]>) {\r\n const [swiper] = event.detail;\r\n this.swiperRef = swiper;\r\n setTimeout(() => {\r\n swiper.slideTo(this.data.startIndex - 1, 0, false);\r\n });\r\n }\r\n\r\n onNext() {\r\n this.swiperRef?.slideNext();\r\n }\r\n\r\n onPrev() {\r\n this.swiperRef?.slidePrev();\r\n }\r\n\r\n onSlideChange(event: CustomEvent<[Swiper]>) {\r\n const [swiper] = event.detail;\r\n this.currentIndex = swiper.activeIndex + 1;\r\n this.cd.markForCheck();\r\n this.cd.detectChanges();\r\n if (this.data?.slideChanged) {\r\n this.data.slideChanged(swiper.activeIndex);\r\n }\r\n }\r\n\r\n onClose() {\r\n this.close.emit();\r\n }\r\n\r\n onScale() {\r\n if(!this.isScaled) {\r\n this.scaleUp.emit();\r\n this.isScaled = true;\r\n } else {\r\n this.scaleDown.emit();\r\n this.isScaled = false;\r\n }\r\n }\r\n}\r\n","@if (data != null) {\n <div\n class=\"fwe-modal fwe-modal-image-gallery\"\n [class.fwe-modal-image-gallery--with-thumbnails]=\"data.thumbnailImages?.length\"\n [class.fwe-modal-image-gallery--with-container]=\"data.descriptiveContent\"\n >\n <div class=\"fwe-image-gallery-header\">\n @if (data.pagination) {\n <div class=\"fwe-pagination fwe-pagination--on-dark-bg\">\n <button aria-label=\"previous\" type=\"button\" class=\"fwe-navigate-btn-down\" (click)=\"onPrev()\"></button>\n <span class=\"fwe-page-current\">{{ currentIndex }}</span>\n <span class=\"fwe-page-max\">{{ data.images.length }}</span>\n <button aria-label=\"next\" type=\"button\" class=\"fwe-navigate-btn-up\" (click)=\"onNext()\"></button>\n </div>\n }\n @if (data.showScaleButton === true) {\n <button\n aria-label=\"scale up\"\n type=\"button\"\n class=\"fwe-btn fwe-btn-link fwe-ml-auto\"\n (click)=\"onScale()\"\n >\n <i\n class=\"fwe-icon fwe-icon-lg fwe-color-white fwe-modal-image-gallery-scale\"\n [ngClass]=\"{ 'fwe-icon-arrows-scale-down': isScaled === true, 'fwe-icon-arrows-scale-up': isScaled === false }\"\n ></i>\n </button>\n }\n <button\n aria-label=\"close\"\n type=\"button\"\n class=\"fwe-btn fwe-btn-link\"\n (click)=\"onClose()\"\n [ngClass]=\"{ 'fwe-ml-auto': !data.showScaleButton, 'fwe-ml-3': data.showScaleButton }\"\n >\n <i class=\"fwe-icon fwe-icon-2x fwe-color-white fwe-icon-menu-close fwe-modal-image-gallery-close\"></i>\n </button>\n </div>\n @switch (data.descriptiveContent) {\n @case (true) {\n <div class=\"fwe-image-gallery-container\">\n <ng-container *ngTemplateOutlet=\"baseGallery\"></ng-container>\n @if (data.images[currentIndex - 1].content; as imageContent) {\n <div class=\"fwe-image-gallery-content\">\n <h3>{{ imageContent.title }}</h3>\n <div [innerHTML]=\"imageContent.body | fngSafeHtml\"></div>\n </div>\n }\n </div>\n }\n @default {\n <ng-container *ngTemplateOutlet=\"baseGallery\"></ng-container>\n }\n }\n </div>\n}\n\n<ng-template #baseGallery>\n <div class=\"fwe-image-gallery-wrapper\">\n <swiper-container\n keyboard\n space-between=\"0\"\n zoom=\"true\"\n thumbs-swiper=\".fng-image-gallery-thumbs-swiper\"\n (swiperinit)=\"onSwiperInit($any($event))\"\n (swipernavigationnext)=\"onSlideChange($any($event))\"\n (swipernavigationprev)=\"onSlideChange($any($event))\"\n (swiperslidechange)=\"onSlideChange($any($event))\"\n class=\"gallery-swiper fwe-image-gallery\"\n >\n @for (image of data.images; track image) {\n <swiper-slide>\n <div class=\"swiper-zoom-container\">\n <img [alt]=\"image.alt\" [src]=\"image.url\" [class.fwe-object-fit-contain]=\"image.containMode\" [class.fwe-p-m]=\"image.containMode\" />\n </div>\n </swiper-slide>\n }\n </swiper-container>\n @if (data.thumbnailImages?.length) {\n <swiper-container\n slides-per-view=\"auto\"\n free-mode=\"true\"\n threshold=\"20\"\n watch-slides-progress=\"true\"\n class=\"thumbs-swiper fng-image-gallery-thumbs-swiper\"\n >\n @for (thumbnail of data.thumbnailImages; track thumbnail) {\n <swiper-slide class=\"fng-image-gallery-thumbs-swiper-slide\">\n <img\n [alt]=\"thumbnail.alt\"\n [src]=\"thumbnail.url\"\n [class.fwe-object-fit-contain]=\"thumbnail.containMode\"\n [class.fwe-p-xxxs]=\"thumbnail.containMode\"\n />\n </swiper-slide>\n }\n </swiper-container>\n }\n </div>\n </ng-template>\n","import { Injectable, SimpleChange } from '@angular/core';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { Modal, ModalOptions, ModalResult } from './index';\r\nimport { FngAlertComponent, FngAlertData } from './alert/alert.component';\r\nimport { FngConfirmComponent, FngConfirmData } from './confirm/confirm.component';\r\nimport { Subject } from 'rxjs';\r\nimport { FngPromptComponent, FngPromptData } from './prompt/prompt.component';\r\nimport { FngImageGalleryComponent, FngImageGalleryData } from './image-gallery/image-gallery.component';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FngModalService {\r\n constructor(protected overlay: Overlay, private router: Router) {}\r\n\r\n alert(data: FngAlertData, options?: ModalOptions) {\r\n return this.open<FngAlertData, any, FngAlertComponent>(data, FngAlertComponent, {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true,\r\n ...options\r\n });\r\n }\r\n\r\n confirm(data: FngConfirmData, options?: ModalOptions) {\r\n options = options || {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngConfirmData, any, FngConfirmComponent>(data, FngConfirmComponent, options);\r\n }\r\n\r\n prompt(data: FngPromptData, options?: ModalOptions) {\r\n options = options || {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngPromptData, any, FngPromptComponent>(data, FngPromptComponent, options);\r\n }\r\n\r\n openImageGallery(data: FngImageGalleryData) {\r\n const options: ModalOptions = {\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n shouldCloseOnBackdrop: true\r\n };\r\n return this.open<FngImageGalleryData, any, FngImageGalleryComponent>(data, FngImageGalleryComponent, options);\r\n }\r\n\r\n open<TData, TResult, TModal extends Modal<TData, TResult>>(\r\n data: TData,\r\n modal: ComponentType<TModal>,\r\n options: ModalOptions\r\n ): Promise<ModalResult<TResult>> {\r\n return new Promise((resolve, reject) => {\r\n const complete = new Subject<boolean>();\r\n const positionStrategy = options.positionStrategy || this.overlay.position().global().centerHorizontally().centerVertically();\r\n const scrollStrategy = this.overlay.scrollStrategies.block();\r\n const overlayRef = this.overlay.create({\r\n panelClass: options.overlayClass,\r\n positionStrategy,\r\n scrollStrategy,\r\n backdropClass: 'fwe-modal-backdrop',\r\n hasBackdrop: true,\r\n ...options\r\n });\r\n\r\n if (options.closeOnNavigation) {\r\n this.router.events\r\n .pipe(\r\n filter(e => e instanceof NavigationStart),\r\n takeUntil(complete)\r\n )\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'navigated' })));\r\n }\r\n\r\n if (options.shouldCloseOnBackdrop) {\r\n overlayRef\r\n .backdropClick()\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'backdrop' })));\r\n }\r\n\r\n const modalPortal = new ComponentPortal(modal);\r\n const componentRef = overlayRef.attach(modalPortal);\r\n if (componentRef != null && componentRef.instance != null) {\r\n componentRef.instance.data = data;\r\n if (componentRef.instance.close != null) {\r\n componentRef.instance.close\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'close' })));\r\n }\r\n if (componentRef.instance.cancel != null) {\r\n componentRef.instance.cancel\r\n .pipe(takeUntil(complete))\r\n .subscribe(() => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'cancel' })));\r\n }\r\n if (componentRef.instance.ok != null) {\r\n componentRef.instance.ok\r\n .pipe(takeUntil(complete))\r\n .subscribe(result => this.dispose(overlayRef, complete).then(() => resolve({ userAction: 'ok', result })));\r\n }\r\n if (componentRef.instance.ngOnChanges != null) {\r\n componentRef.instance.ngOnChanges({ data: new SimpleChange(null, data, true) });\r\n }\r\n } else {\r\n this.dispose(overlayRef, complete).then(() => reject(new Error('Could not attach component to overlay.')));\r\n }\r\n });\r\n }\r\n\r\n private dispose(overlayRef: OverlayRef, complete: Subject<boolean>) {\r\n return new Promise<void>(resolve => {\r\n complete.next(true);\r\n complete.complete();\r\n complete.unsubscribe();\r\n overlayRef.dispose();\r\n resolve();\r\n });\r\n }\r\n}\r\n","\r\nimport { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n imports: [],\r\n selector: 'fng-custom-modal',\r\n templateUrl: './custom-modal.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngCustomModalComponent {\r\n private _visible: boolean = false;\r\n\r\n @Input() closeOnBackdrop: boolean = false;\r\n @Input() large: boolean = false;\r\n @Input()\r\n set visible(value: boolean) {\r\n this._visible = value;\r\n\r\n if (!value && this.visibleChange) {\r\n this.visibleChange.emit(false);\r\n }\r\n }\r\n get visible(): boolean {\r\n return this._visible;\r\n }\r\n /**\r\n * Emits false on close modal by close, cancel, click outside and close by providing value false to visible\r\n */\r\n @Output() visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input() header: string = '';\r\n @Input() subheader: string | null = '';\r\n\r\n @Input() acknowledgeLabel: string = 'Ok';\r\n @Output() acknowledge: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Input() cancelLabel: string = 'Cancel';\r\n @Output() cancel: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output() close: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n closeModal(): void {\r\n this.visible = false;\r\n }\r\n\r\n onClose(): void {\r\n if (this.close) {\r\n this.close.emit();\r\n }\r\n this.closeModal();\r\n }\r\n\r\n onCancel(): void {\r\n this.closeModal();\r\n if (this.cancel) {\r\n this.cancel.emit();\r\n }\r\n }\r\n\r\n onAcknowledge(): void {\r\n if (this.acknowledge) {\r\n this.acknowledge.emit();\r\n }\r\n }\r\n\r\n onClickOutside(): void {\r\n if (this.closeOnBackdrop) {\r\n this.onClose();\r\n }\r\n }\r\n\r\n onClickInside(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n}\r\n","@if (visible) {\n <div class=\"fwe-modal-backdrop\" (mousedown)=\"onClickOutside()\">\n <div class=\"fwe-modal\" [class.fwe-modal--large]=\"large\" (mousedown)=\"onClickInside($event)\">\n <button type=\"button\" aria-label=\"Close\" #closeBtn class=\"fwe-modal-close-btn\" (click)=\"onClose()\">\n <span class=\"fwe-sr-only\">Close</span>\n </button>\n <div class=\"fwe-modal-header\">\n @if (subheader?.length) {\n <h2 class=\"fwe-modal-h2\">{{ subheader }}</h2>\n }\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 <button class=\"fwe-btn fwe-btn-lg\" (click)=\"onCancel()\">\n {{ cancelLabel }}\n </button>\n <button class=\"fwe-btn fwe-btn-hero fwe-btn-lg\" (click)=\"onAcknowledge()\">\n {{ acknowledgeLabel }}\n </button>\n </div>\n </div>\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\r\n\r\nimport { FngAlertComponent } from './alert/alert.component';\r\nimport { FngConfirmComponent } from './confirm/confirm.component';\r\nimport { FngPromptComponent } from './prompt/prompt.component';\r\nimport { FngCustomModalComponent } from './custom-modal/custom-modal.component';\r\nimport { FngImageGalleryComponent } from './image-gallery/image-gallery.component';\r\n\r\nexport * from './index';\r\nexport * from './alert/alert.component';\r\nexport * from './confirm/confirm.component';\r\nexport * from './prompt/prompt.component';\r\nexport * from './custom-modal/custom-modal.component';\r\nexport * from './image-gallery/image-gallery.component';\r\n\r\n@NgModule({\r\n imports: [FngAlertComponent, FngConfirmComponent, FngPromptComponent, FngCustomModalComponent, FngImageGalleryComponent],\r\n exports: [FngAlertComponent, FngConfirmComponent, FngPromptComponent, FngCustomModalComponent, FngImageGalleryComponent],\r\n providers: []\r\n})\r\nexport class FestoAngularModalsModule {}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n forwardRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngCheckboxComponent),\n multi: true\n }\n ]\n})\r\nexport class FngCheckboxComponent implements ControlValueAccessor {\r\n @Input() name: string = '';\r\n @Input() large = false;\r\n @Input() valid = true;\r\n @Input() labelPosition: 'before' | 'after' | 'below' = 'after';\r\n\r\n private innerId = `fng-checkbox-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-checkbox-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n if (value !== this.checked) {\r\n this.isChecked = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isChecked = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this.isDisabled;\r\n }\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this.disabled) {\r\n this.isDisabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isDisabled = false;\r\n\r\n @Input()\r\n get indeterminate(): boolean {\r\n return this.isIndeterminate;\r\n }\r\n set indeterminate(value: boolean) {\r\n const changed = value !== this.isIndeterminate;\r\n this.isIndeterminate = coerceBooleanProperty(value);\r\n if (changed) {\r\n this.indeterminateChange.emit(this.isIndeterminate);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n private isIndeterminate = false;\r\n\r\n @Input() value: string = 'false';\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n private isRequired: boolean = false;\r\n\r\n @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: (value: any) => void = () => null;\r\n\r\n onTouched: () => any = () => null;\r\n\r\n writeValue(value: any) {\r\n this.checked = !!value;\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInteractionEvent(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.indeterminate) {\r\n Promise.resolve().then(() => {\r\n this.isIndeterminate = false;\r\n this.indeterminateChange.emit(this.isIndeterminate);\r\n });\r\n }\r\n if (!this.valid) {\r\n this.valid = true;\r\n }\r\n if (this.required) {\r\n this.required = false;\r\n }\r\n this.checked = !this.checked;\r\n if (this.controlValueAccessorChangeFn != null) {\r\n this.controlValueAccessorChangeFn(this.checked);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.change.emit(this.checked);\r\n }\r\n }\r\n}\r\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]=\"{\r\n 'fwe-label-below': labelPosition == 'below',\r\n 'fwe-label-before': labelPosition == 'before'\r\n }\"\r\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 @if (!indeterminate && checked) {\n @if (large) {\n <svg 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 }\n @if (!large) {\n <svg 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 }\n }\n @if (indeterminate && !checked) {\n <div class=\"fwe-indeterminate-indicator\"></div>\n }\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n </label>\n","import { ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';\r\n\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\n\r\n/**\r\n * A control to display a color.\r\n */\r\n@Component({\n imports: [OverlayModule],\n selector: 'fng-color-indicator',\n templateUrl: './color-indicator.component.html',\n styleUrls: ['./color-indicator.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngColorIndicatorComponent {\r\n /**\r\n * The label above the color.\r\n */\r\n @Input() label: string = '';\r\n\r\n /**\r\n * A text next to the color.\r\n */\r\n @Input() text: string = '';\r\n\r\n /**\r\n * The current color as a string.\r\n * Examples: '#ffffff', 'red', 'rgba(1,2,3,0.5)'\r\n */\r\n @Input() color: string = '#ffffff';\r\n\r\n /**\r\n * enable an overlay to edit the color.\r\n * The editor must be passed as the content of the indicator.\r\n */\r\n @Input() showPopOver: boolean = false;\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n public isEditorOpen = false;\r\n\r\n public positions = [\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'center',\r\n originY: 'top'\r\n },\r\n {\r\n overlayX: 'center',\r\n overlayY: 'bottom'\r\n },\r\n 0,\r\n -20,\r\n ['fng-color-indicator-top']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'center',\r\n originY: 'bottom'\r\n },\r\n {\r\n overlayX: 'center',\r\n overlayY: 'top'\r\n },\r\n 0,\r\n 20,\r\n ['fng-color-indicator-bottom']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'start',\r\n originY: 'center'\r\n },\r\n {\r\n overlayX: 'end',\r\n overlayY: 'center'\r\n },\r\n -20,\r\n 0,\r\n ['fng-color-indicator-left']\r\n ),\r\n new ConnectionPositionPair(\r\n {\r\n originX: 'end',\r\n originY: 'center'\r\n },\r\n {\r\n overlayX: 'start',\r\n overlayY: 'center'\r\n },\r\n 20,\r\n 0,\r\n ['fng-color-indicator-right']\r\n )\r\n ];\r\n\r\n getBorderColor(): string {\r\n if (!this.color || this.color.toUpperCase() === '#FFFFFF' || this.color.toUpperCase() === '#F0F2F3') {\r\n return '#b6bec6'; // = $control-border\r\n } else {\r\n return this.color;\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.fwe-color-indicator--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 @if (!color) {\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 }\n </div>\n @if (text) {\n <div class=\"fwe-color-indicator-text\">\n {{ text }}\n </div>\n }\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 [cdkConnectedOverlayPush]=\"true\"\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","export abstract class ColorHelper {\r\n // based on: https://gist.github.com/mjackson/5311256\r\n public static rgbToHsv(rgb: Record<'r' | 'g' | 'b', number> | undefined | null): Record<'h' | 's' | 'v', number> {\r\n if (!rgb) {\r\n return { h: 0, s: 0, v: 0 };\r\n }\r\n\r\n const r = this.limitToByte(rgb.r) / 255;\r\n const g = this.limitToByte(rgb.g) / 255;\r\n const b = this.limitToByte(rgb.b) / 255;\r\n\r\n const max = Math.max(r, g, b);\r\n const min = Math.min(r, g, b);\r\n\r\n let h = max;\r\n let s = max;\r\n const v = max;\r\n\r\n const d = max - min;\r\n s = max === 0 ? 0 : d / max;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n } else {\r\n switch (max) {\r\n case r:\r\n h = (g - b) / d + (g < b ? 6 : 0);\r\n break;\r\n case g:\r\n h = (b - r) / d + 2;\r\n break;\r\n case b:\r\n h = (r - g) / d + 4;\r\n break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return { h, s, v };\r\n }\r\n\r\n // based on: https://gist.github.com/mjackson/5311256\r\n public static hsvToRgb(hsv: Record<'h' | 's' | 'v', number> | undefined | null): Record<'r' | 'g' | 'b', number> {\r\n if (!hsv) {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n\r\n hsv.h = this.limitToOne(hsv.h);\r\n hsv.s = this.limitToOne(hsv.s);\r\n hsv.v = this.limitToOne(hsv.v);\r\n\r\n let r: number = 0;\r\n let g: number = 0;\r\n let b: number = 0;\r\n\r\n const i = Math.floor(hsv.h * 6);\r\n const f = hsv.h * 6 - i;\r\n const p = hsv.v * (1 - hsv.s);\r\n const q = hsv.v * (1 - f * hsv.s);\r\n const t = hsv.v * (1 - (1 - f) * hsv.s);\r\n\r\n switch (i % 6) {\r\n case 0:\r\n r = hsv.v;\r\n g = t;\r\n b = p;\r\n break;\r\n case 1:\r\n r = q;\r\n g = hsv.v;\r\n b = p;\r\n break;\r\n case 2:\r\n r = p;\r\n g = hsv.v;\r\n b = t;\r\n break;\r\n case 3:\r\n r = p;\r\n g = q;\r\n b = hsv.v;\r\n break;\r\n case 4:\r\n r = t;\r\n g = p;\r\n b = hsv.v;\r\n break;\r\n case 5:\r\n r = hsv.v;\r\n g = p;\r\n b = q;\r\n break;\r\n }\r\n\r\n return {\r\n r: this.limitToByte(r * 255),\r\n g: this.limitToByte(g * 255),\r\n b: this.limitToByte(b * 255)\r\n };\r\n }\r\n\r\n private static limitToByte(num: number) {\r\n return Math.round(num <= 0 ? 0 : num >= 255 ? 255 : num);\r\n }\r\n\r\n private static limitToOne(num: number) {\r\n return num <= 0 ? 0 : num >= 1 ? 1 : num;\r\n }\r\n\r\n private static numberToHex(rgb: number): string {\r\n let hex = Math.round(rgb).toString(16);\r\n if (hex.length < 2) {\r\n hex = '0' + hex;\r\n }\r\n return hex.toUpperCase();\r\n }\r\n\r\n public static rgbToHex(rgb: Record<'r' | 'g' | 'b', number> | undefined | null) {\r\n if (!rgb) {\r\n return '#FFFFFF';\r\n }\r\n\r\n rgb.r = this.limitToByte(rgb.r);\r\n rgb.g = this.limitToByte(rgb.g);\r\n rgb.b = this.limitToByte(rgb.b);\r\n\r\n const red = this.numberToHex(rgb.r);\r\n const green = this.numberToHex(rgb.g);\r\n const blue = this.numberToHex(rgb.b);\r\n return '#' + red + green + blue;\r\n }\r\n\r\n public static hexToRgb(hexString: string | null): Record<'r' | 'g' | 'b', number> {\r\n if (!hexString) {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n const numbersOnly = hexString.substring(1);\r\n const aRgbHex = numbersOnly.match(/.{1,2}/g);\r\n if (aRgbHex?.length === 3) {\r\n return { r: parseInt(aRgbHex[0], 16), g: parseInt(aRgbHex[1], 16), b: parseInt(aRgbHex[2], 16) };\r\n } else {\r\n return { r: 0, g: 0, b: 0 };\r\n }\r\n }\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CdkDragMove, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { Component, forwardRef, Input, ViewEncapsulation, OnChanges, SimpleChanges, Output, EventEmitter } from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { ColorHelper } from './color-helper';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport const PREDEFINED_COLORS: string[] = [\r\n '#0091dc',\r\n '#333333',\r\n '#ffffff',\r\n '#f0f2f3',\r\n '#e2e5e8',\r\n '#d3d8dd',\r\n '#b6bec6',\r\n '#80ca3d',\r\n '#ffd600',\r\n '#ff9600',\r\n '#d50000'\r\n];\r\n\r\n/**\r\n * A custom form element to pick a color.\r\n */\r\n@Component({\n imports: [CommonModule, DragDropModule, FormsModule],\n selector: 'fng-color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FngColorPickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngColorPickerComponent implements OnChanges, ControlValueAccessor {\r\n baseSize = 184;\r\n\r\n inputType = 'RGB';\r\n\r\n isSelectOpen = false;\r\n\r\n @Input() useAlpha = false;\r\n\r\n @Input()\r\n get alpha(): number {\r\n return this.innerAlpha;\r\n }\r\n set alpha(value: number) {\r\n if (value <= 100 && value >= 0 && this.innerAlpha !== Math.round(value)) {\r\n this.innerAlpha = Math.round(value);\r\n this.alphaInput = this.innerAlpha;\r\n this.updateKnobs();\r\n }\r\n }\r\n\r\n @Output() alphaChange = new EventEmitter<number>();\r\n\r\n /**\r\n * The current color\r\n */\r\n get color(): string | null {\r\n return this.innerColor;\r\n }\r\n @Input()\r\n set color(value: string | null) {\r\n if (value && this.isHexColor(value)) {\r\n this.innerColor = value.toUpperCase();\r\n } else {\r\n this.innerColor = null;\r\n }\r\n this.updateColorRgb(true);\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n /**\r\n * an array with color strings representing the palette.\r\n * Example: ['#234567, '#AA00FF']\r\n * Pass null to hide palette.\r\n */\r\n @Input() palette: string[] = [];\r\n\r\n /**\r\n * hide the hue and gradient picker and shot the palette only.\r\n */\r\n @Input() paletteOnly = false;\r\n\r\n private innerColor: string | null = null;\r\n private innerDisabled: boolean = true;\r\n private innerAlpha: number = 1;\r\n\r\n // input controls\r\n hexInputColor: string | null = '#ff0000';\r\n redInput = 255;\r\n greenInput = 0;\r\n blueInput = 0;\r\n alphaInput = 100;\r\n\r\n // HSV value\r\n hue: number = 0;\r\n saturation: number = 0;\r\n value: number = 0;\r\n\r\n // poitions of the knobs in px\r\n hueKnobOffset = 0;\r\n alphaKnobOffset = 0;\r\n saturationKnobOffset = 0;\r\n valueKnobOffset = 0;\r\n\r\n // callbacks for ControlValueAccessor\r\n onTouched: () => any = () => null;\r\n onChange: (color: string | null) => any = () => null;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const paletteChanged = changes['palette'];\r\n if (paletteChanged['currentValue'].length > 0 && paletteChanged['currentValue'].indexOf('FESTO_COLORS') !== -1) {\r\n this.palette = PREDEFINED_COLORS;\r\n }\r\n }\r\n\r\n // ControlValueAccessor\r\n writeValue(color: string): void {\r\n if (this.isHexColor(color)) {\r\n this.innerColor = color.toUpperCase();\r\n } else {\r\n this.innerColor = null;\r\n }\r\n this.updateColorRgb(false);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.innerDisabled = isDisabled;\r\n }\r\n\r\n // update method for changes of the rgb value\r\n updateColorRgb(emitChange: boolean) {\r\n const currentColor = this.innerColor || '#FFFFFF';\r\n this.updateInputs(currentColor);\r\n const rgb = ColorHelper.hexToRgb(currentColor);\r\n const hsv = ColorHelper.rgbToHsv(rgb);\r\n this.hue = hsv.h;\r\n this.saturation = hsv.s;\r\n this.value = hsv.v;\r\n this.updateKnobs();\r\n if (emitChange) {\r\n if (this.onChange != null) {\r\n this.onChange(this.innerColor);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n // update method for changes of the hsv value\r\n updateColorHsv() {\r\n const rgb = ColorHelper.hsvToRgb({ h: this.hue, s: this.saturation, v: this.value });\r\n this.innerColor = ColorHelper.rgbToHex(rgb);\r\n this.updateInputs(this.innerColor);\r\n if (this.onChange != null) {\r\n this.onChange(this.innerColor);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n // event handler for inputs\r\n onHexBlur() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n } else {\r\n this.hexInputColor = this.color;\r\n }\r\n }\r\n\r\n onHexInput() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n }\r\n }\r\n\r\n onRgbBlur() {\r\n if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {\r\n this.color = this.hexInputColor.toUpperCase();\r\n } else {\r\n this.hexInputColor = this.color;\r\n }\r\n }\r\n\r\n onRgbInput(value: number, channel: string) {\r\n if (value > 255 || value < 0) {\r\n this.updateInputs(this.innerColor);\r\n } else {\r\n const rgb = ColorHelper.hexToRgb(this.innerColor);\r\n rgb[channel as keyof typeof rgb] = value;\r\n this.innerColor = ColorHelper.rgbToHex(rgb);\r\n this.updateColorRgb(true);\r\n }\r\n }\r\n\r\n onAlphaInput(value: number) {\r\n if (value > 100 || value < 0) {\r\n this.alphaInput = this.innerAlpha;\r\n } else {\r\n this.alpha = value;\r\n this.alphaChange.emit(this.alpha);\r\n }\r\n }\r\n\r\n onGradientClick(event: MouseEvent) {\r\n this.saturation = event.offsetX / this.baseSize;\r\n this.value = (this.baseSize - event.offsetY) / this.baseSize;\r\n this.updateColorHsv();\r\n this.updateKnobs();\r\n }\r\n\r\n onGradientDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.saturation = Math.floor(position.x) / this.baseSize;\r\n this.value = (this.baseSize - position.y) / this.baseSize;\r\n this.updateColorHsv();\r\n }\r\n\r\n onHueClick(event: MouseEvent) {\r\n this.hue = event.offsetY / this.baseSize;\r\n this.updateColorHsv();\r\n this.updateKnobs();\r\n }\r\n\r\n onAlphaClick(event: MouseEvent) {\r\n this.alpha = 100 - Math.round((event.offsetY / this.baseSize) * 100);\r\n this.alphaChange.emit(this.alpha);\r\n }\r\n\r\n onHueDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.hue = (position.y + this.baseSize + 14) / this.baseSize;\r\n this.updateColorHsv();\r\n }\r\n\r\n onAlphaDrag(event: CdkDragMove) {\r\n const position = event.source.getFreeDragPosition();\r\n this.innerAlpha = 100 - Math.round((position.y / this.baseSize) * 100);\r\n this.alphaInput = this.innerAlpha;\r\n this.alphaChange.emit(this.innerAlpha);\r\n }\r\n\r\n onRemoveColor() {\r\n if (this.useAlpha) {\r\n this.alpha = 0;\r\n this.alphaChange.emit(this.alpha);\r\n } else {\r\n this.color = null;\r\n }\r\n }\r\n\r\n isHexColor(value: string) {\r\n return /^#[0-9A-F]{6}$/i.test(value);\r\n }\r\n\r\n getSaturationGradient(): string {\r\n return 'linear-gradient(to right, white, hsl(' + this.hue * 360 + ', 100%, 50%) )';\r\n }\r\n\r\n updateInputs(hexColor: string | null) {\r\n this.hexInputColor = hexColor;\r\n const rgb = ColorHelper.hexToRgb(hexColor);\r\n this.redInput = rgb.r;\r\n this.greenInput = rgb.g;\r\n this.blueInput = rgb.b;\r\n }\r\n\r\n updateKnobs() {\r\n this.alphaKnobOffset = ((100 - this.alpha) / 100) * this.baseSize;\r\n this.hueKnobOffset = this.hue * this.baseSize - (this.baseSize + 14);\r\n this.saturationKnobOffset = this.saturation * this.baseSize;\r\n this.valueKnobOffset = (1 - this.value) * this.baseSize;\r\n }\r\n\r\n onChangeType(type: string) {\r\n this.inputType = type;\r\n this.isSelectOpen = false;\r\n }\r\n}\r\n","<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n @if (!paletteOnly) {\n <div class=\"fwe-d-flex\">\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=\".fwe-gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-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 @if (useAlpha) {\n <div class=\"fwe-alpha-picker\">\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-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 }\n </div>\n }\n\n @if (!paletteOnly) {\n <div class=\"fwe-mt-s\">\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 @if (isSelectOpen) {\n <div class=\"fwe-popover\">\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 }\n </div>\n <div class=\"fwe-d-flex\">\n @if (inputType === 'HEX') {\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n }\n @if (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 }\n @if (useAlpha) {\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\">\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 }\n </div>\n </div>\n }\n\n @if (palette && palette.length) {\n <div class=\"fwe-mt-xs fwe-color-grid\">\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=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\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 @for (colorItem of palette; track colorItem) {\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 @if (colorItem.toUpperCase() === color) {\n <i class=\"fwe-icon fwe-icon-menu-check\"></i>\n }\n </div>\n }\n </div>\n }\n</div>\n","import { ElementRef, Input, Output, EventEmitter, Component, ViewChild, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\r\nimport flatpickr from 'flatpickr';\r\nimport { BaseOptions } from 'flatpickr/dist/types/options';\r\n\r\nexport interface FlatPickerOptions {\r\n maxDate?: Date | undefined;\r\n minDate?: Date | undefined;\r\n mode?: 'single' | 'range';\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'fng-flatpickr',\r\n templateUrl: './flatpickr.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngFlatpickrComponent implements OnInit, OnDestroy {\r\n @Input() date: Date | Date[] = new Date();\r\n @Input() options: FlatPickerOptions | undefined;\r\n @Output() dateChange = new EventEmitter<Date | Date[]>();\r\n\r\n @ViewChild('datePicker', { static: true }) datePickerRef: ElementRef | undefined;\r\n\r\n private datePicker: flatpickr.Instance | undefined;\r\n\r\n ngOnInit() {\r\n const options: FlatPickerOptions = {\r\n minDate: this.options?.minDate || undefined,\r\n maxDate: this.options?.maxDate || undefined,\r\n mode: this.options?.mode || 'single'\r\n };\r\n const config: Partial<BaseOptions> = {\r\n inline: true,\r\n defaultDate: this.date,\r\n onChange: c => this.onDateChange(c),\r\n maxDate: options.maxDate,\r\n minDate: options.minDate,\r\n mode: options.mode\r\n };\r\n this.datePicker = flatpickr(this.datePickerRef?.nativeElement, config) as flatpickr.Instance;\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.datePicker != null) {\r\n this.datePicker.destroy();\r\n }\r\n }\r\n\r\n onDateChange(dateOption: Date | Date[]) {\r\n const mode = this.options != null && this.options.mode === 'range' ? 'range' : 'single';\r\n if (mode === 'range' && Array.isArray(dateOption) && dateOption.length === 2) {\r\n this.dateChange.emit(dateOption);\r\n }\r\n if (mode === 'single' && Array.isArray(dateOption) && dateOption.length === 1) {\r\n this.dateChange.emit(dateOption[0]);\r\n }\r\n }\r\n}\r\n","<div class=\"fng-flatpickr\">\r\n <div #datePicker></div>\r\n</div>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n forwardRef,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n HostListener,\r\n HostBinding, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { formatDate } from '@angular/common';\r\nimport { LOCALE_ID, Inject } from '@angular/core';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngFlatpickrComponent } from '../flatpickr/flatpickr.component';\r\n\r\nexport interface FngDatePickerOptions {\r\n maxDate?: Date;\r\n minDate?: Date;\r\n keepOpenOnDateChange?: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [],\r\n selector: 'fng-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngDatePickerComponent),\r\n multi: true\r\n }\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class FngDatePickerComponent implements ControlValueAccessor {\r\n get value(): Date {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(date: Date) {\r\n if (!this.disabled) {\r\n this.innerValue = date;\r\n if (this.onChange != null) {\r\n this.onChange(date);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n @Input() options: FngDatePickerOptions = {} as FngDatePickerOptions;\r\n\r\n /** A locale code for the locale format rules to use. */\r\n @Input() locale: string | undefined;\r\n\r\n /* The date-time components to include. See `DatePipe` for details. */\r\n @Input() format: string | undefined;\r\n\r\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\r\n @Input() timezone: string | undefined;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string | undefined;\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n get displayValue(): string {\r\n if (!this.value) {\r\n return '';\r\n }\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(this.value, format, locale, timezone);\r\n }\r\n\r\n datePickerRef: OverlayRef | undefined;\r\n private innerValue: Date = new Date();\r\n private complete = new Subject<boolean>();\r\n private datePicker: ComponentRef<FngFlatpickrComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => any) | undefined;\r\n onChange: ((date: Date) => any) | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Tab') {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onDateChange(date: Date) {\r\n this.value = date;\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n }\r\n\r\n writeValue(date: Date): void {\r\n this.innerValue = date;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled) {\r\n if (this.datePickerRef == null) {\r\n this.datePickerRef = this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector?.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const datePickerPortal = new ComponentPortal(FngFlatpickrComponent);\r\n this.datePicker = this.datePickerRef.attach(datePickerPortal);\r\n this.datePicker.instance.options = this.options;\r\n this.datePicker.instance.date = this.value;\r\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date | Date[]) => {\r\n if (c instanceof Date) {\r\n this.onDateChange(c);\r\n }\r\n if (this.options == null || !this.options.keepOpenOnDateChange) {\r\n this.dispose();\r\n }\r\n });\r\n this.datePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.dispose());\r\n this.datePicker.instance.ngOnInit();\r\n } else {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n private dispose() {\r\n if (this.datePickerRef != null) {\r\n this.datePickerRef.detach();\r\n this.datePickerRef.dispose();\r\n this.datePickerRef = undefined;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\n","<label #connector class=\"fng-date-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i\n class=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n forwardRef,\r\n Input,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n HostBinding, ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { LOCALE_ID, Inject } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngFlatpickrComponent } from '../flatpickr/flatpickr.component';\r\n\r\nexport interface FngDateRangePickerOptions {\r\n maxDate?: Date;\r\n minDate?: Date;\r\n keepOpenOnDateChange?: boolean;\r\n}\r\n\r\n@Component({\n imports: [],\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(() => FngDateRangePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngDateRangePickerComponent implements ControlValueAccessor {\r\n get value(): Date[] {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(dateRange: Date[]) {\r\n if (!this.disabled) {\r\n this.innerValue = dateRange;\r\n if (this.onChange != null) {\r\n this.onChange(dateRange);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n protected innerDisabled = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n\r\n /** A locale code for the locale format rules to use. */\r\n @Input() locale: string | undefined;\r\n\r\n /* The date-time components to include. See `DatePipe` for details. */\r\n @Input() format: string | undefined;\r\n\r\n /** The time zone. A time zone offset from GMT (such as `'+0430'`) */\r\n @Input() timezone: string | undefined;\r\n\r\n @Input() options: FngDateRangePickerOptions = {} as FngDateRangePickerOptions;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string = 'none';\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n get fromDateDisplayValue(): string | null {\r\n const v = this.value;\r\n if (!v || v.length !== 2) {\r\n return null;\r\n }\r\n const from = this.value[0];\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(from, format, locale, timezone);\r\n }\r\n\r\n get toDateDisplayValue(): string | null {\r\n const v = this.value;\r\n if (!v || v.length !== 2) {\r\n return null;\r\n }\r\n const to = this.value[1];\r\n const format = this.format || 'mediumDate';\r\n const locale = this.locale || this.localeDefault;\r\n const timezone = this.timezone;\r\n return formatDate(to, format, locale, timezone);\r\n }\r\n\r\n dateRangePickerRef: OverlayRef | undefined;\r\n\r\n private innerValue: Date[] = [new Date(), new Date()];\r\n private complete = new Subject<boolean>();\r\n private datePicker: ComponentRef<FngFlatpickrComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, @Inject(LOCALE_ID) private localeDefault: string, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => any) | undefined;\r\n onChange: ((dateRange: Date[]) => any) | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Tab') {\r\n this.dispose();\r\n }\r\n }\r\n\r\n onDateChange(dateRange: Date[]) {\r\n this.value = dateRange;\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n }\r\n\r\n writeValue(dateRange: Date[]): void {\r\n this.innerValue = dateRange;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.dateRangePickerRef == null) {\r\n this.dateRangePickerRef = this.overlay.create({\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector?.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4,\r\n offsetX: -10,\r\n panelClass: ['flatpickr-calendar', 'open']\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const datePickerPortal = new ComponentPortal(FngFlatpickrComponent);\r\n this.datePicker = this.dateRangePickerRef.attach(datePickerPortal);\r\n this.datePicker.instance.options = {\r\n mode: 'range',\r\n minDate: this.options && this.options.minDate ? this.options.minDate : undefined,\r\n maxDate: this.options && this.options.maxDate ? this.options.maxDate : undefined\r\n };\r\n this.datePicker.instance.date = this.value;\r\n this.datePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe((c: Date | Date[]) => {\r\n if (Array.isArray(c)) {\r\n this.onDateChange(c);\r\n }\r\n if (this.options == null || !this.options.keepOpenOnDateChange) {\r\n this.dispose();\r\n }\r\n });\r\n this.dateRangePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.dispose());\r\n this.datePicker.instance.ngOnInit();\r\n } else {\r\n this.dispose();\r\n }\r\n }\r\n }\r\n\r\n private dispose() {\r\n if (this.dateRangePickerRef != null) {\r\n this.dateRangePickerRef.detach();\r\n this.dateRangePickerRef.dispose();\r\n this.dateRangePickerRef = undefined;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\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=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n </div>\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\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})\r\nexport class FngTimePickerDropdownComponent implements AfterViewInit {\r\n @Input() date: Date = new Date();\r\n @Input() showSeconds = false;\r\n @Input() timeFormat: '12' | '24' = '24';\r\n @Output() dateChange = new EventEmitter<{ reset: boolean; date: Date; close: boolean }>();\r\n\r\n @ViewChild('hoursInput') hoursInput: ElementRef | undefined;\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n hide(event: KeyboardEvent) {\r\n if (event.key === 'Escape' || event.key === 'Enter') {\r\n this.onDateChange(true, event.key === 'Escape');\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.hoursInput != null && this.hoursInput.nativeElement != null) {\r\n (this.hoursInput.nativeElement as HTMLElement).focus();\r\n }\r\n }\r\n\r\n onHourUp() {\r\n this.date?.setHours(this.date.getHours() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onHourDown() {\r\n this.date?.setHours(this.date.getHours() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteUp() {\r\n this.date?.setMinutes(this.date.getMinutes() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteDown() {\r\n this.date?.setMinutes(this.date.getMinutes() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondUp() {\r\n this.date?.setSeconds(this.date.getSeconds() + 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondDown() {\r\n this.date?.setSeconds(this.date.getSeconds() - 1);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onHourChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const hour = +(event.target as HTMLInputElement).value;\r\n this.date?.setHours(hour > max ? max : hour < min ? min : hour);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onMinuteChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const minute = +(event.target as HTMLInputElement).value;\r\n this.date?.setMinutes(minute > max ? max : minute < min ? min : minute);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onSecondChange(event: Event) {\r\n const max = +(event.target as HTMLInputElement).max;\r\n const min = +(event.target as HTMLInputElement).min;\r\n const seconds = +(event.target as HTMLInputElement).value;\r\n this.date?.setSeconds(seconds > max ? max : seconds < min ? min : seconds);\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onToggleTimeFormat() {\r\n // Get the current hour in 24-hour format\r\n let hours = this.date.getHours();\r\n\r\n if (hours >= 0 && hours < 12) {\r\n // Switching from AM to PM\r\n this.date.setHours(hours + 12);\r\n } else {\r\n // Switching from PM to AM\r\n this.date.setHours(hours - 12);\r\n }\r\n this.onDateChange(false, false);\r\n }\r\n\r\n onDateChange(close: boolean, reset: boolean) {\r\n if (this.date != null) {\r\n this.date = new Date(this.date);\r\n this.dateChange.emit({ reset, date: new Date(this.date), close });\r\n }\r\n }\r\n}\r\n","<div class=\"fwe-timepicker\">\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 @if (showSeconds) {\n <div 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 }\n </div>\n @if (timeFormat === '12') {\n <button class=\"fwe-btn fwe-ml-m\" (click)=\"onToggleTimeFormat()\">\n {{ date | date : 'a' }}\n </button>\n }\n </div>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ComponentRef,\r\n ElementRef,\r\n forwardRef,\r\n HostBinding,\r\n Input,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngTimePickerDropdownComponent } from './time-picker-dropdown/time-picker-dropdown.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface FngTimePickerOptions {\r\n timeFormat?: '12' | '24';\r\n showSeconds?: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngTimePickerComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTimePickerComponent implements ControlValueAccessor {\r\n get value(): Date {\r\n return this.innerValue;\r\n }\r\n @Input()\r\n set value(date: Date) {\r\n if (!this.disabled) {\r\n this.innerValue = date;\r\n if (this.onChange != null) {\r\n this.onChange(date);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n @Input() hint: string | undefined;\r\n @Input() error: string | undefined;\r\n @Input() options: FngTimePickerOptions | undefined;\r\n\r\n @Input()\r\n @HostBinding('style.width')\r\n width: string = 'none';\r\n @HostBinding('style.display') display: string = 'block';\r\n\r\n @ViewChild('connector', { static: true }) connector: ElementRef | undefined;\r\n\r\n get timeFormat(): string {\r\n let timeFormat = 'H:mm';\r\n if (this.options != null) {\r\n if (this.options.showSeconds) {\r\n timeFormat += ':ss';\r\n }\r\n if (this.options.timeFormat === '12') {\r\n timeFormat = timeFormat.toLowerCase() + ' a';\r\n }\r\n }\r\n return timeFormat;\r\n }\r\n\r\n timePickerRef: OverlayRef | null = null;\r\n\r\n protected innerValue: Date = new Date();\r\n protected innerDisabled = false;\r\n\r\n private complete = new Subject<boolean>();\r\n private timePicker: ComponentRef<FngTimePickerDropdownComponent> | undefined;\r\n\r\n constructor(private overlay: Overlay, private cd: ChangeDetectorRef) {}\r\n\r\n onTouched: (() => void) | undefined;\r\n onChange: ((date: Date) => void) | undefined;\r\n\r\n writeValue(date: Date): void {\r\n this.innerValue = date;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n toggle(event: Event) {\r\n const resetValue = this.value;\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (!this.disabled) {\r\n if (this.timePickerRef == null && this.connector != null && this.connector.nativeElement != null) {\r\n const labelWidth = (this.connector.nativeElement as HTMLElement).clientWidth;\r\n this.timePickerRef = this.overlay.create({\r\n minWidth: `${labelWidth}px`,\r\n panelClass: 'fng-first-child-fullwidth',\r\n hasBackdrop: true,\r\n backdropClass: 'fng-date-picker-backdrop',\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n positionStrategy: this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.connector.nativeElement)\r\n .withPositions([\r\n {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: -12\r\n },\r\n {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: 4\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -12\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: 4\r\n }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n });\r\n const timePickerPortal = new ComponentPortal(FngTimePickerDropdownComponent);\r\n this.timePicker = this.timePickerRef.attach(timePickerPortal);\r\n this.timePicker.instance.timeFormat = this.options != null && this.options.timeFormat != null ? this.options.timeFormat : '24';\r\n this.timePicker.instance.showSeconds = this.options != null && this.options.showSeconds != null ? this.options.showSeconds : false;\r\n this.timePicker.instance.date = new Date(this.value);\r\n this.timePicker.instance.dateChange.pipe(takeUntil(this.complete)).subscribe(ev => {\r\n if (ev.reset) {\r\n this.value = resetValue;\r\n } else {\r\n this.value = ev.date;\r\n }\r\n if (ev.close) {\r\n this.disposeDropdown();\r\n }\r\n // we need to re-render our view after value changed\r\n this.cd.markForCheck();\r\n });\r\n this.timePickerRef\r\n .backdropClick()\r\n .pipe(takeUntil(this.complete))\r\n .subscribe(() => this.disposeDropdown());\r\n } else {\r\n this.disposeDropdown();\r\n }\r\n }\r\n }\r\n\r\n public disposeDropdown() {\r\n if (this.timePickerRef != null) {\r\n this.timePickerRef.detach();\r\n this.timePickerRef.dispose();\r\n this.timePickerRef = null;\r\n }\r\n if (this.complete != null) {\r\n this.complete.next(true);\r\n this.complete.complete();\r\n }\r\n }\r\n}\r\n","<label #connector class=\"fng-time-picker fwe-input-text fwe-input-text-icon\" (click)=\"toggle($event)\">\n <i class=\"fng-icon-svg fng-icon-svg--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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n </label>\n","import { Injectable, OnDestroy } from '@angular/core';\r\n\r\nexport type UniqueSelectionDispatcherListener = (id: string, name: string) => void;\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FngUniqueSelectionDispatcher implements OnDestroy {\r\n private listeners: UniqueSelectionDispatcherListener[] = [];\r\n\r\n /**\r\n * Notify other items that selection for the given name has been set.\r\n * @param id ID of the item.\r\n * @param name Name of the item.\r\n */\r\n notify(id: string, name?: string) {\r\n for (const listener of this.listeners) {\r\n if (name) {\r\n listener(id, name);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Listen for future changes to item selection.\r\n * @return Function used to deregister listener\r\n */\r\n listen(listener: UniqueSelectionDispatcherListener): () => void {\r\n this.listeners.push(listener);\r\n return () => {\r\n this.listeners = this.listeners.filter((registered: UniqueSelectionDispatcherListener) => {\r\n return listener !== registered;\r\n });\r\n };\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listeners = [];\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ChangeDetectionStrategy,\r\n Optional,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n ViewEncapsulation,\r\n Directive,\r\n forwardRef,\r\n AfterContentInit,\r\n ContentChildren,\r\n HostBinding\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\nimport { FngUniqueSelectionDispatcher } from '../unique-selection-dispatcher';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport class FngRadioChange {\r\n constructor(public source: FngRadioComponent | null, public value: any) {}\r\n}\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[fngRadioGroup]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngRadioGroupDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngRadioGroupDirective implements AfterContentInit, ControlValueAccessor {\r\n @HostBinding('class.fwe-radio-group') hostClass = true;\r\n @HostBinding('attr.role') role = 'radiogroup';\r\n\r\n @Output()\r\n readonly change = new EventEmitter<FngRadioChange>();\r\n\r\n @ContentChildren(forwardRef(() => FngRadioComponent), { descendants: true })\r\n radios: QueryList<FngRadioComponent> | undefined;\r\n\r\n @Input()\r\n get name(): string {\r\n return this.innerName;\r\n }\r\n set name(value: string) {\r\n this.innerName = value;\r\n this.updateRadioButtonNames();\r\n }\r\n\r\n @Input()\r\n get large() {\r\n return this.isLarge;\r\n }\r\n set large(v) {\r\n this.isLarge = v;\r\n this.updateRadioButtonSize();\r\n }\r\n\r\n @Input()\r\n get labelPosition() {\r\n return this.innerLabelPosition;\r\n }\r\n set labelPosition(v) {\r\n this.innerLabelPosition = v;\r\n this.markRadiosForCheck();\r\n }\r\n\r\n @Input()\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n set value(newValue: any) {\r\n if (this.innerValue !== newValue) {\r\n this.innerValue = newValue;\r\n this.updateSelectedRadioFromValue();\r\n this.checkSelectedRadioButton();\r\n }\r\n }\r\n\r\n @Input()\r\n get selected() {\r\n return this.isSelected;\r\n }\r\n set selected(selected: any | null) {\r\n this.isSelected = selected;\r\n this.value = selected ? selected.value : null;\r\n this.checkSelectedRadioButton();\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.isDisabled;\r\n }\r\n set disabled(value) {\r\n this.isDisabled = coerceBooleanProperty(value);\r\n this.markRadiosForCheck();\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n this.markRadiosForCheck();\r\n }\r\n\r\n private isLarge = false;\r\n private isDisabled = false;\r\n private isRequired = false;\r\n private innerValue: any = null;\r\n private isInitialized = false;\r\n private isSelected: FngRadioComponent | null = null;\r\n private innerName = `fngRadioGroup-${nextUniqueId++}`;\r\n private innerLabelPosition: 'before' | 'after' | 'below' = 'after';\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: ((value: any) => void) | undefined;\r\n\r\n onTouched: (() => void) | undefined;\r\n\r\n ngAfterContentInit() {\r\n this.isInitialized = true;\r\n }\r\n\r\n checkSelectedRadioButton() {\r\n if (this.isSelected && !this.isSelected.checked) {\r\n this.isSelected.checked = true;\r\n }\r\n }\r\n\r\n touch() {\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n emitChangeEvent(): void {\r\n if (this.isInitialized) {\r\n this.change.emit(new FngRadioChange(this.isSelected, this.innerValue));\r\n }\r\n }\r\n\r\n markRadiosForCheck() {\r\n if (this.radios) {\r\n this.radios.forEach(radio => radio.markForCheck());\r\n }\r\n }\r\n\r\n writeValue(value: any) {\r\n this.value = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private updateRadioButtonSize(): void {\r\n if (this.radios) {\r\n this.radios.forEach(radio => {\r\n radio.large = this.large;\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private updateRadioButtonNames(): void {\r\n if (this.radios) {\r\n this.radios.forEach(radio => {\r\n radio.name = this.name;\r\n radio.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n private updateSelectedRadioFromValue(): void {\r\n const isAlreadySelected = this.isSelected !== null && this.isSelected.value === this.innerValue;\r\n if (this.radios && !isAlreadySelected) {\r\n this.isSelected = null;\r\n this.radios.forEach(radio => {\r\n radio.checked = this.value === radio.value;\r\n if (radio.checked) {\r\n this.isSelected = radio;\r\n }\r\n });\r\n }\r\n }\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-radio',\n templateUrl: './radio.component.html',\n styleUrls: ['./radio.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngRadioComponent implements OnInit, OnDestroy {\r\n @Input() name: string | undefined;\r\n\r\n private innerId = `fng-radio-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-radio-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n const newCheckedState = coerceBooleanProperty(value);\r\n if (this.isChecked !== newCheckedState) {\r\n this.isChecked = newCheckedState;\r\n if (newCheckedState && this.radioGroup && this.radioGroup.value !== this.value) {\r\n this.radioGroup.selected = this;\r\n } else if (!newCheckedState && this.radioGroup && this.radioGroup.value === this.value) {\r\n this.radioGroup.selected = null;\r\n }\r\n\r\n if (newCheckedState) {\r\n this.radioDispatcher.notify(this.id, this.name);\r\n }\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n @Input()\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n set value(value: any) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n if (this.radioGroup !== null) {\r\n if (!this.checked) {\r\n this.checked = this.radioGroup.value === value;\r\n }\r\n if (this.checked) {\r\n this.radioGroup.selected = this;\r\n }\r\n }\r\n }\r\n }\r\n\r\n @Input()\r\n get large() {\r\n return this.isLarge || (this.radioGroup != null && this.radioGroup.large);\r\n }\r\n set large(value) {\r\n this.isLarge = value;\r\n }\r\n\r\n @Input()\r\n get labelPosition() {\r\n return this.innerLabelPosition || (this.radioGroup && this.radioGroup.labelPosition) || 'before';\r\n }\r\n set labelPosition(value) {\r\n this.innerLabelPosition = value;\r\n }\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this.isDisabled || (this.radioGroup != null && this.radioGroup.disabled);\r\n }\r\n set disabled(value: boolean) {\r\n const newDisabledState = coerceBooleanProperty(value);\r\n if (this.isDisabled !== newDisabledState) {\r\n this.isDisabled = newDisabledState;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired || (this.radioGroup && this.radioGroup.required);\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n\r\n @Output() readonly change = new EventEmitter<FngRadioChange>();\r\n\r\n radioGroup: FngRadioGroupDirective;\r\n\r\n private isLarge = false;\r\n private isChecked = false;\r\n private isDisabled: boolean = false;\r\n private isRequired: boolean = false;\r\n private innerValue: any = null;\r\n private innerLabelPosition: 'before' | 'after' | 'below' | undefined;\r\n private removeUniqueSelectionListener: () => void;\r\n\r\n constructor(\r\n @Optional() radioGroup: FngRadioGroupDirective,\r\n private changeDetector: ChangeDetectorRef,\r\n private radioDispatcher: FngUniqueSelectionDispatcher\r\n ) {\r\n this.radioGroup = radioGroup;\r\n this.removeUniqueSelectionListener = radioDispatcher.listen((id: string, name: string) => {\r\n if (id !== this.id && name === this.name) {\r\n this.checked = false;\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n if (this.radioGroup) {\r\n this.checked = this.radioGroup.value === this.innerValue;\r\n this.name = this.radioGroup.name;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.removeUniqueSelectionListener != null) {\r\n this.removeUniqueSelectionListener();\r\n }\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputChange(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.value;\r\n this.checked = true;\r\n this.emitChangeEvent();\r\n\r\n if (this.radioGroup) {\r\n if (typeof this.radioGroup?.controlValueAccessorChangeFn === 'function') {\r\n this.radioGroup?.controlValueAccessorChangeFn(this.value);\r\n }\r\n\r\n if (groupValueChanged) {\r\n this.radioGroup.emitChangeEvent();\r\n }\r\n }\r\n }\r\n }\r\n\r\n markForCheck() {\r\n this.changeDetector.markForCheck();\r\n }\r\n\r\n private emitChangeEvent(): void {\r\n this.change.emit(new FngRadioChange(this, this.innerValue));\r\n }\r\n}\r\n","<label\r\n [attr.for]=\"inputId\"\r\n [ngClass]=\"{\r\n 'fwe-radio': true,\r\n 'fwe-radio-label-below': labelPosition == 'below',\r\n 'fwe-radio-label-before': labelPosition == 'before',\r\n 'fwe-radio-lg': large\r\n }\"\r\n>\r\n <input\r\n type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n (change)=\"onInputChange($event)\"\r\n (click)=\"onInputClick($event)\"\r\n />\r\n <div class=\"fwe-radio-checkmark\"></div>\r\n <div class=\"fwe-radio-label-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n Input,\r\n OnInit,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewChild,\r\n TemplateRef,\r\n AfterViewInit,\r\n ViewRef,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: ['./segment-control.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSegmentControlComponent implements OnInit, OnChanges, AfterViewInit {\r\n id: string | undefined;\r\n view: ViewRef | undefined;\r\n viewMode: 'text' | 'icon' | 'icon-text' = 'text';\r\n\r\n @Input() name: string | undefined;\r\n @Input() value: any;\r\n @Input() label: string | undefined;\r\n @Input() icon: string | undefined;\r\n @Input() iconOnly: boolean | undefined;\r\n @Input() checked: boolean | undefined;\r\n @Input() disabled: boolean | undefined;\r\n @Output() change: EventEmitter<any> = new EventEmitter();\r\n\r\n @ViewChild('tpl') tpl: TemplateRef<any> | undefined;\r\n\r\n ngOnInit(): void {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n this.viewMode = 'text';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['icon']?.currentValue) {\r\n const prefix = 'fwe-icon-';\r\n let icon: string = changes['icon'].currentValue;\r\n if (icon.indexOf(prefix) === -1) {\r\n icon = `${prefix}${icon}`;\r\n }\r\n this.icon = icon;\r\n }\r\n\r\n if (changes['iconOnly']?.currentValue) {\r\n this.viewMode = changes['iconOnly'].currentValue === true ? 'icon' : 'icon-text';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.view = this.tpl?.createEmbeddedView(null);\r\n }\r\n\r\n onInputChange(event: Event) {\r\n event.stopPropagation();\r\n this.checked = true;\r\n const target = (event as unknown as { target: HTMLInputElement }).target;\r\n this.change.emit(target.value);\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n }\r\n}\r\n","<ng-template #tpl>\n <input\n (change)=\"onInputChange($event)\"\n (click)=\"onInputClick($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 @switch (viewMode) {\n @case ('icon') {\n <span class=\"fwe-sr-only\">{{ label }}</span>\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>\n }\n @case ('text') {\n {{ label }}\n }\n @case ('icon-text') {\n <i aria-hidden=\"true\" class=\"fwe-icon\" [ngClass]=\"icon\"></i>{{ label }}\n }\n }\n </label>\n </ng-template>\n","import {\r\n Component,\r\n ContentChildren,\r\n Input,\r\n AfterContentInit,\r\n SimpleChanges,\r\n OnChanges,\r\n AfterViewInit,\r\n ViewChild,\r\n ViewContainerRef,\r\n ChangeDetectorRef,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n forwardRef,\r\n ViewEncapsulation,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport type { QueryList } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { FngSegmentControlComponent } from './segment-control/segment-control.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport interface FngSegmentComponentConfiguration {\r\n outline: boolean;\r\n iconOnly: boolean;\r\n}\r\n\r\n@Component({\n imports: [CommonModule],\n selector: 'fng-segment',\n templateUrl: './segment.component.html',\n styleUrls: ['./segment.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FngSegmentComponent),\n multi: true\n }\n ]\n})\r\nexport class FngSegmentComponent implements OnChanges, AfterContentInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n protected changed = new Array<(value: string) => void>();\r\n protected touched = new Array<() => void>();\r\n\r\n protected innerValue: any;\r\n\r\n writeValue(value: string) {\r\n this.innerValue = value;\r\n this.updateCheckState();\r\n }\r\n\r\n updateCheckState() {\r\n if (this.controls) {\r\n this.controls.forEach(component => {\r\n component.checked = component.value === this.value;\r\n });\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void) {\r\n this.changed.push(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.touched.push(fn);\r\n }\r\n\r\n private complete: Subject<boolean> = new Subject();\r\n\r\n defaultConfig: FngSegmentComponentConfiguration = {\r\n outline: true,\r\n iconOnly: true\r\n };\r\n useIcon = false;\r\n useIconAndText = false;\r\n id: string;\r\n\r\n @Input() legend = '';\r\n @Input() config: FngSegmentComponentConfiguration = this.defaultConfig;\r\n @ContentChildren(FngSegmentControlComponent, { descendants: true }) controls: QueryList<FngSegmentControlComponent> | undefined;\r\n @ViewChild('vc', { read: ViewContainerRef }) vc: ViewContainerRef | undefined;\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @Input()\r\n set value(value: any) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => {\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n return f(value);\r\n });\r\n }\r\n }\r\n get value(): any {\r\n return this.innerValue;\r\n }\r\n\r\n constructor(private cd: ChangeDetectorRef) {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['config']?.currentValue) {\r\n this.config = Object.assign({}, this.defaultConfig, changes['config'].currentValue);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.controls?.length) {\r\n this.controls.forEach(component => {\r\n component.change.pipe(takeUntil(this.complete)).subscribe(val => {\r\n this.value = val;\r\n this.updateCheckState();\r\n });\r\n\r\n if (component.icon != null && this.config.iconOnly === true) {\r\n this.useIcon = true;\r\n component.ngOnChanges({\r\n iconOnly: new SimpleChange(null, true, false)\r\n });\r\n }\r\n\r\n if (component.icon != null && this.config.iconOnly !== true) {\r\n this.useIconAndText = true;\r\n component.ngOnChanges({\r\n iconOnly: new SimpleChange(null, false, false)\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.html();\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.complete.next(true);\r\n this.complete.unsubscribe();\r\n }\r\n\r\n private html() {\r\n if (this.controls) {\r\n this.controls.forEach(component => {\r\n if (component.view) {\r\n if (!component.name) {\r\n component.name = this.id;\r\n }\r\n this.vc?.insert(component.view);\r\n }\r\n });\r\n }\r\n }\r\n}\r\n","<fieldset\r\n class=\"fwe-segment\"\r\n [ngClass]=\"{\r\n 'fwe-segment-outline': config.outline,\r\n 'fwe-segment-icon': useIcon,\r\n 'fwe-segment-icon-text': useIconAndText\r\n }\"\r\n>\r\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\r\n <div class=\"fwe-segment-group\">\r\n <ng-container #vc></ng-container>\r\n </div>\r\n</fieldset>\r\n","\r\nimport { Component, Input, ViewChild, ElementRef, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\n imports: [],\n selector: 'fng-select-option',\n templateUrl: './select-option.component.html',\n styleUrls: ['./select-option.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSelectOptionComponent implements AfterViewInit {\r\n @Input() value: any;\r\n @ViewChild('root') elementRef!: ElementRef;\r\n\r\n el: HTMLElement | undefined;\r\n\r\n ngAfterViewInit(): void {\r\n this.el = this.elementRef.nativeElement;\r\n }\r\n\r\n async update(): Promise<HTMLElement | undefined> {\r\n return await Promise.resolve(this.el);\r\n }\r\n}\r\n","<span #root>\r\n <ng-content></ng-content>\r\n</span>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nfunction defaultValueKey(key: string | undefined): string | undefined {\r\n return key === undefined ? 'value' : key;\r\n}\r\n\r\nfunction defaultTextKey(key: string | undefined): string | undefined {\r\n return key === undefined ? 'text' : key;\r\n}\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'fngChipText',\r\n pure: false\r\n})\r\nexport class FngChipTextPipe implements PipeTransform {\r\n transform(value: any, options: any[], optionsValueKey?: string, optionsTextKey?: string): string {\r\n let chipText = '';\r\n\r\n optionsValueKey = defaultValueKey(optionsValueKey);\r\n optionsTextKey = defaultTextKey(optionsTextKey);\r\n\r\n options.forEach((_: any, index: number) => {\r\n if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value[optionsValueKey])) {\r\n if (optionsTextKey) {\r\n chipText = options[index][optionsTextKey];\r\n }\r\n }\r\n\r\n if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value)) {\r\n if (optionsTextKey) {\r\n chipText = options[index][optionsTextKey];\r\n }\r\n }\r\n });\r\n\r\n return chipText;\r\n }\r\n}\r\n","import {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n DestroyRef,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostBinding,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n Renderer2,\r\n ViewChild,\r\n ViewEncapsulation,\r\n DOCUMENT\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FngSelectOptionComponent } from './select-option/select-option.component';\r\nimport { FngChipTextPipe } from './chip-text.pipe';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nexport interface FngSelectOption {\r\n value: any;\r\n text: string;\r\n}\r\n\r\n@Component({\r\n imports: [CommonModule, FngChipTextPipe, OverlayModule],\r\n selector: 'fng-select',\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngSelectComponent implements ControlValueAccessor, OnInit, AfterViewInit, AfterContentInit {\r\n static nextId = 0;\r\n\r\n protected _disabled = false;\r\n protected _required = false;\r\n protected _value: any;\r\n protected body: HTMLElement;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n set value(value: any) {\r\n if (this.multiple === true) {\r\n const index = this._value.indexOf(value);\r\n if (index === -1) {\r\n this._value.push(value);\r\n this.checked.set(value, 'checked');\r\n } else {\r\n this._value.splice(index, 1);\r\n this.checked.set(value, null);\r\n }\r\n } else {\r\n this._value = value;\r\n }\r\n\r\n if (this.onChange != null) {\r\n this.onChange(this.value);\r\n }\r\n this.fngChange.emit(this.value);\r\n }\r\n\r\n onChange: (value: any) => void = (): void => {};\r\n onTouched: () => void = (): void => {};\r\n\r\n @HostBinding()\r\n id = `input-control-${++FngSelectComponent.nextId}`;\r\n\r\n @Input() multiple: boolean = false;\r\n @Input() size: number = 0;\r\n @Input() options: any[] = [];\r\n @Input() optionsValueKey: string | undefined;\r\n @Input() optionsTextKey: string | undefined;\r\n @Input() optionObjectAsValue: boolean | undefined;\r\n @Input() error: string | undefined;\r\n @Input() label = '';\r\n @Input() hideLabel = false;\r\n @Input() hint = '';\r\n @Input() resetOption: string | undefined;\r\n @ContentChildren(FngSelectOptionComponent) fngSelectOptions: QueryList<FngSelectOptionComponent> | undefined;\r\n @ViewChild('div') elementRef: ElementRef | undefined;\r\n @Output() fngChange = new EventEmitter<any>();\r\n\r\n selectPanelClasses: string[] = ['fng-select-panel'];\r\n showOptions = false;\r\n empty: boolean = false;\r\n triggerWidth: any;\r\n checked = new Map();\r\n hasProjectedOptions = false;\r\n projectedHtml: any[] = [];\r\n\r\n constructor(\r\n public cd: ChangeDetectorRef,\r\n @Inject(DOCUMENT) protected document: Document,\r\n protected renderer: Renderer2,\r\n protected destroy: DestroyRef\r\n ) {\r\n this.body = this.document.body;\r\n }\r\n ngAfterContentInit(): void {\r\n if (!this.fngSelectOptions) {\r\n return;\r\n }\r\n // observe if any of the projected content (fng-select-option) changes\r\n this.fngSelectOptions.changes.pipe(takeUntilDestroyed(this.destroy)).subscribe(_ => {\r\n // if content changes init again\r\n this.options = [];\r\n this.projectedHtml = [];\r\n this.initProjectedOptions();\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.size != null) {\r\n this.selectPanelClasses.push('fng-select-panel-options-' + this.size);\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = [];\r\n this.selectPanelClasses.push('fng-select-panel-multiple');\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;\r\n this.initProjectedOptions();\r\n }\r\n\r\n registerOnChange(fn: any) {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(shouldDisable: boolean): void {\r\n this.disabled = shouldDisable;\r\n }\r\n\r\n writeValue(value: any | null): void {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n if (this.multiple === true) {\r\n this._value = value;\r\n\r\n // clear any previous state of overlay panel\r\n this.checked.clear();\r\n\r\n // set checkmarks in overlay panel, so that it is displayed correctly when user opens it\r\n value?.forEach((v: any) => {\r\n this.checked.set(v, 'checked');\r\n });\r\n } else {\r\n this._value = value;\r\n }\r\n }\r\n\r\n getOptionText(index: number) {\r\n if (this.options[index] && this.optionsTextKey && this.options[index][this.optionsTextKey] != null) {\r\n return this.options[index][this.optionsTextKey];\r\n }\r\n return undefined;\r\n }\r\n\r\n getOptionValue(index: number) {\r\n // if set to true the complete option object is returned as value\r\n if (this.optionObjectAsValue === true) {\r\n return this.options[index];\r\n }\r\n\r\n // try to access standard property 'value'\r\n const v = this.options[index]['value'];\r\n\r\n if (v !== undefined) {\r\n return v;\r\n }\r\n\r\n // try to map the value to a property of the option by given key\r\n if (this.options[index] && this.optionsValueKey && this.options[index][this.optionsValueKey] != null) {\r\n return this.options[index][this.optionsValueKey];\r\n }\r\n return undefined;\r\n }\r\n\r\n removeChip(event: any, chip: string) {\r\n event.stopPropagation();\r\n if (!this._disabled) {\r\n this.value = chip;\r\n }\r\n }\r\n\r\n onOpenedChange(isOpen: boolean) {\r\n if (isOpen) {\r\n this.renderer.addClass(this.body, 'fng-select-panel-open');\r\n } else {\r\n this.renderer.removeClass(this.body, 'fng-select-panel-open');\r\n }\r\n }\r\n\r\n close() {\r\n this.showOptions = false;\r\n this.isEmpty();\r\n this.cd.markForCheck();\r\n }\r\n\r\n toggle() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;\r\n this.showOptions = !this.showOptions;\r\n this.onOpenedChange(this.showOptions);\r\n this.isEmpty();\r\n this.cd.markForCheck();\r\n }\r\n\r\n select(value: any, event: Event) {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n this.value = value;\r\n\r\n if (this.multiple !== true) {\r\n // closes overlay panel\r\n this.toggle();\r\n }\r\n }\r\n\r\n @HostListener('blur')\r\n markAsTouched(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n\r\n this.onTouched();\r\n this.cd.markForCheck();\r\n }\r\n\r\n initProjectedOptions() {\r\n if (this.fngSelectOptions?.length) {\r\n this.hasProjectedOptions = true;\r\n this.fngSelectOptions.forEach(component => {\r\n component.update().then(el => {\r\n if (el) {\r\n this.options.push({ value: component.value, text: el.textContent?.trim() });\r\n this.projectedHtml.push(el.innerHTML);\r\n this.cd.detectChanges();\r\n }\r\n });\r\n });\r\n }\r\n this.cd.detectChanges();\r\n }\r\n\r\n isEmpty() {\r\n this.empty = !this.showOptions && (!this._value || '' === this._value);\r\n }\r\n}\r\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 @if (!multiple) {\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n } @else {\n <div class=\"fwe-chip-container\">\n @for (v of value; track v) {\n <div\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 }\n </div>\n }\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 (detach)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n @if (resetOption != null && !multiple) {\n <li class=\"fwe-select-option\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n }\n @for (option of options; track option; let i = $index) {\n <li\n class=\"fwe-select-option\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n @if (multiple) {\n <span\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n }\n @if (hasProjectedOptions) {\n <span [innerHTML]=\"projectedHtml[i]\"></span>\n } @else {\n {{ getOptionText(i) || option?.text }}\n }\n </span>\n </li>\n }\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n @if (hint) {\n <div class=\"fwe-select-description\">\n {{ hint }}\n </div>\n }\n @if (error) {\n <div class=\"fwe-select-invalid\">\n {{ error }}\n </div>\n }\n</div>\n<div class=\"fwe-d-none\">\n <ng-content></ng-content>\n</div>\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule, DecimalPipe } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, HostListener, Input, OnDestroy, ViewEncapsulation, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngSliderComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngSliderComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\r\n @Input() label: string | undefined;\r\n\r\n @Input()\r\n min = 0;\r\n\r\n @Input()\r\n max = 100;\r\n\r\n @Input()\r\n step: number = 0;\r\n\r\n @Input()\r\n digitsInfo: string | undefined;\r\n\r\n @Input()\r\n locale: string | undefined;\r\n\r\n @Input()\r\n hideValue = false;\r\n\r\n left: number = 0;\r\n\r\n numberoffset: number = 0;\r\n\r\n protected innerDisabled = false;\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n @Input()\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n }\r\n\r\n protected innerValue: number = 0;\r\n get value(): number {\r\n return this.innerValue;\r\n }\r\n\r\n @Input()\r\n set value(value: number) {\r\n this.innerValue = coerceNumberProperty(value);\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.updateValuePosition();\r\n }\r\n\r\n private resizeSub = new Subscription();\r\n private resizeSubject = new Subject<boolean>();\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n onChange: ((value: number) => void) | undefined;\r\n\r\n onTouched: (() => void) | undefined;\r\n\r\n @HostListener('window:resize') onResize() {\r\n this.resizeSubject.next(true);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeSub.add(this.resizeSubject.pipe(debounceTime(25)).subscribe(() => this.updateValuePosition()));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resizeSub.unsubscribe();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.innerValue = coerceNumberProperty(value);\r\n this.updateValuePosition();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInput(event: any) {\r\n this.value = coerceNumberProperty((event.target as HTMLInputElement).value);\r\n }\r\n\r\n updateValuePosition() {\r\n if (this.elementRef != null && this.elementRef.nativeElement != null) {\r\n const bcr = (this.elementRef.nativeElement as HTMLElement).getBoundingClientRect();\r\n const diff = this.max - this.min;\r\n this.left = ((this.value - this.min) / diff) * (bcr.width - 8);\r\n const decimalPipe = new DecimalPipe(this.locale || 'en-US');\r\n const stringValue = decimalPipe.transform(this.value, this.digitsInfo);\r\n this.numberoffset = 8 - (stringValue || '1').length * 6;\r\n }\r\n }\r\n}\r\n","<label class=\"fwe-slider\" [class.fng-slider-label]=\"label != null\">\n @if (label) {\n <span>{{ label }}</span>\n }\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 @if (left != null && !hideValue) {\n <span class=\"fng-slider-value\" [style.left]=\"left + numberoffset + 'px'\">{{\n value | number: digitsInfo : locale\n }}</span>\n }\n <div class=\"fng-slider-indicator\" [class.disabled]=\"disabled\" [style.width]=\"left + 'px'\"></div>\n </label>\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n forwardRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\n imports: [CommonModule],\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(() => FngSwitchComponent),\n multi: true\n }\n ]\n})\r\nexport class FngSwitchComponent implements ControlValueAccessor {\r\n @Input() name: string | undefined;\r\n @Input() large = false;\r\n @Input() labelPosition: 'before' | 'after' | 'below' = 'before';\r\n\r\n private innerId = `fng-switch-${++nextUniqueId}`;\r\n get id(): string {\r\n return this.innerId;\r\n }\r\n @Input()\r\n set id(value: string) {\r\n this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-switch-${++nextUniqueId}`;\r\n }\r\n\r\n get inputId(): string {\r\n return `${this.innerId}-input`;\r\n }\r\n\r\n @Input()\r\n get checked(): boolean {\r\n return this.isChecked;\r\n }\r\n set checked(value: boolean) {\r\n if (value !== this.checked) {\r\n this.isChecked = value;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isChecked = false;\r\n\r\n @Input()\r\n get disabled() {\r\n return this.isDisabled;\r\n }\r\n set disabled(value: any) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this.disabled) {\r\n this.isDisabled = newValue;\r\n this.changeDetector.markForCheck();\r\n }\r\n }\r\n private isDisabled = false;\r\n\r\n @Input() value: string | undefined;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.isRequired;\r\n }\r\n set required(value: boolean) {\r\n this.isRequired = coerceBooleanProperty(value);\r\n }\r\n private isRequired: boolean = false;\r\n\r\n @Output() readonly change: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n controlValueAccessorChangeFn: ((value: any) => void) | undefined;\r\n\r\n onTouched: (() => any) | undefined;\r\n\r\n writeValue(value: any) {\r\n this.checked = !!value;\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void) {\r\n this.controlValueAccessorChangeFn = fn;\r\n }\r\n\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n onInteractionEvent(event: Event) {\r\n event.stopPropagation();\r\n }\r\n\r\n onInputClick(event: Event) {\r\n event.stopPropagation();\r\n\r\n if (!this.disabled) {\r\n if (this.required) {\r\n this.required = false;\r\n }\r\n this.checked = !this.checked;\r\n if (this.controlValueAccessorChangeFn != null) {\r\n this.controlValueAccessorChangeFn(this.checked);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n this.change.emit(this.checked);\r\n }\r\n }\r\n}\r\n","<label\r\n [ngClass]=\"{\r\n 'fwe-switch-container': true,\r\n 'fwe-checked': checked,\r\n 'fwe-disabled': disabled,\r\n 'fwe-switch-label-below': labelPosition == 'below',\r\n 'fwe-switch-label-before': labelPosition == 'before',\r\n 'fwe-switch-lg': large\r\n }\"\r\n>\r\n <input\r\n title=\"checkbox\"\r\n type=\"checkbox\"\r\n [checked]=\"checked\"\r\n [attr.value]=\"value\"\r\n [attr.name]=\"name\"\r\n (change)=\"onInteractionEvent($event)\"\r\n (click)=\"onInputClick($event)\"\r\n [disabled]=\"disabled\"\r\n />\r\n <div class=\"fwe-switch-track\"></div>\r\n <div class=\"fwe-switch-label-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n","import { Component, OnInit, Input, forwardRef, ViewChild, ElementRef, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\r\n\r\n\r\n/**\r\n * A custom form element for text inputs.\r\n */\r\n@Component({\n imports: [],\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(() => FngTextAreaComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\r\nexport class FngTextAreaComponent implements OnInit, ControlValueAccessor {\r\n /**\r\n * The text input label.\r\n */\r\n @Input() label: string | undefined;\r\n\r\n @Input()\r\n get readonly(): boolean {\r\n return this.innerReadonly;\r\n }\r\n set readonly(value: boolean) {\r\n this.innerReadonly = coerceBooleanProperty(value);\r\n }\r\n private innerReadonly = false;\r\n\r\n @Input() placeholder: string | undefined;\r\n @Input() tabindex: number = 0;\r\n @Input() name: string | undefined;\r\n\r\n /**\r\n * When true the control's disabled attribute is set\r\n * and it gets addeed the .disabled css class.\r\n */\r\n @Input()\r\n get disabled(): boolean {\r\n return this.innerDisabled;\r\n }\r\n set disabled(value: boolean) {\r\n this.innerDisabled = coerceBooleanProperty(value);\r\n\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n protected innerDisabled = false;\r\n\r\n /**\r\n * The inner value.\r\n */\r\n innerValue: string | undefined;\r\n\r\n /**\r\n * The getter for value.\r\n */\r\n get value(): string | undefined {\r\n return this.innerValue;\r\n }\r\n\r\n /**\r\n * The setter for value.\r\n */\r\n @Input()\r\n set value(value: string | undefined) {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n if (this.onChange != null) {\r\n this.onChange(value);\r\n }\r\n if (this.onTouched != null) {\r\n this.onTouched();\r\n }\r\n }\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this.innerRequired;\r\n }\r\n set required(value: boolean) {\r\n this.innerRequired = coerceBooleanProperty(value);\r\n }\r\n protected innerRequired = false;\r\n\r\n /**\r\n * Error description when invalid.\r\n */\r\n @Input() error: string | undefined;\r\n\r\n /**\r\n * Hint description when valid.\r\n */\r\n @Input() hint: string | undefined;\r\n\r\n /**\r\n * the height is managed by classes. the last one is \"fwe-row-10\"\r\n */\r\n @Input()\r\n get rows(): number {\r\n return this.innerRows;\r\n }\r\n set rows(value: number) {\r\n const v = coerceNumberProperty(value);\r\n this.innerRows = v > 10 ? 10 : v;\r\n }\r\n protected innerRows = 3;\r\n\r\n @Input() maxlength: number = 0;\r\n\r\n @ViewChild('inputElement') inputElement: ElementRef | undefined;\r\n\r\n /**\r\n * When true the text input has focus.\r\n */\r\n focused: boolean = false;\r\n\r\n /**\r\n * Triggered on change.\r\n */\r\n onChange: ((value: string | undefined) => void) | undefined;\r\n\r\n /**\r\n * Triggered on touch.\r\n */\r\n onTouched: (() => void) | undefined;\r\n\r\n /**\r\n * Called on component initialisation.\r\n */\r\n ngOnInit(): void {\r\n this.onBlur();\r\n }\r\n\r\n /**\r\n * Writes the value.\r\n * @param value The value.\r\n */\r\n writeValue(value: string): void {\r\n if (value != null) {\r\n value = '' + value;\r\n }\r\n this.innerValue = value;\r\n this.focused = !!value;\r\n }\r\n\r\n /**\r\n * Registers a function to onChange.\r\n * @param fn The registered function.\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a function to onTouched.\r\n * @param fn The registered function.\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Called when the text input is in focus.\r\n */\r\n onFocus() {\r\n this.focused = true;\r\n }\r\n\r\n onInput(event: any) {\r\n this.value = event.target.value;\r\n\r\n // The height is adjusted to the content on \"rows = 0\"\r\n if (this.rows === 0) {\r\n const textarea = this.inputElement?.nativeElement;\r\n textarea.style.height = '1px'; // trigger calculation of the textarea.scrollHeight\r\n textarea.style.height = 25 + textarea.scrollHeight + 'px';\r\n }\r\n }\r\n\r\n /**\r\n * Called when the text input blurs.\r\n */\r\n onBlur() {\r\n if (this.focused) {\r\n this.focused = false;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the disabled state.\r\n * @param isDisabled When true the control is disabled\r\n */\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\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 @if (hint) {\n <span class=\"fwe-input-text-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fwe-input-text-invalid\">{{ error }}</span>\n }\n @if (maxlength > 0 && value != null) {\n <span class=\"fwe-input-text-count\">{{ value.length }} / {{ maxlength }}</span>\n }\n </label>\n","import { ControlValueAccessor } from '@angular/forms';\r\nimport { Input, Directive } from '@angular/core';\r\n\r\n@Directive()\r\nexport class FngValueAccessorBaseDirective<T> implements ControlValueAccessor {\r\n @Input() disabled = false;\r\n\r\n protected innerValue: T | undefined;\r\n\r\n protected changed = new Array<(value: T) => void>();\r\n protected touched = new Array<() => void>();\r\n\r\n get value(): T | undefined {\r\n return this.innerValue;\r\n }\r\n\r\n set value(value: T | undefined) {\r\n if (value && this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => f(value));\r\n }\r\n }\r\n\r\n touch() {\r\n this.touched.forEach(f => f());\r\n }\r\n\r\n writeValue(value: T) {\r\n this.innerValue = value;\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void) {\r\n this.changed.push(fn);\r\n }\r\n\r\n registerOnTouched(fn: () => void) {\r\n this.touched.push(fn);\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n SecurityContext,\r\n SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation,\r\n forwardRef\r\n} from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport QuillType from 'quill';\r\n\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { ObserversModule } from '@angular/cdk/observers';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\nimport Delta from 'quill-delta';\r\nimport { FngValueAccessorBaseDirective } from '../value-accessor-base';\r\n\r\nexport interface FngTextEditorConfiguration {\r\n toolbar?: {\r\n bold?: boolean;\r\n italic?: boolean;\r\n underline?: boolean;\r\n alignCenter?: boolean;\r\n alignRight?: boolean;\r\n bulletList?: boolean;\r\n orderedList?: boolean;\r\n image?: boolean;\r\n link?: boolean;\r\n };\r\n sanitizing?: {\r\n skipDefaultSanitizing?: boolean;\r\n skipWhitespaceHandling?: boolean;\r\n sanitizingFn?: (ds: DomSanitizer, value: string) => string;\r\n };\r\n focusCursorToEndOnWrite?: boolean;\r\n}\r\n\r\n@Component({\r\n imports: [ReactiveFormsModule, FormsModule, OverlayModule, ScrollingModule, DragDropModule, ObserversModule],\r\n selector: 'fng-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['./text-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FngTextEditorComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FngTextEditorComponent\r\n extends FngValueAccessorBaseDirective<string | null | undefined>\r\n implements OnInit, AfterViewInit, OnChanges\r\n{\r\n id: string | undefined;\r\n quillEditor!: QuillType;\r\n editorElem!: HTMLElement;\r\n defaultConfig: FngTextEditorConfiguration = {\r\n toolbar: {\r\n bold: true,\r\n italic: true,\r\n underline: true,\r\n alignCenter: false,\r\n alignRight: false,\r\n bulletList: true,\r\n orderedList: true,\r\n image: true,\r\n link: true\r\n },\r\n sanitizing: {\r\n sanitizingFn: undefined,\r\n skipDefaultSanitizing: false,\r\n skipWhitespaceHandling: false\r\n },\r\n focusCursorToEndOnWrite: true\r\n };\r\n\r\n @ViewChild('btnBold') btnBold: ElementRef | undefined;\r\n @ViewChild('btnItalic') btnItalic: ElementRef | undefined;\r\n @ViewChild('btnUnderline') btnUnderline: ElementRef | undefined;\r\n @ViewChild('btnAlignCenter') btnAlignCenter: ElementRef | undefined;\r\n @ViewChild('btnAlignRight') btnAlignRight: ElementRef | undefined;\r\n @ViewChild('btnLink') btnLink: ElementRef | undefined;\r\n @ViewChild('btnUl') btnUl: ElementRef | undefined;\r\n @ViewChild('btnOl') btnOl: ElementRef | undefined;\r\n @ViewChild('btnImage') btnImage: ElementRef | undefined;\r\n\r\n @Output() fngChange = new EventEmitter<any>();\r\n @Output() change = new EventEmitter<any>();\r\n\r\n @Input() config: FngTextEditorConfiguration | null | undefined = this.defaultConfig;\r\n @Input() modules: any;\r\n @Input() label: string | undefined;\r\n @Input() readOnly: boolean = false;\r\n @Input() maxLength: number = 0;\r\n @Input() error: string | undefined;\r\n @Input() hint: string | undefined;\r\n @Input()\r\n override set value(value: string | null | undefined) {\r\n if (this.innerValue !== value) {\r\n this.innerValue = value;\r\n this.changed.forEach(f => {\r\n this.fngChange.emit(this.innerValue);\r\n this.change.emit(this.innerValue);\r\n return f(value);\r\n });\r\n }\r\n }\r\n\r\n override get value() {\r\n return this.innerValue;\r\n }\r\n\r\n // needed to access editor content\r\n valueGetter = (editorElement: HTMLElement): string | any => {\r\n let html: string | undefined = editorElement?.querySelector('.ql-editor')?.innerHTML;\r\n if (html === '<p><br></p>' || html === '<div><br></div>') {\r\n html = undefined;\r\n }\r\n return html;\r\n };\r\n\r\n // needed to access editor content\r\n valueSetter = (quillEditor: QuillType, value: any): any => {\r\n const sanitizeConfig = this.config?.sanitizing || this.defaultConfig.sanitizing;\r\n\r\n if (sanitizeConfig?.sanitizingFn) {\r\n value = sanitizeConfig.sanitizingFn(this.domSanitizer, value);\r\n }\r\n if (sanitizeConfig && !sanitizeConfig.skipDefaultSanitizing) {\r\n value = this.domSanitizer.sanitize(SecurityContext.HTML, value);\r\n }\r\n if (sanitizeConfig && !sanitizeConfig.skipWhitespaceHandling) {\r\n value = this.handleWhitespace(value);\r\n }\r\n\r\n return quillEditor.clipboard.convert({ html: value });\r\n };\r\n\r\n constructor(\r\n public elementRef: ElementRef,\r\n private renderer: Renderer2,\r\n private domSanitizer: DomSanitizer\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.id = (Math.random() * Date.now()).toString().replace('.', '-');\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.editorElem = this.elementRef.nativeElement.querySelector(`#editor-${this.id}`);\r\n\r\n this.quillEditor = new QuillType(this.editorElem, {\r\n modules: { toolbar: `#editor-toolbar-${this.id}`, ...this.modules },\r\n theme: 'snow'\r\n });\r\n this.setEditorLabel();\r\n this.addWhitespaceMatcher();\r\n this.addImageMatcher();\r\n\r\n const content = this.valueSetter(this.quillEditor, this.innerValue || '');\r\n this.quillEditor.setContents(content, 'silent');\r\n (this.quillEditor.getModule('history') as any).clear();\r\n\r\n this.handle();\r\n\r\n this.quillEditor.on('text-change', () => {\r\n this.value = this.valueGetter(this.editorElem);\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes?.['config']?.currentValue != null) {\r\n this.config = {\r\n toolbar: { ...this.defaultConfig.toolbar, ...changes['config'].currentValue?.toolbar },\r\n sanitizing: { ...this.defaultConfig.sanitizing, ...changes['config'].currentValue?.sanitizing }\r\n };\r\n }\r\n\r\n if (!this.quillEditor) {\r\n return;\r\n }\r\n\r\n this.handle();\r\n }\r\n\r\n override writeValue(value: string) {\r\n this.innerValue = value;\r\n\r\n if (!this.quillEditor) {\r\n return;\r\n }\r\n\r\n const content = this.valueSetter(this.quillEditor, value || '');\r\n this.quillEditor.setContents(content);\r\n\r\n if (this.config?.focusCursorToEndOnWrite) {\r\n // when new content gets written we always set cursor focus to end of text\r\n this.quillEditor.setSelection(Number.MAX_SAFE_INTEGER, 0);\r\n }\r\n }\r\n\r\n override setDisabledState(isDisabled: boolean = this.disabled): void {\r\n this.disabled = isDisabled;\r\n if (this.quillEditor) {\r\n if (isDisabled) {\r\n this.quillEditor.disable();\r\n this.renderer.setAttribute(this.elementRef.nativeElement, 'disabled', 'disabled');\r\n } else {\r\n if (!this.readOnly) {\r\n this.quillEditor.enable();\r\n }\r\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'disabled');\r\n }\r\n }\r\n }\r\n\r\n setReadOnlyState() {\r\n this.quillEditor.enable(!this.readOnly);\r\n }\r\n\r\n delegate(event: any, action: string) {\r\n let btn: HTMLElement | undefined = undefined;\r\n switch (action) {\r\n case 'bold':\r\n btn = this.btnBold?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'italic':\r\n btn = this.btnItalic?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'underline':\r\n btn = this.btnUnderline?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'align-center':\r\n btn = this.btnAlignCenter?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'align-right':\r\n btn = this.btnAlignRight?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'link':\r\n btn = this.btnLink?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'ul':\r\n btn = this.btnUl?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'ol':\r\n btn = this.btnOl?.nativeElement;\r\n btn?.click();\r\n break;\r\n case 'image':\r\n btn = this.btnImage?.nativeElement;\r\n btn?.click();\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n currentLength(): number {\r\n return this.value?.length || 0;\r\n }\r\n\r\n hideDivider(name: string) {\r\n const linkOrImage = this.config?.toolbar?.image || this.config?.toolbar?.link;\r\n const lists = this.config?.toolbar?.bulletList || this.config?.toolbar?.orderedList;\r\n const typos = this.config?.toolbar?.bold || this.config?.toolbar?.italic || this.config?.toolbar?.underline;\r\n const textAlign = this.config?.toolbar?.alignCenter || this.config?.toolbar?.alignRight;\r\n switch (name) {\r\n case 'typo':\r\n return !typos || (!textAlign && !linkOrImage && !lists);\r\n case 'text-align':\r\n return !textAlign || (!linkOrImage && !lists);\r\n case 'lists':\r\n return !lists || !linkOrImage;\r\n case 'image':\r\n return !this.config?.toolbar?.image || !this.config?.toolbar.link;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private setEditorLabel() {\r\n const editorDiv = this.elementRef.nativeElement.querySelector('.ql-editor');\r\n this.renderer.setAttribute(editorDiv, 'role', 'textbox');\r\n this.renderer.setAttribute(editorDiv, 'aria-labelledby', `editor-label-${this.id}`);\r\n this.renderer.setAttribute(editorDiv, 'aria-multiline', 'true');\r\n }\r\n\r\n private handle() {\r\n this.setReadOnlyState();\r\n this.setDisabledState();\r\n }\r\n\r\n private addWhitespaceMatcher() {\r\n // set up a matcher that replaces placeholder ###tab### with \\t in delta again\r\n this.quillEditor.clipboard.addMatcher('P', (_node, delta) => {\r\n let str = JSON.stringify(delta);\r\n str = str.replace(/###tab###/g, '\\\\t');\r\n delta = JSON.parse(str);\r\n return delta;\r\n });\r\n }\r\n\r\n private addImageMatcher() {\r\n // set up a matcher that does allow/disallow to paste images corresponding to config settings\r\n this.quillEditor.clipboard.addMatcher('IMG', (_node, delta) => {\r\n // allowed, passthru delta\r\n if (this.config?.toolbar?.image === true) {\r\n return delta;\r\n }\r\n // not allowed, remove image by setting up a new delta\r\n return new Delta().insert('');\r\n });\r\n }\r\n\r\n private handleWhitespace(value: string): string {\r\n // set a placeholder for tab entity to avoid that quill removes it\r\n return value.replace(/&#9;/gi, '###tab###');\r\n }\r\n}\r\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 @if (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 }\n @if (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 }\n @if (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 }\n\n @if (!hideDivider('typo')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-text-align-center\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (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=\"fng-icon-svg-text-align-right\" [class.fng-gray]=\"disabled\"></i>\n </button>\n }\n\n @if (!hideDivider('text-align')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-list-view\"></i>\n </button>\n }\n @if (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=\"fng-icon-svg-enumeration\"></i>\n </button>\n }\n\n @if (!hideDivider('lists')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-image\"></i>\n </button>\n <button type=\"button\" #btnImage class=\"ql-image fwe-d-none\" aria-hidden=\"true\"></button>\n }\n\n @if (!hideDivider('image')) {\n <div class=\"fng-divider-y fwe-mx-4\"></div>\n }\n\n @if (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=\"fng-icon-svg-link\"></i>\n </button>\n <button type=\"button\" #btnLink class=\"ql-link fwe-d-none\" aria-hidden=\"true\"></button>\n }\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 @if (hint) {\n <span class=\"fng-text-editor-info\">{{ hint }}</span>\n }\n @if (error) {\n <span class=\"fng-text-editor-invalid\">{{ error }}</span>\n }\n @if (maxLength > 0 && value != null) {\n <span class=\"fwe-input-text-count\">{{ currentLength() }} / {{ maxLength }}</span>\n }\n</label>\n","import { NgModule } from '@angular/core';\r\nimport { FngCheckboxComponent } from './checkbox/checkbox.component';\r\nimport { FngColorIndicatorComponent } from './color-indicator/color-indicator.component';\r\nimport { FngColorPickerComponent } from './color-picker/color-picker.component';\r\nimport { FngTextInputComponent } from './text-input/text-input.component';\r\nimport { FngTimePickerDropdownComponent } from './time-picker/time-picker-dropdown/time-picker-dropdown.component';\r\nimport { FngTimePickerComponent } from './time-picker/time-picker.component';\r\nimport { FngDatePickerComponent } from './date-picker/date-picker.component';\r\nimport { FngDateRangePickerComponent } from './date-range-picker/date-range-picker.component';\r\nimport { FngRadioComponent, FngRadioGroupDirective } from './radio/radio.component';\r\nimport { FngSegmentComponent } from './segment/segment.component';\r\nimport { FngSegmentControlComponent } from './segment/segment-control/segment-control.component';\r\nimport { FngSelectOptionComponent } from './select/select-option/select-option.component';\r\nimport { FngSelectComponent } from './select/select.component';\r\nimport { FngSliderComponent } from './slider/slider.component';\r\nimport { FngSwitchComponent } from './switch/switch.component';\r\nimport { FngTextAreaComponent } from './text-area/text-area.component';\r\nimport { FngTextEditorComponent } from './text-editor/text-editor.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FngCheckboxComponent,\r\n FngColorIndicatorComponent,\r\n FngColorPickerComponent,\r\n FngTextInputComponent,\r\n FngTimePickerDropdownComponent,\r\n FngTimePickerComponent,\r\n FngDatePickerComponent,\r\n FngDateRangePickerComponent,\r\n FngRadioGroupDirective,\r\n FngRadioComponent,\r\n FngSegmentComponent,\r\n FngSegmentControlComponent,\r\n FngSelectOptionComponent,\r\n FngSelectComponent,\r\n FngSliderComponent,\r\n FngSwitchComponent,\r\n FngTextAreaComponent,\r\n FngTextEditorComponent\r\n ],\r\n exports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n FngCheckboxComponent,\r\n FngColorIndicatorComponent,\r\n FngColorPickerComponent,\r\n FngTextInputComponent,\r\n FngTimePickerDropdownComponent,\r\n FngTimePickerComponent,\r\n FngDatePickerComponent,\r\n FngDateRangePickerComponent,\r\n FngRadioGroupDirective,\r\n FngRadioComponent,\r\n FngSegmentComponent,\r\n FngSegmentControlComponent,\r\n FngSelectOptionComponent,\r\n FngSelectComponent,\r\n FngSliderComponent,\r\n FngSwitchComponent,\r\n FngTextAreaComponent,\r\n FngTextEditorComponent\r\n ]\r\n})\r\nexport class FestoAngularFormsModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { FestoAngularComponentsModule } from './components/components.module';\r\nimport { FestoAngularFormsModule } from './forms/forms.module';\r\nimport { FngSafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { FestoAngularModalsModule } from './modals/modals.module';\r\nimport { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule],\r\n exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule]\r\n})\r\nexport class FestoAngularModule {}\r\n","/*\r\n * Public API Surface of angular\r\n */\r\n\r\nexport * from './lib/components/accordion/index';\r\nexport * from './lib/components/breadcrumb/breadcrumb.component';\r\nexport * from './lib/components/buttons/button/button.component';\r\nexport * from './lib/components/buttons/link-button/link-button.component';\r\nexport * from './lib/components/chips/chip-container/chip-container.component';\r\nexport * from './lib/components/chips/chip/chip.component';\r\nexport * from './lib/components/components.module';\r\nexport * from './lib/components/loading-indicator/loading-indicator.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component';\r\nexport * from './lib/components/mobile-flyout/mobile-flyout.component';\r\nexport * from './lib/components/pagination/pagination.component';\r\nexport * from './lib/components/popovers/legend/legend.component';\r\nexport * from './lib/components/popovers/legend/legend.directive';\r\nexport * from './lib/components/popovers/popover-content/popover-content.component';\r\nexport * from './lib/components/popovers/popover-content/popover-content.directive';\r\nexport * from './lib/components/popovers/popover-menu/popover-menu.component';\r\nexport * from './lib/components/popovers/popover.models';\r\nexport * from './lib/components/popovers/popover.service';\r\nexport * from './lib/components/popovers/popover/popover.component';\r\nexport * from './lib/components/popovers/tooltip/tooltip.directive';\r\nexport * from './lib/components/progress/progress.component';\r\nexport * from './lib/components/scroll/scrollable.directive';\r\nexport * from './lib/components/search-input/search-input.component';\r\nexport * from './lib/components/snackbar/snackbar-container.component';\r\nexport * from './lib/components/snackbar/snackbar-container.directive';\r\nexport * from './lib/components/snackbar/snackbar.module';\r\nexport * from './lib/components/snackbar/snackbar.service';\r\nexport * from './lib/components/stepper-horizontal/step-horizontal/step-horizontal.component';\r\nexport * from './lib/components/stepper-horizontal/stepper-horizontal.component';\r\nexport * from './lib/components/stepper-vertical/step-vertical/step-vertical.component';\r\nexport * from './lib/components/stepper-vertical/stepper-vertical.component';\r\nexport * from './lib/components/table-header-cell/table-header-cell.directive';\r\nexport * from './lib/components/tabs/tab-pane/tab-pane.component';\r\nexport * from './lib/components/tabs/tabs.component';\r\nexport * from './lib/components/overlay/overlay-outlet.directive';\r\nexport * from './lib/components/overlay/overlay-content/overlay-content.component';\r\n\r\nexport * from './lib/modals/alert/alert.component';\r\nexport * from './lib/modals/index';\r\nexport * from './lib/modals/modal.service';\r\nexport * from './lib/modals/modals.module';\r\n\r\nexport * from './lib/components/bottom-sheet/bottom-sheet.component';\r\nexport * from './lib/components/sidebar-overlay/sidebar-overlay.component';\r\nexport * from './lib/forms/checkbox/checkbox.component';\r\nexport * from './lib/forms/color-indicator/color-indicator.component';\r\nexport * from './lib/forms/color-picker/color-picker.component';\r\nexport * from './lib/forms/date-picker/date-picker.component';\r\nexport * from './lib/forms/date-range-picker/date-range-picker.component';\r\nexport * from './lib/forms/forms.module';\r\nexport * from './lib/forms/radio/radio.component';\r\nexport * from './lib/forms/segment/segment-control/segment-control.component';\r\nexport * from './lib/forms/segment/segment.component';\r\nexport * from './lib/forms/select/select-option/select-option.component';\r\nexport * from './lib/forms/select/select.component';\r\nexport * from './lib/forms/slider/slider.component';\r\nexport * from './lib/forms/switch/switch.component';\r\nexport * from './lib/forms/text-area/text-area.component';\r\nexport * from './lib/forms/text-editor/text-editor.component';\r\nexport * from './lib/forms/text-input/text-input.component';\r\nexport * from './lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component';\r\nexport * from './lib/forms/time-picker/time-picker.component';\r\n\r\nexport * from './lib/directives/click-outside.directive';\r\n\r\nexport * from './lib/pipes/safe-html.pipe';\r\n\r\nexport * from './lib/festo-angular.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.PopoverRef","i2","i1.FngPopoverService","i1.FngSnackbarService","nextUniqueId","i3","i1.FngUniqueSelectionDispatcher"],"mappings":"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"}