From e1c96dc4d1545a2124d9986c95a2767dff18dc4e Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Wed, 4 Sep 2024 20:24:24 +0200 Subject: [PATCH] feat: Loading Spinners --- apps/frontend/src/ui/components/Spinner.tsx | 36 +++++++++ .../src/ui/pages/browser/BrowserPackage.tsx | 73 +++++++++++-------- 2 files changed, 77 insertions(+), 32 deletions(-) create mode 100644 apps/frontend/src/ui/components/Spinner.tsx diff --git a/apps/frontend/src/ui/components/Spinner.tsx b/apps/frontend/src/ui/components/Spinner.tsx new file mode 100644 index 00000000..c28be54a --- /dev/null +++ b/apps/frontend/src/ui/components/Spinner.tsx @@ -0,0 +1,36 @@ +import { type JSX, type ParentProps, Suspense, splitProps } from 'solid-js'; + +export interface SpinnerProps extends JSX.HTMLAttributes { + +}; + +// https://cssloaders.github.io/ +function Spinner(props: SpinnerProps) { + const [split, rest] = splitProps(props, ['class']); + + return ( +
+ ); +} + +export default Spinner; + +export type SuspenseSpinnerProps = ParentProps & SpinnerProps; + +Spinner.Suspense = function SuspenseSpinner(props: SuspenseSpinnerProps) { + const [split, rest] = splitProps(props, ['children']); + + return ( + + +
+ )} + > + {split.children} + + ); +}; diff --git a/apps/frontend/src/ui/pages/browser/BrowserPackage.tsx b/apps/frontend/src/ui/pages/browser/BrowserPackage.tsx index 794e2040..87cc486a 100644 --- a/apps/frontend/src/ui/pages/browser/BrowserPackage.tsx +++ b/apps/frontend/src/ui/pages/browser/BrowserPackage.tsx @@ -15,6 +15,8 @@ import SteveHead from '~assets/images/steve.png'; import usePromptOpener from '~ui/hooks/usePromptOpener'; import Link from '~ui/components/base/Link'; import usePagination from '~ui/hooks/usePagination'; +import Spinner from '~ui/components/Spinner'; +import AnimatedRoutes from '~ui/components/AnimatedRoutes'; interface BrowserModParams extends Params { id: string; @@ -74,17 +76,16 @@ function BrowserPackage(props: ParentProps) { ]; return ( - <> -
+ +
Loading...
} children={( <> -
-
+
+
{link => ( @@ -94,17 +95,23 @@ function BrowserPackage(props: ParentProps) {
- - {/* */} - {props.children} - {/* */} - +
+ + +
+ + {props.children} + +
+
+
+
)} />
- + ); } @@ -122,7 +129,7 @@ function BrowserSidebar(props: { package: ManagedPackage; authors: ManagedUser[] const promptOpen = usePromptOpener(); return ( -
+
{`Icon @@ -389,11 +396,11 @@ function BrowserPackageVersions() { createEffect(on(() => page(), () => { refetch(); - container.parentElement?.scrollIntoView({ behavior: 'smooth' }); + container.parentElement?.parentElement?.scrollIntoView({ behavior: 'smooth' }); })); return ( -
+

Versions - Page @@ -404,26 +411,28 @@ function BrowserPackageVersions() {

- - - - + + {version => } + + +
+ + + + + - - - - - - + + + + + + + - - - {version => } - - -
- NameGame VersionLoaderCreatedDownloads -
NameGame VersionLoaderCreatedDownloads +
+
+