diff options
Diffstat (limited to 'src/types/rendered_element.rs')
| -rwxr-xr-x | src/types/rendered_element.rs | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/types/rendered_element.rs b/src/types/rendered_element.rs index 1ad7cdf..15e851c 100755 --- a/src/types/rendered_element.rs +++ b/src/types/rendered_element.rs @@ -1,9 +1,8 @@ use std::collections::BTreeMap; -use iced::Element; use iced::advanced::widget::Id; use iced::widget::text::IntoFragment; -use iced::widget::{self}; +use iced::{Element, widget}; use serde::{Deserialize, Serialize}; use crate::Error; @@ -215,6 +214,12 @@ impl RenderedElement { imports = format!("{imports}column,"); view = format!("{view}\ncolumn![{elements}]{options}"); } + ElementName::Grid => { + imports = format!("{imports}grid,"); + view = format!( + "{view}\ngrid([{elements}].map(Into::into)){options}" + ); + } ElementName::Text(string) => { imports = format!("{imports}text,"); view = format!( @@ -389,6 +394,28 @@ impl<'a> From<RenderedElement> for Element<'a, Message> { ..Default::default() }) .into(), + ElementName::Grid => widget::container( + if !child_elements.is_empty() { + widget::grid(child_elements.into_iter().map(Into::into)) + } else { + widget::grid([text("New Column").into()]) + } + .apply_options(copy.options), + ) + .padding(20) + .style(|theme: &iced::Theme| widget::container::Style { + border: iced::Border { + color: theme.palette().warning.scale_alpha(0.6), + + width: 2.0, + radius: 4.into(), + }, + background: Some( + theme.palette().warning.scale_alpha(0.25).into(), + ), + ..Default::default() + }) + .into(), }; iced_drop::droppable(content) @@ -546,3 +573,8 @@ pub fn column(child_elements: Vec<RenderedElement>) -> RenderedElement { ], ) } + +pub fn grid(child_elements: Vec<RenderedElement>) -> RenderedElement { + RenderedElement::with(ElementName::Grid, child_elements) + .preset_options(&["spacing", "width", "height", "columns", "fluid"]) +} |
