Skip to content

@setAll

Assign one value to every signal whose path matches a filter. Without a filter, every signal is set.

@setAll(false, { include: /^flags\./ })
@setAll('', { include: /^form\./, exclude: /\.id$/ })
@setAll(null) // removes every signal
checkbox group
<div data-signals="{ flags: { a: false, b: false, c: false } }">
<div class="row"><label><input type="checkbox" data-bind:flags.a> a</label><label><input type="checkbox" data-bind:flags.b> b</label><label><input type="checkbox" data-bind:flags.c> c</label></div>
<div class="row"><button data-on:click="@setAll(true, { include: /^flags\./ })">all on</button><button data-on:click="@setAll(false, { include: /^flags\./ })">all off</button></div>
</div>

Clear every field under a prefix while leaving the rest of the store alone.

clear form.*

<div data-signals="{ form: { name: 'Ada', email: 'ada@example.com' }, theme: 'dark' }">
<div class="row"><input data-bind:form.name> <input data-bind:form.email> <button data-on:click="@setAll('', { include: /^form\./ })">clear form</button></div>
<pre data-json-signals="{ include: /^(form|theme)/ }"></pre>
</div>

Runs in one batch, so dependents update once. Computed paths are skipped. The filter is the same { include, exclude } shape used by requests, persist and json-signals.

import { setAll } from 'sigmx/plugins'

Registering setAll adds 47 bytes brotli (94 gzip, 212 minified) on top of the core. See bundle sizes.