switch to a Document trait and introduce Script/Head/Style/Meta components (#2635)

* switch to a Document trait and introduce Script/Head/Style/Meta components

* Fix desktop title

* Insert special elements into the head during the inital SSR render

* Make all head component attributes optional

* hydrate head elements

* improve the server streaming head warning

* Document fullstack head hydration approach

* deduplicate head elements by href

* move Link into head::Link

* document head components

* add meta and title examples

* Fix a few doc examples

* fix formatting

* Add title to playwright tests

* serde is optional on web, but it is enabled by hydrate

* remove leftover console log
This commit is contained in:
Evan Almloff authored and GitHub committed 2024-07-17 20:54:03 -05:00
1 parent a490a94ae5
commit 176e67e5b7
65 files changed
+1703 -495

No files matched your search

+1
View File
@@ -198,6 +198,7 @@ impl Debug for LinkProps {
/// # r#"<a href="/" dioxus-prevent-default="" class="link_class active" rel="link_rel" target="_blank" aria-current="page" id="link_id">A fully configured link</a>"#
/// # );
/// ```
#[doc(alias = "<a>")]
#[allow(non_snake_case)]
pub fn Link(props: LinkProps) -> Element {
let LinkProps {
+2 -6
View File
@@ -1,6 +1,7 @@
use super::HistoryProvider;
use crate::routable::Routable;
use dioxus_lib::prelude::*;
use document::UseEval;
use serde::{Deserialize, Serialize};
use std::sync::{Mutex, RwLock};
use std::{collections::BTreeMap, rc::Rc, str::FromStr, sync::Arc};
@@ -38,11 +39,6 @@ where
last_visited: usize,
}
#[derive(Serialize, Deserialize)]
struct SessionStorage {
liveview: Option<String>,
}
enum Action<R: Routable> {
GoBack,
GoForward,
@@ -172,7 +168,7 @@ where
let updater_callback: Arc<RwLock<Arc<dyn Fn() + Send + Sync>>> =
Arc::new(RwLock::new(Arc::new(|| {})));
let eval_provider = consume_context::<Rc<dyn EvalProvider>>();
let eval_provider = document();
let create_eval = Rc::new(move |script: &str| {
UseEval::new(eval_provider.new_evaluator(script.to_string()))