Create back button #53

Merged
BobdaFett merged 3 commits from feat/back-button into main 2026-01-17 02:40:51 +00:00
6 changed files with 248 additions and 9 deletions

No files matched your search

Generated
+217 -1
View File
@@ -1548,6 +1548,211 @@ dependencies = [
"cc",
]
[[package]]
name = "icondata"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "412c95f764f89aad1a8505aa4273d931b66d5a26d1e6609a37243784a9128ad9"
dependencies = [
"icondata_ai",
"icondata_bi",
"icondata_bs",
"icondata_cg",
"icondata_ch",
"icondata_core",
"icondata_fa",
"icondata_fi",
"icondata_hi",
"icondata_im",
"icondata_io",
"icondata_lu",
"icondata_mdi",
"icondata_oc",
"icondata_ri",
"icondata_si",
"icondata_tb",
"icondata_ti",
"icondata_vs",
"icondata_wi",
]
[[package]]
name = "icondata_ai"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "153b31389f611b00f7392c2f79b5bb8332e30a5eee5bffd66fc4fe767c1de59c"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_bi"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f178e5643b61ddf06b4b0c68e0fa5674cbd750be9414e5e02e2e3dd740d9924"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_bs"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a8a72809ffc53e8a61dd19079693dbc0478b7b27e09ca1c1e81c04e283f485"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_cg"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db064a49229a38dd5bae614b194adc5e3ee5351f5c5d9e539cd159bf84a92539"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_ch"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "998079d1d0673fbb1bd3753ef714e5668fb5f595ffa9bc89eb5b01b6b4f75ca5"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_core"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c97be924215abd5e630d84e95a47c710138a6559b4c55039f4f33aa897fa859"
[[package]]
name = "icondata_fa"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0108c409b3c06be1124a377b827922ad6091cb9eb467d521ea1cb3b1c3d7a76"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_fi"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0656636c0e5c070e8501667f287e1751ea4bec9945eed3c66ac472511632b9b0"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_hi"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f8ba6ed6e155898d296fc5d4127eb651b667643368698dd02b1e9383eab3eef"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_im"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e723800b6a6067a40cf311a9135d739412323f03f88e826a20f1249933187aa5"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_io"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7886629becd205d6f035dc084b68d2b9cc5ba8b03714f2c533c921ed98c6525a"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_lu"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f25663a6cc5371e9e33c98bab870f4aa2fd68c88853f1467c8fccfaf112782b1"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_mdi"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9517acba09219ff7caebd797b2db68f09b3621c6bc848fe9894f2d30e4f6cdb"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_oc"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "088863ff0b1dba4a6e8b3fec797be6ed8503c2d44fd47107f7f6da3abcb6cc87"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_ri"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b1851b5662f59b888ba24595886a9e6b6f5c11151b3640ee1875810f7544865"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_si"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68943eec8a766d8e5213385610aa47bf0bec5ddb76fdcf819721a05fb5c8f6c5"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_tb"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16f08d4ae577034728dc8856d3bdbced6a406aadfd7386e0e24e5efb7be98685"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_ti"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a26660305b27c2831c8e701434e55f6fb589c12bdd43e5ec1e2ae270dbeb185e"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_vs"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe2547385392ec350a5a7f80c463767b1d7f7a37cf1431cac2754918a4c1b6a9"
dependencies = [
"icondata_core",
]
[[package]]
name = "icondata_wi"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "352f5a5df000eabb35894cec75048e97a46d738ebdaf1e060670b0cf473a2419"
dependencies = [
"icondata_core",
]
[[package]]
name = "icu_collections"
version = "2.1.1"
@@ -1902,6 +2107,16 @@ dependencies = [
"walkdir",
]
[[package]]
name = "leptos_icons"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "274959df1a852fc431b03f27d9cd3129fb0f8cca9c8d383e4d668f62543cbec9"
dependencies = [
"icondata_core",
"leptos",
]
[[package]]
name = "leptos_integration_utils"
version = "0.8.7"
@@ -2810,14 +3025,15 @@ dependencies = [
"base64 0.22.1",
"chrono",
"console_error_panic_hook",
"icondata",
"leptos",
"leptos_animate",
"leptos_axum",
"leptos_icons",
"leptos_meta",
"leptos_oidc",
"leptos_router",
"macros",
"regex",
"serde",
"serde_dynamo",
"tokio",
+2 -1
View File
@@ -23,11 +23,12 @@ uuid = { version = "1.17.0", features = ["serde", "v4", "js"] }
leptos_oidc = "0.9.0"
base64 = "0.22.1"
chrono = "0.4.42"
regex = "1.11.2"
leptos_animate = "0.1.9"
macros = { path = "./macros" }
traits = { path = "./traits" }
icondata = { version = "0.7.0", features = ["font-awesome"] }
leptos_icons = "0.7.1"
[features]
default = ["ssr"]
+26 -4
View File
@@ -1,5 +1,6 @@
use leptos::prelude::*;
use leptos_router::hooks::use_navigate;
use leptos_icons::Icon;
/// # Banner Component
///
@@ -23,17 +24,24 @@ pub fn Banner(
#[prop(into)]
logo: String,
/// The route that the navigates user to a page (home page).
#[prop(into, default = String::from("/"))]
path: String,
#[prop(into, optional)]
path: Signal<String>,
) -> impl IntoView {
let navigate = use_navigate();
let on_click = move |_| navigate(&path, Default::default());
let show_back = Signal::derive(move || !path.get().is_empty());
let on_click = move |_| {
let path = path.get();
if !path.is_empty() {
navigate(&path, Default::default());
}
};
view! {
<div class="mx-auto">
<div class="bg-red-900 shadow-lg shadow-[inset_0_2px_4px_0_rgba(0,0,0,0.3),0_4px_6px_-1px_rgba(127,29,29,0.3),0_2px_4px_-1px_rgba(127,29,29,0.2)]">
<div class="flex items-center gap-4 p-6">
<div class="flex flex-row items-center gap-4 p-6 pb-2">
<div class="flex-shrink-0">
<img
src=logo.clone()
@@ -46,6 +54,20 @@ pub fn Banner(
<h2 class="text-white text-2xl font-bold">{title.clone()}</h2>
</div>
</div>
<div
class="flex flex-row items-center gap-4"
class=("p-2", move || !show_back.get())
>
<Show when=move || show_back.get()>
<a
href=path
class="flex flex-row items-center gap-2 m-2 ml-14 text-gray-200 hover:underline"
>
<Icon icon=icondata::FaArrowLeftSolid />
<span>"Back to Dashboard"</span>
</a>
</Show>
</div>
</div>
</div>
}
+1 -1
View File
@@ -148,7 +148,7 @@ pub fn ProviderContactPage() -> impl IntoView {
// Display contact form.
view! {
<Banner title="R15 Scholarships" logo="/PHS_Stacked_Acronym.png" path="/" />
<Banner title="R15 Scholarships" logo="/PHS_Stacked_Acronym.png" path="/providers" />
<AuthLoaded fallback=Loading>
<Authenticated unauthenticated=UnauthenticatedPage>
<Suspense fallback=Loading>
+1 -1
View File
@@ -20,7 +20,7 @@ pub fn ProviderPortal() -> impl IntoView {
});
view! {
<Banner title="Provider Dashboard" logo="PHS_Stacked_Acronym.png" path="/" />
<Banner title="Provider Dashboard" logo="PHS_Stacked_Acronym.png" />
<AuthLoaded fallback=Loading>
<Authenticated unauthenticated=UnauthenticatedPage>
<div class="mx-auto px-6">
+1 -1
View File
@@ -40,7 +40,7 @@ pub fn ScholarshipInfoPage() -> impl IntoView {
// Remember that we only want to show the page after we've got authentication information
// and if there's data for us to use.
view! {
<Banner title="R15 Scholarships" logo="/PHS_Stacked_Acronym.png" path="/" />
<Banner title="R15 Scholarships" logo="/PHS_Stacked_Acronym.png" path="/providers" />
<ToastList>
<AuthLoaded fallback=Loading>
<Authenticated unauthenticated=UnauthenticatedPage>