feat: UI overhaul
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
actionlint check / actionlint check (pull_request) Successful in 20s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 10s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 32s
GitLeaks check / GitLeaks check (pull_request) Successful in 28s
hadolint check / hadolint check (pull_request) Successful in 42s
htmlhint check / htmlhint check (pull_request) Successful in 1m16s
markdownlint check / markdownlint check (pull_request) Successful in 53s
Prettier check / Prettier check (pull_request) Successful in 50s
ShellCheck check / ShellCheck check (pull_request) Successful in 39s
yamllint check / yamllint check (pull_request) Successful in 42s
Stylelint check / Stylelint check (pull_request) Successful in 44s
checkov check / checkov check (pull_request) Successful in 6m52s
Rust check / Rust check (pull_request) Successful in 33m33s
All checks were successful
conventional pull request title check / conventional pull request title check (pull_request) Successful in 6s
actionlint check / actionlint check (pull_request) Successful in 20s
conventional commit messages check / conventional commit messages check (pull_request) Successful in 10s
dotenv-linter check / dotenv-linter check (pull_request) Successful in 32s
GitLeaks check / GitLeaks check (pull_request) Successful in 28s
hadolint check / hadolint check (pull_request) Successful in 42s
htmlhint check / htmlhint check (pull_request) Successful in 1m16s
markdownlint check / markdownlint check (pull_request) Successful in 53s
Prettier check / Prettier check (pull_request) Successful in 50s
ShellCheck check / ShellCheck check (pull_request) Successful in 39s
yamllint check / yamllint check (pull_request) Successful in 42s
Stylelint check / Stylelint check (pull_request) Successful in 44s
checkov check / checkov check (pull_request) Successful in 6m52s
Rust check / Rust check (pull_request) Successful in 33m33s
This commit is contained in:
@@ -1,50 +0,0 @@
|
||||
use crate::components::bottom_panel::BottomPanel;
|
||||
use crate::components::form_open_button::FormOpenButton;
|
||||
use crate::components::sticky_bottom::StickyBottom;
|
||||
use crate::models::project::Project;
|
||||
use crate::models::task::Task;
|
||||
use crate::route::Route;
|
||||
use dioxus::core_macro::rsx;
|
||||
use dioxus::dioxus_core::Element;
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_free_icons::Icon;
|
||||
use dioxus_free_icons::icons::fa_solid_icons::FaCog;
|
||||
|
||||
#[component]
|
||||
pub(crate) fn Main() -> Element {
|
||||
let mut display_form = use_signal(|| false);
|
||||
let project_being_edited =
|
||||
use_context_provider::<Signal<Option<Project>>>(|| Signal::new(None));
|
||||
let task_being_edited = use_context_provider::<Signal<Option<Task>>>(|| Signal::new(None));
|
||||
|
||||
use_effect(move || {
|
||||
display_form.set(project_being_edited().is_some() || task_being_edited().is_some());
|
||||
});
|
||||
|
||||
rsx! {
|
||||
SuspenseBoundary {
|
||||
fallback: |_| {
|
||||
rsx! {
|
||||
div {
|
||||
class: "grow flex flex-col justify-center items-center",
|
||||
Icon {
|
||||
class: "animate-[spin_2000ms_linear_infinite]",
|
||||
icon: FaCog,
|
||||
height: 32,
|
||||
width: 32
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Outlet::<Route> {}
|
||||
}
|
||||
StickyBottom {
|
||||
FormOpenButton {
|
||||
opened: display_form,
|
||||
}
|
||||
BottomPanel {
|
||||
display_form: display_form,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
mod main;
|
||||
pub(crate) use main::Main;
|
||||
pub(crate) mod navigation;
|
||||
pub(crate) mod suspense;
|
||||
|
||||
38
src/layouts/navigation.rs
Normal file
38
src/layouts/navigation.rs
Normal file
@@ -0,0 +1,38 @@
|
||||
use crate::components::bottom_panel::BottomPanel;
|
||||
use crate::components::create_button::CreateButton;
|
||||
use crate::components::sticky_bottom::StickyBottom;
|
||||
use crate::components::task_form::LATEST_VISITED_CATEGORY;
|
||||
use crate::models::category::Category;
|
||||
use crate::route::Route;
|
||||
use dioxus::core_macro::rsx;
|
||||
use dioxus::dioxus_core::Element;
|
||||
use dioxus::prelude::*;
|
||||
|
||||
#[component]
|
||||
pub(crate) fn Navigation() -> Element {
|
||||
let current_route = use_route();
|
||||
use_effect(use_reactive(¤t_route, move |current_route| {
|
||||
*LATEST_VISITED_CATEGORY.write() = match current_route {
|
||||
Route::CategorySomedayMaybePage => Category::SomedayMaybe,
|
||||
Route::CategoryWaitingForPage => Category::WaitingFor(String::new()),
|
||||
Route::CategoryNextStepsPage => Category::NextSteps,
|
||||
Route::CategoryCalendarPage | Route::CategoryTodayPage => Category::Calendar {
|
||||
date: chrono::Local::now().date_naive(),
|
||||
reoccurrence: None,
|
||||
time: None,
|
||||
},
|
||||
_ => Category::Inbox,
|
||||
};
|
||||
}));
|
||||
|
||||
rsx! {
|
||||
div {
|
||||
class: "grow flex flex-col pb-36",
|
||||
Outlet::<Route> {}
|
||||
}
|
||||
StickyBottom {
|
||||
CreateButton {},
|
||||
BottomPanel {}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
src/layouts/suspense.rs
Normal file
28
src/layouts/suspense.rs
Normal file
@@ -0,0 +1,28 @@
|
||||
use crate::route::Route;
|
||||
use dioxus::core_macro::rsx;
|
||||
use dioxus::dioxus_core::Element;
|
||||
use dioxus::prelude::*;
|
||||
use dioxus_free_icons::Icon;
|
||||
use dioxus_free_icons::icons::fa_solid_icons::FaCog;
|
||||
|
||||
#[component]
|
||||
pub(crate) fn Suspense() -> Element {
|
||||
rsx! {
|
||||
SuspenseBoundary {
|
||||
fallback: |_| {
|
||||
rsx! {
|
||||
div {
|
||||
class: "grow flex flex-col justify-center items-center",
|
||||
Icon {
|
||||
class: "text-gray-500 animate-[spin_3000ms_linear_infinite]",
|
||||
icon: FaCog,
|
||||
height: 32,
|
||||
width: 32
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
Outlet::<Route> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user