bevy_ui_builders/dropdown/
types.rs1use bevy::prelude::*;
4
5#[derive(Component, Debug, Clone, Copy)]
7pub struct Dropdown;
8
9#[derive(Component, Debug, Clone, Copy)]
11pub struct DropdownButton;
12
13#[derive(Component, Debug, Clone, Copy)]
15pub struct DropdownMenu;
16
17#[derive(Component, Debug, Clone, Copy)]
19pub struct DropdownOption {
20 pub index: usize,
22}
23
24#[derive(Component, Debug, Clone, Copy, PartialEq, Eq)]
26pub enum DropdownState {
27 Closed,
29 Open,
31}
32
33impl Default for DropdownState {
34 fn default() -> Self {
35 Self::Closed
36 }
37}
38
39#[derive(Component, Debug, Clone)]
41pub struct DropdownData {
42 pub options: Vec<String>,
44 pub selected_index: Option<usize>,
46 pub placeholder: String,
48}
49
50impl DropdownData {
51 pub fn selected_value(&self) -> Option<&str> {
53 self.selected_index
54 .and_then(|idx| self.options.get(idx))
55 .map(|s| s.as_str())
56 }
57
58 pub fn display_text(&self) -> &str {
60 self.selected_value().unwrap_or(&self.placeholder)
61 }
62}