diff --git a/package-lock.json b/package-lock.json
index 0afd09a0..2557e4fa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6369,10 +6369,9 @@
}
},
"node_modules/alien-signals": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.1.2.tgz",
- "integrity": "sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==",
- "dev": true,
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-3.2.1.tgz",
+ "integrity": "sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==",
"license": "MIT"
},
"node_modules/ansi-html-community": {
@@ -21163,6 +21162,7 @@
"version": "1.9.0-beta.0",
"license": "MIT",
"dependencies": {
+ "alien-signals": "^3.2.1",
"deepmerge": "^4.3.1",
"morphdom": "^2.7.8"
},
diff --git a/packages/docs/components/DataBind/examples.md b/packages/docs/components/DataBind/examples.md
index a53f2fcb..9da3674a 100644
--- a/packages/docs/components/DataBind/examples.md
+++ b/packages/docs/components/DataBind/examples.md
@@ -6,7 +6,7 @@ title: DataBind, DataModel, DataEffect and DataComputed examples
## Immediate propagation
-In the following example, we use the `data-option-immediate` attribute to enable the [`immediate` option](./js-api.md#immediate) on the first ``, in order to set the value of the second `` on mount.
+In the following example, the first [`DataModel`](../DataModel/index.md) uses the [`immediate` option](./js-api.md#immediate) to hydrate the scoped `text` key on mount. The second model mirrors the same native `name`, and the keyed `DataBind` renders their shared value.
-
+
+
+
-
-
-
-
-
+
+
+
```
:::
+### Multiple virtual bindings
+
+Use virtual `data-bind:*` attributes to update several parts of an element from the same value:
+
+| Syntax | Behavior |
+| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| `data-bind:prop.` | Assigns the DOM property. |
+| `data-bind:attr.` | Removes the attribute for `false`, `null`, or `undefined`; writes an empty attribute for `true`; otherwise writes the stringified value. |
+| `data-bind:class.` | Toggles the class according to the result's boolean value. |
+| `data-bind:style.` | Clears the style for `false`, `null`, or `undefined`; otherwise writes the stringified value. |
+| `data-bind:text` | Assigns `textContent`. |
+
+A non-empty attribute value is a JavaScript expression with access to `value`, `target`, and `$data`. An empty attribute passes through the current value. When an element has one or more virtual bindings, they replace the default single `textContent` or property update. Bindings are read when first used; changing their attributes afterward is not supported.
+
+Use kebab-case for camel-cased DOM properties because HTML attribute names are case-insensitive, for example `data-bind:prop.tab-index` targets `tabIndex`.
+
+For ARIA attributes, explicitly stringify booleans when `"false"` must remain present, for example `data-bind:attr.aria-selected="String(value === 'overview')"`.
+
+The following disclosure keeps its button label while updating its class, ARIA state, and panel visibility from one scoped value. The `DataModel` uses its `value` property to hydrate the initial state; virtual bindings then retain the reactive value without replacing the label.
+
+```html
+
+
+
+
+ Disclosure content
+
+
+```
+
+Expression errors are reported without interrupting updates to the other bindings, matching `DataComputed` and `DataEffect` behavior.
+
### Advanced usage with computed and effects
The whole family of `Data...` components can be used to create reactivity in your HTML with only a few `data-...` attributes.
diff --git a/packages/docs/components/DataBind/js-api.md b/packages/docs/components/DataBind/js-api.md
index 0e802160..edff5d0f 100644
--- a/packages/docs/components/DataBind/js-api.md
+++ b/packages/docs/components/DataBind/js-api.md
@@ -14,10 +14,10 @@ The `DataBind` component can be used to keep a value in sync between multiple DO
- Type: `string`
- Default: `'textContent'`
-The default value for the `prop` options depends on the type of the targeted element. If the element is an input, a textearea or a select, the default prop will be one of the following:
+The default value for the `prop` option depends on the type of the targeted element. If the element is an input, a textarea, or a select, the default prop will be one of the following:
- `valueAsDate` for ``
-- `valueAsNumber` from ``
+- `valueAsNumber` for ``
- `value` for all other inputs
- for `