annotationId | (none) | Binds the dialog to a specific annotation; resolves/creates that annotation’s shared config so the real thread loads (vs. an empty composer). Falls back to the annotation-id attribute when unset. | Required for standalone use. Superseded when a parent passes the annotation object / config directly. Changing it re-syncs the thread. Also the anonymousEmail override no-ops without it. |
multiThreadAnnotationId | (none) | Selects one thread within a multi-thread pin; written into UI state and adds the --multi-thread-mode host class. | Styling/scoping only: no separate layout branch here. Meaningful only when the annotation is part of a multi-thread pin. |
defaultCondition | true | Render gate. true honors the normal “config + annotation present” visibility check; false short-circuits it so the dialog always renders (testing/docs escape hatch). | Tri-state string-coerced (''/'true' → true). Only affects visibility, not mode selection. |
inlineCommentSectionMode | false | Switches the dialog into inline-section layout (used when rendered inside VeltInlineCommentsSection). | Mutually exclusive with sidebarMode and dialog mode. Forced false for the standalone annotation-id path unless explicitly set. Only this mode honors composerPosition top/bottom. |
commentPinSelected | false | Whether the source pin is selected. OR’d with fullExpanded into the dialog’s selected state → selected host class, which (with default expandOnSelection) reveals all comments + composer. On select it marks an unread annotation read and requests overlay reposition; on deselect it saves/cancels any draft. | String-coerced ('' → true). Drives the selection half of the dialog state machine. Interacts with fullExpanded, expandOnSelection, focusedThreadMode, pageModeComposer. |
fullExpanded | false | Forces the thread fully expanded (every comment, no message truncation) regardless of selection. OR’d with commentPinSelected into the selected state. | Opposite end from collapsedComments: don’t set both. See Behaviors → fullExpanded vs default. |
shadowDom | true | Shadow-DOM style isolation for the dialog. Priority: explicit prop value → host’s dialogShadowDOM → default true. When explicitly true, wraps the wireframe host in an internal shadow-DOM element. | String-coerced: only literal 'false' turns it off. See Behaviors → shadowDom vs dialogShadowDom. |
darkMode | false | Dark theme; stored in UI state and synced to the themed component. Purely visual. | Component-level value overrides global/feature dark mode. |
readOnly | false | View-only. When true, hides the header, composer, and composer-top/bottom (the templates guard on !readOnly). | Both composerPosition resolvers require !readOnly, so a read-only dialog shows no composer in any position. |
sidebarMode | false | Switches the dialog into sidebar layout (the dialog as rendered inside the comments sidebar). | Mutually exclusive with inline-section and dialog modes. Pairs with expandOnSelection={false} for selection-without-expansion in the sidebar list. |
isFocusedThreadEnabled | false | Enables focused-thread affordances (consumed by child header/primitives). | Pairs with focusedThreadMode / openAnnotationInFocusMode. No direct template branch in the dialog itself. |
openAnnotationInFocusMode | false | Marks that selecting the annotation should open it in focus mode (emitted via the open-focused-thread output). | Emits the focus-mode request; this reference does not document the receiving surface. |
expandOnSelection | true | Whether selecting the dialog expands it (replies + composer) or only selects it. false lets a sidebar thread be selected without expanding (stays a first+last preview, composer stays hidden). | Sidebar-context behavior. The selection→expanded edge of the state machine. |
inlineCommentMode | false | Adds the inline-comment-mode classes (a styling mode distinct from inline-section mode), but only when isInsidePdfViewer is false. | Suppressed inside a PDF viewer. Do not confuse with inlineCommentSectionMode. |
inboxMode | false | Inbox rendering: adds the inbox classes and forces show-all-comments on. Rendered inside the dialog/inbox branch. | Shares the dialog-mode branch with the default floating dialog. |
isInsidePdfViewer | false | Adjusts behavior inside a PDF viewer; in particular it suppresses the inlineCommentMode classes. | Gates inlineCommentMode. Also set automatically from bottom-sheet data. |
multiThread | false | Marks this dialog as part of a multi-thread annotation (feature-state flag). | Styling via multiThreadAnnotationId; the actual many-threads list is VeltMultiThreadCommentDialog. No direct branch here. |
commentComposerMode | false | Composer-only styling mode: adds the --comment-composer-mode class. | None |
dialogSelection | true | Governs whether sidebar selection behavior is allowed (consumed by sidebar parents). | No local template branch; this reference documents no downstream effect beyond enabling sidebar selection. |
dialogMode | true (effective) | Drives the dialog/--dialog-mode classes and the “all comments” button. | Gotcha: the input is effectively inert as a wire-through: the component sets dialog mode to true independently rather than reading this prop. Passing false has no documented effect in this reference. |
focusedThreadMode | false | Focused-thread layout: adds the --focused-thread-mode class. Critically, when true it skips draft auto-save / abandon-draft on destroy/change (back-nav safety). | Interacts with draft behavior, pageModeComposer. |
pageModeComposer | false | Page-mode composer instance: adds the --page-mode-composer class; never creates/saves drafts; only this instance answers page-mode focus requests; overrides the sidebar branch so the dialog branch renders. | The page-level composer for sidebar pageMode: see Behaviors → embedMode / pageMode. |
messageTruncation | false | Truncates long message bodies with show-more/less. | Pairs with messageTruncationLines. Independent of how many comment cards render. See Behaviors → fullExpanded vs default. |
initialEditCommentIndex | null | Opens the dialog with a specific comment index in edit mode (after view init, if the index is in range, enters edit mode for that comment). | number | string | null; out-of-range / negative is ignored. The timeout is cleared on destroy. |
messageTruncationLines | 4 | Max lines shown before truncation. | Only effective when messageTruncation is true. String-coerced via parseInt, falling back to 4. |
variant | 'dialog' | Picks the named dialog wireframe variant: resolves velt-comment-dialog-wireframe---<variant> for a custom template. | The variant is also the scoping key. Setting it on VeltComments changes the floating pin dialog only; sidebar/inline/page contexts have their own variant props. See Behaviors → Variant → context scoping. |
composerPosition | 'bottom' (effective) | Composer placement in inline-section mode: 'top' renders the composer above the thread, unset/'bottom' below. | No effect in dialog/sidebar mode (composer is always bottom there). Both resolvers also require !readOnly. |
sortBy | (none → natural/creation order) | Sort field for the comment list ('createdAt' / 'lastUpdated'). Only written when defined. | Applied together with sortOrder. Ordering only: does not collapse/hide cards. See Behaviors → sortBy × sortOrder. |
sortOrder | (none) | Sort direction ('asc' / 'desc'). Only written when defined. | Pairs with sortBy. |
commentPinType | 'pin' | The pin type this dialog belongs to ('bubble' | 'pin' | 'chart' | 'text'); appended to the wireframe cache key so each pin type can resolve a distinct template. | Normally set by the portal, not by you. No layout branch. |
containerComponentId | (none, '') | Id of the owning container component; used for scoping. | No local template branch. |
targetElementId | (none) | Anchor element id. Used to match incoming composer file-attachment events: a batch applies when its target id is empty or equals this. | Not stored in the dialog config: it is an event filter, not a positioning input (Velt owns placement). |
targetComposerElementId | (none) | Composer anchor element id, passed down to every composer instance to anchor the composer to an external element. | Re-applied after config swaps. |
locationVersion | (none, '') | Version tag for the annotation’s location, stored in UI state. | No local branch; used downstream for location resolution. |
locationDisplayName | (none) | Intended display name for the location. | Gotcha: declared but never read in the dialog or its primitives: effectively inert here. This reference documents no other consuming surface. |
context | (none) | Free-form key/value object set at the config root; new comments created here carry it, and velt-data children can interpolate {context.xxx}. | Updated on the annotation and composer paths. Does not retro-tag existing comments. |
placeholder | (none) | Generic composer placeholder set at the config root with the highest priority: overrides commentPlaceholder / replyPlaceholder. | Written only when truthy. See the placeholder priority chain. |
commentPlaceholder | (none) | Placeholder for the new-comment composer (thread has no comments yet). | Overridden by placeholder; never co-applies with replyPlaceholder (comment count decides which is live). See the priority chain. |
replyPlaceholder | (none) | Placeholder for the reply composer (thread already has comments). | Overridden by placeholder. See the priority chain. |
editPlaceholder | (none) | Generic edit-mode placeholder. | The edit chain is separate from the new-comment chain; editCommentPlaceholder / editReplyPlaceholder are the more specific edit placeholders. |
editCommentPlaceholder | (none) | Placeholder when editing a top-level comment. | More specific than editPlaceholder. |
editReplyPlaceholder | (none) | Placeholder when editing a reply. | More specific than editPlaceholder; use the specific top-level/reply placeholders when you need different copy for each edit context. |
anonymousEmail | (none) | Per-annotation override for whether anonymous email mentions are allowed in this dialog’s annotation context. When set, applies a local override for the annotation; when cleared, removes it. | No-op without an annotationId (it keys on the annotation). Per-annotation override of the global setting without mutating it. |