Skip to content

Mobile: Implement tag screen redesign #12551

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 49 commits into from
Jul 17, 2025

Conversation

personalizedrefrigerator
Copy link
Collaborator

@personalizedrefrigerator personalizedrefrigerator commented Jun 17, 2025

Summary

This work-in-progress pull request implements a redesign of the tag management screen. The tag management and combobox components are designed such that they can be used in contexts other than the tag management screen.

A version of this pull request has been deployed to https://personalizedrefrigerator.github.io/joplin/web-client/.

Tasks:

  • Fix Android accessibility issues found during testing:
    • While adding tags by navigating through the list of search results, focus is sometimes lost and jumps to the beginning of the modal.
      • Fixed by adding logic that moves the focus away from the previously-selected item 100ms before removing the item.
    • While removing associated tags, focus is sometimes lost and jumps to the beginning of the modal.
      • Fixed by adding logic to move focus to the previous delete button
  • Verify that there are no similar iOS focus issues.
    • Fix iOS focus issue when removing tag associated with a note.
    • Try to improve discoverability of "Apply" and "Cancel". Currently, the invisible heading (see below) isn't recognized by VoiceOver on iOS.
      • Note: The current behavior might be good enough and should be similar to the old behavior (apply/cancel after the tag list).

Screenshots (web)

Searching for a tag:
screenshot: Heading: Associated tags, followed by a list of tags, each with a 'remove tagnamehere' button. After this is an 'Add tags' heading and a search input. The search input contains 't' and a list of matching tags is shown

Searching for a tag already added to the note:
screenshot: Same as previous but with more tags in the 'associated tags' section and no content in the search results box

Searching for a tag (dark mode):
screenshot: Same as previous, but with darker colors

Searching for a tag with no results:
screenshot: Similar to the previous screenshot, except the only result is an 'Add new' button in the search results region.

Empty search, note with no tags: Note that the highlight below is added by a web browser to indicate focus — it's likely different from the focus style on Android/iOS.
screenshot: Heading: Associated tags, followed by 'No tags'. Tag search bar is empty and tags are listed below

Accessibility notes

  • "Associated tags:" and "Add tags:" are marked as headers.
  • Each existing tag has a "remove" button that includes the name of the tag to be removed.
  • The "x" button has label "Clear search".
  • On web (React Native doesn't seem to provide APIs for this out-of-the-box), the arrow keys can navigate the search results. Search results are read by the screen reader (tested with Orca+Chromium on Linux) while doing this.
  • React Native doesn't seem to support the navigation or a similar container role. For now, I've added a visually hidden header ("Actions") that can be used to jump past the tags search input and results to the "Cancel" and "Apply" buttons.

@personalizedrefrigerator personalizedrefrigerator marked this pull request as ready for review June 28, 2025 02:19
@personalizedrefrigerator
Copy link
Collaborator Author

Converting back to a draft — there are a few style-related issues on Android.

@personalizedrefrigerator personalizedrefrigerator marked this pull request as draft June 28, 2025 02:27
@personalizedrefrigerator personalizedrefrigerator marked this pull request as ready for review June 28, 2025 04:03
Comment on lines +12 to +14
export enum TagEditorMode {
Large,
Compact,
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tag editor dialog currently uses the Large mode. The Compact mode makes the tag editor take up less space and is used in the document scanner screen (to be added in a separate pull request).

@personalizedrefrigerator personalizedrefrigerator added the mobile All mobile platforms label Jun 28, 2025
@personalizedrefrigerator personalizedrefrigerator marked this pull request as draft June 30, 2025 16:58
@personalizedrefrigerator personalizedrefrigerator marked this pull request as ready for review July 10, 2025 01:45
…rollView

This change:
- Implements a custom FlatList, resolving a warning about including
  FlatLists within ScrollViews causing issues. See comment.
  - This also allows for changing the DOM structure of search results on
    web, which should improve accessibility.
- Adds announcements on iOS and Android announcing which result is
  selected. This particular change still needs to be tested on iOS, but
  seems to work well on Android with TalkBack.
The linter did not run on `git rebase --continue`. This commit fixes a
linter error separately.
@laurent22 laurent22 merged commit 30aff62 into laurent22:dev Jul 17, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mobile All mobile platforms
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants