Skip to main content
Version: 2.0.0

Dependent Fields

A dependent field is a purely output field whose value changes whenever at least one field it depends on is provided and accepted.

Loading playground…

Default values

A dependent field must declare a default value. Use .default(value) for a static default or .default(resolver).resolve(...) for a computed default.

b.dependent("slug", "name")
.default("")
.resolve(({ input }) => input.name!.toLowerCase().replace(/\s+/g, "-"));

The static default is used when none of the dependencies are provided or accepted. The resolver receives the operation context and is invoked whenever a dependency is accepted.

Readonly

readonly() is only available when the default is a static value. It locks the field once its value has diverged from the default.

Loading playground…

With a resolver default, readonly() is not offered; the resolver itself controls when the field is recomputed.

Hooks

Dependent fields support onDelete and onSuccess listeners.

API summary

MethodDescription
dependent(name, dependsOn)Create a dependent field. dependsOn can be a single field or an array.
default(value)Static default used when no dependency is triggered.
default(resolver).resolve(r)Computed default; resolver runs when a dependency is accepted.
readonly()Locks after divergence; only with a static default.
onDelete(handler)Listener invoked by model.delete.
onSuccess(handler)Listener invoked after a successful create/update.