{"version":3,"file":"clr-angular-wizard.mjs","sources":["../../../projects/angular/wizard/interfaces/wizard-footer-align.ts","../../../projects/angular/wizard/interfaces/wizard-stepnav-layout.ts","../../../projects/angular/wizard/providers/button-hub.service.ts","../../../projects/angular/wizard/providers/page-collection.service.ts","../../../projects/angular/wizard/providers/wizard-navigation.service.ts","../../../projects/angular/wizard/providers/header-actions.service.ts","../../../projects/angular/wizard/wizard-button.ts","../../../projects/angular/wizard/wizard-header-action.ts","../../../projects/angular/wizard/wizard-page-buttons.ts","../../../projects/angular/wizard/wizard-page-header-actions.ts","../../../projects/angular/wizard/wizard-page-navtitle.ts","../../../projects/angular/wizard/wizard-page-title.ts","../../../projects/angular/wizard/wizard-page.ts","../../../projects/angular/wizard/wizard-title.ts","../../../projects/angular/wizard/wizard-stepnav-item.ts","../../../projects/angular/wizard/wizard-stepnav.ts","../../../projects/angular/wizard/wizard.ts","../../../projects/angular/wizard/wizard.html","../../../projects/angular/wizard/wizard.module.ts","../../../projects/angular/wizard/index.ts","../../../projects/angular/wizard/clr-angular-wizard.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\nexport enum ClrWizardFooterAlign {\n  START = 'start',\n  END = 'end',\n}\n\nconst CLR_WIZARD_FOOTER_ALIGN_VALUES = new Set<string>(Object.values(ClrWizardFooterAlign));\n\nexport function footerAlignAttribute(value: ClrWizardFooterAlign | string): ClrWizardFooterAlign {\n  if (CLR_WIZARD_FOOTER_ALIGN_VALUES.has(value as string)) {\n    return value as ClrWizardFooterAlign;\n  }\n  throw new Error(\n    `Invalid ClrWizardFooterAlign: \"${value}\". Expected one of: ${[...CLR_WIZARD_FOOTER_ALIGN_VALUES].join(', ')}`\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\nexport enum ClrWizardStepnavLayout {\n  VERTICAL = 'vertical',\n  HORIZONTAL = 'horizontal',\n}\n\nconst CLR_WIZARD_STEPNAV_LAYOUT_VALUES = new Set<string>(Object.values(ClrWizardStepnavLayout));\n\nexport function stepnavLayoutAttribute(value: ClrWizardStepnavLayout | string): ClrWizardStepnavLayout {\n  if (CLR_WIZARD_STEPNAV_LAYOUT_VALUES.has(value as string)) {\n    return value as ClrWizardStepnavLayout;\n  }\n  throw new Error(\n    `Invalid ClrWizardStepnavLayout: \"${value}\". Expected one of: ${[...CLR_WIZARD_STEPNAV_LAYOUT_VALUES].join(', ')}`\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 { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class ButtonHubService {\n  buttonsReady = false;\n\n  private _previousBtnClicked = new Subject<void>();\n  private _nextBtnClicked = new Subject<void>();\n  private _dangerBtnClicked = new Subject<void>();\n  private _cancelBtnClicked = new Subject<void>();\n  private _finishBtnClicked = new Subject<void>();\n  private _customBtnClicked = new Subject<string>();\n\n  get previousBtnClicked(): Observable<void> {\n    return this._previousBtnClicked.asObservable();\n  }\n\n  get nextBtnClicked(): Observable<void> {\n    return this._nextBtnClicked.asObservable();\n  }\n\n  get dangerBtnClicked(): Observable<void> {\n    return this._dangerBtnClicked.asObservable();\n  }\n\n  get cancelBtnClicked(): Observable<void> {\n    return this._cancelBtnClicked.asObservable();\n  }\n\n  get finishBtnClicked(): Observable<void> {\n    return this._finishBtnClicked.asObservable();\n  }\n\n  get customBtnClicked(): Observable<string> {\n    return this._customBtnClicked.asObservable();\n  }\n\n  buttonClicked(buttonType: string): void {\n    if ('previous' === buttonType) {\n      this._previousBtnClicked.next();\n    } else if ('next' === buttonType) {\n      this._nextBtnClicked.next();\n    } else if ('finish' === buttonType) {\n      this._finishBtnClicked.next();\n    } else if ('danger' === buttonType) {\n      this._dangerBtnClicked.next();\n    } else if ('cancel' === buttonType) {\n      this._cancelBtnClicked.next();\n    } else {\n      this._customBtnClicked.next(buttonType);\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 { Injectable, QueryList } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\n\n/**\n * PageCollectionService manages the collection of pages assigned to the wizard and offers\n * a number of functions useful across the wizards providers and subcomponents -- all related\n * to essentially lookups on the collection of pages.\n *\n * The easiest way to access PageCollectionService is via the wizard. The\n * following example would allow you to access your instance of the wizard from your host\n * component and thereby access the page collection via YourHostComponent.wizard.pageCollection.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n *   @ViewChild(\"wizard\") wizard: Wizard;\n *   ...\n * }\n *\n * The heart of the page collection is the query list of pages, which it is assigned as a\n * reference to the Wizard.pages QueryList when the wizard is created.\n *\n */\n@Injectable()\nexport class PageCollectionService {\n  /**\n   * A reference to the Wizard.pages QueryList.\n   *\n   * Populated when the wizard is created.\n   *\n   * @memberof PageCollectionService\n   */\n  pages: QueryList<ClrWizardPage>;\n\n  /**\n   *\n   * @memberof PageCollectionService\n   */\n  private _pagesReset = new Subject<boolean>();\n\n  /**\n   * Converts the PageCollectionService.pages QueryList to an array and returns it.\n   *\n   * Useful for many instances when you would prefer a QueryList to act like an array.\n   *\n   * @memberof PageCollectionService\n   */\n  get pagesAsArray(): ClrWizardPage[] {\n    return this.pages ? this.pages.toArray() : [];\n  }\n\n  /**\n   * Returns the length of the pages query list.\n   *\n   * @memberof PageCollectionService\n   */\n  get pagesCount(): number {\n    return this.pages ? this.pages.length : 0;\n  }\n\n  /**\n   * Returns the next-to-last page in the query list of pages. Operates as a getter\n   * so that it isn't working with stale data.\n   *\n   * @memberof PageCollectionService\n   */\n  get penultimatePage(): ClrWizardPage {\n    const pageCount = this.pagesCount;\n\n    if (pageCount < 2) {\n      return null;\n    }\n\n    return this.pagesAsArray[pageCount - 2];\n  }\n\n  /**\n   * Returns the last page in the query list of pages. Operates as a getter\n   * so that it isn't working with stale data.\n   *\n   * @memberof PageCollectionService\n   */\n  get lastPage(): ClrWizardPage {\n    const pageCount = this.pagesCount;\n\n    if (pageCount < 1) {\n      return null;\n    }\n\n    return this.pagesAsArray[pageCount - 1];\n  }\n\n  /**\n   * Returns the first page in the query list of pages. Operates as a getter\n   * so that it isn't working with stale data.\n   *\n   * @memberof PageCollectionService\n   */\n  get firstPage(): ClrWizardPage {\n    if (!this.pagesCount) {\n      return null;\n    }\n\n    return this.pagesAsArray[0];\n  }\n\n  /**\n   * An observable that the navigation service listens to in order to know when\n   * the page collection completed states have been reset to false so that way it\n   * can also reset the navigation to make the first page in the page collection\n   * current/active.\n   *\n   * @memberof PageCollectionService\n   */\n  get pagesReset(): Observable<boolean> {\n    return this._pagesReset.asObservable();\n  }\n\n  /**\n   * Used mostly internally, but accepts a string ID and returns a ClrWizardPage\n   * object that matches the ID passed. Note that IDs here should include the prefix\n   * \"clr-wizard-page-\".\n   *\n   * Returns the next-to-last page in the query list of pages. Operates as a getter\n   * so that it isn't working with stale data.\n   *\n   * @memberof PageCollectionService\n   */\n  getPageById(id: string): ClrWizardPage {\n    const foundPages: ClrWizardPage[] = this.pages.filter((page: ClrWizardPage) => id === page.id);\n    return this.checkResults(foundPages, id);\n  }\n\n  /**\n   * Accepts s number as a parameter and treats that number as the index of the page\n   * you're looking for in the collection of pages. Returns a  wizard page object.\n   *\n   * @memberof PageCollectionService\n   */\n  getPageByIndex(index: number): ClrWizardPage {\n    const pageCount = this.pagesCount;\n    const pagesLastIndex: number = pageCount > 1 ? pageCount - 1 : 0;\n\n    if (index < 0) {\n      throw new Error('Cannot retrieve page with index of ' + index);\n    }\n\n    if (index > pagesLastIndex) {\n      throw new Error('Page index is greater than length of pages array.');\n    }\n\n    return this.pagesAsArray[index];\n  }\n\n  /**\n   * Takes a wizard page object as a parameter and returns its index in the\n   * collection of pages.\n   *\n   * @memberof PageCollectionService\n   */\n  getPageIndex(page: ClrWizardPage): number {\n    const index = this.pagesAsArray.indexOf(page);\n\n    if (index < 0) {\n      throw new Error('Requested page cannot be found in collection of pages.');\n    }\n\n    return index;\n  }\n\n  /**\n   * Accepts two numeric indexes and returns an array of wizard page objects that include\n   * all wizard pages in the page collection from the first index to the second.\n   *\n   * @memberof PageCollectionService\n   */\n  pageRange(start: number, end: number): ClrWizardPage[] {\n    let pages: ClrWizardPage[] = [];\n\n    if (start < 0 || end < 0) {\n      return [];\n    }\n\n    if (start === null || typeof start === 'undefined' || isNaN(start)) {\n      return [];\n    }\n\n    if (end === null || typeof end === 'undefined' || isNaN(end)) {\n      return [];\n    }\n\n    if (end > this.pagesCount) {\n      end = this.pagesCount;\n    }\n\n    pages = this.pagesAsArray;\n\n    if (end - start === 0) {\n      // just return the one page they want\n      return [this.getPageByIndex(start)];\n    }\n\n    // slice end does not include item referenced by end index, which is weird for users\n    // incrementing end index here to correct that so users and other methods\n    // don't have to think about it\n    end = end + 1;\n\n    // slice does not return the last one in the range but it does include the first one\n    // does not modify original array\n    return pages.slice(start, end);\n  }\n\n  /**\n   * Accepts two wizard page objects and returns those page objects with all other page\n   * objects between them in the page collection. It doesn't care which page is ahead of the\n   * other in the parameters. It will be smart enough to figure that out  on its own.\n   *\n   * @memberof PageCollectionService\n   */\n  getPageRangeFromPages(page: ClrWizardPage, otherPage: ClrWizardPage): ClrWizardPage[] {\n    const pageIndex = this.getPageIndex(page);\n    const otherPageIndex = this.getPageIndex(otherPage);\n    let startIndex: number;\n    let endIndex: number;\n\n    if (pageIndex <= otherPageIndex) {\n      startIndex = pageIndex;\n      endIndex = otherPageIndex;\n    } else {\n      startIndex = otherPageIndex;\n      endIndex = pageIndex;\n    }\n    return this.pageRange(startIndex, endIndex);\n  }\n\n  /**\n   * Takes a wizard page object as a parameter and returns the wizard page object of\n   * the page immediately before it in the page collection. Returns null if there is\n   * no page before the page it is passed.\n   *\n   * @memberof PageCollectionService\n   */\n  getPreviousPage(page: ClrWizardPage) {\n    const myPageIndex = this.getPageIndex(page);\n    const previousPageIndex = myPageIndex - 1;\n    if (previousPageIndex < 0) {\n      return null;\n    }\n    return this.getPageByIndex(previousPageIndex);\n  }\n\n  /**\n   * Accepts a wizard page object as a parameter and returns a Boolean that says if\n   * the page you sent it is complete.\n   *\n   * @memberof PageCollectionService\n   */\n  previousPageIsCompleted(page: ClrWizardPage) {\n    if (!page) {\n      return false;\n    }\n\n    const previousPage = this.getPreviousPage(page);\n\n    if (null === previousPage) {\n      // page is the first page. no previous page.\n      return true;\n    }\n\n    return previousPage.completed;\n  }\n\n  /**\n   * Takes a wizard page object as a parameter and returns the wizard page object of\n   * the page immediately after it in the page collection. Returns null if there is\n   * no page after the page it is passed.\n   *\n   * @memberof PageCollectionService\n   */\n  getNextPage(page: ClrWizardPage) {\n    const myPageIndex = this.getPageIndex(page);\n    const nextPageIndex = myPageIndex + 1;\n\n    if (nextPageIndex >= this.pagesAsArray.length) {\n      return null;\n    }\n    return this.getPageByIndex(nextPageIndex);\n  }\n\n  /**\n   * Takes a wizard page object as a parameter and generates a step item id from the\n   * page ID. Returns the generated step item ID as a string.\n   *\n   * @memberof PageCollectionService\n   */\n  getStepItemIdForPage(page: ClrWizardPage) {\n    const pageId = page.id;\n    const pageIdParts = pageId.split('-').reverse();\n\n    pageIdParts[1] = 'step';\n    return pageIdParts.reverse().join('-');\n  }\n\n  /**\n   * Generally only used internally to mark that a specific page has been \"committed\".\n   * This involves marking the page complete and firing the ClrWizardPage.onCommit\n   * (clrWizardPageOnCommit) output. Takes the wizard page object that you intend to\n   * mark completed as a parameter.\n   *\n   * @memberof PageCollectionService\n   */\n  commitPage(page: ClrWizardPage) {\n    const pageHasOverrides = page.stopNext || page.preventDefault;\n    page.completed = true;\n\n    if (!pageHasOverrides) {\n      // prevent loop of event emission; alternate flows work off\n      // of event emitters this is how they break that cycle.\n      page.onCommit.emit(page.id);\n    }\n  }\n\n  /**\n   * Sets all completed states of the pages in the page collection to false and\n   * notifies the navigation service to likewise reset the navigation.\n   *\n   * @memberof PageCollectionService\n   */\n  reset() {\n    this.pagesAsArray.forEach((page: ClrWizardPage) => {\n      page.completed = false;\n    });\n    this._pagesReset.next(true);\n  }\n\n  /**\n   * Rolls through all the pages in the page collection to make sure there are no\n   * incomplete pages sandwiched between completed pages in the workflow. Identifies\n   * the first incomplete page index and sets all pages behind it to a completed\n   * state of false.\n   *\n   * @memberof PageCollectionService\n   */\n  updateCompletedStates(): void {\n    const firstIncompleteIndex = this.findFirstIncompletePageIndex();\n\n    if (firstIncompleteIndex === this.pagesAsArray.length - 1) {\n      // all complete no need to do anything\n      return;\n    }\n\n    this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n      if (index > firstIncompleteIndex) {\n        page.completed = false;\n      }\n    });\n  }\n\n  /**\n   * Retrieves the index of the first incomplete page in the page collection.\n   *\n   * @memberof PageCollectionService\n   */\n  findFirstIncompletePageIndex(): number {\n    let returnIndex: number = null;\n    this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n      if (null === returnIndex && false === page.completed) {\n        returnIndex = index;\n      }\n    });\n\n    // fallthrough, all completed, return last page\n    if (null === returnIndex) {\n      returnIndex = this.pagesCount - 1;\n    }\n\n    return returnIndex;\n  }\n\n  findFirstIncompletePage(): ClrWizardPage {\n    const myIncompleteIndex = this.findFirstIncompletePageIndex();\n    return this.pagesAsArray[myIncompleteIndex];\n  }\n\n  /**\n   * Consolidates guard logic that prevents a couple of unfortunate edge cases with\n   * look ups on the collection of pages.\n   *\n   * @memberof PageCollectionService\n   */\n  private checkResults(results: ClrWizardPage[], requestedPageId: string) {\n    const foundPagesCount: number = results.length || 0;\n\n    if (foundPagesCount > 1) {\n      throw new Error('More than one page has the requested id ' + requestedPageId + '.');\n    } else if (foundPagesCount < 1) {\n      throw new Error('No page can be found with the id ' + requestedPageId + '.');\n    } else {\n      return results[0];\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 { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { ClrWizardStepnavLayout } from '../interfaces/wizard-stepnav-layout';\nimport { ClrWizardPage } from '../wizard-page';\nimport { ButtonHubService } from './button-hub.service';\nimport { PageCollectionService } from './page-collection.service';\n\n/**\n * Performs navigation functions for a wizard and manages the current page. Presented as a\n * separate service to encapsulate the behavior of navigating and completing the wizard so\n * that it can be shared across the wizard and its sub-components.\n *\n * The easiest way to access the navigation service is there a reference on your wizard. The\n * Following example would allow you to access your instance of the wizard from your host\n * component and thereby access the navigation service via YourHostComponent.wizard.navService.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n *   @ViewChild(\"wizard\") wizard: Wizard;\n *   ...\n * }\n *\n */\n@Injectable()\nexport class WizardNavigationService implements OnDestroy {\n  /**\n   * Is notified when a previous button is clicked in the wizard. Performs checks\n   * before alerting the current page of the button click. Enacts navigation to\n   * the previous page if not overridden at the page level.\n   *\n   * @memberof WizardNavigationService\n   */\n  previousButtonSubscription: Subscription;\n\n  /**\n   * Is notified when a Next button is clicked in the wizard.\n   *\n   * @memberof WizardNavigationService\n   */\n  nextButtonSubscription: Subscription;\n\n  /**\n   * Is notified when a danger button is clicked in the wizard.\n   *\n   * @memberof WizardNavigationService\n   */\n  dangerButtonSubscription: Subscription;\n\n  /**\n   * Is notified when a  finish button is clicked in the wizard.\n   *\n   * @memberof WizardNavigationService\n   */\n  finishButtonSubscription: Subscription;\n\n  /**\n   * Is notified when a Custom button is clicked in the wizard.\n   *\n   * @memberof WizardNavigationService\n   */\n  customButtonSubscription: Subscription;\n\n  /**\n   * Is notified when a Cancel button is clicked in the wizard. Notifies the wizard,\n   * which handles all cancel functionality, if cancel is not overridden at the page\n   * level.\n   *\n   * @memberof WizardNavigationService\n   */\n  cancelButtonSubscription: Subscription;\n\n  /**\n   * Resets navigation to make the first page current when the page collection service\n   * emits an event notifying WizardNavigationService that it has reset all pages\n   * to their pristine, incomplete state.\n   *\n   * @memberof WizardNavigationService\n   */\n  pagesResetSubscription: Subscription;\n\n  /**\n   * A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are\n   * loading and there is no current page defined.\n   *\n   * @memberof WizardNavigationService\n   */\n  navServiceLoaded = false;\n\n  /**\n   * A boolean flag shared across the Wizard subcomponents that follows the value\n   * of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,\n   * navigating backwards in the stepnav menu will reset any skipped pages' completed\n   * state to false.\n   *\n   * This is useful when a wizard executes validation on a page-by-page basis when\n   * the next button is clicked.\n   *\n   * @memberof WizardNavigationService\n   */\n  forceForwardNavigation = false;\n\n  /**\n   * A boolean flag shared across the Wizard subcomponents that follows the value\n   * of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel\n   * routine is subverted and must be reinstated in the host component calling Wizard.close()\n   * at some point.\n   *\n   * @memberof WizardNavigationService\n   */\n  wizardHasAltCancel = false;\n\n  /**\n   * A boolean flag shared across the Wizard subcomponents that follows the value\n   * of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish\n   * routines are subverted and must be reinstated in the host component calling Wizard.next(),\n   * Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().\n   *\n   * @memberof WizardNavigationService\n   */\n  wizardHasAltNext = false;\n\n  /**\n   * A boolean flag shared across the Wizard subcomponents that follows the value\n   * of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all\n   * navigational elements in the wizard are disabled.\n   *\n   * This is intended to freeze the wizard in place. Events are not fired so this is\n   * not a way to implement alternate functionality for navigation.\n   *\n   * @memberof WizardNavigationService\n   */\n  wizardStopNavigation = false;\n\n  /**\n   * A boolean flag shared with the stepnav items that prevents user clicks on\n   * stepnav items from navigating the wizard.\n   *\n   * @memberof WizardNavigationService\n   */\n  wizardDisableStepnav = false;\n\n  /**\n   * The layout of the wizard stepnav, either 'vertical' or 'horizontal'.\n   */\n  stepnavLayout: ClrWizardStepnavLayout = ClrWizardStepnavLayout.VERTICAL;\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _currentPage: ClrWizardPage;\n\n  /**\n   *\n   * @memberof WizardNavigationService\n   */\n  private _currentChanged = new Subject<ClrWizardPage>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _movedToNextPage = new Subject<boolean>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _wizardFinished = new Subject<void>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _movedToPreviousPage = new Subject<boolean>();\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  private _cancelWizard = new Subject<void>();\n\n  /**\n   * Creates an instance of WizardNavigationService. Also sets up subscriptions\n   * that listen to the button service to determine when a button has been clicked\n   * in the wizard. Is also responsible for taking action when the page collection\n   * requests that navigation be reset to its pristine state.\n   *\n   * @memberof WizardNavigationService\n   */\n  constructor(\n    public pageCollection: PageCollectionService,\n    public buttonService: ButtonHubService\n  ) {\n    this.previousButtonSubscription = buttonService.previousBtnClicked.subscribe(() => {\n      const currentPage = this.currentPage;\n      if (this.currentPageIsFirst || currentPage.previousStepDisabled) {\n        return;\n      }\n      currentPage.previousButtonClicked.emit(currentPage);\n      if (!currentPage.preventDefault) {\n        this.previous();\n      }\n    });\n\n    this.nextButtonSubscription = buttonService.nextBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('next');\n    });\n\n    this.dangerButtonSubscription = buttonService.dangerBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('danger');\n    });\n\n    this.finishButtonSubscription = buttonService.finishBtnClicked.subscribe(() => {\n      this.checkAndCommitCurrentPage('finish');\n    });\n\n    this.customButtonSubscription = buttonService.customBtnClicked.subscribe((type: string) => {\n      if (!this.wizardStopNavigation) {\n        this.currentPage.customButtonClicked.emit(type);\n      }\n    });\n\n    this.cancelButtonSubscription = buttonService.cancelBtnClicked.subscribe(() => {\n      if (this.wizardStopNavigation) {\n        return;\n      }\n\n      if (this.currentPage.preventDefault) {\n        this.currentPage.pageOnCancel.emit(this.currentPage);\n      } else {\n        this.cancel();\n      }\n    });\n\n    this.pagesResetSubscription = pageCollection.pagesReset.subscribe(() => {\n      this.setFirstPageCurrent();\n    });\n  }\n\n  /**\n   * An Observable that is predominantly used amongst the subcomponents and services\n   * of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad\n   * (clrWizardPageOnLoad) output instead of this Observable.\n   *\n   * @memberof WizardNavigationService\n   */\n  get currentPageChange(): Observable<ClrWizardPage> {\n    return this._currentChanged.asObservable();\n  }\n\n  /**\n   * @memberof WizardNavigationService\n   */\n  get currentPageTitle(): TemplateRef<any> {\n    // when the querylist of pages is empty. this is the first place it fails...\n    if (!this.currentPage) {\n      return null;\n    }\n    return this.currentPage.title;\n  }\n\n  /**\n   * Returns a Boolean that tells you whether or not the current page is the first\n   * page in the Wizard.\n   *\n   * This is helpful for determining whether a page is navigable.\n   *\n   * @memberof WizardNavigationService\n   */\n  get currentPageIsFirst(): boolean {\n    return this.pageCollection.firstPage === this.currentPage;\n  }\n\n  /**\n   * Returns a Boolean that tells you whether or not the current page is the\n   * last page in the Wizard.\n   *\n   * This is used to determine which buttons should display in the wizard footer.\n   *\n   * @memberof WizardNavigationService\n   */\n  get currentPageIsLast(): boolean {\n    return this.pageCollection.lastPage === this.currentPage;\n  }\n\n  /**\n   * Returns the ClrWizardPage object of the current page or null.\n   *\n   * @memberof WizardNavigationService\n   */\n  get currentPage(): ClrWizardPage {\n    if (!this._currentPage) {\n      return null;\n    }\n    return this._currentPage;\n  }\n\n  /**\n   * Accepts a ClrWizardPage object, since that object to be the current/active\n   * page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)\n   * event for that page.\n   *\n   * Note that all of this work is bypassed if the ClrWizardPage object is already\n   * the current page.\n   *\n   * @memberof WizardNavigationService\n   */\n  set currentPage(page: ClrWizardPage) {\n    if (this._currentPage !== page && !this.wizardStopNavigation) {\n      this._currentPage = page;\n      page.onLoad.emit(page.id);\n      this._currentChanged.next(page);\n    }\n  }\n\n  /**\n   * An observable used internally to alert the wizard that forward navigation\n   * has occurred. It is recommended that you use the Wizard.onMoveNext\n   * (clrWizardOnNext) output instead of this one.\n   *\n   * @memberof WizardNavigationService\n   */\n  get movedToNextPage(): Observable<boolean> {\n    return this._movedToNextPage.asObservable();\n  }\n\n  /**\n   * An observable used internally to alert the wizard that the nav service\n   * has approved completion of the wizard.\n   *\n   * It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)\n   * output instead of this one.\n   *\n   * @memberof WizardNavigationService\n   */\n  get wizardFinished(): Observable<void> {\n    return this._wizardFinished.asObservable();\n  }\n\n  /**\n   * Notifies the wizard when backwards navigation has occurred via the\n   * previous button.\n   *\n   * @memberof WizardNavigationService\n   */\n  get movedToPreviousPage(): Observable<boolean> {\n    return this._movedToPreviousPage.asObservable();\n  }\n\n  /**\n   * Notifies the wizard that a user is trying to cancel it.\n   *\n   * @memberof WizardNavigationService\n   */\n  get notifyWizardCancel(): Observable<any> {\n    return this._cancelWizard.asObservable();\n  }\n\n  /**\n   *\n   * @memberof WizardNavigationService\n   */\n  ngOnDestroy(): void {\n    this.previousButtonSubscription.unsubscribe();\n    this.nextButtonSubscription.unsubscribe();\n    this.dangerButtonSubscription.unsubscribe();\n    this.finishButtonSubscription.unsubscribe();\n    this.customButtonSubscription.unsubscribe();\n    this.cancelButtonSubscription.unsubscribe();\n    this.pagesResetSubscription.unsubscribe();\n  }\n\n  /**\n   * This is a public function that can be used to programmatically advance\n   * the user to the next page.\n   *\n   * When invoked, this method will move the wizard to the next page after\n   * successful validation. Note that this method goes through all checks\n   * and event emissions as if Wizard.next(false) had been called.\n   *\n   * In most cases, it makes more sense to use Wizard.next(false).\n   *\n   * @memberof WizardNavigationService\n   */\n  next(): void {\n    if (this.currentPageIsLast) {\n      this.checkAndCommitCurrentPage('finish');\n    } else {\n      this.checkAndCommitCurrentPage('next');\n    }\n  }\n\n  /**\n   * Bypasses checks and most event emissions to force a page to navigate forward.\n   *\n   * Comparable to calling Wizard.next() or Wizard.forceNext().\n   *\n   * @memberof WizardNavigationService\n   */\n  forceNext(): void {\n    const currentPage: ClrWizardPage = this.currentPage;\n    const nextPage: ClrWizardPage = this.pageCollection.getNextPage(currentPage);\n\n    // catch errant null or undefineds that creep in\n    if (!nextPage) {\n      throw new Error('The wizard has no next page to go to.');\n    }\n\n    if (this.wizardStopNavigation) {\n      return;\n    }\n\n    if (!currentPage.completed) {\n      // this is a state that alt next flows can get themselves in...\n      this.pageCollection.commitPage(currentPage);\n    }\n    this.currentPage = nextPage;\n  }\n\n  /**\n   * Accepts a button/action type as a parameter. Encapsulates all logic for\n   * event emissions, state of the current page, and wizard and page level overrides.\n   *\n   * Avoid calling this function directly unless you really know what you're doing.\n   *\n   * @memberof WizardNavigationService\n   */\n  checkAndCommitCurrentPage(buttonType: string): void {\n    const currentPage: ClrWizardPage = this.currentPage;\n\n    if (!currentPage.readyToComplete || this.wizardStopNavigation) {\n      return;\n    }\n\n    const iAmTheLastPage = this.currentPageIsLast;\n\n    const isNext = buttonType === 'next';\n    const isDanger = buttonType === 'danger';\n    const isDangerNext = isDanger && !iAmTheLastPage;\n    const isDangerFinish = isDanger && iAmTheLastPage;\n    const isFinish = buttonType === 'finish' || isDangerFinish;\n\n    if (isFinish && !iAmTheLastPage) {\n      return;\n    }\n\n    currentPage.primaryButtonClicked.emit(buttonType);\n\n    if (isFinish) {\n      currentPage.finishButtonClicked.emit(currentPage);\n    } else if (isDanger) {\n      currentPage.dangerButtonClicked.emit();\n    } else if (isNext) {\n      currentPage.nextButtonClicked.emit();\n    }\n\n    if (currentPage.stopNext || currentPage.preventDefault) {\n      currentPage.onCommit.emit(currentPage.id);\n      return;\n    }\n\n    // order is very important with these emitters!\n    if (isFinish) {\n      // mark page as complete\n      if (!this.wizardHasAltNext) {\n        this.pageCollection.commitPage(currentPage);\n      }\n      this._wizardFinished.next();\n    }\n\n    if (this.wizardHasAltNext) {\n      this.pageCollection.commitPage(currentPage);\n\n      if (isNext || isDangerNext) {\n        this._movedToNextPage.next(true);\n      }\n      // jump out here, no matter what type we're looking at\n      return;\n    }\n\n    if (isNext || isDangerNext) {\n      this.forceNext();\n    }\n\n    if (!this.wizardHasAltNext && !this.wizardStopNavigation) {\n      this._movedToNextPage.next(true);\n    }\n  }\n\n  /**\n   * This is a public function that can be used to programmatically conclude\n   * the wizard.\n   *\n   * When invoked, this method will  initiate the work involved with finalizing\n   * and finishing the wizard workflow. Note that this method goes through all\n   * checks and event emissions as if Wizard.finish(false) had been called.\n   *\n   * In most cases, it makes more sense to use Wizard.finish(false).\n   *\n   * @memberof WizardNavigationService\n   */\n  finish(): void {\n    this.checkAndCommitCurrentPage('finish');\n  }\n\n  /**\n   * Programmatically moves the wizard to the page before the current page.\n   *\n   * In most instances, it makes more sense to call Wizard.previous()\n   * which does the same thing.\n   *\n   * @memberof WizardNavigationService\n   */\n  previous(): void {\n    if (this.currentPageIsFirst || this.wizardStopNavigation) {\n      return;\n    }\n\n    const previousPage = this.pageCollection.getPreviousPage(this.currentPage);\n\n    if (!previousPage) {\n      return;\n    }\n\n    this._movedToPreviousPage.next(true);\n\n    if (this.forceForwardNavigation) {\n      this.currentPage.completed = false;\n    }\n\n    this.currentPage = previousPage;\n  }\n\n  /**\n   * Allows a hook into the cancel workflow of the wizard from the nav service. Note that\n   * this route goes through all checks and event emissions as if a cancel button had\n   * been clicked.\n   *\n   * In most cases, users looking for a hook into the cancel routine are actually looking\n   * for a way to close the wizard from their host component because they have prevented\n   * the default cancel action.\n   *\n   * In this instance, it is recommended that you use Wizard.close() to avoid any event\n   * emission loop resulting from an event handler calling back into routine that will\n   * again evoke the events it handles.\n   *\n   * @memberof WizardNavigationService\n   */\n  cancel(): void {\n    this._cancelWizard.next();\n  }\n\n  /**\n   * Performs all required checks to determine if a user can navigate to a page. Checking at each\n   * point if a page is navigable -- completed where the page immediately after the last completed\n   * page.\n   *\n   * Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the\n   * ClrWizardPage object that you want to make the current page.\n   *\n   * The second parameter is optional and is a Boolean flag for \"lazy completion\". What this means\n   * is the Wizard will mark all pages between the current page and the page you want to navigate\n   * to as completed. This is useful for informational wizards that do not require user action,\n   * allowing an easy means for users to jump ahead.\n   *\n   * To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.\n   *\n   * @memberof WizardNavigationService\n   */\n  goTo(pageToGoToOrId: any, lazyComplete = false) {\n    const myPages = this.pageCollection;\n    const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;\n    const currentPage = this.currentPage;\n\n    // no point in going to the current page. you're there already!\n    // also hard block on any navigation when stopNavigation is true\n    if (pageToGoTo === currentPage || this.wizardStopNavigation) {\n      return;\n    }\n\n    const currentPageIndex = myPages.getPageIndex(currentPage);\n    const goToPageIndex = myPages.getPageIndex(pageToGoTo);\n    const goingForward = goToPageIndex > currentPageIndex;\n    const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);\n    const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);\n\n    if (!okayToMove) {\n      return;\n    }\n\n    if (goingForward && lazyComplete) {\n      pagesToCheck.forEach((page: ClrWizardPage) => {\n        if (page !== pageToGoTo) {\n          page.completed = true;\n        }\n      });\n    } else if (!goingForward && this.forceForwardNavigation) {\n      pagesToCheck.forEach((page: ClrWizardPage) => {\n        page.completed = false;\n      });\n    }\n\n    this.currentPage = pageToGoTo;\n  }\n\n  /**\n   * Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking\n   * those objects to determine if navigation can be accomplished.\n   *\n   * @memberof WizardNavigationService\n   */\n  canGoTo(pagesToCheck: ClrWizardPage[]): boolean {\n    let okayToMove = true;\n    const myPages = this.pageCollection;\n\n    // previous page can be important when moving because if it's completed it\n    // allows us to move to the page even if it's incomplete...\n    let previousPagePasses: boolean;\n\n    if (!pagesToCheck || pagesToCheck.length < 1) {\n      return false;\n    }\n\n    pagesToCheck.forEach((page: ClrWizardPage) => {\n      if (!okayToMove) {\n        return;\n      }\n\n      if (page.completed) {\n        // default is true. just jump out instead of complicating it.\n        return;\n      }\n\n      // so we know our page is not completed...\n      const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;\n      previousPagePasses = previousPage === null || previousPage.completed === true;\n\n      // we are false if not the current page AND previous page is not completed\n      // (but must have a previous page)\n      if (!page.current && !previousPagePasses) {\n        okayToMove = false;\n      }\n      // falls through to true as default\n    });\n\n    return okayToMove;\n  }\n\n  /**\n   * Looks through the collection of pages to find the first one that is incomplete\n   * and makes that page the current/active page.\n   *\n   * @memberof WizardNavigationService\n   */\n  setLastEnabledPageCurrent(): void {\n    const allPages: ClrWizardPage[] = this.pageCollection.pagesAsArray;\n    let lastCompletedPageIndex: number = null;\n\n    allPages.forEach((page: ClrWizardPage, index: number) => {\n      if (page.completed) {\n        lastCompletedPageIndex = index;\n      }\n    });\n\n    if (lastCompletedPageIndex === null) {\n      // always is at least the first item...\n      lastCompletedPageIndex = 0;\n    } else if (lastCompletedPageIndex + 1 < allPages.length) {\n      lastCompletedPageIndex = lastCompletedPageIndex + 1;\n    }\n\n    this.currentPage = allPages[lastCompletedPageIndex];\n  }\n\n  /**\n   * Finds the first page in the collection of pages and makes that page the\n   * current/active page.\n   *\n   * @memberof WizardNavigationService\n   */\n  setFirstPageCurrent(): void {\n    this.currentPage = this.pageCollection.pagesAsArray[0];\n  }\n\n  /**\n   * Updates the stepnav on the left side of the wizard when pages are dynamically\n   * added or removed from the collection of pages.\n   *\n   * @memberof WizardNavigationService\n   */\n  updateNavigation(): void {\n    let toSetCurrent: ClrWizardPage;\n\n    this.pageCollection.updateCompletedStates();\n\n    const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;\n    if (currentPageRemoved) {\n      toSetCurrent = this.pageCollection.findFirstIncompletePage();\n      this.currentPage = toSetCurrent;\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 { Injectable, QueryList } from '@angular/core';\n\nimport { ClrWizardHeaderAction } from '../wizard-header-action';\nimport { WizardNavigationService } from './wizard-navigation.service';\n\n@Injectable()\nexport class HeaderActionService {\n  // this service communicates information about the presence/display of header actions\n  // across the wizard\n\n  wizardHeaderActions: QueryList<ClrWizardHeaderAction>;\n\n  constructor(public navService: WizardNavigationService) {}\n\n  get wizardHasHeaderActions(): boolean {\n    const wizardHdrActions = this.wizardHeaderActions;\n    if (!wizardHdrActions) {\n      return false;\n    }\n    return wizardHdrActions.toArray().length > 0;\n  }\n\n  get currentPageHasHeaderActions(): boolean {\n    return this.navService.currentPage ? this.navService.currentPage.hasHeaderActions : false;\n  }\n\n  get showWizardHeaderActions(): boolean {\n    return !this.currentPageHasHeaderActions && this.wizardHasHeaderActions;\n  }\n\n  get displayHeaderActionsWrapper(): boolean {\n    return this.currentPageHasHeaderActions || this.wizardHasHeaderActions;\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 { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\n\nexport const DEFAULT_BUTTON_TYPES: any = {\n  cancel: 'cancel',\n  previous: 'previous',\n  next: 'next',\n  finish: 'finish',\n  danger: 'danger',\n};\n\nexport const CUSTOM_BUTTON_TYPES: any = {\n  cancel: 'custom-cancel',\n  previous: 'custom-previous',\n  next: 'custom-next',\n  finish: 'custom-finish',\n  danger: 'custom-danger',\n};\n\n@Component({\n  selector: 'clr-wizard-button',\n  template: `\n    <button\n      type=\"button\"\n      class=\"btn clr-wizard-btn\"\n      [class.btn-link]=\"isCancel\"\n      [class.clr-wizard-btn--tertiary]=\"isCancel\"\n      [class.btn-outline]=\"isPrevious\"\n      [class.clr-wizard-btn--secondary]=\"isPrevious\"\n      [class.btn-primary]=\"isPrimaryAction\"\n      [class.clr-wizard-btn--primary]=\"isPrimaryAction\"\n      [class.btn-success]=\"isFinish\"\n      [class.btn-danger]=\"isDanger\"\n      [class.disabled]=\"isDisabled\"\n      [attr.disabled]=\"_disabledAttribute\"\n      (click)=\"click()\"\n    >\n      <ng-content></ng-content>\n    </button>\n  `,\n  host: { class: 'clr-wizard-btn-wrapper', '[attr.aria-hidden]': 'isHidden' },\n  standalone: false,\n})\nexport class ClrWizardButton {\n  @Input('type') type = '';\n\n  @Input('clrWizardButtonDisabled') disabled = false;\n\n  @Input('clrWizardButtonHidden') hidden = false;\n\n  // EventEmitter which is emitted when a button is clicked.\n  @Output('clrWizardButtonClicked') wasClicked = new EventEmitter<string>(false);\n\n  constructor(\n    public navService: WizardNavigationService,\n    public buttonService: ButtonHubService\n  ) {}\n\n  get isCancel(): boolean {\n    return this.checkDefaultAndCustomType(this.type, 'cancel');\n  }\n\n  get isNext(): boolean {\n    return this.checkDefaultAndCustomType(this.type, 'next');\n  }\n\n  get isPrevious(): boolean {\n    return this.checkDefaultAndCustomType(this.type, 'previous');\n  }\n\n  get isFinish(): boolean {\n    return this.checkDefaultAndCustomType(this.type, 'finish');\n  }\n\n  get isDanger(): boolean {\n    return this.checkDefaultAndCustomType(this.type, 'danger');\n  }\n\n  get isPrimaryAction(): boolean {\n    return this.isNext || this.isDanger || this.isFinish;\n  }\n\n  get _disabledAttribute(): string | null {\n    if (this.isDisabled) {\n      return '';\n    }\n    return null;\n  }\n\n  get isDisabled(): boolean {\n    // dealing with negatives here. cognitively easier to think of it like this...\n    const disabled = true;\n    const nav = this.navService;\n    const page = this.navService.currentPage;\n\n    // Ensure we don't change the response until buttons are ready to avoid chocolate\n    if (!this.buttonService.buttonsReady) {\n      return !disabled;\n    }\n\n    if (this.disabled || nav.wizardStopNavigation || !page) {\n      return true;\n    }\n\n    if (this.isCancel) {\n      return !disabled;\n    }\n\n    if (this.isPrevious && (nav.currentPageIsFirst || page.previousStepDisabled)) {\n      return disabled;\n    }\n\n    if (this.isDanger && !page.readyToComplete) {\n      return disabled;\n    }\n\n    if (this.isNext && (nav.currentPageIsLast || !page.readyToComplete)) {\n      return disabled;\n    }\n\n    if (this.isFinish && (!nav.currentPageIsLast || !page.readyToComplete)) {\n      return disabled;\n    }\n\n    return !disabled;\n  }\n\n  get isHidden(): boolean {\n    // dealing with negatives here. cognitively easier to think of it like this...\n    const hidden = true;\n    const nav = this.navService;\n\n    // Ensure we don't change the response until buttons are ready to avoid chocolate\n    if (!this.buttonService.buttonsReady) {\n      return !hidden;\n    }\n\n    if (this.hidden) {\n      return true;\n    }\n\n    if (this.isCancel) {\n      return !hidden;\n    }\n\n    if (this.isPrevious && nav.currentPageIsFirst) {\n      return hidden;\n    }\n\n    if (this.isNext && nav.currentPageIsLast) {\n      return hidden;\n    }\n\n    if (this.isFinish && !nav.currentPageIsLast) {\n      return hidden;\n    }\n\n    return !hidden;\n  }\n\n  click(): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    this.wasClicked.emit(this.type);\n    this.buttonService.buttonClicked(this.type);\n  }\n\n  private checkDefaultAndCustomType(valueToCheck = '', typeToLookUp: string) {\n    if (DEFAULT_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n      return true;\n    }\n    if (CUSTOM_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n      return true;\n    }\n    return false;\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 { Component, EventEmitter, Input, Output } from '@angular/core';\n\nlet wizardHeaderActionIndex = 0;\n\n@Component({\n  selector: 'clr-wizard-header-action',\n  template: `\n    <button\n      type=\"button\"\n      class=\"btn clr-wizard-header-action btn-link\"\n      [id]=\"id\"\n      [class.disabled]=\"disabled\"\n      (click)=\"click()\"\n      [title]=\"title\"\n    >\n      <ng-content></ng-content>\n    </button>\n  `,\n  host: { class: 'clr-wizard-header-action-wrapper' },\n  standalone: false,\n})\nexport class ClrWizardHeaderAction {\n  // title is explanatory text added to the header action\n  @Input('title') title = '';\n\n  // If our host has an ID attribute, we use this instead of our index.\n  @Input('id') _id: string = (wizardHeaderActionIndex++).toString();\n\n  @Input('clrWizardHeaderActionDisabled') disabled = false;\n\n  @Output('actionClicked') headerActionClicked = new EventEmitter<string>(false);\n\n  get id(): string {\n    return `clr-wizard-header-action-${this._id}`;\n  }\n\n  click(): void {\n    if (this.disabled) {\n      return;\n    }\n\n    // passing the header action id allows users to have one method that\n    // routes to many different actions based on the type of header action\n    // clicked. this is further aided by users being able to specify ids\n    // for their header actions.\n    this.headerActionClicked.emit(this._id);\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 { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[clrPageButtons]',\n  standalone: false,\n})\nexport class ClrWizardPageButtons {\n  constructor(public pageButtonsTemplateRef: TemplateRef<any>) {}\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 { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[clrPageHeaderActions]',\n  standalone: false,\n})\nexport class ClrWizardPageHeaderActions {\n  constructor(public pageHeaderActionsTemplateRef: TemplateRef<any>) {}\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 { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n  selector: '[clrPageNavTitle]',\n  standalone: false,\n})\nexport class ClrWizardPageNavTitle {\n  constructor(public pageNavTitleTemplateRef: TemplateRef<any>) {}\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 { Directive, Input, TemplateRef } from '@angular/core';\nimport { HeadingLevel } from '@clr/angular/utils';\n\n@Directive({\n  selector: '[clrPageTitle]',\n  standalone: false,\n})\nexport class ClrWizardPageTitle {\n  @Input('clrHeadingLevel') headingLevel: HeadingLevel;\n\n  constructor(public pageTitleTemplateRef: TemplateRef<any>) {}\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 { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\n\nlet wizardPageIndex = 0;\n\n/**\n * The ClrWizardPage component is responsible for displaying the content of each step\n * in the wizard workflow.\n *\n * ClrWizardPage component has hooks into the navigation service (ClrWizardPage.navService),\n * page collection (ClrWizardPage.pageCollection), and button service\n * (ClrWizardPage.buttonService). These three providers are shared across the components\n * within each instance of a Wizard.\n *\n */\n@Component({\n  selector: 'clr-wizard-page',\n  template: '<ng-content></ng-content>',\n  host: {\n    '[id]': 'id',\n    '[attr.aria-hidden]': '!current',\n    '[attr.aria-labelledby]': 'stepItemId',\n    '[class.active]': 'current',\n    '[class.clr-wizard-page]': 'true',\n  },\n  standalone: false,\n})\nexport class ClrWizardPage implements OnInit {\n  /**\n   * An input value that is used internally to generate the ClrWizardPage ID as\n   * well as the step nav item ID.\n   *\n   * Typed as any because it should be able to accept numbers as well as\n   * strings. Passing an index for wizard whose pages are created with an\n   * ngFor loop is a common use case.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Input('id') _id: any = (wizardPageIndex++).toString();\n\n  /**\n   * Overrides all actions from the page level, so you can use an alternate function for\n   * validation or data-munging with a ClrWizardPage.onCommit (clrWizardPageOnCommit output),\n   * ClrWizardPage.onCancel (clrWizardPageOnCancel output), or one\n   * of the granular page-level button click event emitters.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Input('clrWizardPagePreventDefault') preventDefault: boolean | string = false;\n\n  /**\n   * Emits when the value of ClrWizardPage.nextStepDisabled changes.\n   * Should emit the new value of nextStepDisabled.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageNextDisabledChange') nextStepDisabledChange = new EventEmitter<boolean>();\n\n  /**\n   * Emits when the value of ClrWizardPage.previousStepDisabled changes.\n   * Should emit the new value of previousStepDisabled.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPagePreviousDisabledChange') previousStepDisabledChange = new EventEmitter<boolean>();\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPagePreventDefaultCancelChange') stopCancelChange = new EventEmitter<boolean>();\n\n  /**\n   * An event emitter carried over from a legacy version of ClrWizardPage.\n   * Fires an event on ClrWizardPage whenever the next or finish buttons\n   * are clicked and the page is the current page of the Wizard.\n   *\n   * Note that this does not automatically emit an event when a custom\n   * button is used in place of a next or finish button.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageOnCommit') onCommit = new EventEmitter<string>(false);\n\n  /**\n   * Emits an event when ClrWizardPage becomes the current page of the\n   * Wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageOnLoad') onLoad = new EventEmitter<string>();\n\n  /**\n   * Emits an event when the ClrWizardPage invokes the cancel routine for the wizard.\n   *\n   * Can be used in conjunction with the ClrWizardPage.stopCancel\n   * (clrWizardPagePreventDefaultCancel) or ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) inputs to implement custom cancel\n   * functionality at the page level. This is useful if you would like to do\n   * validation, save data, or warn users before cancelling the wizard.\n   *\n   * Note that this requires you to call Wizard.close() from the host component.\n   * This constitues a full replacement of the cancel functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageOnCancel') pageOnCancel = new EventEmitter<ClrWizardPage>();\n\n  /**\n   * Emits an event when the finish button is clicked and the ClrWizardPage is\n   * the wizard's current page.\n   *\n   * Can be used in conjunction with the ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) input to implement custom finish\n   * functionality at the page level. This is useful if you would like to do\n   * validation, save data, or warn users before allowing them to complete\n   * the wizard.\n   *\n   * Note that this requires you to call Wizard.finish() or Wizard.forceFinish()\n   * from the host component. This combination creates a full replacement of\n   * the finish functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageFinish') finishButtonClicked = new EventEmitter<ClrWizardPage>();\n\n  /**\n   * Emits an event when the previous button is clicked and the ClrWizardPage is\n   * the wizard's current page.\n   *\n   * Can be used in conjunction with the ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) input to implement custom backwards\n   * navigation at the page level. This is useful if you would like to do\n   * validation, save data, or warn users before allowing them to go\n   * backwards in the wizard.\n   *\n   * Note that this requires you to call Wizard.previous()\n   * from the host component. This combination creates a full replacement of\n   * the backwards navigation functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPagePrevious') previousButtonClicked = new EventEmitter<ClrWizardPage>();\n\n  /**\n   * Emits an event when the next button is clicked and the ClrWizardPage is\n   * the wizard's current page.\n   *\n   * Can be used in conjunction with the ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) input to implement custom forwards\n   * navigation at the page level. This is useful if you would like to do\n   * validation, save data, or warn users before allowing them to go\n   * to the next page in the wizard.\n   *\n   * Note that this requires you to call Wizard.forceNext() or Wizard.next()\n   * from the host component. This combination creates a full replacement of\n   * the forward navigation functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageNext') nextButtonClicked = new EventEmitter<ClrWizardPage>();\n\n  /**\n   * Emits an event when a danger button is clicked and the ClrWizardPage is\n   * the wizard's current page. By default, a danger button will act as\n   * either a \"next\" or \"finish\" button depending on if the ClrWizardPage is the\n   * last page or not.\n   *\n   * Can be used in conjunction with the ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) input to implement custom forwards\n   * or finish navigation at the page level when the danger button is clicked.\n   * This is useful if you would like to do validation, save data, or warn\n   * users before allowing them to go to the next page in the wizard or\n   * finish the wizard.\n   *\n   * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n   * Wizard.forceNext() or Wizard.next() from the host component. This\n   * combination creates a full replacement of the forward navigation and\n   * finish functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPageDanger') dangerButtonClicked = new EventEmitter<ClrWizardPage>();\n\n  /**\n   * Emits an event when a next, finish, or danger button is clicked and the\n   * ClrWizardPage is the wizard's current page.\n   *\n   * Can be used in conjunction with the ClrWizardPage.preventDefault\n   * (clrWizardPagePagePreventDefault) input to implement custom forwards\n   * or finish navigation at the page level, regardless of the type of\n   * primary button.\n   *\n   * This is useful if you would like to do validation, save data, or warn\n   * users before allowing them to go to the next page in the wizard or\n   * finish the wizard.\n   *\n   * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n   * Wizard.forceNext() or Wizard.next() from the host component. This\n   * combination creates a full replacement of the forward navigation and\n   * finish functionality.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Output('clrWizardPagePrimary') primaryButtonClicked = new EventEmitter<string>();\n\n  @Output('clrWizardPageCustomButton') customButtonClicked = new EventEmitter<string>();\n\n  /**\n   * Contains a reference to the page title which is used for a number\n   * of different tasks for display in the wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @ContentChild(ClrWizardPageTitle, { static: true, descendants: false }) pageTitle: ClrWizardPageTitle;\n\n  /**\n   * Contains a reference to the desired title for the page's step in the\n   * navigation on the left side of the wizard. Can be projected to change the\n   * navigation link's text.\n   *\n   * If not defined, then ClrWizardPage.pageTitle will be displayed in the stepnav.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @ContentChild(ClrWizardPageNavTitle, { static: true, descendants: false }) pageNavTitle: ClrWizardPageNavTitle;\n\n  /**\n   * Contains a reference to the buttons defined within the page. If not defined,\n   * the wizard defaults to the set of buttons defined as a direct child of the\n   * wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @ContentChild(ClrWizardPageButtons, { static: true, descendants: false }) _buttons: ClrWizardPageButtons;\n\n  /**\n   * Contains a reference to the header actions defined within the page. If not defined,\n   * the wizard defaults to the set of header actions defined as a direct child of the\n   * wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @ContentChild(ClrWizardPageHeaderActions, { static: true }) _headerActions: ClrWizardPageHeaderActions;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _nextStepDisabled = false;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _previousStepDisabled = false;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _hasError = false;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _stopCancel = false;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _stopNext = false;\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  private _complete = false;\n\n  /**\n   * Creates an instance of ClrWizardPage.\n   *\n   * @memberof WizardPage\n   */\n  constructor(\n    private navService: WizardNavigationService,\n    public pageCollection: PageCollectionService,\n    public buttonService: ButtonHubService\n  ) {}\n\n  /**\n   * A property that tells whether or not the wizard should be allowed\n   * to move to the next page.\n   *\n   * Useful for in-page validation because it prevents forward navigation\n   * and visibly disables the next button.\n   *\n   * Does not require that you re-implement navigation routines like you\n   * would if you were using ClrWizardPage.preventDefault or\n   * Wizard.preventDefault.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Input('clrWizardPageNextDisabled')\n  get nextStepDisabled(): boolean {\n    return this._nextStepDisabled;\n  }\n  set nextStepDisabled(val: boolean) {\n    const valBool = !!val;\n    if (valBool !== this._nextStepDisabled) {\n      this._nextStepDisabled = valBool;\n      this.nextStepDisabledChange.emit(valBool);\n    }\n  }\n\n  /**\n   * A property that tells whether or not the wizard should be allowed\n   * to move to the previous page.\n   *\n   * Useful for in-page validation because it prevents backward navigation\n   * and visibly disables the previous button.\n   *\n   * Does not require that you re-implement navigation routines like you\n   * would if you were using ClrWizardPage.preventDefault or\n   * Wizard.preventDefault.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Input('clrWizardPagePreviousDisabled')\n  get previousStepDisabled(): boolean {\n    return this._previousStepDisabled;\n  }\n  set previousStepDisabled(val: boolean) {\n    const valBool = !!val;\n    if (valBool !== this._previousStepDisabled) {\n      this._previousStepDisabled = valBool;\n      this.previousStepDisabledChange.emit(valBool);\n    }\n  }\n\n  /**\n   * Whether the page has an error and also resolve the \"falsy\" value. The\n   * current logic treat a \"0\" or an empty string as false and likewise will treat any\n   * \"truthy\" value as true.\n   *\n   * @memberof WizardPage\n   *\n   */\n  @Input('clrWizardPageHasError')\n  get hasError(): boolean {\n    return this._hasError;\n  }\n  set hasError(val: boolean) {\n    const valBool = !!val;\n    if (valBool !== this._hasError) {\n      this._hasError = valBool;\n    }\n  }\n\n  /**\n   * Overrides the cancel action from the page level. Allows you to use an\n   * alternate function for validation or data-munging before cancelling the\n   * wizard when combined with the ClrWizardPage.onCancel\n   * (the clrWizardPageOnCancel output).\n   *\n   * Requires that you manually close the wizard from your host component,\n   * usually with a call to Wizard.forceNext() or wizard.next();\n   *\n   * @memberof ClrWizardPage\n   */\n  @Input('clrWizardPagePreventDefaultCancel')\n  get stopCancel(): boolean {\n    return this._stopCancel;\n  }\n  set stopCancel(val: boolean) {\n    const valBool = !!val;\n    if (valBool !== this._stopCancel) {\n      this._stopCancel = valBool;\n      this.stopCancelChange.emit(valBool);\n    }\n  }\n\n  /**\n   * Overrides forward navigation from the page level. Allows you to use an\n   * alternate function for validation or data-munging before moving the\n   * wizard to the next pagewhen combined with the ClrWizardPage.onCommit\n   * (clrWizardPageOnCommit) or ClrWizardPage.nextButtonClicked\n   * (clrWizardPageNext) outputs.\n   *\n   * Requires that you manually tell the wizard to navigate forward from\n   * the hostComponent, usually with a call to Wizard.forceNext() or\n   * wizard.next();\n   *\n   * @memberof ClrWizardPage\n   */\n  @Input('clrWizardPagePreventDefaultNext')\n  get stopNext(): boolean {\n    return this._stopNext;\n  }\n  set stopNext(val: boolean) {\n    const valBool = !!val;\n    if (valBool !== this._stopNext) {\n      this._stopNext = valBool;\n    }\n  }\n\n  /**\n   * A read-only getter that generates an ID string for the wizard page from\n   * either the value passed to the ClrWizardPage \"id\" input or a wizard page\n   * counter shared across all wizard pages in the application.\n   *\n   * Note that the value passed into the ID input Will be prefixed with\n   * \"clr-wizard-page-\".\n   *\n   * @readonly\n   *\n   * @memberof ClrWizardPage\n   */\n  get id(): string {\n    // covers things like null, undefined, false, and empty string\n    // while allowing zero to pass\n    const idIsNonZeroFalsy = !this._id && this._id !== 0;\n\n    // in addition to non-zero falsy we also want to make sure _id is not a negative\n    // number.\n    if (idIsNonZeroFalsy || this._id < 0) {\n      // guard here in the event that input becomes undefined or null by accident\n      this._id = (wizardPageIndex++).toString();\n    }\n    return `clr-wizard-page-${this._id}`;\n  }\n\n  /**\n   * A read-only getter that serves as a convenience for those who would rather\n   * not think in the terms of !ClrWizardPage.nextStepDisabled. For some use cases,\n   * ClrWizardPage.readyToComplete is more logical and declarative.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get readyToComplete(): boolean {\n    return !this.nextStepDisabled;\n  }\n\n  /**\n   * A page is marked as completed if it is both readyToComplete and completed,\n   * as in the next or finish action has been executed while this page was current.\n   *\n   * Note there is and open question about how to handle pages that are marked\n   * complete but who are no longer readyToComplete. This might indicate an error\n   * state for the ClrWizardPage. Currently, the wizard does not acknowledge this state\n   * and only returns that the page is incomplete.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get completed(): boolean {\n    return this._complete && this.readyToComplete;\n\n    // FOR V2: UNWIND COMPLETED, READYTOCOMPLETE, AND ERRORS\n    // SUCH THAT ERRORS IS ITS OWN INPUT. IF A STEP IS\n    // INCOMPLETE AND ERRORED, ERRORED WILL NOT SHOW.\n    // FIRST QUESTION: AM I GREY OR COLORED?\n    // SECOND QUESTION: AM I GREEN OR RED?\n  }\n\n  /**\n   * A ClrWizardPage can be manually set to completed using this boolean setter.\n   * It is recommended that users rely on the convenience functions in the wizard\n   * and navigation service instead of manually setting pages’ completion state.\n   *\n   * @memberof ClrWizardPage\n   */\n  set completed(value: boolean) {\n    this._complete = value;\n  }\n\n  /**\n   * Checks with the navigation service to see if it is the current page.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get current(): boolean {\n    return this.navService.currentPage === this;\n  }\n\n  get disabled(): boolean {\n    return !this.enabled;\n  }\n\n  /**\n   * A read-only getter that returns whether or not the page is navigable\n   * in the wizard. A wizard page can be navigated to if it is completed\n   * or the page before it is completed.\n   *\n   * This getter handles the logic for enabling or disabling the links in\n   * the step nav on the left Side of the wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get enabled(): boolean {\n    return this.current || this.completed || this.previousCompleted;\n  }\n\n  /**\n   * A read-only getter that returns whether or not the page before this\n   * ClrWizardPage is completed. This is useful for determining whether or not\n   * a page is navigable if it is not current or already completed.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get previousCompleted(): boolean {\n    const previousPage = this.pageCollection.getPreviousPage(this);\n\n    if (!previousPage) {\n      return true;\n    }\n\n    return previousPage.completed;\n  }\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  get title(): TemplateRef<any> {\n    return this.pageTitle?.pageTitleTemplateRef;\n  }\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  get navTitle(): TemplateRef<any> {\n    if (this.pageNavTitle) {\n      return this.pageNavTitle.pageNavTitleTemplateRef;\n    }\n    return this.pageTitle?.pageTitleTemplateRef;\n  }\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  get headerActions(): TemplateRef<any> {\n    if (!this._headerActions) {\n      return undefined;\n    }\n    return this._headerActions.pageHeaderActionsTemplateRef;\n  }\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  get hasHeaderActions(): boolean {\n    return !!this._headerActions;\n  }\n\n  /**\n   *\n   * @memberof WizardPage\n   *\n   */\n  get buttons(): TemplateRef<any> {\n    if (!this._buttons) {\n      return undefined;\n    }\n    return this._buttons.pageButtonsTemplateRef;\n  }\n\n  /**\n   * A read-only getter that returns a boolean that says whether or\n   * not the ClrWizardPage includes buttons. Used to determine if the\n   * Wizard should override the default button set defined as\n   * its direct children.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get hasButtons(): boolean {\n    return !!this._buttons;\n  }\n\n  /**\n   * A read-only getter that returns the id used by the step nav item associated with the page.\n   *\n   * ClrWizardPage needs this ID string for aria information.\n   *\n   * @memberof WizardPage\n   *\n   */\n  get stepItemId(): string {\n    return this.pageCollection.getStepItemIdForPage(this);\n  }\n\n  /**\n   * Links the nav service and establishes the current page if one is not defined.\n   *\n   * @memberof WizardPage\n   *\n   */\n  ngOnInit(): void {\n    const navService = this.navService;\n    if (!navService.currentPage && !navService.navServiceLoaded) {\n      this.makeCurrent();\n      this.navService.navServiceLoaded = true;\n    }\n  }\n\n  /**\n   * Uses the nav service to make the ClrWizardPage the current page in the\n   * wizard. Bypasses all checks but still emits the ClrWizardPage.onLoad\n   * (clrWizardPageOnLoad) output.\n   *\n   * In most cases, it is better to use the default navigation functions\n   * in Wizard.\n   *\n   * @memberof WizardPage\n   *\n   */\n  makeCurrent(): void {\n    this.navService.currentPage = this;\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 { Directive, Input } from '@angular/core';\nimport { HeadingLevel } from '@clr/angular/utils';\n\n@Directive({\n  selector: 'clr-wizard-title',\n  standalone: false,\n})\nexport class ClrWizardTitle {\n  @Input('clrHeadingLevel') headingLevel: HeadingLevel;\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 { Component, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { debounceTime, startWith, Subscription, tap } from 'rxjs';\n\nimport { ClrWizardStepnavLayout } from './interfaces/wizard-stepnav-layout';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPage } from './wizard-page';\n\n@Component({\n  selector: '[clr-wizard-stepnav-item]',\n  template: `\n    <button\n      type=\"button\"\n      class=\"btn btn-link clr-wizard-stepnav-link\"\n      (click)=\"click()\"\n      [attr.disabled]=\"isDisabled ? '' : null\"\n      [attr.aria-labelledby]=\"labelledby\"\n    >\n      <div class=\"clr-wizard-stepnav-link-icon\">\n        @if (icon; as icon) {\n          <cds-icon\n            [id]=\"stepIconId\"\n            role=\"img\"\n            class=\"clr-wizard-stepnav-link-icon\"\n            [shape]=\"icon.shape\"\n            [attr.aria-label]=\"icon.label\"\n          ></cds-icon>\n        }\n      </div>\n\n      <span [id]=\"stepTextId\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStep }}</span>\n      <div [id]=\"stepNumberId\" class=\"clr-wizard-stepnav-link-page-number\">\n        <ng-content></ng-content>\n      </div>\n      <span [id]=\"stepTitleId\" class=\"clr-wizard-stepnav-link-title\">\n        <ng-template [ngTemplateOutlet]=\"page.navTitle\"></ng-template>\n      </span>\n    </button>\n  `,\n  host: {\n    '[id]': 'id',\n    '[attr.aria-current]': 'stepAriaCurrent',\n    '[attr.aria-controls]': 'page.id',\n    '[class.clr-nav-link]': 'true',\n    '[class.nav-item]': 'true',\n    '[class.active]': 'isCurrent',\n    '[class.disabled]': 'isDisabled',\n    '[class.no-click]': '!canNavigate',\n    '[class.complete]': 'isComplete',\n    '[class.error]': 'hasError',\n    '(focusin)': 'scrollIntoView()',\n  },\n  standalone: false,\n})\nexport class ClrWizardStepnavItem implements OnInit, OnDestroy {\n  @Input('page') page: ClrWizardPage;\n\n  private subscription: Subscription;\n\n  /**\n   * This is used to prevent the steps from scrolling as the user clicks on the steps.\n   */\n  private skipNextScroll = false;\n\n  constructor(\n    public navService: WizardNavigationService,\n    public pageCollection: PageCollectionService,\n    public commonStrings: ClrCommonStringsService,\n    readonly elementRef: ElementRef<HTMLElement>\n  ) {}\n\n  get id(): string {\n    this.pageGuard();\n    return this.pageCollection.getStepItemIdForPage(this.page);\n  }\n\n  get stepAriaCurrent(): string {\n    return this.isCurrent && 'step';\n  }\n\n  get isDisabled(): boolean {\n    this.pageGuard();\n    return this.page.disabled || this.navService.wizardStopNavigation || this.navService.wizardDisableStepnav;\n  }\n\n  get isCurrent(): boolean {\n    this.pageGuard();\n    return this.page.current;\n  }\n\n  get isComplete(): boolean {\n    this.pageGuard();\n    return this.page.completed;\n  }\n\n  get hasError(): boolean {\n    this.pageGuard();\n    return this.page.hasError && this.isComplete;\n  }\n\n  get canNavigate(): boolean {\n    this.pageGuard();\n    return this.pageCollection.previousPageIsCompleted(this.page);\n  }\n\n  protected get stepIconId() {\n    return `${this.id}-step-icon`;\n  }\n\n  protected get stepTextId() {\n    return `${this.id}-step-text`;\n  }\n\n  protected get stepNumberId() {\n    return `${this.id}-step-number`;\n  }\n\n  protected get stepTitleId() {\n    return `${this.id}-step-title`;\n  }\n\n  protected get labelledby() {\n    const textIds = [this.stepTextId, this.stepNumberId, this.stepTitleId];\n    const allIds = this.isComplete ? [this.stepIconId, ...textIds] : textIds;\n\n    return allIds.join(' ');\n  }\n\n  protected get icon(): { shape: string; label: string } | null {\n    if (this.isCurrent && this.navService.stepnavLayout !== ClrWizardStepnavLayout.HORIZONTAL) {\n      return {\n        shape: 'dot-circle',\n        label: this.commonStrings.keys.wizardStepCurrent || this.commonStrings.keys.timelineStepCurrent,\n      };\n    } else if (this.hasError) {\n      return {\n        shape: 'error-standard',\n        label: this.commonStrings.keys.wizardStepError || this.commonStrings.keys.timelineStepError,\n      };\n    } else if (this.isComplete) {\n      return {\n        shape: 'success-standard',\n        label: this.commonStrings.keys.wizardStepSuccess || this.commonStrings.keys.timelineStepSuccess,\n      };\n    } else {\n      return null;\n    }\n  }\n\n  ngOnInit() {\n    this.subscription = this.ensureCurrentStepIsScrolledIntoView().subscribe();\n  }\n\n  ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n  click(): void {\n    this.pageGuard();\n\n    // if we click on our own stepnav or a disabled stepnav, we don't want to do anything\n    if (this.isDisabled || this.isCurrent) {\n      return;\n    }\n\n    this.skipNextScroll = true;\n    this.navService.goTo(this.page);\n  }\n\n  protected scrollIntoView() {\n    this.elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n  }\n\n  private pageGuard(): void {\n    if (!this.page) {\n      throw new Error('Wizard stepnav item is not associated with a wizard page.');\n    }\n  }\n\n  private ensureCurrentStepIsScrolledIntoView() {\n    // Don't use \"smooth\" scrolling when the wizard is first opened to avoid a delay in scrolling the current step into view.\n    // The current step when the wizard is opened might not be the first step. For example, the wizard can be closed and re-opened.\n    let scrollBehavior: ScrollBehavior = 'auto';\n\n    return this.navService.currentPageChange.pipe(\n      startWith(this.navService.currentPage),\n      debounceTime(1),\n      tap(currentPage => {\n        if (!this.skipNextScroll && currentPage === this.page) {\n          this.elementRef.nativeElement.scrollIntoView({ behavior: scrollBehavior, block: 'center', inline: 'center' });\n        }\n\n        scrollBehavior = 'smooth';\n        this.skipNextScroll = false;\n      })\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 { AfterViewInit, Component, ElementRef, Input, OnDestroy, QueryList, ViewChildren } from '@angular/core';\nimport { startWith, Subscription } from 'rxjs';\n\nimport { ClrWizardStepnavLayout } from './interfaces/wizard-stepnav-layout';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardStepnavItem } from './wizard-stepnav-item';\n\n@Component({\n  selector: 'clr-wizard-stepnav',\n  template: `\n    @if (showScrollLeftButton && stepnavLayout === 'horizontal') {\n      <button\n        type=\"button\"\n        class=\"btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-left\"\n        (click)=\"scrollLeft()\"\n        tabindex=\"-1\"\n      >\n        <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n      </button>\n    }\n\n    <nav\n      class=\"clr-wizard-stepnav-nav\"\n      [ngClass]=\"{\n        'clr-wizard-stepnav-nav--with-one-scroll-button': showScrollLeftButton || showScrollRightButton,\n        'clr-wizard-stepnav-nav--with-two-scroll-buttons': showScrollLeftButton && showScrollRightButton,\n      }\"\n      [attr.aria-label]=\"label\"\n    >\n      <ol class=\"clr-wizard-stepnav-list\">\n        @for (page of pageService.pages; track page; let i = $index) {\n          <li clr-wizard-stepnav-item [page]=\"page\" class=\"clr-wizard-stepnav-item\">\n            {{ i + 1 }}\n          </li>\n        }\n      </ol>\n    </nav>\n\n    @if (showScrollRightButton && stepnavLayout === 'horizontal') {\n      <button\n        type=\"button\"\n        class=\"btn btn-sm btn-icon clr-wizard-stepnav-scroll-button-right\"\n        (click)=\"scrollRight()\"\n        tabindex=\"-1\"\n      >\n        <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n      </button>\n    }\n  `,\n  host: { class: 'clr-wizard-stepnav' },\n  standalone: false,\n})\nexport class ClrWizardStepnav implements AfterViewInit, OnDestroy {\n  @Input() label: string;\n\n  protected showScrollLeftButton = false;\n  protected showScrollRightButton = false;\n\n  @ViewChildren(ClrWizardStepnavItem) private readonly stepnavItems: QueryList<ClrWizardStepnavItem>;\n\n  private subscription: Subscription;\n  private intersectionObserver: IntersectionObserver;\n  private firstItemVisible = true;\n  private lastItemVisible = true;\n\n  constructor(\n    public pageService: PageCollectionService,\n    private navService: WizardNavigationService,\n    private elementRef: ElementRef<HTMLElement>\n  ) {}\n\n  protected get stepnavLayout() {\n    return this.navService.stepnavLayout;\n  }\n\n  ngAfterViewInit() {\n    if (this.stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL) {\n      this.setupIntersectionObserver();\n\n      this.stepnavItems.notifyOnChanges();\n      this.subscription = this.stepnavItems.changes.pipe(startWith(undefined)).subscribe(() => {\n        this.observeEdgeItems();\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription?.unsubscribe();\n    this.intersectionObserver?.disconnect();\n  }\n\n  protected scrollLeft() {\n    this.scroll('left');\n  }\n\n  protected scrollRight() {\n    this.scroll('right');\n  }\n\n  private setupIntersectionObserver() {\n    const scrollContainer = this.elementRef.nativeElement.querySelector('.clr-wizard-stepnav-list');\n\n    this.intersectionObserver = new IntersectionObserver(\n      entries => {\n        for (const entry of entries) {\n          const target = entry.target as HTMLElement;\n          const isFirst = target === this.stepnavItems.first?.elementRef.nativeElement;\n          const isLast = target === this.stepnavItems.last?.elementRef.nativeElement;\n\n          if (isFirst) {\n            this.firstItemVisible = entry.isIntersecting;\n          }\n          if (isLast) {\n            this.lastItemVisible = entry.isIntersecting;\n          }\n        }\n\n        this.showScrollLeftButton = !this.firstItemVisible;\n        this.showScrollRightButton = !this.lastItemVisible;\n      },\n      { root: scrollContainer, threshold: 0.99 }\n    );\n  }\n\n  private observeEdgeItems() {\n    this.intersectionObserver.disconnect();\n    this.firstItemVisible = true;\n    this.lastItemVisible = true;\n\n    const first = this.stepnavItems.first;\n    const last = this.stepnavItems.last;\n\n    if (first) {\n      this.intersectionObserver.observe(first.elementRef.nativeElement);\n    }\n    if (last && last !== first) {\n      this.intersectionObserver.observe(last.elementRef.nativeElement);\n    }\n  }\n\n  private scroll(direction: 'left' | 'right') {\n    const scrollContainer = this.elementRef.nativeElement.querySelector('.clr-wizard-stepnav-list');\n    const scrollAmount = scrollContainer.clientWidth * 0.5;\n\n    scrollContainer.scrollBy({ left: direction === 'left' ? -scrollAmount : scrollAmount, behavior: 'smooth' });\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 { isPlatformBrowser } from '@angular/common';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChild,\n  ContentChildren,\n  DoCheck,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  IterableDiffers,\n  OnDestroy,\n  Output,\n  PLATFORM_ID,\n  QueryList,\n  ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService, uniqueIdFactory } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrWizardFooterAlign, footerAlignAttribute } from './interfaces/wizard-footer-align';\nimport { ClrWizardStepnavLayout, stepnavLayoutAttribute } from './interfaces/wizard-stepnav-layout';\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { HeaderActionService } from './providers/header-actions.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardButton } from './wizard-button';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrWizardTitle } from './wizard-title';\n\n@Component({\n  selector: 'clr-wizard',\n  providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService],\n  templateUrl: './wizard.html',\n  host: {\n    '[class.clr-wizard]': 'true',\n    '[class.wizard-md]': \"size == 'md'\",\n    '[class.wizard-lg]': \"size == 'lg'\",\n    '[class.wizard-xl]': \"size == 'xl'\",\n    '[class.wizard-in-page]': 'inPage',\n    '[class.wizard-in-page--fill-content-area]': 'inPage && inPageFillContentArea',\n    '[class.wizard-horizontal]': 'stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL',\n  },\n  standalone: false,\n})\nexport class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {\n  /**\n   * Set the aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.\n   */\n  @Input('clrWizardStepnavAriaLabel') stepnavAriaLabel = this.commonStrings.keys.wizardStepnavAriaLabel;\n\n  /**\n   * Set the wizard stepnav layout to 'vertical' (default) or 'horizontal'. Set using `[clrWizardStepnavLayout]` input.\n   */\n  @Input({ alias: 'clrWizardStepnavLayout', transform: stepnavLayoutAttribute }) stepnavLayout =\n    ClrWizardStepnavLayout.VERTICAL;\n\n  /**\n   * Set the modal size of the wizard. Set using `[clrWizardSize]` input.\n   */\n  @Input('clrWizardSize') size = 'xl';\n\n  /**\n   * Enable \"in page\" wizard. Set using `[clrWizardInPage]` input.\n   */\n  @Input('clrWizardInPage') inPage = false;\n\n  /**\n   * Make an \"in page\" wizard fill the `.content-area`. Set using `[clrWizardInPageFillContentArea]` input.\n   * If you can't use this option, you will likely need to provide custom CSS to set the wizard's height and margins.\n   */\n  @Input('clrWizardInPageFillContentArea') inPageFillContentArea = false;\n\n  /**\n   * Hide the wizard footer entirely. Set using `[clrWizardHideFooter]` input.\n   * Useful when a nested wizard or stepper handles its own navigation.\n   */\n  @Input('clrWizardHideFooter') hideFooter = false;\n\n  /**\n   * Align the footer buttons to 'start' (left) or 'end' (right).\n   * By default, modal wizards align to 'end' and in-page wizards align to 'start'.\n   * Nested wizards inherit the default unless this input is explicitly set.\n   * Set using `[clrWizardFooterAlign]` input.\n   */\n  @Input({ alias: 'clrWizardFooterAlign', transform: footerAlignAttribute }) _footerAlign: ClrWizardFooterAlign | null =\n    null;\n\n  /**\n   * Tells the modal part of the wizard whether it should have a close \"X\"\n   * in the top right corner. Set using `[clrWizardClosable]` input.\n   */\n  @Input('clrWizardClosable') closable = true;\n\n  /**\n   * Used to communicate to the underlying modal that animations are not\n   * wanted. Primary use is for the display of static/inline wizards.\n   * Set using `[clrWizardPreventModalAnimation]` input.\n   */\n  @Input('clrWizardPreventModalAnimation') _stopModalAnimations = false;\n\n  /**\n   * Emits when the wizard is opened or closed.\n   * Listen via `(clrWizardOpenChange)` event.\n   */\n  @Output('clrWizardOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n  /**\n   * Emits when the wizard is canceled. Listen via `(clrWizardOnCancel)` event.\n   * Can be combined with the `[clrWizardPreventDefaultCancel]` input to create\n   * wizard-level custom cancel routines.\n   */\n  @Output('clrWizardOnCancel') onCancel = new EventEmitter<any>(false);\n\n  /**\n   * Emits when the wizard is completed. Listen via `(clrWizardOnFinish)` event.\n   * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n   * wizard-level custom completion routines.\n   */\n  @Output('clrWizardOnFinish') wizardFinished = new EventEmitter<any>(false);\n\n  /**\n   * Emits when the wizard is reset. Listen via `(clrWizardOnReset)` event.\n   */\n  @Output('clrWizardOnReset') onReset = new EventEmitter<any>(false);\n\n  /**\n   * Emits when the current page has changed. Listen via `(clrWizardCurrentPageChange)` event.\n   * output. Useful for non-blocking validation.\n   */\n  @Output('clrWizardCurrentPageChange') currentPageChange = new EventEmitter<any>(false);\n\n  /**\n   * Emits when the wizard moves to the next page. Listen via `(clrWizardOnNext)` event.\n   * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n   * wizard-level custom navigation routines, which are useful for validation.\n   */\n  @Output('clrWizardOnNext') onMoveNext = new EventEmitter<any>(false);\n\n  /**\n   * Emits when the wizard moves to the previous page. Can be useful for validation.\n   * Listen via `(clrWizardOnPrevious)` event.\n   */\n  @Output('clrWizardOnPrevious') onMovePrevious = new EventEmitter<any>(false);\n\n  @ViewChild('pageTitle') pageTitle: ElementRef<HTMLElement>;\n  @ContentChildren(ClrWizardPage) pages: QueryList<ClrWizardPage>;\n  @ContentChildren(ClrWizardButton, { descendants: false }) wizardButtons: QueryList<ClrWizardButton>;\n  @ContentChildren(ClrWizardHeaderAction) headerActions: QueryList<ClrWizardHeaderAction>;\n\n  _open = false;\n  wizardId = uniqueIdFactory();\n\n  @ContentChild(ClrWizardTitle) protected wizardTitle: ClrWizardTitle;\n  protected ClrWizardFooterAlign = ClrWizardFooterAlign;\n  protected ClrWizardStepnavLayout = ClrWizardStepnavLayout;\n\n  @ViewChild('body') private readonly bodyElementRef: ElementRef<HTMLElement>;\n\n  private _forceForward = false;\n  private _stopNext = false;\n  private _stopCancel = false;\n  private _stopNavigation = false;\n  private _disableStepnav = false;\n  private differ: any; // for marking when the collection of wizard pages has been added to or deleted from\n  private subscriptions: Subscription[] = [];\n\n  constructor(\n    @Inject(PLATFORM_ID) private platformId: any,\n    public commonStrings: ClrCommonStringsService,\n    public navService: WizardNavigationService,\n    public pageCollection: PageCollectionService,\n    public buttonService: ButtonHubService,\n    public headerActionService: HeaderActionService,\n    private elementRef: ElementRef<HTMLElement>,\n    differs: IterableDiffers\n  ) {\n    this.subscriptions.push(\n      this.listenForNextPageChanges(),\n      this.listenForPreviousPageChanges(),\n      this.listenForCancelChanges(),\n      this.listenForFinishedChanges(),\n      this.listenForPageChanges()\n    );\n\n    this.differ = differs.find([]).create(null);\n  }\n\n  /**\n   * Resets page completed states when navigating backwards.\n   * Set using `[clrWizardForceForwardNavigation]` input.\n   */\n  @Input('clrWizardForceForwardNavigation')\n  get forceForward(): boolean {\n    return this._forceForward;\n  }\n  set forceForward(value: boolean) {\n    this._forceForward = !!value;\n    this.navService.forceForwardNavigation = value;\n  }\n\n  /**\n   * Toggles open/close of the wizard component.\n   * Set using the `[clrWizardOpen]` input.\n   */\n  @Input('clrWizardOpen')\n  set clrWizardOpen(open: boolean) {\n    if (open) {\n      this.buttonService.buttonsReady = true;\n    }\n    this._open = open;\n  }\n\n  /**\n   * Prevents ClrWizard from moving to the next page or closing itself on finishing.\n   * Set using the `[clrWizardPreventDefaultNext]` input. Note that using stopNext\n   * will require you to create your own calls to .next() and .finish() in your\n   * host component to make the ClrWizard work as expected.\n   */\n  @Input('clrWizardPreventDefaultNext')\n  get stopNext(): boolean {\n    return this._stopNext;\n  }\n  set stopNext(value: boolean) {\n    this._stopNext = !!value;\n    this.navService.wizardHasAltNext = value;\n  }\n\n  /**\n   * Prevents ClrWizard from closing when the cancel button or close \"X\" is clicked.\n   * Set using the `[clrWizardPreventDefaultCancel]` input.\n   *\n   * Note that using stopCancel will require you to create your own calls to `close()` in your host compone`nt\n   * to make the ClrWizard work as expected. Useful for doing checks or prompts\n   * before closing a ClrWizard.\n   */\n  @Input('clrWizardPreventDefaultCancel')\n  get stopCancel(): boolean {\n    return this._stopCancel;\n  }\n  set stopCancel(value: boolean) {\n    this._stopCancel = !!value;\n    this.navService.wizardHasAltCancel = value;\n  }\n\n  /**\n   * Prevents ClrWizard from performing any form of navigation away from the current\n   * page. Set using the `[clrWizardPreventNavigation]` input.\n   * Note that stopNavigation is meant to freeze the wizard in place, typically\n   * during a long validation or background action where you want the wizard to\n   * display loading content but not allow the user to execute navigation in\n   * the stepnav, close X, or the  back, finish, or next buttons.\n   */\n  @Input('clrWizardPreventNavigation')\n  get stopNavigation(): boolean {\n    return this._stopNavigation;\n  }\n  set stopNavigation(value: boolean) {\n    this._stopNavigation = !!value;\n    this.navService.wizardStopNavigation = value;\n  }\n\n  /**\n   * Prevents clicks on the links in the stepnav from working.\n   * Set using `[clrWizardDisableStepnav]` input.\n   * A more granular bypassing of navigation which can be useful when your\n   * ClrWizard is in a state of completion and you don't want users to be\n   * able to jump backwards and change things.\n   */\n  @Input('clrWizardDisableStepnav')\n  get disableStepnav(): boolean {\n    return this._disableStepnav;\n  }\n  set disableStepnav(value: boolean) {\n    this._disableStepnav = !!value;\n    this.navService.wizardDisableStepnav = value;\n  }\n\n  get currentPage(): ClrWizardPage {\n    return this.navService.currentPage;\n  }\n  set currentPage(page: ClrWizardPage) {\n    this.navService.goTo(page, true);\n  }\n\n  get isLast(): boolean {\n    return this.navService.currentPageIsLast;\n  }\n\n  get isFirst(): boolean {\n    return this.navService.currentPageIsFirst;\n  }\n\n  get isInline(): boolean {\n    return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');\n  }\n\n  get showHeader(): boolean {\n    return (\n      !!this.navService.currentPage?.pageTitle ||\n      (this.stepnavLayout === ClrWizardStepnavLayout.VERTICAL && this.headerActionService.displayHeaderActionsWrapper)\n    );\n  }\n\n  get showFooter(): boolean {\n    return !this.hideFooter && (this.navService.currentPage?.hasButtons || this.wizardButtons?.length > 0);\n  }\n\n  get footerAlign(): ClrWizardFooterAlign {\n    if (this._footerAlign !== null) {\n      return this._footerAlign;\n    }\n    return this.inPage ? ClrWizardFooterAlign.START : ClrWizardFooterAlign.END;\n  }\n\n  get stopModalAnimations(): boolean {\n    return this._stopModalAnimations;\n  }\n\n  ngAfterContentInit(): void {\n    this.navService.stepnavLayout = this.stepnavLayout;\n    this.pageCollection.pages = this.pages;\n    this.headerActionService.wizardHeaderActions = this.headerActions;\n\n    if (this.inPage) {\n      this.open();\n    }\n\n    this.initializeButtons();\n  }\n\n  ngDoCheck(): void {\n    this.updateNavOnPageChanges();\n  }\n\n  ngOnDestroy(): void {\n    this.subscriptions.forEach(s => s.unsubscribe());\n  }\n\n  /**\n   * Marks Wizard as finished. By default it does not execute event\n   * emissions or checks before completing and closing. This method is commonly\n   * used as part of an alternative navigation with `[clrWizardPreventDefaultNext]`.\n   *\n   * If `skipChecksAndEmits` is true, the wizard will complete and close\n   * regardless of the state of its current page. This is useful for alternative\n   * navigation where event emissions have already been done and firing them again\n   * may cause an event loop.\n   */\n  finish(skipChecksAndEmits = true): void {\n    if (skipChecksAndEmits) {\n      this.forceFinish();\n    } else {\n      this.navService.finish();\n    }\n  }\n\n  /**\n   * Marks the wizard as finished but does run checks and emissions.\n   * Good for a last step in an alternate workflow. Does the same thing as\n   * calling `ClrWizard.finish(true)` or `ClrWizard.finish()` without a parameter.\n   */\n  forceFinish(): void {\n    if (this.stopNavigation) {\n      return;\n    }\n\n    this.close();\n  }\n\n  /**\n   * Opens the wizard. If there is no current page defined, sets the first page in the wizard to be current.\n   */\n  open(): void {\n    this._open = true;\n\n    if (!this.currentPage) {\n      this.navService.setFirstPageCurrent();\n    }\n\n    // Only render buttons when wizard is opened, to avoid chocolate errors\n    this.buttonService.buttonsReady = true;\n\n    this._openChanged.emit(true);\n  }\n\n  /**\n   * Closes the wizard. Call this directly instead of `cancel()` to implement alternative cancel functionality.\n   */\n  close(): void {\n    if (this.stopNavigation) {\n      return;\n    }\n\n    this._open = false;\n    this._openChanged.emit(false);\n  }\n\n  /**\n   * Used to open and close the wizard. By default the wizard will\n   * close if invoked with no parameter. If parameter is true wizard will open\n   * else if false will close.\n   */\n  toggle(open: boolean): void {\n    if (open) {\n      this.open();\n    } else {\n      this.close();\n    }\n  }\n\n  /**\n   * Moves the wizard to the previous page.\n   */\n  previous(): void {\n    this.navService.previous();\n  }\n\n  /**\n   * By default, `next()` does not execute event emissions.\n   * This method is commonly called as part of an alternative navigation\n   * with `[clrWizardPreventDefaultNext]`. The wizard will move to the next page\n   * regardless of the state of its current page. This is useful for alternative\n   * navigation where event emissions have already been done and firing them again\n   * may cause an event loop.\n   *\n   * If `skipChecksAndEmits` is false, the wizard will execute default checks\n   * and emit events as normal. This is useful for custom buttons or programmatic\n   * workflows that are not executing the wizards default checks and emissions.\n   * It is another way to navigate without having to rewrite the wizard’s default\n   * functionality from scratch.\n   */\n  next(skipChecksAndEmits = true): void {\n    if (skipChecksAndEmits) {\n      this.forceNext();\n    } else {\n      this.navService.next();\n    }\n  }\n\n  /**\n   * Moves the wizard to the next page without the checks and emissions.\n   * Good for a last step in an alternate workflow.\n   * Alias for `ClrWizard.next(true)` or `ClrWizard.next()`\n   */\n  forceNext(): void {\n    this.navService.forceNext();\n  }\n\n  /**\n   * Cancels and closes the wizard. Do not use this for an override of the cancel\n   * the functionality with `[clrWizardPreventDefaultCancel]`, `[clrWizardPreventPageDefaultCancel]`,\n   * or `[clrWizardPagePreventDefault]` because it will initiate the same checks\n   * and event emissions that invoked your event handler. Use `ClrWizard.close()` instead.\n   */\n  cancel(): void {\n    this.navService.cancel();\n  }\n\n  /**\n   * Overrides behavior of the underlying modal to avoid collisions with\n   * alternative cancel functionality. In most cases, use `ClrWizard.cancel()` instead.\n   */\n  modalCancel(): void {\n    if (this.closable) {\n      this.checkAndCancel();\n    }\n  }\n\n  /**\n   * Checks for alternative cancel flows defined at the current page or\n   * wizard level. Performs a canceled if not. Emits events that initiate\n   * the alternative cancel outputs `(clrWizardPageOnCancel)` and `(clrWizardOnCancel)`.\n   */\n  checkAndCancel(): void {\n    const currentPage = this.currentPage;\n    const currentPageHasOverrides = currentPage.stopCancel || currentPage.preventDefault;\n\n    if (this.stopNavigation) {\n      return;\n    }\n\n    currentPage.pageOnCancel.emit();\n    if (!currentPageHasOverrides) {\n      this.onCancel.emit();\n    }\n\n    if (!this.stopCancel && !currentPageHasOverrides) {\n      this.close();\n    }\n  }\n\n  /**\n   * Navigates to a given page in the Wizard. Navigation will invoke the wizard’s default\n   * checks and event emissions.\n   *\n   * The format of the expected ID parameter can be found in the return of the\n   * ClrWizardPage.id getter, usually prefixed with `clr-wizard-page-` and then either a\n   * numeric ID or the ID specified for the `ClrWizardPage` component’s `id` input.\n   */\n  goTo(pageId: string): void {\n    if (!pageId) {\n      return;\n    }\n    this.navService.goTo(pageId);\n  }\n\n  /**\n   * Reset sets all WizardPages to incomplete and sets the first page in the `ClrWizard` to\n   * be the current page, resetting the wizard navigation.\n   * Use `(clrWizardOnReset)` event to reset the data or model of your wizard.\n   */\n  reset(): void {\n    this.pageCollection.reset();\n\n    this.onReset.emit();\n  }\n\n  private listenForNextPageChanges(): Subscription {\n    return this.navService.movedToNextPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n      this.onMoveNext.emit();\n      this.pageTitle?.nativeElement.focus();\n    });\n  }\n\n  private listenForPreviousPageChanges(): Subscription {\n    return this.navService.movedToPreviousPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n      this.onMovePrevious.emit();\n      this.pageTitle?.nativeElement.focus();\n    });\n  }\n\n  private listenForCancelChanges(): Subscription {\n    return this.navService.notifyWizardCancel.subscribe(() => this.checkAndCancel());\n  }\n\n  private listenForFinishedChanges(): Subscription {\n    return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());\n  }\n\n  private listenForPageChanges(): Subscription {\n    return this.navService.currentPageChange.subscribe(() => {\n      // Added to address VPAT-749:\n      //   When clicking on a wizard tab, focus should move to that\n      //   tabs content to make the wizard more accessible.\n      this.pageTitle?.nativeElement.focus();\n\n      this.currentPageChange.emit();\n\n      // scroll to top of page in case there is long page content\n      this.bodyElementRef?.nativeElement.scrollTo(0, 0);\n    });\n  }\n\n  private updateNavOnPageChanges(): void {\n    const changes = this.differ.diff(this.pages);\n    if (changes) {\n      changes.forEachAddedItem(() => this.navService.updateNavigation());\n      changes.forEachRemovedItem(() => this.navService.updateNavigation());\n    }\n  }\n\n  private initializeButtons(): void {\n    // Only trigger buttons ready if default is open (inlined)\n    if (this._open) {\n      this.buttonService.buttonsReady = true;\n    }\n  }\n\n  private emitWizardFinished(): void {\n    if (!this.stopNext) {\n      this.forceFinish();\n    }\n    this.wizardFinished.emit();\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<ng-template #coreWizardContent>\n  <div class=\"clr-wizard-content-wrapper\">\n    @if (stepnavLayout === ClrWizardStepnavLayout.HORIZONTAL) {\n    <div class=\"clr-wizard-title-wrapper\">\n      <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n      <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n    </div>\n    }\n\n    <div class=\"clr-wizard-stepnav-wrapper\" role=\"region\">\n      @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n      <ng-container [ngTemplateOutlet]=\"wizardTitleTemplate\"></ng-container>\n      }\n      <clr-wizard-stepnav [label]=\"stepnavAriaLabel\"></clr-wizard-stepnav>\n    </div>\n\n    <div class=\"clr-wizard-main-content\">\n      @if (showHeader) {\n      <div class=\"clr-wizard-header\">\n        @if (navService.currentPage?.pageTitle) {\n        <div class=\"clr-wizard-page-title-wrapper\" cdkFocusInitial tabindex=\"-1\">\n          <div\n            class=\"clr-wizard-page-title\"\n            role=\"heading\"\n            [attr.aria-level]=\"navService.currentPage?.pageTitle?.headingLevel || 2\"\n          >\n            <span tabindex=\"-1\" #pageTitle class=\"clr-wizard-page-title-text\">\n              <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n            </span>\n          </div>\n        </div>\n        } @if (stepnavLayout === ClrWizardStepnavLayout.VERTICAL) {\n        <ng-container [ngTemplateOutlet]=\"wizardActionsTemplate\"></ng-container>\n        }\n      </div>\n      }\n\n      <div #body class=\"clr-wizard-body-wrapper\">\n        <div class=\"clr-wizard-body\">\n          <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n            <ng-content></ng-content>\n          </main>\n        </div>\n      </div>\n\n      @if (showFooter) {\n      <div class=\"clr-wizard-footer\">\n        <div class=\"clr-wizard-footer-buttons\">\n          <div\n            class=\"clr-wizard-footer-buttons-wrapper\"\n            [ngClass]=\"{'align-start': footerAlign === ClrWizardFooterAlign.START, 'align-end': footerAlign === ClrWizardFooterAlign.END}\"\n          >\n            @if (navService.currentPage?.hasButtons) {\n            <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n            } @else {\n            <ng-content select=\"clr-wizard-button\"></ng-content>\n            }\n          </div>\n        </div>\n      </div>\n      }\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #wizardTitleTemplate>\n  <div class=\"clr-wizard-title\" [id]=\"wizardId\" role=\"heading\" [attr.aria-level]=\"wizardTitle?.headingLevel || 1\">\n    <ng-content select=\"clr-wizard-title\"></ng-content>\n  </div>\n</ng-template>\n\n<ng-template #wizardActionsTemplate>\n  @if (headerActionService.displayHeaderActionsWrapper) {\n  <div class=\"clr-wizard-header-actions-wrapper\">\n    @if (headerActionService.showWizardHeaderActions) {\n    <ng-content select=\"clr-wizard-header-action\"></ng-content>\n    } @if (headerActionService.currentPageHasHeaderActions) {\n    <ng-template [ngTemplateOutlet]=\"navService.currentPage?.headerActions\"></ng-template>\n    }\n  </div>\n  } @if (closable && !inPage) {\n  <button type=\"button\" class=\"close\" [attr.aria-label]=\"commonStrings.keys.close\" (click)=\"modalCancel()\">\n    <cds-icon shape=\"window-close\"></cds-icon>\n  </button>\n  }\n</ng-template>\n\n@if (inPage) {\n<ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n} @else {\n<clr-modal\n  [clrModalOpen]=\"_open\"\n  [clrModalSize]=\"size\"\n  [clrModalClosable]=\"closable\"\n  [clrModalStaticBackdrop]=\"true\"\n  [clrModalSkipAnimation]=\"stopModalAnimations\"\n  [clrModalOverrideScrollService]=\"isInline\"\n  [clrModalPreventClose]=\"true\"\n  (clrModalAlternateClose)=\"modalCancel()\"\n  [clrModalLabelledById]=\"wizardId\"\n>\n  <ng-template #clrInternalModalContentTemplate>\n    <ng-container [ngTemplateOutlet]=\"coreWizardContent\"></ng-container>\n  </ng-template>\n</clr-modal>\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 { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClrAlertModule } from '@clr/angular/emphasis/alert';\nimport { ClarityIcons, ClrIcon, errorStandardIcon, successStandardIcon } from '@clr/angular/icon';\nimport { ClrModalModule } from '@clr/angular/modal';\n\nimport { ClrWizard } from './wizard';\nimport { ClrWizardButton } from './wizard-button';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\nimport { ClrWizardStepnav } from './wizard-stepnav';\nimport { ClrWizardStepnavItem } from './wizard-stepnav-item';\nimport { ClrWizardTitle } from './wizard-title';\n\nexport const CLR_WIZARD_DIRECTIVES: any[] = [\n  ClrWizard,\n  ClrWizardPage,\n  ClrWizardStepnav,\n  ClrWizardStepnavItem,\n  ClrWizardButton,\n  ClrWizardHeaderAction,\n  ClrWizardTitle,\n  ClrWizardPageTitle,\n  ClrWizardPageNavTitle,\n  ClrWizardPageButtons,\n  ClrWizardPageHeaderActions,\n];\n\n@NgModule({\n  imports: [CommonModule, ClrIcon, ClrModalModule, ClrAlertModule],\n  declarations: [CLR_WIZARD_DIRECTIVES],\n  exports: [CLR_WIZARD_DIRECTIVES],\n})\nexport class ClrWizardModule {\n  constructor() {\n    ClarityIcons.addIcons(errorStandardIcon, successStandardIcon);\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\nexport * from './wizard';\nexport * from './wizard-page';\nexport * from './wizard-stepnav';\nexport * from './wizard-stepnav-item';\nexport * from './wizard-button';\nexport * from './wizard-header-action';\nexport * from './wizard-title';\nexport * from './wizard-page-title';\nexport * from './wizard-page-navtitle';\nexport * from './wizard-page-buttons';\nexport * from './wizard-page-header-actions';\nexport * from './interfaces/wizard-footer-align';\nexport * from './interfaces/wizard-stepnav-layout';\nexport * from './wizard.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PageCollectionService","i2.ButtonHubService","i1.WizardNavigationService","i2.PageCollectionService","i3.ButtonHubService","i4","i2.WizardNavigationService","i3","i5.ClrWizardStepnavItem","i1","i3.PageCollectionService","i4.ButtonHubService","i5.HeaderActionService","i7","i9.ClrWizardStepnav"],"mappings":"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"}