dotCMS / dotCMS/core

[TASK] Single-selection folder list view is a tab trap (every row tabbable)

Open
#37,441 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

OKR : User Experience Team : Scout
Dominant language
Java
Stars
970
Forks
486
Avg merge
3d 33m
Merged PRs (30d)
170

Description

Parent

Follow-up from #32591 / PR #37436 (Content Drive keybindings).

Problem

dot-folder-list-view in single-selection mode makes every row a tab stop. A listing of 40
rows is 40 presses of Tab to get past, which is the tab-trap #32591 fixed for Content Drive, still
present for the single-selection consumer (the asset selection dialog).

Cause

PrimeNG's SelectableRow.setRowTabIndex() short-circuits to "every row is tabbable" whenever the
selection is empty, before it ever consults the table's anchor. An empty selection is the
permanent resting state of a single-selection list, so the anchor #37436 drives is never read and
the roving tab stop never applies.

Confirmed structural rather than a timing artifact by letting a second render settle.

Scope decision in #37436

Out of scope, deliberately: FR-001 was amended to multiple-selection listings only. The behaviour is
pinned by a no-regression test so it cannot change silently —
should leave single-selection tab behaviour exactly as it was in
dot-folder-list-view.component.spec.ts. That test asserts today's trunk behaviour, so whoever fixes
this will see it fail and be pointed here.

What "done" looks like
  • One tab stop in single-selection mode, roving with focus, exactly as in multiple
  • The no-regression test above updated (not deleted) to assert the new behaviour
  • The asset selection dialog checked, since it is the consumer
Where
  • core-web/libs/ui/src/lib/components/dot-folder-list-view/dot-folder-list-view.component.ts
    (#applyRovingTabStop, #seedTabStop)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in core-web/libs/ui/src/lib/components/dot-folder-list-view/dot-folder-list-view.component.ts, reading #applyRovingTabStop and #seedTabStop, then run dot-folder-list-view.component.spec.ts. Update the named no-regression test to cover the new single-selection behavior, and verify the asset selection dialog has one roving tab stop.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
accessibility, frontend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.