1.2.0 -> 2.x migration guide #627
Replies: 7 comments 5 replies
-
Example migration:import org.scalajs.dom
// Before (deprecated)
val response = dom.experimental.ResponseInit(myStatus, myStatusText, myHeaders)
// After
val response = new dom.ResponseInit {
status = myStatus
statusText = myStatusText
headers = myHeaders
} Note: this example has been updated to reflect corrections made in v2.1.0. For discussion see #624. |
Beta Was this translation helpful? Give feedback.
-
(I was using // before
val seqOfFiles = new EasySeq[File](el.ref.files.length, el.ref.files.apply).toSeq
// after
val seqOfFiles = el.ref.files.toSeq |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
JS-native traits that don't have their vars implemented should be initialized as noted above: val response = new dom.ResponseInit {
var status = myStatus
var statusText = myStatusText
var headers = myHeaders
} There are traits that have the vars initialized. For example, trait MutationObserverInit extends js.Object {
var childList: js.UndefOr[Boolean] = js.undefined
// ... These are intended to be initialized the following way: new MutationObserverInit {
this.childList = someChildList
} Note that we're not overriding the var in this case, rather we're imperatively re-assigning it in the constructor. (thanks, Sébastien, for pointing this out!) (see #624) |
Beta Was this translation helpful? Give feedback.
-
Beforeimport org.scalajs.dom.ext.Ajax
Ajax.post(
url = "url",
headers = Map("header" -> "value", ...),
data = "body"
) Afterimport org.scalajs.dom.{Fetch, HttpMethod, RequestInit}
Fetch.fetch(
"url",
new RequestInit {
method = HttpMethod.POST
headers = scalajs.js.Dictionary("header" -> "value", ...)
body = "body"
}
).toFuture |
Beta Was this translation helpful? Give feedback.
-
There used to be a package object |
Beta Was this translation helpful? Give feedback.
-
CrossVersion.for3Use2_13
As scala-js-dom v2.x publishes a Scala 3 artifact, this setting is no longer necessary. Failing to remove this from your build.sbt will cause your library to become binary-incompatible with other libraries correctly depending on scala-js-dom v2.x.
Big picture
To address the deprecation warnings:
dom.raw.*
,dom.experimental.*
anddom.crypto.*
sub-packages withdom.*
. Nearly everything is indom.*
now except forintl
andwebgl
.new
-based constructors instead ofapply
-based constructors.You can also automate some, hopefully the majority, of your migration by running this quick script:
Additional details
Please comment with your notes and tips for a successful migration! For questions/issues with migration, please create an issue instead.
Beta Was this translation helpful? Give feedback.
All reactions