feat: #3624018 Let the Live Feed ticker be driven by content

Issue: https://www.drupal.org/project/vartheme_bs5_rightup/issues/3624018

Lets the Live Feed ticker be filled from content (a views block in its items slot) rather than only hand-typed items.

  • live-feed-item: new optional timestamp (integer) and time_format (default g:i A). Drupal Canvas has no adapter that renders a time of day (its only date adapter emits Y-m-d), so an item bound to a content date could not show "9:20 AM" at all. time stays a string and is no longer required; a typed time still wins, so hand-placed items are unaffected.
  • live-feed dissolves the wrappers a placed views block brings: Drupal's .block and .block__content, plus Views' container, .view, .view-content and a per-row element. All are block-level and turned the single-line ticker into a stacked list, so they get display: contents. .view-content > * catches the row wrapper whether or not it has the default views-row class.
  • Scroll speed is derived, not fixed. The animation travels one group width per cycle, so the old fixed 30s made a longer feed scroll faster: measured at 160px/s on a 4788px track, about three times too fast to read, and it changed whenever an editor added an item. New scroll_speed prop in px/s (default 60); the duration comes from the measured width. Verified in the browser at exactly 60px/s.
  • Hover, :focus-within and prefers-reduced-motion behaviour is unchanged. Verified paused on hover and running again after.

Heads-up: this mints a new component version. A Canvas placement pinned to the older version silently drops the new inputs.

Merge this first. The RightUp recipe MR rightup!35 (merged) (issue https://www.drupal.org/project/rightup/issues/3624019) depends on it. Without it that ticker renders as a stacked list rather than a single line.

Not in this MR: the ticker is 37px tall where the design says 43px (the design has 12px padding and a 19px row; ours has no feed padding and inherits 18px type instead of 14px). This MR is about making the feed content-driven.

Local pipeline (gitlab-ci-local): build, eslint, stylelint and cspell all pass. The lint jobs run with || true in the project's CI config. eslint reports Prettier indentation errors in live-feed.js from line 52 on; they start in the existing once(...).forEach block on 1.0.x, and the added lines follow that existing indentation.

AI-Generated: Yes

Checkpoints:

  • File an issue
  • Addition/Change/Update/Fix
  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • UX/UI designer responsibilities
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Reviewed by human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release notes snippet
  • Release

🤖 Generated with Claude Code

Edited by Rajab Natshah

Merge request reports

Loading
Loading