Skip to main content
What every <VeltComments> prop actually does at runtime, its default behavior, and how it combines with related props. Props gives the name/type/default; this file gives the behavior. See the behaviors index for the cross-component state machines, positioning ownership, and the collapsedComments × collapsedRepliesPreview / composer matrices (referenced below, not duplicated). Field-level data shapes live in Data models. Every prop maps to a feature-service flag. Booleans coerce strings: "true"/"false" are JSON-parsed, an omitted prop never runs the setter (so the service default stands), and an empty-string boolean (darkMode with no value) counts as true. Array/object props are JSON-parsed if passed as a string. A malformed value is swallowed silently because the setter catches parse failures: the flag keeps its prior value rather than throwing.

Per-prop behavior (exhaustive)

<VeltComments> is a single host component with ~122 active props. Its exhaustive per-prop behavior is grouped by prop family below: Core feature toggles, Mentions / autocomplete, Layout / interaction modes, Placeholders, Shadow DOM & dark mode, and Callbacks: followed by the deprecated aliases. Each row states the prop’s default, its runtime effect, and how it interacts with related props. The zero-prop baseline is summarized in Default behaviors (no prop needed); every prop in Props Part 1 is covered (see Coverage).

Core feature toggles


Mentions / autocomplete


Layout / interaction modes


Placeholders


Shadow DOM & dark mode


Callbacks

<VeltComments> exposes these as @Output event emitters. Pass a handler function; it fires on the named action.

Deprecated aliases (handled, but don’t use)

These still resolve to a working setter but are superseded:

Default behaviors (no prop needed)

The baseline <VeltComments> renders with: verified against the comments-container component and comment feature service:

Prop-interaction matrix

The pairwise interactions for each prop are documented in the Interactions & gotchas column of the tables above. The headline multi-prop matrices that span <VeltComments>: collapsedComments × collapsedRepliesPreview (the exact rendered reply structure), the composer collapsed/open lifecycle, sortBy × sortOrder, shadowDom vs the per-surface shadow flags, visibilityOptions requiring the private-comments capability, the commentPlaceholder vs replyPlaceholder priority chain, and fullExpanded vs collapsedComments precedence: live in the behaviors index and are linked from the rows above rather than duplicated here.

Positioning & composition

<VeltComments> is the host that owns positioning for the anchored comment surfaces: it places pins where the user clicks, anchors each pin dialog to its pin, and re-anchors on resize (floatingCommentDialog true by default). The comment dialog itself takes no coordinate input: it only requests re-anchoring. You keep this anchoring for free in wireframes; primitives/headless take over positioning. The statically-placed comment surfaces (sidebar, inline section, notifications panel) are positioned by your own layout. See Behaviors → Positioning ownership and the anchored-vs-static classification in Component definitions.

Coverage

This file documents all 122 distinct active props of <VeltComments> listed in Props Part 1. No prop is skipped. That’s 125 entries against props.md’s stated 129: the remaining 4 are duplicate-row count artifacts in props.md (the combined atHereLabel/atHereDescription, the allowedElement* triple, the per-surface dark-mode triple, and the per-surface shadow rows), each documented individually above. Only dialogDarkMode has limited runtime coverage: it has no dedicated container setter, so its effect is described as inherited/forwarded rather than invented.