File

projects/common/lib/components/form-action-bar/form-action-bar.component.ts

Implements

OnInit

Metadata

selector common-form-action-bar
styleUrls ./form-action-bar.component.scss
templateUrl ./form-action-bar.component.html
viewProviders { provide: ControlContainer, useExisting: forwardRef(() => NgForm) }

Index

Methods
Inputs
Outputs

Constructor

constructor()

Inputs

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>

Methods

ngOnInit
ngOnInit()
Returns : void
onClick
onClick($event)
Parameters :
Name Optional
$event No
Returns : boolean

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
Component
Html element with directive

result-matching ""

    No results matching ""