aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/views/common/button
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-29 18:26:24 +0800
committercrupest <crupest@outlook.com>2023-07-29 18:26:24 +0800
commit13f6f2a451feede8037d18cfbac64843e108ccbd (patch)
treeed27f20f477d4a0f24ba711f8001d2ac1a67ecdd /FrontEnd/src/views/common/button
parent2d4a75a21a8a97db8017b56e321c56c7d70bc674 (diff)
downloadtimeline-13f6f2a451feede8037d18cfbac64843e108ccbd.tar.gz
timeline-13f6f2a451feede8037d18cfbac64843e108ccbd.tar.bz2
timeline-13f6f2a451feede8037d18cfbac64843e108ccbd.zip
...
Diffstat (limited to 'FrontEnd/src/views/common/button')
-rw-r--r--FrontEnd/src/views/common/button/Button.css2
-rw-r--r--FrontEnd/src/views/common/button/LoadingButton.css14
-rw-r--r--FrontEnd/src/views/common/button/LoadingButton.tsx20
3 files changed, 24 insertions, 12 deletions
diff --git a/FrontEnd/src/views/common/button/Button.css b/FrontEnd/src/views/common/button/Button.css
index fe619f9d..14b019b9 100644
--- a/FrontEnd/src/views/common/button/Button.css
+++ b/FrontEnd/src/views/common/button/Button.css
@@ -56,7 +56,7 @@
border-color: var(--cru-key-2-color);
}
-.cru-button.outline:disabled {
+.cru-button.outline:not(.cru-loading-button):disabled {
color: var(--cru-surface-on-color);
border-color: var(--cru-surface-on-color);
background-color: white;
diff --git a/FrontEnd/src/views/common/button/LoadingButton.css b/FrontEnd/src/views/common/button/LoadingButton.css
new file mode 100644
index 00000000..8d929383
--- /dev/null
+++ b/FrontEnd/src/views/common/button/LoadingButton.css
@@ -0,0 +1,14 @@
+.cru-loading-button {
+ display: flex;
+ align-items: center;
+}
+
+.cru-loading-button:disabled {
+ color: var(--cru-key-2-color);
+ border-color: var(--cru-key-2-color);
+ cursor: auto;
+}
+
+.cru-loading-button-spinner {
+ margin-left: 0.5em;
+}
diff --git a/FrontEnd/src/views/common/button/LoadingButton.tsx b/FrontEnd/src/views/common/button/LoadingButton.tsx
index 249f3e1d..f23369de 100644
--- a/FrontEnd/src/views/common/button/LoadingButton.tsx
+++ b/FrontEnd/src/views/common/button/LoadingButton.tsx
@@ -1,19 +1,19 @@
-import * as React from "react";
import classNames from "classnames";
-import { useTranslation } from "react-i18next";
-import { I18nText, ThemeColor, convertI18nText } from "../common";
+import { I18nText, ThemeColor, useC } from "../common";
import Spinner from "../Spinner";
+import "./LoadingButton.css";
+
interface LoadingButtonProps extends React.ComponentPropsWithoutRef<"button"> {
color?: ThemeColor;
text?: I18nText;
loading?: boolean;
}
-function LoadingButton(props: LoadingButtonProps): JSX.Element {
- const { t } = useTranslation();
+export default function LoadingButton(props: LoadingButtonProps) {
+ const c = useC();
const { color, text, loading, className, children, ...otherProps } = props;
@@ -23,17 +23,15 @@ function LoadingButton(props: LoadingButtonProps): JSX.Element {
return (
<button
+ disabled={loading}
className={classNames(
- "cru-" + (color ?? "primary"),
- "cru-button outline",
+ `cru-${color ?? "primary"} cru-button outline cru-loading-button`,
className,
)}
{...otherProps}
>
- {text != null ? convertI18nText(text, t) : children}
- {loading && <Spinner />}
+ {text != null ? c(text) : children}
+ {loading && <Spinner className="cru-loading-button-spinner" />}
</button>
);
}
-
-export default LoadingButton;