59 lines
1.8 KiB
HTML
59 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<script type="module" src="datastar.js"></script>
|
|
<title>Document</title>
|
|
<link rel="stylesheet" href="main.css">
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div data-signals:count="-1" data-text="$count" data-signals:baz="'hi, there'"></div>
|
|
<pre data-json-signals></pre>
|
|
<div data-signals:foo="$baz">
|
|
<input data-bind:foo value="bar" />
|
|
</div>
|
|
|
|
<div data-signals:foot="0">
|
|
<select data-bind:foot>
|
|
<option value="5">10</option>
|
|
</select>
|
|
</div>
|
|
<input type="file" data-bind:files multiple />
|
|
<div data-init__delay.5000ms="$someValue = 1"></div>
|
|
<button data-on:dblclick__once="$count = 0">Reset</button>
|
|
<div data-on-intersect="$intersected = true"></div>
|
|
<div data-on-interval__duration.4s="$counter++"></div>
|
|
<div data-on-signal-patch="console.log('A signal changed!', patch)"></div>
|
|
<article data-ref:foo></article>
|
|
<div>$foo is a reference to a <span data-text="$foo.tagName"></span> element</div>
|
|
<script>
|
|
let counter = 0;
|
|
|
|
// helper function that activates the PatchSignals
|
|
// watcher plugin to simulate a completed fetch request
|
|
const patchSignals = (count) => {
|
|
// a simulated `datastar-patch-signals` event
|
|
const detail = {
|
|
type: "datastar-patch-signals",
|
|
argsRaw: {
|
|
signals: JSON.stringify({ count })
|
|
}
|
|
};
|
|
|
|
// trigger the SSEEventWatcher by simulating a `datastar-fetch` event
|
|
document.dispatchEvent(new CustomEvent("datastar-fetch", { detail }));
|
|
};
|
|
|
|
setInterval(() => {
|
|
patchSignals(counter);
|
|
counter++;
|
|
}, 2000);
|
|
|
|
</script>
|
|
</body>
|
|
|
|
</html> |