use iced::{widget::column, Element}; use crate::{style::SPACING_SM, traits::Viewable}; use super::{Message, Navigation}; impl<'a, TOption> Viewable<'a, Message> for Navigation where TOption: Clone + PartialEq + 'a, Element<'a, Message>: From<&'a TOption>, { fn view(&'a self) -> iced::Element<'a, Message> { let mut options = Vec::new(); self.options_before_active .iter() .map(|option| self.view_navigation_button(&option)) .for_each(|option| options.push(option)); if let Some(active_option) = self.active_option.as_ref() { options.push(self.view_navigation_button(&active_option)); } self.options_after_active .iter() .map(|option| self.view_navigation_button(&option)) .for_each(|option| options.push(option)); column(options).spacing(u32::from(SPACING_SM)).into() } }