Extract events from project page
This commit is contained in:
parent
285ca9e97e
commit
08375b5ee2
@ -3,6 +3,35 @@ use seed::prelude::*;
|
|||||||
|
|
||||||
type EvHandler = EventHandler<crate::Msg>;
|
type EvHandler = EventHandler<crate::Msg>;
|
||||||
|
|
||||||
|
pub fn on_click_submit_save_changes() -> EvHandler {
|
||||||
|
submit_changes(Ev::Click)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn on_submit_submit_save_changes() -> EvHandler {
|
||||||
|
submit_changes(Ev::Submit)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn on_focus_out_close_edit_status() -> EvHandler {
|
||||||
|
ev("focusout", move |ev| {
|
||||||
|
ev.stop_propagation();
|
||||||
|
|
||||||
|
crate::Msg::PageChanged(crate::PageChanged::ProjectSettings(
|
||||||
|
crate::ProjectPageChange::EditIssueStatusName(None),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn submit_changes(event: Ev) -> EvHandler {
|
||||||
|
ev(event, |ev| {
|
||||||
|
ev.prevent_default();
|
||||||
|
ev.stop_propagation();
|
||||||
|
|
||||||
|
crate::Msg::PageChanged(crate::PageChanged::ProjectSettings(
|
||||||
|
crate::ProjectPageChange::SubmitProjectSettingsForm,
|
||||||
|
))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn on_submit_create_column() -> EvHandler {
|
pub fn on_submit_create_column() -> EvHandler {
|
||||||
ev(Ev::Submit, move |ev| {
|
ev(Ev::Submit, move |ev| {
|
||||||
ev.prevent_default();
|
ev.prevent_default();
|
||||||
@ -70,3 +99,11 @@ pub fn on_click_delete_column(issue_status_id: IssueStatusId) -> EvHandler {
|
|||||||
)))
|
)))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn on_click_add_status() -> EvHandler {
|
||||||
|
mouse_ev(Ev::Click, move |_| {
|
||||||
|
crate::Msg::PageChanged(crate::PageChanged::ProjectSettings(
|
||||||
|
crate::ProjectPageChange::EditIssueStatusName(Some(0)),
|
||||||
|
))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -14,10 +14,10 @@ use crate::components::styled_input::{InputVariant, StyledInput};
|
|||||||
use crate::components::styled_select::{SelectVariant, StyledSelect};
|
use crate::components::styled_select::{SelectVariant, StyledSelect};
|
||||||
use crate::components::styled_select_child::StyledSelectOption;
|
use crate::components::styled_select_child::StyledSelectOption;
|
||||||
use crate::components::styled_textarea::StyledTextarea;
|
use crate::components::styled_textarea::StyledTextarea;
|
||||||
use crate::model::{self, ModalType, Model, PageContent};
|
use crate::model::{self, Model, PageContent};
|
||||||
use crate::pages::project_settings_page::{events, ProjectSettingsPage};
|
use crate::pages::project_settings_page::{events, ProjectSettingsPage};
|
||||||
use crate::shared::inner_layout;
|
use crate::shared::inner_layout;
|
||||||
use crate::{FieldId, Msg, PageChanged, ProjectFieldId, ProjectPageChange};
|
use crate::{FieldId, Msg, ProjectFieldId};
|
||||||
|
|
||||||
static TIME_TRACKING_FIBONACCI: &str = include_str!("./time_tracking_fibonacci.txt");
|
static TIME_TRACKING_FIBONACCI: &str = include_str!("./time_tracking_fibonacci.txt");
|
||||||
static TIME_TRACKING_HOURLY: &str = include_str!("./time_tracking_hourly.txt");
|
static TIME_TRACKING_HOURLY: &str = include_str!("./time_tracking_hourly.txt");
|
||||||
@ -41,12 +41,7 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
|
|
||||||
let save_button = StyledButton {
|
let save_button = StyledButton {
|
||||||
class_list: "actionButton",
|
class_list: "actionButton",
|
||||||
on_click: Some(mouse_ev(Ev::Click, |ev| {
|
on_click: Some(events::on_click_submit_save_changes()),
|
||||||
ev.prevent_default();
|
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(
|
|
||||||
ProjectPageChange::SubmitProjectSettingsForm,
|
|
||||||
))
|
|
||||||
})),
|
|
||||||
text: Some("Save changes"),
|
text: Some("Save changes"),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
@ -63,13 +58,7 @@ pub fn view(model: &model::Model) -> Node<Msg> {
|
|||||||
save_button,
|
save_button,
|
||||||
columns_field,
|
columns_field,
|
||||||
],
|
],
|
||||||
on_submit: Some(ev(Ev::Submit, |ev| {
|
on_submit: Some(events::on_submit_submit_save_changes()),
|
||||||
ev.prevent_default();
|
|
||||||
ev.stop_propagation();
|
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(
|
|
||||||
ProjectPageChange::SubmitProjectSettingsForm,
|
|
||||||
))
|
|
||||||
})),
|
|
||||||
}
|
}
|
||||||
.render();
|
.render();
|
||||||
|
|
||||||
@ -245,18 +234,10 @@ fn columns_section(model: &Model, page: &ProjectSettingsPage) -> Node<Msg> {
|
|||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn add_column(page: &ProjectSettingsPage, column_style: &str) -> Node<Msg> {
|
fn add_column(page: &ProjectSettingsPage, column_style: &str) -> Node<Msg> {
|
||||||
let on_click = mouse_ev(Ev::Click, move |_| {
|
let on_click = events::on_click_add_status();
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(
|
|
||||||
ProjectPageChange::EditIssueStatusName(Some(0)),
|
|
||||||
))
|
|
||||||
});
|
|
||||||
|
|
||||||
if page.edit_column_id == Some(0) {
|
if page.edit_column_id == Some(0) {
|
||||||
/*let blur = ev("focusout", |_| {
|
let blur = events::on_focus_out_close_edit_status();
|
||||||
Msg::PageChanged(PageChanged::ProjectSettings(
|
|
||||||
ProjectPageChange::EditIssueStatusName(None),
|
|
||||||
))
|
|
||||||
});*/
|
|
||||||
let on_submit = events::on_submit_create_column();
|
let on_submit = events::on_submit_create_column();
|
||||||
|
|
||||||
let input = StyledInput {
|
let input = StyledInput {
|
||||||
@ -265,14 +246,15 @@ fn add_column(page: &ProjectSettingsPage, column_style: &str) -> Node<Msg> {
|
|||||||
auto_focus: true,
|
auto_focus: true,
|
||||||
variant: InputVariant::Primary,
|
variant: InputVariant::Primary,
|
||||||
id: Some(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName)),
|
id: Some(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName)),
|
||||||
input_handlers: vec![/*blur*/],
|
input_handlers: vec![],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
.render();
|
.render();
|
||||||
|
|
||||||
div![
|
div![
|
||||||
C!["columnPreview"],
|
C!["columnPreview"],
|
||||||
div![C!["columnName"], form![on_submit, input]]
|
div![C!["columnName"], form![on_submit, input]],
|
||||||
|
blur
|
||||||
]
|
]
|
||||||
} else {
|
} else {
|
||||||
let add_column = StyledIcon::from(Icon::Plus).render();
|
let add_column = StyledIcon::from(Icon::Plus).render();
|
||||||
@ -293,23 +275,20 @@ fn column_preview(
|
|||||||
column_style: &str,
|
column_style: &str,
|
||||||
) -> Node<Msg> {
|
) -> Node<Msg> {
|
||||||
if page.edit_column_id == Some(is.id) {
|
if page.edit_column_id == Some(is.id) {
|
||||||
// let blur = ev("focusout", |_| {
|
let blur = events::on_focus_out_close_edit_status();
|
||||||
// Msg::PageChanged(PageChanged::ProjectSettings(
|
|
||||||
// ProjectPageChange::EditIssueStatusName(None),
|
|
||||||
// ))
|
|
||||||
// });
|
|
||||||
let input = StyledInput {
|
let input = StyledInput {
|
||||||
value: page.name.value.as_str(),
|
value: page.name.value.as_str(),
|
||||||
valid: page.name.is_valid(),
|
valid: page.name.is_valid(),
|
||||||
variant: InputVariant::Primary,
|
variant: InputVariant::Primary,
|
||||||
auto_focus: true,
|
auto_focus: true,
|
||||||
input_handlers: vec![/*blur*/],
|
input_handlers: vec![],
|
||||||
id: Some(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName)),
|
id: Some(FieldId::ProjectSettings(ProjectFieldId::IssueStatusName)),
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
.render();
|
.render();
|
||||||
|
|
||||||
div![C!["columnPreview"], div![C!["columnName"], input]]
|
div![C!["columnPreview"], div![C!["columnName"], input], blur]
|
||||||
} else {
|
} else {
|
||||||
show_column_preview(is, per_column_issue_count, column_style)
|
show_column_preview(is, per_column_issue_count, column_style)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user