ipsos-components
Version:
Material Design components for Angular
108 lines (93 loc) • 3.04 kB
text/typescript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {FocusMonitor} from '@angular/cdk/a11y';
import {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
ElementRef,
Input,
OnDestroy,
ViewEncapsulation,
} from '@angular/core';
import {Subscription} from 'rxjs/Subscription';
import {MatStepLabel} from './step-label';
import {MatStepperIntl} from './stepper-intl';
export class MatStepHeader implements OnDestroy {
private _intlSubscription: Subscription;
/** Icon for the given step. */
icon: string;
/** Label of the given step. */
label: MatStepLabel | string;
/** Index of the given step. */
get index() { return this._index; }
set index(value: any) {
this._index = coerceNumberProperty(value);
}
private _index: number;
/** Whether the given step is selected. */
get selected() { return this._selected; }
set selected(value: any) {
this._selected = coerceBooleanProperty(value);
}
private _selected: boolean;
/** Whether the given step label is active. */
get active() { return this._active; }
set active(value: any) {
this._active = coerceBooleanProperty(value);
}
private _active: boolean;
/** Whether the given step is optional. */
get optional() { return this._optional; }
set optional(value: any) {
this._optional = coerceBooleanProperty(value);
}
private _optional: boolean;
constructor(
public _intl: MatStepperIntl,
private _focusMonitor: FocusMonitor,
private _element: ElementRef,
changeDetectorRef: ChangeDetectorRef) {
_focusMonitor.monitor(_element.nativeElement, true);
this._intlSubscription = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());
}
ngOnDestroy() {
this._intlSubscription.unsubscribe();
this._focusMonitor.stopMonitoring(this._element.nativeElement);
}
/** Returns string label of given step if it is a text label. */
_stringLabel(): string | null {
return this.label instanceof MatStepLabel ? null : this.label;
}
/** Returns MatStepLabel if the label of given step is a template label. */
_templateLabel(): MatStepLabel | null {
return this.label instanceof MatStepLabel ? this.label : null;
}
/** Returns the host HTML element. */
_getHostElement() {
return this._element.nativeElement;
}
}