Skip to content

Bookmarks: part 1 #17063

@Witoso

Description

@Witoso

Goal

Create the first, minimal iteration of Bookmarks, so that users of the editor can create and edit them.

This will be later followed up by a ticket which will extend the linking experience to bookmarks.

Description

  • Anchors/Bookmarks are one of the basic features of editors. They allow placing the specific marker to navigate someone to.
  • We choose to name this feature Bookmarks, it’s a much more recognizable name for content creators. Its name and iconography are used in current popular content creation systems (Word, Google Docs).

Scope

  • Functional requirements:
    • CRUD for Bookmarks in the editor, with a simple inline user interface (bookmarks will be shown in the text).
    • Bookmark creation should cover most places of the editor: text, blocks (images, tables), inline blocks, widgets.
    • We do only point-only-bookmarks, meaning you will not be able to wrap the text/elements and place a bookmark on them. We will create it as a singular <a id="xyz" aria-label="..."></a>.
      • The reasons are multiple: it’s less complex, as we don’t need to think about scenarios of a link in a link (it’s forbidden in HTML). Also, it’s less confusing for content creators, again the action of bookmarking with content that has a link leads to confusing results in the UI.
      • That means we need to figure out where the bookmarks will appear for the block elements. For simplicity, we decided for now to place them before block elements.
    • The UI for creation should not be confusing, especially in terms of selection. If we create point bookmarks, the creation point should be obvious.
  • Non-functional requirements:
    • There shouldn’t be an observable performance penalty for bookmark creation (validation of duplicated ID).
    • Bookmarks are accessible.
    • Users coming with data <a id="xyz"></a> with GHS, should have their a migrated to the bookmarks UI.
    • Uncover the tricky technical parts for further development (how pagination works, validation of names/duplicates).
    • Should work in a collaboration session, track changes, revision history.
  • Non-goals for this part
    • Handling wrapping bookmarks/anchors. <a id="xyz">This text is in the bookmark.</a>
      • We need to decide in the follow-ups how we want to handle such content. Opt-in, opt-out for migration?
    • Smaller sub-features, like copy URL/name of the Bookmark, toggling visibility of bookmarks, are not needed now. (nice to have)
    • Interaction with other features (slash commands, document outline).
    • Linking to bookmarks will be done in a separate part.
    • Pasting bookmarks from Word/Gdoc.

Prototypes

Metadata

Metadata

Assignees

No one assigned

    Labels

    package:bookmarksquad:coreIssue to be handled by the Core team.type:featureThis issue reports a feature request (an idea for a new functionality or a missing option).

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions