kozan_core/html/html_select_element.rs
1//! `HTMLSelectElement` — a dropdown/listbox control.
2//!
3//! Chrome equivalent: `HTMLSelectElement`.
4//! Can be single-select (dropdown) or multi-select (listbox).
5
6use super::form_control::FormControlElement;
7use crate::Handle;
8use kozan_macros::{Element, Props};
9
10/// A select (dropdown/listbox) element (`<select>`).
11///
12/// Chrome equivalent: `HTMLSelectElement`.
13#[derive(Copy, Clone, Element)]
14#[element(tag = "select", focusable, data = SelectData)]
15pub struct HtmlSelectElement(Handle);
16
17/// Element-specific data for `<select>`.
18#[derive(Default, Clone, Props)]
19#[props(element = HtmlSelectElement)]
20pub struct SelectData {
21 /// Whether multiple options can be selected.
22 #[prop]
23 pub multiple: bool,
24 /// The number of visible rows (for listbox mode).
25 #[prop]
26 pub size: u32,
27}
28
29impl FormControlElement for HtmlSelectElement {}