diff --git a/demo_markdown/docs/scrollbar/mod.md b/demo_markdown/docs/scrollbar/mod.md index e1e99e1..441b2a5 100644 --- a/demo_markdown/docs/scrollbar/mod.md +++ b/demo_markdown/docs/scrollbar/mod.md @@ -28,5 +28,7 @@ view! { | --- | --- | --- | --- | | class | `OptionalProp>` | `Default::default()` | Additional classes for the scrollbar element. | | style | `Option>` | `Default::default()` | Scrollbar's style. | +| content_class | `OptionalProp>` | `Default::default()` | Addtional classes for the layout element. | +| content_style | `OptionalProp>` | `Default::default()` | Style of scrollable content node. | | size | `u8` | `8` | Size of scrollbar. | | children | `Children` | | Scrollbar's content. | diff --git a/thaw/src/scrollbar/mod.rs b/thaw/src/scrollbar/mod.rs index e5f806a..3ccd56d 100644 --- a/thaw/src/scrollbar/mod.rs +++ b/thaw/src/scrollbar/mod.rs @@ -10,6 +10,8 @@ use thaw_utils::{class_list, mount_style, OptionalProp}; pub fn Scrollbar( #[prop(optional, into)] class: OptionalProp>, #[prop(optional, into)] style: Option>, + #[prop(optional, into)] content_class: OptionalProp>, + #[prop(optional, into)] content_style: OptionalProp>, #[prop(default = 8)] size: u8, children: Children, ) -> impl IntoView { @@ -54,6 +56,9 @@ pub fn Scrollbar( if content_width <= 0.0 { return 0.0; } + if content_width <= container_width { + return 0.0; + } x_track_width * container_width / content_width }); let x_thumb_left = Memo::new(move |_| { @@ -83,6 +88,10 @@ pub fn Scrollbar( if content_height <= 0.0 { return 0.0; } + if content_height <= container_height { + return 0.0; + } + y_track_height * container_height / content_height }); let y_thumb_top = Memo::new(move |_| { @@ -271,7 +280,13 @@ pub fn Scrollbar( >
-
{children()}
+
+ {children()} +