feat: move "add element" button into the scrollable

This commit is contained in:
electria 2026-06-25 17:23:05 -07:00
commit 52b83efc2c
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -86,55 +86,58 @@ impl State {
]) ])
.align_y(Vertical::Center) .align_y(Vertical::Center)
.into(), .into(),
widget::scrollable(widget::column(category.elements.iter().enumerate().map( widget::scrollable(
|(i_element, element)| { widget::column(category.elements.iter().enumerate().map(
widget::row([ |(i_element, element)| {
widget::text_input("content", &element) widget::row([
.on_input(move |new_value| Message::ElementChanged { widget::text_input("content", &element)
i_category, .on_input(move |new_value| Message::ElementChanged {
i_element,
new_value,
})
.into(),
widget::button("")
.on_press_maybe(if i_category > 0 {
Some(Message::MoveElement {
i_category, i_category,
i_element, i_element,
target_category: i_category - 1, new_value,
}) })
} else { .into(),
None widget::button("")
}) .on_press_maybe(if i_category > 0 {
.into(), Some(Message::MoveElement {
widget::button("") i_category,
.on_press_maybe(if i_category < self.table.len() - 1 { i_element,
Some(Message::MoveElement { target_category: i_category - 1,
})
} else {
None
})
.into(),
widget::button("")
.on_press_maybe(if i_category < self.table.len() - 1 {
Some(Message::MoveElement {
i_category,
i_element,
target_category: i_category + 1,
})
} else {
None
})
.into(),
widget::button("X")
.style(widget::button::warning)
.on_press(Message::RemoveElement {
i_category, i_category,
i_element, i_element,
target_category: i_category + 1,
}) })
} else { .into(),
None ])
}) .into()
.into(), },
widget::button("X") ))
.style(widget::button::warning) .align_x(Horizontal::Center)
.on_press(Message::RemoveElement { .push(
i_category, widget::button("add element")
i_element, .on_press(Message::AddElement { i_category }),
}) ),
.into(), )
])
.into()
},
)))
.into(), .into(),
widget::button("add element")
.on_press(Message::AddElement { i_category })
.into(),
]) ])
.align_x(Horizontal::Center)
.into() .into()
})) }))
.spacing(15) .spacing(15)