feat: components pass thru children
This commit is contained in:
1 parent
b6c0bce89c
commit
c6a6c3d0f8
17 files changed
+581
-298
No files matched your search
@@ -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
|
||||
)
|
||||
})
|
||||
|
||||
Reference in new issue
Block a user