@@ -12,7 +12,17 @@ import scala.scalajs.js.annotation.*
1212@ JSExportTopLevel (" TyrianApp" )
1313object SandboxZIO extends TyrianZIOApp [Msg , Model ]:
1414
15- def router : Location => Msg = Routing .externalOnly(Msg .NoOp , Msg .FollowLink (_))
15+ def router : Location => Msg =
16+ Routing .externalOnly(
17+ Msg .NoOp ,
18+ _ match {
19+ case url if url.contains(" ultra" ) =>
20+ Msg .FollowLink (url, true )
21+
22+ case url =>
23+ Msg .FollowLink (url, false )
24+ }
25+ )
1626
1727 def init (flags : Map [String , String ]): (Model , Cmd [Task , Msg ]) =
1828 (Model .init, Cmd .None )
@@ -21,7 +31,10 @@ object SandboxZIO extends TyrianZIOApp[Msg, Model]:
2131 case Msg .NoOp =>
2232 (model, Cmd .None )
2333
24- case Msg .FollowLink (href) =>
34+ case Msg .FollowLink (href, openInNewTab) if openInNewTab =>
35+ (model, Nav .openUrl(href))
36+
37+ case Msg .FollowLink (href, openInNewTab) =>
2538 (model, Nav .loadUrl(href))
2639
2740 case Msg .NewRandomInt (i) =>
@@ -64,9 +77,11 @@ object SandboxZIO extends TyrianZIOApp[Msg, Model]:
6477 div(
6578 div(hidden(false ))(" Random number: " + model.randomNumber.toString),
6679 div(
67- a(href := " /another-page" )(" Internal link (will be ignored)" ),
80+ a(href := " /another-page" )(s " Internal ${_nbsp_}link (will be ignored) " ),
81+ br,
82+ a(href := " http://tyrian.indigoengine.io/" )(" Tyrian website (opens in current window)" ),
6883 br,
69- a(href := " http://tyrian .indigoengine.io/" )(" Tyrian website" )
84+ a(href := " http://ultraviolet .indigoengine.io/" )(text( " Tyrian website" ), _nbsp_, text( " (opens in new tab) " ) )
7085 ),
7186 div(
7287 input(placeholder := " Text to reverse" , onInput(s => Msg .NewContent (s)), myStyle),
@@ -164,7 +179,7 @@ enum Msg:
164179 case Remove
165180 case Modify (i : Int , msg : Counter .Msg )
166181 case NewRandomInt (i : Int )
167- case FollowLink (href : String )
182+ case FollowLink (href : String , newTab : Boolean )
168183 case NoOp
169184
170185object Counter :
0 commit comments