Skip to content

Commit 0f2379d

Browse files
Upgrade to Leptos v0.7 (#73)
1 parent d0f3f44 commit 0f2379d

76 files changed

Lines changed: 2287 additions & 1963 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Cargo.lock

Lines changed: 349 additions & 224 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,11 @@ console_error_panic_hook = "0.1.7"
2121
console_log = "1.0.0"
2222
dyn_derive = "0.3.4"
2323
dyn_std = "0.3.3"
24-
leptos = "0.6.14"
25-
leptos_router = "0.6.14"
24+
leptos = "0.7.0"
25+
leptos_router = "0.7.0"
26+
leptos-node-ref = "0.0.3"
2627
log = "0.4.22"
28+
send_wrapper = "0.6.0"
2729
serde = { version = "1.0.209", features = ["derive"] }
2830
serde_json = "1.0.127"
2931
wasm-bindgen = "0.2.93"
@@ -49,6 +51,7 @@ features = [
4951
"IntersectionObserverEntry",
5052
"IntersectionObserverInit",
5153
"Node",
54+
"Range",
5255
"ResizeObserver",
5356
"ResizeObserverEntry",
5457
"Selection",

book-examples/Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ console_log.workspace = true
1515
convert_case = "0.6.0"
1616
floating-ui-leptos = { path = "../packages/leptos" }
1717
leptos = { workspace = true, features = ["csr"] }
18+
leptos-node-ref.workspace = true
1819
log.workspace = true
20+
send_wrapper.workspace = true
1921
tailwind_fuse = "0.3.1"
2022

2123
[features]

book-examples/src/app.rs

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,48 @@
1-
use leptos::*;
1+
use leptos::prelude::*;
22

33
#[component]
44
pub fn App() -> impl IntoView {
5-
let mut views: Vec<View> = vec![];
5+
let mut views: Vec<AnyView> = vec![];
66

77
#[cfg(feature = "placement")]
88
{
99
use crate::positioning::placement::PlacementDemo;
10-
views.push(view! {
11-
<PlacementDemo />
12-
});
10+
views.push(
11+
view! {
12+
<PlacementDemo />
13+
}
14+
.into_any(),
15+
);
1316
}
1417
#[cfg(feature = "shift")]
1518
{
1619
use crate::positioning::shift::ShiftDemo;
17-
views.push(view! {
18-
<ShiftDemo />
19-
});
20+
views.push(
21+
view! {
22+
<ShiftDemo />
23+
}
24+
.into_any(),
25+
);
2026
}
2127
#[cfg(feature = "flip")]
2228
{
2329
use crate::positioning::flip::FlipDemo;
24-
views.push(view! {
25-
<FlipDemo />
26-
});
30+
views.push(
31+
view! {
32+
<FlipDemo />
33+
}
34+
.into_any(),
35+
);
2736
}
2837
#[cfg(feature = "size")]
2938
{
3039
use crate::positioning::size::SizeDemo;
31-
views.push(view! {
32-
<SizeDemo />
33-
});
40+
views.push(
41+
view! {
42+
<SizeDemo />
43+
}
44+
.into_any(),
45+
);
3446
}
3547

3648
views.into_view()

book-examples/src/components/chrome.rs

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// TODO: remove
22
#![allow(unused)]
33

4-
use leptos::{html::Div, *};
4+
use leptos::{context::Provider, html::Div, prelude::*};
55
use tailwind_fuse::tw_merge;
66

77
#[derive(Clone, Copy, Debug, PartialEq)]
@@ -17,13 +17,13 @@ pub struct ChromeContext(pub NodeRef<Div>);
1717

1818
#[component]
1919
pub fn Chrome(
20-
#[prop(default = false.into(), into)] center: MaybeSignal<bool>,
21-
#[prop(default = Scrollable::None.into(), into)] scrollable: MaybeSignal<Scrollable>,
22-
#[prop(default = true.into(), into)] relative: MaybeSignal<bool>,
20+
#[prop(default = false.into(), into)] center: Signal<bool>,
21+
#[prop(default = Scrollable::None.into(), into)] scrollable: Signal<Scrollable>,
22+
#[prop(default = true.into(), into)] relative: Signal<bool>,
2323
#[prop(into, optional)] label: MaybeProp<String>,
24-
#[prop(default = 305.into(), into)] scroll_height: MaybeSignal<isize>,
25-
#[prop(default = true.into(), into)] shadow: MaybeSignal<bool>,
26-
#[prop(default = false.into(), into)] tall: MaybeSignal<bool>,
24+
#[prop(default = 305.into(), into)] scroll_height: Signal<isize>,
25+
#[prop(default = true.into(), into)] shadow: Signal<bool>,
26+
#[prop(default = false.into(), into)] tall: Signal<bool>,
2727
children: Children,
2828
) -> impl IntoView {
2929
let scrollable_ref: NodeRef<Div> = NodeRef::new();
@@ -57,11 +57,7 @@ pub fn Chrome(
5757
)}
5858
>
5959
<div class="bg-gray-75 dark:bg-gray-600/60 dark:text-white">
60-
<div class={{
61-
let label = label.clone();
62-
63-
move || tw_merge!("absolute mx-4 flex h-12 items-center gap-2", label.get().map(|_| "sm:flex"))}
64-
}>
60+
<div class={move || tw_merge!("absolute mx-4 flex h-12 items-center gap-2", label.get().map(|_| "sm:flex"))}>
6561
<div
6662
class="h-3 w-3 rounded-full"
6763
style:background="#ec695e"
@@ -94,9 +90,10 @@ pub fn Chrome(
9490
<Show when=move || is_scrollable.get()>
9591
<div
9692
class={scrollable_x.get().then_some("w-[180vw] md:w-[75rem] lg:w-[90rem]")}
97-
style:height={match scrollable_y.get() {
98-
true => format!("{}px", scroll_height.get()),
99-
false => "1px".into(),
93+
style:height={if scrollable_y.get() {
94+
format!("{}px", scroll_height.get())
95+
} else {
96+
"1px".to_owned()
10097
}}
10198
/>
10299
</Show>
@@ -106,9 +103,10 @@ pub fn Chrome(
106103
<Show when=move || is_scrollable.get()>
107104
<div
108105
class={scrollable_x.get().then_some("w-[180vw] md:w-[75rem] lg:w-[90rem]")}
109-
style:height={match scrollable_y.get() {
110-
true => format!("{}px", scroll_height.get()),
111-
false => "1px".into(),
106+
style:height={if scrollable_y.get() {
107+
format!("{}px", scroll_height.get())
108+
} else {
109+
"1px".to_owned()
112110
}}
113111
/>
114112
</Show>

book-examples/src/components/floating.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,35 @@
11
use floating_ui_leptos::{
2-
use_floating, IntoReference, MiddlewareVec, Placement, Strategy, UseFloatingOptions,
3-
UseFloatingReturn,
4-
};
5-
use leptos::{
6-
html::{AnyElement, Div},
7-
*,
2+
use_floating, MiddlewareVec, Placement, Strategy, UseFloatingOptions, UseFloatingReturn,
83
};
4+
use leptos::prelude::*;
5+
use leptos_node_ref::AnyNodeRef;
6+
use send_wrapper::SendWrapper;
97
use tailwind_fuse::tw_merge;
108

119
#[component]
1210
pub fn Floating<CF, CIV, RF, RIV>(
1311
#[prop(into, optional)] class: MaybeProp<String>,
1412
#[prop(into, optional)] strategy: MaybeProp<Strategy>,
1513
#[prop(into, optional)] placement: MaybeProp<Placement>,
16-
#[prop(into, optional)] middleware: MaybeProp<MiddlewareVec>,
17-
#[prop(default = false.into(), into)] arrow: MaybeSignal<bool>,
14+
#[prop(into, optional)] middleware: MaybeProp<SendWrapper<MiddlewareVec>>,
15+
#[prop(default = false.into(), into)] arrow: Signal<bool>,
1816
content: CF,
1917
reference: RF,
2018
) -> impl IntoView
2119
where
2220
CF: Fn() -> CIV + 'static,
2321
CIV: IntoView + 'static,
24-
RF: Fn(NodeRef<AnyElement>) -> RIV + 'static,
22+
RF: Fn(AnyNodeRef) -> RIV + 'static,
2523
RIV: IntoView + 'static,
2624
{
27-
let floating_ref: NodeRef<Div> = NodeRef::new();
28-
let reference_ref: NodeRef<AnyElement> = NodeRef::new();
29-
let arrow_ref: NodeRef<Div> = NodeRef::new();
25+
let floating_ref = AnyNodeRef::new();
26+
let reference_ref = AnyNodeRef::new();
27+
let arrow_ref = AnyNodeRef::new();
3028

3129
let UseFloatingReturn {
3230
floating_styles, ..
3331
} = use_floating(
34-
reference_ref.into_reference(),
32+
reference_ref,
3533
floating_ref,
3634
UseFloatingOptions::default()
3735
.while_elements_mounted_auto_update()
@@ -57,8 +55,8 @@ where
5755
style:position=move || floating_styles.get().style_position()
5856
style:top=move || floating_styles.get().style_top()
5957
style:left=move || floating_styles.get().style_left()
60-
style:transform=move || floating_styles.get().style_transform()
61-
style:will-change=move || floating_styles.get().style_will_change()
58+
style:transform=move || floating_styles.get().style_transform().unwrap_or_default()
59+
style:will-change=move || floating_styles.get().style_will_change().unwrap_or_default()
6260
>
6361
<div class="px-2 py-2">{content()}</div>
6462
<Show when=move || arrow.get()>

book-examples/src/components/grid_item.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
use leptos::*;
1+
use leptos::prelude::*;
22
use tailwind_fuse::tw_merge;
33

44
#[component]
55
pub fn GridItem<F, IV>(
6-
#[prop(into)] title: MaybeSignal<String>,
7-
#[prop(into)] description: MaybeSignal<String>,
6+
#[prop(into)] title: Signal<String>,
7+
#[prop(into)] description: Signal<String>,
88
chrome: F,
9-
// #[prop(into)] demo_link: MaybeSignal<String>,
10-
#[prop(default = false.into(), into)] hidden: MaybeSignal<bool>,
9+
// #[prop(into)] demo_link: Signal<String>,
10+
#[prop(default = false.into(), into)] hidden: Signal<bool>,
1111
) -> impl IntoView
1212
where
1313
F: Fn() -> IV + 'static,

book-examples/src/components/reference.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
use leptos::{html::AnyElement, *};
1+
use leptos::prelude::*;
2+
use leptos_node_ref::AnyNodeRef;
23
use tailwind_fuse::tw_merge;
34

45
#[component]
56
pub fn Reference(
67
#[prop(into, optional)] class: MaybeProp<String>,
7-
#[prop(into, optional)] node_ref: NodeRef<AnyElement>,
8+
#[prop(into, optional)] node_ref: AnyNodeRef,
89
) -> impl IntoView {
910
view! {
1011
<button
12+
node_ref=node_ref
1113
class={move || {
1214
let class = class.get();
1315
tw_merge!(
@@ -20,6 +22,4 @@ pub fn Reference(
2022
Reference
2123
</button>
2224
}
23-
.into_any()
24-
.node_ref(node_ref)
2525
}

book-examples/src/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ mod components;
33
mod positioning;
44
mod utils;
55

6+
use leptos::prelude::*;
7+
68
use crate::app::App;
79

810
pub fn main() {
911
_ = console_log::init_with_level(log::Level::Debug);
1012
console_error_panic_hook::set_once();
1113

12-
leptos::mount_to_body(App);
14+
mount_to_body(App);
1315
}

book-examples/src/positioning/flip.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ use floating_ui_leptos::{
22
DetectOverflowOptions, Flip, FlipOptions, MiddlewareVec, Offset, OffsetOptions, Placement,
33
RootBoundary,
44
};
5-
use leptos::{html::Div, *};
5+
use leptos::prelude::*;
6+
use leptos_node_ref::AnyNodeRef;
7+
use send_wrapper::SendWrapper;
68

79
use crate::{
810
components::{Chrome, Floating, GridItem, Reference, Scrollable},
@@ -11,7 +13,7 @@ use crate::{
1113

1214
#[component]
1315
pub fn FlipDemo() -> impl IntoView {
14-
let boundary_ref: NodeRef<Div> = NodeRef::new();
16+
let boundary_ref = AnyNodeRef::new();
1517

1618
Effect::new(move |_| {
1719
if let Some(boundary) = boundary_ref.get() {
@@ -27,7 +29,7 @@ pub fn FlipDemo() -> impl IntoView {
2729
title="Flip"
2830
description="Changes the placement of your floating element to keep it in view."
2931
chrome=move || view! {
30-
<div ref={boundary_ref} class="relative overflow-hidden">
32+
<div node_ref={boundary_ref} class="relative overflow-hidden">
3133
<Chrome
3234
label="Scroll down"
3335
scrollable=Scrollable::Y
@@ -44,7 +46,7 @@ pub fn FlipDemo() -> impl IntoView {
4446
))),
4547
];
4648

47-
middleware
49+
SendWrapper::new(middleware)
4850
}
4951
content=move || view! {
5052
<span class="text-sm font-bold">

0 commit comments

Comments
 (0)