diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-16 21:26:24 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-17 11:49:39 +0000 |
| commit | 9235e9a6fbb364713105137b6bf5bba9d81ecd4c (patch) | |
| tree | 80bc7871ca2b043c110c61b796c46af91cb26e2f /packages/web/components/ui/action-button.tsx | |
| parent | 6febe13b3f4ad4eff3f205ece445b3577255bf41 (diff) | |
| download | karakeep-9235e9a6fbb364713105137b6bf5bba9d81ecd4c.tar.zst | |
ui: Change action buttons to show a spinner when the request is loading
Diffstat (limited to 'packages/web/components/ui/action-button.tsx')
| -rw-r--r-- | packages/web/components/ui/action-button.tsx | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/web/components/ui/action-button.tsx b/packages/web/components/ui/action-button.tsx new file mode 100644 index 00000000..42e16f65 --- /dev/null +++ b/packages/web/components/ui/action-button.tsx @@ -0,0 +1,25 @@ +import { Button, ButtonProps } from "./button"; +import LoadingSpinner from "./spinner"; + +export function ActionButton({ + children, + loading, + spinner, + disabled, + ...props +}: ButtonProps & { + loading: boolean; + spinner?: React.ReactNode; +}) { + spinner ||= <LoadingSpinner />; + if (disabled !== undefined) { + disabled ||= loading; + } else if (loading) { + disabled = true; + } + return ( + <Button {...props} disabled={disabled}> + {loading ? spinner : children} + </Button> + ); +} |
