Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ jobs:
matrix:
include:
- java: 16
scala: 2
- java: 8
scala: 3
- java: 8
scala: 2

steps:
- name: Git checkout
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ doc/_book
project/sjsincoptbench.sbt
project/metals.sbt
.bsp
/package-lock.json
4 changes: 2 additions & 2 deletions bench/react-with/src/demo.scala
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ object Demo {
)
)
}

import scalacss.internal.mutable.Mutex.mutex
val TodoApp = ScalaComponent.builder[Unit]
.initialState(State(Nil, ""))
.renderBackend[Backend]
.render_C()
.build

}
2 changes: 1 addition & 1 deletion bin/generate-aliases
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/env scala
#!/bin/bash scala

val infile = "core/shared/src/main/scala/scalacss/internal/Attrs.scala"
val outfile = "core/shared/src/main/scala/scalacss/internal/generated.scala"
Expand Down
8 changes: 5 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
name := "ScalaCSS"
import javax.print.attribute.DateTimeSyntax

name := "ScalaCSS"
scalaVersion := "3.8.4"
ThisBuild / homepage := Some(url("https://github.com/japgolly/scalacss"))
ThisBuild / licenses += ("Apache-2.0", url("http://opensource.org/licenses/Apache-2.0"))
ThisBuild / organization := "com.github.japgolly.scalacss"
ThisBuild / organization := "com.github.gmixa.scalacss"
ThisBuild / shellPrompt := ((s: State) => Project.extract(s).currentRef.project + "> ")
ThisBuild / startYear := Some(2015)
ThisBuild / versionScheme := Some("early-semver")

Test / fork := false
// Mutability & NameGen causes occasional test failures
ThisBuild / parallelExecution := false

Expand Down
34 changes: 15 additions & 19 deletions core/js/src/main/scala-3/scalacss/internal/ModeMacros.scala
Original file line number Diff line number Diff line change
Expand Up @@ -28,28 +28,24 @@ object ModeMacros {
def fail(msg: String): Nothing =
report.throwError(msg)

type S = Exports with mutable.Settings
val expr: Expr[S] =
readConfig("scalacss.mode") match {
readConfig("scalacss.mode") match {

case None =>
'{
if (_root_.scala.scalajs.LinkingInfo.developmentMode)
_root_.scalacss.DevDefaults
else
_root_.scalacss.ProdDefaults
}
case None =>
'{
if (_root_.scala.scalajs.LinkingInfo.developmentMode)
_root_.scalacss.DevDefaults
else
_root_.scalacss.ProdDefaults
}

case Some("dev") =>
'{ scalacss.DevDefaults }
case Some("dev") =>
'{ scalacss.DevDefaults }

case Some("prod") =>
'{ scalacss.ProdDefaults }
case Some("prod") =>
'{ scalacss.ProdDefaults }

case Some(x) =>
fail(s"Unrecognise option for scalacss.mode: $x. Legal values are 'dev' and 'prod'.")
}

Inlined(None, Nil, expr.asTerm).asExprOf[S]
case Some(x) =>
fail(s"Unrecognise option for scalacss.mode: $x. Legal values are 'dev' and 'prod'.")
}
}
}
6 changes: 6 additions & 0 deletions core/shared/src/main/scala/scalacss/internal/generated.scala
Original file line number Diff line number Diff line change
Expand Up @@ -970,6 +970,12 @@ abstract class AttrAliasesAndValueTRules extends ValueT.Rules {
* @see <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content">MDN</a>
*/
@inline final def justifyContent = Attrs.justifyContent
/**
* The CSS justify-items property defines the default justify-self for all items of the box, giving them all a default way of justifying each box along the appropriate axis.
*
* @see <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items">MDN</a>
*/
@inline final def justifyItems = Attrs.justifyItems
/**
* The CSS justify-self property sets the way a box is justified inside its alignment container along the appropriate axis.
*
Expand Down
6 changes: 4 additions & 2 deletions core/shared/src/test/scala/scalacss/full/DefaultsTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ import japgolly.microlibs.testutil.TestUtil._
import scalacss._
import utest._

import scala.language.postfixOps

object DefaultsTest extends TestSuite {

override def tests = Tests {
"dev" - Dev .test()
"prod" - Prod.test()
test("dev") - Dev .test()
test("prod") - Prod.test()
}

class SharedStyles(implicit reg: StyleSheet.Register) extends StyleSheet.Inline {
Expand Down
42 changes: 22 additions & 20 deletions core/shared/src/test/scala/scalacss/full/InlineTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package scalacss.full
import scala.concurrent.duration._
import scalacss.DevDefaults._

import scala.language.postfixOps

//object CopyDefaultsForInline extends Defaults
//import CopyDefaultsForInline._

Expand Down Expand Up @@ -300,7 +302,7 @@ object InlineTest extends utest.TestSuite {
def norm(css: String) = css.trim

override def tests = Tests {
"css1" - assertMultiline(norm(MyInline.render), norm(
test("css1") - assertMultiline(norm(MyInline.render), norm(
"""
|.manual {
| margin: 12px;
Expand Down Expand Up @@ -393,7 +395,7 @@ object InlineTest extends utest.TestSuite {
|}
""".stripMargin))

"css2" - assertMultiline(norm(MyInline2.render), norm(
test("css2") - assertMultiline(norm(MyInline2.render), norm(
"""
|.MyInline2-sb2 {
| margin-top: inherit;
Expand Down Expand Up @@ -472,7 +474,7 @@ object InlineTest extends utest.TestSuite {
|}
""".stripMargin))

"css3" - assertMultiline(norm(MyInline3.render), norm(
test("css3") - assertMultiline(norm(MyInline3.render), norm(
"""
|.MyInline3-dup1b {
| word-break: break-all;
Expand Down Expand Up @@ -533,55 +535,55 @@ object InlineTest extends utest.TestSuite {
|}
""".stripMargin))

"classnames" - {
"manual" - assertEq(MyInline.noMacrosOrClassnameHintHere.htmlClass, "manual")
test("classnames") - {
test("manual") - assertEq(MyInline.noMacrosOrClassnameHintHere.htmlClass, "manual")

"manualF" - {
test("manualF") - {
assertEq(MyInline3.innerObject.mybool(true).htmlClass, "blah-t")
assertEq(MyInline3.innerObject.mybool(false).htmlClass, "blah-f")
}

"everythingOk" - {
test("everythingOk") - {
assertEq(MyInline2.everythingOk(true) .htmlClass, "MyInline2-everythingOk-t")
assertEq(MyInline2.everythingOk(false).htmlClass, "MyInline2-everythingOk-f")
}

"indent" - {
test("indent") - {
assertEq(MyInline2.indent(2).htmlClass, "MyInline2-indent-2")
assertEq(MyInline2.indent(3).htmlClass, "MyInline2-indent-3")
assertEq(MyInline2.indent(4).htmlClass, "MyInline2-indent-4")
}

"opbool" - {
test("opbool") - {
assertEq(MyInline2.opbool(None) .htmlClass, "MyInline2-opbool-1")
assertEq(MyInline2.opbool(Some(true)) .htmlClass, "MyInline2-opbool-2")
assertEq(MyInline2.opbool(Some(false)).htmlClass, "MyInline2-opbool-3")
}

"sb1" - assertEq(MyInline2.sb1.htmlClass, "btn btn-default")
"sb2" - assertEq(MyInline2.sb2.htmlClass, "MyInline2-sb2 btn btn-default")
test("sb1") - assertEq(MyInline2.sb1.htmlClass, "btn btn-default")
test("sb2") - assertEq(MyInline2.sb2.htmlClass, "MyInline2-sb2 btn btn-default")

"empty" - assertEq(MyInline.empty.htmlClass, "MyInline-0001")
test("empty") - assertEq(MyInline.empty.htmlClass, "MyInline-0001")

"wth" - assertEq(MyInline2.`what the hell??`.htmlClass, "MyInline2-what_the_hell__")
test("wth") - assertEq(MyInline2.`what the hell??`.htmlClass, "MyInline2-what_the_hell__")

"dup1" - {
test("dup1") - {
assertEq(MyInline3.dup1a.htmlClass, "MyInline3-dup1b")
assertEq(MyInline3.dup1b.htmlClass, "MyInline3-dup1b-2")
}

"dup2" - {
test("dup2") - {
assertEq(MyInline3.dup2a.htmlClass, "MyInline3-dup2c")
assertEq(MyInline3.dup2b.htmlClass, "MyInline3-dup2c-2")
assertEq(MyInline3.dup2c.htmlClass, "MyInline3-dup2c-3")
}

"innerObject_1" - assertEq(MyInline3.innerObject.depth1.htmlClass, "MyInline3-innerObject-depth1")
"innerObject_2" - assertEq(MyInline3.innerObject.andAgain.depth2.htmlClass, "MyInline3-innerObject-andAgain-depth2")
test("innerObject_1") - assertEq(MyInline3.innerObject.depth1.htmlClass, "MyInline3-innerObject-depth1")
test("innerObject_2") - assertEq(MyInline3.innerObject.andAgain.depth2.htmlClass, "MyInline3-innerObject-andAgain-depth2")

}

"keyframes" - assertMultiline(norm(MyInlineWithKeyframes.render), norm("""
test("keyframes") - assertMultiline(norm(MyInlineWithKeyframes.render), norm("""
|@keyframes MyInlineWithKeyframes-kf1 {
| 0% {
| height: 100px;
Expand Down Expand Up @@ -648,7 +650,7 @@ object InlineTest extends utest.TestSuite {
|}
""".stripMargin))

"complexCond" - assertMultiline(norm(MyInlineComplexCond.render), norm(
test("complexCond") - assertMultiline(norm(MyInlineComplexCond.render), norm(
""".manual {
| margin: 12px;
| padding: 0.5ex;
Expand Down Expand Up @@ -721,7 +723,7 @@ object InlineTest extends utest.TestSuite {
|}
""".stripMargin))

"fontFaces" - assertMultiline(norm(MyInlineWithFontFace.render), norm("""
test("fontFaces") - assertMultiline(norm(MyInlineWithFontFace.render), norm("""
|@font-face {
| font-family: myFont;
| src: url(font.woff);
Expand Down
Loading
Loading