summaryrefslogtreecommitdiffstats
path: root/widget/src/combo_box.rs
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src/combo_box.rs')
-rw-r--r--widget/src/combo_box.rs114
1 files changed, 110 insertions, 4 deletions
diff --git a/widget/src/combo_box.rs b/widget/src/combo_box.rs
index a51701ca..fb661ad5 100644
--- a/widget/src/combo_box.rs
+++ b/widget/src/combo_box.rs
@@ -1,4 +1,59 @@
-//! Display a dropdown list of searchable and selectable options.
+//! Combo boxes display a dropdown list of searchable and selectable options.
+//!
+//! # Example
+//! ```no_run
+//! # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
+//! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
+//! #
+//! use iced::widget::combo_box;
+//!
+//! struct State {
+//! fruits: combo_box::State<Fruit>,
+//! favorite: Option<Fruit>,
+//! }
+//!
+//! #[derive(Debug, Clone)]
+//! enum Fruit {
+//! Apple,
+//! Orange,
+//! Strawberry,
+//! Tomato,
+//! }
+//!
+//! #[derive(Debug, Clone)]
+//! enum Message {
+//! FruitSelected(Fruit),
+//! }
+//!
+//! fn view(state: &State) -> Element<'_, Message> {
+//! combo_box(
+//! &state.fruits,
+//! "Select your favorite fruit...",
+//! state.favorite.as_ref(),
+//! Message::FruitSelected
+//! )
+//! .into()
+//! }
+//!
+//! fn update(state: &mut State, message: Message) {
+//! match message {
+//! Message::FruitSelected(fruit) => {
+//! state.favorite = Some(fruit);
+//! }
+//! }
+//! }
+//!
+//! impl std::fmt::Display for Fruit {
+//! fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+//! f.write_str(match self {
+//! Self::Apple => "Apple",
+//! Self::Orange => "Orange",
+//! Self::Strawberry => "Strawberry",
+//! Self::Tomato => "Tomato",
+//! })
+//! }
+//! }
+//! ```
use crate::core::event::{self, Event};
use crate::core::keyboard;
use crate::core::keyboard::key;
@@ -21,9 +76,60 @@ use std::fmt::Display;
/// A widget for searching and selecting a single value from a list of options.
///
-/// This widget is composed by a [`TextInput`] that can be filled with the text
-/// to search for corresponding values from the list of options that are displayed
-/// as a Menu.
+/// # Example
+/// ```no_run
+/// # mod iced { pub mod widget { pub use iced_widget::*; } pub use iced_widget::Renderer; pub use iced_widget::core::*; }
+/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
+/// #
+/// use iced::widget::combo_box;
+///
+/// struct State {
+/// fruits: combo_box::State<Fruit>,
+/// favorite: Option<Fruit>,
+/// }
+///
+/// #[derive(Debug, Clone)]
+/// enum Fruit {
+/// Apple,
+/// Orange,
+/// Strawberry,
+/// Tomato,
+/// }
+///
+/// #[derive(Debug, Clone)]
+/// enum Message {
+/// FruitSelected(Fruit),
+/// }
+///
+/// fn view(state: &State) -> Element<'_, Message> {
+/// combo_box(
+/// &state.fruits,
+/// "Select your favorite fruit...",
+/// state.favorite.as_ref(),
+/// Message::FruitSelected
+/// )
+/// .into()
+/// }
+///
+/// fn update(state: &mut State, message: Message) {
+/// match message {
+/// Message::FruitSelected(fruit) => {
+/// state.favorite = Some(fruit);
+/// }
+/// }
+/// }
+///
+/// impl std::fmt::Display for Fruit {
+/// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+/// f.write_str(match self {
+/// Self::Apple => "Apple",
+/// Self::Orange => "Orange",
+/// Self::Strawberry => "Strawberry",
+/// Self::Tomato => "Tomato",
+/// })
+/// }
+/// }
+/// ```
#[allow(missing_debug_implementations)]
pub struct ComboBox<
'a,