feat: move "add category" to the top
this makes everything symmetrical
This commit is contained in:
parent
c28204bd9f
commit
05ee2fc381
1 changed files with 70 additions and 64 deletions
146
src/main.rs
146
src/main.rs
|
|
@ -64,78 +64,84 @@ impl State {
|
|||
state
|
||||
}
|
||||
fn view(&self) -> Element<'_, Message, Theme, Renderer> {
|
||||
widget::row(self.table.iter().enumerate().map(|(i_category, category)| {
|
||||
widget::column([
|
||||
widget::row([
|
||||
widget::text_input("category", &category.header)
|
||||
.on_input(move |new_value| Message::CategoryChanged {
|
||||
i_category,
|
||||
new_value,
|
||||
})
|
||||
.size(30)
|
||||
.into(),
|
||||
widget::button("X")
|
||||
.style(widget::button::danger)
|
||||
.on_press(Message::RemoveCategory { i_category })
|
||||
.height(50)
|
||||
widget::column([
|
||||
widget::button("add category")
|
||||
.on_press(Message::AddCategory)
|
||||
.into(),
|
||||
widget::row(self.table.iter().enumerate().map(|(i_category, category)| {
|
||||
widget::column([
|
||||
widget::row([
|
||||
widget::text_input("category", &category.header)
|
||||
.on_input(move |new_value| Message::CategoryChanged {
|
||||
i_category,
|
||||
new_value,
|
||||
})
|
||||
.size(30)
|
||||
.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(),
|
||||
])
|
||||
.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(),
|
||||
])
|
||||
.align_x(Horizontal::Center)
|
||||
.into()
|
||||
}))
|
||||
.push(widget::button("add category").on_press(Message::AddCategory))
|
||||
.spacing(15)
|
||||
.padding(15)
|
||||
.align_x(Horizontal::Center)
|
||||
.into()
|
||||
}))
|
||||
.spacing(15)
|
||||
.padding(15)
|
||||
.into(),
|
||||
])
|
||||
.align_x(Horizontal::Center)
|
||||
.into()
|
||||
}
|
||||
fn update(&mut self, message: Message) -> Task<Message> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue