Skip to content

Commit

Permalink
[#181] Don't leave an extra space at the end after RemoveClass
Browse files Browse the repository at this point in the history
  • Loading branch information
Tarmil committed Jul 12, 2018
1 parent 94d8d72 commit 4a04eee
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 3 deletions.
36 changes: 36 additions & 0 deletions WebSharper.UI.Tests/Main.fs
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,41 @@ module Main =
}
}

let EltTest =
TestCategory "Elt" {

Test "Class" {
let elt =
div [
attr.``class`` "overridden1"
Attr.Class "overridden2"
attr.``class`` "base1 base2"
Attr.Class "extra1"
Attr.Class "extra2 extra3"
] []
isFalseMsg (elt.HasClass "overridden1") "overridden1"
isFalseMsg (elt.HasClass "overridden2") "overridden2"
isTrueMsg (elt.HasClass "base1") "base1"
isTrueMsg (elt.HasClass "base2") "base2"
isTrueMsg (elt.HasClass "extra1") "extra1"
isTrueMsg (elt.HasClass "extra2") "extra2"
isTrueMsg (elt.HasClass "extra3") "extra3"
equalMsg elt.Dom?className "base1 base2 extra1 extra2 extra3" "full initial"
elt.AddClass "extra4"
isTrueMsg (elt.HasClass "extra4") "extra4"
equalMsg elt.Dom?className "base1 base2 extra1 extra2 extra3 extra4" "after AddClass"
elt.AddClass "extra4"
equalMsg elt.Dom?className "base1 base2 extra1 extra2 extra3 extra4" "after double AddClass"
elt.RemoveClass "extra1"
isFalseMsg (elt.HasClass "extra1") "remove extra1"
equalMsg elt.Dom?className "base1 base2 extra2 extra3 extra4" "after remove extra1"
elt.RemoveClass "extra4"
isFalseMsg (elt.HasClass "extra4") "remove extra4"
equalMsg elt.Dom?className "base1 base2 extra2 extra3" "after remove extra4"
}

}

type Rec = { x: string; y: Rec2 }
and Rec2 = { z: string; t: string }

Expand All @@ -551,6 +586,7 @@ module Main =
VarTest
ViewTest
ListModelTest
EltTest
|]
).ReplaceInDom(JS.Document.QuerySelector "#main")

Expand Down
10 changes: 7 additions & 3 deletions WebSharper.UI/Doc.Proxy.fs
Original file line number Diff line number Diff line change
Expand Up @@ -899,6 +899,8 @@ and [<JavaScript; Proxy(typeof<Elt>); Name "WebSharper.UI.Elt">]
internal Elt'(docNode, updates, elt: Dom.Element, rvUpdates: Updates) =
inherit Doc'(docNode, updates)

let clsRE cls = new RegExp(@"(\s|^)(" + cls + @")(\s|$)", "g")

static member New(el: Dom.Element, attr: Attr, children: Doc') =
let node = Docs.CreateElemNode el attr children.DocNode
let rvUpdates = Updates.Create children.Updates
Expand Down Expand Up @@ -1104,9 +1106,11 @@ and [<JavaScript; Proxy(typeof<Elt>); Name "WebSharper.UI.Elt">]
[<Name "RemoveClass">]
member this.RemoveClass'(cls: string) =
elt?className <-
(elt?className: String).Replace(
new RegExp(@"(?:(\s|^)" + cls + @")+(\s|$)", "g"),
"$1")
(clsRE cls).Replace(elt?className,
FuncWithArgs(fun (_fullStr, before, _cls, after) ->
if before = "" || after = "" then "" else " "
)
)

[<Name "HasClass">]
member this.HasClass'(cls: string) =
Expand Down

0 comments on commit 4a04eee

Please sign in to comment.