diff --git a/blog.html b/blog.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/router/examples/routing_update.rs b/docs/router/examples/routing_update.rs index d77e34738..35097dbaf 100644 --- a/docs/router/examples/routing_update.rs +++ b/docs/router/examples/routing_update.rs @@ -29,9 +29,9 @@ fn app(cx: Scope) -> Element { render! { Router { config: || RouterConfig::default().on_update(|state|{ - (state.current() == Route::Index {}).then(|| { + (state.current() == Route::Index {}).then_some( NavigationTarget::Internal(Route::Home {}) - }) + ) }) } } diff --git a/examples/crm.rs b/examples/crm.rs index abdb72c4b..e26f5f724 100644 --- a/examples/crm.rs +++ b/examples/crm.rs @@ -1,8 +1,5 @@ //! Tiny CRM: A port of the Yew CRM example to Dioxus. #![allow(non_snake_case)] - -use std::sync::{Arc, Mutex}; - use dioxus::prelude::*; use dioxus_router::prelude::*; @@ -10,6 +7,17 @@ fn main() { dioxus_desktop::launch(App); } +#[derive(Routable, Clone)] +#[rustfmt::skip] +enum Route { + #[route("/")] + ClientList {}, + #[route("/new")] + ClientAdd {}, + #[route("/settings")] + Settings {}, +} + #[derive(Clone, Debug, Default)] pub struct Client { pub first_name: String, @@ -17,22 +25,10 @@ pub struct Client { pub description: String, } -type ClientContext = Arc>>; +type ClientContext = Vec; fn App(cx: Scope) -> Element { - use_router(cx, &RouterConfiguration::default, &|| { - Segment::content(comp(ClientList)) - .fixed( - "new", - Route::content(comp(ClientAdd)).name::(), - ) - .fixed( - "settings", - Route::content(comp(Settings)).name::(), - ) - }); - - use_context_provider::(cx, Default::default); + use_shared_state_provider::(cx, Default::default); render! { link { @@ -50,28 +46,29 @@ fn App(cx: Scope) -> Element { h1 { "Dioxus CRM Example" } - Outlet { } + Router {} } } +#[inline_props] fn ClientList(cx: Scope) -> Element { - let clients = use_context::(cx).unwrap(); + let clients = use_shared_state::(cx).unwrap(); cx.render(rsx! { h2 { "List of Clients" } Link { - target: named::(), + target: Route::ClientAdd {}, class: "pure-button pure-button-primary", "Add Client" } Link { - target: named::(), + target: Route::Settings {}, class: "pure-button", "Settings" } - clients.lock().unwrap().iter().map(|client| rsx! { + clients.read().iter().map(|client| rsx! { div { class: "client", style: "margin-bottom: 50px", @@ -83,14 +80,14 @@ fn ClientList(cx: Scope) -> Element { }) } -struct ClientAddName; +#[inline_props] fn ClientAdd(cx: Scope) -> Element { - let clients = use_context::(cx).unwrap(); + let clients = use_shared_state::(cx).unwrap(); let first_name = use_state(cx, String::new); let last_name = use_state(cx, String::new); let description = use_state(cx, String::new); - let navigator = use_navigate(cx).unwrap(); + let navigator = use_navigator(cx); cx.render(rsx! { h2 { "Add new Client" } @@ -98,7 +95,7 @@ fn ClientAdd(cx: Scope) -> Element { form { class: "pure-form pure-form-aligned", onsubmit: move |_| { - let mut clients = clients.lock().unwrap(); + let mut clients = clients.write(); clients.push(Client { first_name: first_name.to_string(), @@ -106,7 +103,7 @@ fn ClientAdd(cx: Scope) -> Element { description: description.to_string(), }); - navigator.push(named::()); + navigator.push(Route::ClientList {}); }, fieldset { @@ -164,7 +161,7 @@ fn ClientAdd(cx: Scope) -> Element { "Save" } Link { - target: named::(), + target: Route::ClientList {}, class: "pure-button pure-button-primary red", "Cancel" } @@ -176,9 +173,9 @@ fn ClientAdd(cx: Scope) -> Element { }) } -struct SettingsName; +#[inline_props] fn Settings(cx: Scope) -> Element { - let clients = use_context::(cx).unwrap(); + let clients = use_shared_state::(cx).unwrap(); cx.render(rsx! { h2 { "Settings" } @@ -186,14 +183,14 @@ fn Settings(cx: Scope) -> Element { button { class: "pure-button pure-button-primary red", onclick: move |_| { - let mut clients = clients.lock().unwrap(); + let mut clients = clients.write(); clients.clear(); }, "Remove all Clients" } Link { - target: named::(), + target: Route::ClientList {}, class: "pure-button", "Go back" } diff --git a/examples/flat_router.rs b/examples/flat_router.rs index ab3f365dd..80764b9dd 100644 --- a/examples/flat_router.rs +++ b/examples/flat_router.rs @@ -17,13 +17,27 @@ fn main() { } fn app(cx: Scope) -> Element { - use_router(cx, &RouterConfiguration::default, &|| { - Segment::content(comp(Home)) - .fixed("games", comp(Games)) - .fixed("play", comp(Play)) - .fixed("settings", comp(Settings)) - }); + render! { + Router {} + } +} +#[derive(Routable, Clone)] +#[rustfmt::skip] +enum Route { + #[layout(Footer)] + #[route("/")] + Home {}, + #[route("/games")] + Games {}, + #[route("/play")] + Play {}, + #[route("/settings")] + Settings {}, +} + +#[inline_props] +fn Footer(cx: Scope) -> Element { render! { div { Outlet { } @@ -34,28 +48,32 @@ fn app(cx: Scope) -> Element { nav { ul { - li { Link { target: "/", "Home" } } - li { Link { target: "/games", "Games" } } - li { Link { target: "/play", "Play" } } - li { Link { target: "/settings", "Settings" } } + li { Link { target: Route::Home {}, "Home" } } + li { Link { target: Route::Games {}, "Games" } } + li { Link { target: Route::Play {}, "Play" } } + li { Link { target: Route::Settings {}, "Settings" } } } } } } } +#[inline_props] fn Home(cx: Scope) -> Element { render!("Home") } +#[inline_props] fn Games(cx: Scope) -> Element { render!("Games") } +#[inline_props] fn Play(cx: Scope) -> Element { render!("Play") } +#[inline_props] fn Settings(cx: Scope) -> Element { render!("Settings") } diff --git a/examples/link.rs b/examples/link.rs index b6dd43412..4a099be01 100644 --- a/examples/link.rs +++ b/examples/link.rs @@ -8,10 +8,6 @@ fn main() { } fn app(cx: Scope) -> Element { - use_router(cx, &RouterConfiguration::default, &|| { - Segment::content(comp(Home)).fixed("settings", comp(Settings)) - }); - cx.render(rsx! ( div { p { @@ -27,20 +23,39 @@ fn app(cx: Scope) -> Element { } } div { - Outlet { } - p { "----"} - ul { - Link { target: "/", li { "Router link to home" } }, - Link { target: "/settings", li { "Router link to settings" } }, - } + Router {} } )) } +#[derive(Routable, Clone)] +#[rustfmt::skip] +enum Route { + #[layout(Header)] + #[route("/")] + Home {}, + #[route("/settings")] + Settings {}, +} + +#[inline_props] +fn Header(cx: Scope) -> Element { + render! { + h1 { "Your app here" } + ul { + li { Link { target: Route::Home {}, "home" } } + li { Link { target: Route::Settings {}, "settings" } } + } + Outlet {} + } +} + +#[inline_props] fn Home(cx: Scope) -> Element { render!(h1 { "Home" }) } +#[inline_props] fn Settings(cx: Scope) -> Element { render!(h1 { "Settings" }) } diff --git a/examples/simple_desktop.rs b/examples/simple_desktop.rs index aa6a505b6..ce31979c7 100644 --- a/examples/simple_desktop.rs +++ b/examples/simple_desktop.rs @@ -6,7 +6,6 @@ use dioxus_router::prelude::*; fn main() { simple_logger::SimpleLogger::new() .with_level(log::LevelFilter::Debug) - .with_module_level("dioxus_router", log::LevelFilter::Trace) .with_module_level("dioxus", log::LevelFilter::Trace) .init() .unwrap(); @@ -14,58 +13,69 @@ fn main() { } fn app(cx: Scope) -> Element { - use_router(cx, &RouterConfiguration::default, &|| { - Segment::content(comp(Home)) - .fixed( - "blog", - Route::empty().nested( - Segment::content(comp(BlogList)).catch_all((comp(BlogPost), PostId {})), - ), - ) - .fixed("oranges", comp(Oranges)) - .fixed("apples", "/oranges") - }); - render! { - h1 { "Your app here" } - ul { - li { Link { target: "/", "home" } } - li { Link { target: "/blog", "blog" } } - li { Link { target: "/blog/tim", "tims' blog" } } - li { Link { target: "/blog/bill", "bills' blog" } } - li { Link { target: "/blog/james", "james amazing' blog" } } - li { Link { target: "/apples", "go to apples" } } - } - Outlet { } + Router {} } } +#[derive(Routable, Clone)] +#[rustfmt::skip] +enum Route { + #[layout(NavBar)] + #[route("/")] + Home {}, + #[nest("/new")] + #[route("/")] + BlogList {}, + #[route("/:post")] + BlogPost { + post: String, + }, + #[end_nest] + #[route("/oranges")] + Oranges {}, +} + +#[inline_props] +fn NavBar(cx: Scope) -> Element { + render! { + h1 { "Your app here" } + ul { + li { Link { target: Route::Home {}, "home" } } + li { Link { target: Route::BlogList {}, "blog" } } + li { Link { target: Route::BlogPost { post: "tim".into() }, "tims' blog" } } + li { Link { target: Route::BlogPost { post: "bill".into() }, "bills' blog" } } + li { Link { target: Route::BlogPost { post: "james".into() }, "james amazing' blog" } } + } + Outlet {} + } +} + +#[inline_props] fn Home(cx: Scope) -> Element { log::debug!("rendering home {:?}", cx.scope_id()); render! { h1 { "Home" } } } +#[inline_props] fn BlogList(cx: Scope) -> Element { log::debug!("rendering blog list {:?}", cx.scope_id()); render! { div { "Blog List" } } } -struct PostId; -fn BlogPost(cx: Scope) -> Element { - let Some(id) = use_route(cx)?.parameter::() else { - return render!(div { "No blog post id" }); - }; - - log::debug!("rendering blog post {}", id); +#[inline_props] +fn BlogPost(cx: Scope, post: String) -> Element { + log::debug!("rendering blog post {}", post); render! { div { - h3 { "blog post: {id:?}" } - Link { target: "/blog/", "back to blog list" } + h3 { "blog post: {post}" } + Link { target: Route::BlogList {}, "back to blog list" } } } } +#[inline_props] fn Oranges(cx: Scope) -> Element { render!("Oranges are not apples!") } diff --git a/packages/core-macro/tests/ifmt.rs b/packages/core-macro/tests/ifmt.rs index 3e03d37a9..cec12a109 100644 --- a/packages/core-macro/tests/ifmt.rs +++ b/packages/core-macro/tests/ifmt.rs @@ -21,7 +21,7 @@ fn formatting_compiles() { // function calls in formatings work assert_eq!( format_args_f!("{x.borrow():?}").to_string(), - format!("{:?}", x.borrow()) + format!("{:?}", x) ); // allows duplicate format args diff --git a/packages/fullstack/src/server_fn.rs b/packages/fullstack/src/server_fn.rs index da7311263..21779d7d8 100644 --- a/packages/fullstack/src/server_fn.rs +++ b/packages/fullstack/src/server_fn.rs @@ -18,7 +18,7 @@ static REGISTERED_SERVER_FUNCTIONS: once_cell::sync::Lazy< /// The registry of all Dioxus server functions. pub struct DioxusServerFnRegistry; -#[cfg(any(feature = "ssr"))] +#[cfg(feature = "ssr")] impl server_fn::ServerFunctionRegistry for DioxusServerFnRegistry { type Error = ServerRegistrationFnError; diff --git a/packages/rink/src/lib.rs b/packages/rink/src/lib.rs index 8ab53f833..c39c7ad01 100644 --- a/packages/rink/src/lib.rs +++ b/packages/rink/src/lib.rs @@ -21,10 +21,9 @@ use std::{ }; use std::{rc::Rc, sync::RwLock}; use style_attributes::StyleModifier; -use taffy::Taffy; pub use taffy::{geometry::Point, prelude::*}; use tokio::select; -use tui::{backend::CrosstermBackend, layout::Rect, Terminal}; +use tui::{backend::CrosstermBackend, Terminal}; mod config; mod focus; @@ -160,8 +159,8 @@ pub fn render( if !to_rerender.is_empty() || updated { updated = false; - fn resize(dims: Rect, taffy: &mut Taffy, rdom: &RealDom) { - let width = screen_to_layout_space(dims.width); + fn resize(dims: tui::layout::Rect, taffy: &mut Taffy, rdom: &RealDom) { + let width: f32 = screen_to_layout_space(dims.width); let height = screen_to_layout_space(dims.height); let root_node = rdom .get(rdom.root_id()) @@ -202,7 +201,7 @@ pub fn render( } else { let rdom = rdom.read().unwrap(); resize( - Rect { + tui::layout::Rect { x: 0, y: 0, width: 1000, diff --git a/packages/router/README.md b/packages/router/README.md index fbd2af52f..13437bf56 100644 --- a/packages/router/README.md +++ b/packages/router/README.md @@ -30,11 +30,10 @@ expressiveness. use dioxus::prelude::*; use dioxus_router::prelude::*; -use serde::{Deserialize, Serialize}; use std::str::FromStr; #[rustfmt::skip] -#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Routable)] +#[derive(Clone, Debug, PartialEq, Routable)] enum Route { #[nest("/blog")] #[layout(Blog)] diff --git a/packages/router/src/components/history_buttons.rs b/packages/router/src/components/history_buttons.rs index f8332df64..a09bc66b6 100644 --- a/packages/router/src/components/history_buttons.rs +++ b/packages/router/src/components/history_buttons.rs @@ -24,8 +24,7 @@ pub struct GenericHistoryButtonProps<'a> { /// ```rust /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; -/// # use serde::{Deserialize, Serialize}; -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, @@ -98,8 +97,7 @@ pub fn GenericGoBackButton<'a, R: Routable>( /// ```rust /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; -/// # use serde::{Deserialize, Serialize}; -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/components/link.rs b/packages/router/src/components/link.rs index fcc7fdc2d..4e71dacb6 100644 --- a/packages/router/src/components/link.rs +++ b/packages/router/src/components/link.rs @@ -83,9 +83,8 @@ impl Debug for GenericLinkProps<'_, R> { /// ```rust /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; -/// # use serde::{Deserialize, Serialize}; /// -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/components/outlet.rs b/packages/router/src/components/outlet.rs index e7977e6a4..b358f5180 100644 --- a/packages/router/src/components/outlet.rs +++ b/packages/router/src/components/outlet.rs @@ -15,9 +15,8 @@ use dioxus::prelude::*; /// # Example /// ```rust /// # use dioxus::prelude::*; -/// # use serde::{Deserialize, Serialize}; /// # use dioxus_router::prelude::*; -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// #[rustfmt::skip] /// enum Route { /// #[nest("/wrap")] @@ -59,10 +58,7 @@ use dioxus::prelude::*; /// # fn App(cx: Scope) -> Element { /// # render! { /// # Router { -/// # config: RouterConfiguration { -/// # history: Box::new(MemoryHistory::with_initial_path("/wrap").unwrap()), -/// # ..Default::default() -/// # } +/// # config: || RouterConfig::default().history(MemoryHistory::with_initial_path(Route::Child {})) /// # } /// # } /// # } diff --git a/packages/router/src/contexts/router.rs b/packages/router/src/contexts/router.rs index a94fb5167..58a99f19d 100644 --- a/packages/router/src/contexts/router.rs +++ b/packages/router/src/contexts/router.rs @@ -22,17 +22,6 @@ struct MutableRouterState where R: Routable, { - /// Whether there is a previous page to navigate back to. - /// - /// Even if this is [`true`], there might not be a previous page. However, it is nonetheless - /// safe to tell the router to go back. - can_go_back: bool, - /// Whether there is a future page to navigate forward to. - /// - /// Even if this is [`true`], there might not be a future page. However, it is nonetheless safe - /// to tell the router to go forward. - can_go_forward: bool, - /// The current prefix. prefix: Option, @@ -76,8 +65,6 @@ where R: Clone, { let state = Arc::new(RwLock::new(MutableRouterState { - can_go_back: false, - can_go_forward: false, prefix: Default::default(), history: cfg.history, unresolved_error: None, @@ -112,13 +99,13 @@ where /// Check whether there is a previous page to navigate back to. #[must_use] pub fn can_go_back(&self) -> bool { - self.state.read().unwrap().can_go_back + self.state.read().unwrap().history.can_go_back() } /// Check whether there is a future page to navigate forward to. #[must_use] pub fn can_go_forward(&self) -> bool { - self.state.read().unwrap().can_go_forward + self.state.read().unwrap().history.can_go_forward() } /// Go back to the previous location. diff --git a/packages/router/src/history/memory.rs b/packages/router/src/history/memory.rs index ce1ae72a2..51afb818b 100644 --- a/packages/router/src/history/memory.rs +++ b/packages/router/src/history/memory.rs @@ -19,13 +19,12 @@ where /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -33,7 +32,7 @@ where /// OtherPage {}, /// } /// - /// let mut history = MemoryHistory::::with_initial_path(Route::Index {}).unwrap(); + /// let mut history = MemoryHistory::::with_initial_path(Route::Index {}); /// assert_eq!(history.current_route(), Route::Index {}); /// assert_eq!(history.can_go_back(), false); /// ``` diff --git a/packages/router/src/history/mod.rs b/packages/router/src/history/mod.rs index c427b1054..21c7b9e92 100644 --- a/packages/router/src/history/mod.rs +++ b/packages/router/src/history/mod.rs @@ -47,13 +47,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -86,11 +85,10 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -113,13 +111,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -146,13 +143,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -180,13 +176,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -214,13 +209,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, @@ -244,13 +238,12 @@ pub trait HistoryProvider { /// /// ```rust /// # use dioxus_router::prelude::*; - /// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { todo!() } /// # #[inline_props] /// # fn OtherPage(cx: Scope) -> Element { todo!() } - /// #[derive(Clone, Serialize, Deserialize, Routable, Debug, PartialEq)] + /// #[derive(Clone, Routable, Debug, PartialEq)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/hooks/use_navigator.rs b/packages/router/src/hooks/use_navigator.rs index 545e8f947..5cd0a0e83 100644 --- a/packages/router/src/hooks/use_navigator.rs +++ b/packages/router/src/hooks/use_navigator.rs @@ -12,8 +12,7 @@ use crate::{ /// ```rust /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; -/// # use serde::{Deserialize, Serialize}; -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/hooks/use_route.rs b/packages/router/src/hooks/use_route.rs index 75f6c1332..a0ba34ce8 100644 --- a/packages/router/src/hooks/use_route.rs +++ b/packages/router/src/hooks/use_route.rs @@ -17,10 +17,9 @@ use crate::utils::use_router_internal::use_router_internal; /// # Example /// ```rust /// # use dioxus::prelude::*; -/// # use serde::{Deserialize, Serialize}; /// # use dioxus_router::{prelude::*}; /// -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/navigation.rs b/packages/router/src/navigation.rs index f9f38cbac..7d3e44352 100644 --- a/packages/router/src/navigation.rs +++ b/packages/router/src/navigation.rs @@ -19,12 +19,11 @@ pub enum NavigationTarget { /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; /// # use dioxus_router::navigation::NavigationTarget; - /// # use serde::{Deserialize, Serialize}; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { /// # todo!() /// # } - /// #[derive(Clone, Serialize, Deserialize, Routable, PartialEq, Debug)] + /// #[derive(Clone, Routable, PartialEq, Debug)] /// enum Route { /// #[route("/")] /// Index {}, @@ -40,12 +39,11 @@ pub enum NavigationTarget { /// # use dioxus::prelude::*; /// # use dioxus_router::prelude::*; /// # use dioxus_router::navigation::NavigationTarget; - /// # use serde::{Deserialize, Serialize}; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { /// # todo!() /// # } - /// #[derive(Clone, Serialize, Deserialize, Routable, PartialEq, Debug)] + /// #[derive(Clone, Routable, PartialEq, Debug)] /// enum Route { /// #[route("/")] /// Index {}, diff --git a/packages/router/src/router_cfg.rs b/packages/router/src/router_cfg.rs index 4422f4295..441f41d1b 100644 --- a/packages/router/src/router_cfg.rs +++ b/packages/router/src/router_cfg.rs @@ -12,18 +12,17 @@ use crate::prelude::*; /// This implements [`Default`] and follows the builder pattern, so you can use it like this: /// ```rust,no_run /// # use dioxus_router::prelude::*; -/// # use serde::{Deserialize, Serialize}; /// # use dioxus::prelude::*; /// # #[inline_props] /// # fn Index(cx: Scope) -> Element { /// # todo!() /// # } -/// #[derive(Clone, Serialize, Deserialize, Routable)] +/// #[derive(Clone, Routable)] /// enum Route { /// #[route("/")] /// Index {}, /// } -/// let cfg = RouterConfig::default().history(WebHistory::default()); +/// let cfg = RouterConfig::default().history(WebHistory::::default()); /// ``` pub struct RouterConfig { pub(crate) failure_external_navigation: fn(Scope) -> Element, diff --git a/packages/router/tests/via_ssr/link.rs b/packages/router/tests/via_ssr/link.rs index 3b0730435..882df71e0 100644 --- a/packages/router/tests/via_ssr/link.rs +++ b/packages/router/tests/via_ssr/link.rs @@ -34,7 +34,7 @@ where render! { h1 { "App" } GenericRouter:: { - config: || RouterConfiguration::default().history(MemoryHistory::default()) + config: || RouterConfig::default().history(MemoryHistory::default()) } } } diff --git a/packages/router/tests/via_ssr/outlet.rs b/packages/router/tests/via_ssr/outlet.rs index 3378b5ddd..ba8eb8873 100644 --- a/packages/router/tests/via_ssr/outlet.rs +++ b/packages/router/tests/via_ssr/outlet.rs @@ -39,8 +39,8 @@ fn prepare(path: impl Into) -> VirtualDom { h1 { "App" } Router { config: { - let path = cx.props.path.clone(); - move || RouterConfiguration::default().history(MemoryHistory::with_initial_path(path).unwrap()) + let path = cx.props.path.parse().unwrap(); + move || RouterConfig::default().history(MemoryHistory::with_initial_path(path)) } } } diff --git a/packages/router/tests/web_router.rs b/packages/router/tests/web_router.rs index 75bff944a..26fbe7d2c 100644 --- a/packages/router/tests/web_router.rs +++ b/packages/router/tests/web_router.rs @@ -1,19 +1,15 @@ #![cfg(feature = "wasm_test")] #![allow(non_snake_case)] -use std::sync::Arc; - use dioxus::prelude::*; use dioxus_router::prelude::*; use gloo::utils::document; -use serde::{Deserialize, Serialize}; -use std::str::FromStr; use wasm_bindgen_test::*; wasm_bindgen_test_configure!(run_in_browser); #[rustfmt::skip] -#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, Routable)] +#[derive(Clone, Debug, PartialEq, Routable)] enum Route { #[route("/")] Home {}, @@ -25,12 +21,7 @@ enum Route { } fn App(cx: Scope) -> Element { - render!(Router { - config: RouterConfiguration { - history: Box::>::default(), - ..Default::default() - } - }) + render!(Router {}) } #[inline_props]