Files
rose-ash/sx/sx/applications/hyperscript/gallery-events-init/index.sx
giles 1a9c8d61b5 Hyperscript gallery: one-per-file page migration (76 pages)
Migrates hyperscript demo/reference pages from grouped index files into
one-per-page directory layout. Each gallery-<topic>/index.sx is a single
defpage with its own demo, matching the one-per-file convention used
elsewhere in sx/sx/applications/.

Covers: control (call/go/if/log/repeat/settle), dom (add/append/empty/
focus/hide/measure/morph/put/remove/reset/scroll/set/show/swap/take/
toggle), events (asyncError/bootstrap/dialog/fetch/halt/init/on/pick/
send/socket/tell/wait/when), expressions (asExpression/attributeRef/
closest/collectionExpressions/comparisonOperator/default/in/increment/
logicalOperator/mathOperator/no/objectLiteral/queryRef/select/splitJoin),
language (askAnswer/assignableElements/component/cookies/def/dom-scope/
evalStatically/js/parser/relativePositionalExpression/scoping), and
reactivity (bind/live/liveTemplate/reactive-properties/resize/transition).

Adds _islands/hs-test-card.sx — a shared island for hyperscript demos.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 09:08:30 +00:00

37 lines
1.9 KiB
Plaintext

;; AUTO-GENERATED from spec/tests/hyperscript-upstream-tests.json
;; DO NOT EDIT — regenerate with:
;; python3 tests/playwright/generate-sx-tests.py --emit-pages
(defcomp ()
(~docs/page :title "Hyperscript: init (3 tests — 1 runnable)"
(p :style "color:#57534e;margin-bottom:1rem" "Live cards for the upstream init tests. 1 of 3 are reproducible in-browser; the remainder show their source for reference.")
(p :style "color:#78716c;font-size:0.875rem;margin-bottom:1rem"
"Theme: " (a :href "/sx/(applications.(hyperscript.gallery-events))"
:style "color:#7c3aed" "events"))
(div :style "display:flex;flex-direction:column"
(~hyperscript/hs-test-card
:name "can define an init block inline"
:html "<div _='init set my.foo to 42 end on click put my.foo into my.innerHTML'></div>"
:action "div.click()"
:check "div.innerHTML.should.equal(\"42\")"
:run-src "(fn (sandbox)
(let ((_el-div (dom-create-element \"div\")))
(dom-set-attr _el-div \"_\" \"init then set my.foo to 42 end on click put my.foo into my.innerHTML\")
(dom-append sandbox _el-div)
(hs-activate! _el-div)
(dom-dispatch _el-div \"click\" nil)
(assert= (dom-inner-html _el-div) \"42\")
))")
(~hyperscript/hs-test-card
:name "can define an init block in a script"
:html "<script type='text/hyperscript'> init set window.foo to 42 end</script>"
:action "(see body)"
:check "window.foo.should.equal(42)"
:run-src "(fn (sandbox) (error \"not yet runnable in gallery — see test suite\"))")
(~hyperscript/hs-test-card
:name "can initialize immediately"
:html "<script type='text/hyperscript'>init set window.foo to 10 init immediately set window.bar to window.foo </script>"
:action "(see body)"
:check "window.foo.should.equal(10)"
:run-src "(fn (sandbox) (error \"not yet runnable in gallery — see test suite\"))"))))