Problem/Motivation
Reactions are currently tied too closely to fields. This makes them harder to configure and does not fit Canvas components, which should be able to react to their host entity without prior bundle configuration.
Proposed resolution
Rebuild the project around reusable reaction sets and contextual placement.
reactionsprovides reaction sets, Voting API integration, target resolution, renderers, and reaction operations.reactions_fieldprovides optional per-entity Open, Closed, and Hidden overrides, plus a formatter.reactions_canvasprovides a Canvas component that automatically uses its host entity.
A reaction set defines its reactions, single or multiple selection, default status, and renderer. Each reaction has a label and a filtered formatted appearance value, which can contain text, emoji, or permitted markup.
Renderer plugins control how the complete set is presented, such as a Disqus-style bar or Facebook-style picker. The initial renderer will be a minimal Disqus-style emoji bar.
Each reaction set should use one Voting API vote type, with the selected reaction represented by the vote. The exact model and Voting API capabilities will be established in #3613260: Create Voting API integration for reaction sets. Voting API should remain responsible for vote storage, actor identification, and result calculation.
The initial advertised requirement is Drupal 11. The code should be prepared for Drupal 12, but Drupal 12 support will not be announced until Voting API supports it.
Roadmap
- #3609725: Scaffold base `reactions` module
- #3613260: Create Voting API integration for reaction sets
- #3613263: Create reaction set configuration and administration
- #3613340: Create renderer plugin system and initial emoji bar
- #3613343: Add a Canvas component for reaction sets
- #3613345: Make reaction buttons work
- #3613530: Add reactions_field for per-entity availability and formatter
- Add access, cacheability, tests, and documentation.
Out of scope
Migration from the existing module, advanced renderers, and an emoji picker will be handled separately.
Comments
Comment #2
elamanComment #3
elamanComment #4
elamanUpdated the roadmap to use reaction sets, contextual field and Canvas placement, renderer plugins, and formatted reaction appearances. Added the focused Voting API integration issue.
Comment #5
elamanLinked the existing roadmap items to their child issues and moved the Canvas component to the next milestone. This gives us a visible integration to exercise before the shared target handling and optional field placement work.
Comment #6
elamanCreated #3613343: Add a Canvas component for reaction sets for the Canvas integration and linked it here. This is the next item so we can get the emoji bar onto a page and start testing the UI.
Comment #7
elamanCreated #3613345: Make reaction buttons work for the shared interaction work and moved it into the next roadmap slot. This is the piece that turns the Canvas preview into working reaction buttons.
Comment #8
elaman