use std::{borrow::Cow, num::NonZeroU16}; use crate::canvas::components::data_table::{ColumnHeader, DataTableColumn, DataToCell}; pub struct SortTableColumn; impl ColumnHeader for SortTableColumn { fn text(&self) -> Cow<'static, str> { "Sort By".into() } } impl DataToCell for &'static str { fn to_cell( &self, _column: &SortTableColumn, _calculated_width: NonZeroU16, ) -> Option> { Some(Cow::Borrowed(self)) } fn column_widths>(data: &[Self], _columns: &[C]) -> Vec where Self: Sized, { vec![data.iter().map(|d| d.len() as u16).max().unwrap_or(0)] } } impl DataToCell for Cow<'static, str> { fn to_cell( &self, _column: &SortTableColumn, _calculated_width: NonZeroU16, ) -> Option> { Some(self.clone()) } fn column_widths>(data: &[Self], _columns: &[C]) -> Vec where Self: Sized, { vec![data.iter().map(|d| d.len() as u16).max().unwrap_or(0)] } }