Fieldset
Native <fieldset> group with legend, description, and error wiring.
|
|
| Package |
@vizejs/ui/fieldset |
| Maturity |
stable |
| Own the source |
vize lib pull fieldset |
| Requires |
context, field-wiring, id |
| Aliases |
fieldset, field group, legend, radio group wrapper, form section |
| Covers |
HTML fieldset/legend, WAI-ARIA group, React Aria Fieldset |
Usage
import { Fieldset, FieldsetLegend, FieldsetDescription, FieldsetErrorMessage } from "@vizejs/ui/fieldset";
Or copy the source into your project with vize lib pull fieldset (see Source Distribution).
API
Fieldset
Source: src/families/form/fieldset/fieldset.vue
Props
| Prop |
Type |
Default |
Description |
id |
string | null |
undefined |
Fieldset id. null and undefined select a deterministic fallback. |
name |
string |
undefined |
Group name matched against errors[].name (for example "address"), also set as the native fieldset name. |
form |
string |
undefined |
Id of a form owner outside the component tree. |
errors |
readonly FormFieldError[] |
[] |
Normalized form errors; entries whose name equals name mark the group invalid. |
invalid |
boolean |
undefined |
Consumer-owned invalid override. undefined derives it from matching errors. |
disabled |
boolean |
false |
Natively disable the fieldset and every descendant form control. |
hasDescription |
boolean |
false |
Whether a FieldsetDescription is rendered and joins aria-describedby. |
hasErrorMessage |
boolean |
true |
Whether a FieldsetErrorMessage is rendered while invalid and joins aria-describedby. |
Events
| Event |
Payload |
Description |
invalid-change |
[invalid: boolean, errors: readonly FormFieldError[]] |
Fired after the derived invalid state changes, with the matching errors. |
Slots
| Slot |
Slot props |
Description |
default |
FieldsetSlotState |
Renders the legend, description, fields, and error message with group state. |
Exposed
| Member |
Type |
Description |
element |
Readonly<ShallowRef<HTMLElement | null>> |
Template ref to the rendered root element. |
invalid |
— |
|
id |
— |
|
FieldsetLegend
Source: src/families/form/fieldset/fieldset-legend.vue
Slots
| Slot |
Slot props |
Description |
default |
Record<string, never> |
Legend text that names the group; render it as the first child of the Fieldset. |
FieldsetDescription
Source: src/families/form/fieldset/fieldset-description.vue
Props
| Prop |
Type |
Default |
Description |
as |
PrimitiveAs |
"p" |
Native element, custom element, or component to render. |
Slots
| Slot |
Slot props |
Description |
default |
Record<string, never> |
Group-level help text; set hasDescription on the Fieldset so it is referenced. |
FieldsetErrorMessage
Source: src/families/form/fieldset/fieldset-error-message.vue
Props
| Prop |
Type |
Default |
Description |
as |
PrimitiveAs |
"p" |
Native element, custom element, or component to render. |
forceMount |
boolean |
false |
Keep the element in the DOM while the group is valid. |
Slots
| Slot |
Slot props |
Description |
default |
FieldsetErrorMessageSlotState |
Group validation text; defaults to the first matching error message. |
Behavior
Normative state x input -> outcome table for fieldset.vue,
fieldset-legend.vue, fieldset-description.vue, and
fieldset-error-message.vue (@vizejs/ui/fieldset). The group is a native
<fieldset> named by its <legend>; ids come from the shared field-wiring
foundation. Every row is proven by the named test in fieldset.test.ts or
fieldset-ssr.test.ts; compile-only assertions live in fieldset.types.test-d.ts.
| # |
State |
Input |
Outcome |
Proven by |
| FS1 |
valid, described |
render |
native <fieldset> with id and name, first-child <legend>, description id joined into aria-describedby, no error |
renders a native fieldset named by its legend and described by its description |
| FS2 |
matching form error |
errors with the group name |
group becomes invalid, error message renders with the derived id and joins aria-describedby; emits invalid-change |
matching form errors mark the group invalid and reference the error message |
| FS3 |
override / disabled |
invalid, forceMount, disabled |
invalid overrides errors; forceMount keeps the message; disabled is the native attribute that disables descendants |
invalid override, forceMount, and native disabled propagation |
| FS4 |
part without provider |
setup |
throws the stable VIZE_UI_CONTEXT_MISSING: Fieldset diagnostic |
parts require a Fieldset provider |
| FS5 |
SSR / hydration |
isolated requests |
byte-identical markup with deterministic ids and relations; hydration without diagnostics |
renders byte-identical fieldset markup and hydrates without mismatches |
Public extension contract
| Surface |
Contract |
| Parts |
root (fieldset), legend, description, error-message. |
| Data attributes |
data-vize-ui, root data-state (valid/invalid/disabled), data-invalid on root and legend. |
| Ids |
<id>-description and <id>-error, matching useFieldWiring and useFormFieldProps conventions. |
The subpath is tree-shakable and ships no CSS; those package contracts are
pinned by distribution.test.ts, check:size, and check:tree-shaking.