Add fonts, autotable, autotable examples
This commit is contained in:
41
go/wasmruntime/style_test.go
Normal file
41
go/wasmruntime/style_test.go
Normal file
@@ -0,0 +1,41 @@
|
||||
//go:build js && wasm
|
||||
|
||||
package wasmruntime
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"kjol/vdom"
|
||||
)
|
||||
|
||||
// Floating.Panel and Modal both declare their initial inline style in the style
|
||||
// ATTRIBUTE, then overwrite top/left/opacity imperatively with SetStyle. That only
|
||||
// works because the reconciler skips setAttribute when the declared value has not
|
||||
// changed. If that ever stops being true, every floating panel silently snaps back
|
||||
// to visibility:hidden at 0,0 on the next re-render. Pin it.
|
||||
func TestImperativeStylesSurviveReRender(t *testing.T) {
|
||||
root := document.Call("createElement", "div")
|
||||
panel := vdom.NewRef()
|
||||
|
||||
const declared = "position:fixed;top:0;left:0;visibility:hidden"
|
||||
a := vdom.El("div", vdom.WithRef(panel), vdom.Attr("style", declared), vdom.Text("one"))
|
||||
patchChildren(root, nil, one(a))
|
||||
|
||||
// Position it, the way Reposition does.
|
||||
SetStyle(panel, "top", "120px")
|
||||
SetStyle(panel, "left", "40px")
|
||||
SetStyle(panel, "visibility", "visible")
|
||||
|
||||
// A re-render with the SAME declared style but different content.
|
||||
b := vdom.El("div", vdom.WithRef(panel), vdom.Attr("style", declared), vdom.Text("two"))
|
||||
patchChildren(root, one(a), one(b))
|
||||
|
||||
got := root.Get("innerHTML").String()
|
||||
if !strings.Contains(got, "two") {
|
||||
t.Fatalf("content did not update: %s", got)
|
||||
}
|
||||
if !strings.Contains(got, "top: 120px") || !strings.Contains(got, "visibility: visible") {
|
||||
t.Errorf("imperative position was clobbered by the re-render:\n%s", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user