blob: e3d1cb08d062e62b3ea046b8607a64bba2a03bc3 [file] [log] [blame]
{"version":3,"file":"cdk-stepper.umd.min.js","sources":["../../src/cdk/stepper/step-label.ts","../../src/cdk/stepper/step-header.ts","../../src/cdk/stepper/stepper.ts","../../src/cdk/stepper/stepper-button.ts","../../src/cdk/stepper/stepper-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: '[cdkStepLabel]',\n})\nexport class CdkStepLabel {\n constructor(/** @docs-private */ public template: TemplateRef<any>) { }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef} from '@angular/core';\nimport {FocusableOption} from '@angular/cdk/a11y';\n\n\n@Directive({\n selector: '[cdkStepHeader]',\n host: {\n 'role': 'tab',\n },\n})\nexport class CdkStepHeader implements FocusableOption {\n constructor(protected _elementRef: ElementRef<HTMLElement>) {}\n\n /** Focuses the step header. */\n focus() {\n this._elementRef.nativeElement.focus();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {FocusableOption, FocusKeyManager} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {END, ENTER, HOME, SPACE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n Directive,\n EventEmitter,\n ElementRef,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n InjectionToken,\n} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {CdkStepLabel} from './step-label';\nimport {Observable, Subject, of as obaservableOf} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\nimport {CdkStepHeader} from './step-header';\n\n/** Used to generate unique ID for each stepper component. */\nlet nextId = 0;\n\n/**\n * Position state of the content of each step in stepper that is used for transitioning\n * the content into correct position upon step selection change.\n */\nexport type StepContentPositionState = 'previous' | 'current' | 'next';\n\n/** Possible orientation of a stepper. */\nexport type StepperOrientation = 'horizontal' | 'vertical';\n\n/** Change event emitted on selection changes. */\nexport class StepperSelectionEvent {\n /** Index of the step now selected. */\n selectedIndex: number;\n\n /** Index of the step previously selected. */\n previouslySelectedIndex: number;\n\n /** The step instance now selected. */\n selectedStep: CdkStep;\n\n /** The step instance previously selected. */\n previouslySelectedStep: CdkStep;\n}\n\n/** The state of each step. */\nexport type StepState = 'number' | 'edit' | 'done' | 'error' | string;\n\n/** Enum to represent the different states of the steps. */\nexport const STEP_STATE = {\n NUMBER: 'number',\n EDIT: 'edit',\n DONE: 'done',\n ERROR: 'error'\n};\n\n/** InjectionToken that can be used to specify the global stepper options. */\nexport const STEPPER_GLOBAL_OPTIONS =\n new InjectionToken<StepperOptions>('STEPPER_GLOBAL_OPTIONS');\n\n/**\n * InjectionToken that can be used to specify the global stepper options.\n * @deprecated Use `STEPPER_GLOBAL_OPTIONS` instead.\n * @breaking-change 8.0.0.\n */\nexport const MAT_STEPPER_GLOBAL_OPTIONS = STEPPER_GLOBAL_OPTIONS;\n\n/** Configurable options for stepper. */\nexport interface StepperOptions {\n /**\n * Whether the stepper should display an error state or not.\n * Default behavior is assumed to be false.\n */\n showError?: boolean;\n\n /**\n * Whether the stepper should display the default indicator type\n * or not.\n * Default behavior is assumed to be true.\n */\n displayDefaultIndicatorType?: boolean;\n}\n\n@Component({\n moduleId: module.id,\n selector: 'cdk-step',\n exportAs: 'cdkStep',\n template: '<ng-template><ng-content></ng-content></ng-template>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CdkStep implements OnChanges {\n private _stepperOptions: StepperOptions;\n _showError: boolean;\n _displayDefaultIndicatorType: boolean;\n\n /** Template for step label if it exists. */\n @ContentChild(CdkStepLabel, {static: false}) stepLabel: CdkStepLabel;\n\n /** Template for step content. */\n @ViewChild(TemplateRef, {static: true}) content: TemplateRef<any>;\n\n /** The top level abstract control of the step. */\n @Input() stepControl: FormControlLike;\n\n /** Whether user has seen the expanded step content or not. */\n interacted = false;\n\n /** Plain text label of the step. */\n @Input() label: string;\n\n /** Error message to display when there's an error. */\n @Input() errorMessage: string;\n\n /** Aria label for the tab. */\n @Input('aria-label') ariaLabel: string;\n\n /**\n * Reference to the element that the tab is labelled by.\n * Will be cleared if `aria-label` is set at the same time.\n */\n @Input('aria-labelledby') ariaLabelledby: string;\n\n /** State of the step. */\n @Input() state: StepState;\n\n /** Whether the user can return to this step once it has been marked as completed. */\n @Input()\n get editable(): boolean { return this._editable; }\n set editable(value: boolean) {\n this._editable = coerceBooleanProperty(value);\n }\n private _editable = true;\n\n /** Whether the completion of step is optional. */\n @Input()\n get optional(): boolean { return this._optional; }\n set optional(value: boolean) {\n this._optional = coerceBooleanProperty(value);\n }\n private _optional = false;\n\n /** Whether step is marked as completed. */\n @Input()\n get completed(): boolean {\n return this._customCompleted == null ? this._getDefaultCompleted() : this._customCompleted;\n }\n set completed(value: boolean) {\n this._customCompleted = coerceBooleanProperty(value);\n }\n private _customCompleted: boolean | null = null;\n\n private _getDefaultCompleted() {\n return this.stepControl ? this.stepControl.valid && this.interacted : this.interacted;\n }\n\n /** Whether step has an error. */\n @Input()\n get hasError(): boolean {\n return this._customError == null ? this._getDefaultError() : this._customError;\n }\n set hasError(value: boolean) {\n this._customError = coerceBooleanProperty(value);\n }\n private _customError: boolean | null = null;\n\n private _getDefaultError() {\n return this.stepControl && this.stepControl.invalid && this.interacted;\n }\n\n /** @breaking-change 8.0.0 remove the `?` after `stepperOptions` */\n constructor(\n @Inject(forwardRef(() => CdkStepper)) private _stepper: CdkStepper,\n @Optional() @Inject(STEPPER_GLOBAL_OPTIONS) stepperOptions?: StepperOptions) {\n this._stepperOptions = stepperOptions ? stepperOptions : {};\n this._displayDefaultIndicatorType = this._stepperOptions.displayDefaultIndicatorType !== false;\n this._showError = !!this._stepperOptions.showError;\n }\n\n /** Selects this step component. */\n select(): void {\n this._stepper.selected = this;\n }\n\n /** Resets the step to its initial state. Note that this includes resetting form data. */\n reset(): void {\n this.interacted = false;\n\n if (this._customCompleted != null) {\n this._customCompleted = false;\n }\n\n if (this._customError != null) {\n this._customError = false;\n }\n\n if (this.stepControl) {\n this.stepControl.reset();\n }\n }\n\n ngOnChanges() {\n // Since basically all inputs of the MatStep get proxied through the view down to the\n // underlying MatStepHeader, we have to make sure that change detection runs correctly.\n this._stepper._stateChanged();\n }\n}\n\n@Directive({\n selector: '[cdkStepper]',\n exportAs: 'cdkStepper',\n})\nexport class CdkStepper implements AfterViewInit, OnDestroy {\n /** Emits when the component is destroyed. */\n protected _destroyed = new Subject<void>();\n\n /** Used for managing keyboard focus. */\n private _keyManager: FocusKeyManager<FocusableOption>;\n\n /**\n * @breaking-change 8.0.0 Remove `| undefined` once the `_document`\n * constructor param is required.\n */\n private _document: Document | undefined;\n\n /**\n * The list of step components that the stepper is holding.\n * @deprecated use `steps` instead\n * @breaking-change 9.0.0 remove this property\n */\n @ContentChildren(CdkStep) _steps: QueryList<CdkStep>;\n\n /** The list of step components that the stepper is holding. */\n get steps(): QueryList<CdkStep> {\n return this._steps;\n }\n\n /**\n * The list of step headers of the steps in the stepper.\n * @deprecated Type to be changed to `QueryList<CdkStepHeader>`.\n * @breaking-change 8.0.0\n */\n @ContentChildren(CdkStepHeader) _stepHeader: QueryList<FocusableOption>;\n\n /** Whether the validity of previous steps should be checked or not. */\n @Input()\n get linear(): boolean { return this._linear; }\n set linear(value: boolean) { this._linear = coerceBooleanProperty(value); }\n private _linear = false;\n\n /** The index of the selected step. */\n @Input()\n get selectedIndex() { return this._selectedIndex; }\n set selectedIndex(index: number) {\n const newIndex = coerceNumberProperty(index);\n\n if (this.steps) {\n // Ensure that the index can't be out of bounds.\n if (newIndex < 0 || newIndex > this.steps.length - 1) {\n throw Error('cdkStepper: Cannot assign out-of-bounds value to `selectedIndex`.');\n }\n\n if (this._selectedIndex != newIndex &&\n !this._anyControlsInvalidOrPending(newIndex) &&\n (newIndex >= this._selectedIndex || this.steps.toArray()[newIndex].editable)) {\n this._updateSelectedItemIndex(index);\n }\n } else {\n this._selectedIndex = newIndex;\n }\n }\n private _selectedIndex = 0;\n\n /** The step that is selected. */\n @Input()\n get selected(): CdkStep {\n // @breaking-change 8.0.0 Change return type to `CdkStep | undefined`.\n return this.steps ? this.steps.toArray()[this.selectedIndex] : undefined!;\n }\n set selected(step: CdkStep) {\n this.selectedIndex = this.steps ? this.steps.toArray().indexOf(step) : -1;\n }\n\n /** Event emitted when the selected step has changed. */\n @Output() selectionChange: EventEmitter<StepperSelectionEvent>\n = new EventEmitter<StepperSelectionEvent>();\n\n /** Used to track unique ID for each stepper component. */\n _groupId: number;\n\n protected _orientation: StepperOrientation = 'horizontal';\n\n constructor(\n @Optional() private _dir: Directionality,\n private _changeDetectorRef: ChangeDetectorRef,\n // @breaking-change 8.0.0 `_elementRef` and `_document` parameters to become required.\n private _elementRef?: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) _document?: any) {\n this._groupId = nextId++;\n this._document = _document;\n }\n\n ngAfterViewInit() {\n // Note that while the step headers are content children by default, any components that\n // extend this one might have them as view chidren. We initialize the keyboard handling in\n // AfterViewInit so we're guaranteed for both view and content children to be defined.\n this._keyManager = new FocusKeyManager<FocusableOption>(this._stepHeader)\n .withWrap()\n .withVerticalOrientation(this._orientation === 'vertical');\n\n (this._dir ? this._dir.change as Observable<Direction> : obaservableOf<Direction>())\n .pipe(startWith(this._layoutDirection()), takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n\n this._keyManager.updateActiveItemIndex(this._selectedIndex);\n\n this.steps.changes.pipe(takeUntil(this._destroyed)).subscribe(() => {\n if (!this.selected) {\n this._selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n });\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Selects and focuses the next step in list. */\n next(): void {\n this.selectedIndex = Math.min(this._selectedIndex + 1, this.steps.length - 1);\n }\n\n /** Selects and focuses the previous step in list. */\n previous(): void {\n this.selectedIndex = Math.max(this._selectedIndex - 1, 0);\n }\n\n /** Resets the stepper to its initial state. Note that this includes clearing form data. */\n reset(): void {\n this._updateSelectedItemIndex(0);\n this.steps.forEach(step => step.reset());\n this._stateChanged();\n }\n\n /** Returns a unique id for each step label element. */\n _getStepLabelId(i: number): string {\n return `cdk-step-label-${this._groupId}-${i}`;\n }\n\n /** Returns unique id for each step content element. */\n _getStepContentId(i: number): string {\n return `cdk-step-content-${this._groupId}-${i}`;\n }\n\n /** Marks the component to be change detected. */\n _stateChanged() {\n this._changeDetectorRef.markForCheck();\n }\n\n /** Returns position state of the step with the given index. */\n _getAnimationDirection(index: number): StepContentPositionState {\n const position = index - this._selectedIndex;\n if (position < 0) {\n return this._layoutDirection() === 'rtl' ? 'next' : 'previous';\n } else if (position > 0) {\n return this._layoutDirection() === 'rtl' ? 'previous' : 'next';\n }\n return 'current';\n }\n\n /** Returns the type of icon to be displayed. */\n _getIndicatorType(index: number, state: StepState = STEP_STATE.NUMBER): StepState {\n const step = this.steps.toArray()[index];\n const isCurrentStep = this._isCurrentStep(index);\n\n return step._displayDefaultIndicatorType\n ? this._getDefaultIndicatorLogic(step, isCurrentStep)\n : this._getGuidelineLogic(step, isCurrentStep, state);\n }\n\n private _getDefaultIndicatorLogic(step: CdkStep, isCurrentStep: boolean): StepState {\n if (step._showError && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n } else if (!step.completed || isCurrentStep) {\n return STEP_STATE.NUMBER;\n } else {\n return step.editable ? STEP_STATE.EDIT : STEP_STATE.DONE;\n }\n }\n\n private _getGuidelineLogic(\n step: CdkStep,\n isCurrentStep: boolean,\n state: StepState = STEP_STATE.NUMBER): StepState {\n if (step._showError && step.hasError && !isCurrentStep) {\n return STEP_STATE.ERROR;\n } else if (step.completed && !isCurrentStep) {\n return STEP_STATE.DONE;\n } else if (step.completed && isCurrentStep) {\n return state;\n } else if (step.editable && isCurrentStep) {\n return STEP_STATE.EDIT;\n } else {\n return state;\n }\n }\n\n private _isCurrentStep(index: number) {\n return this._selectedIndex === index;\n }\n\n /** Returns the index of the currently-focused step header. */\n _getFocusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : this._selectedIndex;\n }\n\n private _updateSelectedItemIndex(newIndex: number): void {\n const stepsArray = this.steps.toArray();\n this.selectionChange.emit({\n selectedIndex: newIndex,\n previouslySelectedIndex: this._selectedIndex,\n selectedStep: stepsArray[newIndex],\n previouslySelectedStep: stepsArray[this._selectedIndex],\n });\n\n // If focus is inside the stepper, move it to the next header, otherwise it may become\n // lost when the active step content is hidden. We can't be more granular with the check\n // (e.g. checking whether focus is inside the active step), because we don't have a\n // reference to the elements that are rendering out the content.\n this._containsFocus() ? this._keyManager.setActiveItem(newIndex) :\n this._keyManager.updateActiveItemIndex(newIndex);\n\n this._selectedIndex = newIndex;\n this._stateChanged();\n }\n\n _onKeydown(event: KeyboardEvent) {\n const hasModifier = hasModifierKey(event);\n const keyCode = event.keyCode;\n const manager = this._keyManager;\n\n if (manager.activeItemIndex != null && !hasModifier &&\n (keyCode === SPACE || keyCode === ENTER)) {\n this.selectedIndex = manager.activeItemIndex;\n event.preventDefault();\n } else if (keyCode === HOME) {\n manager.setFirstItemActive();\n event.preventDefault();\n } else if (keyCode === END) {\n manager.setLastItemActive();\n event.preventDefault();\n } else {\n manager.onKeydown(event);\n }\n }\n\n private _anyControlsInvalidOrPending(index: number): boolean {\n const steps = this.steps.toArray();\n\n steps[this._selectedIndex].interacted = true;\n\n if (this._linear && index >= 0) {\n return steps.slice(0, index).some(step => {\n const control = step.stepControl;\n const isIncomplete = control ?\n (control.invalid || control.pending || !step.interacted) :\n !step.completed;\n return isIncomplete && !step.optional;\n });\n }\n\n return false;\n }\n\n private _layoutDirection(): Direction {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n\n /** Checks whether the stepper contains the focused element. */\n private _containsFocus(): boolean {\n if (!this._document || !this._elementRef) {\n return false;\n }\n\n const stepperElement = this._elementRef.nativeElement;\n const focusedElement = this._document.activeElement;\n return stepperElement === focusedElement || stepperElement.contains(focusedElement);\n }\n}\n\n\n/**\n * Simplified representation of a FormControl from @angular/forms.\n * Used to avoid having to bring in @angular/forms for a single optional interface.\n * @docs-private\n */\ninterface FormControlLike {\n asyncValidator: () => any | null;\n dirty: boolean;\n disabled: boolean;\n enabled: boolean;\n errors: {[key: string]: any} | null;\n invalid: boolean;\n parent: any;\n pending: boolean;\n pristine: boolean;\n root: FormControlLike;\n status: string;\n statusChanges: Observable<any>;\n touched: boolean;\n untouched: boolean;\n updateOn: any;\n valid: boolean;\n validator: () => any | null;\n value: any;\n valueChanges: Observable<any>;\n clearAsyncValidators(): void;\n clearValidators(): void;\n disable(opts?: any): void;\n enable(opts?: any): void;\n get(path: (string | number)[] | string): FormControlLike | null;\n getError(errorCode: string, path?: (string | number)[] | string): any;\n hasError(errorCode: string, path?: (string | number)[] | string): boolean;\n markAllAsTouched(): void;\n markAsDirty(opts?: any): void;\n markAsPending(opts?: any): void;\n markAsPristine(opts?: any): void;\n markAsTouched(opts?: any): void;\n markAsUntouched(opts?: any): void;\n patchValue(value: any, options?: Object): void;\n reset(value?: any, options?: Object): void;\n setAsyncValidators(newValidator: () => any | (() => any)[] | null): void;\n setErrors(errors: {[key: string]: any} | null, opts?: any): void;\n setParent(parent: any): void;\n setValidators(newValidator: () => any | (() => any)[] | null): void;\n setValue(value: any, options?: Object): void;\n updateValueAndValidity(opts?: any): void;\n patchValue(value: any, options?: any): void;\n registerOnChange(fn: Function): void;\n registerOnDisabledChange(fn: (isDisabled: boolean) => void): void;\n reset(formState?: any, options?: any): void;\n setValue(value: any, options?: any): void;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, HostListener, Input} from '@angular/core';\n\nimport {CdkStepper} from './stepper';\n\n/** Button that moves to the next step in a stepper workflow. */\n@Directive({\n selector: 'button[cdkStepperNext]',\n host: {\n '[type]': 'type',\n }\n})\nexport class CdkStepperNext {\n /** Type of the next button. Defaults to \"submit\" if not specified. */\n @Input() type: string = 'submit';\n\n constructor(public _stepper: CdkStepper) {}\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritte.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('click')\n _handleClick() {\n this._stepper.next();\n }\n}\n\n/** Button that moves to the previous step in a stepper workflow. */\n@Directive({\n selector: 'button[cdkStepperPrevious]',\n host: {\n '[type]': 'type',\n }\n})\nexport class CdkStepperPrevious {\n /** Type of the previous button. Defaults to \"button\" if not specified. */\n @Input() type: string = 'button';\n\n constructor(public _stepper: CdkStepper) {}\n\n // We have to use a `HostListener` here in order to support both Ivy and ViewEngine.\n // In Ivy the `host` bindings will be merged when this class is extended, whereas in\n // ViewEngine they're overwritte.\n // TODO(crisbeto): we move this back into `host` once Ivy is turned on by default.\n // tslint:disable-next-line:no-host-decorator-in-concrete\n @HostListener('click')\n _handleClick() {\n this._stepper.previous();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkStepper, CdkStep} from './stepper';\nimport {CommonModule} from '@angular/common';\nimport {CdkStepLabel} from './step-label';\nimport {CdkStepperNext, CdkStepperPrevious} from './stepper-button';\nimport {CdkStepHeader} from './step-header';\nimport {BidiModule} from '@angular/cdk/bidi';\n\n@NgModule({\n imports: [BidiModule, CommonModule],\n exports: [\n CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious,\n ],\n declarations: [\n CdkStep,\n CdkStepper,\n CdkStepHeader,\n CdkStepLabel,\n CdkStepperNext,\n CdkStepperPrevious,\n ]\n})\nexport class CdkStepperModule {}\n"],"names":["CdkStepLabel","template","this","type","Directive","args","selector","TemplateRef","CdkStepHeader","_elementRef","prototype","focus","nativeElement","host","role","ElementRef","nextId","StepperSelectionEvent","STEP_STATE","NUMBER","EDIT","DONE","ERROR","STEPPER_GLOBAL_OPTIONS","InjectionToken","MAT_STEPPER_GLOBAL_OPTIONS","CdkStep","_stepper","stepperOptions","interacted","_editable","_optional","_customCompleted","_customError","_stepperOptions","_displayDefaultIndicatorType","displayDefaultIndicatorType","_showError","showError","Object","defineProperty","value","coerceBooleanProperty","_getDefaultCompleted","stepControl","valid","_getDefaultError","invalid","select","selected","reset","ngOnChanges","_stateChanged","Component","exportAs","encapsulation","ViewEncapsulation","None","changeDetection","ChangeDetectionStrategy","OnPush","propDecorators","Input","label","errorMessage","ariaLabel","ariaLabelledby","state","editable","optional","completed","hasError","CdkStepper","_dir","_changeDetectorRef","_selectedIndex","_groupId","_document","get","enumerable","configurable","newIndex","coerceNumberProperty","index","steps","length","Error","_anyControlsInvalidOrPending","toArray","_updateSelectedItemIndex","selectedIndex","set","_keyManager","FocusKeyManager","_stepHeader","withWrap","withVerticalOrientation","_orientation","obaservableOf","pipe","startWith","_layoutDirection","takeUntil","_destroyed","subscribe","changes","_this","Math","max","complete","forEach","position","step","isCurrentStep","_isCurrentStep","_getDefaultIndicatorLogic","_getGuidelineLogic","stepsArray","previouslySelectedIndex","selectedStep","previouslySelectedStep","_containsFocus","setActiveItem","updateActiveItemIndex","hasModifier","hasModifierKey","event","keyCode","manager","SPACE","ENTER","HOME","setFirstItemActive","preventDefault","END","setLastItemActive","onKeydown","activeItemIndex","_linear","slice","some","control","stepperElement","focusedElement","activeElement","decorators","undefined","Inject","DOCUMENT","linear","selectionChange","Output","CdkStepperNext","_handleClick","next","[type]","HostListener","CdkStepperPrevious","previous","CdkStepperModule","NgModule","imports","BidiModule","CommonModule","exports","declarations"],"mappings":"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"}