UNPKG

ng-wizard

Version:

Angular ng-wizard - Angular wizard | stepper

1 lines 56.7 kB
{"version":3,"file":"ng-wizard.mjs","sources":["../../../projects/ng-wizard/src/lib/directives/ng-wizard-step-content.directive.ts","../../../projects/ng-wizard/src/lib/ng-wizard-config.token.ts","../../../projects/ng-wizard/src/lib/utils/enums.ts","../../../projects/ng-wizard/src/lib/utils/functions.ts","../../../projects/ng-wizard/src/lib/utils/interfaces.ts","../../../projects/ng-wizard/src/lib/utils/constants.ts","../../../projects/ng-wizard/src/lib/services/ng-wizard-data.service.ts","../../../projects/ng-wizard/src/lib/components/ng-wizard/ng-wizard.component.ts","../../../projects/ng-wizard/src/lib/components/ng-wizard/ng-wizard.component.html","../../../projects/ng-wizard/src/lib/components/ng-wizard-step/ng-wizard-step.component.ts","../../../projects/ng-wizard/src/lib/components/ng-wizard-step/ng-wizard-step.component.html","../../../projects/ng-wizard/src/ng-wizard.module.ts","../../../projects/ng-wizard/src/lib/services/ng-wizard.service.ts","../../../projects/ng-wizard/src/public-api.ts","../../../projects/ng-wizard/src/ng-wizard.ts"],"sourcesContent":["import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ngWizardStepContent]',\r\n})\r\nexport class NgWizardStepContentDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { NgWizardConfig } from './utils/interfaces';\r\n\r\nexport const NG_WIZARD_CONFIG_TOKEN = new InjectionToken<NgWizardConfig>(\r\n 'ngWizardCustom.config'\r\n);\r\n","export enum TOOLBAR_POSITION {\r\n none = 'none',\r\n top = 'top',\r\n bottom = 'bottom',\r\n both = 'both',\r\n}\r\n\r\nexport enum TOOLBAR_BUTTON_POSITION {\r\n start = 'start',\r\n end = 'end',\r\n}\r\n\r\n// export enum TRANSITION_EFFECT {\r\n// none = 'none',\r\n// slide = 'slide',\r\n// fade = 'fade'\r\n// }\r\n\r\nexport enum THEME {\r\n default = 'default',\r\n arrows = 'arrows',\r\n circles = 'circles',\r\n dots = 'dots',\r\n}\r\n\r\nexport enum STEP_STATE {\r\n normal = 'normal',\r\n disabled = 'disabled',\r\n error = 'error',\r\n hidden = 'hidden',\r\n}\r\n\r\nexport enum STEP_STATUS {\r\n untouched = 'untouched',\r\n done = 'done',\r\n active = 'active',\r\n}\r\n\r\nexport enum STEP_DIRECTION {\r\n forward = 'forward',\r\n backward = 'backward',\r\n}\r\n\r\nexport enum STEP_POSITION {\r\n first = 'first',\r\n final = 'final',\r\n middle = 'middle',\r\n}\r\n","// https://gist.github.com/ahtcx/0cd94e62691f539160b32ecda18af3d6\r\n// Merge a `source` object to a `target` recursively\r\nexport function merge(target: any, source: any) {\r\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\r\n for (let key of Object.keys(source)) {\r\n if (source[key] instanceof Object && key in target) {\r\n Object.assign(source[key], merge(target[key], source[key]));\r\n }\r\n }\r\n\r\n // Join `target` and modified `source`\r\n Object.assign(target || {}, source);\r\n\r\n return target;\r\n}\r\n","import {\r\n TOOLBAR_POSITION,\r\n TOOLBAR_BUTTON_POSITION,\r\n /* TRANSITION_EFFECT,*/ THEME,\r\n STEP_STATE,\r\n STEP_STATUS,\r\n STEP_DIRECTION,\r\n STEP_POSITION,\r\n} from './enums';\r\nimport {\r\n Input,\r\n HostBinding,\r\n Directive,\r\n Type,\r\n ComponentRef,\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface Language {\r\n next?: string;\r\n previous?: string;\r\n}\r\n\r\nexport interface ToolbarSettings {\r\n toolbarPosition?: TOOLBAR_POSITION; // none, top, bottom, both\r\n toolbarButtonPosition?: TOOLBAR_BUTTON_POSITION; // start, end\r\n showNextButton?: boolean; // show/hide a Next button\r\n showPreviousButton?: boolean; // show/hide a Previous button\r\n toolbarExtraButtons?: ToolbarButton[]; // Extra buttons to show on toolbar, array of input/buttons elements\r\n}\r\n\r\nexport interface ToolbarButton {\r\n text: string;\r\n class: string;\r\n event?: () => void;\r\n}\r\n\r\nexport interface AnchorSettings {\r\n anchorClickable?: boolean; // Enable/Disable anchor navigation\r\n enableAllAnchors?: boolean; // Activates all anchors clickable all times\r\n markDoneStep?: boolean; // Add done css\r\n markAllPreviousStepsAsDone?: boolean; // When a step selected, all previous steps are marked done\r\n removeDoneStepOnNavigateBack?: boolean; // While navigate back done step after active step will be cleared\r\n enableAnchorOnDoneStep?: boolean; // Enable/Disable the done steps navigation\r\n}\r\n\r\nexport interface NgWizardConfig {\r\n selected?: number; // Initial selected step, 0 = first step\r\n keyNavigation?: boolean; // Enable/Disable keyboard navigation(left and right keys are used if enabled)\r\n cycleSteps?: boolean; // Allows to cycle the navigation of steps\r\n lang?: Language; // Language variables for button\r\n toolbarSettings?: ToolbarSettings;\r\n anchorSettings?: AnchorSettings;\r\n theme?: THEME; // theme for the wizard, related css need to include for other than default theme\r\n}\r\n\r\n@Directive()\r\nexport abstract class NgWizardStep {\r\n index: number;\r\n\r\n @Input()\r\n title: string;\r\n\r\n @Input()\r\n description: string;\r\n\r\n @Input()\r\n state?: STEP_STATE;\r\n initialState?: STEP_STATE;\r\n\r\n @Input()\r\n component: Type<any>;\r\n componentRef: ComponentRef<any>;\r\n\r\n @Input()\r\n canEnter:\r\n | boolean\r\n | ((args: StepValidationArgs) => boolean | Observable<boolean>);\r\n\r\n @Input()\r\n canExit:\r\n | boolean\r\n | ((args: StepValidationArgs) => boolean | Observable<boolean>);\r\n\r\n status?: STEP_STATUS;\r\n initialStatus?: STEP_STATUS;\r\n\r\n abstract get isHidden(): boolean;\r\n\r\n @HostBinding('hidden')\r\n public get hidden(): boolean {\r\n return this.status != STEP_STATUS.active;\r\n }\r\n}\r\n\r\nexport interface StepValidationArgs {\r\n direction: STEP_DIRECTION;\r\n fromStep: NgWizardStep;\r\n toStep: NgWizardStep;\r\n}\r\n\r\nexport interface StepChangedArgs {\r\n step: NgWizardStep;\r\n previousStep: NgWizardStep;\r\n direction: STEP_DIRECTION;\r\n position: STEP_POSITION;\r\n}\r\n","import { NgWizardConfig } from './interfaces';\r\nimport {\r\n TOOLBAR_POSITION,\r\n TOOLBAR_BUTTON_POSITION /*, TRANSITION_EFFECT*/,\r\n THEME,\r\n} from './enums';\r\n\r\nexport const DEFAULT_CONFIG: NgWizardConfig = {\r\n selected: 0,\r\n keyNavigation: true,\r\n cycleSteps: false,\r\n lang: {\r\n next: 'Next',\r\n previous: 'Previous',\r\n },\r\n toolbarSettings: {\r\n toolbarPosition: TOOLBAR_POSITION.bottom,\r\n toolbarButtonPosition: TOOLBAR_BUTTON_POSITION.end,\r\n showNextButton: true,\r\n showPreviousButton: true,\r\n toolbarExtraButtons: [],\r\n },\r\n anchorSettings: {\r\n anchorClickable: true,\r\n enableAllAnchors: false,\r\n markDoneStep: true,\r\n markAllPreviousStepsAsDone: true,\r\n removeDoneStepOnNavigateBack: false,\r\n enableAnchorOnDoneStep: true,\r\n },\r\n theme: THEME.default,\r\n};\r\n","import { Injectable, Optional, Inject } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { NG_WIZARD_CONFIG_TOKEN } from '../ng-wizard-config.token';\r\nimport { DEFAULT_CONFIG } from '../utils/constants';\r\nimport { THEME } from '../utils/enums';\r\nimport { merge } from '../utils/functions';\r\nimport { StepChangedArgs, NgWizardConfig } from '../utils/interfaces';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgWizardDataService {\r\n resetWizard$: Observable<void>;\r\n showNextStep$: Observable<void>;\r\n showPreviousStep$: Observable<void>;\r\n showStep$: Observable<number>;\r\n setTheme$: Observable<THEME>;\r\n stepChangedArgs$: Observable<StepChangedArgs>;\r\n\r\n private _resetWizard: Subject<void>;\r\n private _showNextStep: Subject<void>;\r\n private _showPreviousStep: Subject<void>;\r\n private _showStep: Subject<number>;\r\n private _setTheme: Subject<THEME>;\r\n private _stepChangedArgs: Subject<StepChangedArgs>;\r\n private _defaultConfig: NgWizardConfig;\r\n\r\n constructor(\r\n @Optional() @Inject(NG_WIZARD_CONFIG_TOKEN) private config: NgWizardConfig\r\n ) {\r\n this._defaultConfig = { ...DEFAULT_CONFIG };\r\n if (this.config) {\r\n this._defaultConfig = merge(this._defaultConfig, this.config);\r\n }\r\n\r\n // Observable sources\r\n this._resetWizard = new Subject<void>();\r\n this._showNextStep = new Subject<void>();\r\n this._showPreviousStep = new Subject<void>();\r\n this._showStep = new Subject<number>();\r\n this._setTheme = new Subject<THEME>();\r\n this._stepChangedArgs = new Subject<StepChangedArgs>();\r\n\r\n // Observable streams\r\n this.resetWizard$ = this._resetWizard.asObservable();\r\n this.showNextStep$ = this._showNextStep.asObservable();\r\n this.showPreviousStep$ = this._showPreviousStep.asObservable();\r\n this.showStep$ = this._showStep.asObservable();\r\n this.setTheme$ = this._setTheme.asObservable();\r\n this.stepChangedArgs$ = this._stepChangedArgs.asObservable();\r\n }\r\n\r\n getDefaultConfig(): NgWizardConfig {\r\n return { ...this._defaultConfig };\r\n }\r\n\r\n resetWizard() {\r\n this._resetWizard.next();\r\n }\r\n\r\n showNextStep() {\r\n this._showNextStep.next();\r\n }\r\n\r\n showPreviousStep() {\r\n this._showPreviousStep.next();\r\n }\r\n\r\n showStep(index: number) {\r\n this._showStep.next(index);\r\n }\r\n\r\n setTheme(theme: THEME) {\r\n this._setTheme.next(theme);\r\n }\r\n\r\n stepChanged(args: StepChangedArgs) {\r\n this._stepChangedArgs.next(args);\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnDestroy,\r\n AfterContentInit,\r\n ContentChildren,\r\n QueryList,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { Subscription, of, Observable, isObservable } from 'rxjs';\r\nimport { NgWizardDataService } from '../../services/ng-wizard-data.service';\r\nimport {\r\n THEME,\r\n STEP_STATUS,\r\n STEP_STATE,\r\n TOOLBAR_POSITION,\r\n STEP_DIRECTION,\r\n STEP_POSITION,\r\n} from '../../utils/enums';\r\nimport { merge } from '../../utils/functions';\r\nimport {\r\n NgWizardConfig,\r\n StepChangedArgs,\r\n NgWizardStep,\r\n StepValidationArgs,\r\n ToolbarButton,\r\n} from '../../utils/interfaces';\r\n\r\n@Component({\r\n selector: 'ng-wizard',\r\n templateUrl: './ng-wizard.component.html',\r\n styleUrls: ['./ng-wizard.component.scss'],\r\n})\r\nexport class NgWizardComponent implements OnDestroy, AfterContentInit {\r\n @ContentChildren(NgWizardStep)\r\n public steps: QueryList<NgWizardStep>;\r\n\r\n _pConfig: NgWizardConfig;\r\n get pConfig(): NgWizardConfig {\r\n return this._pConfig || {};\r\n }\r\n\r\n @Input('config')\r\n set pConfig(config: NgWizardConfig) {\r\n this._pConfig = config;\r\n }\r\n\r\n config: NgWizardConfig;\r\n\r\n @Output() stepChanged = new EventEmitter<StepChangedArgs>();\r\n @Output() themeChanged = new EventEmitter<THEME>();\r\n @Output() reset = new EventEmitter<void>();\r\n\r\n styles: {\r\n main?: string;\r\n step?: string;\r\n previousButton?: string;\r\n nextButton?: string;\r\n toolbarTop?: string;\r\n toolbarBottom?: string;\r\n } = {};\r\n\r\n showToolbarTop: boolean = false;\r\n showPreviousButton: boolean = false;\r\n showNextButton: boolean = false;\r\n showToolbarBottom: boolean = false;\r\n showExtraButtons: boolean = false;\r\n currentStepIndex: number = null; // Active step index\r\n currentStep: NgWizardStep; // Active step\r\n\r\n resetWizardWatcher: Subscription;\r\n showNextStepWatcher: Subscription;\r\n showPreviousStepWatcher: Subscription;\r\n showStepWatcher: Subscription;\r\n setThemeWatcher: Subscription;\r\n\r\n constructor(private ngWizardDataService: NgWizardDataService) {}\r\n\r\n ngAfterContentInit() {\r\n this._backupStepStates();\r\n\r\n this._init();\r\n\r\n // Set toolbar\r\n this._setToolbar();\r\n\r\n // Assign plugin events\r\n this._setEvents();\r\n\r\n this.resetWizardWatcher = this.ngWizardDataService.resetWizard$.subscribe(\r\n () => this._reset()\r\n );\r\n this.showNextStepWatcher = this.ngWizardDataService.showNextStep$.subscribe(\r\n () => this._showNextStep()\r\n );\r\n this.showPreviousStepWatcher =\r\n this.ngWizardDataService.showPreviousStep$.subscribe(() =>\r\n this._showPreviousStep()\r\n );\r\n this.showStepWatcher = this.ngWizardDataService.showStep$.subscribe(\r\n (index) => this._showStep(index)\r\n );\r\n this.setThemeWatcher = this.ngWizardDataService.setTheme$.subscribe(\r\n (theme) => this._setTheme(theme)\r\n );\r\n }\r\n\r\n _init() {\r\n // set config\r\n let defaultConfig = this.ngWizardDataService.getDefaultConfig();\r\n this.config = merge(defaultConfig, this.pConfig);\r\n\r\n // set step states\r\n this._initSteps();\r\n\r\n // Set the elements\r\n this._initStyles();\r\n\r\n // Show the initial step\r\n this._showStep(this.config.selected);\r\n }\r\n\r\n _initSteps() {\r\n this.steps.forEach((step, index) => {\r\n step.index = index;\r\n step.status = step.status || STEP_STATUS.untouched;\r\n step.state = step.state || STEP_STATE.normal;\r\n });\r\n\r\n // Mark previous steps of the active step as done\r\n if (\r\n this.config.selected > 0 &&\r\n this.config.anchorSettings.markDoneStep &&\r\n this.config.anchorSettings.markAllPreviousStepsAsDone\r\n ) {\r\n this.steps.forEach((step) => {\r\n if (\r\n step.state != STEP_STATE.disabled &&\r\n step.state != STEP_STATE.hidden\r\n ) {\r\n step.status =\r\n step.index < this.config.selected ? STEP_STATUS.done : step.status;\r\n }\r\n });\r\n }\r\n }\r\n\r\n _backupStepStates() {\r\n this.steps.forEach((step) => {\r\n step.initialStatus = step.status;\r\n step.initialState = step.state;\r\n });\r\n }\r\n\r\n _restoreStepStates() {\r\n this.steps.forEach((step) => {\r\n step.status = step.initialStatus;\r\n step.state = step.initialState;\r\n });\r\n }\r\n\r\n // PRIVATE FUNCTIONS\r\n _initStyles() {\r\n // Set the main element\r\n this.styles.main = 'ng-wizard-main ng-wizard-theme-' + this.config.theme;\r\n\r\n // Set anchor elements\r\n this.styles.step = 'nav-item'; // li\r\n\r\n // Make the anchor clickable\r\n if (\r\n this.config.anchorSettings.enableAllAnchors &&\r\n this.config.anchorSettings.anchorClickable\r\n ) {\r\n this.styles.step += ' clickable';\r\n }\r\n\r\n // Set the toolbar styles\r\n this.styles.toolbarTop =\r\n 'btn-toolbar ng-wizard-toolbar ng-wizard-toolbar-top justify-content-' +\r\n this.config.toolbarSettings.toolbarButtonPosition;\r\n this.styles.toolbarBottom =\r\n 'btn-toolbar ng-wizard-toolbar ng-wizard-toolbar-bottom justify-content-' +\r\n this.config.toolbarSettings.toolbarButtonPosition;\r\n\r\n // Set previous&next buttons\r\n this.styles.previousButton = 'btn btn-secondary ng-wizard-btn-prev';\r\n this.styles.nextButton = 'btn btn-secondary ng-wizard-btn-next';\r\n }\r\n\r\n _setToolbar() {\r\n this.showToolbarTop =\r\n this.config.toolbarSettings.toolbarPosition == TOOLBAR_POSITION.top ||\r\n this.config.toolbarSettings.toolbarPosition == TOOLBAR_POSITION.both;\r\n\r\n this.showToolbarBottom =\r\n this.config.toolbarSettings.toolbarPosition == TOOLBAR_POSITION.bottom ||\r\n this.config.toolbarSettings.toolbarPosition == TOOLBAR_POSITION.both;\r\n\r\n this.showPreviousButton = this.config.toolbarSettings.showPreviousButton;\r\n this.showNextButton = this.config.toolbarSettings.showNextButton;\r\n\r\n this.showExtraButtons =\r\n this.config.toolbarSettings.toolbarExtraButtons &&\r\n this.config.toolbarSettings.toolbarExtraButtons.length > 0;\r\n }\r\n\r\n _setEvents() {\r\n //TODO: keyNavigation\r\n // Keyboard navigation event\r\n if (this.config.keyNavigation) {\r\n // $(document).keyup(function (e) {\r\n // mi._keyNav(e);\r\n // });\r\n }\r\n }\r\n\r\n _getStepCssClass(selectedStep: NgWizardStep) {\r\n let stepClass = this.styles.step;\r\n\r\n switch (selectedStep.state) {\r\n case STEP_STATE.disabled:\r\n stepClass += ' disabled';\r\n break;\r\n case STEP_STATE.error:\r\n stepClass += ' danger';\r\n break;\r\n case STEP_STATE.hidden:\r\n stepClass += ' hidden';\r\n break;\r\n }\r\n\r\n switch (selectedStep.status) {\r\n case STEP_STATUS.done:\r\n stepClass += ' done';\r\n break;\r\n case STEP_STATUS.active:\r\n stepClass += ' active';\r\n break;\r\n }\r\n\r\n return stepClass;\r\n }\r\n\r\n _showSelectedStep(event: Event, selectedStep: NgWizardStep) {\r\n event.preventDefault();\r\n\r\n if (!this.config.anchorSettings.anchorClickable) {\r\n return;\r\n }\r\n\r\n if (\r\n !this.config.anchorSettings.enableAnchorOnDoneStep &&\r\n selectedStep.status == STEP_STATUS.done\r\n ) {\r\n return;\r\n }\r\n\r\n if (selectedStep.index != this.currentStepIndex) {\r\n if (\r\n this.config.anchorSettings.enableAllAnchors &&\r\n this.config.anchorSettings.anchorClickable\r\n ) {\r\n this._showStep(selectedStep.index);\r\n } else {\r\n if (selectedStep.status == STEP_STATUS.done) {\r\n this._showStep(selectedStep.index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n _showNextStep(event?: Event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n // Find the next not disabled & hidden step\r\n let filteredSteps = this.steps.filter((step) => {\r\n return (\r\n step.index >\r\n (this.currentStepIndex == null ? -1 : this.currentStepIndex) &&\r\n step.state != STEP_STATE.disabled &&\r\n step.state != STEP_STATE.hidden\r\n );\r\n });\r\n\r\n if (filteredSteps.length == 0) {\r\n if (!this.config.cycleSteps) {\r\n return;\r\n }\r\n\r\n this._showStep(0);\r\n } else {\r\n this._showStep(filteredSteps.shift().index);\r\n }\r\n }\r\n\r\n _showPreviousStep(event?: Event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n // Find the previous not disabled & hidden step\r\n let filteredSteps = this.steps.filter((step) => {\r\n return (\r\n step.index <\r\n (this.currentStepIndex == null && this.config.cycleSteps\r\n ? this.steps.length\r\n : this.currentStepIndex) &&\r\n step.state != STEP_STATE.disabled &&\r\n step.state != STEP_STATE.hidden\r\n );\r\n });\r\n\r\n if (filteredSteps.length == 0) {\r\n if (!this.config.cycleSteps) {\r\n return;\r\n }\r\n\r\n this._showStep(this.steps.length - 1);\r\n } else {\r\n this._showStep(filteredSteps.pop().index);\r\n }\r\n }\r\n\r\n _showStep(selectedStepIndex: number) {\r\n // If step not found, skip\r\n if (selectedStepIndex >= this.steps.length || selectedStepIndex < 0) {\r\n return;\r\n }\r\n\r\n // If current step is requested again, skip\r\n if (selectedStepIndex == this.currentStepIndex) {\r\n return;\r\n }\r\n\r\n let selectedStep = this.steps.toArray()[selectedStepIndex];\r\n\r\n // If it is a disabled or hidden step, skip\r\n if (\r\n selectedStep.state == STEP_STATE.disabled ||\r\n selectedStep.state == STEP_STATE.hidden\r\n ) {\r\n return;\r\n }\r\n\r\n this._showLoader();\r\n\r\n this._isStepChangeValid(\r\n selectedStep,\r\n this.currentStep && this.currentStep.canExit\r\n )\r\n .toPromise()\r\n .then((isValid) => {\r\n if (isValid) {\r\n return this._isStepChangeValid(\r\n selectedStep,\r\n selectedStep.canEnter\r\n ).toPromise();\r\n }\r\n\r\n return of(isValid).toPromise();\r\n })\r\n .then((isValid) => {\r\n if (isValid) {\r\n // Load step content\r\n this._loadStepContent(selectedStep);\r\n }\r\n })\r\n .finally(() => this._hideLoader());\r\n }\r\n\r\n private _isStepChangeValid(\r\n selectedStep: NgWizardStep,\r\n condition:\r\n | boolean\r\n | ((args: StepValidationArgs) => boolean | Observable<boolean>)\r\n ): Observable<boolean> {\r\n if (typeof condition === typeof true) {\r\n return of(<boolean>condition);\r\n } else if (condition instanceof Function) {\r\n let direction = this._getStepDirection(selectedStep.index);\r\n let result = condition({\r\n direction: direction,\r\n fromStep: this.currentStep,\r\n toStep: selectedStep,\r\n });\r\n\r\n if (isObservable(result)) {\r\n return result;\r\n } else if (typeof result === typeof true) {\r\n return of(<boolean>result);\r\n } else {\r\n return of(false);\r\n }\r\n }\r\n\r\n return of(true);\r\n }\r\n\r\n _loadStepContent(selectedStep: NgWizardStep) {\r\n // Update controls\r\n this._setAnchor(selectedStep);\r\n // Set the buttons based on the step\r\n this._setButtons(selectedStep.index);\r\n\r\n // Trigger \"stepChanged\" event\r\n const args = <StepChangedArgs>{\r\n step: selectedStep,\r\n previousStep: this.currentStep,\r\n direction: this._getStepDirection(selectedStep.index),\r\n position: this._getStepPosition(selectedStep.index),\r\n };\r\n this.stepChanged.emit(args);\r\n this.ngWizardDataService.stepChanged(args);\r\n\r\n // Update the current index\r\n this.currentStepIndex = selectedStep.index;\r\n this.currentStep = selectedStep;\r\n }\r\n\r\n _setAnchor(selectedStep: NgWizardStep) {\r\n // Current step anchor > Remove other classes and add done class\r\n if (this.currentStep) {\r\n this.currentStep.status = STEP_STATUS.untouched;\r\n\r\n if (this.config.anchorSettings.markDoneStep) {\r\n this.currentStep.status = STEP_STATUS.done;\r\n\r\n if (this.config.anchorSettings.removeDoneStepOnNavigateBack) {\r\n this.steps.forEach((step) => {\r\n if (step.index > selectedStep.index) {\r\n step.status = STEP_STATUS.untouched;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Next step anchor > Remove other classes and add active class\r\n selectedStep.status = STEP_STATUS.active;\r\n }\r\n\r\n _setButtons(index: number) {\r\n // Previous/Next Button enable/disable based on step\r\n if (!this.config.cycleSteps) {\r\n if (0 >= index) {\r\n this.styles.previousButton =\r\n 'btn btn-secondary ng-wizard-btn-prev disabled';\r\n } else {\r\n this.styles.previousButton = 'btn btn-secondary ng-wizard-btn-prev';\r\n }\r\n\r\n if (this.steps.length - 1 <= index) {\r\n this.styles.nextButton =\r\n 'btn btn-secondary ng-wizard-btn-next disabled';\r\n } else {\r\n this.styles.nextButton = 'btn btn-secondary ng-wizard-btn-next';\r\n }\r\n }\r\n }\r\n\r\n _extraButtonClicked(button: ToolbarButton) {\r\n if (button.event) {\r\n button.event();\r\n }\r\n }\r\n\r\n // HELPER FUNCTIONS\r\n _keyNav(event: KeyboardEvent) {\r\n // Keyboard navigation\r\n switch (event.which) {\r\n case 37:\r\n // left\r\n this._showPreviousStep(event);\r\n event.preventDefault();\r\n break;\r\n case 39:\r\n // right\r\n this._showNextStep(event);\r\n event.preventDefault();\r\n break;\r\n default:\r\n return; // exit this handler for other keys\r\n }\r\n }\r\n\r\n _showLoader() {\r\n this.styles.main =\r\n 'ng-wizard-main ng-wizard-theme-' +\r\n this.config.theme +\r\n ' ng-wizard-loading';\r\n }\r\n\r\n _hideLoader() {\r\n this.styles.main = 'ng-wizard-main ng-wizard-theme-' + this.config.theme;\r\n }\r\n\r\n _getStepDirection(selectedStepIndex: number): STEP_DIRECTION {\r\n return this.currentStepIndex != null &&\r\n this.currentStepIndex != selectedStepIndex\r\n ? this.currentStepIndex < selectedStepIndex\r\n ? STEP_DIRECTION.forward\r\n : STEP_DIRECTION.backward\r\n : null;\r\n }\r\n\r\n _getStepPosition(selectedStepIndex: number): STEP_POSITION {\r\n return selectedStepIndex == 0\r\n ? STEP_POSITION.first\r\n : selectedStepIndex == this.steps.length - 1\r\n ? STEP_POSITION.final\r\n : STEP_POSITION.middle;\r\n }\r\n\r\n // PUBLIC FUNCTIONS\r\n _setTheme(theme: THEME) {\r\n if (this.config.theme == theme) {\r\n return;\r\n }\r\n\r\n this.config.theme = theme;\r\n this.styles.main = 'ng-wizard-main ng-wizard-theme-' + this.config.theme;\r\n\r\n // Trigger \"themeChanged\" event\r\n this.themeChanged.emit(this.config.theme);\r\n }\r\n\r\n _reset() {\r\n // Reset all elements and classes\r\n this.currentStepIndex = null;\r\n this.currentStep = null;\r\n this._restoreStepStates();\r\n this._init();\r\n\r\n // Trigger \"reset\" event\r\n this.reset.emit();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.resetWizardWatcher) {\r\n this.resetWizardWatcher.unsubscribe();\r\n }\r\n\r\n if (this.showNextStepWatcher) {\r\n this.showNextStepWatcher.unsubscribe();\r\n }\r\n\r\n if (this.showPreviousStepWatcher) {\r\n this.showPreviousStepWatcher.unsubscribe();\r\n }\r\n\r\n if (this.showStepWatcher) {\r\n this.showStepWatcher.unsubscribe();\r\n }\r\n\r\n if (this.setThemeWatcher) {\r\n this.setThemeWatcher.unsubscribe();\r\n }\r\n }\r\n}\r\n","<div id=\"ngwizard\" [ngClass]=\"styles.main\">\r\n <ul class=\"nav nav-tabs step-anchor\">\r\n <li\r\n *ngFor=\"let step of steps; let i = index\"\r\n [ngClass]=\"_getStepCssClass(step)\"\r\n >\r\n <a\r\n href=\"#step-{{ i }}\"\r\n (click)=\"_showSelectedStep($event, step)\"\r\n *ngIf=\"!step.isHidden\"\r\n class=\"nav-link\"\r\n >{{ step.title }}<br /><small>{{ step.description }}</small></a\r\n >\r\n </li>\r\n </ul>\r\n\r\n <div *ngIf=\"showToolbarTop\" [ngClass]=\"styles.toolbarTop\">\r\n <div class=\"btn-group mr-2 ng-wizard-btn-group\" role=\"group\">\r\n <button\r\n *ngIf=\"showPreviousButton\"\r\n [ngClass]=\"styles.previousButton\"\r\n type=\"button\"\r\n (click)=\"_showPreviousStep($event)\"\r\n >\r\n {{ config!.lang!.previous }}\r\n </button>\r\n <button\r\n *ngIf=\"showNextButton\"\r\n [ngClass]=\"styles.nextButton\"\r\n type=\"button\"\r\n (click)=\"_showNextStep($event)\"\r\n >\r\n {{ config!.lang!.next }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showExtraButtons\"\r\n class=\"btn-group mr-2 ng-wizard-btn-group-extra\"\r\n role=\"group\"\r\n >\r\n <button\r\n *ngFor=\"\r\n let button of config!.toolbarSettings!.toolbarExtraButtons;\r\n let j = index\r\n \"\r\n [ngClass]=\"button.class\"\r\n type=\"button\"\r\n (click)=\"_extraButtonClicked(button)\"\r\n >\r\n {{ button.text }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"ng-wizard-container tab-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showToolbarBottom\" [ngClass]=\"styles.toolbarBottom\">\r\n <div class=\"btn-group mr-2 ng-wizard-btn-group\" role=\"group\">\r\n <button\r\n *ngIf=\"showPreviousButton\"\r\n [ngClass]=\"styles.previousButton\"\r\n type=\"button\"\r\n (click)=\"_showPreviousStep($event)\"\r\n >\r\n {{ config!.lang!.previous }}\r\n </button>\r\n <button\r\n *ngIf=\"showNextButton\"\r\n [ngClass]=\"styles.nextButton\"\r\n type=\"button\"\r\n (click)=\"_showNextStep($event)\"\r\n >\r\n {{ config!.lang!.next }}\r\n </button>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showExtraButtons\"\r\n class=\"btn-group mr-2 ng-wizard-btn-group-extra\"\r\n role=\"group\"\r\n >\r\n <button\r\n *ngFor=\"\r\n let button of config!.toolbarSettings!.toolbarExtraButtons;\r\n let j = index\r\n \"\r\n [ngClass]=\"button.class\"\r\n type=\"button\"\r\n (click)=\"_extraButtonClicked(button)\"\r\n >\r\n {{ button.text }}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n forwardRef,\r\n OnInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n} from '@angular/core';\r\nimport { NgWizardStepContentDirective } from '../../directives/ng-wizard-step-content.directive';\r\nimport { STEP_STATE } from '../../utils/enums';\r\nimport { NgWizardStep } from '../../utils/interfaces';\r\n\r\n@Component({\r\n selector: 'ng-wizard-step',\r\n templateUrl: './ng-wizard-step.component.html',\r\n styleUrls: ['./ng-wizard-step.component.scss'],\r\n providers: [\r\n {\r\n provide: NgWizardStep,\r\n useExisting: forwardRef(() => NgWizardStepComponent),\r\n },\r\n ],\r\n})\r\nexport class NgWizardStepComponent extends NgWizardStep implements OnInit {\r\n @ViewChild(NgWizardStepContentDirective, { static: true })\r\n stepContent: NgWizardStepContentDirective;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.loadComponent();\r\n }\r\n\r\n loadComponent() {\r\n if (!this.component) {\r\n return;\r\n }\r\n\r\n let componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(this.component);\r\n\r\n this.stepContent.viewContainerRef.clear();\r\n this.componentRef =\r\n this.stepContent.viewContainerRef.createComponent(componentFactory);\r\n }\r\n\r\n get isHidden(): boolean {\r\n return this.state == STEP_STATE.hidden;\r\n }\r\n}\r\n","<div class=\"tab-pane step-content\" style=\"display: block\">\r\n <ng-content></ng-content>\r\n <ng-template ngWizardStepContent></ng-template>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { NgWizardStepContentDirective } from './lib/directives/ng-wizard-step-content.directive';\r\nimport { NG_WIZARD_CONFIG_TOKEN } from './lib/ng-wizard-config.token';\r\nimport { NgWizardComponent } from './lib/components/ng-wizard/ng-wizard.component';\r\nimport { NgWizardStepComponent } from './lib/components/ng-wizard-step/ng-wizard-step.component';\r\nimport { NgWizardConfig } from './lib/utils/interfaces';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [\r\n NgWizardComponent,\r\n NgWizardStepComponent,\r\n NgWizardStepContentDirective,\r\n ],\r\n exports: [NgWizardComponent, NgWizardStepComponent],\r\n})\r\nexport class NgWizardModule {\r\n static forRoot(\r\n ngWizardConfig: NgWizardConfig\r\n ): ModuleWithProviders<NgWizardModule> {\r\n return {\r\n ngModule: NgWizardModule,\r\n providers: [\r\n {\r\n provide: NG_WIZARD_CONFIG_TOKEN,\r\n useValue: ngWizardConfig,\r\n },\r\n ],\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { THEME } from '../utils/enums';\r\nimport { StepChangedArgs } from '../utils/interfaces';\r\nimport { NgWizardDataService } from './ng-wizard-data.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class NgWizardService {\r\n constructor(private ngWizardDataService: NgWizardDataService) {}\r\n\r\n reset() {\r\n this.ngWizardDataService.resetWizard();\r\n }\r\n\r\n next() {\r\n this.ngWizardDataService.showNextStep();\r\n }\r\n\r\n previous() {\r\n this.ngWizardDataService.showPreviousStep();\r\n }\r\n\r\n show(index: number) {\r\n this.ngWizardDataService.showStep(index);\r\n }\r\n\r\n theme(theme: THEME) {\r\n this.ngWizardDataService.setTheme(theme);\r\n }\r\n\r\n stepChanged(): Observable<StepChangedArgs> {\r\n return this.ngWizardDataService.stepChangedArgs$;\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-wizard\r\n */\r\n\r\nexport { NgWizardModule } from './ng-wizard.module';\r\nexport { NgWizardService } from './lib/services/ng-wizard.service';\r\nexport {\r\n TOOLBAR_POSITION,\r\n TOOLBAR_BUTTON_POSITION,\r\n THEME,\r\n STEP_STATE,\r\n STEP_DIRECTION,\r\n STEP_POSITION,\r\n} from './lib/utils/enums';\r\nexport { NgWizardStep } from './lib/utils/interfaces';\r\nexport type {\r\n Language,\r\n ToolbarSettings,\r\n ToolbarButton,\r\n AnchorSettings,\r\n NgWizardConfig,\r\n StepValidationArgs,\r\n StepChangedArgs,\r\n} from './lib/utils/interfaces';\r\nexport { NgWizardComponent } from './lib/components/ng-wizard/ng-wizard.component';\r\nexport { NgWizardStepComponent } from './lib/components/ng-wizard-step/ng-wizard-step.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgWizardDataService","i1.NgWizardStepContentDirective"],"mappings":"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