diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala index 86c6692..2ea2c91 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala @@ -5,6 +5,7 @@ import com.raquo.laminar.api.L.{*, given} import com.raquo.waypoint.Router import cz.e_bs.cmi.mdr.pdb.app.components.AppPage +import cz.e_bs.cmi.mdr.pdb.app.pages.detail.components.UpravDukazForm object UpravDukaz: @@ -47,8 +48,15 @@ def apply: HtmlElement = AppPage(state.actionBus)( - $merged.map(_.map(buildModel)) - .split(_ => ())((_, _, $s) => PageComponent($s)), + $merged.map(_.map((o, p, k) => (o, p, k, buildModel(o, p, k)))) + .split(_ => ())((_, s, $s) => + PageComponent( + $s.map(_._4), + state.actionBus.contramap { case UpravDukazForm.Cancel => + NavigateTo(Page.DetailKriteria(s._1, s._2, s._3)) + } + ) + ), $pageChangeSignal --> state.actionBus ) @@ -73,7 +81,10 @@ kriterium: DetailKriteria.ViewModel ) - def apply($m: Signal[ViewModel]): HtmlElement = + def apply( + $m: Signal[ViewModel], + events: Observer[UpravDukazForm.Action] + ): HtmlElement = div( cls := "max-w-7xl mx-auto px-4 py-6 sm:px-6 lg:px-8", div( @@ -84,7 +95,7 @@ ), div( DetailKriteria($m.map(_.kriterium)), - UpravDukazForm() + UpravDukazForm(events) ) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala index 86c6692..2ea2c91 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/UpravDukaz.scala @@ -5,6 +5,7 @@ import com.raquo.laminar.api.L.{*, given} import com.raquo.waypoint.Router import cz.e_bs.cmi.mdr.pdb.app.components.AppPage +import cz.e_bs.cmi.mdr.pdb.app.pages.detail.components.UpravDukazForm object UpravDukaz: @@ -47,8 +48,15 @@ def apply: HtmlElement = AppPage(state.actionBus)( - $merged.map(_.map(buildModel)) - .split(_ => ())((_, _, $s) => PageComponent($s)), + $merged.map(_.map((o, p, k) => (o, p, k, buildModel(o, p, k)))) + .split(_ => ())((_, s, $s) => + PageComponent( + $s.map(_._4), + state.actionBus.contramap { case UpravDukazForm.Cancel => + NavigateTo(Page.DetailKriteria(s._1, s._2, s._3)) + } + ) + ), $pageChangeSignal --> state.actionBus ) @@ -73,7 +81,10 @@ kriterium: DetailKriteria.ViewModel ) - def apply($m: Signal[ViewModel]): HtmlElement = + def apply( + $m: Signal[ViewModel], + events: Observer[UpravDukazForm.Action] + ): HtmlElement = div( cls := "max-w-7xl mx-auto px-4 py-6 sm:px-6 lg:px-8", div( @@ -84,7 +95,7 @@ ), div( DetailKriteria($m.map(_.kriterium)), - UpravDukazForm() + UpravDukazForm(events) ) ) ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/UpravDukazForm.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/UpravDukazForm.scala index 5a387b0..5510d6c 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/UpravDukazForm.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/detail/components/UpravDukazForm.scala @@ -13,7 +13,9 @@ import cz.e_bs.cmi.mdr.pdb.app.components.files.File object UpravDukazForm: - def apply(): HtmlElement = + sealed trait Action + case object Cancel extends Action + def apply(onEvent: Observer[Action]): HtmlElement = val files = Var[List[File]](Nil) def submitButtons: HtmlElement = div( @@ -23,7 +25,8 @@ button( tpe := "button", cls := "bg-white py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500", - "Zrušit" + "Zrušit", + onClick.mapTo(Cancel) --> onEvent ), button( tpe := "submit",