Skip to content

feat: Add a scrollable prop to CategoriesFilter for narrow containers (EXO-88866) - #5915

Open
bmestrallet wants to merge 5 commits into
feature/ai-contributionfrom
feat/EXO-88866-scrollable-categories-filter
Open

feat: Add a scrollable prop to CategoriesFilter for narrow containers (EXO-88866)#5915
bmestrallet wants to merge 5 commits into
feature/ai-contributionfrom
feat/EXO-88866-scrollable-categories-filter

Conversation

@bmestrallet

Copy link
Copy Markdown

Add a scrollable prop to CategoriesFilter (EXO-88866)

CategoriesFilter / CategoryChipsGroup currently pick their layout from the viewport breakpoint: a horizontally scrollable row on mobile, a card-carousel + "See all" overflow on desktop. In a narrow container on a desktop viewport — e.g. a side drawer — that means the chips get truncated behind "See all" even though there is nothing mobile about the session.

This adds an additive, default-false scrollable prop. When set, the filter always uses the mobile-style single horizontally scrollable row, whatever the viewport width:

  • CategoriesFilter applies the scroll container and forwards scrollable to the chips group.
  • CategoryChipsGroup renders the plain scrollable div (not the carousel), drops the "See all" button, and keeps the inner wrapper at its content width (flex-shrink-0) so the last chip scrolls into view instead of being clipped.
  • A thin, subtle scrollbar (scrollbar-width: thin + slim ::-webkit-scrollbar).

scrollable defaults to false, so every existing consumer (spaces list, activity stream, …) is unchanged.

Why

Consumed by a narrow side-drawer category filter in the eXo email-connector mailbox (EXO-88862), where the four "Inbox" categories must stay on one reachable row.

🤖 Generated with Claude Code

aycherif and others added 4 commits July 26, 2026 01:39
The Theme management page's default page background color (used both as
the picker's placeholder and normalized when reading an already
persisted 6-digit value) had no alpha channel, so the color picker
silently dropped its transparency slider. Also stop the gradient from/to
parser from garbling non-linear-gradient values (e.g. conic gradients
set elsewhere) instead of falling back to solid color.
…delete

Add a selection mode to the top-bar notifications drawer, mirroring the
email-connector mailbox behaviour:
- Per-item checkbox + "Select" entry in the item menu to enter select mode
- "Select all" checkbox (with indeterminate state) above the list
- Select-mode header showing "N selected" + bulk mark-as-read / delete +
  cancel (back) button
- Selection state shared via the app $root + $root event bus (the
  extension-registry layer between the list and the item template prevents
  prop drilling)

Backend: add batch REST operations on /notifications/webNotifications
- PATCH ?operation=markAsRead&id=... (mark a list of notifications as read)
- DELETE ?id=... (hide a list of notifications)
Both enforce per-user ownership and skip ids not owned by the caller.
Covered by 6 new WebNotificationRestServiceTest cases.

UI: transparent checkboxes (no white tile over grey rows), no row tint on
selection, no lingering focus/ripple after click, empty-state placeholder
left untouched.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…(Sonar javascript:S3516) - EXO-88378

markAsReadMouseDown/markAsReadMouseUp always returned true, which SonarCloud
flags as a Blocker (S3516). The return value is ignored by Vue's @mousedown/
@mouseup bindings, so drop it and use a bare early return; behaviour is
unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the partialCIBuild Perform Partial CI Build label Jul 26, 2026
…EXO-88866)

Add an additive, default-false `scrollable` prop to CategoriesFilter and
CategoryChipsGroup. When set, the filter lays its chips out on one
horizontally scrollable row (the existing mobile layout) whatever the
viewport width, instead of the desktop card-carousel + "See all" overflow,
so the whole set stays reachable in narrow containers such as side drawers.
The inner wrapper keeps its content width (flex-shrink-0) so the last chip
scrolls into view rather than being clipped, with a thin, subtle scrollbar.

Default false, so spaces / activity / other consumers are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bmestrallet
bmestrallet force-pushed the feat/EXO-88866-scrollable-categories-filter branch from 43c0cd8 to 3cb8d80 Compare July 26, 2026 12:54
@bmestrallet
bmestrallet changed the base branch from develop to feature/ai-contribution July 26, 2026 12:54
@github-actions github-actions Bot removed the partialCIBuild Perform Partial CI Build label Jul 26, 2026
@sonarqubecloud

Copy link
Copy Markdown

@exo-swf
exo-swf force-pushed the feature/ai-contribution branch 2 times, most recently from 102b2fa to ce9ed1d Compare July 28, 2026 11:13
@bmestrallet
bmestrallet force-pushed the feature/ai-contribution branch from ce9ed1d to d7293f4 Compare July 28, 2026 12:18
@exo-swf
exo-swf force-pushed the feature/ai-contribution branch from d7293f4 to 266691b Compare July 28, 2026 13:08
@bmestrallet
bmestrallet force-pushed the feature/ai-contribution branch from 266691b to ef3f343 Compare July 30, 2026 11:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants