diff --git a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala index 8df0465..e4b833d 100644 --- a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala +++ b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala @@ -36,8 +36,10 @@ ): I => Task[O] = val req = toRequestThrowErrors(endpoint, baseUri.toUri) req(_).followRedirects(false).send(backend).map(_.body).tapError { + // TODO: remove this handler from here, the app should decide what to do on auth failure + // Which is what the redirect here is case e: RuntimeException if e.getMessage == "Unexpected redirect" => // Reload window on redirect, as it means that we need to log in again - ZIO.attempt(org.scalajs.dom.window.location.reload(true)) + ZIO.attempt(org.scalajs.dom.window.location.reload()) case _ => ZIO.unit } diff --git a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala index 8df0465..e4b833d 100644 --- a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala +++ b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala @@ -36,8 +36,10 @@ ): I => Task[O] = val req = toRequestThrowErrors(endpoint, baseUri.toUri) req(_).followRedirects(false).send(backend).map(_.body).tapError { + // TODO: remove this handler from here, the app should decide what to do on auth failure + // Which is what the redirect here is case e: RuntimeException if e.getMessage == "Unexpected redirect" => // Reload window on redirect, as it means that we need to log in again - ZIO.attempt(org.scalajs.dom.window.location.reload(true)) + ZIO.attempt(org.scalajs.dom.window.location.reload()) case _ => ZIO.unit } diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala index 95ab654..d97f8f0 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait LayoutModule: def layout: LayoutComponents @@ -9,7 +9,7 @@ trait LayoutComponents: def card(content: Modifier[HtmlElement]*): HtmlElement -trait DefaultLayoutModule(using ctx: ComponentContext) extends LayoutModule: +trait DefaultLayoutModule(using ctx: ComponentContext[_]) extends LayoutModule: override val layout: LayoutComponents = new LayoutComponents: override def card(content: Modifier[HtmlElement]*): HtmlElement = div(cls("bg-white shadow px-4 py-5 sm:rounded-lg sm:p-6"), content) diff --git a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala index 8df0465..e4b833d 100644 --- a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala +++ b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala @@ -36,8 +36,10 @@ ): I => Task[O] = val req = toRequestThrowErrors(endpoint, baseUri.toUri) req(_).followRedirects(false).send(backend).map(_.body).tapError { + // TODO: remove this handler from here, the app should decide what to do on auth failure + // Which is what the redirect here is case e: RuntimeException if e.getMessage == "Unexpected redirect" => // Reload window on redirect, as it means that we need to log in again - ZIO.attempt(org.scalajs.dom.window.location.reload(true)) + ZIO.attempt(org.scalajs.dom.window.location.reload()) case _ => ZIO.unit } diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala index 95ab654..d97f8f0 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait LayoutModule: def layout: LayoutComponents @@ -9,7 +9,7 @@ trait LayoutComponents: def card(content: Modifier[HtmlElement]*): HtmlElement -trait DefaultLayoutModule(using ctx: ComponentContext) extends LayoutModule: +trait DefaultLayoutModule(using ctx: ComponentContext[_]) extends LayoutModule: override val layout: LayoutComponents = new LayoutComponents: override def card(content: Modifier[HtmlElement]*): HtmlElement = div(cls("bg-white shadow px-4 py-5 sm:rounded-lg sm:p-6"), content) diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala new file mode 100644 index 0000000..02205bc --- /dev/null +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala @@ -0,0 +1,11 @@ +package works.iterative.ui.components.laminar + +import com.raquo.laminar.api.L.{*, given} + +object LinkSupport: + + extension [El <: org.scalajs.dom.EventTarget]( + ep: EventProcessor[org.scalajs.dom.MouseEvent, org.scalajs.dom.MouseEvent] + ) + def noKeyMod = + ep.filter(ev => !(ev.ctrlKey || ev.metaKey || ev.shiftKey || ev.altKey)) diff --git a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala index 8df0465..e4b833d 100644 --- a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala +++ b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala @@ -36,8 +36,10 @@ ): I => Task[O] = val req = toRequestThrowErrors(endpoint, baseUri.toUri) req(_).followRedirects(false).send(backend).map(_.body).tapError { + // TODO: remove this handler from here, the app should decide what to do on auth failure + // Which is what the redirect here is case e: RuntimeException if e.getMessage == "Unexpected redirect" => // Reload window on redirect, as it means that we need to log in again - ZIO.attempt(org.scalajs.dom.window.location.reload(true)) + ZIO.attempt(org.scalajs.dom.window.location.reload()) case _ => ZIO.unit } diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala index 95ab654..d97f8f0 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait LayoutModule: def layout: LayoutComponents @@ -9,7 +9,7 @@ trait LayoutComponents: def card(content: Modifier[HtmlElement]*): HtmlElement -trait DefaultLayoutModule(using ctx: ComponentContext) extends LayoutModule: +trait DefaultLayoutModule(using ctx: ComponentContext[_]) extends LayoutModule: override val layout: LayoutComponents = new LayoutComponents: override def card(content: Modifier[HtmlElement]*): HtmlElement = div(cls("bg-white shadow px-4 py-5 sm:rounded-lg sm:p-6"), content) diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala new file mode 100644 index 0000000..02205bc --- /dev/null +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala @@ -0,0 +1,11 @@ +package works.iterative.ui.components.laminar + +import com.raquo.laminar.api.L.{*, given} + +object LinkSupport: + + extension [El <: org.scalajs.dom.EventTarget]( + ep: EventProcessor[org.scalajs.dom.MouseEvent, org.scalajs.dom.MouseEvent] + ) + def noKeyMod = + ep.filter(ev => !(ev.ctrlKey || ev.metaKey || ev.shiftKey || ev.altKey)) diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala index 5b5490f..448cf4f 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait ModalComponentsModule: @@ -13,7 +13,7 @@ onClose: Modifier[HtmlElement] ): HtmlElement -trait DefaultModalComponentsModule(using ctx: ComponentContext) +trait DefaultModalComponentsModule(using ctx: ComponentContext[_]) extends ModalComponentsModule: override val modal: ModalComponents = new ModalComponents: diff --git a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala index 8df0465..e4b833d 100644 --- a/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala +++ b/tapir/js/src/main/scala/works/iterative/tapir/CustomTapirPlatformSpecific.scala @@ -36,8 +36,10 @@ ): I => Task[O] = val req = toRequestThrowErrors(endpoint, baseUri.toUri) req(_).followRedirects(false).send(backend).map(_.body).tapError { + // TODO: remove this handler from here, the app should decide what to do on auth failure + // Which is what the redirect here is case e: RuntimeException if e.getMessage == "Unexpected redirect" => // Reload window on redirect, as it means that we need to log in again - ZIO.attempt(org.scalajs.dom.window.location.reload(true)) + ZIO.attempt(org.scalajs.dom.window.location.reload()) case _ => ZIO.unit } diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala index 95ab654..d97f8f0 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LayoutModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait LayoutModule: def layout: LayoutComponents @@ -9,7 +9,7 @@ trait LayoutComponents: def card(content: Modifier[HtmlElement]*): HtmlElement -trait DefaultLayoutModule(using ctx: ComponentContext) extends LayoutModule: +trait DefaultLayoutModule(using ctx: ComponentContext[_]) extends LayoutModule: override val layout: LayoutComponents = new LayoutComponents: override def card(content: Modifier[HtmlElement]*): HtmlElement = div(cls("bg-white shadow px-4 py-5 sm:rounded-lg sm:p-6"), content) diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala new file mode 100644 index 0000000..02205bc --- /dev/null +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LinkSupport.scala @@ -0,0 +1,11 @@ +package works.iterative.ui.components.laminar + +import com.raquo.laminar.api.L.{*, given} + +object LinkSupport: + + extension [El <: org.scalajs.dom.EventTarget]( + ep: EventProcessor[org.scalajs.dom.MouseEvent, org.scalajs.dom.MouseEvent] + ) + def noKeyMod = + ep.filter(ev => !(ev.ctrlKey || ev.metaKey || ev.shiftKey || ev.altKey)) diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala index 5b5490f..448cf4f 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/ModalComponentsModule.scala @@ -1,7 +1,7 @@ package works.iterative.ui.components.laminar import com.raquo.laminar.api.L.{*, given} -import works.iterative.ui.components.tailwind.ComponentContext +import works.iterative.ui.components.ComponentContext trait ModalComponentsModule: @@ -13,7 +13,7 @@ onClose: Modifier[HtmlElement] ): HtmlElement -trait DefaultModalComponentsModule(using ctx: ComponentContext) +trait DefaultModalComponentsModule(using ctx: ComponentContext[_]) extends ModalComponentsModule: override val modal: ModalComponents = new ModalComponents: diff --git a/ui/js/src/main/scala/works/iterative/ui/components/tailwind/experimental/Color.scala b/ui/js/src/main/scala/works/iterative/ui/components/tailwind/experimental/Color.scala index 45261a7..fc6bf95 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/tailwind/experimental/Color.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/tailwind/experimental/Color.scala @@ -1,8 +1,6 @@ package works.iterative.ui.components.tailwind.experimental import scala.util.NotGiven -import com.raquo.domtypes.generic.Modifier -import org.scalajs.dom.SVGElement opaque type ColorWeight = String