File
Implements
canContinue
|
Type : boolean
|
Default value : true
|
|
defaultColor
|
Type : boolean
|
Default value : true
|
|
isLoading
|
Type : boolean
|
Default value : false
|
|
scrollToErrorsOnSubmit
|
Type : boolean
|
Default value : true
|
|
submitLabel
|
Type : string
|
Default value : 'Continue'
|
|
Outputs
btnClick
|
Type : EventEmitter<any>
|
|
Design Guidelines
Lorem ipsum dolor sit amet consectetur adipisicing elit. Sapiente, magnam ipsam. Sit quasi natus architecto rerum unde non provident! Quia nisi facere amet iste mollitia voluptatem non molestias esse optio?
Aperiam fugiat consectetur temporibus, iste repellat, quisquam sapiente nisi distinctio optio, autem nemo tenetur error eum voluptatibus ab accusamus quis voluptatum blanditiis. Quam et ut reprehenderit vitae nobis, at ipsum!
Exercitationem pariatur animi repudiandae corporis obcaecati ratione ducimus beatae quam, nostrum magnam unde numquam quidem cupiditate odit id. Beatae alias molestiae, optio incidunt harum quia voluptates deserunt sequi. Nesciunt, optio.
import { Component, OnInit, Input, Output, EventEmitter, forwardRef } from '@angular/core';
import { ControlContainer, NgForm } from '@angular/forms';
import { scrollToError } from '../../../helpers/scroll-helpers';
@Component({
selector: 'common-form-action-bar',
templateUrl: './form-action-bar.component.html',
styleUrls: ['./form-action-bar.component.scss'],
// TODO: Figure out why this is required.
viewProviders: [ { provide: ControlContainer, useExisting: forwardRef(() => NgForm ) } ]
})
export class FormActionBarComponent implements OnInit {
@Input() submitLabel: string = 'Continue';
@Input() canContinue: boolean = true;
@Input() isLoading: boolean = false;
@Input() defaultColor: boolean = true;
@Output() btnClick: EventEmitter<any> = new EventEmitter<any>();
@Input() scrollToErrorsOnSubmit: boolean = true;
constructor() { }
ngOnInit() {
}
onClick($event) {
if (!this.isLoading && this.canContinue) {
this.btnClick.emit($event);
if (this.scrollToErrorsOnSubmit) {
// Scroll to error after 50ms, give time for errors to display etc.
// This timeout is outside of Angular change detection.
setTimeout(scrollToError, 50);
}
}
$event.stopPropagation();
return false;
}
}
<div class="form-action-bar form-bar" [ngClass]="{disabled: !canContinue}">
<button class="btn btn-lg {{defaultColor ? 'btn-primary' : 'btn-secondary' }} submit"
(click)="onClick($event)"
[ngClass]="{disabled: !canContinue || isLoading}">
<ng-container *ngIf="!isLoading; else loadingSpinner"> {{submitLabel}} </ng-container>
</button>
</div>
<ng-template #loadingSpinner>
<i class="fa fa-spinner fa-pulse fa-fw"></i>
</ng-template>
Legend
Html element with directive