diff --git a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala index b3b01f6..1276441 100644 --- a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala +++ b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala @@ -24,6 +24,8 @@ def opt(msg: UserMessage, fallback: => UserMessage*): Option[String] = maybeResolve(msg, fallback*)(get(_: UserMessage)) + def currentPrefixes: List[String] = Nil + @tailrec private def maybeResolve[T, U](id: T, fallback: T*)( tryResolve: T => Option[String] @@ -73,3 +75,6 @@ override def withPrefixes(prefixes: String*): MessageCatalogue = underlying.withPrefixes(prefixes*) + + override def currentPrefixes: List[String] = + prefixes.toList ++ underlying.currentPrefixes diff --git a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala index b3b01f6..1276441 100644 --- a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala +++ b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala @@ -24,6 +24,8 @@ def opt(msg: UserMessage, fallback: => UserMessage*): Option[String] = maybeResolve(msg, fallback*)(get(_: UserMessage)) + def currentPrefixes: List[String] = Nil + @tailrec private def maybeResolve[T, U](id: T, fallback: T*)( tryResolve: T => Option[String] @@ -73,3 +75,6 @@ override def withPrefixes(prefixes: String*): MessageCatalogue = underlying.withPrefixes(prefixes*) + + override def currentPrefixes: List[String] = + prefixes.toList ++ underlying.currentPrefixes diff --git a/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala b/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala new file mode 100644 index 0000000..dfc467c --- /dev/null +++ b/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala @@ -0,0 +1,10 @@ +package works.iterative.ui.components + +import com.raquo.laminar.api.L.* +import works.iterative.core.FileRef + +trait FileComponents: + // I hate using ComponentContext all around, we need to drop it + def renderFileRefs(ref: Seq[FileRef], rolledUp: Boolean = false)(using + ComponentContext[?] + ): HtmlElement diff --git a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala index b3b01f6..1276441 100644 --- a/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala +++ b/core/shared/src/main/scala/works/iterative/core/MessageCatalogue.scala @@ -24,6 +24,8 @@ def opt(msg: UserMessage, fallback: => UserMessage*): Option[String] = maybeResolve(msg, fallback*)(get(_: UserMessage)) + def currentPrefixes: List[String] = Nil + @tailrec private def maybeResolve[T, U](id: T, fallback: T*)( tryResolve: T => Option[String] @@ -73,3 +75,6 @@ override def withPrefixes(prefixes: String*): MessageCatalogue = underlying.withPrefixes(prefixes*) + + override def currentPrefixes: List[String] = + prefixes.toList ++ underlying.currentPrefixes diff --git a/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala b/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala new file mode 100644 index 0000000..dfc467c --- /dev/null +++ b/ui/js/src/main/scala/works/iterative/ui/components/FileComponents.scala @@ -0,0 +1,10 @@ +package works.iterative.ui.components + +import com.raquo.laminar.api.L.* +import works.iterative.core.FileRef + +trait FileComponents: + // I hate using ComponentContext all around, we need to drop it + def renderFileRefs(ref: Seq[FileRef], rolledUp: Boolean = false)(using + ComponentContext[?] + ): HtmlElement diff --git a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LaminarExtensions.scala b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LaminarExtensions.scala index 3edb801..2a6c7d4 100644 --- a/ui/js/src/main/scala/works/iterative/ui/components/laminar/LaminarExtensions.scala +++ b/ui/js/src/main/scala/works/iterative/ui/components/laminar/LaminarExtensions.scala @@ -58,8 +58,14 @@ inline def asMod(using ctx: ComponentContext[?]): Mod[HtmlElement] = msgAttrs(msg.id, ctx.messages(msg)) - private inline def msgAttrs(id: MessageId, text: String): HtmlMod = - nodeSeq(dataAttr("msgid")(id.toString()), text) + private inline def msgAttrs(id: MessageId, text: String)(using + cctx: ComponentContext[?] + ): HtmlMod = + nodeSeq( + dataAttr("msgid")(id.toString()), + dataAttr("msgprefix")(cctx.messages.currentPrefixes.mkString(",")), + text + ) given (using ComponentContext[?]): HtmlRenderable[UserMessage] with def toHtml(msg: UserMessage): Modifier[HtmlElement] =