Skip to content

Commit a1a301a

Browse files
committed
feat: Scrollbar adds content_class and content_style prop
1 parent 61e3862 commit a1a301a

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

demo_markdown/docs/scrollbar/mod.md

+2
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@ view! {
2828
| --- | --- | --- | --- |
2929
| class | `OptionalProp<MaybeSignal<String>>` | `Default::default()` | Additional classes for the scrollbar element. |
3030
| style | `Option<MaybeSignal<String>>` | `Default::default()` | Scrollbar's style. |
31+
| content_class | `OptionalProp<MaybeSignal<String>>` | `Default::default()` | Addtional classes for the layout element. |
32+
| content_style | `OptionalProp<MaybeSignal<String>>` | `Default::default()` | Style of scrollable content node. |
3133
| size | `u8` | `8` | Size of scrollbar. |
3234
| children | `Children` | | Scrollbar's content. |

thaw/src/scrollbar/mod.rs

+16-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ use thaw_utils::{class_list, mount_style, OptionalProp};
1010
pub fn Scrollbar(
1111
#[prop(optional, into)] class: OptionalProp<MaybeSignal<String>>,
1212
#[prop(optional, into)] style: Option<MaybeSignal<String>>,
13+
#[prop(optional, into)] content_class: OptionalProp<MaybeSignal<String>>,
14+
#[prop(optional, into)] content_style: OptionalProp<MaybeSignal<String>>,
1315
#[prop(default = 8)] size: u8,
1416
children: Children,
1517
) -> impl IntoView {
@@ -54,6 +56,9 @@ pub fn Scrollbar(
5456
if content_width <= 0.0 {
5557
return 0.0;
5658
}
59+
if content_width <= container_width {
60+
return 0.0;
61+
}
5762
x_track_width * container_width / content_width
5863
});
5964
let x_thumb_left = Memo::new(move |_| {
@@ -83,6 +88,10 @@ pub fn Scrollbar(
8388
if content_height <= 0.0 {
8489
return 0.0;
8590
}
91+
if content_height <= container_height {
92+
return 0.0;
93+
}
94+
8695
y_track_height * container_height / content_height
8796
});
8897
let y_thumb_top = Memo::new(move |_| {
@@ -271,7 +280,13 @@ pub fn Scrollbar(
271280
>
272281

273282
<div class="thaw-scrollbar__container" ref=container_ref on:scroll=on_scroll>
274-
<div class="thaw-scrollbar__content" style="width: fit-content;" ref=content_ref>{children()}</div>
283+
<div
284+
class=class_list!["thaw-scrollbar__content", content_class.map(|c| move || c.get())]
285+
style=move || format!("width: fit-content; {}", content_style.as_ref().map_or(String::new(), |s| s.get()))
286+
ref=content_ref
287+
>
288+
{children()}
289+
</div>
275290
</div>
276291
<div class="thaw-scrollbar__track--vertical" ref=y_track_ref>
277292
<div

0 commit comments

Comments
 (0)