/** * @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) { } }