{"version":3,"file":"fundamental-ngx-core-micro-process-flow.mjs","sources":["../../../../libs/core/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.ts","../../../../libs/core/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.html","../../../../libs/core/micro-process-flow/injection-tokens.ts","../../../../libs/core/micro-process-flow/micro-process-flow-focusable-item.directive.ts","../../../../libs/core/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.ts","../../../../libs/core/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.html","../../../../libs/core/micro-process-flow/components/micro-process-flow/micro-process-flow.component.ts","../../../../libs/core/micro-process-flow/components/micro-process-flow/micro-process-flow.component.html","../../../../libs/core/micro-process-flow/micro-process-flow-intermediary-item.directive.ts","../../../../libs/core/micro-process-flow/micro-process-flow.module.ts","../../../../libs/core/micro-process-flow/fundamental-ngx-core-micro-process-flow.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { IconComponent, IconFont } from '@fundamental-ngx/core/icon';\n\n@Component({\n    selector: 'fd-micro-process-flow-icon',\n    templateUrl: './micro-process-flow-icon.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-micro-process-flow__icon-container'\n    },\n    imports: [IconComponent]\n})\nexport class MicroProcessFlowIconComponent {\n    /** The icon name to display. See the icon page for the list of icons\n     * here: https://sap.github.io/fundamental-ngx/icon\n     */\n    @Input() glyph: string;\n\n    /**\n     * The icon font\n     * Options include: 'SAP-icons', 'BusinessSuiteInAppSymbols' and 'SAP-icons-TNT'\n     */\n    @Input() font: IconFont = 'SAP-icons';\n\n    /** user's custom classes */\n    @Input()\n    class: string;\n\n    /** Aria-label for Icon. */\n    @Input()\n    ariaLabel: Nullable<string>;\n}\n","<fd-icon\n    class=\"fd-micro-process-flow__icon\"\n    [ariaLabel]=\"ariaLabel\"\n    [glyph]=\"glyph\"\n    [class]=\"class\"\n    [font]=\"font\"\n></fd-icon>\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface MicroProcessFlowComponentInterface {\n    canItemsReceiveFocus: Subject<boolean>;\n    setFocusedElementIndex(elm: HTMLElement): void;\n}\n\nexport const MICRO_PROCESS_FLOW = new InjectionToken<MicroProcessFlowComponentInterface>(\n    'Micro process flow component dependency'\n);\n","import { Directive, ElementRef, HostListener, Inject, OnInit, Optional } from '@angular/core';\nimport { MICRO_PROCESS_FLOW, MicroProcessFlowComponentInterface } from './injection-tokens';\n\n@Directive({\n    selector: '[fdMicroProcessFlowFocusableItem], [fd-micro-process-flow-focusable-item]',\n    host: {\n        class: 'fd-micro-process-flow__focusable-item'\n    },\n    standalone: true\n})\nexport class MicroProcessFlowFocusableItemDirective implements OnInit {\n    /** @hidden */\n    constructor(\n        public elRef: ElementRef<HTMLElement>,\n        @Optional() @Inject(MICRO_PROCESS_FLOW) private _microProcessFlow: MicroProcessFlowComponentInterface\n    ) {}\n\n    /**\n     * @hidden\n     * Handler for focus events\n     */\n    @HostListener('focus')\n    onFocus(): void {\n        this._microProcessFlow?.setFocusedElementIndex(this.elRef.nativeElement);\n        this._microProcessFlow?.canItemsReceiveFocus.next(false);\n    }\n\n    /** @hidden */\n    @HostListener('blur')\n    onBlur(): void {\n        this._microProcessFlow?.canItemsReceiveFocus.next(true);\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        this.setFocusable();\n    }\n\n    /** Sets ability to focus on the element or not. */\n    setFocusable(focusable = false): void {\n        this.elRef.nativeElement.setAttribute('tabindex', focusable ? '0' : '-1');\n    }\n\n    /** Focuses on the element without scrolling it to the viewport */\n    focus(options: FocusOptions): void {\n        this.elRef.nativeElement.focus(options);\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ContentChild,\n    ElementRef,\n    Input,\n    ViewEncapsulation\n} from '@angular/core';\nimport { MicroProcessFlowFocusableItemDirective } from '../../micro-process-flow-focusable-item.directive';\nimport { MicroProcessFlowItemType } from '../../types';\n\n@Component({\n    selector: 'fd-micro-process-flow-item',\n    templateUrl: './micro-process-flow-item.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-micro-process-flow__item',\n        '[class.fd-micro-process-flow__item--positive]': 'state === \"positive\"',\n        '[class.fd-micro-process-flow__item--critical]': 'state === \"critical\"',\n        '[class.fd-micro-process-flow__item--negative]': 'state === \"negative\"',\n        '[class.fd-micro-process-flow__item--information]': 'state === \"information\"'\n    },\n    styles: [\n        `\n            fd-micro-process-flow-item .fd-info-label__text {\n                white-space: nowrap;\n            }\n        `\n    ],\n    imports: []\n})\nexport class MicroProcessFlowItemComponent {\n    /** Item state */\n    @Input()\n    state: MicroProcessFlowItemType = 'none';\n\n    /** Whether or not display connector line */\n    @Input()\n    intermediate = false;\n\n    /** Element that can receive focus. */\n    @ContentChild(MicroProcessFlowFocusableItemDirective)\n    focusableElement: MicroProcessFlowFocusableItemDirective;\n\n    /** @hidden */\n    _lastItem = false;\n\n    /** @hidden */\n    constructor(\n        private _cd: ChangeDetectorRef,\n        public elRef: ElementRef\n    ) {}\n\n    /**\n     * @param value Is current item the last one\n     */\n    setLastItem(value: boolean): void {\n        if (value !== this._lastItem) {\n            this._lastItem = value;\n            this._cd.detectChanges();\n        }\n    }\n}\n","<div class=\"fd-micro-process-flow__content\">\n    <div class=\"fd-micro-process-flow__content-wrapper\">\n        <ng-content></ng-content>\n    </div>\n    @if (!_lastItem) {\n        <div\n            class=\"fd-micro-process-flow__connector\"\n            [class.fd-micro-process-flow__connector--intermediate]=\"intermediate\"\n        >\n            <ng-content select=\"[fd-micro-process-flow-intermediary-item]\"></ng-content>\n        </div>\n    }\n</div>\n","import { ENTER, LEFT_ARROW, RIGHT_ARROW, SPACE } from '@angular/cdk/keycodes';\n\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    ContentChildren,\n    effect,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    QueryList,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityObserver, contentDensityObserverProviders } from '@fundamental-ngx/core/content-density';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, startWith } from 'rxjs/operators';\nimport { MICRO_PROCESS_FLOW } from '../../injection-tokens';\nimport { MicroProcessFlowFocusableItemDirective } from '../../micro-process-flow-focusable-item.directive';\nimport { MicroProcessFlowItemComponent } from '../micro-process-flow-item/micro-process-flow-item.component';\n\n@Component({\n    selector: 'fd-micro-process-flow',\n    templateUrl: './micro-process-flow.component.html',\n    styleUrl: './micro-process-flow.component.scss',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'fd-micro-process-flow',\n        '[class.fd-micro-process-flow--independent-steps]': 'independentSteps',\n        '(keydown)': 'handleKeyboardEvent($event)'\n    },\n    providers: [\n        {\n            provide: MICRO_PROCESS_FLOW,\n            useExisting: MicroProcessFlowComponent\n        },\n        contentDensityObserverProviders()\n    ],\n    imports: []\n})\nexport class MicroProcessFlowComponent implements OnInit, OnDestroy, AfterViewInit {\n    /** Should connector between items be hidden. */\n    @Input()\n    independentSteps = false;\n\n    /** Pagination transition speed in milliseconds */\n    @Input()\n    transitionSpeed = 300;\n\n    /** Pagination transition effect */\n    @Input()\n    transitionTimingFunction = 'ease';\n\n    /** Micro process flow items. */\n    @ContentChildren(MicroProcessFlowItemComponent)\n    items: QueryList<MicroProcessFlowItemComponent>;\n\n    /** Micro process flow items. */\n    @ContentChildren(MicroProcessFlowFocusableItemDirective, { descendants: true })\n    focusableItems: QueryList<MicroProcessFlowFocusableItemDirective>;\n\n    /** @hidden */\n    @ViewChild('wrapperContainer')\n    private _wrapperContainer: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('container')\n    private _container: ElementRef<HTMLElement>;\n\n    /** @hidden */\n    @ViewChild('goNextButton')\n    private _goNextButton: ElementRef<HTMLElement>;\n\n    /**\n     * Previous items outside the viewport.\n     */\n    previousItemsCount = 0;\n\n    /**\n     * Next items outside the viewport.\n     */\n    nextItemsCount = 0;\n\n    /** Indicating whether or not any element is focused */\n    canItemsReceiveFocus = new Subject<boolean>();\n\n    /** Should show next button. */\n    get showNextButton(): boolean {\n        return this.nextItemsCount > 0;\n    }\n\n    /** Should show previous button. */\n    get showPreviousButton(): boolean {\n        return this.previousItemsCount > 0;\n    }\n\n    /** @hidden */\n    private readonly _isRtl = computed(() => this._rtlService?.rtl() ?? false);\n\n    /** @hidden */\n    private get _paginationDirection(): number {\n        return this._isRtl() ? 1 : -1;\n    }\n\n    /** @hidden */\n    private _subscriptions = new Subscription();\n\n    /** @hidden */\n    private _navigationKeys = [LEFT_ARROW, RIGHT_ARROW];\n\n    /** @hidden */\n    private _actionKeys = [SPACE, ENTER];\n\n    /** @hidden */\n    private _focusedElementIndex = -1;\n\n    /** @hidden */\n    private readonly _cd = inject(ChangeDetectorRef);\n\n    /** @hidden */\n    private readonly _rtlService = inject(RtlService, { optional: true });\n\n    /** @hidden */\n    constructor() {\n        inject(ContentDensityObserver).subscribe();\n\n        // React to RTL changes - re-paginate to adjust scroll direction\n        effect(() => {\n            const rtl = this._rtlService?.rtl();\n\n            // Only re-paginate when RTL service exists and content is scrolled\n            if (rtl !== undefined && this.showPreviousButton) {\n                this._paginate(0);\n            }\n        });\n    }\n\n    /** @hidden */\n    handleKeyboardEvent(event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, this._navigationKeys)) {\n            const isRightKey = KeyUtil.isKeyCode(event, RIGHT_ARROW);\n            const direction = isRightKey ? 1 : -1;\n            event.stopImmediatePropagation();\n\n            const elementIndexToScroll = this._getPreviousItemsCount() + direction;\n            const elementExists = this.items.get(elementIndexToScroll);\n\n            if (!elementExists) {\n                return;\n            }\n\n            this.previousItemsCount = 0;\n\n            this._paginate(elementIndexToScroll);\n\n            // Force browset not to scroll to the element since it's done with pagination function.\n            this.items.get(this._getPreviousItemsCount())?.focusableElement?.focus({\n                preventScroll: true\n            });\n        }\n    }\n\n    /** @hidden */\n    ngOnInit(): void {\n        // If any element is currently focused, disable ability to navigate bentween items with tab.\n        this._subscriptions.add(\n            this.canItemsReceiveFocus.pipe(debounceTime(10)).subscribe((value) => {\n                if (value) {\n                    this._setFocusableVisibleItems();\n                } else {\n                    this._disableFocusableItems();\n                }\n            })\n        );\n    }\n\n    /** @hidden */\n    ngAfterViewInit(): void {\n        this.listenOnItemsChange();\n    }\n\n    /** @hidden */\n    ngOnDestroy(): void {\n        this._subscriptions.unsubscribe();\n    }\n\n    /** Listens on items change and checks if navigation buttons should be visible. */\n    listenOnItemsChange(): void {\n        this._subscriptions.add(\n            this.items.changes.pipe(startWith(0)).subscribe(() => {\n                this.items.forEach((item) => {\n                    item.setLastItem(false);\n                });\n\n                this.items.last?.setLastItem(true);\n                this._setNavigationButtons();\n                this._paginate(0);\n            })\n        );\n    }\n\n    /** Scrolls to the next item. */\n    goNext(): void {\n        this._paginate();\n    }\n\n    /** Scrolls to the previous item. */\n    goBack(): void {\n        this._paginate(-1);\n    }\n\n    /**\n     * Sets last focused element index.\n     * @param elm Focused HTML element.\n     */\n    setFocusedElementIndex(elm: HTMLElement): void {\n        this._focusedElementIndex = this.focusableItems.toArray().findIndex((item) => item.elRef.nativeElement === elm);\n    }\n\n    /**\n     * Navigates to a specific page when the user presses 'Space' or 'Enter' key.\n     * @param offset How much items needs to be scrolled relatively to the hidden previous items.\n     * @param event The keyboard event.\n     */\n    onKeypressHandler(offset: number, event: KeyboardEvent): void {\n        if (KeyUtil.isKeyCode(event, this._actionKeys)) {\n            event.preventDefault();\n            this._paginate(offset);\n        }\n    }\n\n    /**\n     * Checks if navigation buttons should be visible depending on the amount of items\n     * and current pagination offset.\n     */\n    private _setNavigationButtons(): void {\n        if (this._container === undefined) {\n            return;\n        }\n\n        const containerWidth = this._container.nativeElement.offsetWidth;\n        const itemsWidth = this._wrapperContainer.nativeElement.offsetWidth;\n        const nextButtonWidth = this._goNextButton?.nativeElement.offsetWidth || 0;\n\n        if (itemsWidth < containerWidth) {\n            return;\n        }\n\n        // Skip previously shown items out of the calculation.\n        const itemsToDisplay = this.items\n            .toArray()\n            .slice(this.previousItemsCount)\n            .map((i) => i.elRef);\n\n        // Check if all items can be fitted inside the container if we remove 'next' button.\n        if (this.previousItemsCount > 0) {\n            const remainingWidth = itemsToDisplay.reduce((width, elm) => elm.nativeElement.offsetWidth + width, 0);\n\n            if (remainingWidth <= nextButtonWidth + containerWidth) {\n                this.nextItemsCount = 0;\n                this._cd.detectChanges();\n                return;\n            }\n        }\n\n        this._setNextItemsCount(itemsToDisplay, containerWidth);\n        this._cd.detectChanges();\n    }\n\n    /**\n     * Calculate how many items are out of the viewport.\n     * @param itemsToDisplay Array of html elements that needs to be shown.\n     * @param containerWidth Width of the parent container to calculate amount of items possible to fit.\n     */\n    private _setNextItemsCount(itemsToDisplay: ElementRef<HTMLElement>[], containerWidth: number): void {\n        let visibleItemsWidth = 0;\n        let newVisibleItemsWidth = 0;\n\n        for (const [index, item] of itemsToDisplay.entries()) {\n            newVisibleItemsWidth = visibleItemsWidth + item.nativeElement.offsetWidth;\n\n            if (newVisibleItemsWidth <= containerWidth) {\n                visibleItemsWidth = newVisibleItemsWidth;\n            } else {\n                this.nextItemsCount = itemsToDisplay.length - index;\n                break;\n            }\n        }\n    }\n\n    /**\n     * @hidden\n     * Performs scrolling to the defined element based on the offset argument.\n     * @param offset How much items needs to be scrolled relatively to the hidden previous items.\n     */\n    private _paginate(offset: number = 1): void {\n        if (this.items === undefined || this.items.length === 0) {\n            return;\n        }\n\n        this.previousItemsCount = this._focusedElementIndex = this.previousItemsCount + offset;\n\n        // We need to set prev button first.\n        this._setNavigationButtons();\n        this._setFocusableVisibleItems();\n\n        const currentItem = this.items.get(this.previousItemsCount);\n        const containerWidth = this._container.nativeElement.offsetWidth;\n        const wrapperContainerWidth = this._wrapperContainer.nativeElement.offsetWidth;\n\n        if (!currentItem || containerWidth >= wrapperContainerWidth) {\n            // Cancel pagination and revert previous items count back.\n            this.previousItemsCount = this.previousItemsCount - offset;\n        }\n\n        const elmOffset = this._getPreviousItemsWidth();\n\n        this._wrapperContainer.nativeElement.style.transform = `translateX(${elmOffset * this._paginationDirection}px)`;\n\n        this._setNavigationButtons();\n        this._setFocusableVisibleItems();\n    }\n\n    /**\n     * @hidden\n     * Calculates total width of previously shown items.\n     * @returns {Number} total width of previously shown items.\n     */\n    private _getPreviousItemsWidth(): number {\n        return this.items\n            .toArray()\n            .slice(0, this.previousItemsCount)\n            .reduce((width, item) => item.elRef.nativeElement.offsetWidth + width, 0);\n    }\n\n    /** @hidden */\n    private _disableFocusableItems(): void {\n        this.items.forEach((item) => item.focusableElement?.setFocusable(false));\n    }\n\n    /** @hidden */\n    private _setFocusableVisibleItems(): void {\n        this._disableFocusableItems();\n\n        const containerWidth = this._container.nativeElement.offsetWidth;\n\n        const itemsToDisplay = this.items.toArray().slice(this.previousItemsCount);\n\n        let visibleItemsWidth = 0;\n        let newVisibleItemsWidth = 0;\n\n        for (const item of itemsToDisplay) {\n            newVisibleItemsWidth = visibleItemsWidth + item.elRef.nativeElement.offsetWidth;\n\n            if (newVisibleItemsWidth <= containerWidth) {\n                visibleItemsWidth = newVisibleItemsWidth;\n                item.focusableElement?.setFocusable(true);\n            } else {\n                break;\n            }\n        }\n    }\n\n    /** @hidden */\n    private _getPreviousItemsCount(): number {\n        return this._focusedElementIndex === -1 ? this.previousItemsCount : this._focusedElementIndex;\n    }\n}\n","@if (showPreviousButton) {\n    <a\n        tabindex=\"0\"\n        class=\"fd-micro-process-flow__link-previous\"\n        role=\"button\"\n        type=\"button\"\n        (click)=\"goBack()\"\n        (keypress)=\"onKeypressHandler(-1, $event)\"\n    >\n        {{ previousItemsCount }}\n    </a>\n}\n<div class=\"fd-micro-process-flow__overflow-container\" #container>\n    <div\n        class=\"fd-micro-process-flow__wrapper\"\n        #wrapperContainer\n        [style.transition-duration]=\"transitionSpeed + 'ms'\"\n        [style.transition-timing-function]=\"transitionTimingFunction\"\n    >\n        <ng-content select=\"fd-micro-process-flow-item\"></ng-content>\n    </div>\n</div>\n@if (showNextButton) {\n    <a\n        tabindex=\"0\"\n        class=\"fd-micro-process-flow__link-next\"\n        role=\"button\"\n        type=\"button\"\n        (click)=\"goNext()\"\n        (keypress)=\"onKeypressHandler(1, $event)\"\n        #goNextButton\n    >\n        {{ nextItemsCount }}\n    </a>\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdMicroProcessFlowIntermediaryItem], [fd-micro-process-flow-intermediary-item]',\n    host: {\n        class: 'fd-micro-process-flow__intermediary-item'\n    },\n    standalone: true\n})\nexport class MicroProcessFlowIntermediaryItemDirective {}\n","import { NgModule } from '@angular/core';\nimport { MicroProcessFlowIconComponent } from './components/micro-process-flow-icon/micro-process-flow-icon.component';\nimport { MicroProcessFlowItemComponent } from './components/micro-process-flow-item/micro-process-flow-item.component';\nimport { MicroProcessFlowComponent } from './components/micro-process-flow/micro-process-flow.component';\nimport { MicroProcessFlowFocusableItemDirective } from './micro-process-flow-focusable-item.directive';\nimport { MicroProcessFlowIntermediaryItemDirective } from './micro-process-flow-intermediary-item.directive';\n\nconst components = [\n    MicroProcessFlowComponent,\n    MicroProcessFlowItemComponent,\n    MicroProcessFlowIconComponent,\n    MicroProcessFlowIntermediaryItemDirective,\n    MicroProcessFlowFocusableItemDirective\n];\n\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [...components],\n    exports: [...components]\n})\nexport class MicroProcessFlowModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}