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";
}
}