Skip to content

Design idea: Pattern editing and contentOnly interactivity #73466

@fcoveram

Description

@fcoveram

Note

Expanding on #71517

@jasmussen and I took a deep look at the work done for this project, the overall approach to each feature, and how those features integrate into the overall experience. We identified and discussed several points that could improve the understanding and usage of the features. Below are the main pain points and a proposal to enhance the ongoing implementation.

Heuristic concerns

There are three areas in the heuristic that I think jeopardize the user experience with the Editor and make the UI unnecessarily complicated by not leveraging existing concepts and patterns. My concern is that this creates a more difficult path to undo because it places affordances in UI areas that confuse their purpose, and therefore, anticipate where controls are. The three areas are:

Improvement areas

On the other hand, two areas are working great and can evolve even more to polish the experience.

  1. A single editor: In this idea shared a few days ago, I’m mainly proposing to reinforce the context of which entity the user is editing by reusing the existing structure of Editor’s UI. Instead of adding actions and patterns in the right panel, the Editor remains the same but adapts to both “inserted” and “focus" contexts.
  2. Improve spotting block capabilities: Similarly to recognizing blocked blocks, the ListView could convey more quickly which blocks are content only and which have all the features to tweak. That should prevent possible frustrations when realizing that some blocks have more editing capabilities than others. And reinforcing the visual identity of entities, anticipating the tools is a matter of muscle memory.**

Design proposal

When considering paths that simplify the editing experience, I strongly believe it’s essential to reuse existing patterns as much as possible and avoid introducing new ones that disrupt the purpose of the Editor’s areas. Before listing the proposed changes, the following two recordings highlight a few interactions.

editing.nonsync.pattern.mp4
editing.sync.and.detach.mp4

The attributes in the proposals above are:

  • ListView shows the entity icon to convey edition capabilities.
  • Block toolbar shows the pattern name to convey entity type and its capabilities.
  • Editable blocks are actions in the block panel that select the block in both ListView and Canvas.
  • Editing a pattern updates the Editor’s header to communicate the content type where the user is at.
  • When editing a pattern, ListView updates to reflect the block tree.
  • When editing a pattern while a child block is selected, ListView updates the block tree while keeping the block selected.
  • Header’s back action is the exit point to return to the previous context.
  • When a child block with editable content is selected, the user can insert more of the same block.
  • When detaching a pattern, ListView updates the block type to reflect edition capabilities.

Content panel

Most ideas explored long ago suggest the need for a new abstraction layer where editing content is separated from the block-selection-and-editing experience. In the designs iterated, there is significant value in consolidating all content controls on a single surface that adapts to any of the wp-admin contexts, but our current approach to this editing level mixes interaction patterns from different areas, which undermines the existing heuristics.

With a new UI area dedicated to this abstraction level, it would be possible to make content adjustments via DataForm both in the data management approach of the Admin and at the block level that Editor offers; similar to how the inspector panel functions in QuickEdit.

The recording below is very simple, but it shows some key interactions.

Site editor Block editor
Image Image
new.content.panel.mp4

What do you think of this @WordPress/gutenberg-design ?

Metadata

Metadata

Assignees

No one assigned

    Labels

    [Feature] PatternsA collection of blocks that can be synced (previously reusable blocks) or unsynced[Type] EnhancementA suggestion for improvement.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions