Props gives each prop’s name, type, and default; this file gives what each prop does at runtime, its default when omitted, and how it interacts with related props. See the behaviors index for the cross-component prop matrix and the anchored-vs-static positioning model.
Two components are covered:
VeltNotificationsPanel: the full notification list, rendered statically where you place it (it is not a Velt-anchored overlay; you control its position in your layout). It owns the tab bar (For You / Documents / All / People), the notification list with paging, a read-all action, and an optional settings view. Use it when you want notifications permanently visible in your own layout (e.g. a dashboard column).VeltNotificationsTool: a bell/launcher button that shows an unread badge and opens a panel on click. The opened panel is the same notification UI asVeltNotificationsPanel. The tool owns the unread-count read path and the panel’s open mode (popovervssidebar); panel-affecting props are mostly forwarded to the panel it opens. Use it when notifications should live behind a single bell icon.
darkMode through the shared v2 themed base, render their default markup unless a matching wireframe variant is registered, and read/write all feature toggles (settings, selfNotifications, readNotificationsOnForYouTab, enableCrossOrganization, enableSettingsAtOrganizationLevel, maxDays) through the shared notification service, so these flags are effectively global: setting one on either component changes the data stream for both. Per-instance state (tabConfig, pageSize, panelOpenMode, settingsLayout, variant, shadowDom) lives on the component’s own config signal.
The React wrappers serialize props to attributes: booleans only emit'true'/'false'when explicitlytrue/false(an omitted boolean emits nothing, so the web-component default applies);pageSize/maxDaysonly emit when> 0;tabConfigis JSON-stringified;enableCrossOrganizationis stringified when an object. This is why “unset” and “explicitfalse” can differ.
Per-prop behavior (exhaustive)
The exhaustive per-prop behavior for both notification entry points is organized per component below: each## Velt… subsection carries that component’s full prop table (default + runtime behavior + interactions) plus its own no-prop baseline (the Default behaviors (… no prop needed) block). Every prop in Props for these components is covered; see Provable coverage.
VeltNotificationsPanel
Default behaviors (VeltNotificationsPanel, no prop needed):
- Statically placed: the panel renders inline where you mount it; it is not Velt-anchored/positioned. There is no built-in open/close: it is always visible (the Escape-key handler exists for the tool-opened/bottom-sheet case).
- Tabs: all four tabs (For You, Documents, All, People) are on by default;
tabCountstarts at 3 and is recomputed whentabConfigis set. The initially selected tab is For You; if For You is disabled, selection falls back to Documents, then All. - Read-all: the read-all action marks unread notifications as read scoped to the active tab: on the For You tab it marks the for-you unread set; on any other tab it marks the full unread set. (Logged-out/no-org users go through the views service by id.)
- Settings: off (
settingsEnabled: false); when enabled it defaults to the'accordion'layout and includes a mute-all toggle plus per-category options. - Self notifications: off. Cross-organization: off. Read-on-view (For You): off.
- Paging:
pageSize5 per tab. Theme: light (darkMode: false). Shadow DOM: on. Settings org-level: off.
VeltNotificationsTool
The tool is a launcher button: it tracks the unread count, renders a bell + badge, and opens the notification panel on click. Props that affect the panel it opens (tabConfig, settings, selfNotifications, readNotificationsOnForYouTab, settingsLayout, enableSettingsAtOrganizationLevel, enableCrossOrganization, pageSize) drive the same shared notification service / panel as VeltNotificationsPanel, so their semantics match the table above; the rows below focus on the tool-specific behavior and the few props unique to the tool.
Default behaviors (VeltNotificationsTool, no prop needed):
- Launcher button: renders a default bell with an unread badge; clicking toggles the panel open/closed (
notificationsPanelVisible). Closing is debounced through a 0ms timeout and clears any pending close on re-open. Escape closes the open panel. - Open mode:
'popover': the panel opens as a CDK-overlay popover anchored to the button. - Unread count source:
considerAllNotifications: false, so the badge shows the count of unread For You notifications. SetconsiderAllNotifications: trueto count all unread. - Data window:
maxDays15 (older notifications excluded). Tabs: all four on; initial tab For You with the same disabled-tab fallback. - Settings: off (accordion when enabled). Self notifications / cross-org / read-on-view / org-level settings: off.
- Theme: light. Shadow DOM: both the button (
shadowDom) and opened panel (panelShadowDom) isolated by default. Paging:pageSize5.
Default behaviors (no prop needed)
Each component’s zero-prop baseline is documented in its Default behaviors (… no prop needed) block above. In brief: the panel is statically placed and always visible with all four tabs on (initial tab For You), paging at 5, light theme, shadow DOM on, settings/self-notifications/cross-org/read-on-view off; the tool renders a bell + unread badge that opens a'popover' panel on click, counts unread For You by default (considerAllNotifications: false), windows data to maxDays 15, and isolates both button and opened panel in shadow DOM.
Prop-interaction matrix
There is no separate multi-prop matrix for this group: pairwise effects are documented in each prop’s Interactions & gotchas column above. The one cross-cutting rule to note: the feature toggles (settings, selfNotifications, readNotificationsOnForYouTab, enableCrossOrganization, enableSettingsAtOrganizationLevel, maxDays) are read/written through the shared notification service, so setting any of them on either component changes the data stream for both (they are effectively global); per-instance props (tabConfig, pageSize, panelOpenMode, settingsLayout, variant, shadowDom/panelShadowDom) stay scoped to the component they are set on.
Positioning & composition
Both surfaces are statically placed: you mount them in your own layout and control their position.VeltNotificationsPanel is not Velt-anchored; it has no built-in open/close and is always visible where you place it. VeltNotificationsTool is a statically-placed button whose opened panel is presented as a 'popover' (a CDK overlay anchored to the button) or a slide-in 'sidebar' per panelOpenMode: the button is where you put it; only the popover positions relative to it. See the anchored-vs-static classification in Component definitions and Behaviors → Positioning ownership.
Provable coverage
VeltNotificationsPanel: 14 / 14 props covered (darkMode,onNotificationClick,shadowDom,variant,tabConfig,readNotificationsOnForYouTab,panelOpenMode,settings,selfNotifications,pageSize,settingsLayout,enableSettingsAtOrganizationLevel,defaultCondition,enableCrossOrganization).VeltNotificationsTool: 19 / 19 props covered (darkMode,onNotificationClick,shadowDom,panelShadowDom,variant,tabConfig,panelOpenMode,panelVariant,maxDays,readNotificationsOnForYouTab,settings,selfNotifications,considerAllNotifications,pageSize,settingsLayout,enableSettingsAtOrganizationLevel,defaultCondition,enableCrossOrganization).
panelOpenMode is not documented here; the array-binding fall-through on enableCrossOrganization is documented as behavior, not implementation intent. Every other behavior is covered in this reference.
