nova_forms/components/
summary.rs1use leptos::*;
2
3use crate::{BaseGroupContext, GroupContext, InputContext, Node};
4
5#[component]
6pub fn Summary() -> impl IntoView {
7 let group = expect_context::<BaseGroupContext>();
8
9 view! {
10 <div class="summary">
11 <SummaryGroup group=group.to_group_context() />
12 </div>
13 }
14}
15
16#[component]
17fn SummaryGroup(
18 group: GroupContext,
19) -> impl IntoView {
20 view! {
21 <div class="summary-group">
22 <span class="summary-group-label">{group.label()}</span>
23 <div class="summary-group-content">
24 <For
25 each={move || group.nodes()}
26 key={move |node| node.qs()}
27 children={move |node| {
28 view! {
29 <div class="summary-group-node">
30 {match node {
31 Node::Group(group) => view! {
32 <SummaryGroup group=group />
33 },
34 Node::Input(input) => view! {
35 <SummaryInput input=input />
36 }
37 }}
38 </div>
39 }
40 }}
41 />
42 </div>
43 </div>
44 }
45}
46
47#[component]
48fn SummaryInput(
49 input: InputContext,
50) -> impl IntoView {
51 view! {
52 <div class="summary-input">
53 <span class="summary-input-label">{input.label()}</span>
54 <span class="summary-input-value">{input.raw_value()}</span>
55 </div>
56 }
57}