OneHot Category
onehot-category renders like a category field and submits one 0/1 column per option. The selected option gets 1; every other option gets 0.
Schema
Section titled “Schema”const schema = { fields: [ { kind: "onehot-category", id: "color", label: "Color", required: true, options: [ { label: "Red", value: "red", mappedTo: "is_red" }, { label: "Green", value: "green", mappedTo: "is_green" }, { label: "Blue", value: "blue", mappedTo: "is_blue" }, ], }, { kind: "number", id: "size", label: "Size", mappedTo: "size" }, ], reports: [{ kind: "classifier", mappedTo: "risk" }],};Selecting green submits:
{ "is_red": 0, "is_green": 1, "is_blue": 0, "size": 42 }No hidden subordinate fields are needed.
Use resolveOneHotDisplayValue(field, modelValues, options) to restore the selected UI value from saved one-hot model columns.
Options
Section titled “Options”| Property | Type | Meaning |
|---|---|---|
label | string | Text shown in the dropdown. |
value | string | Stored UI value. |
mappedTo | string | number | record | Backend feature key, numeric position, or backend-specific map. |
Rules:
onehot-categoryis strict 0/1 encoding.- Duplicate resolved
mappedTotargets throw. - Missing backend-specific
mappedTotargets throw. - Reverse display throws when multiple options are selected.
- Use
mapped-categoryfor arbitrary mappings or multi-column presets.