@hermes-ui/angular 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -52
- package/button/_buttons.clarity.scss +80 -2
- package/button/_mixins.buttons.scss +44 -2
- package/button/_properties.buttons.scss +349 -387
- package/button/_variables.buttons.scss +22 -0
- package/fesm2022/hermes-ui-angular-accordion.mjs +2 -2
- package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-a11y.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs +3 -3
- package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +30 -30
- package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-dialog.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-menu.mjs +8 -8
- package/fesm2022/hermes-ui-angular-addons-menu.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-stepper.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-tabs.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-testing.mjs +78 -78
- package/fesm2022/hermes-ui-angular-addons-testing.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +66 -66
- package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-var.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs +2 -2
- package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-addons-workflow.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-button.mjs +76 -76
- package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-card.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-collapsible-panel.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs +928 -928
- package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs +116 -116
- package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs +14 -14
- package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-data.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-divider.mjs +2 -2
- package/fesm2022/hermes-ui-angular-divider.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +2 -2
- package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-emphasis-badge.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-emphasis-label.mjs +16 -16
- package/fesm2022/hermes-ui-angular-emphasis-label.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-emphasis.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +52 -52
- package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs +128 -128
- package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-common.mjs +2 -2
- package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs +48 -48
- package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +377 -377
- package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs +192 -192
- package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-input.mjs +54 -54
- package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs +40 -40
- package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs +82 -82
- package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-password.mjs +60 -60
- package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-radio.mjs +52 -52
- package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-range.mjs +46 -46
- package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-select.mjs +10 -10
- package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs +40 -40
- package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-forms.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-icon.mjs +29 -29
- package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-main-container.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-nav.mjs +48 -48
- package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs +148 -148
- package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +382 -28
- package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-layout.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-modal.mjs +2 -2
- package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-pagination.mjs +8 -8
- package/fesm2022/hermes-ui-angular-pagination.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover-common.mjs +26 -3
- package/fesm2022/hermes-ui-angular-popover-common.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover-dropdown.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs +68 -68
- package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover-tooltip.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-popover.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs +10 -10
- package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-progress-spinner.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-stepper.mjs +2 -2
- package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-timeline.mjs +2 -2
- package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-toast.mjs +6 -6
- package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-utils-conditional.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-utils.mjs +6 -0
- package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular-wizard.mjs +58 -58
- package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
- package/fesm2022/hermes-ui-angular.mjs.map +1 -1
- package/forms/combobox/_combobox.clarity.scss +18 -4
- package/forms/combobox/_properties.combobox.scss +5 -5
- package/forms/styles/_input-group.clarity.scss +7 -0
- package/forms/styles/_mixins.forms.scss +12 -10
- package/forms/styles/_native-select.clarity.scss +17 -5
- package/forms/styles/_properties.forms.scss +29 -18
- package/forms/styles/_textarea.clarity.scss +4 -4
- package/forms/styles/_variables.forms.scss +6 -0
- package/hermes-ui.scss +7 -7
- package/layout/main-container/_properties.header.scss +44 -6
- package/layout/main-container/_variables.header.scss +11 -0
- package/layout/nav/_header.clarity.scss +14 -0
- package/layout/nav/_mixins.header.scss +55 -40
- package/layout/nav/_responsive-nav.clarity.scss +21 -10
- package/layout/vertical-nav/_properties.vertical-nav.scss +77 -27
- package/layout/vertical-nav/_variables.vertical-nav.scss +23 -0
- package/layout/vertical-nav/_vertical-nav.clarity.scss +418 -277
- package/package.json +1 -1
- package/toast/README.md +65 -65
- package/toast/_properties.toast.scss +56 -56
- package/toast/_toast.clarity.scss +190 -190
- package/toast/_variables.toast.scss +33 -33
- package/types/hermes-ui-angular-addons-theme-builder.d.ts +2 -2
- package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -1
- package/types/hermes-ui-angular-data-datagrid.d.ts.map +1 -1
- package/types/hermes-ui-angular-icon.d.ts +3 -3
- package/types/hermes-ui-angular-icon.d.ts.map +1 -1
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts +134 -10
- package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -1
- package/types/hermes-ui-angular-popover-common.d.ts +4 -3
- package/types/hermes-ui-angular-popover-common.d.ts.map +1 -1
- package/types/hermes-ui-angular-utils.d.ts +12 -0
- package/types/hermes-ui-angular-utils.d.ts.map +1 -1
- package/types/hermes-ui-angular-wizard.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-ui-angular-addons-stepper.mjs","sources":["../../../addons/stepper/summary/summary.service.ts","../../../addons/stepper/state/stepper-state.service.ts","../../../addons/stepper/stepper.component.ts","../../../addons/stepper/stepper.component.html","../../../addons/stepper/stepper.module.ts","../../../addons/stepper/index.ts","../../../addons/stepper/hermes-ui-angular-addons-stepper.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport {\n PropertyViewBuilder,\n PropertyViewCategoryBuilder,\n PropertyViewModel,\n PropertyViewSectionBuilder,\n PropertyViewSectionModel,\n} from '@hermes-ui/angular/addons/property-view';\nimport { Step, StepInternal } from '@hermes-ui/angular/addons/var';\n\n/**\n * SummaryService provides methods to build data required to display Step summary using appfx-property-view.\n */\n@Injectable()\nexport class SummaryService {\n /**\n * Builds {@link PropertyViewModel} for the Step passed using Step#description field.\n */\n getDescription(step: Step): PropertyViewModel | undefined {\n if (step.description) {\n return this.getPropertyViewModelFromMessage(step.description);\n }\n return undefined;\n }\n\n /**\n * Builds {@link PropertyViewModel} for the Step passed using Step#summary method.\n */\n getSummary(step: StepInternal): PropertyViewModel | undefined {\n if (step.summary) {\n const stepSummary = step.summary(this.getPropertyViewSectionBuilder(), step.modelInstance);\n return this.getPropertyViewModelFromPropertyViewSectionModel(stepSummary);\n }\n return undefined;\n }\n\n private getPropertyViewModelFromMessage(data: string): PropertyViewModel {\n const builder = this.getPropertyViewBuilder();\n const categoryBuilder = builder.generateAllCategory('');\n categoryBuilder.section('defaultSection').message(data).renderAsHtml(true);\n return builder.build();\n }\n\n private getPropertyViewModelFromPropertyViewSectionModel(data: PropertyViewSectionModel): PropertyViewModel {\n const categoryBuilder = this.getPropertyViewCategoryBuilder();\n const category = categoryBuilder.build();\n category.content = [data];\n return {\n categories: [category],\n };\n }\n\n private getPropertyViewSectionBuilder(): PropertyViewSectionBuilder {\n return this.getPropertyViewCategoryBuilder().section('defaultSection');\n }\n\n private getPropertyViewCategoryBuilder(): PropertyViewCategoryBuilder {\n return this.getPropertyViewBuilder().generateAllCategory('');\n }\n\n private getPropertyViewBuilder(): PropertyViewBuilder {\n return new PropertyViewBuilder();\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Step, StepInternal } from '@hermes-ui/angular/addons/var';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\n\nimport { SummaryService } from '../summary/summary.service';\n\n/**\n * HermesStepper component has very limited API. It does not provide public information\n * about the expanded state of the step panels. Also it does not provide straight forward\n * API for notification when a panel get expanded.\n * This class is responsible for exposing the state of Clarity stepper component.\n * It monitors the current state of all panels. When a panel is expanded,\n * {@link onStepActivated$} observable emits.\n */\n@Injectable()\nexport class StepperStateService {\n /**\n * Observable that emits when the user expands a HermesStepper panel.\n */\n onStepActivated$: Observable<StepState>;\n\n /**\n * Current state of all panels.\n */\n private panelState$ = new BehaviorSubject<StepState[]>([]);\n\n /**\n * Panel state on the previous user interaction.\n */\n private lastExpandedState: StepState[] = [];\n\n constructor(private summaryService: SummaryService) {\n this.onStepActivated$ = this.initOnStepActivated$();\n }\n\n /**\n * Must be invoked when {@link HermesAccordionPanel#panelOpenChange} EventEmitter emits.\n * `panelOpenChange` emits when a panel changes its opened state.\n * One would expect this listener to be invoked once per panel transition (current panel\n * is closed and the next is opened). Unfortunately this is not the case. The listener\n * is invoked every time for all panels on every transition and sometimes even multiple times\n * for one and the same panel just for a single transition.\n * The panels states are pushed to {@link panelState$} subject, that is debounced.\n *\n * @param step Step, rendered by the Clarity stepper\n * @param expanded Expanded state of the step\n * @param index Step index (different than the panel index, as some steps might be skipped)\n */\n stepActivated(step: Step, expanded: boolean, index: number): void {\n const expandedState = this.panelState$.value;\n if (expandedState[index] && expandedState[index].expanded === expanded) {\n // Current and previous expanded state is the same. Do nothing.\n return;\n }\n\n const isStepValid = expandedState[index] ? expandedState[index].valid : false;\n // console.log(`Step ${name} expanded: ${expanded} index: ${index}`);\n expandedState[index] = {\n step: step,\n expanded: expanded,\n index: index,\n valid: isStepValid,\n };\n this.panelState$.next(expandedState);\n }\n\n /**\n * Marks a step as valid or not depending on the passed state.\n * @param {Step} step Step, which has be marked as valid\n * @param {boolean} isValid The valid state of the step\n */\n markStepValid(step: Step, isValid: boolean): void {\n const stepState = this.panelState$.value.find((panelState: StepState) => panelState && panelState.step === step);\n if (stepState) {\n stepState.valid = isValid;\n }\n }\n\n /**\n * Reset the valid states of the next steps\n * @param {Step} step Step after which all next steps to be reset\n */\n resetNextStepsValidStates(step: Step): void {\n const stepStateIndex = this.panelState$.value.findIndex(\n currentStepState => currentStepState && currentStepState.step === step\n );\n this.panelState$.value.forEach(currentStepState => {\n if (currentStepState && currentStepState.index > stepStateIndex) {\n currentStepState.valid = false;\n (<StepInternal>currentStepState.step).initialDescription = this.summaryService.getDescription(\n currentStepState.step\n );\n }\n });\n }\n\n /**\n * Finds the index of the first step in the list which is not skipped and not-valid/incomplete.\n * This method always considers the last not skipped step in the stepper as incomplete.\n * @returns {number} The index of the first incomplete step or the index of the last step if all are completed.\n */\n getIndexOfFirstIncompleteStep(): number {\n const notValidStep = this.panelState$.value.find(\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped && !stepState.valid\n );\n if (notValidStep) {\n return notValidStep.index;\n } else {\n // If all steps are valid then return the last valid step as incomplete.\n const validSteps = this.panelState$.value.filter(\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped && stepState.valid\n );\n return validSteps.length ? validSteps[validSteps.length - 1].index : 0;\n }\n }\n\n /**\n * Finds the index of the first visible step container which is not-valid/incomplete.\n * This method always considers the last visible step in the stepper as incomplete.\n *\n * Note that since skipped steps are not rendered there are no step containers for those.\n * E.g if we have the following steps:\n * 0 - step 1, valid\n * 1 - step 2, valid & skipped,\n * 2 - step 3, invalid\n * The method will return 1 because step 2 will not be rendered at all and we will have only\n * two step containers.\n *\n * @returns {number} The index of the first incomplete step container or the index of the\n * last one if all are completed.\n */\n getFirstIncompleteStepContainerIndex(): number {\n // filter out all skipped steps as they are not rendered.\n const visibleSteps = this.panelState$.value.filter(\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped\n );\n\n const firstInvalidStepIndex = visibleSteps.findIndex(stepState => !stepState.valid);\n if (firstInvalidStepIndex >= 0) {\n return firstInvalidStepIndex;\n }\n\n return visibleSteps.length ? visibleSteps.length - 1 : 0;\n }\n\n /**\n * Checks if all steps are in completed state.\n * @returns {boolean} True if all steps are completed, False otherwise.\n */\n areAllStepsCompleted(): boolean {\n return this.panelState$.value.every(\n stepState => stepState && ((<StepInternal>stepState.step).isSkipped || stepState.valid)\n );\n }\n\n /**\n * Method to find out if the step at a given index is expanded or not.\n * List of step states are retrieved and based on the index; 'expanded'\n * property lets us know if the step is currently open or not.\n * @param {number} index of the step\n * @returns {boolean}\n */\n isStepActivated(index: number): boolean {\n const panelState = this.panelState$.value;\n if (panelState[index]) {\n return panelState[index].expanded;\n } else {\n return true;\n }\n }\n\n /**\n * Determines if a step at a specific index is the first visible step in the provided list.\n * @param index The index to check.\n * @param steps The list of internal steps to evaluate for skipped status.\n * @returns True if the index is the first non-skipped step, false otherwise.\n */\n isFirstVisibleStep(index: number, steps: StepInternal[]): boolean {\n const firstVisible = steps.findIndex(s => !s.isSkipped);\n return index === firstVisible;\n }\n\n private initOnStepActivated$(): Observable<StepState> {\n return <Observable<StepState>>this.panelState$.pipe(\n debounceTime(50),\n map((currentState: StepState[]) => {\n // Find a step that is now expanded and was previously collapsed.\n const expandedStep = currentState.find(\n (currExpanded: StepState, index: number) =>\n // current state is expanded\n currExpanded &&\n currExpanded.expanded &&\n // AND previous state was collapsed or it is a newly added panel\n (!this.lastExpandedState[index] || !this.lastExpandedState[index].expanded)\n );\n\n this.lastExpandedState = currentState.concat();\n\n return expandedStep;\n }),\n filter((stepState: StepState | undefined) => !!stepState)\n );\n }\n}\n\nexport interface StepState {\n step: Step;\n expanded: boolean;\n index: number;\n valid?: boolean;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport type { QueryList } from '@angular/core';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport {\n InjectPropertiesResult,\n ModelChange,\n RelevanceService,\n Step,\n StepContainer,\n StepInternal,\n WorkflowModel,\n WorkflowModelManager,\n} from '@hermes-ui/angular/addons/var';\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\nimport { CollapsiblePanelModel } from '@hermes-ui/angular/collapsible-panel';\nimport { HermesStepButton, HermesStepper, HermesStepperPanel, StepperPanelStatus, StepperService } from '@hermes-ui/angular/stepper';\nimport type { HermesCommonStrings } from '@hermes-ui/angular/utils';\nimport { BehaviorSubject, combineLatest, Observable, of, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { filter, first, switchMap, take, tap } from 'rxjs/operators';\n\nimport { StepperStateService, StepState } from './state/stepper-state.service';\nimport { SummaryService } from './summary/summary.service';\n\n/**\n * Component used to render the composition of step components as inline wizard\n * (using Clarity stepper component). Workflow of the steps is handled by the\n * {@link WorkflowModelManager} - the same responsible for the {@link AppfxWizardComponent} workflow.\n * This guarantees the same API and UX for the inline and dialog wizards.\n */\n@Component({\n selector: 'appfx-stepper',\n standalone: false,\n templateUrl: 'stepper.component.html',\n styleUrls: ['stepper.component.scss'],\n providers: [RelevanceService, StepperStateService, SummaryService, WorkflowModelManager],\n})\nexport class StepperComponent implements OnDestroy, AfterViewInit, AfterContentInit {\n /**\n * Display loading indicator.\n */\n @Input() loading = false;\n\n /**\n * If set to true, the Next button will use the primary (solid) button style.\n * Defaults to false to maintain backward compatibility for existing consumers.\n */\n @Input() usePrimaryNextButton = false;\n\n /**\n * If set to true, a \"Back\" button is displayed in every step except the first visible one.\n * This allows users to navigate to the previous non-skipped step.\n */\n @Input() showBackButton = false;\n\n /**\n * If set to true, a \"Cancel\" button is displayed in all steps.\n * This allows users to terminate the workflow before completion.\n */\n @Input() showCancelButton = false;\n\n /**\n * Dispatches when any of the workflow state's variables changes.\n */\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\n\n /**\n * Dispatched when the workflow is finished via the Finish button.\n * You can perform the actions you want there (i.e modify or create something)\n */\n @Output() readonly onFinish: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * Dispatched when the user clicks the \"Cancel\" button.\n * Use this to handle navigation away from the stepper or closing the containing view.\n */\n @Output() readonly onCancel: EventEmitter<void> = new EventEmitter<void>();\n\n form: UntypedFormGroup;\n initialStep: string;\n stepPanelOverriddenStrings: Partial<HermesCommonStrings>;\n\n @ViewChildren(StepContainer) private pagesContainers: QueryList<StepContainer>;\n\n @ViewChildren(HermesStepperPanel) private stepperPanels: QueryList<HermesStepperPanel>;\n\n private activeStep: Step | undefined;\n private activePage: StepContainer | undefined;\n private awaitingWizardPageOnLoad$: ReplaySubject<Step> = new ReplaySubject(Infinity);\n private componentAfterViewInit$: Subject<void> = new Subject();\n private readonly subscriptions = new Subscription();\n private retrySubscription: Subscription;\n private stepperService: StepperService;\n private errorActivatingStep = false;\n\n #steps: StepInternal[];\n #wizardModel: any;\n\n constructor(\n readonly stateService: StepperStateService,\n readonly workflowStrings: WorkflowStrings,\n private readonly modelMgr: WorkflowModelManager,\n private readonly relevanceService: RelevanceService,\n private readonly formBuilder: UntypedFormBuilder,\n private readonly cdr: ChangeDetectorRef,\n private readonly summaryService: SummaryService\n ) {\n this.form = formBuilder.group({});\n\n this.subscriptions.add(\n modelMgr.onModelChange$.subscribe((changes: ModelChange[]) => {\n this.onModelChange.emit(changes);\n this.invalidateNextSteps();\n })\n );\n this.subscriptions.add(modelMgr.loading$.subscribe(loading => (this.loading = loading)));\n this.subscriptions.add(\n stateService.onStepActivated$.subscribe((stepState: StepState) => {\n // When navigated back to a previous step and user clicks next without doing any changes\n // all future steps are invalidated and their completion step is reset.\n // To workaround this and to preserve the state of the future steps as completed when there are no changes\n // the Stepper#completePreviousSteps function is invoked, which marks all previous steps as complete.\n // It has to be invoked with the index of the step which is right after\n // the last step known as complete in the list as this method marks all previous steps as completed, along\n // with the index of the step that is currently being expanded, so as not to be marked as closed (open=false).\n // After this the initialStep value has to be set to name of the step currently being activated to open it\n // in the stepper.\n // e.g. if step 6 is the first incomplete step in the list meaning the previous steps are all completed and\n // it is navigated back to step 2, after clicking next when step 3 is being activated\n // invoking Stepper#completePreviousSteps with the index of step 6 as the source and index of step 3 as the target,\n // it will mark all steps up to and including 5 as completed. After this the initialStep value has to be set\n // to the form group name of step 3 to open it in the stepper.\n // Caveat: when all steps are completed and it is navigated back, stateService#getIndexOfFirstIncompleteStep\n // returns the index of the last not skipped step in the stepper as if it returns 0 the valid states\n // of the steps that come after the current step will be lost and there is no public method in the stepper API\n // which to mark all steps as complete.\n const indexOfFirstIncompleteStep = stateService.getIndexOfFirstIncompleteStep();\n\n if (stepState.index !== indexOfFirstIncompleteStep) {\n this.completePreviousSteps(indexOfFirstIncompleteStep, stepState.index);\n }\n\n this.initialStep = this.getFormGroupNameForStep(stepState.index);\n\n this.onStepActivated(stepState.step);\n\n // On step activation reset the dynamic description with step's description.\n (<StepInternal>stepState.step).initialDescription = summaryService.getDescription(stepState.step);\n })\n );\n\n this.stepPanelOverriddenStrings = {\n success: workflowStrings.step.completed,\n danger: workflowStrings.step.error,\n };\n }\n\n /**\n * The descriptions of the pages that are visualized.\n */\n get steps(): Step[] {\n return this.#steps;\n }\n\n @Input()\n set steps(value: Step[]) {\n this.relevanceService.steps = value;\n this.relevanceService\n .checkComplete$()\n .pipe(take(1))\n .subscribe((steps: Step[]) => {\n this.#steps = steps;\n this.modelMgr.steps = steps;\n this.initForm(steps);\n this.#steps.forEach(step => (step.initialDescription = this.summaryService.getDescription(step)));\n });\n }\n\n get stepsInternal(): StepInternal[] {\n return this.#steps;\n }\n\n /**\n * You can supply here any structure you like. As long as it has the\n * needed properties to inject to the page models and eject back from\n * the page models.\n */\n get wizardModel(): WorkflowModel {\n return this.#wizardModel;\n }\n\n @Input()\n set wizardModel(value: WorkflowModel) {\n this.#wizardModel = value;\n this.modelMgr.model = value;\n }\n\n @ViewChildren(HermesStepButton)\n set hermesStepButtons(hermesStepButtons: QueryList<HermesStepButton>) {\n hermesStepButtons.forEach((button: HermesStepButton) => {\n // Check if button's navigateToNextPanel has already been patched with the additional validation logic.\n if (!(button as any)['navigatePatched']) {\n const hermesStepButtonNavigateToNextPanelFn = button.navigateToNextPanel.bind(button);\n button.navigateToNextPanel = this.onHermesStepButtonClickedWrapperFn(hermesStepButtonNavigateToNextPanelFn);\n (button as any)['navigatePatched'] = true;\n }\n });\n }\n\n @ViewChild(HermesStepper, { static: false })\n set stepper(value: HermesStepper) {\n this.stepperService = value['stepperService'];\n this.patchStepperService();\n this.subscribeForPanelChanges();\n }\n\n // Maps to Wizard.isLoading\n get isLoading(): boolean {\n return (\n this.loading || // explicitly set as busy\n this.relevanceService.loading || // check if relevanceCheck computation in progress\n // additionally inspect pages containers and see if any one is loading\n (!!this.pagesContainers &&\n this.pagesContainers.some(\n (value: StepContainer) => !!value.step.modelInstance && !!value.step.modelInstance.loading\n ))\n );\n }\n\n get pageProgressDetails(): string {\n return this.activePage?.step?.modelInstance?.progressStatus || '';\n }\n\n get showProgressCancelButton(): boolean {\n return typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function';\n }\n\n get cancelValidationButtonLabel(): string {\n return this.activePage?.step?.modelInstance?.cancelableValidation?.cancelButtonLabel || '';\n }\n\n cancelPageValidation(): void {\n if (typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function') {\n this.activePage?.step?.modelInstance?.cancelableValidation.cancelValidation();\n }\n }\n\n isNextButtonDisabled(step: Step) {\n const activeContainer = this.pagesContainers && this.pagesContainers.find(item => item.step === step);\n return this.isLoading || this.errorActivatingStep || (activeContainer ? !activeContainer.readyToComplete : false);\n }\n\n ngOnDestroy() {\n this.#steps = [];\n this.activeStep = undefined;\n this.subscriptions.unsubscribe();\n this.unsubscribeRetry();\n this.modelMgr.destroy();\n }\n\n ngAfterViewInit() {\n if (this.pagesContainers.length) {\n // If relevance checks are fast enough (or there are no relevance checks), _pagesContainers will be initialized.\n this.componentAfterViewInit$.next();\n } else {\n // Relevance checks may take some time, wait for _pagesContainers to initialize\n this.pagesContainers.changes.pipe(take(1)).subscribe(() => this.componentAfterViewInit$.next());\n }\n }\n\n ngAfterContentInit() {\n // upon getting a wizard page onLoad signal and safely ensuring component has instantiated itself with `AppfxWizardPage`\n // elements in the template, only then activate the pending container\n this.subscriptions.add(\n combineLatest([this.componentAfterViewInit$, this.awaitingWizardPageOnLoad$])\n .pipe(\n filter(() => !!this.pagesContainers),\n switchMap(([, pendingStep]) => this.modelMgr.injectPropertiesToPendingStep(pendingStep))\n )\n .subscribe(result => {\n this.errorActivatingStep = !!result.error;\n this.activatePendingContainer(result);\n })\n );\n }\n\n // Maps to Wizard.onWizardPageActivated\n onStepActivated(step: Step): void {\n this.awaitingWizardPageOnLoad$.next(step);\n }\n\n /**\n * Wrapper function which to wrap the handler of the \"Next/Finish\" button of every step and\n * to add additional validation and data extraction logic.\n */\n onHermesStepButtonClickedWrapperFn(callbackFn: () => void): () => void {\n return () => {\n this.commitActiveStep()\n .pipe(take(1))\n .subscribe(() => {\n callbackFn();\n });\n };\n }\n\n /**\n * Handler invoked when the form is submitted. This happens when\n * all steps are in completed state.\n */\n onFormSubmit(): void {\n if (this.stateService.areAllStepsCompleted()) {\n this.onFinish.emit();\n }\n }\n\n /**\n * Checks if the given step index corresponds to the first visible (non-skipped) step in the workflow.\n * Used to conditionally hide the Back button on the initial page.\n * @param stepIndex The index of the step in the stepsInternal array.\n */\n protected isFirstVisibleStep(stepIndex: number): boolean {\n return this.stateService.isFirstVisibleStep(stepIndex, this.stepsInternal);\n }\n\n /**\n * When user clicks on already completed steps, Stepper should call validate method of current step before navigation.\n * Patches stepperService.togglePanel method which calls this.commitActiveStep before calling the original togglePanel method.\n */\n private patchStepperService() {\n const originalTogglePanelFunc = this.stepperService.togglePanel;\n if (!(this.stepperService as any)['togglePanelPatched']) {\n this.stepperService.togglePanel = (...args: [panelId: string, open?: boolean | undefined]) => {\n const firstIncompleteContainerIndex = this.stateService.getFirstIncompleteStepContainerIndex();\n const activeContainerIndex = this.pagesContainers.toArray().findIndex(item => item === this.activePage);\n if (firstIncompleteContainerIndex === activeContainerIndex) {\n // When moving from incomplete step to previous steps, do not call commit\n originalTogglePanelFunc.apply(this.stepperService, args);\n } else {\n this.commitActiveStep()\n .pipe(\n take(1),\n filter(isValid => isValid)\n )\n .subscribe(() => {\n originalTogglePanelFunc.apply(this.stepperService, args);\n });\n }\n };\n (this.stepperService as any)['togglePanelPatched'] = true;\n }\n }\n\n private commitActiveStep(): Observable<boolean> {\n if (!this.activePage) {\n return of(false);\n }\n this.loading = true;\n return this.activePage.onCommit().pipe(\n tap(isValid => {\n const activeStep = (this.activePage as StepContainer).step;\n // Mark the current step as valid/invalid.\n this.stateService.markStepValid(activeStep, isValid);\n // If not valid, mark the next steps as invalid too.\n if (!isValid) {\n this.stateService.resetNextStepsValidStates(activeStep);\n } else if (activeStep.summary) {\n // retrieve step summary on successful validation of step.\n activeStep.initialDescription = this.summaryService.getSummary(activeStep);\n } else {\n // no action\n }\n\n this.form.controls[this.initialStep].setErrors(isValid ? null : { formInvalid: true });\n this.form.controls[this.initialStep].markAsDirty();\n }),\n switchMap((isValid: boolean) => {\n if (isValid) {\n this.modelMgr.ejectPropertiesFromCurrentStep(this.activeStep);\n return this.relevanceService.checkComplete$().pipe(switchMap(() => of(isValid)));\n }\n return of(isValid);\n }),\n tap(() => {\n this.loading = false;\n this.cdr.detectChanges();\n })\n );\n }\n\n private activatePendingContainer(result: InjectPropertiesResult): void {\n this.unsubscribeRetry();\n const pendingPage = this.pagesContainers.find((item: StepContainer) => item.step === result.pendingStep);\n\n if (pendingPage) {\n if (result.error) {\n this.retrySubscription = pendingPage.onRetry\n .pipe(take(1))\n .subscribe((step: StepInternal) => this.retryStepTransition(step));\n } else {\n this.activeStep = result.pendingStep;\n this.activePage = this.pagesContainers.find(item => item.step === this.activeStep);\n }\n\n // Finally activate the container\n pendingPage.onActivate(result.error, result.stepModelChanges, result.recreateComponent);\n\n // Force digest as activation trigger changes Clarity wizard. template conditionals must re-evaluate\n this.cdr.detectChanges();\n }\n }\n\n private retryStepTransition(step: Step): void {\n this.onStepActivated(step);\n }\n\n private invalidateNextSteps(): void {\n if (!this.activeStep) {\n return;\n }\n this.stateService.resetNextStepsValidStates(this.activeStep);\n this.stepperService.resetPanels();\n this.stepperService.overrideInitialPanel(this.initialStep);\n }\n\n /**\n * Marks steps that come before the provided source index as complete, internally\n * in the Clarity panel component.\n * It will mark all panels as closed, except the one that is being expanded,\n * passed in as the target index.\n *\n * DOM order of steps is assumed with regard to indices.\n *\n * @param sourceIndex indices that come before this will be marked as complete.\n * @param openPanelIndex index of the panel set to be opened.\n */\n private completePreviousSteps(sourceIndex: number, openPanelIndex: number) {\n const hermesStepperPanels = this.stepperPanels.toArray();\n const sourcePanelId = this.getFormGroupNameForStep(sourceIndex);\n for (let stepIndex = 0; stepIndex < hermesStepperPanels.length; stepIndex++) {\n const stepperPanel = hermesStepperPanels[stepIndex];\n\n if (stepperPanel.id === sourcePanelId) {\n break;\n }\n\n stepperPanel.panel.pipe(first()).subscribe(panel => {\n panel.disabled = false;\n panel.status = StepperPanelStatus.Complete;\n\n if (stepIndex !== openPanelIndex) {\n panel.open = false;\n }\n });\n }\n }\n\n private unsubscribeRetry() {\n if (this.retrySubscription && !this.retrySubscription.closed) {\n this.retrySubscription.unsubscribe();\n }\n }\n\n /**\n * HermesStepper requires a child FormGroup for every step. This method creates one dummy\n * FormGroup for every step. In future these form groups must be used to indicate\n * the error state of each step.\n */\n private initForm(steps: Step[]): void {\n if (steps && steps.length) {\n const childFormGroups: any = {};\n steps.forEach((step: Step, index: number) => {\n childFormGroups[this.getFormGroupNameForStep(index)] = this.formBuilder.group({});\n });\n\n this.form = this.formBuilder.group(childFormGroups);\n this.initialStep = this.getFormGroupNameForStep(0);\n }\n }\n\n /**\n * In Clarity 4.x the implementation was:\n * <code>\n * <hermes-stepper-panel (hermesAccordionPanelOpenChange)=\"stateService.stepActivated(step, $event, i)\"\n * </code>\n * In Clarity 5.x \"hermesAccordionPanelOpenChange\" was regressed:\n * https://github.com/vmware/clarity/issues/5957\n * This is temporary fix until the above issue gets fixed.\n *\n * In future this logic can be changed. Instead of listening for all panels states\n * (that triggers too many times), we can use combination of:\n * - StepperService.activeStep (invoked on Next) AND\n * - StepperService.togglePanel (invoked on previous panel click)\n */\n private subscribeForPanelChanges(): void {\n const panelsChanges: BehaviorSubject<CollapsiblePanelModel[]> = this.stepperService['_panelsChanges'];\n this.subscriptions.add(\n panelsChanges.subscribe((panels: CollapsiblePanelModel[]) => {\n panels.forEach((panelModel: CollapsiblePanelModel) => {\n const panelId = panelModel.id;\n const stepIndex: number = +panelId.replace('step', '');\n const step: StepInternal = this.#steps[stepIndex];\n this.stateService.stepActivated(step, panelModel.open, stepIndex);\n });\n })\n );\n }\n\n private getFormGroupNameForStep(stepIndex: number): string {\n return 'step' + stepIndex;\n }\n}\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<form\r\n hermesStepper\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n [hermesInitialStep]=\"initialStep\"\r\n [ngClass]=\"{ 'disable-form': isLoading }\"\r\n>\r\n <ng-container *ngFor=\"let step of stepsInternal; let i = index; let last = last\">\r\n <hermes-stepper-panel\r\n *ngIf=\"!step.isSkipped\"\r\n formGroupName=\"step{{ i }}\"\r\n [appfxOverrideHermesStrings]=\"stepPanelOverriddenStrings\"\r\n >\r\n <hermes-step-title>{{ step.title }}</hermes-step-title>\r\n <hermes-step-description>\r\n <appfx-property-view\r\n *ngIf=\"step.initialDescription\"\r\n [data]=\"step.initialDescription\"\r\n [attr.aria-label]=\"step.description\"\r\n ></appfx-property-view>\r\n </hermes-step-description>\r\n\r\n <hermes-step-content>\r\n <appfx-step-container [step]=\"step\"> </appfx-step-container>\r\n\r\n <button\r\n *ngIf=\"!last\"\r\n [disabled]=\"isNextButtonDisabled(step)\"\r\n hermesStepButton=\"next\"\r\n [ngClass]=\"{ 'btn-primary': usePrimaryNextButton }\"\r\n >\r\n {{ workflowStrings.next }}\r\n </button>\r\n <button *ngIf=\"last\" [disabled]=\"isNextButtonDisabled(step)\" hermesStepButton=\"submit\">\r\n {{ workflowStrings.finish }}\r\n </button>\r\n <button *ngIf=\"showBackButton && !isFirstVisibleStep(i)\" hermesStepButton=\"previous\">\r\n {{ workflowStrings.back }}\r\n </button>\r\n <button *ngIf=\"showCancelButton\" (click)=\"onCancel.emit()\" type=\"button\" class=\"hermes-step-button btn btn-link\">\r\n {{ workflowStrings.cancel }}\r\n </button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </ng-container>\r\n</form>\r\n\r\n<appfx-spinner\r\n *ngIf=\"isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [progressDetails]=\"pageProgressDetails\"\r\n [showActionButton]=\"showProgressCancelButton\"\r\n [actionButtonLabel]=\"cancelValidationButtonLabel\"\r\n (actionClick)=\"cancelPageValidation()\"\r\n>\r\n</appfx-spinner>\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AppfxA11yModule } from '@hermes-ui/angular/addons/a11y';\nimport { AppfxPropertyViewModule } from '@hermes-ui/angular/addons/property-view';\nimport { AppfxWorkflowCoreModule } from '@hermes-ui/angular/addons/var';\nimport { HermesStepperModule } from '@hermes-ui/angular/stepper';\n\nimport { StepperStateService } from './state/stepper-state.service';\nimport { StepperComponent } from './stepper.component';\nimport { SummaryService } from './summary/summary.service';\n\nconst clarityDependencies = [HermesStepperModule];\nconst appfxDependencies = [AppfxPropertyViewModule, AppfxA11yModule, AppfxWorkflowCoreModule];\n\n@NgModule({\n imports: [...appfxDependencies, ...clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [StepperComponent],\n providers: [StepperStateService, SummaryService],\n exports: [StepperComponent],\n})\nexport class AppfxStepperModule {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { AppfxStepperModule } from './stepper.module';\r\nexport { StepperComponent, StepperComponent as Stepper } from './stepper.component';\r\nexport { StepperStateService, StepState } from './state/stepper-state.service';\r\nexport { SummaryService } from './summary/summary.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SummaryService","i1.StepperStateService","i5.SummaryService"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAYH;;AAEG;MAEU,cAAc,CAAA;AACzB;;AAEG;AACH,IAAA,cAAc,CAAC,IAAU,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/D;AACA,QAAA,OAAO,SAAS;IAClB;AAEA;;AAEG;AACH,IAAA,UAAU,CAAC,IAAkB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC;AAC1F,YAAA,OAAO,IAAI,CAAC,gDAAgD,CAAC,WAAW,CAAC;QAC3E;AACA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,+BAA+B,CAAC,IAAY,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAC7C,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;AACvD,QAAA,eAAe,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AAC1E,QAAA,OAAO,OAAO,CAAC,KAAK,EAAE;IACxB;AAEQ,IAAA,gDAAgD,CAAC,IAA8B,EAAA;AACrF,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,8BAA8B,EAAE;AAC7D,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE;AACxC,QAAA,QAAQ,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC;QACzB,OAAO;YACL,UAAU,EAAE,CAAC,QAAQ,CAAC;SACvB;IACH;IAEQ,6BAA6B,GAAA;QACnC,OAAO,IAAI,CAAC,8BAA8B,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACxE;IAEQ,8BAA8B,GAAA;QACpC,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC9D;IAEQ,sBAAsB,GAAA;QAC5B,OAAO,IAAI,mBAAmB,EAAE;IAClC;+GAhDW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;ACpBD;;;;;AAKG;AASH;;;;;;;AAOG;MAEU,mBAAmB,CAAA;AAgB9B,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAA,CAAA,cAAc,GAAd,cAAc;AAVlC;;AAEG;AACK,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAc,EAAE,CAAC;AAE1D;;AAEG;QACK,IAAA,CAAA,iBAAiB,GAAgB,EAAE;AAGzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACrD;AAEA;;;;;;;;;;;;AAYG;AACH,IAAA,aAAa,CAAC,IAAU,EAAE,QAAiB,EAAE,KAAa,EAAA;AACxD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AAC5C,QAAA,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;;YAEtE;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK;;QAE7E,aAAa,CAAC,KAAK,CAAC,GAAG;AACrB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,WAAW;SACnB;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC;IACtC;AAEA;;;;AAIG;IACH,aAAa,CAAC,IAAU,EAAE,OAAgB,EAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAqB,KAAK,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC;QAChH,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,KAAK,GAAG,OAAO;QAC3B;IACF;AAEA;;;AAGG;AACH,IAAA,yBAAyB,CAAC,IAAU,EAAA;QAClC,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CACrD,gBAAgB,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,IAAI,KAAK,IAAI,CACvE;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAG;YAChD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,GAAG,cAAc,EAAE;AAC/D,gBAAA,gBAAgB,CAAC,KAAK,GAAG,KAAK;AACf,gBAAA,gBAAgB,CAAC,IAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAC3F,gBAAgB,CAAC,IAAI,CACtB;YACH;AACF,QAAA,CAAC,CAAC;IACJ;AAEA;;;;AAIG;IACH,6BAA6B,GAAA;AAC3B,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAC9C,SAAS,IAAI,SAAS,IAAI,CAAgB,SAAS,CAAC,IAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CACxF;QACD,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,KAAK;QAC3B;aAAO;;YAEL,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAC9C,SAAS,IAAI,SAAS,IAAI,CAAgB,SAAS,CAAC,IAAK,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CACvF;YACD,OAAO,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;QACxE;IACF;AAEA;;;;;;;;;;;;;;AAcG;IACH,oCAAoC,GAAA;;QAElC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAChD,SAAS,IAAI,SAAS,IAAI,CAAgB,SAAS,CAAC,IAAK,CAAC,SAAS,CACpE;AAED,QAAA,MAAM,qBAAqB,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACnF,QAAA,IAAI,qBAAqB,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,qBAAqB;QAC9B;AAEA,QAAA,OAAO,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;IAC1D;AAEA;;;AAGG;IACH,oBAAoB,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CACjC,SAAS,IAAI,SAAS,KAAoB,SAAS,CAAC,IAAK,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,CACxF;IACH;AAEA;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;AACzC,QAAA,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;AACrB,YAAA,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ;QACnC;aAAO;AACL,YAAA,OAAO,IAAI;QACb;IACF;AAEA;;;;;AAKG;IACH,kBAAkB,CAAC,KAAa,EAAE,KAAqB,EAAA;AACrD,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,OAAO,KAAK,KAAK,YAAY;IAC/B;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,OAA8B,IAAI,CAAC,WAAW,CAAC,IAAI,CACjD,YAAY,CAAC,EAAE,CAAC,EAChB,GAAG,CAAC,CAAC,YAAyB,KAAI;;YAEhC,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CACpC,CAAC,YAAuB,EAAE,KAAa;;YAErC,YAAY;AACZ,gBAAA,YAAY,CAAC,QAAQ;;AAErB,iBAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAC9E;AAED,YAAA,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC,MAAM,EAAE;AAE9C,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,SAAgC,KAAK,CAAC,CAAC,SAAS,CAAC,CAC1D;IACH;+GA3LW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;ACmBD;;;;;AAKG;MAQU,gBAAgB,CAAA;AA0D3B,IAAA,MAAM;AACN,IAAA,YAAY;AAEZ,IAAA,WAAA,CACW,YAAiC,EACjC,eAAgC,EACxB,QAA8B,EAC9B,gBAAkC,EAClC,WAA+B,EAC/B,GAAsB,EACtB,cAA8B,EAAA;QANtC,IAAA,CAAA,YAAY,GAAZ,YAAY;QACZ,IAAA,CAAA,eAAe,GAAf,eAAe;QACP,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,cAAc,GAAd,cAAc;AAnEjC;;AAEG;QACM,IAAA,CAAA,OAAO,GAAG,KAAK;AAExB;;;AAGG;QACM,IAAA,CAAA,oBAAoB,GAAG,KAAK;AAErC;;;AAGG;QACM,IAAA,CAAA,cAAc,GAAG,KAAK;AAE/B;;;AAGG;QACM,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAEjC;;AAEG;AACgB,QAAA,IAAA,CAAA,aAAa,GAAgC,IAAI,YAAY,EAAiB;AAEjG;;;AAGG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ;AAE1E;;;AAGG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAuB,IAAI,YAAY,EAAQ;AAYlE,QAAA,IAAA,CAAA,yBAAyB,GAAwB,IAAI,aAAa,CAAC,QAAQ,CAAC;AAC5E,QAAA,IAAA,CAAA,uBAAuB,GAAkB,IAAI,OAAO,EAAE;AAC7C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;QAG3C,IAAA,CAAA,mBAAmB,GAAG,KAAK;QAcjC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AAEjC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAsB,KAAI;AAC3D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,mBAAmB,EAAE;QAC5B,CAAC,CAAC,CACH;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;AACxF,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,SAAoB,KAAI;;;;;;;;;;;;;;;;;;;AAmB/D,YAAA,MAAM,0BAA0B,GAAG,YAAY,CAAC,6BAA6B,EAAE;AAE/E,YAAA,IAAI,SAAS,CAAC,KAAK,KAAK,0BAA0B,EAAE;gBAClD,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,SAAS,CAAC,KAAK,CAAC;YACzE;YAEA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC;AAEhE,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC;;AAGrB,YAAA,SAAS,CAAC,IAAK,CAAC,kBAAkB,GAAG,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC;QACnG,CAAC,CAAC,CACH;QAED,IAAI,CAAC,0BAA0B,GAAG;AAChC,YAAA,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,SAAS;AACvC,YAAA,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK;SACnC;IACH;AAEA;;AAEG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK;AACnC,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,aAAA,SAAS,CAAC,CAAC,KAAa,KAAI;AAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;AAC3B,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACnG,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,MAAM;IACpB;AAEA;;;;AAIG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;IAC1B;IAEA,IACI,WAAW,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK;IAC7B;IAEA,IACI,iBAAiB,CAAC,iBAA8C,EAAA;AAClE,QAAA,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAwB,KAAI;;AAErD,YAAA,IAAI,CAAE,MAAc,CAAC,iBAAiB,CAAC,EAAE;gBACvC,MAAM,qCAAqC,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrF,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC,kCAAkC,CAAC,qCAAqC,CAAC;AAC1G,gBAAA,MAAc,CAAC,iBAAiB,CAAC,GAAG,IAAI;YAC3C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,IACI,OAAO,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC7C,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,wBAAwB,EAAE;IACjC;;AAGA,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QACE,IAAI,CAAC,OAAO;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,OAAO;;AAE7B,aAAC,CAAC,CAAC,IAAI,CAAC,eAAe;AACrB,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,CAAC,KAAoB,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAC3F,CAAC;IAER;AAEA,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,IAAI,EAAE;IACnE;AAEA,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,KAAK,UAAU;IAC3G;AAEA,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,IAAI,EAAE;IAC5F;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,KAAK,UAAU,EAAE;YACtG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,oBAAoB,CAAC,gBAAgB,EAAE;QAC/E;IACF;AAEA,IAAA,oBAAoB,CAAC,IAAU,EAAA;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QACrG,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,mBAAmB,KAAK,eAAe,GAAG,CAAC,eAAe,CAAC,eAAe,GAAG,KAAK,CAAC;IACnH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;QAChC,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;;AAE/B,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;QACrC;aAAO;;YAEL,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;QACjG;IACF;IAEA,kBAAkB,GAAA;;;AAGhB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,aAAa,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,yBAAyB,CAAC;AACzE,aAAA,IAAI,CACH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EACpC,SAAS,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;aAEzF,SAAS,CAAC,MAAM,IAAG;YAClB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;AACzC,YAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,CACL;IACH;;AAGA,IAAA,eAAe,CAAC,IAAU,EAAA;AACxB,QAAA,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3C;AAEA;;;AAGG;AACH,IAAA,kCAAkC,CAAC,UAAsB,EAAA;AACvD,QAAA,OAAO,MAAK;YACV,IAAI,CAAC,gBAAgB;AAClB,iBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBACZ,SAAS,CAAC,MAAK;AACd,gBAAA,UAAU,EAAE;AACd,YAAA,CAAC,CAAC;AACN,QAAA,CAAC;IACH;AAEA;;;AAGG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,EAAE;AAC5C,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QACtB;IACF;AAEA;;;;AAIG;AACO,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;IAC5E;AAEA;;;AAGG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW;QAC/D,IAAI,CAAE,IAAI,CAAC,cAAsB,CAAC,oBAAoB,CAAC,EAAE;YACvD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,GAAG,IAAmD,KAAI;gBAC3F,MAAM,6BAA6B,GAAG,IAAI,CAAC,YAAY,CAAC,oCAAoC,EAAE;gBAC9F,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;AACvG,gBAAA,IAAI,6BAA6B,KAAK,oBAAoB,EAAE;;oBAE1D,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;gBAC1D;qBAAO;oBACL,IAAI,CAAC,gBAAgB;AAClB,yBAAA,IAAI,CACH,IAAI,CAAC,CAAC,CAAC,EACP,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;yBAE3B,SAAS,CAAC,MAAK;wBACd,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC;AAC1D,oBAAA,CAAC,CAAC;gBACN;AACF,YAAA,CAAC;AACA,YAAA,IAAI,CAAC,cAAsB,CAAC,oBAAoB,CAAC,GAAG,IAAI;QAC3D;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,EAAE,CAAC,KAAK,CAAC;QAClB;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CACpC,GAAG,CAAC,OAAO,IAAG;AACZ,YAAA,MAAM,UAAU,GAAI,IAAI,CAAC,UAA4B,CAAC,IAAI;;YAE1D,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC;;YAEpD,IAAI,CAAC,OAAO,EAAE;AACZ,gBAAA,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,UAAU,CAAC;YACzD;AAAO,iBAAA,IAAI,UAAU,CAAC,OAAO,EAAE;;gBAE7B,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC;YAC5E;iBAAO;;YAEP;YAEA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACtF,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE;AACpD,QAAA,CAAC,CAAC,EACF,SAAS,CAAC,CAAC,OAAgB,KAAI;YAC7B,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC7D,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YAClF;AACA,YAAA,OAAO,EAAE,CAAC,OAAO,CAAC;AACpB,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,wBAAwB,CAAC,MAA8B,EAAA;QAC7D,IAAI,CAAC,gBAAgB,EAAE;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAmB,KAAK,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC;QAExG,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,MAAM,CAAC,KAAK,EAAE;AAChB,gBAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;AAClC,qBAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACZ,qBAAA,SAAS,CAAC,CAAC,IAAkB,KAAK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACtE;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW;gBACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC;YACpF;;AAGA,YAAA,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;;AAGvF,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;QAC1B;IACF;AAEQ,IAAA,mBAAmB,CAAC,IAAU,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;IAC5B;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB;QACF;QACA,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;QACjC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5D;AAEA;;;;;;;;;;AAUG;IACK,qBAAqB,CAAC,WAAmB,EAAE,cAAsB,EAAA;QACvE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;AAC/D,QAAA,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;AAC3E,YAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC;AAEnD,YAAA,IAAI,YAAY,CAAC,EAAE,KAAK,aAAa,EAAE;gBACrC;YACF;AAEA,YAAA,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACjD,gBAAA,KAAK,CAAC,QAAQ,GAAG,KAAK;AACtB,gBAAA,KAAK,CAAC,MAAM,GAAG,kBAAkB,CAAC,QAAQ;AAE1C,gBAAA,IAAI,SAAS,KAAK,cAAc,EAAE;AAChC,oBAAA,KAAK,CAAC,IAAI,GAAG,KAAK;gBACpB;AACF,YAAA,CAAC,CAAC;QACJ;IACF;IAEQ,gBAAgB,GAAA;QACtB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;AAC5D,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;QACtC;IACF;AAEA;;;;AAIG;AACK,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACzB,MAAM,eAAe,GAAQ,EAAE;YAC/B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAU,EAAE,KAAa,KAAI;AAC1C,gBAAA,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACnF,YAAA,CAAC,CAAC;YAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC;YACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACpD;IACF;AAEA;;;;;;;;;;;;;AAaG;IACK,wBAAwB,GAAA;QAC9B,MAAM,aAAa,GAA6C,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;AACrG,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,aAAa,CAAC,SAAS,CAAC,CAAC,MAA+B,KAAI;AAC1D,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,UAAiC,KAAI;AACnD,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE;gBAC7B,MAAM,SAAS,GAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAiB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACjD,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC;AACnE,YAAA,CAAC,CAAC;QACJ,CAAC,CAAC,CACH;IACH;AAEQ,IAAA,uBAAuB,CAAC,SAAiB,EAAA;QAC/C,OAAO,MAAM,GAAG,SAAS;IAC3B;+GAxdW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,wVAFhB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EA8K7E,aAAa,qEA/HV,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAEb,kBAAkB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,SAAA,EAiHlB,gBAAgB,gDCtNhC,i5EA8DA,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,8BAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,sGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDRa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,KAAK,EAAA,SAAA,EAGN,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,i5EAAA,EAAA,MAAA,EAAA,CAAA,ijBAAA,CAAA,EAAA;;sBAMvF;;sBAMA;;sBAMA;;sBAMA;;sBAKA;;sBAMA;;sBAMA;;sBAMA,YAAY;uBAAC,aAAa;;sBAE1B,YAAY;uBAAC,kBAAkB;;sBAgF/B;;sBA2BA;;sBAMA,YAAY;uBAAC,gBAAgB;;sBAY7B,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;;AElO7C;;;;;AAKG;AAcH,MAAM,mBAAmB,GAAG,CAAC,mBAAmB,CAAC;AACjD,MAAM,iBAAiB,GAAG,CAAC,uBAAuB,EAAE,eAAe,EAAE,uBAAuB,CAAC;MAQhF,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAJd,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAJN,uBAAuB,EAAE,eAAe,EAAE,uBAAuB,EAD/D,mBAAmB,EAIU,YAAY,EAAE,WAAW,EAAE,mBAAmB,aAG5F,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAEf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,SAAA,EAHlB,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAA,OAAA,EAAA,CAFnC,iBAAiB,EAAK,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAK3F,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,GAAG,iBAAiB,EAAE,GAAG,mBAAmB,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC;oBACvG,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,oBAAA,SAAS,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC;oBAChD,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA;;;AC3BD;;;;;AAKG;;ACLH;;AAEG;;"}
|
|
1
|
+
{"version":3,"file":"hermes-ui-angular-addons-stepper.mjs","sources":["../../../addons/stepper/summary/summary.service.ts","../../../addons/stepper/state/stepper-state.service.ts","../../../addons/stepper/stepper.component.ts","../../../addons/stepper/stepper.component.html","../../../addons/stepper/stepper.module.ts","../../../addons/stepper/index.ts","../../../addons/stepper/hermes-ui-angular-addons-stepper.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n PropertyViewBuilder,\r\n PropertyViewCategoryBuilder,\r\n PropertyViewModel,\r\n PropertyViewSectionBuilder,\r\n PropertyViewSectionModel,\r\n} from '@hermes-ui/angular/addons/property-view';\r\nimport { Step, StepInternal } from '@hermes-ui/angular/addons/var';\r\n\r\n/**\r\n * SummaryService provides methods to build data required to display Step summary using appfx-property-view.\r\n */\r\n@Injectable()\r\nexport class SummaryService {\r\n /**\r\n * Builds {@link PropertyViewModel} for the Step passed using Step#description field.\r\n */\r\n getDescription(step: Step): PropertyViewModel | undefined {\r\n if (step.description) {\r\n return this.getPropertyViewModelFromMessage(step.description);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Builds {@link PropertyViewModel} for the Step passed using Step#summary method.\r\n */\r\n getSummary(step: StepInternal): PropertyViewModel | undefined {\r\n if (step.summary) {\r\n const stepSummary = step.summary(this.getPropertyViewSectionBuilder(), step.modelInstance);\r\n return this.getPropertyViewModelFromPropertyViewSectionModel(stepSummary);\r\n }\r\n return undefined;\r\n }\r\n\r\n private getPropertyViewModelFromMessage(data: string): PropertyViewModel {\r\n const builder = this.getPropertyViewBuilder();\r\n const categoryBuilder = builder.generateAllCategory('');\r\n categoryBuilder.section('defaultSection').message(data).renderAsHtml(true);\r\n return builder.build();\r\n }\r\n\r\n private getPropertyViewModelFromPropertyViewSectionModel(data: PropertyViewSectionModel): PropertyViewModel {\r\n const categoryBuilder = this.getPropertyViewCategoryBuilder();\r\n const category = categoryBuilder.build();\r\n category.content = [data];\r\n return {\r\n categories: [category],\r\n };\r\n }\r\n\r\n private getPropertyViewSectionBuilder(): PropertyViewSectionBuilder {\r\n return this.getPropertyViewCategoryBuilder().section('defaultSection');\r\n }\r\n\r\n private getPropertyViewCategoryBuilder(): PropertyViewCategoryBuilder {\r\n return this.getPropertyViewBuilder().generateAllCategory('');\r\n }\r\n\r\n private getPropertyViewBuilder(): PropertyViewBuilder {\r\n return new PropertyViewBuilder();\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { Step, StepInternal } from '@hermes-ui/angular/addons/var';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { debounceTime, filter, map } from 'rxjs/operators';\r\n\r\nimport { SummaryService } from '../summary/summary.service';\r\n\r\n/**\r\n * HermesStepper component has very limited API. It does not provide public information\r\n * about the expanded state of the step panels. Also it does not provide straight forward\r\n * API for notification when a panel get expanded.\r\n * This class is responsible for exposing the state of Clarity stepper component.\r\n * It monitors the current state of all panels. When a panel is expanded,\r\n * {@link onStepActivated$} observable emits.\r\n */\r\n@Injectable()\r\nexport class StepperStateService {\r\n /**\r\n * Observable that emits when the user expands a HermesStepper panel.\r\n */\r\n onStepActivated$: Observable<StepState>;\r\n\r\n /**\r\n * Current state of all panels.\r\n */\r\n private panelState$ = new BehaviorSubject<StepState[]>([]);\r\n\r\n /**\r\n * Panel state on the previous user interaction.\r\n */\r\n private lastExpandedState: StepState[] = [];\r\n\r\n constructor(private summaryService: SummaryService) {\r\n this.onStepActivated$ = this.initOnStepActivated$();\r\n }\r\n\r\n /**\r\n * Must be invoked when {@link HermesAccordionPanel#panelOpenChange} EventEmitter emits.\r\n * `panelOpenChange` emits when a panel changes its opened state.\r\n * One would expect this listener to be invoked once per panel transition (current panel\r\n * is closed and the next is opened). Unfortunately this is not the case. The listener\r\n * is invoked every time for all panels on every transition and sometimes even multiple times\r\n * for one and the same panel just for a single transition.\r\n * The panels states are pushed to {@link panelState$} subject, that is debounced.\r\n *\r\n * @param step Step, rendered by the Clarity stepper\r\n * @param expanded Expanded state of the step\r\n * @param index Step index (different than the panel index, as some steps might be skipped)\r\n */\r\n stepActivated(step: Step, expanded: boolean, index: number): void {\r\n const expandedState = this.panelState$.value;\r\n if (expandedState[index] && expandedState[index].expanded === expanded) {\r\n // Current and previous expanded state is the same. Do nothing.\r\n return;\r\n }\r\n\r\n const isStepValid = expandedState[index] ? expandedState[index].valid : false;\r\n // console.log(`Step ${name} expanded: ${expanded} index: ${index}`);\r\n expandedState[index] = {\r\n step: step,\r\n expanded: expanded,\r\n index: index,\r\n valid: isStepValid,\r\n };\r\n this.panelState$.next(expandedState);\r\n }\r\n\r\n /**\r\n * Marks a step as valid or not depending on the passed state.\r\n * @param {Step} step Step, which has be marked as valid\r\n * @param {boolean} isValid The valid state of the step\r\n */\r\n markStepValid(step: Step, isValid: boolean): void {\r\n const stepState = this.panelState$.value.find((panelState: StepState) => panelState && panelState.step === step);\r\n if (stepState) {\r\n stepState.valid = isValid;\r\n }\r\n }\r\n\r\n /**\r\n * Reset the valid states of the next steps\r\n * @param {Step} step Step after which all next steps to be reset\r\n */\r\n resetNextStepsValidStates(step: Step): void {\r\n const stepStateIndex = this.panelState$.value.findIndex(\r\n currentStepState => currentStepState && currentStepState.step === step\r\n );\r\n this.panelState$.value.forEach(currentStepState => {\r\n if (currentStepState && currentStepState.index > stepStateIndex) {\r\n currentStepState.valid = false;\r\n (<StepInternal>currentStepState.step).initialDescription = this.summaryService.getDescription(\r\n currentStepState.step\r\n );\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Finds the index of the first step in the list which is not skipped and not-valid/incomplete.\r\n * This method always considers the last not skipped step in the stepper as incomplete.\r\n * @returns {number} The index of the first incomplete step or the index of the last step if all are completed.\r\n */\r\n getIndexOfFirstIncompleteStep(): number {\r\n const notValidStep = this.panelState$.value.find(\r\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped && !stepState.valid\r\n );\r\n if (notValidStep) {\r\n return notValidStep.index;\r\n } else {\r\n // If all steps are valid then return the last valid step as incomplete.\r\n const validSteps = this.panelState$.value.filter(\r\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped && stepState.valid\r\n );\r\n return validSteps.length ? validSteps[validSteps.length - 1].index : 0;\r\n }\r\n }\r\n\r\n /**\r\n * Finds the index of the first visible step container which is not-valid/incomplete.\r\n * This method always considers the last visible step in the stepper as incomplete.\r\n *\r\n * Note that since skipped steps are not rendered there are no step containers for those.\r\n * E.g if we have the following steps:\r\n * 0 - step 1, valid\r\n * 1 - step 2, valid & skipped,\r\n * 2 - step 3, invalid\r\n * The method will return 1 because step 2 will not be rendered at all and we will have only\r\n * two step containers.\r\n *\r\n * @returns {number} The index of the first incomplete step container or the index of the\r\n * last one if all are completed.\r\n */\r\n getFirstIncompleteStepContainerIndex(): number {\r\n // filter out all skipped steps as they are not rendered.\r\n const visibleSteps = this.panelState$.value.filter(\r\n stepState => stepState && !(<StepInternal>stepState.step).isSkipped\r\n );\r\n\r\n const firstInvalidStepIndex = visibleSteps.findIndex(stepState => !stepState.valid);\r\n if (firstInvalidStepIndex >= 0) {\r\n return firstInvalidStepIndex;\r\n }\r\n\r\n return visibleSteps.length ? visibleSteps.length - 1 : 0;\r\n }\r\n\r\n /**\r\n * Checks if all steps are in completed state.\r\n * @returns {boolean} True if all steps are completed, False otherwise.\r\n */\r\n areAllStepsCompleted(): boolean {\r\n return this.panelState$.value.every(\r\n stepState => stepState && ((<StepInternal>stepState.step).isSkipped || stepState.valid)\r\n );\r\n }\r\n\r\n /**\r\n * Method to find out if the step at a given index is expanded or not.\r\n * List of step states are retrieved and based on the index; 'expanded'\r\n * property lets us know if the step is currently open or not.\r\n * @param {number} index of the step\r\n * @returns {boolean}\r\n */\r\n isStepActivated(index: number): boolean {\r\n const panelState = this.panelState$.value;\r\n if (panelState[index]) {\r\n return panelState[index].expanded;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Determines if a step at a specific index is the first visible step in the provided list.\r\n * @param index The index to check.\r\n * @param steps The list of internal steps to evaluate for skipped status.\r\n * @returns True if the index is the first non-skipped step, false otherwise.\r\n */\r\n isFirstVisibleStep(index: number, steps: StepInternal[]): boolean {\r\n const firstVisible = steps.findIndex(s => !s.isSkipped);\r\n return index === firstVisible;\r\n }\r\n\r\n private initOnStepActivated$(): Observable<StepState> {\r\n return <Observable<StepState>>this.panelState$.pipe(\r\n debounceTime(50),\r\n map((currentState: StepState[]) => {\r\n // Find a step that is now expanded and was previously collapsed.\r\n const expandedStep = currentState.find(\r\n (currExpanded: StepState, index: number) =>\r\n // current state is expanded\r\n currExpanded &&\r\n currExpanded.expanded &&\r\n // AND previous state was collapsed or it is a newly added panel\r\n (!this.lastExpandedState[index] || !this.lastExpandedState[index].expanded)\r\n );\r\n\r\n this.lastExpandedState = currentState.concat();\r\n\r\n return expandedStep;\r\n }),\r\n filter((stepState: StepState | undefined) => !!stepState)\r\n );\r\n }\r\n}\r\n\r\nexport interface StepState {\r\n step: Step;\r\n expanded: boolean;\r\n index: number;\r\n valid?: boolean;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport type { QueryList } from '@angular/core';\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n ViewChild,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport {\r\n InjectPropertiesResult,\r\n ModelChange,\r\n RelevanceService,\r\n Step,\r\n StepContainer,\r\n StepInternal,\r\n WorkflowModel,\r\n WorkflowModelManager,\r\n} from '@hermes-ui/angular/addons/var';\r\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\r\nimport { CollapsiblePanelModel } from '@hermes-ui/angular/collapsible-panel';\r\nimport { HermesStepButton, HermesStepper, HermesStepperPanel, StepperPanelStatus, StepperService } from '@hermes-ui/angular/stepper';\r\nimport type { HermesCommonStrings } from '@hermes-ui/angular/utils';\r\nimport { BehaviorSubject, combineLatest, Observable, of, ReplaySubject, Subject, Subscription } from 'rxjs';\r\nimport { filter, first, switchMap, take, tap } from 'rxjs/operators';\r\n\r\nimport { StepperStateService, StepState } from './state/stepper-state.service';\r\nimport { SummaryService } from './summary/summary.service';\r\n\r\n/**\r\n * Component used to render the composition of step components as inline wizard\r\n * (using Clarity stepper component). Workflow of the steps is handled by the\r\n * {@link WorkflowModelManager} - the same responsible for the {@link AppfxWizardComponent} workflow.\r\n * This guarantees the same API and UX for the inline and dialog wizards.\r\n */\r\n@Component({\r\n selector: 'appfx-stepper',\r\n standalone: false,\r\n templateUrl: 'stepper.component.html',\r\n styleUrls: ['stepper.component.scss'],\r\n providers: [RelevanceService, StepperStateService, SummaryService, WorkflowModelManager],\r\n})\r\nexport class StepperComponent implements OnDestroy, AfterViewInit, AfterContentInit {\r\n /**\r\n * Display loading indicator.\r\n */\r\n @Input() loading = false;\r\n\r\n /**\r\n * If set to true, the Next button will use the primary (solid) button style.\r\n * Defaults to false to maintain backward compatibility for existing consumers.\r\n */\r\n @Input() usePrimaryNextButton = false;\r\n\r\n /**\r\n * If set to true, a \"Back\" button is displayed in every step except the first visible one.\r\n * This allows users to navigate to the previous non-skipped step.\r\n */\r\n @Input() showBackButton = false;\r\n\r\n /**\r\n * If set to true, a \"Cancel\" button is displayed in all steps.\r\n * This allows users to terminate the workflow before completion.\r\n */\r\n @Input() showCancelButton = false;\r\n\r\n /**\r\n * Dispatches when any of the workflow state's variables changes.\r\n */\r\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\r\n\r\n /**\r\n * Dispatched when the workflow is finished via the Finish button.\r\n * You can perform the actions you want there (i.e modify or create something)\r\n */\r\n @Output() readonly onFinish: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /**\r\n * Dispatched when the user clicks the \"Cancel\" button.\r\n * Use this to handle navigation away from the stepper or closing the containing view.\r\n */\r\n @Output() readonly onCancel: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n form: UntypedFormGroup;\r\n initialStep: string;\r\n stepPanelOverriddenStrings: Partial<HermesCommonStrings>;\r\n\r\n @ViewChildren(StepContainer) private pagesContainers: QueryList<StepContainer>;\r\n\r\n @ViewChildren(HermesStepperPanel) private stepperPanels: QueryList<HermesStepperPanel>;\r\n\r\n private activeStep: Step | undefined;\r\n private activePage: StepContainer | undefined;\r\n private awaitingWizardPageOnLoad$: ReplaySubject<Step> = new ReplaySubject(Infinity);\r\n private componentAfterViewInit$: Subject<void> = new Subject();\r\n private readonly subscriptions = new Subscription();\r\n private retrySubscription: Subscription;\r\n private stepperService: StepperService;\r\n private errorActivatingStep = false;\r\n\r\n #steps: StepInternal[];\r\n #wizardModel: any;\r\n\r\n constructor(\r\n readonly stateService: StepperStateService,\r\n readonly workflowStrings: WorkflowStrings,\r\n private readonly modelMgr: WorkflowModelManager,\r\n private readonly relevanceService: RelevanceService,\r\n private readonly formBuilder: UntypedFormBuilder,\r\n private readonly cdr: ChangeDetectorRef,\r\n private readonly summaryService: SummaryService\r\n ) {\r\n this.form = formBuilder.group({});\r\n\r\n this.subscriptions.add(\r\n modelMgr.onModelChange$.subscribe((changes: ModelChange[]) => {\r\n this.onModelChange.emit(changes);\r\n this.invalidateNextSteps();\r\n })\r\n );\r\n this.subscriptions.add(modelMgr.loading$.subscribe(loading => (this.loading = loading)));\r\n this.subscriptions.add(\r\n stateService.onStepActivated$.subscribe((stepState: StepState) => {\r\n // When navigated back to a previous step and user clicks next without doing any changes\r\n // all future steps are invalidated and their completion step is reset.\r\n // To workaround this and to preserve the state of the future steps as completed when there are no changes\r\n // the Stepper#completePreviousSteps function is invoked, which marks all previous steps as complete.\r\n // It has to be invoked with the index of the step which is right after\r\n // the last step known as complete in the list as this method marks all previous steps as completed, along\r\n // with the index of the step that is currently being expanded, so as not to be marked as closed (open=false).\r\n // After this the initialStep value has to be set to name of the step currently being activated to open it\r\n // in the stepper.\r\n // e.g. if step 6 is the first incomplete step in the list meaning the previous steps are all completed and\r\n // it is navigated back to step 2, after clicking next when step 3 is being activated\r\n // invoking Stepper#completePreviousSteps with the index of step 6 as the source and index of step 3 as the target,\r\n // it will mark all steps up to and including 5 as completed. After this the initialStep value has to be set\r\n // to the form group name of step 3 to open it in the stepper.\r\n // Caveat: when all steps are completed and it is navigated back, stateService#getIndexOfFirstIncompleteStep\r\n // returns the index of the last not skipped step in the stepper as if it returns 0 the valid states\r\n // of the steps that come after the current step will be lost and there is no public method in the stepper API\r\n // which to mark all steps as complete.\r\n const indexOfFirstIncompleteStep = stateService.getIndexOfFirstIncompleteStep();\r\n\r\n if (stepState.index !== indexOfFirstIncompleteStep) {\r\n this.completePreviousSteps(indexOfFirstIncompleteStep, stepState.index);\r\n }\r\n\r\n this.initialStep = this.getFormGroupNameForStep(stepState.index);\r\n\r\n this.onStepActivated(stepState.step);\r\n\r\n // On step activation reset the dynamic description with step's description.\r\n (<StepInternal>stepState.step).initialDescription = summaryService.getDescription(stepState.step);\r\n })\r\n );\r\n\r\n this.stepPanelOverriddenStrings = {\r\n success: workflowStrings.step.completed,\r\n danger: workflowStrings.step.error,\r\n };\r\n }\r\n\r\n /**\r\n * The descriptions of the pages that are visualized.\r\n */\r\n get steps(): Step[] {\r\n return this.#steps;\r\n }\r\n\r\n @Input()\r\n set steps(value: Step[]) {\r\n this.relevanceService.steps = value;\r\n this.relevanceService\r\n .checkComplete$()\r\n .pipe(take(1))\r\n .subscribe((steps: Step[]) => {\r\n this.#steps = steps;\r\n this.modelMgr.steps = steps;\r\n this.initForm(steps);\r\n this.#steps.forEach(step => (step.initialDescription = this.summaryService.getDescription(step)));\r\n });\r\n }\r\n\r\n get stepsInternal(): StepInternal[] {\r\n return this.#steps;\r\n }\r\n\r\n /**\r\n * You can supply here any structure you like. As long as it has the\r\n * needed properties to inject to the page models and eject back from\r\n * the page models.\r\n */\r\n get wizardModel(): WorkflowModel {\r\n return this.#wizardModel;\r\n }\r\n\r\n @Input()\r\n set wizardModel(value: WorkflowModel) {\r\n this.#wizardModel = value;\r\n this.modelMgr.model = value;\r\n }\r\n\r\n @ViewChildren(HermesStepButton)\r\n set hermesStepButtons(hermesStepButtons: QueryList<HermesStepButton>) {\r\n hermesStepButtons.forEach((button: HermesStepButton) => {\r\n // Check if button's navigateToNextPanel has already been patched with the additional validation logic.\r\n if (!(button as any)['navigatePatched']) {\r\n const hermesStepButtonNavigateToNextPanelFn = button.navigateToNextPanel.bind(button);\r\n button.navigateToNextPanel = this.onHermesStepButtonClickedWrapperFn(hermesStepButtonNavigateToNextPanelFn);\r\n (button as any)['navigatePatched'] = true;\r\n }\r\n });\r\n }\r\n\r\n @ViewChild(HermesStepper, { static: false })\r\n set stepper(value: HermesStepper) {\r\n this.stepperService = value['stepperService'];\r\n this.patchStepperService();\r\n this.subscribeForPanelChanges();\r\n }\r\n\r\n // Maps to Wizard.isLoading\r\n get isLoading(): boolean {\r\n return (\r\n this.loading || // explicitly set as busy\r\n this.relevanceService.loading || // check if relevanceCheck computation in progress\r\n // additionally inspect pages containers and see if any one is loading\r\n (!!this.pagesContainers &&\r\n this.pagesContainers.some(\r\n (value: StepContainer) => !!value.step.modelInstance && !!value.step.modelInstance.loading\r\n ))\r\n );\r\n }\r\n\r\n get pageProgressDetails(): string {\r\n return this.activePage?.step?.modelInstance?.progressStatus || '';\r\n }\r\n\r\n get showProgressCancelButton(): boolean {\r\n return typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function';\r\n }\r\n\r\n get cancelValidationButtonLabel(): string {\r\n return this.activePage?.step?.modelInstance?.cancelableValidation?.cancelButtonLabel || '';\r\n }\r\n\r\n cancelPageValidation(): void {\r\n if (typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function') {\r\n this.activePage?.step?.modelInstance?.cancelableValidation.cancelValidation();\r\n }\r\n }\r\n\r\n isNextButtonDisabled(step: Step) {\r\n const activeContainer = this.pagesContainers && this.pagesContainers.find(item => item.step === step);\r\n return this.isLoading || this.errorActivatingStep || (activeContainer ? !activeContainer.readyToComplete : false);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#steps = [];\r\n this.activeStep = undefined;\r\n this.subscriptions.unsubscribe();\r\n this.unsubscribeRetry();\r\n this.modelMgr.destroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.pagesContainers.length) {\r\n // If relevance checks are fast enough (or there are no relevance checks), _pagesContainers will be initialized.\r\n this.componentAfterViewInit$.next();\r\n } else {\r\n // Relevance checks may take some time, wait for _pagesContainers to initialize\r\n this.pagesContainers.changes.pipe(take(1)).subscribe(() => this.componentAfterViewInit$.next());\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n // upon getting a wizard page onLoad signal and safely ensuring component has instantiated itself with `AppfxWizardPage`\r\n // elements in the template, only then activate the pending container\r\n this.subscriptions.add(\r\n combineLatest([this.componentAfterViewInit$, this.awaitingWizardPageOnLoad$])\r\n .pipe(\r\n filter(() => !!this.pagesContainers),\r\n switchMap(([, pendingStep]) => this.modelMgr.injectPropertiesToPendingStep(pendingStep))\r\n )\r\n .subscribe(result => {\r\n this.errorActivatingStep = !!result.error;\r\n this.activatePendingContainer(result);\r\n })\r\n );\r\n }\r\n\r\n // Maps to Wizard.onWizardPageActivated\r\n onStepActivated(step: Step): void {\r\n this.awaitingWizardPageOnLoad$.next(step);\r\n }\r\n\r\n /**\r\n * Wrapper function which to wrap the handler of the \"Next/Finish\" button of every step and\r\n * to add additional validation and data extraction logic.\r\n */\r\n onHermesStepButtonClickedWrapperFn(callbackFn: () => void): () => void {\r\n return () => {\r\n this.commitActiveStep()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n callbackFn();\r\n });\r\n };\r\n }\r\n\r\n /**\r\n * Handler invoked when the form is submitted. This happens when\r\n * all steps are in completed state.\r\n */\r\n onFormSubmit(): void {\r\n if (this.stateService.areAllStepsCompleted()) {\r\n this.onFinish.emit();\r\n }\r\n }\r\n\r\n /**\r\n * Checks if the given step index corresponds to the first visible (non-skipped) step in the workflow.\r\n * Used to conditionally hide the Back button on the initial page.\r\n * @param stepIndex The index of the step in the stepsInternal array.\r\n */\r\n protected isFirstVisibleStep(stepIndex: number): boolean {\r\n return this.stateService.isFirstVisibleStep(stepIndex, this.stepsInternal);\r\n }\r\n\r\n /**\r\n * When user clicks on already completed steps, Stepper should call validate method of current step before navigation.\r\n * Patches stepperService.togglePanel method which calls this.commitActiveStep before calling the original togglePanel method.\r\n */\r\n private patchStepperService() {\r\n const originalTogglePanelFunc = this.stepperService.togglePanel;\r\n if (!(this.stepperService as any)['togglePanelPatched']) {\r\n this.stepperService.togglePanel = (...args: [panelId: string, open?: boolean | undefined]) => {\r\n const firstIncompleteContainerIndex = this.stateService.getFirstIncompleteStepContainerIndex();\r\n const activeContainerIndex = this.pagesContainers.toArray().findIndex(item => item === this.activePage);\r\n if (firstIncompleteContainerIndex === activeContainerIndex) {\r\n // When moving from incomplete step to previous steps, do not call commit\r\n originalTogglePanelFunc.apply(this.stepperService, args);\r\n } else {\r\n this.commitActiveStep()\r\n .pipe(\r\n take(1),\r\n filter(isValid => isValid)\r\n )\r\n .subscribe(() => {\r\n originalTogglePanelFunc.apply(this.stepperService, args);\r\n });\r\n }\r\n };\r\n (this.stepperService as any)['togglePanelPatched'] = true;\r\n }\r\n }\r\n\r\n private commitActiveStep(): Observable<boolean> {\r\n if (!this.activePage) {\r\n return of(false);\r\n }\r\n this.loading = true;\r\n return this.activePage.onCommit().pipe(\r\n tap(isValid => {\r\n const activeStep = (this.activePage as StepContainer).step;\r\n // Mark the current step as valid/invalid.\r\n this.stateService.markStepValid(activeStep, isValid);\r\n // If not valid, mark the next steps as invalid too.\r\n if (!isValid) {\r\n this.stateService.resetNextStepsValidStates(activeStep);\r\n } else if (activeStep.summary) {\r\n // retrieve step summary on successful validation of step.\r\n activeStep.initialDescription = this.summaryService.getSummary(activeStep);\r\n } else {\r\n // no action\r\n }\r\n\r\n this.form.controls[this.initialStep].setErrors(isValid ? null : { formInvalid: true });\r\n this.form.controls[this.initialStep].markAsDirty();\r\n }),\r\n switchMap((isValid: boolean) => {\r\n if (isValid) {\r\n this.modelMgr.ejectPropertiesFromCurrentStep(this.activeStep);\r\n return this.relevanceService.checkComplete$().pipe(switchMap(() => of(isValid)));\r\n }\r\n return of(isValid);\r\n }),\r\n tap(() => {\r\n this.loading = false;\r\n this.cdr.detectChanges();\r\n })\r\n );\r\n }\r\n\r\n private activatePendingContainer(result: InjectPropertiesResult): void {\r\n this.unsubscribeRetry();\r\n const pendingPage = this.pagesContainers.find((item: StepContainer) => item.step === result.pendingStep);\r\n\r\n if (pendingPage) {\r\n if (result.error) {\r\n this.retrySubscription = pendingPage.onRetry\r\n .pipe(take(1))\r\n .subscribe((step: StepInternal) => this.retryStepTransition(step));\r\n } else {\r\n this.activeStep = result.pendingStep;\r\n this.activePage = this.pagesContainers.find(item => item.step === this.activeStep);\r\n }\r\n\r\n // Finally activate the container\r\n pendingPage.onActivate(result.error, result.stepModelChanges, result.recreateComponent);\r\n\r\n // Force digest as activation trigger changes Clarity wizard. template conditionals must re-evaluate\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n private retryStepTransition(step: Step): void {\r\n this.onStepActivated(step);\r\n }\r\n\r\n private invalidateNextSteps(): void {\r\n if (!this.activeStep) {\r\n return;\r\n }\r\n this.stateService.resetNextStepsValidStates(this.activeStep);\r\n this.stepperService.resetPanels();\r\n this.stepperService.overrideInitialPanel(this.initialStep);\r\n }\r\n\r\n /**\r\n * Marks steps that come before the provided source index as complete, internally\r\n * in the Clarity panel component.\r\n * It will mark all panels as closed, except the one that is being expanded,\r\n * passed in as the target index.\r\n *\r\n * DOM order of steps is assumed with regard to indices.\r\n *\r\n * @param sourceIndex indices that come before this will be marked as complete.\r\n * @param openPanelIndex index of the panel set to be opened.\r\n */\r\n private completePreviousSteps(sourceIndex: number, openPanelIndex: number) {\r\n const hermesStepperPanels = this.stepperPanels.toArray();\r\n const sourcePanelId = this.getFormGroupNameForStep(sourceIndex);\r\n for (let stepIndex = 0; stepIndex < hermesStepperPanels.length; stepIndex++) {\r\n const stepperPanel = hermesStepperPanels[stepIndex];\r\n\r\n if (stepperPanel.id === sourcePanelId) {\r\n break;\r\n }\r\n\r\n stepperPanel.panel.pipe(first()).subscribe(panel => {\r\n panel.disabled = false;\r\n panel.status = StepperPanelStatus.Complete;\r\n\r\n if (stepIndex !== openPanelIndex) {\r\n panel.open = false;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private unsubscribeRetry() {\r\n if (this.retrySubscription && !this.retrySubscription.closed) {\r\n this.retrySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /**\r\n * HermesStepper requires a child FormGroup for every step. This method creates one dummy\r\n * FormGroup for every step. In future these form groups must be used to indicate\r\n * the error state of each step.\r\n */\r\n private initForm(steps: Step[]): void {\r\n if (steps && steps.length) {\r\n const childFormGroups: any = {};\r\n steps.forEach((step: Step, index: number) => {\r\n childFormGroups[this.getFormGroupNameForStep(index)] = this.formBuilder.group({});\r\n });\r\n\r\n this.form = this.formBuilder.group(childFormGroups);\r\n this.initialStep = this.getFormGroupNameForStep(0);\r\n }\r\n }\r\n\r\n /**\r\n * In Clarity 4.x the implementation was:\r\n * <code>\r\n * <hermes-stepper-panel (hermesAccordionPanelOpenChange)=\"stateService.stepActivated(step, $event, i)\"\r\n * </code>\r\n * In Clarity 5.x \"hermesAccordionPanelOpenChange\" was regressed:\r\n * https://github.com/vmware/clarity/issues/5957\r\n * This is temporary fix until the above issue gets fixed.\r\n *\r\n * In future this logic can be changed. Instead of listening for all panels states\r\n * (that triggers too many times), we can use combination of:\r\n * - StepperService.activeStep (invoked on Next) AND\r\n * - StepperService.togglePanel (invoked on previous panel click)\r\n */\r\n private subscribeForPanelChanges(): void {\r\n const panelsChanges: BehaviorSubject<CollapsiblePanelModel[]> = this.stepperService['_panelsChanges'];\r\n this.subscriptions.add(\r\n panelsChanges.subscribe((panels: CollapsiblePanelModel[]) => {\r\n panels.forEach((panelModel: CollapsiblePanelModel) => {\r\n const panelId = panelModel.id;\r\n const stepIndex: number = +panelId.replace('step', '');\r\n const step: StepInternal = this.#steps[stepIndex];\r\n this.stateService.stepActivated(step, panelModel.open, stepIndex);\r\n });\r\n })\r\n );\r\n }\r\n\r\n private getFormGroupNameForStep(stepIndex: number): string {\r\n return 'step' + stepIndex;\r\n }\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<form\r\n hermesStepper\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n [hermesInitialStep]=\"initialStep\"\r\n [ngClass]=\"{ 'disable-form': isLoading }\"\r\n>\r\n <ng-container *ngFor=\"let step of stepsInternal; let i = index; let last = last\">\r\n <hermes-stepper-panel\r\n *ngIf=\"!step.isSkipped\"\r\n formGroupName=\"step{{ i }}\"\r\n [appfxOverrideHermesStrings]=\"stepPanelOverriddenStrings\"\r\n >\r\n <hermes-step-title>{{ step.title }}</hermes-step-title>\r\n <hermes-step-description>\r\n <appfx-property-view\r\n *ngIf=\"step.initialDescription\"\r\n [data]=\"step.initialDescription\"\r\n [attr.aria-label]=\"step.description\"\r\n ></appfx-property-view>\r\n </hermes-step-description>\r\n\r\n <hermes-step-content>\r\n <appfx-step-container [step]=\"step\"> </appfx-step-container>\r\n\r\n <button\r\n *ngIf=\"!last\"\r\n [disabled]=\"isNextButtonDisabled(step)\"\r\n hermesStepButton=\"next\"\r\n [ngClass]=\"{ 'btn-primary': usePrimaryNextButton }\"\r\n >\r\n {{ workflowStrings.next }}\r\n </button>\r\n <button *ngIf=\"last\" [disabled]=\"isNextButtonDisabled(step)\" hermesStepButton=\"submit\">\r\n {{ workflowStrings.finish }}\r\n </button>\r\n <button *ngIf=\"showBackButton && !isFirstVisibleStep(i)\" hermesStepButton=\"previous\">\r\n {{ workflowStrings.back }}\r\n </button>\r\n <button *ngIf=\"showCancelButton\" (click)=\"onCancel.emit()\" type=\"button\" class=\"hermes-step-button btn btn-link\">\r\n {{ workflowStrings.cancel }}\r\n </button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </ng-container>\r\n</form>\r\n\r\n<appfx-spinner\r\n *ngIf=\"isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [progressDetails]=\"pageProgressDetails\"\r\n [showActionButton]=\"showProgressCancelButton\"\r\n [actionButtonLabel]=\"cancelValidationButtonLabel\"\r\n (actionClick)=\"cancelPageValidation()\"\r\n>\r\n</appfx-spinner>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AppfxA11yModule } from '@hermes-ui/angular/addons/a11y';\r\nimport { AppfxPropertyViewModule } from '@hermes-ui/angular/addons/property-view';\r\nimport { AppfxWorkflowCoreModule } from '@hermes-ui/angular/addons/var';\r\nimport { HermesStepperModule } from '@hermes-ui/angular/stepper';\r\n\r\nimport { StepperStateService } from './state/stepper-state.service';\r\nimport { StepperComponent } from './stepper.component';\r\nimport { SummaryService } from './summary/summary.service';\r\n\r\nconst clarityDependencies = [HermesStepperModule];\r\nconst appfxDependencies = [AppfxPropertyViewModule, AppfxA11yModule, AppfxWorkflowCoreModule];\r\n\r\n@NgModule({\r\n imports: [...appfxDependencies, ...clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule],\r\n declarations: [StepperComponent],\r\n providers: [StepperStateService, SummaryService],\r\n exports: [StepperComponent],\r\n})\r\nexport class AppfxStepperModule {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { AppfxStepperModule } from './stepper.module';\r\nexport { StepperComponent, StepperComponent as Stepper } from './stepper.component';\r\nexport { StepperStateService, StepState } from './state/stepper-state.service';\r\nexport { SummaryService } from './summary/summary.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SummaryService","i1.StepperStateService","i5.SummaryService"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes-ui-angular-addons-tabs.mjs","sources":["../../../addons/tabs/if-tab-active/if-tab-active.directive.ts","../../../addons/tabs/tab-links/tab-links.component.ts","../../../addons/tabs/tab-links/tab-links.component.html","../../../addons/tabs/render-as-button/render-as-button.directive.ts","../../../addons/tabs/tabs.component.ts","../../../addons/tabs/tabs.component.html","../../../addons/tabs/tabs.module.ts","../../../addons/tabs/index.ts","../../../addons/tabs/hermes-ui-angular-addons-tabs.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Host,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n Self,\n} from '@angular/core';\nimport { HermesTab } from '@hermes-ui/angular/layout/tabs';\nimport { Subscription } from 'rxjs';\n\n/**\n * Detects when an active tab changes and emits a notification.\n * Optionally applies a CSS class to the active tab link element.\n *\n * Note: this directive peers into Clarity tab internals and requires maintenance\n * if Clarity changes its internal structure.\n */\n@Directive({\n selector: '[appfxIfTabActive]',\n standalone: false,\n})\nexport class IfTabActiveDirective implements OnInit, OnDestroy {\n @Output() appfxIfTabActiveChange: EventEmitter<boolean> = new EventEmitter();\n\n @Input() activeClass: string;\n\n private subscription: Subscription;\n\n constructor(\n @Host() @Self() public tab: HermesTab,\n private renderer: Renderer2\n ) {}\n\n /** Programmatically activate the tab when set to true. */\n @Input()\n set activateTab(value: boolean) {\n if (value && this.tab.ifActiveService.current !== this.tab.id) {\n this.tab.ifActiveService.current = this.tab.id;\n }\n }\n\n ngOnInit() {\n this.subscription = this.tab.ifActiveService.currentChange.subscribe(() => {\n if (this.activeClass) {\n try {\n if (this.tab.active) {\n this.renderer.addClass(this.getTabLinkElement().nativeElement, this.activeClass);\n } else {\n this.renderer.removeClass(this.getTabLinkElement().nativeElement, this.activeClass);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n console.error('Clarity library unable to provide `elementRef` on tabLink');\n }\n }\n this.appfxIfTabActiveChange.emit(this.tab.active);\n });\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n /** Accesses the underlying tab link element via Clarity internals. */\n private getTabLinkElement(): ElementRef {\n return this.tab.tabLink['el'];\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { ZoomLevel } from '@hermes-ui/angular/addons/a11y';\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\n\n@Component({\n selector: 'appfx-tab-links',\n standalone: false,\n templateUrl: 'tab-links.component.html',\n styleUrls: ['tab-links.component.scss'],\n})\nexport class TabLinksComponent {\n @Input()\n @HostBinding('class.opened')\n opened = false;\n\n @Input() title?: string;\n\n @Output() openedChange = new EventEmitter<boolean>();\n\n currentZoomLevel = ZoomLevel.none;\n\n constructor(\n public workflowStrings: WorkflowStrings,\n private cdr: ChangeDetectorRef\n ) {}\n\n changeOpened(opened: boolean) {\n this.opened = opened;\n this.openedChange.emit(this.opened);\n this.cdr.detectChanges(); // without this HostBinding not working\n }\n}\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<button class=\"btn-close-tabs\" [attr.aria-label]=\"workflowStrings.closeStepNavAriaLabel\" (click)=\"changeOpened(false)\">\r\n <hermes-icon direction=\"left\" shape=\"angle\" class=\"tabs-close\"></hermes-icon>\r\n</button>\r\n\r\n<div class=\"nav-step-title-wrapper\">\r\n <button class=\"btn-show-tabs\" [attr.aria-label]=\"workflowStrings.openStepNavAriaLabel\" (click)=\"changeOpened(true)\">\r\n <hermes-icon shape=\"bars\"></hermes-icon>\r\n </button>\r\n <h3 class=\"nav-step-title\" [textContent]=\"title\"></h3>\r\n</div>\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Directive, ElementRef, Host, Input, OnChanges, Renderer2 } from '@angular/core';\nimport { HermesTabLink } from '@hermes-ui/angular/layout/tabs';\n\nconst resources = {\n clarity: {\n tabLinkNavigationClasses: ['nav-link', 'btn-link'],\n },\n};\n\n/**\n * Toggles CSS classes on a HermesTabLink to switch between default tab style and\n * a button-like appearance, enabling more versatile use of hermes-tabs.\n */\n@Directive({\n selector: '[renderAsButton]',\n standalone: false,\n})\nexport class RenderAsButtonDirective implements OnChanges, AfterViewInit {\n @Input() renderAsButton: boolean = true;\n\n constructor(\n @Host() private hermesTabLink: HermesTabLink,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n ngOnChanges(): void {\n this.patchClarityStyles();\n }\n\n ngAfterViewInit(): void {\n this.patchClarityStyles();\n }\n\n private patchClarityStyles(): void {\n const tabLinkElem = this.el.nativeElement;\n if (!tabLinkElem) {\n console.error('RenderAsButtonDirective: Unable to find the element');\n return;\n }\n if (this.hermesTabLink.inOverflow) {\n return;\n }\n if (this.renderAsButton) {\n resources.clarity.tabLinkNavigationClasses.forEach(css => this.renderer.removeClass(tabLinkElem, css));\n } else {\n resources.clarity.tabLinkNavigationClasses.forEach(css => this.renderer.addClass(tabLinkElem, css));\n }\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { ZoomLevel, ZoomLevelService } from '@hermes-ui/angular/addons/a11y';\nimport {\n InjectPropertiesResult,\n ModelChange,\n RelevanceService,\n Step,\n StepContainer,\n StepInternal,\n TabLayout,\n WorkflowConfigurationService,\n WorkflowModel,\n WorkflowModelManager,\n} from '@hermes-ui/angular/addons/var';\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\nimport { HermesTabLink } from '@hermes-ui/angular/layout/tabs';\nimport { combineLatest, Observable, of, ReplaySubject, Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\n\n/**\n * Component used to render the composition of step components as tabs\n * (using Clarity tabs component). Workflow of the steps is handled by the\n * {@link WorkflowModelManager} - the same responsible for the {@link Wizard} workflow.\n * This guarantees the same API and UX for the inline and dialog wizards.\n *\n * @example\n * <appfx-tabs\n * [loading]=\"loading\"\n * [tabs]=\"tabs\"\n * [disableTabsContent]=\"false\"\n * [tabLayout]=\"TabLayout.horizontal\"\n * [model]=\"tabsModel\">\n * </appfx-tabs>\n */\n@Component({\n selector: 'appfx-tabs',\n standalone: false,\n templateUrl: 'tabs.component.html',\n styleUrls: ['tabs.component.scss', 'tabs.a11y.scss'],\n providers: [RelevanceService, WorkflowModelManager],\n})\nexport class TabsComponent implements OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy {\n /** Disable the content of the tabs. */\n @Input() disableTabsContent: boolean;\n\n /** Display loading indicator. */\n @Input()\n @HostBinding('class.loading')\n loading = false;\n\n /** The tabs layout. Defaults to horizontal. */\n @Input() tabLayout: TabLayout = TabLayout.horizontal;\n\n /** Set to false to suppress the loading indicator; check {@link isLoading} instead. */\n @Input() showLoadingIndicator = true;\n\n /** Set to false to disable auto-collapsible tab links. */\n @Input() autoCollapseTabLinks = true;\n\n /** Set to false to hide the tab links (useful when there is only one step). */\n @Input() showTabLinks = true;\n\n /** Emits when the workflow model changes. */\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\n\n @Output() tabLinksOpenedChange = new EventEmitter<boolean>();\n\n /** Emits with the activated step when the active tab changes. */\n @Output() activeTabChange = new EventEmitter<Step>();\n\n errorIconVisibleList: boolean[] = [];\n hermesTabsLayout: TabLayout;\n TabLayout = TabLayout;\n currentZoomLevel = ZoomLevel.none;\n ZoomLevel = ZoomLevel;\n tabLinksOpened = false;\n activeTabStep: Step = <Step>{};\n isVerticalLayout: boolean;\n isSecondaryLayout: boolean;\n\n @ViewChildren(StepContainer) private pagesContainers: QueryList<StepContainer>;\n @ViewChildren(HermesTabLink) private tabLinks: QueryList<HermesTabLink>;\n\n private steps: StepInternal[];\n private tabsModel: WorkflowModel;\n private awaitingActivePageOnLoad$: ReplaySubject<StepInternal> = new ReplaySubject(1);\n private componentAfterViewInit$: Subject<void> = new Subject();\n private subscriptions = new Subscription();\n private errorActivatingStep = false;\n private retrySubscription: Subscription;\n private stepsValidationMap = new Map<Step, Observable<boolean>>();\n\n constructor(\n public modelMgr: WorkflowModelManager,\n private relevanceService: RelevanceService,\n private cdr: ChangeDetectorRef,\n public workflowStrings: WorkflowStrings,\n public configService: WorkflowConfigurationService,\n @Optional() private zoomLevelService?: ZoomLevelService\n ) {\n this.subscriptions.add(modelMgr.loading$.pipe(debounceTime(10)).subscribe(loading => (this.loading = loading)));\n this.subscriptions.add(\n modelMgr.onModelChange$.subscribe((changes: ModelChange[]) => {\n this.onModelChange.emit(changes);\n })\n );\n }\n\n get tabs(): Step[] {\n return this.steps;\n }\n\n @Input()\n set tabs(steps: Step[]) {\n this.relevanceService.steps = steps;\n this.relevanceService\n .checkComplete$()\n .pipe(take(1))\n .subscribe((checkedSteps: Step[]) => {\n this.steps = checkedSteps;\n this.activateFirstTab();\n this.modelMgr.steps = checkedSteps;\n this.onStepsOrModelChange();\n });\n }\n\n /**\n * Supply any structure that has the needed properties to inject to / eject from step models.\n * If not specified the steps will stay disconnected from each other.\n */\n get model(): WorkflowModel {\n return this.tabsModel;\n }\n\n @Input()\n set model(tabsModel: WorkflowModel) {\n this.tabsModel = tabsModel;\n this.modelMgr.model = tabsModel;\n this.onStepsOrModelChange();\n }\n\n get tabsInternal(): StepInternal[] {\n return this.steps;\n }\n\n get isLoading(): boolean {\n return (\n this.loading ||\n this.relevanceService.loading ||\n (!!this.pagesContainers &&\n this.pagesContainers.some(\n (value: StepContainer) => !!value.step.modelInstance && !!value.step.modelInstance.loading\n ))\n );\n }\n\n get showTabNav(): boolean {\n return this.showTabLinks && (this.showAppfxTabLinks ? this.tabLinksOpened : true);\n }\n\n get showTabContent(): boolean {\n return !this.tabLinksOpened;\n }\n\n get showAppfxTabLinks(): boolean {\n return (\n this.showTabLinks &&\n this.autoCollapseTabLinks &&\n this.isVerticalLayout &&\n this.currentZoomLevel !== ZoomLevel.none\n );\n }\n\n get isReady(): boolean {\n let hasIncompletePage = false;\n if (this.pagesContainers) {\n hasIncompletePage = this.pagesContainers.some(p => !p.readyToComplete);\n }\n return !(hasIncompletePage || this.isLoading || this.errorActivatingStep);\n }\n\n ngOnInit(): void {\n if (this.zoomLevelService) {\n this.subscriptions.add(\n this.zoomLevelService.onChange.subscribe((level: ZoomLevel) => {\n this.currentZoomLevel = level;\n this.cdr.detectChanges();\n })\n );\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.tabLayout) {\n this.isVerticalLayout = this.tabLayout === TabLayout.vertical;\n this.isSecondaryLayout = this.tabLayout === TabLayout.secondary;\n this.hermesTabsLayout = this.isVerticalLayout ? TabLayout.vertical : TabLayout.horizontal;\n }\n }\n\n ngAfterViewInit() {\n if (this.pagesContainers.length) {\n this.componentAfterViewInit$.next();\n } else {\n this.pagesContainers.changes.pipe(take(1)).subscribe(() => {\n this.componentAfterViewInit$.next();\n });\n }\n }\n\n ngAfterContentInit() {\n this.subscriptions.add(\n combineLatest([this.componentAfterViewInit$, this.awaitingActivePageOnLoad$])\n .pipe(\n filter(() => !!this.pagesContainers),\n switchMap(([, pendingStep]) => this.modelMgr.injectPropertiesToPendingStep(pendingStep))\n )\n .subscribe(result => {\n this.errorActivatingStep = !!result.error;\n this.activateStep(result);\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.unsubscribe();\n this.stepsValidationMap.clear();\n this.modelMgr.destroy();\n this.relevanceService.destroy();\n this.unsubscribeRetry();\n }\n\n /** Checks if the tab is currently active. */\n isTabActive(step: StepInternal): boolean {\n return step === this.activeTabStep;\n }\n\n /** Triggered when the tab page is changed. */\n onStepActiveChange(step: StepInternal, isStepActive: boolean): void {\n this.tabLinksOpened = false;\n this.tabLinksOpenedChange.emit(this.tabLinksOpened);\n if (isStepActive) {\n this.activeTabChange.emit(step);\n const previousStep: StepInternal = this.activeTabStep;\n\n this.validateStep(previousStep)\n .pipe(\n tap(() => this.modelMgr.ejectPropertiesFromCurrentStep(previousStep)),\n take(1)\n )\n .subscribe(() => {\n this.activeTabStep = step;\n this.awaitingActivePageOnLoad$.next(this.activeTabStep);\n });\n }\n }\n\n /** Validates only the active tab. */\n validateActiveTab$(): Observable<boolean> {\n return this.validateStep(this.activeTabStep).pipe(\n tap(() => this.modelMgr.ejectPropertiesFromCurrentStep(this.activeTabStep)),\n switchMap((validationResult: boolean) => {\n return this.disableTabsContent ? of(true) : of(validationResult);\n })\n );\n }\n\n /** Validates all tabs. Navigates to the first invalid tab if any fail. */\n validate$(): Observable<boolean> {\n return this.validateActiveTab$().pipe(\n switchMap(() => {\n const stepsValidate$: Observable<boolean>[] = this.disableTabsContent\n ? [of(true)]\n : Array.from(this.stepsValidationMap.values());\n\n this.loading = this.showLoadingIndicator;\n return combineLatest(stepsValidate$).pipe(\n map((values: boolean[]) => {\n if (this.disableTabsContent) {\n return true;\n }\n return values.every(value => value);\n }),\n tap(isValid => {\n this.loading = false;\n if (!isValid) {\n this.navigateToTabWithErrors();\n }\n })\n );\n })\n );\n }\n\n private activateFirstTab(): void {\n if (this.steps?.length) {\n const firstNotSkippedStepIndex: number = this.steps.findIndex(item => !item.isSkipped);\n if (firstNotSkippedStepIndex !== -1) {\n this.steps[firstNotSkippedStepIndex].instantiateLazy = false;\n this.activeTabStep = this.steps[firstNotSkippedStepIndex];\n this.activeTabChange.emit(this.activeTabStep);\n }\n }\n }\n\n private navigateToTabWithErrors(): void {\n if (!this.pagesContainers) {\n return;\n }\n const activeStepIndex: number = this.tabs.indexOf(this.activeTabStep);\n const activeStepHasError: boolean = activeStepIndex !== -1 && this.errorIconVisibleList[activeStepIndex];\n if (activeStepHasError) {\n return;\n }\n const firstStepWithErrorsIndex: number = this.errorIconVisibleList.findIndex(value => value);\n if (firstStepWithErrorsIndex === -1) {\n return;\n }\n const firstStepWithErrors: Step = this.tabs[firstStepWithErrorsIndex];\n const firstPageWithErrorsIndex = this.pagesContainers\n .toArray()\n .findIndex((item: StepContainer) => item.step === firstStepWithErrors);\n if (firstPageWithErrorsIndex !== -1) {\n this.tabLinks.toArray()[firstPageWithErrorsIndex].activate();\n this.activeTabChange.emit(firstStepWithErrors);\n }\n }\n\n private activateStep(result: InjectPropertiesResult): void {\n this.unsubscribeRetry();\n const pendingPage = this.pagesContainers.find((item: StepContainer) => item.step === result.pendingStep);\n if (pendingPage) {\n if (result.error) {\n this.retrySubscription = pendingPage.onRetry\n .pipe(take(1))\n .subscribe((step: StepInternal) => this.retryStepTransition(step));\n }\n pendingPage.onActivate(result.error, result.stepModelChanges, result.recreateComponent);\n this.cdr.detectChanges();\n }\n }\n\n private validateStep(step: Step): Observable<boolean> {\n if (this.disableTabsContent || !step) {\n return of(true);\n }\n const pageToValidate: StepContainer | undefined = this.pagesContainers.find(\n (item: StepContainer) => item.step === step\n );\n if (pageToValidate) {\n const pageIndex: number = this.tabs.indexOf(step);\n const validate$ = pageToValidate.onCommit().pipe(shareReplay(1));\n this.stepsValidationMap.set(step, validate$);\n this.loading = true;\n return validate$.pipe(\n tap(success => {\n this.errorIconVisibleList[pageIndex] = !success;\n this.loading = false;\n })\n );\n }\n return of(true);\n }\n\n private onStepsOrModelChange(): void {\n if (!this.activeTabStep || !this.model) {\n return;\n }\n this.awaitingActivePageOnLoad$.next(this.activeTabStep);\n }\n\n private unsubscribeRetry() {\n if (this.retrySubscription && !this.retrySubscription.closed) {\n this.retrySubscription.unsubscribe();\n }\n }\n\n private retryStepTransition(step: StepInternal): void {\n this.awaitingActivePageOnLoad$.next(step);\n }\n}\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n\r\n<div\r\n class=\"appfx-tabs\"\r\n [class.div-disabled]=\"isLoading\"\r\n [ngClass]=\"tabLayout\"\r\n [class.show-tab-nav]=\"showTabNav\"\r\n [class.show-tab-content]=\"!tabLinksOpened\"\r\n>\r\n <appfx-tab-links\r\n #appfxTabLinks\r\n *ngIf=\"showAppfxTabLinks\"\r\n [(opened)]=\"tabLinksOpened\"\r\n (openedChange)=\"tabLinksOpenedChange.emit($event)\"\r\n [title]=\"activeTabStep.title\"\r\n >\r\n </appfx-tab-links>\r\n <appfx-spinner\r\n *ngIf=\"showLoadingIndicator && isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [isModal]=\"false\"\r\n ></appfx-spinner>\r\n <hermes-tabs\r\n *ngIf=\"tabs\"\r\n [hermesLayout]=\"hermesTabsLayout\"\r\n appfxOverflowTabs\r\n [ngClass]=\"{\r\n 'appfx-secondary-tabs': isSecondaryLayout,\r\n }\"\r\n >\r\n <ng-container *ngFor=\"let step of tabsInternal; let stepIndex = index\">\r\n <hermes-tab\r\n *ngIf=\"!step.isSkipped\"\r\n appfxIfTabActive\r\n [activeClass]=\"'activeTab'\"\r\n [activateTab]=\"isTabActive(step)\"\r\n (appfxIfTabActiveChange)=\"onStepActiveChange(step, $event)\"\r\n >\r\n <button\r\n hermesTabLink\r\n [renderAsButton]=\"isSecondaryLayout\"\r\n [ngClass]=\"{\r\n 'btn-primary': isSecondaryLayout && isTabActive(step),\r\n 'btn-sm appfx-tab-button': isSecondaryLayout,\r\n }\"\r\n >\r\n {{ step.title }}\r\n <hermes-icon\r\n *ngIf=\"errorIconVisibleList[stepIndex]\"\r\n class=\"alert-icon\"\r\n shape=\"exclamation-circle\"\r\n status=\"danger\"\r\n size=\"md\"\r\n >\r\n </hermes-icon>\r\n </button>\r\n <hermes-tab-content>\r\n <appfx-step-container\r\n [step]=\"step\"\r\n [class.div-disabled]=\"disableTabsContent\"\r\n class=\"content-container hermes-flex-column\"\r\n >\r\n </appfx-step-container>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </ng-container>\r\n </hermes-tabs>\r\n</div>\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { A11yModule } from '@hermes-ui/angular/addons/a11y';\nimport { AppfxWorkflowCoreModule } from '@hermes-ui/angular/addons/var';\nimport { HermesIcon } from '@hermes-ui/angular/icon';\nimport { HermesTabsModule } from '@hermes-ui/angular/layout/tabs';\n\nimport { IfTabActiveDirective } from './if-tab-active/if-tab-active.directive';\nimport { RenderAsButtonDirective } from './render-as-button/render-as-button.directive';\nimport { TabLinksComponent } from './tab-links/tab-links.component';\nimport { TabsComponent } from './tabs.component';\n\nconst components = [TabsComponent, TabLinksComponent, IfTabActiveDirective];\nconst clarityDependencies = [HermesTabsModule, HermesIcon];\nconst appfxDependencies = [AppfxWorkflowCoreModule, A11yModule];\n\n@NgModule({\n imports: [...appfxDependencies, ...clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [...components, RenderAsButtonDirective],\n exports: [...components],\n})\nexport class AppfxTabsModule {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n IfTabActiveDirective,\r\n /**\r\n * @deprecated Use IfTabActiveDirective import instead.\r\n */\r\n IfTabActiveDirective as IfTabActive,\r\n} from './if-tab-active/if-tab-active.directive';\r\nexport {\r\n TabLinksComponent,\r\n /**\r\n * @deprecated Use TabLinksComponent import instead.\r\n */\r\n TabLinksComponent as TabLinks,\r\n} from './tab-links/tab-links.component';\r\nexport {\r\n TabsComponent,\r\n TabsComponent as AppfxTabsComponent,\r\n /**\r\n * @deprecated Use TabsComponent import instead.\r\n */\r\n TabsComponent as Tabs,\r\n} from './tabs.component';\r\nexport { AppfxTabsModule } from './tabs.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i5","i7.TabLinksComponent","i8.IfTabActiveDirective","i9.RenderAsButtonDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hermes-ui-angular-addons-tabs.mjs","sources":["../../../addons/tabs/if-tab-active/if-tab-active.directive.ts","../../../addons/tabs/tab-links/tab-links.component.ts","../../../addons/tabs/tab-links/tab-links.component.html","../../../addons/tabs/render-as-button/render-as-button.directive.ts","../../../addons/tabs/tabs.component.ts","../../../addons/tabs/tabs.component.html","../../../addons/tabs/tabs.module.ts","../../../addons/tabs/index.ts","../../../addons/tabs/hermes-ui-angular-addons-tabs.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Host,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Renderer2,\r\n Self,\r\n} from '@angular/core';\r\nimport { HermesTab } from '@hermes-ui/angular/layout/tabs';\r\nimport { Subscription } from 'rxjs';\r\n\r\n/**\r\n * Detects when an active tab changes and emits a notification.\r\n * Optionally applies a CSS class to the active tab link element.\r\n *\r\n * Note: this directive peers into Clarity tab internals and requires maintenance\r\n * if Clarity changes its internal structure.\r\n */\r\n@Directive({\r\n selector: '[appfxIfTabActive]',\r\n standalone: false,\r\n})\r\nexport class IfTabActiveDirective implements OnInit, OnDestroy {\r\n @Output() appfxIfTabActiveChange: EventEmitter<boolean> = new EventEmitter();\r\n\r\n @Input() activeClass: string;\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n @Host() @Self() public tab: HermesTab,\r\n private renderer: Renderer2\r\n ) {}\r\n\r\n /** Programmatically activate the tab when set to true. */\r\n @Input()\r\n set activateTab(value: boolean) {\r\n if (value && this.tab.ifActiveService.current !== this.tab.id) {\r\n this.tab.ifActiveService.current = this.tab.id;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this.tab.ifActiveService.currentChange.subscribe(() => {\r\n if (this.activeClass) {\r\n try {\r\n if (this.tab.active) {\r\n this.renderer.addClass(this.getTabLinkElement().nativeElement, this.activeClass);\r\n } else {\r\n this.renderer.removeClass(this.getTabLinkElement().nativeElement, this.activeClass);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n } catch (e) {\r\n console.error('Clarity library unable to provide `elementRef` on tabLink');\r\n }\r\n }\r\n this.appfxIfTabActiveChange.emit(this.tab.active);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n /** Accesses the underlying tab link element via Clarity internals. */\r\n private getTabLinkElement(): ElementRef {\r\n return this.tab.tabLink['el'];\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\r\nimport { ZoomLevel } from '@hermes-ui/angular/addons/a11y';\r\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\r\n\r\n@Component({\r\n selector: 'appfx-tab-links',\r\n standalone: false,\r\n templateUrl: 'tab-links.component.html',\r\n styleUrls: ['tab-links.component.scss'],\r\n})\r\nexport class TabLinksComponent {\r\n @Input()\r\n @HostBinding('class.opened')\r\n opened = false;\r\n\r\n @Input() title?: string;\r\n\r\n @Output() openedChange = new EventEmitter<boolean>();\r\n\r\n currentZoomLevel = ZoomLevel.none;\r\n\r\n constructor(\r\n public workflowStrings: WorkflowStrings,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n changeOpened(opened: boolean) {\r\n this.opened = opened;\r\n this.openedChange.emit(this.opened);\r\n this.cdr.detectChanges(); // without this HostBinding not working\r\n }\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<button class=\"btn-close-tabs\" [attr.aria-label]=\"workflowStrings.closeStepNavAriaLabel\" (click)=\"changeOpened(false)\">\r\n <hermes-icon direction=\"left\" shape=\"angle\" class=\"tabs-close\"></hermes-icon>\r\n</button>\r\n\r\n<div class=\"nav-step-title-wrapper\">\r\n <button class=\"btn-show-tabs\" [attr.aria-label]=\"workflowStrings.openStepNavAriaLabel\" (click)=\"changeOpened(true)\">\r\n <hermes-icon shape=\"bars\"></hermes-icon>\r\n </button>\r\n <h3 class=\"nav-step-title\" [textContent]=\"title\"></h3>\r\n</div>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { AfterViewInit, Directive, ElementRef, Host, Input, OnChanges, Renderer2 } from '@angular/core';\r\nimport { HermesTabLink } from '@hermes-ui/angular/layout/tabs';\r\n\r\nconst resources = {\r\n clarity: {\r\n tabLinkNavigationClasses: ['nav-link', 'btn-link'],\r\n },\r\n};\r\n\r\n/**\r\n * Toggles CSS classes on a HermesTabLink to switch between default tab style and\r\n * a button-like appearance, enabling more versatile use of hermes-tabs.\r\n */\r\n@Directive({\r\n selector: '[renderAsButton]',\r\n standalone: false,\r\n})\r\nexport class RenderAsButtonDirective implements OnChanges, AfterViewInit {\r\n @Input() renderAsButton: boolean = true;\r\n\r\n constructor(\r\n @Host() private hermesTabLink: HermesTabLink,\r\n private renderer: Renderer2,\r\n private el: ElementRef\r\n ) {}\r\n\r\n ngOnChanges(): void {\r\n this.patchClarityStyles();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.patchClarityStyles();\r\n }\r\n\r\n private patchClarityStyles(): void {\r\n const tabLinkElem = this.el.nativeElement;\r\n if (!tabLinkElem) {\r\n console.error('RenderAsButtonDirective: Unable to find the element');\r\n return;\r\n }\r\n if (this.hermesTabLink.inOverflow) {\r\n return;\r\n }\r\n if (this.renderAsButton) {\r\n resources.clarity.tabLinkNavigationClasses.forEach(css => this.renderer.removeClass(tabLinkElem, css));\r\n } else {\r\n resources.clarity.tabLinkNavigationClasses.forEach(css => this.renderer.addClass(tabLinkElem, css));\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n AfterContentInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { ZoomLevel, ZoomLevelService } from '@hermes-ui/angular/addons/a11y';\r\nimport {\r\n InjectPropertiesResult,\r\n ModelChange,\r\n RelevanceService,\r\n Step,\r\n StepContainer,\r\n StepInternal,\r\n TabLayout,\r\n WorkflowConfigurationService,\r\n WorkflowModel,\r\n WorkflowModelManager,\r\n} from '@hermes-ui/angular/addons/var';\r\nimport { WorkflowStrings } from '@hermes-ui/angular/addons/workflow/strings';\r\nimport { HermesTabLink } from '@hermes-ui/angular/layout/tabs';\r\nimport { combineLatest, Observable, of, ReplaySubject, Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\r\n\r\n/**\r\n * Component used to render the composition of step components as tabs\r\n * (using Clarity tabs component). Workflow of the steps is handled by the\r\n * {@link WorkflowModelManager} - the same responsible for the {@link Wizard} workflow.\r\n * This guarantees the same API and UX for the inline and dialog wizards.\r\n *\r\n * @example\r\n * <appfx-tabs\r\n * [loading]=\"loading\"\r\n * [tabs]=\"tabs\"\r\n * [disableTabsContent]=\"false\"\r\n * [tabLayout]=\"TabLayout.horizontal\"\r\n * [model]=\"tabsModel\">\r\n * </appfx-tabs>\r\n */\r\n@Component({\r\n selector: 'appfx-tabs',\r\n standalone: false,\r\n templateUrl: 'tabs.component.html',\r\n styleUrls: ['tabs.component.scss', 'tabs.a11y.scss'],\r\n providers: [RelevanceService, WorkflowModelManager],\r\n})\r\nexport class TabsComponent implements OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy {\r\n /** Disable the content of the tabs. */\r\n @Input() disableTabsContent: boolean;\r\n\r\n /** Display loading indicator. */\r\n @Input()\r\n @HostBinding('class.loading')\r\n loading = false;\r\n\r\n /** The tabs layout. Defaults to horizontal. */\r\n @Input() tabLayout: TabLayout = TabLayout.horizontal;\r\n\r\n /** Set to false to suppress the loading indicator; check {@link isLoading} instead. */\r\n @Input() showLoadingIndicator = true;\r\n\r\n /** Set to false to disable auto-collapsible tab links. */\r\n @Input() autoCollapseTabLinks = true;\r\n\r\n /** Set to false to hide the tab links (useful when there is only one step). */\r\n @Input() showTabLinks = true;\r\n\r\n /** Emits when the workflow model changes. */\r\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\r\n\r\n @Output() tabLinksOpenedChange = new EventEmitter<boolean>();\r\n\r\n /** Emits with the activated step when the active tab changes. */\r\n @Output() activeTabChange = new EventEmitter<Step>();\r\n\r\n errorIconVisibleList: boolean[] = [];\r\n hermesTabsLayout: TabLayout;\r\n TabLayout = TabLayout;\r\n currentZoomLevel = ZoomLevel.none;\r\n ZoomLevel = ZoomLevel;\r\n tabLinksOpened = false;\r\n activeTabStep: Step = <Step>{};\r\n isVerticalLayout: boolean;\r\n isSecondaryLayout: boolean;\r\n\r\n @ViewChildren(StepContainer) private pagesContainers: QueryList<StepContainer>;\r\n @ViewChildren(HermesTabLink) private tabLinks: QueryList<HermesTabLink>;\r\n\r\n private steps: StepInternal[];\r\n private tabsModel: WorkflowModel;\r\n private awaitingActivePageOnLoad$: ReplaySubject<StepInternal> = new ReplaySubject(1);\r\n private componentAfterViewInit$: Subject<void> = new Subject();\r\n private subscriptions = new Subscription();\r\n private errorActivatingStep = false;\r\n private retrySubscription: Subscription;\r\n private stepsValidationMap = new Map<Step, Observable<boolean>>();\r\n\r\n constructor(\r\n public modelMgr: WorkflowModelManager,\r\n private relevanceService: RelevanceService,\r\n private cdr: ChangeDetectorRef,\r\n public workflowStrings: WorkflowStrings,\r\n public configService: WorkflowConfigurationService,\r\n @Optional() private zoomLevelService?: ZoomLevelService\r\n ) {\r\n this.subscriptions.add(modelMgr.loading$.pipe(debounceTime(10)).subscribe(loading => (this.loading = loading)));\r\n this.subscriptions.add(\r\n modelMgr.onModelChange$.subscribe((changes: ModelChange[]) => {\r\n this.onModelChange.emit(changes);\r\n })\r\n );\r\n }\r\n\r\n get tabs(): Step[] {\r\n return this.steps;\r\n }\r\n\r\n @Input()\r\n set tabs(steps: Step[]) {\r\n this.relevanceService.steps = steps;\r\n this.relevanceService\r\n .checkComplete$()\r\n .pipe(take(1))\r\n .subscribe((checkedSteps: Step[]) => {\r\n this.steps = checkedSteps;\r\n this.activateFirstTab();\r\n this.modelMgr.steps = checkedSteps;\r\n this.onStepsOrModelChange();\r\n });\r\n }\r\n\r\n /**\r\n * Supply any structure that has the needed properties to inject to / eject from step models.\r\n * If not specified the steps will stay disconnected from each other.\r\n */\r\n get model(): WorkflowModel {\r\n return this.tabsModel;\r\n }\r\n\r\n @Input()\r\n set model(tabsModel: WorkflowModel) {\r\n this.tabsModel = tabsModel;\r\n this.modelMgr.model = tabsModel;\r\n this.onStepsOrModelChange();\r\n }\r\n\r\n get tabsInternal(): StepInternal[] {\r\n return this.steps;\r\n }\r\n\r\n get isLoading(): boolean {\r\n return (\r\n this.loading ||\r\n this.relevanceService.loading ||\r\n (!!this.pagesContainers &&\r\n this.pagesContainers.some(\r\n (value: StepContainer) => !!value.step.modelInstance && !!value.step.modelInstance.loading\r\n ))\r\n );\r\n }\r\n\r\n get showTabNav(): boolean {\r\n return this.showTabLinks && (this.showAppfxTabLinks ? this.tabLinksOpened : true);\r\n }\r\n\r\n get showTabContent(): boolean {\r\n return !this.tabLinksOpened;\r\n }\r\n\r\n get showAppfxTabLinks(): boolean {\r\n return (\r\n this.showTabLinks &&\r\n this.autoCollapseTabLinks &&\r\n this.isVerticalLayout &&\r\n this.currentZoomLevel !== ZoomLevel.none\r\n );\r\n }\r\n\r\n get isReady(): boolean {\r\n let hasIncompletePage = false;\r\n if (this.pagesContainers) {\r\n hasIncompletePage = this.pagesContainers.some(p => !p.readyToComplete);\r\n }\r\n return !(hasIncompletePage || this.isLoading || this.errorActivatingStep);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.zoomLevelService) {\r\n this.subscriptions.add(\r\n this.zoomLevelService.onChange.subscribe((level: ZoomLevel) => {\r\n this.currentZoomLevel = level;\r\n this.cdr.detectChanges();\r\n })\r\n );\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.tabLayout) {\r\n this.isVerticalLayout = this.tabLayout === TabLayout.vertical;\r\n this.isSecondaryLayout = this.tabLayout === TabLayout.secondary;\r\n this.hermesTabsLayout = this.isVerticalLayout ? TabLayout.vertical : TabLayout.horizontal;\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.pagesContainers.length) {\r\n this.componentAfterViewInit$.next();\r\n } else {\r\n this.pagesContainers.changes.pipe(take(1)).subscribe(() => {\r\n this.componentAfterViewInit$.next();\r\n });\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.subscriptions.add(\r\n combineLatest([this.componentAfterViewInit$, this.awaitingActivePageOnLoad$])\r\n .pipe(\r\n filter(() => !!this.pagesContainers),\r\n switchMap(([, pendingStep]) => this.modelMgr.injectPropertiesToPendingStep(pendingStep))\r\n )\r\n .subscribe(result => {\r\n this.errorActivatingStep = !!result.error;\r\n this.activateStep(result);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.unsubscribe();\r\n this.stepsValidationMap.clear();\r\n this.modelMgr.destroy();\r\n this.relevanceService.destroy();\r\n this.unsubscribeRetry();\r\n }\r\n\r\n /** Checks if the tab is currently active. */\r\n isTabActive(step: StepInternal): boolean {\r\n return step === this.activeTabStep;\r\n }\r\n\r\n /** Triggered when the tab page is changed. */\r\n onStepActiveChange(step: StepInternal, isStepActive: boolean): void {\r\n this.tabLinksOpened = false;\r\n this.tabLinksOpenedChange.emit(this.tabLinksOpened);\r\n if (isStepActive) {\r\n this.activeTabChange.emit(step);\r\n const previousStep: StepInternal = this.activeTabStep;\r\n\r\n this.validateStep(previousStep)\r\n .pipe(\r\n tap(() => this.modelMgr.ejectPropertiesFromCurrentStep(previousStep)),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.activeTabStep = step;\r\n this.awaitingActivePageOnLoad$.next(this.activeTabStep);\r\n });\r\n }\r\n }\r\n\r\n /** Validates only the active tab. */\r\n validateActiveTab$(): Observable<boolean> {\r\n return this.validateStep(this.activeTabStep).pipe(\r\n tap(() => this.modelMgr.ejectPropertiesFromCurrentStep(this.activeTabStep)),\r\n switchMap((validationResult: boolean) => {\r\n return this.disableTabsContent ? of(true) : of(validationResult);\r\n })\r\n );\r\n }\r\n\r\n /** Validates all tabs. Navigates to the first invalid tab if any fail. */\r\n validate$(): Observable<boolean> {\r\n return this.validateActiveTab$().pipe(\r\n switchMap(() => {\r\n const stepsValidate$: Observable<boolean>[] = this.disableTabsContent\r\n ? [of(true)]\r\n : Array.from(this.stepsValidationMap.values());\r\n\r\n this.loading = this.showLoadingIndicator;\r\n return combineLatest(stepsValidate$).pipe(\r\n map((values: boolean[]) => {\r\n if (this.disableTabsContent) {\r\n return true;\r\n }\r\n return values.every(value => value);\r\n }),\r\n tap(isValid => {\r\n this.loading = false;\r\n if (!isValid) {\r\n this.navigateToTabWithErrors();\r\n }\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n private activateFirstTab(): void {\r\n if (this.steps?.length) {\r\n const firstNotSkippedStepIndex: number = this.steps.findIndex(item => !item.isSkipped);\r\n if (firstNotSkippedStepIndex !== -1) {\r\n this.steps[firstNotSkippedStepIndex].instantiateLazy = false;\r\n this.activeTabStep = this.steps[firstNotSkippedStepIndex];\r\n this.activeTabChange.emit(this.activeTabStep);\r\n }\r\n }\r\n }\r\n\r\n private navigateToTabWithErrors(): void {\r\n if (!this.pagesContainers) {\r\n return;\r\n }\r\n const activeStepIndex: number = this.tabs.indexOf(this.activeTabStep);\r\n const activeStepHasError: boolean = activeStepIndex !== -1 && this.errorIconVisibleList[activeStepIndex];\r\n if (activeStepHasError) {\r\n return;\r\n }\r\n const firstStepWithErrorsIndex: number = this.errorIconVisibleList.findIndex(value => value);\r\n if (firstStepWithErrorsIndex === -1) {\r\n return;\r\n }\r\n const firstStepWithErrors: Step = this.tabs[firstStepWithErrorsIndex];\r\n const firstPageWithErrorsIndex = this.pagesContainers\r\n .toArray()\r\n .findIndex((item: StepContainer) => item.step === firstStepWithErrors);\r\n if (firstPageWithErrorsIndex !== -1) {\r\n this.tabLinks.toArray()[firstPageWithErrorsIndex].activate();\r\n this.activeTabChange.emit(firstStepWithErrors);\r\n }\r\n }\r\n\r\n private activateStep(result: InjectPropertiesResult): void {\r\n this.unsubscribeRetry();\r\n const pendingPage = this.pagesContainers.find((item: StepContainer) => item.step === result.pendingStep);\r\n if (pendingPage) {\r\n if (result.error) {\r\n this.retrySubscription = pendingPage.onRetry\r\n .pipe(take(1))\r\n .subscribe((step: StepInternal) => this.retryStepTransition(step));\r\n }\r\n pendingPage.onActivate(result.error, result.stepModelChanges, result.recreateComponent);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n private validateStep(step: Step): Observable<boolean> {\r\n if (this.disableTabsContent || !step) {\r\n return of(true);\r\n }\r\n const pageToValidate: StepContainer | undefined = this.pagesContainers.find(\r\n (item: StepContainer) => item.step === step\r\n );\r\n if (pageToValidate) {\r\n const pageIndex: number = this.tabs.indexOf(step);\r\n const validate$ = pageToValidate.onCommit().pipe(shareReplay(1));\r\n this.stepsValidationMap.set(step, validate$);\r\n this.loading = true;\r\n return validate$.pipe(\r\n tap(success => {\r\n this.errorIconVisibleList[pageIndex] = !success;\r\n this.loading = false;\r\n })\r\n );\r\n }\r\n return of(true);\r\n }\r\n\r\n private onStepsOrModelChange(): void {\r\n if (!this.activeTabStep || !this.model) {\r\n return;\r\n }\r\n this.awaitingActivePageOnLoad$.next(this.activeTabStep);\r\n }\r\n\r\n private unsubscribeRetry() {\r\n if (this.retrySubscription && !this.retrySubscription.closed) {\r\n this.retrySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private retryStepTransition(step: StepInternal): void {\r\n this.awaitingActivePageOnLoad$.next(step);\r\n }\r\n}\r\n","<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n\r\n<div\r\n class=\"appfx-tabs\"\r\n [class.div-disabled]=\"isLoading\"\r\n [ngClass]=\"tabLayout\"\r\n [class.show-tab-nav]=\"showTabNav\"\r\n [class.show-tab-content]=\"!tabLinksOpened\"\r\n>\r\n <appfx-tab-links\r\n #appfxTabLinks\r\n *ngIf=\"showAppfxTabLinks\"\r\n [(opened)]=\"tabLinksOpened\"\r\n (openedChange)=\"tabLinksOpenedChange.emit($event)\"\r\n [title]=\"activeTabStep.title\"\r\n >\r\n </appfx-tab-links>\r\n <appfx-spinner\r\n *ngIf=\"showLoadingIndicator && isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [isModal]=\"false\"\r\n ></appfx-spinner>\r\n <hermes-tabs\r\n *ngIf=\"tabs\"\r\n [hermesLayout]=\"hermesTabsLayout\"\r\n appfxOverflowTabs\r\n [ngClass]=\"{\r\n 'appfx-secondary-tabs': isSecondaryLayout,\r\n }\"\r\n >\r\n <ng-container *ngFor=\"let step of tabsInternal; let stepIndex = index\">\r\n <hermes-tab\r\n *ngIf=\"!step.isSkipped\"\r\n appfxIfTabActive\r\n [activeClass]=\"'activeTab'\"\r\n [activateTab]=\"isTabActive(step)\"\r\n (appfxIfTabActiveChange)=\"onStepActiveChange(step, $event)\"\r\n >\r\n <button\r\n hermesTabLink\r\n [renderAsButton]=\"isSecondaryLayout\"\r\n [ngClass]=\"{\r\n 'btn-primary': isSecondaryLayout && isTabActive(step),\r\n 'btn-sm appfx-tab-button': isSecondaryLayout,\r\n }\"\r\n >\r\n {{ step.title }}\r\n <hermes-icon\r\n *ngIf=\"errorIconVisibleList[stepIndex]\"\r\n class=\"alert-icon\"\r\n shape=\"exclamation-circle\"\r\n status=\"danger\"\r\n size=\"md\"\r\n >\r\n </hermes-icon>\r\n </button>\r\n <hermes-tab-content>\r\n <appfx-step-container\r\n [step]=\"step\"\r\n [class.div-disabled]=\"disableTabsContent\"\r\n class=\"content-container hermes-flex-column\"\r\n >\r\n </appfx-step-container>\r\n </hermes-tab-content>\r\n </hermes-tab>\r\n </ng-container>\r\n </hermes-tabs>\r\n</div>\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { A11yModule } from '@hermes-ui/angular/addons/a11y';\r\nimport { AppfxWorkflowCoreModule } from '@hermes-ui/angular/addons/var';\r\nimport { HermesIcon } from '@hermes-ui/angular/icon';\r\nimport { HermesTabsModule } from '@hermes-ui/angular/layout/tabs';\r\n\r\nimport { IfTabActiveDirective } from './if-tab-active/if-tab-active.directive';\r\nimport { RenderAsButtonDirective } from './render-as-button/render-as-button.directive';\r\nimport { TabLinksComponent } from './tab-links/tab-links.component';\r\nimport { TabsComponent } from './tabs.component';\r\n\r\nconst components = [TabsComponent, TabLinksComponent, IfTabActiveDirective];\r\nconst clarityDependencies = [HermesTabsModule, HermesIcon];\r\nconst appfxDependencies = [AppfxWorkflowCoreModule, A11yModule];\r\n\r\n@NgModule({\r\n imports: [...appfxDependencies, ...clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule],\r\n declarations: [...components, RenderAsButtonDirective],\r\n exports: [...components],\r\n})\r\nexport class AppfxTabsModule {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n IfTabActiveDirective,\r\n /**\r\n * @deprecated Use IfTabActiveDirective import instead.\r\n */\r\n IfTabActiveDirective as IfTabActive,\r\n} from './if-tab-active/if-tab-active.directive';\r\nexport {\r\n TabLinksComponent,\r\n /**\r\n * @deprecated Use TabLinksComponent import instead.\r\n */\r\n TabLinksComponent as TabLinks,\r\n} from './tab-links/tab-links.component';\r\nexport {\r\n TabsComponent,\r\n TabsComponent as AppfxTabsComponent,\r\n /**\r\n * @deprecated Use TabsComponent import instead.\r\n */\r\n TabsComponent as Tabs,\r\n} from './tabs.component';\r\nexport { AppfxTabsModule } from './tabs.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i5","i7.TabLinksComponent","i8.IfTabActiveDirective","i9.RenderAsButtonDirective"],"mappings":"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"}
|