feat: components pass thru children

This commit is contained in:
Jonathan Kelley committed 2022-11-02 17:29:18 -07:00
1 parent b6c0bce89c
commit c6a6c3d0f8
17 files changed
+581 -298

No files matched your search

+11 -22
View File
@@ -117,8 +117,6 @@ impl ToTokens for Component {
let name = &self.name;
let prop_gen_args = &self.prop_gen_args;
let mut has_key = None;
let builder = match &self.manual_props {
Some(manual_props) => {
let mut toks = quote! {
@@ -126,7 +124,7 @@ impl ToTokens for Component {
};
for field in &self.fields {
if field.name == "key" {
has_key = Some(field);
// skip keys
} else {
let name = &field.name;
let val = &field.content;
@@ -149,18 +147,22 @@ impl ToTokens for Component {
};
for field in &self.fields {
match field.name.to_string().as_str() {
"key" => {
//
has_key = Some(field);
}
"key" => {}
_ => toks.append_all(quote! {#field}),
}
}
if !self.children.is_empty() {
let childs = &self.children;
let renderer = TemplateRenderer {
roots: &self.children,
};
toks.append_all(quote! {
.children(__cx.create_children([ #( #childs ),* ]))
.children(
Some({
#renderer
})
)
});
}
@@ -171,25 +173,12 @@ impl ToTokens for Component {
}
};
let key_token = match has_key {
Some(field) => {
let inners = &field.content;
if let ContentField::Formatted(ifmt) = inners {
quote! { Some(#ifmt) }
} else {
unreachable!()
}
}
None => quote! { None },
};
let fn_name = self.name.segments.last().unwrap().ident.to_string();
tokens.append_all(quote! {
__cx.component(
#name,
#builder,
#key_token,
#fn_name
)
})