import { Component, HostBinding, Input } from "@angular/core"; import { ComponentStatus, ComponentSize, emptyStatusWarning, } from "./shared"; @Component({ selector: "p-spinner", template: ` {{ message }} `, styleUrls: ["./spinner.component.scss"], }) export class SpinnerComponent { /** * Loading text that is shown near the icon */ @Input() message: string = "Loading..."; /** * Spinner size, available sizes: * tiny, small, medium, large, giant */ @Input() size: ComponentSize = "medium"; /** * Spinner status (adds specific styles): * `basic`, `primary`, `info`, `success`, `warning`, `danger`, `control`. */ @Input() get status(): ComponentStatus { return this._status; } set status(value: ComponentStatus) { if ((value as string) === "") { emptyStatusWarning("Spinner"); value = "basic"; } this._status = value; } protected _status: ComponentStatus = "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"; } }