VVibeFlui

Computed Values

Computed resolvers derive values from row data, form values, or runtime context.

Use computed values when the schema needs a display value or generated form value without embedding a function in the schema.

Computed table column

schemas/users/user-table.schema.ts

TS
export const usersSchema = {
  version: "1.0.0",
  resource: "users",
  table: {
    columns: [
      {
        key: "displayName",
        label: "Display Name",
        type: "computed",
        computed: "users.displayName"
      }
    ]
  },
  registry: {
    computedResolvers: ["users.displayName"]
  }
} as const;

Computed form field

schemas/users/user-form.schema.ts

TS
export const userFormSchema = {
  version: "1.0.0",
  resource: "users",
  form: {
    fields: [
      { name: "name", label: "Name", type: "text" },
      {
        name: "slug",
        label: "Slug",
        type: "text",
        computed: "users.slugFromName",
        computedFrom: "name"
      }
    ]
  },
  registry: {
    computedResolvers: ["users.slugFromName"]
  }
} as const;

computedFrom lists the source field dependencies for a computed form field. When dependencies are present, VibeFlui reuses the previous computed value until one of those source values changes.

Runtime registry

lib/vibeflui/registry.ts

TS
import { createRegistry } from "@vibeflui/core";

export const registry = createRegistry({
  computedResolvers: {
    "users.displayName": ({ row }) => {
      return [row?.name, row?.email].filter(Boolean).join(" · ");
    },
    "users.slugFromName": ({ values }) => {
      return String(values?.name ?? "")
        .trim()
        .toLowerCase()
        .replace(/\s+/g, "-");
    }
  }
});

computed and compute

Table columns support both computed and compute keys. Prefer computed in new documentation.

schemas/users/user-table-columns.ts

TS
{
  key: "displayName",
  type: "computed",
  computed: "users.displayName"
}

Computed values are not backend truth

Computed values are useful for UI convenience. If a computed value must be stored or trusted, recompute or validate it on the backend.