From 084e0efdd3ae2e8d160a1b03b17dbf509493e3d2 Mon Sep 17 00:00:00 2001 From: dennishendriksen Date: Wed, 20 Mar 2024 21:00:44 +0100 Subject: [PATCH 1/3] bump solid router 0.9.1 to 0.13.1, lazy load route components, resize logo --- vip-web-frontend/package.json | 2 +- vip-web-frontend/pnpm-lock.yaml | 10 +- vip-web-frontend/src/App.tsx | 51 +++----- vip-web-frontend/src/assets/img/logo.png | Bin 0 -> 3907 bytes .../src/assets/img/molgenis_logo_white.png | Bin 37457 -> 0 bytes .../src/components/ErrorNotification.tsx | 16 --- .../src/components/LoginModal.tsx | 117 +++++++++--------- vip-web-frontend/src/components/Navbar.tsx | 7 +- .../src/components/bulma/modal.tsx | 14 +++ .../src/components/bulma/notification.tsx | 17 +++ vip-web-frontend/src/index.tsx | 26 +++- vip-web-frontend/src/store/store.tsx | 7 +- vip-web-frontend/src/views/Home.tsx | 4 +- vip-web-frontend/src/views/JobCloneForm.tsx | 20 +-- vip-web-frontend/src/views/JobCreateForm.tsx | 12 +- vip-web-frontend/src/views/Jobs.tsx | 4 +- vip-web-frontend/src/views/VcfCreate.tsx | 4 +- vip-web-frontend/src/views/data/JobData.tsx | 11 -- vip-web-frontend/src/views/data/VcfData.tsx | 15 --- vip-web-frontend/src/views/data/data.tsx | 6 + 20 files changed, 170 insertions(+), 173 deletions(-) create mode 100644 vip-web-frontend/src/assets/img/logo.png delete mode 100644 vip-web-frontend/src/assets/img/molgenis_logo_white.png delete mode 100644 vip-web-frontend/src/components/ErrorNotification.tsx create mode 100644 vip-web-frontend/src/components/bulma/modal.tsx create mode 100644 vip-web-frontend/src/components/bulma/notification.tsx delete mode 100644 vip-web-frontend/src/views/data/JobData.tsx delete mode 100644 vip-web-frontend/src/views/data/VcfData.tsx create mode 100644 vip-web-frontend/src/views/data/data.tsx diff --git a/vip-web-frontend/package.json b/vip-web-frontend/package.json index 3ea9abb3..dec689d0 100644 --- a/vip-web-frontend/package.json +++ b/vip-web-frontend/package.json @@ -49,7 +49,7 @@ "@creativebulma/bulma-tagsinput": "^1.0.3", "@fortawesome/fontawesome-svg-core": "^6.5.1", "@fortawesome/free-solid-svg-icons": "^6.5.1", - "@solidjs/router": "^0.9.1", + "@solidjs/router": "^0.13.1", "axios": "^1.6.8", "bulma": "^0.9.4", "solid-js": "^1.8.15" diff --git a/vip-web-frontend/pnpm-lock.yaml b/vip-web-frontend/pnpm-lock.yaml index 9cb84af5..bdf1617f 100644 --- a/vip-web-frontend/pnpm-lock.yaml +++ b/vip-web-frontend/pnpm-lock.yaml @@ -15,8 +15,8 @@ dependencies: specifier: ^6.5.1 version: 6.5.1 '@solidjs/router': - specifier: ^0.9.1 - version: 0.9.1(solid-js@1.8.15) + specifier: ^0.13.1 + version: 0.13.1(solid-js@1.8.15) axios: specifier: ^1.6.8 version: 1.6.8 @@ -780,10 +780,10 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@solidjs/router@0.9.1(solid-js@1.8.15): - resolution: {integrity: sha512-kRY75piOQsyoH75E/RP6lr7uVGFCjeeCCCJx7Z2D1Vc6+I1yFQjLCvE+6agXGwqDoWi6vbETP1g7gmp/L1mNLg==} + /@solidjs/router@0.13.1(solid-js@1.8.15): + resolution: {integrity: sha512-Rz5Lf0ssWMuN+Wm2GFO0vwZoO/KSwYFSuCUzWrRAvje5M0ZYZrMk5FZxuzdJT+zg8KuqWJQlRALks5E0r+FjAA==} peerDependencies: - solid-js: ^1.8.4 + solid-js: ^1.8.6 dependencies: solid-js: 1.8.15 dev: false diff --git a/vip-web-frontend/src/App.tsx b/vip-web-frontend/src/App.tsx index 2d536108..b33abfcf 100644 --- a/vip-web-frontend/src/App.tsx +++ b/vip-web-frontend/src/App.tsx @@ -1,20 +1,17 @@ -import { Component, createSignal, onMount, Show } from "solid-js"; -import { Route, Routes, useNavigate } from "@solidjs/router"; -import { Home } from "./views/Home"; -import { Jobs } from "./views/Jobs.tsx"; -import { JobCreateForm } from "./views/JobCreateForm.tsx"; -import VcfData from "./views/data/VcfData.tsx"; -import JobData from "./views/data/JobData.tsx"; -import { JobCloneForm } from "./views/JobCloneForm.tsx"; -import { LoginModal } from "./components/LoginModal.tsx"; +import { createSignal, onMount, ParentComponent, Show } from "solid-js"; +import { useNavigate } from "@solidjs/router"; import { useStore } from "./store/store.tsx"; import { User } from "./api/Api.ts"; -import { VcfCreate } from "./views/VcfCreate.tsx"; import { Navbar } from "./components/Navbar.tsx"; -import { Error, ErrorNotification } from "./components/ErrorNotification.tsx"; +import Notification from "./components/bulma/notification.tsx"; import api from "./api/ApiClient.ts"; +import LoginModal from "./components/LoginModal.tsx"; -const App: Component = () => { +export type Error = { + message: string; +}; + +export const App: ParentComponent = (props) => { const navigate = useNavigate(); const [, actions] = useStore(); const [isModalOpen, setIsModalOpen] = createSignal(false); @@ -54,28 +51,16 @@ const App: Component = () => { <> setIsModalOpen(true)} onLogout={() => void handleLogout()} /> - {(error) => setError()} />} + {(error) => ( + setError()}> + {error.message} + + )} + +
{props.children}
+ + setIsModalOpen(false)} onLogIn={(user: User) => handleLogin(user)} /> -
- - } /> - - } /> - - - } /> - } /> - } /> - - -
- setIsModalOpen(false)} - onLogIn={(user: User) => handleLogin(user)} - /> ); }; - -export default App; diff --git a/vip-web-frontend/src/assets/img/logo.png b/vip-web-frontend/src/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e142ae2cfab70913b8df085aceb77d7c8281ef4e GIT binary patch literal 3907 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 diff --git a/vip-web-frontend/src/components/ErrorNotification.tsx b/vip-web-frontend/src/components/ErrorNotification.tsx deleted file mode 100644 index 1536ae5c..00000000 --- a/vip-web-frontend/src/components/ErrorNotification.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { Component } from "solid-js"; - -export type Error = { - message: string; -}; -export const ErrorNotification: Component<{ - error: Error; - onClose: () => void; -}> = (props) => { - return ( -
-
- ); -}; diff --git a/vip-web-frontend/src/components/LoginModal.tsx b/vip-web-frontend/src/components/LoginModal.tsx index 749ac904..d650ee72 100644 --- a/vip-web-frontend/src/components/LoginModal.tsx +++ b/vip-web-frontend/src/components/LoginModal.tsx @@ -2,9 +2,9 @@ import { Component, createSignal, Show } from "solid-js"; import { Login, User } from "../api/Api.ts"; import api from "../api/ApiClient.ts"; import { createStore } from "solid-js/store"; +import Modal from "./bulma/modal.tsx"; -export const LoginModal: Component<{ - active: boolean; +const LoginModal: Component<{ onClose: () => void; onLogIn: (user: User) => void; }> = (props) => { @@ -30,73 +30,72 @@ export const LoginModal: Component<{ }; return ( -
-