beuvy-runtime 0.1.0

A low-level Bevy UI kit with reusable controls and utility-class styling.
Documentation
use crate::button::sync_button_active_state;
use crate::select::model::{
    SELECT_CHEVRON_CLOSED, SELECT_CHEVRON_OPEN, Select, SelectChevronGlyph,
};
use bevy::prelude::*;

pub(crate) fn sync_select_visual_state(
    mut commands: Commands,
    selects: Query<&Select, Changed<Select>>,
    mut chevrons: Query<&mut Text, With<SelectChevronGlyph>>,
) {
    for select in &selects {
        sync_button_active_state(&mut commands, select.trigger, select.open);

        if let Ok(mut text) = chevrons.get_mut(select.chevron_glyph) {
            text.0 = if select.open {
                SELECT_CHEVRON_OPEN.to_string()
            } else {
                SELECT_CHEVRON_CLOSED.to_string()
            };
        }
    }
}