* Copyright headers 1 * Licence headers 2 * Copyright Headers 3 * Copyright Headers 4 * Copyright Headers 5 * Copyright Headers 6 * Copyright headers 7 * Add copyright headers for html and config file * Replace license files and update package.json * Update with CLA * lint
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
/*
|
|
Copyright 2024 New Vector Ltd.
|
|
Copyright 2015-2021 The Matrix.org Foundation C.I.C.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
import React from "react";
|
|
|
|
import { _t } from "../../../languageHandler";
|
|
|
|
interface IProps {
|
|
w?: number;
|
|
h?: number;
|
|
message?: string;
|
|
onFinished: any; // XXX: Spinner pretends to be a dialog so it must accept an onFinished, but it never calls it
|
|
}
|
|
|
|
export default class Spinner extends React.PureComponent<IProps> {
|
|
public static defaultProps: Partial<IProps> = {
|
|
w: 32,
|
|
h: 32,
|
|
};
|
|
|
|
public render(): React.ReactNode {
|
|
const { w, h, message } = this.props;
|
|
return (
|
|
<div className="mx_Spinner">
|
|
{message && (
|
|
<React.Fragment>
|
|
<div className="mx_Spinner_Msg">{message}</div>
|
|
</React.Fragment>
|
|
)}
|
|
<div
|
|
className="mx_Spinner_icon"
|
|
style={{ width: w, height: h }}
|
|
aria-label={_t("common|loading")}
|
|
role="progressbar"
|
|
data-testid="spinner"
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
}
|