40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { Component, Output, Input } from 'angular-ts-decorators';
|
|
import { LinearWorkflowComponent } from './linear-workflow.component';
|
|
|
|
|
|
/**
|
|
* A component which displays a single section in a linear workflow.
|
|
*/
|
|
@Component({
|
|
selector: 'linearWorkflowSection',
|
|
templateUrl: '/static/js/directives/ui/linear-workflow/linear-workflow-section.component.html',
|
|
transclude: true,
|
|
require: {
|
|
parent: '^^linearWorkflow'
|
|
}
|
|
})
|
|
export class LinearWorkflowSectionComponent implements ng.IComponentController {
|
|
|
|
@Input('@') public sectionId: string;
|
|
@Input('@') public sectionTitle: string;
|
|
@Input() public sectionValid: boolean = false;
|
|
public sectionVisible: boolean = false;
|
|
public isCurrentSection: boolean = false;
|
|
public parent: LinearWorkflowComponent;
|
|
|
|
public $onInit(): void {
|
|
this.parent.addSection(this);
|
|
}
|
|
|
|
public $onChanges(changes: ng.IOnChangesObject): void {
|
|
if (changes['sectionValid'] !== undefined && !changes['sectionValid'].currentValue) {
|
|
this.parent.onSectionInvalid(this.sectionId);
|
|
}
|
|
}
|
|
|
|
public onSubmitSection(): void {
|
|
if (this.sectionValid) {
|
|
this.parent.onNextSection();
|
|
}
|
|
}
|
|
}
|