Skip to main content
Runtime behavior of every prop on the two notification entry points. 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 as VeltNotificationsPanel. The tool owns the unread-count read path and the panel’s open mode (popover vs sidebar); panel-affecting props are mostly forwarded to the panel it opens. Use it when notifications should live behind a single bell icon.
Both resolve 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 explicitly true/false (an omitted boolean emits nothing, so the web-component default applies); pageSize/maxDays only emit when > 0; tabConfig is JSON-stringified; enableCrossOrganization is stringified when an object. This is why “unset” and “explicit false” 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; tabCount starts at 3 and is recomputed when tabConfig is 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: pageSize 5 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. Set considerAllNotifications: true to count all unread.
  • Data window: maxDays 15 (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: pageSize 5.

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).
Coverage notes: the phone bottom-sheet breakpoint for 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.