feat: move "add category" to the top

this makes everything symmetrical
This commit is contained in:
electria 2026-06-25 17:18:00 -07:00
commit 05ee2fc381
Signed by: electria
SSH key fingerprint: SHA256:8LlB3ucPbBHqozqkhsNbaV5oG3SlzzqUj8FZDL6IPQs

View file

@ -64,78 +64,84 @@ impl State {
state state
} }
fn view(&self) -> Element<'_, Message, Theme, Renderer> { fn view(&self) -> Element<'_, Message, Theme, Renderer> {
widget::row(self.table.iter().enumerate().map(|(i_category, category)| { widget::column([
widget::column([ widget::button("add category")
widget::row([ .on_press(Message::AddCategory)
widget::text_input("category", &category.header) .into(),
.on_input(move |new_value| Message::CategoryChanged { widget::row(self.table.iter().enumerate().map(|(i_category, category)| {
i_category, widget::column([
new_value, widget::row([
}) widget::text_input("category", &category.header)
.size(30) .on_input(move |new_value| Message::CategoryChanged {
.into(), i_category,
widget::button("X") new_value,
.style(widget::button::danger) })
.on_press(Message::RemoveCategory { i_category }) .size(30)
.height(50) .into(),
widget::button("X")
.style(widget::button::danger)
.on_press(Message::RemoveCategory { i_category })
.height(50)
.into(),
])
.align_y(Vertical::Center)
.into(),
widget::scrollable(widget::column(category.elements.iter().enumerate().map(
|(i_element, element)| {
widget::row([
widget::text_input("content", &element)
.on_input(move |new_value| Message::ElementChanged {
i_category,
i_element,
new_value,
})
.into(),
widget::button("")
.on_press_maybe(if i_category > 0 {
Some(Message::MoveElement {
i_category,
i_element,
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_element,
})
.into(),
])
.into()
},
)))
.into(),
widget::button("add element")
.on_press(Message::AddElement { i_category })
.into(), .into(),
]) ])
.align_y(Vertical::Center) .align_x(Horizontal::Center)
.into(), .into()
widget::scrollable(widget::column(category.elements.iter().enumerate().map( }))
|(i_element, element)| { .spacing(15)
widget::row([ .padding(15)
widget::text_input("content", &element) .into(),
.on_input(move |new_value| Message::ElementChanged { ])
i_category, .align_x(Horizontal::Center)
i_element,
new_value,
})
.into(),
widget::button("")
.on_press_maybe(if i_category > 0 {
Some(Message::MoveElement {
i_category,
i_element,
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_element,
})
.into(),
])
.into()
},
)))
.into(),
widget::button("add element")
.on_press(Message::AddElement { i_category })
.into(),
])
.align_x(Horizontal::Center)
.into()
}))
.push(widget::button("add category").on_press(Message::AddCategory))
.spacing(15)
.padding(15)
.into() .into()
} }
fn update(&mut self, message: Message) -> Task<Message> { fn update(&mut self, message: Message) -> Task<Message> {