{"version":3,"file":"fundamental-ngx-platform-wizard-generator.mjs","sources":["../../../../libs/platform/wizard-generator/wizard-generator.service.ts","../../../../libs/platform/wizard-generator/base-wizard-generator.ts","../../../../libs/platform/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.ts","../../../../libs/platform/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.html","../../../../libs/platform/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.ts","../../../../libs/platform/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.html","../../../../libs/platform/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.ts","../../../../libs/platform/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.html","../../../../libs/platform/wizard-generator/components/wizard-body/wizard-body.component.ts","../../../../libs/platform/wizard-generator/components/wizard-body/wizard-body.component.html","../../../../libs/platform/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.ts","../../../../libs/platform/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.html","../../../../libs/platform/wizard-generator/directives/wizard-generator-finish-button.directive.ts","../../../../libs/platform/wizard-generator/directives/wizard-generator-go-next-button.directive.ts","../../../../libs/platform/wizard-generator/directives/wizard-generator-review-button.directive.ts","../../../../libs/platform/wizard-generator/directives/wizard-generator-summary-step.directive.ts","../../../../libs/platform/wizard-generator/components/wizard-generator/wizard-generator.component.ts","../../../../libs/platform/wizard-generator/components/wizard-generator/wizard-generator.component.html","../../../../libs/platform/wizard-generator/wizard-dialog-generator.service.ts","../../../../libs/platform/wizard-generator/wizard-generator.module.ts","../../../../libs/platform/wizard-generator/fundamental-ngx-platform-wizard-generator.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { concat, mergeWith, uniq } from '@fundamental-ngx/cdk/utils';\nimport { BehaviorSubject, Observable, Subject, of } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { isFunction, selectStrategy } from '@fundamental-ngx/cdk/utils';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { WizardGeneratorFormGroup, WizardGeneratorFormItem } from './interfaces/wizard-generator-form-group.interface';\nimport {\n    WizardGeneratorDependencyFields,\n    WizardGeneratorFormsValue,\n    WizardStepSubmittedForms,\n    WizardVisibleSteps\n} from './interfaces/wizard-generator-forms.interface';\nimport { PreparedWizardGeneratorItem, WizardGeneratorItem } from './interfaces/wizard-generator-item.interface';\nimport { WizardGeneratorStep } from './interfaces/wizard-step.interface';\n\nexport type StepsComponents = Map<string, WizardGeneratorStep>;\n\nexport enum WizardGeneratorRefreshStrategy {\n    REFRESH_STEP_VISIBILITY = 'refreshStepVisibility',\n    REVALIDATE_STEP_FORMS = 'revalidateStepForms',\n    REFRESH_FORM_VISIBILITY = 'refreshFormVisibility'\n}\n\nexport interface DependencySteps {\n    /** Step ID */\n    [key: string]: {\n        /** Form ID with array of form control id's */\n        [key: string]: {\n            [key in WizardGeneratorRefreshStrategy]?: string[];\n        };\n    };\n}\n\nexport interface StepDependencyFields {\n    /** Dependent step */\n    [key: string]: DependencySteps;\n}\n\n/**\n * @description Helper service to keep all transformations and data in one place.\n */\n@Injectable()\nexport class WizardGeneratorService {\n    /** @hidden */\n    items: PreparedWizardGeneratorItem[];\n\n    /**\n     * @description Visible steps components\n     */\n    stepsComponents: StepsComponents = new Map();\n\n    /**\n     * @description Object with steps that are dependencies for another steps.\n     */\n    dependencySteps: StepDependencyFields = {};\n\n    /**\n     * @description Whether to append the step to the wizard. If false, each step will be displayed on a different page.\n     * Default is true.\n     */\n    appendToWizard = true;\n\n    /** @hidden */\n    _shouldRedirectToSummary = false;\n\n    /**\n     * @description Steps that are visible to the user.\n     */\n    public visibleWizardSteps: PreparedWizardGeneratorItem[] = [];\n\n    /** @hidden */\n    private _visibleWizardSteps$ = new Subject<PreparedWizardGeneratorItem[]>();\n\n    /** @hidden */\n    private _appendToWizard$ = new BehaviorSubject<boolean>(this.appendToWizard);\n\n    /** @hidden */\n    private _stepsComponents$ = new Subject<StepsComponents>();\n\n    /** @hidden */\n    private _stepsOrderChanged$ = new Subject<number>();\n\n    /** @hidden */\n    private _nextStepIndex$ = new BehaviorSubject<number>(1);\n\n    /** @hidden */\n    private _submittedFormRawValues: WizardGeneratorFormsValue = {};\n\n    /** @hidden */\n    private _wizardStepIds: string[] = [];\n\n    /** @hidden */\n    constructor(private _formGeneratorService: FormGeneratorService) {}\n\n    /**\n     * @description Returns current step ID in Wizard.\n     * @returns {string | undefined} Current step ID.\n     */\n    getCurrentStepId(): string | undefined {\n        const currentStepId = this.visibleWizardSteps?.find((i) => i.status === 'current');\n\n        return currentStepId?.id;\n    }\n\n    /**\n     * @description Returns current step index.\n     * @returns {number} Index of the current step in array of Wizard steps.\n     */\n    getCurrentStepIndex(): number {\n        const currentStepId = this.getCurrentStepId();\n        return this.getStepIndex(currentStepId);\n    }\n\n    /**\n     * Searches for the index of the step based on it's ID\n     * @param stepId Step ID\n     * @returns Index in the array of steps for defined step ID.\n     */\n    getStepIndex(stepId?: string): number {\n        const stepIndex = this.visibleWizardSteps?.findIndex((i) => i.id === stepId);\n        return stepIndex > -1 ? stepIndex : 0;\n    }\n\n    /**\n     * @description Sends command to submit all forms inside the step.\n     * @param stepId Step ID for which forms need's to be submitted.\n     * @param skipIfUntouched Skip validation if form haven't been touched.\n     * @returns {Observable<WizardStepSubmittedForms>} Observable, which will emit\n     * when all visible forms in step are submitted.\n     */\n    submitStepForms(stepId?: string, skipIfUntouched = false): Observable<WizardStepSubmittedForms | null> {\n        if (!stepId) {\n            return of(null);\n        }\n\n        const step = this.stepsComponents.get(stepId);\n\n        if (!step) {\n            return of(null);\n        }\n\n        return step.submitForms(skipIfUntouched).pipe(\n            take(1),\n            map((result) => {\n                if (result) {\n                    this._submittedFormRawValues[stepId] = result;\n                }\n                return result;\n            })\n        );\n    }\n\n    /**\n     * @description Triggers validation for current step forms.\n     * @returns {Observable<boolean>} Observable with validation result.\n     */\n    validateStepForms(skipIfUntouched = false): Observable<boolean> {\n        const currentStepId = this.getCurrentStepId();\n\n        if (!currentStepId) {\n            return of(true);\n        }\n\n        return this.submitStepForms(currentStepId, skipIfUntouched).pipe(\n            map((result) => result === null || Object.values(result).every((r) => r.success))\n        );\n    }\n\n    /**\n     * @description Sets new array of visible steps for Wizard.\n     * @param steps steps that needs to be shown in Wizard.\n     */\n    setVisibleSteps(steps: PreparedWizardGeneratorItem[]): void {\n        this.visibleWizardSteps = steps;\n        this._visibleWizardSteps$.next(steps);\n\n        this.setWizardStepIds(steps.map((s) => s.id));\n    }\n\n    /**\n     * @returns {Observable<PreparedWizardGeneratorItem[]>} Observable, which will emit every time\n     * when array of visible step items has been changed.\n     */\n    getVisibleSteps(): Observable<PreparedWizardGeneratorItem[]> {\n        return this._visibleWizardSteps$.asObservable();\n    }\n\n    /**\n     * @description Runs initial transformation for passed Wizard steps.\n     * @param items All Wizard steps.\n     * @returns {Promise<PreparedWizardGeneratorItem[]>} Array of transformed Wizard steps.\n     */\n    async prepareWizardItems(items: WizardGeneratorItem[]): Promise<PreparedWizardGeneratorItem[]> {\n        let newItems: PreparedWizardGeneratorItem[] = await Promise.all(\n            items.map(async (i, index) => {\n                const item = { ...i };\n                item.status = item.status || 'upcoming';\n                item.title = await this._getFormItemPropertyValue(item, index, 'title');\n                item.name = await this._getFormItemPropertyValue(item, index, 'name');\n                return item as PreparedWizardGeneratorItem;\n            })\n        );\n\n        // Summary step must be the last one in array\n        const summaryStepIndex = newItems.findIndex((i) => i.summary === true);\n\n        if (summaryStepIndex !== -1 && summaryStepIndex !== newItems.length - 1) {\n            newItems.splice(newItems.length - 1, 0, newItems.splice(summaryStepIndex, 1)[0]);\n        }\n\n        // If no current step found, set first as current.\n        if (newItems.findIndex((i) => i.status === 'current') === -1) {\n            newItems[0].status = 'current';\n        }\n\n        newItems = this._setBranchingSteps(newItems);\n\n        this._buildDependencyMap(newItems);\n\n        this.items = newItems;\n        await this.refreshStepVisibility();\n\n        return newItems;\n    }\n\n    /**\n     * @description Runs conditional function for each step to define if step should be shown.\n     */\n    async refreshStepVisibility(): Promise<void> {\n        const formValue = await this.getWizardFormValue();\n\n        const visibleStepIds: WizardVisibleSteps = {};\n\n        for (const item of this.items) {\n            if (!isFunction(item.when)) {\n                visibleStepIds[item.id] = true;\n                continue;\n            }\n\n            const obj = item.when!(this._getCompletedStepIds(), formValue, this._formGeneratorService.forms);\n\n            visibleStepIds[item.id] = await this._getFunctionValue(obj);\n        }\n\n        this.setVisibleSteps(this.items.filter((item) => visibleStepIds[item.id] === true));\n    }\n\n    /**\n     * Checks whether current form group should be visible.\n     * @param formGroup Form Group.\n     */\n    async refreshFormVisibility(formGroup: WizardGeneratorFormGroup): Promise<boolean> {\n        const formValue = await this.getWizardFormValue();\n\n        const obj = formGroup.when?.(this._getCompletedStepIds(), formValue, this._formGeneratorService.forms) ?? true;\n\n        return await this._getFunctionValue(obj);\n    }\n\n    /**\n     * @description Clears array of Wizard steps components.\n     */\n    clearWizardStepComponents(): void {\n        this.stepsComponents.clear();\n        this._stepsComponents$.next(this.stepsComponents);\n    }\n\n    /**\n     * @returns {Observable<StepsComponents>} Observable, which will emit every time\n     * when Set visible steps components has been changed.\n     */\n    trackStepsComponents(): Observable<StepsComponents> {\n        return this._stepsComponents$.asObservable();\n    }\n\n    /**\n     * @description Adds new component to the set of Wizard steps components.\n     * @param component Wizard Step component to add.\n     * @param key Wizard Step ID.\n     */\n    addWizardStepComponent(component: WizardGeneratorStep, key: string): void {\n        this.stepsComponents.set(key, component);\n        this._stepsComponents$.next(this.stepsComponents);\n    }\n\n    /**\n     * @description Removes Component from the set of Wizard steps components.\n     * @param key\n     */\n    removeWizardStepComponent(key: string): void {\n        this.stepsComponents.delete(key);\n        this._stepsComponents$.next(this.stepsComponents);\n    }\n\n    /**\n     * @param step Step ID which includes dependency fields.\n     * @returns Object with forms and their fields that are dependencies for other steps.\n     */\n    getStepDependencyFields(step: string): DependencySteps {\n        return this.dependencySteps[step];\n    }\n\n    /**\n     * Notifies step components to revalidate inner forms.\n     * @param stepIds Step ID's which needs to be revalidated.\n     */\n    notifyStepsToRevalidateForms(stepIds: string[]): void {\n        stepIds.forEach((stepId) => this.stepsComponents.get(stepId)?.updateFormsState());\n    }\n\n    /**\n     * Notifies step components to refresh form groups visibility.\n     * @param stepIds Step ID's which needs to be checked.\n     */\n    async refreshFormsVisibility(stepIds: string[]): Promise<void> {\n        for (const stepId of stepIds) {\n            await this.stepsComponents.get(stepId)?.refreshFormsVisibility();\n        }\n    }\n\n    /**\n     * @param formatted Flag defining whether form value should be formatted by form control\n     * transformers, or return raw value\n     * @returns {WizardGeneratorFormsValue} Wizard form value\n     */\n    async getWizardFormValue(formatted = false): Promise<WizardGeneratorFormsValue> {\n        const wizardFormValue: WizardGeneratorFormsValue = {};\n\n        if (!this.visibleWizardSteps) {\n            return wizardFormValue;\n        }\n\n        for (const item of this.visibleWizardSteps.filter((s) => !s.summary)) {\n            wizardFormValue[item.id] = {};\n\n            const component = this.stepsComponents.get(item.id);\n\n            if (!component) {\n                continue;\n            }\n\n            const forms = component.getVisibleForms();\n\n            for (const form of item?.formGroups ?? []) {\n                if (!forms[form.id]) {\n                    continue;\n                }\n\n                wizardFormValue[item.id][form.id] = formatted\n                    ? await this._formGeneratorService.getFormValue(forms[form.id]?.form)\n                    : this._formGeneratorService._getFormValueWithoutUngrouped(\n                          structuredClone(forms[form.id]?.form.value)\n                      );\n            }\n        }\n\n        return wizardFormValue;\n    }\n\n    /**\n     *\n     * @param stepId Step ID to check.\n     * @returns {Boolean} indicator if step was previously validated and submitted.\n     */\n    stepSubmitted(stepId: string): boolean {\n        return this._submittedFormRawValues[stepId] !== undefined;\n    }\n\n    /**\n     *\n     * @returns {Boolean} if steps are untouched, will return true, if yes - false\n     */\n    isStepsUntouched(): boolean {\n        // eslint-disable-next-line @typescript-eslint/no-unused-vars\n        return [...this.stepsComponents].every(([_, component]) =>\n            component.formGenerators.toArray().every((item) => !item.form.touched)\n        );\n    }\n\n    /**\n     * Reverts wizard to defined step.\n     * @param stepId Step ID to edit\n     */\n    editStep(stepId: string): void {\n        const stepIndex = this.visibleWizardSteps.findIndex((s) => s.id === stepId);\n\n        this.visibleWizardSteps = this.visibleWizardSteps.map((step, index) => {\n            step.status = index === stepIndex ? 'current' : index < stepIndex ? 'completed' : 'upcoming';\n\n            return step;\n        });\n\n        const summaryStepIndex = this.visibleWizardSteps.findIndex((s) => s.summary);\n\n        this._shouldRedirectToSummary = true;\n\n        this._appendToWizard$.next(false);\n\n        this.setVisibleSteps(this.visibleWizardSteps);\n\n        this.setNextStepIndex(summaryStepIndex);\n    }\n\n    /**\n     * Set's current set of step ID's\n     * @param ids step ID's\n     */\n    setWizardStepIds(ids: string[]): void {\n        if (!this._wizardStepIds.every((stepId, index) => ids[index] === stepId)) {\n            const firstChangedStepIndex = this._wizardStepIds.findIndex((stepId, index) => ids[index] !== stepId);\n\n            this._nextStepIndex$.next(firstChangedStepIndex);\n\n            this._stepsOrderChanged$.next(firstChangedStepIndex);\n        }\n\n        this._wizardStepIds = ids;\n    }\n\n    /**\n     * Set next step index.\n     * @param index Next step index.\n     */\n    setNextStepIndex(index: number): void {\n        this._nextStepIndex$.next(index);\n    }\n\n    /**\n     * Returns observable of next step index which emits when index is changed.\n     */\n    trackNextStepIndex(): Observable<number> {\n        return this._nextStepIndex$.asObservable();\n    }\n\n    /**\n     * Returns observable which emits when steps order has been changed.\n     */\n    trackStepsOrder(): Observable<number> {\n        return this._stepsOrderChanged$.asObservable();\n    }\n\n    /**\n     * Stores original 'appendToWizard' input property.\n     * @param value\n     */\n    setOriginalAppendToWizardState(value: boolean): void {\n        this.appendToWizard = value;\n        this._appendToWizard$.next(this.appendToWizard);\n    }\n\n    /**\n     * Resets modified 'appendToWizard' property to original one.\n     */\n    restoreAppendToWizardState(): void {\n        this._appendToWizard$.next(this.appendToWizard);\n    }\n\n    /**\n     * Returns observable which emits when 'appendToWizard' property has been changed.\n     */\n    trackAppendToWizardState(): Observable<boolean> {\n        return this._appendToWizard$.asObservable();\n    }\n\n    /**\n     * @hidden\n     * @param items\n     * @param index\n     * @param key\n     * @returns\n     */\n    private async _getFormItemPropertyValue<T = string>(\n        items: WizardGeneratorItem,\n        index: number,\n        key: keyof WizardGeneratorItem\n    ): Promise<T> {\n        let value: any = items[key];\n\n        if (typeof value === 'function') {\n            const obj = value(index);\n\n            value = await this._getFunctionValue(obj);\n        }\n\n        return value as T;\n    }\n\n    /**\n     * @hidden\n     * @description Returns value from Promise-like, Observable-like, simple function or just some object.\n     * @param obj\n     * @returns\n     */\n    private async _getFunctionValue(obj: any): Promise<any> {\n        const strategy = selectStrategy(obj);\n\n        let result: any;\n\n        await strategy.createSubscription(obj, (value: any) => {\n            result = value;\n        });\n\n        if (isFunction(result)) {\n            await this._getFunctionValue(result);\n        }\n\n        return result;\n    }\n\n    /**\n     * @hidden\n     * @description Sets `branching` property for the steps that will create new branches.\n     * @param items\n     * @returns\n     */\n    private _setBranchingSteps(items: PreparedWizardGeneratorItem[]): PreparedWizardGeneratorItem[] {\n        const branchingItems = items\n            .filter((i) => i.dependencyFields)\n            .reduce((stepIds, item) => {\n                if (item.dependencyFields) {\n                    stepIds = [...stepIds, ...Object.keys(item.dependencyFields)];\n                }\n\n                return stepIds;\n            }, [] as string[]);\n\n        if (branchingItems.length > 0) {\n            items = items.map((item) => {\n                item.branching = item.branching || branchingItems.includes(item.id);\n                return item;\n            });\n        }\n\n        return items;\n    }\n\n    /** @hidden */\n    private _normalizeDependencyStep(\n        dependency: { [p: string]: string[] },\n        strategy: WizardGeneratorRefreshStrategy,\n        dependentStep?: string\n    ): DependencySteps {\n        const newDependency: DependencySteps = {};\n\n        Object.entries(dependency).forEach(([key, value]) => {\n            newDependency[key] = {};\n\n            value.forEach((v) => {\n                newDependency[key][v] = {\n                    [strategy]: dependentStep ? [dependentStep] : []\n                };\n            });\n        });\n        return newDependency;\n    }\n\n    /** @hidden */\n    private _buildDependencyMap(items: PreparedWizardGeneratorItem[]): void {\n        this.dependencySteps = {};\n\n        const mergeArrays = (objValue: any, srcValue: any): any => {\n            if (Array.isArray(objValue) && !objValue.includes(srcValue)) {\n                return uniq(objValue.concat(srcValue));\n            }\n        };\n\n        const buildDependencySteps = (\n            dependencyFields: WizardGeneratorDependencyFields,\n            strategy: WizardGeneratorRefreshStrategy,\n            stepId?: string\n        ): void => {\n            for (const [id, forms] of Object.entries(dependencyFields)) {\n                this.dependencySteps[id] = mergeWith(\n                    this.dependencySteps[id] || {},\n                    this._normalizeDependencyStep(forms, strategy, stepId),\n                    mergeArrays\n                );\n            }\n        };\n\n        items\n            .filter((s) => s.formGroups?.length)\n            .forEach((step) => {\n                if (step.dependencyFields) {\n                    buildDependencySteps(step.dependencyFields, WizardGeneratorRefreshStrategy.REFRESH_STEP_VISIBILITY);\n                }\n\n                const dependentForms = step.formGroups?.filter((form) => form.dependencyFields);\n\n                dependentForms?.forEach((form) => {\n                    buildDependencySteps(\n                        form.dependencyFields!,\n                        WizardGeneratorRefreshStrategy.REFRESH_FORM_VISIBILITY,\n                        step.id\n                    );\n                });\n\n                const stepFields: WizardGeneratorFormItem[] = concat(\n                    ...[...(step.formGroups ?? [])].map((item) => item.formItems.filter((f) => f.dependencyFields))\n                );\n\n                stepFields.forEach((formItem) => {\n                    buildDependencySteps(\n                        formItem.dependencyFields!,\n                        WizardGeneratorRefreshStrategy.REVALIDATE_STEP_FORMS,\n                        step.id\n                    );\n                });\n            });\n    }\n\n    /** @hidden */\n    private _getCompletedStepIds(): string[] {\n        return this.items.filter((i) => i.status === 'completed').map((i) => i.id);\n    }\n}\n","import { ChangeDetectorRef, DestroyRef, Directive, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { debounceTime, finalize } from 'rxjs/operators';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { ContentDensityMode } from '@fundamental-ngx/core/content-density';\nimport { WizardStepStatus } from '@fundamental-ngx/core/wizard';\nimport { WizardGeneratorFormsValue, WizardStepSubmittedForms } from './interfaces/wizard-generator-forms.interface';\nimport { PreparedWizardGeneratorItem, WizardGeneratorItem } from './interfaces/wizard-generator-item.interface';\nimport { WizardNavigationButtons } from './interfaces/wizard-navigation-buttons.interface';\nimport { WizardGeneratorService } from './wizard-generator.service';\n\n/**\n * @description Default button labels.\n */\nexport const DEFAULT_WIZARD_NAVIGATION_BUTTONS: Required<WizardNavigationButtons> = {\n    goBack: {\n        label: 'Previous Step',\n        contentDensity: ContentDensityMode.COMPACT,\n        type: 'ghost'\n    },\n    goNext: {\n        label: 'Next Step',\n        contentDensity: ContentDensityMode.COMPACT,\n        type: 'emphasized'\n    },\n    cancel: {\n        label: 'Cancel',\n        contentDensity: ContentDensityMode.COMPACT,\n        type: 'ghost'\n    },\n    finish: {\n        label: 'Finish',\n        contentDensity: ContentDensityMode.COMPACT,\n        type: 'emphasized'\n    },\n    review: {\n        label: 'Review',\n        contentDensity: ContentDensityMode.COMPACT,\n        type: 'emphasized'\n    }\n};\n\n/**\n * @description Base Wizard Generator component with necessary inputs and methods.\n */\n@Directive()\nexport class BaseWizardGenerator {\n    /**\n     * @description Whether or not apply responsive paddings styling.\n     */\n    @Input()\n    responsivePaddings = true;\n\n    /**\n     * @description Button labels to be used in Wizard navigation\n     */\n    @Input()\n    set navigationButtonLabels(value: WizardNavigationButtons) {\n        this._navigationButtonLabels = Object.assign({}, DEFAULT_WIZARD_NAVIGATION_BUTTONS, value);\n    }\n    get navigationButtonLabels(): WizardNavigationButtons {\n        return this._navigationButtonLabels;\n    }\n\n    /**\n     * @description Array of Wizard Steps.\n     */\n    @Input()\n    set items(items: WizardGeneratorItem[]) {\n        this.wizardCreated = false;\n        this._wizardGeneratorService.clearWizardStepComponents();\n\n        if (!items) {\n            return;\n        }\n\n        this._wizardGeneratorService.prepareWizardItems(items).then((newItems) => {\n            this._items = newItems;\n            this._visibleItems = newItems;\n            this.wizardCreated = true;\n            this._cd.detectChanges();\n        });\n    }\n    get items(): WizardGeneratorItem[] {\n        return this._items;\n    }\n\n    /**\n     * Whether to append the step to the wizard. If false, each step will be displayed on a different page.\n     * Default is true.\n     */\n    @Input()\n    set appendToWizard(value: boolean) {\n        this._wizardGeneratorService.setOriginalAppendToWizardState(value);\n    }\n\n    get appendToWizard(): boolean {\n        return this._appendToWizard;\n    }\n\n    /** If navigation buttons should be visible. */\n    @Input()\n    navigationButtons = true;\n\n    /**\n     * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n     * is the combined height of the shellbar, wizard header and wizard footer.\n     */\n    @Input()\n    contentHeight: Nullable<string>;\n\n    /**\n     * @description Boolean flag indicating whether to display Summary step in Wizard progress bar.\n     */\n    @Input()\n    displaySummaryStep = false;\n\n    /** Whether all form items should have identical layout provided for form group. */\n    @Input()\n    unifiedLayout = true;\n\n    /**\n     * @description Emits wizard value when it's completed.\n     */\n    @Output()\n    wizardFinished: EventEmitter<WizardGeneratorFormsValue> = new EventEmitter();\n\n    /**\n     * Flag indicating that wizard is ready to be shown\n     */\n    wizardCreated = false;\n\n    /**\n     * @description Is current step is summary step.\n     */\n    get isSummaryStep(): boolean {\n        const currentIndex = this._wizardGeneratorService.getCurrentStepIndex();\n\n        return this.visibleItems[currentIndex]?.summary === true;\n    }\n\n    /**\n     * @description Array of visible Wizard Steps.\n     */\n    set visibleItems(items: PreparedWizardGeneratorItem[]) {\n        this._visibleItems = items;\n    }\n    get visibleItems(): PreparedWizardGeneratorItem[] {\n        return this._visibleItems || this._items;\n    }\n\n    /**\n     * @description Whether or not Wizard is currently on the first step\n     */\n    get isFirstStep(): boolean {\n        return this.visibleItems[0]?.status === 'current';\n    }\n\n    /**\n     * @description Whether or not Wizard is currently on the last step\n     */\n    get isLastStep(): boolean {\n        const lastStep = this.visibleItems[this.visibleItems.length - 1];\n        return lastStep?.status === 'current' && !lastStep.branching;\n    }\n\n    /**\n     * Whether current step is a branching step.\n     */\n    get isBranchingStep(): boolean {\n        const currentIndex = this._wizardGeneratorService.getCurrentStepIndex();\n\n        return this._visibleItems[currentIndex]?.branching === true;\n    }\n\n    /**\n     * Whether the next step is a Summary step.\n     */\n    get isNextStepSummary(): boolean {\n        const nextStep = this.visibleItems[this._nextStepIndex];\n        return nextStep?.summary === true;\n    }\n\n    /** Whether the current step is completed */\n    get isCurrentStepCompleted(): boolean {\n        const currentIndex = this._wizardGeneratorService.getCurrentStepIndex();\n        return this._visibleItems[currentIndex]?.completed === true;\n    }\n\n    /**\n     * @hidden\n     */\n    _visibleItems: PreparedWizardGeneratorItem[] = [];\n\n    /** @hidden */\n    _nextStepIndex: number;\n\n    /** @hidden */\n    _stepsOrderChanged = false;\n\n    /**\n     * @hidden\n     */\n    _navigationButtonLabels: Required<WizardNavigationButtons> = DEFAULT_WIZARD_NAVIGATION_BUTTONS;\n\n    /**\n     * @hidden\n     */\n    protected readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    protected readonly _wizardGeneratorService = inject(WizardGeneratorService);\n\n    /** @hidden */\n    protected readonly _cd = inject(ChangeDetectorRef);\n\n    /**\n     * @hidden\n     */\n    private _items: PreparedWizardGeneratorItem[] = [];\n\n    /** @hidden */\n    private _appendToWizard = false;\n\n    /**\n     * @hidden\n     */\n    private _formPending = false;\n\n    /** @hidden */\n    constructor() {\n        this._wizardGeneratorService\n            .getVisibleSteps()\n            .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))\n            .subscribe((visibleSteps) => {\n                this.visibleItems = visibleSteps;\n                this._cd.detectChanges();\n            });\n\n        this._wizardGeneratorService\n            .trackStepsComponents()\n            .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))\n            .subscribe(async (stepsComponents) => {\n                if (stepsComponents.size === this.items?.length) {\n                    await this._setVisibleSteps();\n                }\n            });\n\n        this._wizardGeneratorService\n            .trackAppendToWizardState()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((value) => {\n                this._appendToWizard = value;\n            });\n\n        this._wizardGeneratorService\n            .trackStepsOrder()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((newNextStep) => {\n                this._nextStepIndex = newNextStep;\n                this._stepsOrderChanged = true;\n            });\n\n        this._wizardGeneratorService\n            .trackNextStepIndex()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe((index) => {\n                this._nextStepIndex = index;\n            });\n    }\n\n    /**\n     * @description Reverts Wizard progress one step back.\n     */\n    goBack(): void {\n        const currentStepIndex = this._wizardGeneratorService.getCurrentStepIndex();\n        const previousStepIndex = currentStepIndex - 1;\n\n        if (this.visibleItems[previousStepIndex] === undefined) {\n            return;\n        }\n\n        this._stepsOrderChanged = false;\n\n        this.visibleItems[currentStepIndex].status = 'upcoming';\n        this.visibleItems[previousStepIndex].status = 'current';\n        this._wizardGeneratorService.setVisibleSteps(this.visibleItems);\n\n        this._wizardGeneratorService.setNextStepIndex(currentStepIndex);\n\n        this._cd.detectChanges();\n    }\n\n    /**\n     * @description Progresses the Wizard one step further.\n     */\n    async goNext(): Promise<void> {\n        if (this._formPending) {\n            return;\n        }\n\n        const currentStepIndex = this._wizardGeneratorService.getCurrentStepIndex();\n        const nextStepIndex = this._nextStepIndex;\n\n        this._wizardGeneratorService\n            .validateStepForms()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe(async (result) => {\n                if (!result) {\n                    return;\n                }\n\n                await this._setVisibleSteps();\n\n                const steps = this.visibleItems;\n\n                if (steps[nextStepIndex] === undefined) {\n                    return;\n                }\n\n                this._stepsOrderChanged = false;\n\n                steps[currentStepIndex].status = 'completed';\n                steps[currentStepIndex].completed = true;\n                steps[nextStepIndex].status = 'current';\n\n                this._wizardGeneratorService.setVisibleSteps(steps);\n\n                this._wizardGeneratorService.setNextStepIndex(nextStepIndex + 1);\n\n                this._cd.detectChanges();\n            });\n    }\n\n    /**\n     * @description Submits step forms.\n     * @param currentStepIndex current step index.\n     * @returns {Observable<WizardStepSubmittedForms | null>} Observable with form values.\n     */\n    submitStepForms(currentStepIndex?: string): Observable<WizardStepSubmittedForms | null> {\n        this._formPending = true;\n\n        return this._wizardGeneratorService.submitStepForms(currentStepIndex).pipe(\n            finalize(() => {\n                this._formPending = false;\n            })\n        );\n    }\n\n    /**\n     * @description Completes the wizard and emits it's formatted value.\n     */\n    async finish(): Promise<void> {\n        if (this.isSummaryStep) {\n            const wizardResult = await this._wizardGeneratorService.getWizardFormValue(true);\n            this.wizardFinished.emit(wizardResult);\n            return;\n        }\n\n        this._wizardGeneratorService\n            .validateStepForms()\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe(async (result) => {\n                if (!result) {\n                    return;\n                }\n\n                const wizardResult = await this._wizardGeneratorService.getWizardFormValue(true);\n\n                this.wizardFinished.emit(wizardResult);\n            });\n    }\n\n    /**\n     * @description Callback function to update steps status.\n     * @param stepId Step ID to be updated.\n     * @param status New step status.\n     */\n    async stepStatusChanged(stepId: string, status: WizardStepStatus): Promise<void> {\n        const stepIndex = this._visibleItems.findIndex((s) => s.id === stepId);\n\n        this._visibleItems[stepIndex].status = status;\n\n        await this._wizardGeneratorService.refreshStepVisibility();\n    }\n\n    /**\n     * @hidden\n     */\n    private async _setVisibleSteps(): Promise<void> {\n        await this._wizardGeneratorService.refreshStepVisibility();\n\n        this.wizardCreated = true;\n\n        this._cd.detectChanges();\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    QueryList,\n    SimpleChanges,\n    ViewChildren,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { WizardStepStatus } from '@fundamental-ngx/core/wizard';\n\nimport {\n    DynamicFormGroup,\n    DynamicFormValue,\n    FormGeneratorComponent,\n    FormGeneratorService,\n    SubmitFormEventResult\n} from '@fundamental-ngx/platform/form';\nimport { isFunction } from '@fundamental-ngx/platform/shared';\nimport { Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { WizardStepForms, WizardStepSubmittedForms } from '../../interfaces/wizard-generator-forms.interface';\nimport { WizardGeneratorItem } from '../../interfaces/wizard-generator-item.interface';\nimport { WizardGeneratorStep } from '../../interfaces/wizard-step.interface';\nimport {\n    DependencySteps,\n    WizardGeneratorRefreshStrategy,\n    WizardGeneratorService\n} from '../../wizard-generator.service';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\n\n@Component({\n    selector: 'fdp-wizard-generator-step',\n    templateUrl: './wizard-generator-step.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [TitleComponent, FormGeneratorComponent]\n})\nexport class WizardGeneratorStepComponent implements WizardGeneratorStep, OnInit, OnDestroy, OnChanges {\n    /**\n     * @description Step Form Generator components.\n     */\n    @ViewChildren(FormGeneratorComponent) formGenerators: QueryList<FormGeneratorComponent>;\n\n    /**\n     * @description Current step.\n     */\n    @Input()\n    item: WizardGeneratorItem;\n\n    /**\n     * Wizard step status.\n     */\n    @Input()\n    stepStatus: WizardStepStatus;\n\n    /** Whether all form items should have identical layout provided for form group. */\n    @Input()\n    unifiedLayout = true;\n\n    /**\n     * @description Emits when all forms in the step has been submited\n     */\n    @Output()\n    formsSubmitted = new EventEmitter<DynamicFormValue[]>();\n\n    /**\n     * @description Emits when all forms in the step has been created\n     */\n    @Output()\n    formsCreated = new EventEmitter<WizardStepForms>();\n\n    /**\n     * @hidden\n     */\n    _visibleFormGroupIds: Record<string, boolean>;\n\n    /**\n     * @hidden\n     */\n    private _submittedForms: WizardStepSubmittedForms = {};\n\n    /**\n     * @hidden\n     */\n    private _formSubmitted$ = new Subject<WizardStepSubmittedForms | null>();\n\n    /**\n     * @hidden\n     */\n    private _forms: WizardStepForms = {};\n\n    /**\n     * @hidden\n     */\n    private _trackedFields: DependencySteps;\n\n    /**\n     * @hidden\n     * @private\n     */\n    private _hiddenFormGroupValues: {\n        [key: string]: any;\n    } = {};\n\n    /**\n     * @hidden\n     * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n     */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /** @hidden */\n    constructor(\n        private _wizardGeneratorService: WizardGeneratorService,\n        private _formGeneratorService: FormGeneratorService\n    ) {}\n\n    /**\n     * @hidden\n     */\n    async ngOnInit(): Promise<void> {\n        await this.refreshFormsVisibility();\n    }\n\n    /**\n     * @hidden\n     */\n    ngOnDestroy(): void {\n        this._wizardGeneratorService.removeWizardStepComponent(this.item.id);\n    }\n\n    /** @hidden */\n    async ngOnChanges(changes: SimpleChanges): Promise<void> {\n        if (changes.stepStatus && changes.stepStatus.currentValue === 'current' && this.formGenerators?.length > 0) {\n            await this.updateFormsState();\n        }\n    }\n\n    /**\n     * @description Adds created form instance to the object of the forms.\n     * @param form Form instance\n     * @param key Form ID from @see item\n     */\n    async onFormCreated(form: DynamicFormGroup, key: string): Promise<void> {\n        this._forms[key] = {\n            title: this.item.formGroups?.find((g) => g.id === key)?.title ?? '',\n            form\n        };\n\n        await this._wizardGeneratorService.refreshStepVisibility();\n\n        if (Object.keys(this._forms).length === this.item.formGroups?.length) {\n            await this.addComponentToParent();\n            this.formsCreated.emit(this._forms);\n        }\n\n        if (this._hiddenFormGroupValues[key]) {\n            form?.patchValue(this._hiddenFormGroupValues[key]);\n        }\n\n        this._trackDependencyFieldsChanges(form, key);\n    }\n\n    /**\n     * @description Adds component to the service for further usage.\n     */\n    async addComponentToParent(): Promise<void> {\n        this._wizardGeneratorService.addWizardStepComponent(this, this.item.id);\n    }\n\n    /**\n     * @description Callback function when form has been submitted.\n     * @param result Form submission result.\n     * @param index Form index in the step.\n     */\n    onFormSubmitted(result: SubmitFormEventResult, index: string): void {\n        this._submittedForms[index] = result;\n\n        if (Object.keys(this._submittedForms).length === this.formGenerators.length) {\n            // Last form submission. Send data back to the parent component.\n            this._formSubmitted$.next(this._submittedForms);\n        }\n    }\n\n    /**\n     * Returns visible forms in the step.\n     */\n    getVisibleForms(): WizardStepForms {\n        return Object.keys(this._forms).reduce((acc, key) => {\n            if (this._visibleFormGroupIds[key] || this._visibleFormGroupIds[key] === undefined) {\n                acc[key] = this._forms[key];\n            }\n            return acc;\n        }, {});\n    }\n\n    /**\n     * @description Clears previously submitted form values and re-submit them again.\n     * @returns Subject, which will return forms value.\n     */\n    submitForms(skipIfUntouched = false): Subject<WizardStepSubmittedForms | null> {\n        if (skipIfUntouched && !this._wizardGeneratorService.stepSubmitted(this.item.id)) {\n            setTimeout(() => {\n                this._formSubmitted$.next(null);\n            });\n            return this._formSubmitted$;\n        }\n\n        // Clear previously submitted form values and re-submit them again.\n        this._submittedForms = {};\n\n        setTimeout(() => {\n            this.formGenerators.forEach((formComponent) => {\n                formComponent.submit();\n            });\n        });\n\n        return this._formSubmitted$;\n    }\n\n    /**\n     * Triggers form value revalidation and checks if field in form should be visible.\n     */\n    async updateFormsState(): Promise<void> {\n        if (this.formGenerators) {\n            for (const formGenerator of this.formGenerators.toArray()) {\n                await formGenerator.refreshStepsVisibility();\n            }\n        }\n    }\n\n    /**\n     * Refreshes step form group visibility.\n     */\n    async refreshFormsVisibility(): Promise<void> {\n        this._visibleFormGroupIds = {};\n\n        if (!this.item.formGroups) {\n            return;\n        }\n\n        for (const formGroup of this.item.formGroups.filter((fg) => isFunction(fg.when))) {\n            const result = await this._wizardGeneratorService.refreshFormVisibility(formGroup);\n\n            if (result === this._visibleFormGroupIds[formGroup.id]) {\n                return;\n            }\n\n            const form = this._forms[formGroup.id]?.form;\n\n            // Store form value so it could be restored later.\n            if (!result) {\n                this._hiddenFormGroupValues[formGroup.id] = form?.value;\n            }\n\n            this._visibleFormGroupIds[formGroup.id] = result;\n        }\n    }\n\n    /**\n     * @hidden\n     * @description Keeps track on dependency fields for other steps and refreshes the view when they changed.\n     * @param form\n     * @param key\n     */\n    private _trackDependencyFieldsChanges(form: DynamicFormGroup, key: string): void {\n        this._trackedFields = this._wizardGeneratorService.getStepDependencyFields(this.item.id);\n\n        if (this._trackedFields && this._trackedFields[key]) {\n            Object.entries(this._trackedFields[key]).forEach(([fieldId, strategies]) => {\n                const control = this._formGeneratorService.getFormControl(form, fieldId);\n\n                const refreshSteps = strategies[WizardGeneratorRefreshStrategy.REFRESH_STEP_VISIBILITY] !== undefined;\n                const revalidateForms = strategies[WizardGeneratorRefreshStrategy.REVALIDATE_STEP_FORMS];\n                const refreshFormVisibility = strategies[WizardGeneratorRefreshStrategy.REFRESH_FORM_VISIBILITY];\n\n                control?.valueChanges\n                    .pipe(debounceTime(50), takeUntilDestroyed(this._destroyRef))\n                    .subscribe(async () => {\n                        if (refreshSteps) {\n                            await this._wizardGeneratorService.refreshStepVisibility();\n                        }\n\n                        if (revalidateForms?.length) {\n                            this._wizardGeneratorService.notifyStepsToRevalidateForms(revalidateForms);\n                        }\n\n                        if (refreshFormVisibility?.length) {\n                            await this._wizardGeneratorService.refreshFormsVisibility(refreshFormVisibility);\n                        }\n                    });\n            });\n        }\n    }\n}\n","@if (item.title) {\n    <h3 fd-title>{{ item.title }}</h3>\n}\n@for (form of item.formGroups; track form; let i = $index) {\n    @if (_visibleFormGroupIds[form.id] !== false) {\n        <fdp-form-generator\n            [mainTitle]=\"form.title\"\n            [columnLayout]=\"form.columnLayout\"\n            [noAdditionalContent]=\"true\"\n            [formName]=\"form.id\"\n            [formItems]=\"$any(form.formItems)\"\n            [hint]=\"form.guiOptions?.hint!\"\n            [unifiedLayout]=\"unifiedLayout\"\n            (formCreated)=\"onFormCreated($event, form.id)\"\n            (formSubmittedStatus)=\"onFormSubmitted($event, form.id)\"\n        ></fdp-form-generator>\n    }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';\n\nimport { FormLabelComponent } from '@fundamental-ngx/core/form';\nimport { LayoutGridColDirective, LayoutGridComponent, LayoutGridRowDirective } from '@fundamental-ngx/core/layout-grid';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { LinkComponent } from '@fundamental-ngx/platform/link';\nimport {\n    FormattedFormStep,\n    WizardGeneratorSummaryItem\n} from '../../../interfaces/wizard-generator-summary-item.interface';\n\n@Component({\n    selector: 'fdp-wizard-summary-section',\n    templateUrl: './wizard-summary-section.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [\n        TitleComponent,\n        LayoutGridColDirective,\n        LayoutGridComponent,\n        LayoutGridRowDirective,\n        FormLabelComponent,\n        LinkComponent,\n        FdTranslatePipe\n    ]\n})\nexport class WizardSummarySectionComponent {\n    /**\n     * @description Current step for the section.\n     */\n    @Input()\n    step: WizardGeneratorSummaryItem;\n\n    /**\n     * Emits when step edit button clicked.\n     */\n    @Output()\n    editStep = new EventEmitter<string>();\n\n    /**\n     * @hidden\n     * @description Sets current step on wizard.\n     * @param event Mouse click event to prevent.\n     */\n    _editStep(event: MouseEvent | KeyboardEvent | TouchEvent): void {\n        event.preventDefault();\n        this.editStep.emit(this.step.id);\n    }\n\n    /** @hidden */\n    _trackFn(_: number, form: FormattedFormStep): string {\n        return form.id;\n    }\n}\n","@for (group of step.forms; track _trackFn($index, group)) {\n    <h4 fd-title [headerSize]=\"4\">{{ group.title }}</h4>\n    <fd-layout-grid [style.margin-bottom.rem]=\"2\">\n        @for (item of group.items; track item; let index = $index) {\n            <div fdLayoutGridRow>\n                <div [fdLayoutGridCol]=\"4\" [colMd]=\"2\" [colLg]=\"2\" [colXl]=\"2\">\n                    <div>\n                        <label fd-form-label [allowWrap]=\"true\" [alignLabelEnd]=\"true\"> {{ item.label }}: </label>\n                    </div>\n                </div>\n                <div [fdLayoutGridCol]=\"4\" [colMd]=\"5\" [colLg]=\"5\" [colXl]=\"5\">\n                    <div>\n                        <label fd-form-label [allowWrap]=\"true\">\n                            {{ item.value || '-' }}\n                        </label>\n                    </div>\n                </div>\n                @if (index === group.items.length - 1) {\n                    <div [fdLayoutGridCol]=\"1\" [colMd]=\"5\" [colLg]=\"5\" [colXl]=\"5\">\n                        <fdp-link href=\"#\" (click)=\"_editStep($event)\">\n                            {{ ('platformWizardGenerator.summarySectionEditStep' | fdTranslate)() }}\n                        </fdp-link>\n                    </div>\n                }\n            </div>\n        }\n    </fd-layout-grid>\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n    TemplateRef,\n    ViewEncapsulation\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WizardStepStatus } from '@fundamental-ngx/core/wizard';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { WizardGeneratorFormsValue, WizardStepForms } from '../../interfaces/wizard-generator-forms.interface';\nimport { WizardGeneratorItem } from '../../interfaces/wizard-generator-item.interface';\nimport {\n    FormattedFormStep,\n    WizardGeneratorSummaryItem\n} from '../../interfaces/wizard-generator-summary-item.interface';\nimport { WizardGeneratorService } from '../../wizard-generator.service';\nimport { WizardSummarySectionComponent } from './wizard-summary-section/wizard-summary-section.component';\n\n@Component({\n    selector: 'fdp-wizard-summary-step',\n    templateUrl: './wizard-summary-step.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    imports: [WizardSummarySectionComponent, NgTemplateOutlet]\n})\nexport class WizardSummaryStepComponent {\n    /**\n     * @description Summary step status.\n     */\n    @Input()\n    set status(status: WizardStepStatus) {\n        if (status === 'current') {\n            this._wizardGeneratorService.getWizardFormValue(true).then((forms) => {\n                this._submittedForms = forms;\n\n                this._wizardSteps = this._wizardGeneratorService.items.filter(\n                    (i) => this._submittedForms[i.id] !== undefined\n                );\n\n                this._formatWizardValue().then(() => {\n                    this._shouldRender = true;\n\n                    this._cd.detectChanges();\n                });\n            });\n        } else {\n            this._shouldRender = false;\n        }\n\n        this._cd.detectChanges();\n    }\n\n    /**\n     * User-defined template for Summary step.\n     */\n    @Input()\n    customSummaryStepTemplate: Nullable<TemplateRef<HTMLElement>>;\n\n    /**\n     * Formatted wizard value with steps and their forms.\n     */\n    formattedWizardValue: WizardGeneratorSummaryItem[] = [];\n\n    /**\n     * @hidden\n     */\n    _submittedForms: WizardGeneratorFormsValue;\n\n    /**\n     * @hidden\n     */\n    _shouldRender = false;\n\n    /**\n     * @hidden\n     */\n    _wizardSteps: WizardGeneratorItem[];\n\n    /** @hidden */\n    constructor(\n        private _wizardGeneratorService: WizardGeneratorService,\n        private _formGeneratorService: FormGeneratorService,\n        private _cd: ChangeDetectorRef\n    ) {}\n\n    /**\n     * Opens defined step for editing.\n     * @param stepId Defined step ID.\n     */\n    editStep(stepId: string): void {\n        this._wizardGeneratorService.editStep(stepId);\n    }\n\n    /** @hidden */\n    _trackFn(_: number, step: WizardGeneratorSummaryItem): string {\n        return step.id;\n    }\n\n    /** @hidden */\n    _editStepFn: (stepId: string) => void = (stepId: string) => this.editStep(stepId);\n\n    /** @hidden */\n    private async _formatWizardValue(): Promise<void> {\n        this.formattedWizardValue = [];\n\n        for (const step of this._wizardSteps) {\n            const component = this._wizardGeneratorService.stepsComponents.get(step.id);\n            const componentForms = component?.getVisibleForms();\n\n            if (!componentForms) {\n                continue;\n            }\n\n            const formattedStepValue = await this._formatStepValue(componentForms, step);\n\n            this.formattedWizardValue.push({\n                id: step.id,\n                name: step.name as string,\n                title: step.title as string,\n                forms: formattedStepValue\n            });\n        }\n    }\n\n    /** @hidden */\n    private async _formatStepValue(\n        componentForms: WizardStepForms,\n        step: WizardGeneratorItem\n    ): Promise<FormattedFormStep[]> {\n        const formattedStepValue: FormattedFormStep[] = [];\n\n        for (const formGroup of step.formGroups ?? []) {\n            const formId = formGroup.id;\n\n            const form = componentForms[formId];\n\n            // Form might be skipped due to conditional rendering\n            if (!form) {\n                continue;\n            }\n\n            const formattedFormValue = await this._formGeneratorService.getFormValue(form.form, true);\n\n            const formattedForm: FormattedFormStep = {\n                title: form.title,\n                id: formId,\n                items: Object.keys(this._submittedForms[step.id][formId]).map((key) => {\n                    const formItem = this._formGeneratorService.getFormControl(form.form, key).formItem;\n                    return {\n                        label: formItem.message as string,\n                        value: formattedFormValue[key]\n                    };\n                })\n            };\n\n            formattedStepValue.push(formattedForm);\n        }\n\n        return formattedStepValue;\n    }\n}\n","@if (_shouldRender) {\n    <ng-template #defaultsummaryStepTemplate>\n        @for (step of formattedWizardValue; track _trackFn($index, step)) {\n            <fdp-wizard-summary-section [step]=\"step\" (editStep)=\"editStep($event)\"></fdp-wizard-summary-section>\n        }\n    </ng-template>\n    <ng-template\n        [ngTemplateOutlet]=\"customSummaryStepTemplate || defaultsummaryStepTemplate\"\n        [ngTemplateOutletContext]=\"{ steps: formattedWizardValue, editStep: _editStepFn }\"\n    ></ng-template>\n}\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DestroyRef,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewEncapsulation,\n    inject\n} from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WizardModule, WizardStepStatus } from '@fundamental-ngx/core/wizard';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { PreparedWizardGeneratorItem, WizardGeneratorItem } from '../../interfaces/wizard-generator-item.interface';\nimport { WizardNavigationButtons } from '../../interfaces/wizard-navigation-buttons.interface';\nimport { WizardGeneratorService } from '../../wizard-generator.service';\nimport { WizardGeneratorStepComponent } from '../wizard-generator-step/wizard-generator-step.component';\nimport { WizardSummaryStepComponent } from '../wizard-summary-step/wizard-summary-step.component';\n\nexport interface WizardStepChange {\n    id: string;\n    status: WizardStepStatus;\n}\n\n@Component({\n    selector: 'fdp-wizard-body',\n    templateUrl: './wizard-body.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        WizardModule,\n        WizardGeneratorStepComponent,\n        WizardSummaryStepComponent,\n        ButtonComponent,\n        ContentDensityDirective,\n        NgTemplateOutlet\n    ]\n})\nexport class WizardBodyComponent implements OnInit {\n    /**\n     * @description Whether or not apply responsive paddings styling.\n     */\n    @Input()\n    responsivePaddings = true;\n\n    /**\n     * @description Button labels to be used in Wizard navigation\n     */\n    @Input()\n    navigationButtonLabels: Required<WizardNavigationButtons>;\n\n    /**\n     * @description Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n     * Default is true.\n     */\n    @Input()\n    appendToWizard = true;\n\n    /**\n     * @description Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n     * is the combined height of the Shellbar, wizard header and wizard footer.\n     */\n    @Input()\n    contentHeight: Nullable<string>;\n\n    /**\n     * @description Whether or not Wizard is currently on the first step\n     */\n    @Input()\n    isFirstStep = false;\n\n    /**\n     * @description Whether Wizard is currently on the last step.\n     */\n    @Input()\n    isLastStep = false;\n\n    /**\n     * Whether next step is a Summary step.\n     */\n    @Input()\n    isNextStepSummary = false;\n\n    /**\n     * @description Boolean flag indicating whether to display Summary step in Wizard progress bar.\n     */\n    @Input()\n    displaySummaryStep = false;\n\n    /**\n     * User-defined template for \"Go Next\" button.\n     */\n    @Input()\n    goNextButtonTemplate: TemplateRef<any>;\n\n    /**\n     * User-defined template for \"Finish\" button.\n     */\n    @Input()\n    finishButtonTemplate: TemplateRef<any>;\n\n    /**\n     * User-defined template for summary step.\n     */\n    @Input()\n    customSummaryStepTemplate?: TemplateRef<HTMLElement>;\n\n    /** User-defined template for \"Review\" button */\n    @Input()\n    reviewButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * @description Is current step is summary step.\n     */\n    @Input()\n    isSummaryStep = false;\n\n    /** If navigation buttons should be visible. */\n    @Input()\n    navigationButtons = true;\n\n    /** Whether or not all form items should have identical layout provided for form group. */\n    @Input()\n    unifiedLayout = true;\n\n    /** Whether current step is a branching step. */\n    @Input()\n    isBranchingStep = false;\n\n    /** Whether current step is completed */\n    @Input()\n    isCurrentStepCompleted = false;\n\n    /** Whether order of steps was changed  */\n    @Input()\n    stepsOrderChanged = false;\n\n    /**\n     * @description Emits when some step status has been changed.\n     */\n    @Output()\n    statusChange = new EventEmitter<WizardStepChange>();\n\n    /**\n     * @description Emits when \"Go next\" button has been clicked\n     */\n    @Output()\n    goNext = new EventEmitter<void>();\n\n    /**\n     * @description Emits when \"Finish\" button has been clicked\n     */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() finish = new EventEmitter<void>();\n\n    /**\n     * @hidden\n     * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)\n     */\n    private readonly _destroyRef = inject(DestroyRef);\n\n    /**\n     * @hidden\n     */\n    private _visibleItems: PreparedWizardGeneratorItem[];\n\n    /**\n     * @description Array of visible Wizard Steps.\n     */\n\n    set visibleItems(items: PreparedWizardGeneratorItem[]) {\n        this._visibleItems = items;\n    }\n\n    get visibleItems(): PreparedWizardGeneratorItem[] {\n        return this._visibleItems || this._wizardGeneratorService.items;\n    }\n\n    /** @hidden */\n\n    constructor(\n        private _wizardGeneratorService: WizardGeneratorService,\n        private _cd: ChangeDetectorRef\n    ) {}\n\n    /**\n     * @hidden\n     */\n    _goNextFn: () => void = () => this.goNext.emit();\n\n    /**\n     * @hidden\n     */\n    _finishFn: () => void = () => this.finish.emit();\n\n    /**\n     * @description Custom step status change validator function.\n     * @param index Current step index.\n     * @returns {Promise<boolean>} If this step status can be changed.\n     */\n    stepClickValidatorFn(index: number): () => Promise<boolean> {\n        return async () => {\n            const currentStepIndex = this._wizardGeneratorService.getCurrentStepIndex();\n            const isSummaryStep = this._visibleItems[currentStepIndex]?.summary === true;\n\n            if (index === currentStepIndex || isSummaryStep) {\n                return true;\n            }\n\n            if (this._visibleItems.slice(0, index).find((i) => !i.completed && !i.summary)) {\n                return false;\n            }\n\n            return await firstValueFrom(this._wizardGeneratorService.validateStepForms(true));\n        };\n    }\n\n    /**\n     * @hidden\n     */\n    ngOnInit(): void {\n        this._wizardGeneratorService\n            .getVisibleSteps()\n            .pipe(debounceTime(50), takeUntilDestroyed(this._destroyRef))\n            .subscribe((visibleSteps) => {\n                this._visibleItems = visibleSteps;\n                this._cd.detectChanges();\n            });\n    }\n\n    /**\n     * @description Callback function for status change.\n     * @param id step ID.\n     * @param status new step status.\n     */\n    stepStatusChanged(id: string, status: WizardStepStatus): void {\n        this.statusChange.emit({\n            id,\n            status\n        });\n    }\n\n    /** @hidden */\n    stepClicked(stepId: string): void {\n        const stepIndex = this._wizardGeneratorService.getStepIndex(stepId);\n        this._wizardGeneratorService.setNextStepIndex(stepIndex + 1);\n    }\n\n    /**\n     * @hidden\n     * @param _index\n     * @param item\n     * @returns\n     */\n    _trackFn(_index: number, item: WizardGeneratorItem): string {\n        return item.id;\n    }\n}\n","@if (visibleItems) {\n    <fd-wizard\n        [displaySummaryStep]=\"displaySummaryStep\"\n        [responsivePaddings]=\"responsivePaddings\"\n        [appendToWizard]=\"appendToWizard\"\n        [contentHeight]=\"contentHeight\"\n    >\n        <fd-wizard-navigation>\n            <ul fd-wizard-progress-bar>\n                @for (step of visibleItems; track _trackFn(i, step); let i = $index) {\n                    <li\n                        fd-wizard-step\n                        [label]=\"step.name\"\n                        [status]=\"step.status\"\n                        [optionalText]=\"step.optionalText\"\n                        [branching]=\"!!step.branching\"\n                        [stepClickValidator]=\"stepClickValidatorFn(i)\"\n                        [isSummary]=\"!!step.summary\"\n                        (statusChange)=\"stepStatusChanged(step.id, $event)\"\n                        (stepClicked)=\"stepClicked(step.id)\"\n                    >\n                        <fd-wizard-step-indicator [glyph]=\"step.icon || null\">\n                            @if (!step.icon) {\n                                {{ i + 1 }}\n                            }\n                        </fd-wizard-step-indicator>\n                        <fd-wizard-content>\n                            @if (!step.summary) {\n                                <fdp-wizard-generator-step\n                                    [unifiedLayout]=\"unifiedLayout\"\n                                    [item]=\"step\"\n                                    [stepStatus]=\"step.status\"\n                                ></fdp-wizard-generator-step>\n                            } @else {\n                                <fdp-wizard-summary-step\n                                    [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n                                    [status]=\"step.status\"\n                                ></fdp-wizard-summary-step>\n                            }\n                            @if (navigationButtons) {\n                                <fd-wizard-next-step [canHide]=\"appendToWizard\">\n                                    @if (!isLastStep) {\n                                        <ng-template #defaultGoNextButtonTemplate>\n                                            <button\n                                                fd-button\n                                                [fdContentDensity]=\"navigationButtonLabels.goNext.contentDensity\"\n                                                [fdType]=\"navigationButtonLabels.goNext.type\"\n                                                [label]=\"navigationButtonLabels.goNext.label\"\n                                                (click)=\"goNext.emit()\"\n                                            ></button>\n                                        </ng-template>\n                                        <ng-template #defaultReviewButtonTemplate>\n                                            <button\n                                                fd-button\n                                                [fdContentDensity]=\"navigationButtonLabels.review.contentDensity\"\n                                                [fdType]=\"navigationButtonLabels.review.type\"\n                                                [label]=\"navigationButtonLabels.review.label\"\n                                                (click)=\"goNext.emit()\"\n                                            ></button>\n                                        </ng-template>\n                                        @if (\n                                            (isBranchingStep && (!isCurrentStepCompleted || stepsOrderChanged)) ||\n                                            !isNextStepSummary\n                                        ) {\n                                            <ng-template\n                                                [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n                                                [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n                                            ></ng-template>\n                                        } @else {\n                                            <ng-template\n                                                [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n                                                [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n                                            ></ng-template>\n                                        }\n                                    } @else {\n                                        <ng-template #defaultFinishButtonTemplate>\n                                            <button\n                                                fd-button\n                                                [fdContentDensity]=\"navigationButtonLabels.finish.contentDensity\"\n                                                [fdType]=\"navigationButtonLabels.finish.type\"\n                                                [label]=\"navigationButtonLabels.finish.label\"\n                                                (click)=\"finish.emit()\"\n                                            ></button>\n                                        </ng-template>\n                                        <ng-template\n                                            [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n                                            [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n                                        ></ng-template>\n                                    }\n                                </fd-wizard-next-step>\n                            }\n                        </fd-wizard-content>\n                    </li>\n                }\n            </ul>\n        </fd-wizard-navigation>\n    </fd-wizard>\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\nimport { filter } from 'rxjs/operators';\n\nimport { CdkScrollable } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';\nimport { BarModule } from '@fundamental-ngx/core/bar';\nimport { ButtonComponent } from '@fundamental-ngx/core/button';\nimport { ContentDensityDirective } from '@fundamental-ngx/core/content-density';\nimport { DialogBodyComponent, DialogComponent, DialogHeaderComponent, DialogRef } from '@fundamental-ngx/core/dialog';\nimport { MessageBoxModule, MessageBoxService } from '@fundamental-ngx/core/message-box';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { TitleComponent } from '@fundamental-ngx/core/title';\nimport { BaseWizardGenerator } from '../../base-wizard-generator';\nimport { WizardDialogData } from '../../interfaces/wizard-dialog-data.interface';\nimport { WizardTitle } from '../../interfaces/wizard-title.interface';\nimport { WizardGeneratorService } from '../../wizard-generator.service';\nimport { WizardBodyComponent } from '../wizard-body/wizard-body.component';\n\n@Component({\n    selector: 'fdp-dialog-wizard-generator',\n    templateUrl: './dialog-wizard-generator.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [WizardGeneratorService, FormGeneratorService],\n    imports: [\n        TitleComponent,\n        CdkScrollable,\n        ScrollbarDirective,\n        WizardBodyComponent,\n        BarModule,\n        ButtonComponent,\n        ContentDensityDirective,\n        NgTemplateOutlet,\n        MessageBoxModule,\n        InitialFocusDirective,\n        DialogBodyComponent,\n        DialogHeaderComponent,\n        DialogComponent\n    ]\n})\nexport class DialogWizardGeneratorComponent extends BaseWizardGenerator {\n    /** @hidden */\n    @ViewChild('defaultConfirmationDialogTemplate') defaultConfirmationDialogTemplate: TemplateRef<HTMLElement>;\n\n    /**\n     * @description Wizards dialog title configuration.\n     */\n    title: WizardTitle;\n\n    /**\n     * @description Confirmation message when wizard dialog close button has been clicked.\n     */\n    confirmationDialogText = 'Are you sure you want to discard your progress?';\n    /**\n     * @description Confirm button text for close confirmation dialog.\n     */\n    confirmationDialogCloseText = 'Confirm';\n    /**\n     * @description Cancel button text for close confirmation dialog.\n     */\n    confirmationDialogCancelText = 'Cancel';\n\n    /**\n     * User-defined template for \"Go Next\" button.\n     */\n    goNextButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for \"Go Back\" button.\n     */\n    goBackButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for \"Finish\" button.\n     */\n    finishButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for \"Cancel\" button.\n     */\n    cancelButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for cancellation confirmation dialog.\n     */\n    confirmationDialogTemplate?: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for summary step.\n     */\n    summaryStepTemplate?: TemplateRef<HTMLElement>;\n\n    /** User-defined template for \"Review\" button */\n    reviewButtonTemplate?: TemplateRef<HTMLElement>;\n\n    /** @hidden */\n    private readonly _messageBoxService = inject(MessageBoxService);\n\n    /** @hidden */\n    constructor(private _dialogRef: DialogRef<WizardDialogData>) {\n        super();\n        this.items = this._dialogRef.data.items;\n        this.title = this._dialogRef.data.title;\n        this.appendToWizard = this._dialogRef.data.appendToWizard;\n        this.navigationButtonLabels = this._dialogRef.data.navigationButtonLabels ?? {};\n        this.contentHeight = this._dialogRef.data.contentHeight;\n        this.responsivePaddings = this._dialogRef.data.responsivePaddings;\n        this.goNextButtonTemplate = this._dialogRef.data.goNextButtonTemplate;\n        this.goBackButtonTemplate = this._dialogRef.data.goBackButtonTemplate;\n        this.finishButtonTemplate = this._dialogRef.data.finishButtonTemplate;\n        this.cancelButtonTemplate = this._dialogRef.data.cancelButtonTemplate;\n        this.confirmationDialogTemplate = this._dialogRef.data.confirmationDialogTemplate;\n        this.displaySummaryStep = this._dialogRef.data.displaySummaryStep || false;\n        this.summaryStepTemplate = this._dialogRef.data.summaryStepTemplate;\n        this.reviewButtonTemplate = this._dialogRef.data.reviewButtonTemplate;\n\n        if (this._dialogRef.data.unifiedLayout !== undefined) {\n            this.unifiedLayout = this._dialogRef.data.unifiedLayout;\n        }\n\n        if (this._dialogRef.data.navigationButtons !== undefined) {\n            this.navigationButtons = this._dialogRef.data.navigationButtons;\n        }\n\n        if (this._dialogRef.data.confirmationDialogText) {\n            this.confirmationDialogText = this._dialogRef.data.confirmationDialogText;\n        }\n\n        if (this._dialogRef.data.confirmationDialogCancelText) {\n            this.confirmationDialogCancelText = this._dialogRef.data.confirmationDialogCancelText;\n        }\n\n        if (this._dialogRef.data.confirmationDialogCloseText) {\n            this.confirmationDialogCloseText = this._dialogRef.data.confirmationDialogCloseText;\n        }\n    }\n\n    /**\n     * @description Cancels Wizard progress and closes the dialog.\n     */\n    cancel(): void {\n        if (this._wizardGeneratorService.isStepsUntouched()) {\n            this._dialogRef.dismiss();\n\n            return;\n        }\n\n        const template = this.confirmationDialogTemplate || this.defaultConfirmationDialogTemplate;\n\n        const messageBoxRef = this._messageBoxService.open(template, { responsivePadding: true });\n\n        messageBoxRef.afterClosed\n            .pipe(\n                filter((result) => result),\n                takeUntilDestroyed(this._destroyRef)\n            )\n            .subscribe(() => {\n                this._dialogRef.dismiss();\n            });\n    }\n\n    /**\n     * @description Completes Wizard process, emits Wizard result and closes the dialog.\n     */\n    async finish(): Promise<void> {\n        if (this.isSummaryStep) {\n            const wizardResult = await this._wizardGeneratorService.getWizardFormValue(true);\n            this._dialogRef.close(wizardResult);\n            return;\n        }\n\n        const currentStepId = this._wizardGeneratorService.getCurrentStepId();\n        this.submitStepForms(currentStepId)\n            .pipe(takeUntilDestroyed(this._destroyRef))\n            .subscribe(async (result) => {\n                if (result && Object.values(result).some((r) => !r.success)) {\n                    return;\n                }\n\n                const wizardResult = await this._wizardGeneratorService.getWizardFormValue(true);\n                this._dialogRef.close(wizardResult);\n            });\n    }\n\n    /**\n     * @hidden\n     */\n    _goBackFn: () => void = () => this.goBack();\n    /**\n     * @hidden\n     */\n    _goNextFn: () => Promise<void> = () => this.goNext();\n\n    /**\n     * @hidden\n     */\n    _finishFn: () => Promise<void> = () => this.finish();\n\n    /**\n     * @hidden\n     */\n    _cancelFn: () => void = () => this.cancel();\n}\n","<fd-dialog>\n    <fd-dialog-header>\n        <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n    </fd-dialog-header>\n    <fd-dialog-body>\n        <fdp-wizard-body\n            [navigationButtons]=\"false\"\n            [displaySummaryStep]=\"displaySummaryStep\"\n            [responsivePaddings]=\"responsivePaddings\"\n            [navigationButtonLabels]=\"_navigationButtonLabels\"\n            [customSummaryStepTemplate]=\"summaryStepTemplate\"\n            [reviewButtonTemplate]=\"reviewButtonTemplate\"\n            [hidden]=\"!wizardCreated\"\n            [appendToWizard]=\"appendToWizard\"\n            [unifiedLayout]=\"unifiedLayout\"\n            [contentHeight]=\"contentHeight\"\n            (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n        ></fdp-wizard-body>\n        @if (wizardCreated) {\n            <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n                <div fd-bar-right>\n                    @if (!isFirstStep) {\n                        <ng-template #defaultGoBackButtonTemplate>\n                            <button\n                                fd-button\n                                [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n                                [fdType]=\"_navigationButtonLabels.goBack.type\"\n                                [label]=\"_navigationButtonLabels.goBack.label\"\n                                (click)=\"goBack()\"\n                            ></button>\n                        </ng-template>\n                        <ng-template\n                            [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n                            [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n                        ></ng-template>\n                    }\n                    @if (!isLastStep) {\n                        <ng-template #defaultGoNextButtonTemplate>\n                            <button\n                                fd-button\n                                [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n                                [fdType]=\"_navigationButtonLabels.goNext.type\"\n                                [label]=\"_navigationButtonLabels.goNext.label\"\n                                (click)=\"goNext()\"\n                            ></button>\n                        </ng-template>\n                        <ng-template #defaultReviewButtonTemplate>\n                            <button\n                                fd-button\n                                [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n                                [fdType]=\"_navigationButtonLabels.review.type\"\n                                [label]=\"_navigationButtonLabels.review.label\"\n                                (click)=\"goNext()\"\n                            ></button>\n                        </ng-template>\n                        @if (\n                            (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n                        ) {\n                            <ng-template\n                                [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n                                [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n                            ></ng-template>\n                        } @else {\n                            <ng-template\n                                [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n                                [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n                            ></ng-template>\n                        }\n                    }\n                    @if (isLastStep) {\n                        <ng-template #defaultFinishButtonTemplate>\n                            <button\n                                fd-button\n                                [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n                                [fdType]=\"_navigationButtonLabels.finish.type\"\n                                [label]=\"_navigationButtonLabels.finish.label\"\n                                (click)=\"finish()\"\n                            ></button>\n                        </ng-template>\n                        <ng-template\n                            [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n                            [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n                        ></ng-template>\n                    }\n                    <ng-template #defaultCancelButtonTemplate>\n                        <button\n                            fd-button\n                            [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n                            [fdType]=\"_navigationButtonLabels.cancel.type\"\n                            [label]=\"_navigationButtonLabels.cancel.label\"\n                            (click)=\"cancel()\"\n                        ></button>\n                    </ng-template>\n                    <ng-template\n                        [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n                        [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n                    ></ng-template>\n                </div>\n            </div>\n        }\n    </fd-dialog-body>\n</fd-dialog>\n<ng-template\n    [fdMessageBoxTemplate]\n    let-messageBox\n    let-messageBoxConfig=\"messageBoxConfig\"\n    #defaultConfirmationDialogTemplate\n>\n    <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n        <fd-message-box-body>\n            {{ confirmationDialogText }}\n        </fd-message-box-body>\n        <fd-message-box-footer>\n            <fd-button-bar\n                fdType=\"emphasized\"\n                [label]=\"confirmationDialogCloseText\"\n                type=\"submit\"\n                (click)=\"messageBox.close(true)\"\n            >\n            </fd-button-bar>\n            <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n            </fd-button-bar>\n        </fd-message-box-footer>\n    </fd-message-box>\n</ng-template>\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdpWizardGeneratorFinishButton], [fdp-wizard-generator-finish-button]',\n    standalone: true\n})\nexport class WizardGeneratorFinishButtonDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdpWizardGeneratorGoNextButton], [fdp-wizard-generator-go-next-button]',\n    standalone: true\n})\nexport class WizardGeneratorGoNextButtonDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdpWizardGeneratorReviewButton], [fdp-wizard-generator-review-button]',\n    standalone: true\n})\nexport class WizardGeneratorReviewButtonDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({\n    selector: '[fdpWizardGeneratorSummaryStep], [fdp-wizard-generator-summary-step]',\n    standalone: true\n})\nexport class WizardGeneratorSummaryStepDirective {}\n","import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { FormGeneratorService } from '@fundamental-ngx/platform/form';\n\nimport { range } from '@fundamental-ngx/cdk/utils';\nimport { SkeletonComponent } from '@fundamental-ngx/core/skeleton';\nimport { WizardModule } from '@fundamental-ngx/core/wizard';\nimport { FdTranslatePipe } from '@fundamental-ngx/i18n';\nimport { BaseWizardGenerator } from '../../base-wizard-generator';\nimport { WizardGeneratorFinishButtonDirective } from '../../directives/wizard-generator-finish-button.directive';\nimport { WizardGeneratorGoNextButtonDirective } from '../../directives/wizard-generator-go-next-button.directive';\nimport { WizardGeneratorReviewButtonDirective } from '../../directives/wizard-generator-review-button.directive';\nimport { WizardGeneratorSummaryStepDirective } from '../../directives/wizard-generator-summary-step.directive';\nimport { WizardGeneratorService } from '../../wizard-generator.service';\nimport { WizardBodyComponent } from '../wizard-body/wizard-body.component';\n\n@Component({\n    selector: 'fdp-wizard-generator',\n    templateUrl: './wizard-generator.component.html',\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [WizardGeneratorService, FormGeneratorService],\n    imports: [WizardBodyComponent, WizardModule, SkeletonComponent, FdTranslatePipe]\n})\nexport class WizardGeneratorComponent extends BaseWizardGenerator {\n    /**\n     * User-defined template for \"Finish\" button.\n     */\n    @ContentChild(WizardGeneratorFinishButtonDirective, { read: TemplateRef })\n    finishButtonTemplate: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for \"Go Next\" button.\n     */\n    @ContentChild(WizardGeneratorGoNextButtonDirective, { read: TemplateRef })\n    goNextButtonTemplate: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for Summary step.\n     */\n    @ContentChild(WizardGeneratorSummaryStepDirective, { read: TemplateRef })\n    customSummaryStepTemplate: TemplateRef<HTMLElement>;\n\n    /**\n     * User-defined template for \"Review\" button\n     */\n    @ContentChild(WizardGeneratorReviewButtonDirective, { read: TemplateRef })\n    reviewButtonTemplate: TemplateRef<HTMLElement>;\n\n    /** @hidden */\n    readonly loadingRange = range(3);\n}\n","@if (wizardCreated) {\n    <fdp-wizard-body\n        [navigationButtonLabels]=\"_navigationButtonLabels\"\n        [goNextButtonTemplate]=\"goNextButtonTemplate\"\n        [finishButtonTemplate]=\"finishButtonTemplate\"\n        [customSummaryStepTemplate]=\"customSummaryStepTemplate\"\n        [reviewButtonTemplate]=\"reviewButtonTemplate\"\n        [responsivePaddings]=\"responsivePaddings\"\n        [hidden]=\"!wizardCreated\"\n        [appendToWizard]=\"appendToWizard\"\n        [contentHeight]=\"contentHeight\"\n        [isFirstStep]=\"isFirstStep\"\n        [isLastStep]=\"isLastStep\"\n        [isNextStepSummary]=\"isNextStepSummary\"\n        [isSummaryStep]=\"isSummaryStep\"\n        [displaySummaryStep]=\"displaySummaryStep\"\n        [navigationButtons]=\"navigationButtons\"\n        [unifiedLayout]=\"unifiedLayout\"\n        [isBranchingStep]=\"isBranchingStep\"\n        [isCurrentStepCompleted]=\"isCurrentStepCompleted\"\n        [stepsOrderChanged]=\"_stepsOrderChanged\"\n        (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n        (goNext)=\"goNext()\"\n        (finish)=\"finish()\"\n    ></fdp-wizard-body>\n} @else {\n    <fd-wizard>\n        <fd-wizard-navigation>\n            <ul\n                fd-wizard-progress-bar\n                size=\"lg\"\n                role=\"list\"\n                [attr.aria-label]=\"('platformWizardGenerator.stepsLabel' | fdTranslate)()\"\n            >\n                @for (i of loadingRange; track i) {\n                    <li fd-wizard-step [status]=\"i === 0 ? 'current' : 'upcoming'\">\n                        <fd-skeleton type=\"rectangle\" width=\"32px\" height=\"32px\"></fd-skeleton>\n                        <fd-wizard-content size=\"lg\">\n                            <fd-skeleton type=\"text\" width=\"60%\"></fd-skeleton>\n                        </fd-wizard-content>\n                    </li>\n                }\n            </ul>\n        </fd-wizard-navigation>\n    </fd-wizard>\n}\n<!-- The Wizard -->\n","import { Injectable } from '@angular/core';\n\nimport { DialogConfig, DialogRef, DialogService } from '@fundamental-ngx/core/dialog';\nimport { DialogWizardGeneratorComponent } from './components/dialog-wizard-generator/dialog-wizard-generator.component';\nimport { WizardDialogData } from './interfaces/wizard-dialog-data.interface';\nimport { WizardGeneratorFormsValue } from './interfaces/wizard-generator-forms.interface';\n\n/**\n * @description Helper service to launch Wizard in dialog with minimal user input.\n */\n@Injectable()\nexport class WizardDialogGeneratorService {\n    /** @hidden */\n    constructor(private _dialogService: DialogService) {}\n\n    /**\n     * @description Opens dialog with wizard component inside.\n     * @param config Dialog options with wizard config.\n     * @returns DialogRef instance.\n     */\n    open(config: DialogConfig<WizardDialogData>): DialogRef<WizardDialogData, WizardGeneratorFormsValue> {\n        const dialogRef = this._dialogService.open(DialogWizardGeneratorComponent, config);\n\n        return dialogRef;\n    }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n    FORM_GENERATOR_CONFIG,\n    FORM_GENERATOR_ITEM_CONFIG,\n    FormGeneratorModuleConfig,\n    PlatformFormGeneratorModule\n} from '@fundamental-ngx/platform/form';\nimport { DialogWizardGeneratorComponent } from './components/dialog-wizard-generator/dialog-wizard-generator.component';\nimport { WizardBodyComponent } from './components/wizard-body/wizard-body.component';\nimport { WizardGeneratorStepComponent } from './components/wizard-generator-step/wizard-generator-step.component';\nimport { WizardGeneratorComponent } from './components/wizard-generator/wizard-generator.component';\nimport { WizardSummarySectionComponent } from './components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component';\nimport { WizardSummaryStepComponent } from './components/wizard-summary-step/wizard-summary-step.component';\nimport { WizardGeneratorFinishButtonDirective } from './directives/wizard-generator-finish-button.directive';\nimport { WizardGeneratorGoNextButtonDirective } from './directives/wizard-generator-go-next-button.directive';\nimport { WizardGeneratorReviewButtonDirective } from './directives/wizard-generator-review-button.directive';\nimport { WizardGeneratorSummaryStepDirective } from './directives/wizard-generator-summary-step.directive';\nimport { WizardDialogGeneratorService } from './wizard-dialog-generator.service';\n\n/**\n * Adds Wizard Generator functionality to your application.\n *\n * Can be imported in two ways:\n * * Plain PlatformWizardGeneratorModule with default configuration\n * * With `withConfig()` method which allows passing custom default configuration.\n */\n/**\n * @deprecated\n * Use direct imports of components and directives.\n */\n@NgModule({\n    imports: [\n        PlatformFormGeneratorModule,\n        WizardGeneratorComponent,\n        WizardGeneratorStepComponent,\n        WizardBodyComponent,\n        DialogWizardGeneratorComponent,\n        WizardSummaryStepComponent,\n        WizardSummarySectionComponent,\n        WizardGeneratorGoNextButtonDirective,\n        WizardGeneratorFinishButtonDirective,\n        WizardGeneratorSummaryStepDirective,\n        WizardGeneratorReviewButtonDirective\n    ],\n    exports: [\n        WizardGeneratorComponent,\n        WizardGeneratorStepComponent,\n        WizardBodyComponent,\n        DialogWizardGeneratorComponent,\n        WizardSummaryStepComponent,\n        WizardSummarySectionComponent,\n        WizardGeneratorGoNextButtonDirective,\n        WizardGeneratorFinishButtonDirective,\n        WizardGeneratorSummaryStepDirective,\n        WizardGeneratorReviewButtonDirective\n    ],\n    providers: [WizardDialogGeneratorService]\n})\nexport class PlatformWizardGeneratorModule {\n    /**\n     * Allows configuring module on a global level with custom configuration.\n     * @param config User's custom configuration.\n     */\n    static withConfig(config: Partial<FormGeneratorModuleConfig>): ModuleWithProviders<PlatformWizardGeneratorModule> {\n        return {\n            ngModule: PlatformWizardGeneratorModule,\n            providers: [\n                {\n                    provide: FORM_GENERATOR_ITEM_CONFIG,\n                    useValue: config.itemConfig\n                },\n                {\n                    provide: FORM_GENERATOR_CONFIG,\n                    useValue: config.formConfig\n                }\n            ]\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","isFunction","i1.WizardGeneratorService","i2"],"mappings":"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"}