Skip to content

SlotOutlet

SlotOutlet<TProps>(props): ReactNode

Defined in: packages/react/src/slots/SlotOutlet.tsx:39

Renders an additive slot’s resolved contribution list (S8/S10/S11) — field.beforeInput/ afterInput, blocks.item.actions, blocks.header.actions, array.item.actions.

builtins and contributions are kept as two separate props (rather than one pre-merged array) because built-in components close over per-render handlers (onDuplicate, onRemove, …) that only exist at the call site — they cannot be constructed at defineConfig() time the way a project’s own admin.components list already is (step 7’s resolveComponentContributions already ordered that part). SlotOutlet merges the two arrays itself, THEN re-resolves order — a project’s before/after targeting a built-in id still works, because the built-in’s real id is present in the merged array before resolution runs.

TProps extends object

ComponentContributionInput<ReactHKT, TProps>[]

This call site’s built-in contributions (already-ordered is fine; final order is re-resolved here).

string

The form path condition gating resolves data/siblingData from (useSlotConditionData) — a field’s own name for field.beforeInput/afterInput, or one block/array item’s own path for blocks.item.actions/array.item.actions. Every current G call site passes one. Omitted only for a slot genuinely outside any form (none exist in G today) — condition is then never evaluated and a condition-bearing contribution always mounts, rather than being gated against fabricated data.

TProps

Props passed to every contribution’s component.

ComponentContributionInput<ReactHKT, TProps>[] | undefined

The project/plugin-authored contributions for this slot (from admin.components at whichever level the call site owns).

SlotId

The slot being rendered — used for error messages and the error boundary id.

ReactNode

The resolved, order-merged contribution list, each wrapped in a ComponentErrorBoundary.