Skip to content
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

FSE: Add basic template information to editor header #25320

Merged
merged 9 commits into from
Sep 17, 2020

Conversation

noahtallen
Copy link
Member

@noahtallen noahtallen commented Sep 14, 2020

Description

Adds a basic "document actions" component which is rendered in the center of the FSE editor header. Note: the string rendered in the title is TBD. Currently it uses the template name, but we are also thinking that the page name could be more useful / easier to understand.

Also, when a template part block is directly selected, it will show its label as secondary text in the header area. We are hoping to expand this functionality to include hover, and to handle if the parent of the selected block is the template part.

This is also meant to serve as a starting point for adding a document settings dropdown to the header.

to do :

  • Finalize the component API (what the props should be called and how they should be passed)
  • Should we include the temporary dropdown now or merge without it?
  • Figure out how to store the "secondary" item and where to pull that data from.

Work towards #25085. cc @dubielzyk

How has this been tested?

locally in edit site

Screenshots

A friendly reminder that eventually, the "index" text in the left will go away.
2020-09-17 15 27 12

Types of changes

Enhancement

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • My code has proper inline documentation.
  • I've included developer documentation if appropriate.
  • I've updated all React Native files affected by any refactorings/renamings in this PR.

@noahtallen noahtallen self-assigned this Sep 14, 2020
@noahtallen noahtallen changed the title Try/add document settings in header FSE: Add basic template information to header Sep 14, 2020
label={ _x(
'Add block',
'Generic label for block inserter button'
<div className="edit-site-header_start">
Copy link
Member Author

Choose a reason for hiding this comment

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

The changes in this file add three wrapper divs around the content of the header. One for the "start", "center", and "end". The start and end divs have flex: 1. This way, the center div is always centered in the middle of the viewport regardless of the width of the content inside the start/end divs.

@github-actions
Copy link

github-actions bot commented Sep 14, 2020

Size Change: +539 B (0%)

Total Size: 1.2 MB

Filename Size Change
build/block-editor/index.js 128 kB +1 B
build/blocks/index.js 47.8 kB +3 B (0%)
build/components/index.js 202 kB -7 B (0%)
build/data/index.js 8.55 kB -2 B (0%)
build/edit-post/index.js 305 kB +1 B
build/edit-site/index.js 19.3 kB +283 B (1%)
build/edit-site/style-rtl.css 3.26 kB +129 B (3%)
build/edit-site/style.css 3.26 kB +130 B (3%)
build/edit-widgets/index.js 16.6 kB -1 B
build/editor/index.js 45.3 kB +1 B
build/list-reusable-blocks/index.js 3.12 kB +1 B
build/nux/index.js 3.4 kB +2 B (0%)
build/viewport/index.js 1.85 kB -2 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.67 kB 0 B
build/api-fetch/index.js 3.41 kB 0 B
build/autop/index.js 2.83 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 8.53 kB 0 B
build/block-directory/style-rtl.css 943 B 0 B
build/block-directory/style.css 942 B 0 B
build/block-editor/style-rtl.css 11.1 kB 0 B
build/block-editor/style.css 11.1 kB 0 B
build/block-library/editor-rtl.css 8.59 kB 0 B
build/block-library/editor.css 8.59 kB 0 B
build/block-library/index.js 135 kB 0 B
build/block-library/style-rtl.css 7.6 kB 0 B
build/block-library/style.css 7.59 kB 0 B
build/block-library/theme-rtl.css 741 B 0 B
build/block-library/theme.css 741 B 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.1 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.4 kB 0 B
build/compose/index.js 9.68 kB 0 B
build/core-data/index.js 12.2 kB 0 B
build/data-controls/index.js 1.28 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom-ready/index.js 568 B 0 B
build/dom/index.js 4.47 kB 0 B
build/edit-navigation/index.js 10.7 kB 0 B
build/edit-navigation/style-rtl.css 868 B 0 B
build/edit-navigation/style.css 871 B 0 B
build/edit-post/style-rtl.css 6.24 kB 0 B
build/edit-post/style.css 6.22 kB 0 B
build/edit-widgets/style-rtl.css 2.75 kB 0 B
build/edit-widgets/style.css 2.75 kB 0 B
build/editor/editor-styles-rtl.css 492 B 0 B
build/editor/editor-styles.css 493 B 0 B
build/editor/style-rtl.css 3.8 kB 0 B
build/editor/style.css 3.8 kB 0 B
build/element/index.js 4.64 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.71 kB 0 B
build/format-library/style-rtl.css 547 B 0 B
build/format-library/style.css 548 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 621 B 0 B
build/i18n/index.js 3.57 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.52 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/style-rtl.css 476 B 0 B
build/list-reusable-blocks/style.css 476 B 0 B
build/media-utils/index.js 5.32 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/style-rtl.css 671 B 0 B
build/nux/style.css 668 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.41 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/redux-routine/index.js 2.85 kB 0 B
build/rich-text/index.js 13.9 kB 0 B
build/server-side-render/index.js 2.77 kB 0 B
build/shortcode/index.js 1.69 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 4.06 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

return (
<div className="edit-site-document-actions">
{ primaryText ? (
<Dropdown
Copy link
Contributor

@shaunandrews shaunandrews Sep 15, 2020

Choose a reason for hiding this comment

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

I'm not sure where we've landed on this being a dropdown; I think it makes a lot of sense for the document/template label to open some settings, but I'm not so sure about the template part label. In some designs the template part label could be useful as a way to select the template part itself. This could confuse the interactions between dropdown and selection.

For now, I'd suggest we move forward with just the labels as indicators of what template and template part are being edited.

Copy link
Contributor

@Addison-Stavlo Addison-Stavlo Sep 15, 2020

Choose a reason for hiding this comment

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

In some designs the template part label could be useful as a way to select the template part itself.

If the label already shows the name of the template part, is it not already selected or hovered? And in the case of being hovered you couldn't hover it and click the name in the top-bar at the same time so... I guess I dont understand how clicking the name of the Template Part here would act to select it (as it would always already be selected)?

Edit - I guess that would be to select the template part itself if we already have one of its child blocks selected? 🤔 That seems a bit odd, I wonder if normal users would actually figure that out and utilize it? But its definitely something we could make work.

Copy link
Contributor

Choose a reason for hiding this comment

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

I'm not sure where we've landed on this being a dropdown; I think it makes a lot of sense for the document/template label to open some settings

So what should it open for controlling the settings then? I thought the current design mocks for these settings were a dropdown?

Copy link
Contributor

Choose a reason for hiding this comment

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

It might be best to focus on showing the template part being edited first — and then add the interaction in another PR. I'll defer to @dubielzyk here.

Copy link
Member Author

Choose a reason for hiding this comment

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

that sounds fine to me. I used the dropdown because I thought the document settings menu would be activated on click of this "area," and based on current designs that does at least sort of look like a dropdown menu 😅

Totally on board with keeping just the labels for the time being.

Copy link
Member Author

Choose a reason for hiding this comment

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

yep! Per:

Top label is template or page/post

I think this opens a can of worms conceptually, because if we go with "page," we're starting to think about the site editor from a user's page-first perspective rather than a technical person's template-first perspective. To be clear, it's easy to change the variable rendering this technically :D

I'm mostly convinced by the argument to think about the site editor from a page-first perspective.

Choose a reason for hiding this comment

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

I 100% agree that we should go page/post first. I think we only show the template if they use an entry-point that is about editing a specific template.

Copy link
Member Author

Choose a reason for hiding this comment

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

I think we only show the template

right, and to be clear, the template would get "shown" in the editor either way, but it would be more of the focus there

Choose a reason for hiding this comment

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

I mean this:
image

So yeah, we'd show a way to see what template is being affected either way, but if a users wants to edit their About page, then we'd display About in the top bar. If they are going to editing a specific template, we'd show that in the top bar. Hope that makes more sense 😄

Copy link
Member Author

Choose a reason for hiding this comment

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

That does make sense. I think, as we discussed in the meeting, this is tricky because there are no entrypoints currently which let us infer if the user wants to mainly edit a template or a page. :)

Copy link
Contributor

@jeyip jeyip left a comment

Choose a reason for hiding this comment

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

Nice job! These changes are compact, straightforward, and I think they'll serve as a great point of discussion for design.

As far as the code goes, I don't see any red flags or areas of concern. It also seems like the work here can be adapted very easily to the new mocks proposed by Shaun. 👍

@noahtallen
Copy link
Member Author

cc @shaunandrews updated with vertical design:

2020-09-15 11 50 23

@noahtallen
Copy link
Member Author

Trying out the template part selection (doesn't handle parent blocks yet)

2020-09-15 12 18 48

@noahtallen
Copy link
Member Author

In 202d122, I added the animation from the design, and also corrected the spacing to match this comment.

@noahtallen noahtallen marked this pull request as ready for review September 16, 2020 19:38
Copy link
Contributor

@Addison-Stavlo Addison-Stavlo left a comment

Choose a reason for hiding this comment

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

This is looking good and behaving well to me!

As noted in TODO we don't have the child selected state covered, but I would be happy with this being addressed in a follow-up (potentially along with the hover label).

@noahtallen noahtallen force-pushed the try/add-document-settings-in-header branch from 202d122 to f4927d4 Compare September 17, 2020 22:04
Copy link
Contributor

@Addison-Stavlo Addison-Stavlo left a comment

Choose a reason for hiding this comment

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

This works well and looks good to me!

I noticed the template title isn't capitalized for index/singular on my end. Do we need to use a title/label instead of the slug? (not to block this, however)

@noahtallen
Copy link
Member Author

I noticed the template title isn't capitalized for index/singular on my end. Do we need to use a title/label instead of the slug? (not to block this, however)

nice catch! Currently the title is equal to the slug, so it also isn't capitalized. I'm personally inclined to leave it as is since we'll probably switch to use the page context soon. Plus, the index slug is probably the most accurate thing to use at this point since we don't have a solid system for having a "display name" for a template

@noahtallen noahtallen changed the title FSE: Add basic template information to header FSE: Add basic template information to editor header Sep 17, 2020
@noahtallen noahtallen merged commit 2fbad1b into master Sep 17, 2020
@noahtallen noahtallen deleted the try/add-document-settings-in-header branch September 17, 2020 23:20
@github-actions github-actions bot added this to the Gutenberg 9.1 milestone Sep 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Type] Enhancement A suggestion for improvement.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants