summaryrefslogtreecommitdiffstats
path: root/web/src/widget/slider.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-23 20:23:38 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-23 20:23:38 +0100
commitd0f79d2779d00752eef78cd98b6904cd888d59e3 (patch)
tree436e757d7b24ae9791dc554d341b38d6646285d3 /web/src/widget/slider.rs
parent3a678561f2da92e089390ee79bd4f9efc2c1a8c7 (diff)
downloadiced-d0f79d2779d00752eef78cd98b6904cd888d59e3.tar.gz
iced-d0f79d2779d00752eef78cd98b6904cd888d59e3.tar.bz2
iced-d0f79d2779d00752eef78cd98b6904cd888d59e3.zip
Make `tour` work with `iced_web` again :tada:
- Implements `TextInput`, `Scrollable`, and `Container` - Adds basic style generation
Diffstat (limited to '')
-rw-r--r--web/src/widget/slider.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/web/src/widget/slider.rs b/web/src/widget/slider.rs
index 16e20b82..5b203e07 100644
--- a/web/src/widget/slider.rs
+++ b/web/src/widget/slider.rs
@@ -4,7 +4,7 @@
//!
//! [`Slider`]: struct.Slider.html
//! [`State`]: struct.State.html
-use crate::{Bus, Element, Length, Widget};
+use crate::{style, Bus, Element, Length, Widget};
use dodrio::bumpalo;
use std::{ops::RangeInclusive, rc::Rc};
@@ -82,12 +82,13 @@ impl<'a, Message> Slider<'a, Message> {
impl<'a, Message> Widget<Message> for Slider<'a, Message>
where
- Message: 'static + Copy,
+ Message: 'static + Clone,
{
fn node<'b>(
&self,
bump: &'b bumpalo::Bump,
bus: &Bus<Message>,
+ _style_sheet: &mut style::Sheet<'b>,
) -> dodrio::Node<'b> {
use dodrio::builder::*;
use wasm_bindgen::JsCast;
@@ -103,34 +104,33 @@ where
// TODO: Make `step` configurable
// TODO: Complete styling
- label(bump)
- .children(vec![input(bump)
- .attr("type", "range")
- .attr("step", "0.01")
- .attr("min", min.into_bump_str())
- .attr("max", max.into_bump_str())
- .attr("value", value.into_bump_str())
- .on("input", move |root, vdom, event| {
- let slider = match event.target().and_then(|t| {
- t.dyn_into::<web_sys::HtmlInputElement>().ok()
- }) {
- None => return,
- Some(slider) => slider,
- };
+ input(bump)
+ .attr("type", "range")
+ .attr("step", "0.01")
+ .attr("min", min.into_bump_str())
+ .attr("max", max.into_bump_str())
+ .attr("value", value.into_bump_str())
+ .attr("style", "width: 100%")
+ .on("input", move |root, vdom, event| {
+ let slider = match event.target().and_then(|t| {
+ t.dyn_into::<web_sys::HtmlInputElement>().ok()
+ }) {
+ None => return,
+ Some(slider) => slider,
+ };
- if let Ok(value) = slider.value().parse::<f32>() {
- event_bus.publish(on_change(value), root);
- vdom.schedule_render();
- }
- })
- .finish()])
+ if let Ok(value) = slider.value().parse::<f32>() {
+ event_bus.publish(on_change(value), root);
+ vdom.schedule_render();
+ }
+ })
.finish()
}
}
impl<'a, Message> From<Slider<'a, Message>> for Element<'a, Message>
where
- Message: 'static + Copy,
+ Message: 'static + Clone,
{
fn from(slider: Slider<'a, Message>) -> Element<'a, Message> {
Element::new(slider)