Add label method to Toggler

This commit is contained in:
Héctor Ramón Jiménez 2024-09-11 00:20:23 +02:00
parent c741688b4c
commit 6e4970c01a
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
5 changed files with 17 additions and 11 deletions

View file

@ -150,7 +150,8 @@ impl Editor {
self.is_dirty.then_some(Message::SaveFile) self.is_dirty.then_some(Message::SaveFile)
), ),
horizontal_space(), horizontal_space(),
toggler(Some("Word Wrap"), self.word_wrap) toggler(self.word_wrap)
.label("Word Wrap")
.on_toggle(Message::WordWrapToggled), .on_toggle(Message::WordWrapToggled),
pick_list( pick_list(
highlighter::Theme::ALL, highlighter::Theme::ALL,

View file

@ -77,7 +77,8 @@ impl Styling {
let checkbox = checkbox("Check me!", self.checkbox_value) let checkbox = checkbox("Check me!", self.checkbox_value)
.on_toggle(Message::CheckboxToggled); .on_toggle(Message::CheckboxToggled);
let toggler = toggler(Some("Toggle me!"), self.toggler_value) let toggler = toggler(self.toggler_value)
.label("Toggle me!")
.on_toggle(Message::TogglerToggled) .on_toggle(Message::TogglerToggled)
.spacing(10); .spacing(10);

View file

@ -358,7 +358,8 @@ impl Tour {
.push("A toggler is mostly used to enable or disable something.") .push("A toggler is mostly used to enable or disable something.")
.push( .push(
Container::new( Container::new(
toggler(Some("Toggle me to continue..."), self.toggler) toggler(self.toggler)
.label("Toggle me to continue...")
.on_toggle(Message::TogglerChanged), .on_toggle(Message::TogglerChanged),
) )
.padding([0, 40]), .padding([0, 40]),

View file

@ -767,14 +767,13 @@ where
/// ///
/// [`Toggler`]: crate::Toggler /// [`Toggler`]: crate::Toggler
pub fn toggler<'a, Message, Theme, Renderer>( pub fn toggler<'a, Message, Theme, Renderer>(
label: Option<impl text::IntoFragment<'a>>,
is_checked: bool, is_checked: bool,
) -> Toggler<'a, Message, Theme, Renderer> ) -> Toggler<'a, Message, Theme, Renderer>
where where
Theme: toggler::Catalog + 'a, Theme: toggler::Catalog + 'a,
Renderer: core::text::Renderer, Renderer: core::text::Renderer,
{ {
Toggler::new(label, is_checked) Toggler::new(is_checked)
} }
/// Creates a new [`TextInput`]. /// Creates a new [`TextInput`].

View file

@ -26,7 +26,8 @@ use crate::core::{
/// ///
/// let is_toggled = true; /// let is_toggled = true;
/// ///
/// Toggler::new(Some("Toggle me!"), is_toggled) /// Toggler::new(is_toggled)
/// .label("Toggle me!")
/// .on_toggle(Message::TogglerToggled); /// .on_toggle(Message::TogglerToggled);
/// ``` /// ```
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]
@ -70,14 +71,11 @@ where
/// * a function that will be called when the [`Toggler`] is toggled. It /// * a function that will be called when the [`Toggler`] is toggled. It
/// will receive the new state of the [`Toggler`] and must produce a /// will receive the new state of the [`Toggler`] and must produce a
/// `Message`. /// `Message`.
pub fn new( pub fn new(is_toggled: bool) -> Self {
label: Option<impl text::IntoFragment<'a>>,
is_toggled: bool,
) -> Self {
Toggler { Toggler {
is_toggled, is_toggled,
on_toggle: None, on_toggle: None,
label: label.map(text::IntoFragment::into_fragment), label: None,
width: Length::Shrink, width: Length::Shrink,
size: Self::DEFAULT_SIZE, size: Self::DEFAULT_SIZE,
text_size: None, text_size: None,
@ -91,6 +89,12 @@ where
} }
} }
/// Sets the label of the [`Toggler`].
pub fn label(mut self, label: impl text::IntoFragment<'a>) -> Self {
self.label = Some(label.into_fragment());
self
}
/// Sets the message that should be produced when a user toggles /// Sets the message that should be produced when a user toggles
/// the [`Toggler`]. /// the [`Toggler`].
/// ///