/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, HostBinding, Input } from '@angular/core';
import { NbStatusService } from '../../services/status.service';
import { NbComponentSize } from '../component-size';
import { NbComponentOrCustomStatus } from '../component-status';
/**
* Styled spinner component
*
* @styles
*
* spinner-text-color:
* spinner-text-font-family:
* spinner-text-font-size:
* spinner-text-font-weight:
* spinner-text-line-height:
* spinner-basic-background-color:
* spinner-basic-circle-filled-color:
* spinner-basic-circle-empty-color:
* spinner-primary-background-color:
* spinner-primary-circle-filled-color:
* spinner-primary-circle-empty-color:
* spinner-info-background-color:
* spinner-info-circle-filled-color:
* spinner-info-circle-empty-color:
* spinner-success-background-color:
* spinner-success-circle-filled-color:
* spinner-success-circle-empty-color:
* spinner-warning-background-color:
* spinner-warning-circle-filled-color:
* spinner-warning-circle-empty-color:
* spinner-danger-background-color:
* spinner-danger-circle-filled-color:
* spinner-danger-circle-empty-color:
* spinner-control-background-color:
* spinner-control-circle-filled-color:
* spinner-control-circle-empty-color:
* spinner-height-tiny:
* spinner-height-small:
* spinner-height-medium:
* spinner-height-large:
* spinner-height-giant:
*/
@Component({
selector: 'nb-spinner',
template: `
{{ message }}
`,
styleUrls: ['./spinner.component.scss'],
})
export class NbSpinnerComponent {
/**
* Loading text that is shown near the icon
* @type string
*/
@Input()
message: string = 'Loading...';
/**
* Spinner size, available sizes:
* tiny, small, medium, large, giant
* @param {string} value
*/
@Input()
size: NbComponentSize = 'medium';
/**
* Spinner status (adds specific styles):
* `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`.
*/
@Input() status: NbComponentOrCustomStatus = 'basic';
@HostBinding('class.size-tiny')
get tiny() {
return this.size === 'tiny';
}
@HostBinding('class.size-small')
get small() {
return this.size === 'small';
}
@HostBinding('class.size-medium')
get medium() {
return this.size === 'medium';
}
@HostBinding('class.size-large')
get large() {
return this.size === 'large';
}
@HostBinding('class.size-giant')
get giant() {
return this.size === 'giant';
}
@HostBinding('class.status-primary')
get primary() {
return this.status === 'primary';
}
@HostBinding('class.status-info')
get info() {
return this.status === 'info';
}
@HostBinding('class.status-success')
get success() {
return this.status === 'success';
}
@HostBinding('class.status-warning')
get warning() {
return this.status === 'warning';
}
@HostBinding('class.status-danger')
get danger() {
return this.status === 'danger';
}
@HostBinding('class.status-basic')
get basic() {
return this.status === 'basic';
}
@HostBinding('class.status-control')
get control() {
return this.status === 'control';
}
@HostBinding('class')
get additionalClasses(): string[] {
if (this.statusService.isCustomStatus(this.status)) {
return [this.statusService.getStatusClass(this.status)];
}
return [];
}
constructor(protected statusService: NbStatusService) {
}
}