dash-frontend: Use native <Button>s, children support

This commit is contained in:
Aleksander
2025-09-13 12:49:36 +02:00
parent c2628c0a15
commit 9efe298f65
13 changed files with 117 additions and 82 deletions

View File

@@ -4,7 +4,7 @@ use crate::{
i18n::Translation,
layout::WidgetID,
parser::{
ParserContext, ParserFile, iter_attribs, process_component,
ParserContext, ParserFile, iter_attribs, parse_children, process_component,
style::{parse_color, parse_color_opt, parse_round, parse_style, parse_text_style},
},
widget::util::WLength,
@@ -70,6 +70,7 @@ pub fn parse_component_button<'a, U1, U2>(
)?;
process_component(file, ctx, node, Component(component));
parse_children(file, ctx, node, new_id)?;
Ok(new_id)
}

View File

@@ -3,8 +3,8 @@ use crate::{
i18n::Translation,
layout::WidgetID,
parser::{
ParserContext, ParserFile, iter_attribs, parse_check_f32, parse_check_i32, process_component,
style::parse_style,
ParserContext, ParserFile, iter_attribs, parse_check_f32, parse_check_i32, parse_children,
process_component, style::parse_style,
},
};

View File

@@ -2,7 +2,8 @@ use crate::{
components::{Component, slider},
layout::WidgetID,
parser::{
ParserContext, ParserFile, iter_attribs, parse_check_f32, process_component, style::parse_style,
ParserContext, ParserFile, iter_attribs, parse_check_f32, parse_children, process_component,
style::parse_style,
},
};

View File

@@ -13,7 +13,7 @@ use crate::{
drawing::{self},
event::EventListenerCollection,
globals::WguiGlobals,
layout::{Layout, LayoutState, Widget, WidgetID, WidgetMap},
layout::{Layout, LayoutParams, LayoutState, Widget, WidgetID, WidgetMap},
parser::{
component_button::parse_component_button, component_checkbox::parse_component_checkbox,
component_slider::parse_component_slider, widget_div::parse_widget_div,
@@ -797,8 +797,9 @@ pub fn parse_from_assets<U1, U2>(
pub fn new_layout_from_assets<U1, U2>(
listeners: &mut EventListenerCollection<U1, U2>,
doc_params: &ParseDocumentParams,
layout_params: &LayoutParams,
) -> anyhow::Result<(Layout, ParserState)> {
let mut layout = Layout::new(doc_params.globals.clone())?;
let mut layout = Layout::new(doc_params.globals.clone(), layout_params)?;
let widget = layout.root_widget;
let state = parse_from_assets(doc_params, &mut layout, listeners, widget)?;
Ok((layout, state))