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

Template part block: Add category panel #29159

Merged
merged 9 commits into from
Feb 24, 2021

Conversation

david-szabo97
Copy link
Member

@david-szabo97 david-szabo97 commented Feb 19, 2021

Description

Add category panel to template part block. This allows us to change the assigned area of the template part.

Related: #29152

How has this been tested?

  1. Open site editor
  2. Insert template part
  3. Select template part block
  4. Open settings sidebar
  5. Switch to Block tab
  6. You should see Category panel
  7. Dropdown should show the correct value
  8. Changing the value and saving should work

Screenshots

image

Types of changes

New feature (non-breaking change which adds functionality)

Checklist:

  • My code is tested.
  • My code follows the WordPress code style.
  • My code follows the accessibility standards.
  • I've tested my changes with keyboard and screen readers.
  • 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.

@david-szabo97 david-szabo97 added [Type] Feature New feature to highlight in changelogs. [Block] Template Part Affects the Template Parts Block labels Feb 19, 2021
@david-szabo97 david-szabo97 self-assigned this Feb 19, 2021
<PanelBody title={ __( 'Category' ) }>
<SelectControl
label={ __( 'Select template part category' ) }
labelPosition="top"
Copy link
Member Author

@david-szabo97 david-szabo97 Feb 19, 2021

Choose a reason for hiding this comment

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

Any idea why labelPosition="top" is not working? 🤔 The label is still positioned on the side.

Copy link
Contributor

Choose a reason for hiding this comment

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

I hope you don't mind a pushed a patch here: ffa154b

I'm not sure if this is the right way of handling this though, as it seems this PR: #28609 introduced this 'conflict' (? 🤔 ). @sarayourfriend @ItsJonQ any feedback 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.

Root correctly applies the CSS based on the labelPosition:
image

But for some reason a CSS class (which seems to be the Flex component) overrides it:
image

This is interesting because Flex's styled CSS class should come BEFORE Root. Root extends Flex:

export const Root = styled( Flex )`
position: relative;
border-radius: 2px;
${ rootFloatLabelStyles }
${ rootFocusedStyles }
${ rootLabelPositionStyles }
`;

Oh, and it works fine in Storybook. So it's something with the Editor itself?

Copy link
Contributor

@sarayourfriend sarayourfriend Feb 22, 2021

Choose a reason for hiding this comment

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

I think the issue is that we're using two different styled functions and the specificity of the Root selector is less than the base Flex selector. There's one that comes from @wp-g2/styles that I think using would fix this as it adds some specificity rules. @ItsJonQ what's the intended solution in this situation?

Do we actually need the extra specificity? I wonder what would happen if we did without it.

Copy link

Choose a reason for hiding this comment

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

As @sarayourfriend has pointed out, the issue is indeed caused by the 2 ways the CSS-in-JS styles are being compiled. Something we need to smooth out for the Component System integration.

Do we actually need the extra specificity? I wonder what would happen if we did without it.

We do. Even before the next Component System (G2), we had to resort to hacks like &&& for certain components just so they would render correctly:

https://github.com/WordPress/gutenberg/blob/master/packages/components/src/input-control/styles/input-control-styles.js#L184

My intuition tells me that we need to adjust some props in the input-control/input-base.js to ensure it plays nicely with the new Flex component (rather than a CSS fix).

Copy link

Choose a reason for hiding this comment

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

Update! I have a working solution. It involves remapping props from input-control to feed into the new flex component. Will create a PR shortly

Copy link

Choose a reason for hiding this comment

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

Created a PR here :)
#29226

@github-actions
Copy link

github-actions bot commented Feb 19, 2021

Size Change: +179 B (0%)

Total Size: 1.38 MB

Filename Size Change
build/block-library/blocks/table/editor-rtl.css 478 B -11 B (-2%)
build/block-library/blocks/table/editor.css 478 B -11 B (-2%)
build/block-library/blocks/table/style-rtl.css 390 B +4 B (+1%)
build/block-library/blocks/table/style.css 390 B +4 B (+1%)
build/block-library/editor-rtl.css 9.04 kB -12 B (0%)
build/block-library/editor.css 9.03 kB -13 B (0%)
build/block-library/index.js 145 kB +218 B (0%)
build/block-library/style-rtl.css 8.85 kB +9 B (0%)
build/block-library/style.css 8.85 kB +9 B (0%)
build/block-library/theme-rtl.css 736 B -12 B (-2%)
build/block-library/theme.css 736 B -12 B (-2%)
build/components/index.js 272 kB +6 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/annotations/index.js 3.78 kB 0 B
build/api-fetch/index.js 3.4 kB 0 B
build/autop/index.js 2.84 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/index.js 9.1 kB 0 B
build/block-directory/style-rtl.css 1.01 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/index.js 124 kB 0 B
build/block-editor/style-rtl.css 12.1 kB 0 B
build/block-editor/style.css 12.1 kB 0 B
build/block-library/blocks/archives/editor-rtl.css 61 B 0 B
build/block-library/blocks/archives/editor.css 60 B 0 B
build/block-library/blocks/audio/editor-rtl.css 58 B 0 B
build/block-library/blocks/audio/editor.css 58 B 0 B
build/block-library/blocks/audio/style-rtl.css 103 B 0 B
build/block-library/blocks/audio/style.css 103 B 0 B
build/block-library/blocks/block/editor-rtl.css 161 B 0 B
build/block-library/blocks/block/editor.css 161 B 0 B
build/block-library/blocks/button/editor-rtl.css 475 B 0 B
build/block-library/blocks/button/editor.css 474 B 0 B
build/block-library/blocks/button/style-rtl.css 479 B 0 B
build/block-library/blocks/button/style.css 479 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 233 B 0 B
build/block-library/blocks/buttons/editor.css 233 B 0 B
build/block-library/blocks/buttons/style-rtl.css 318 B 0 B
build/block-library/blocks/buttons/style.css 318 B 0 B
build/block-library/blocks/calendar/style-rtl.css 208 B 0 B
build/block-library/blocks/calendar/style.css 208 B 0 B
build/block-library/blocks/categories/editor-rtl.css 84 B 0 B
build/block-library/blocks/categories/editor.css 83 B 0 B
build/block-library/blocks/categories/style-rtl.css 79 B 0 B
build/block-library/blocks/categories/style.css 79 B 0 B
build/block-library/blocks/code/style-rtl.css 90 B 0 B
build/block-library/blocks/code/style.css 90 B 0 B
build/block-library/blocks/columns/editor-rtl.css 190 B 0 B
build/block-library/blocks/columns/editor.css 190 B 0 B
build/block-library/blocks/columns/style-rtl.css 421 B 0 B
build/block-library/blocks/columns/style.css 421 B 0 B
build/block-library/blocks/cover/editor-rtl.css 390 B 0 B
build/block-library/blocks/cover/editor.css 389 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.25 kB 0 B
build/block-library/blocks/cover/style.css 1.25 kB 0 B
build/block-library/blocks/embed/editor-rtl.css 486 B 0 B
build/block-library/blocks/embed/editor.css 486 B 0 B
build/block-library/blocks/embed/style-rtl.css 396 B 0 B
build/block-library/blocks/embed/style.css 395 B 0 B
build/block-library/blocks/file/editor-rtl.css 199 B 0 B
build/block-library/blocks/file/editor.css 198 B 0 B
build/block-library/blocks/file/style-rtl.css 248 B 0 B
build/block-library/blocks/file/style.css 248 B 0 B
build/block-library/blocks/freeform/editor-rtl.css 2.45 kB 0 B
build/block-library/blocks/freeform/editor.css 2.45 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 689 B 0 B
build/block-library/blocks/gallery/editor.css 690 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.07 kB 0 B
build/block-library/blocks/gallery/style.css 1.06 kB 0 B
build/block-library/blocks/group/editor-rtl.css 318 B 0 B
build/block-library/blocks/group/editor.css 317 B 0 B
build/block-library/blocks/group/style-rtl.css 57 B 0 B
build/block-library/blocks/group/style.css 57 B 0 B
build/block-library/blocks/heading/editor-rtl.css 129 B 0 B
build/block-library/blocks/heading/editor.css 129 B 0 B
build/block-library/blocks/heading/style-rtl.css 76 B 0 B
build/block-library/blocks/heading/style.css 76 B 0 B
build/block-library/blocks/html/editor-rtl.css 281 B 0 B
build/block-library/blocks/html/editor.css 281 B 0 B
build/block-library/blocks/image/editor-rtl.css 717 B 0 B
build/block-library/blocks/image/editor.css 716 B 0 B
build/block-library/blocks/image/style-rtl.css 477 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/editor-rtl.css 159 B 0 B
build/block-library/blocks/latest-comments/editor.css 158 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 269 B 0 B
build/block-library/blocks/latest-comments/style.css 269 B 0 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B 0 B
build/block-library/blocks/latest-posts/editor.css 137 B 0 B
build/block-library/blocks/latest-posts/style-rtl.css 523 B 0 B
build/block-library/blocks/latest-posts/style.css 522 B 0 B
build/block-library/blocks/list/editor-rtl.css 65 B 0 B
build/block-library/blocks/list/editor.css 65 B 0 B
build/block-library/blocks/list/style-rtl.css 63 B 0 B
build/block-library/blocks/list/style.css 63 B 0 B
build/block-library/blocks/media-text/editor-rtl.css 191 B 0 B
build/block-library/blocks/media-text/editor.css 191 B 0 B
build/block-library/blocks/media-text/style-rtl.css 535 B 0 B
build/block-library/blocks/media-text/style.css 532 B 0 B
build/block-library/blocks/more/editor-rtl.css 434 B 0 B
build/block-library/blocks/more/editor.css 434 B 0 B
build/block-library/blocks/navigation-link/editor-rtl.css 395 B 0 B
build/block-library/blocks/navigation-link/editor.css 397 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 704 B 0 B
build/block-library/blocks/navigation-link/style.css 702 B 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.34 kB 0 B
build/block-library/blocks/navigation/editor.css 1.34 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 195 B 0 B
build/block-library/blocks/navigation/style.css 195 B 0 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B 0 B
build/block-library/blocks/nextpage/editor.css 395 B 0 B
build/block-library/blocks/page-list/editor-rtl.css 214 B 0 B
build/block-library/blocks/page-list/editor.css 214 B 0 B
build/block-library/blocks/page-list/style-rtl.css 527 B 0 B
build/block-library/blocks/page-list/style.css 526 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 109 B 0 B
build/block-library/blocks/paragraph/editor.css 109 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 273 B 0 B
build/block-library/blocks/paragraph/style.css 273 B 0 B
build/block-library/blocks/post-author/editor-rtl.css 209 B 0 B
build/block-library/blocks/post-author/editor.css 209 B 0 B
build/block-library/blocks/post-author/style-rtl.css 183 B 0 B
build/block-library/blocks/post-author/style.css 184 B 0 B
build/block-library/blocks/post-comments-form/style-rtl.css 250 B 0 B
build/block-library/blocks/post-comments-form/style.css 250 B 0 B
build/block-library/blocks/post-content/editor-rtl.css 139 B 0 B
build/block-library/blocks/post-content/editor.css 139 B 0 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B 0 B
build/block-library/blocks/post-excerpt/editor.css 73 B 0 B
build/block-library/blocks/post-featured-image/editor-rtl.css 338 B 0 B
build/block-library/blocks/post-featured-image/editor.css 338 B 0 B
build/block-library/blocks/post-featured-image/style-rtl.css 100 B 0 B
build/block-library/blocks/post-featured-image/style.css 100 B 0 B
build/block-library/blocks/preformatted/style-rtl.css 63 B 0 B
build/block-library/blocks/preformatted/style.css 63 B 0 B
build/block-library/blocks/pullquote/editor-rtl.css 183 B 0 B
build/block-library/blocks/pullquote/editor.css 183 B 0 B
build/block-library/blocks/pullquote/style-rtl.css 316 B 0 B
build/block-library/blocks/pullquote/style.css 316 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 90 B 0 B
build/block-library/blocks/query-loop/editor.css 89 B 0 B
build/block-library/blocks/query-loop/style-rtl.css 315 B 0 B
build/block-library/blocks/query-loop/style.css 317 B 0 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B 0 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B 0 B
build/block-library/blocks/query-pagination/editor-rtl.css 270 B 0 B
build/block-library/blocks/query-pagination/editor.css 262 B 0 B
build/block-library/blocks/query-pagination/style-rtl.css 168 B 0 B
build/block-library/blocks/query-pagination/style.css 168 B 0 B
build/block-library/blocks/query/editor-rtl.css 159 B 0 B
build/block-library/blocks/query/editor.css 160 B 0 B
build/block-library/blocks/quote/editor-rtl.css 61 B 0 B
build/block-library/blocks/quote/editor.css 61 B 0 B
build/block-library/blocks/quote/style-rtl.css 169 B 0 B
build/block-library/blocks/quote/style.css 169 B 0 B
build/block-library/blocks/rss/editor-rtl.css 201 B 0 B
build/block-library/blocks/rss/editor.css 202 B 0 B
build/block-library/blocks/rss/style-rtl.css 290 B 0 B
build/block-library/blocks/rss/style.css 290 B 0 B
build/block-library/blocks/search/editor-rtl.css 165 B 0 B
build/block-library/blocks/search/editor.css 165 B 0 B
build/block-library/blocks/search/style-rtl.css 342 B 0 B
build/block-library/blocks/search/style.css 344 B 0 B
build/block-library/blocks/separator/editor-rtl.css 99 B 0 B
build/block-library/blocks/separator/editor.css 99 B 0 B
build/block-library/blocks/separator/style-rtl.css 236 B 0 B
build/block-library/blocks/separator/style.css 236 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 504 B 0 B
build/block-library/blocks/shortcode/editor.css 504 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 201 B 0 B
build/block-library/blocks/site-logo/editor.css 201 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 115 B 0 B
build/block-library/blocks/site-logo/style.css 115 B 0 B
build/block-library/blocks/social-link/editor-rtl.css 164 B 0 B
build/block-library/blocks/social-link/editor.css 165 B 0 B
build/block-library/blocks/social-links/editor-rtl.css 696 B 0 B
build/block-library/blocks/social-links/editor.css 696 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.36 kB 0 B
build/block-library/blocks/social-links/style.css 1.36 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 302 B 0 B
build/block-library/blocks/spacer/editor.css 302 B 0 B
build/block-library/blocks/spacer/style-rtl.css 48 B 0 B
build/block-library/blocks/spacer/style.css 48 B 0 B
build/block-library/blocks/subhead/editor-rtl.css 99 B 0 B
build/block-library/blocks/subhead/editor.css 99 B 0 B
build/block-library/blocks/subhead/style-rtl.css 80 B 0 B
build/block-library/blocks/subhead/style.css 80 B 0 B
build/block-library/blocks/tag-cloud/editor-rtl.css 118 B 0 B
build/block-library/blocks/tag-cloud/editor.css 118 B 0 B
build/block-library/blocks/tag-cloud/style-rtl.css 94 B 0 B
build/block-library/blocks/tag-cloud/style.css 94 B 0 B
build/block-library/blocks/template-part/editor-rtl.css 557 B 0 B
build/block-library/blocks/template-part/editor.css 556 B 0 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B 0 B
build/block-library/blocks/text-columns/editor.css 95 B 0 B
build/block-library/blocks/text-columns/style-rtl.css 166 B 0 B
build/block-library/blocks/text-columns/style.css 166 B 0 B
build/block-library/blocks/verse/editor-rtl.css 62 B 0 B
build/block-library/blocks/verse/editor.css 62 B 0 B
build/block-library/blocks/verse/style-rtl.css 87 B 0 B
build/block-library/blocks/verse/style.css 87 B 0 B
build/block-library/blocks/video/editor-rtl.css 504 B 0 B
build/block-library/blocks/video/editor.css 503 B 0 B
build/block-library/blocks/video/style-rtl.css 193 B 0 B
build/block-library/blocks/video/style.css 193 B 0 B
build/block-library/common-rtl.css 1.08 kB 0 B
build/block-library/common.css 1.08 kB 0 B
build/block-serialization-default-parser/index.js 1.88 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/blocks/index.js 48.3 kB 0 B
build/components/style-rtl.css 15.5 kB 0 B
build/components/style.css 15.5 kB 0 B
build/compose/index.js 11.1 kB 0 B
build/core-data/index.js 16.7 kB 0 B
build/customize-widgets/index.js 4.08 kB 0 B
build/customize-widgets/style-rtl.css 168 B 0 B
build/customize-widgets/style.css 168 B 0 B
build/data-controls/index.js 830 B 0 B
build/data/index.js 8.86 kB 0 B
build/date/index.js 31.8 kB 0 B
build/deprecated/index.js 768 B 0 B
build/dom-ready/index.js 576 B 0 B
build/dom/index.js 4.94 kB 0 B
build/edit-navigation/index.js 11 kB 0 B
build/edit-navigation/style-rtl.css 1.26 kB 0 B
build/edit-navigation/style.css 1.25 kB 0 B
build/edit-post/index.js 307 kB 0 B
build/edit-post/style-rtl.css 6.81 kB 0 B
build/edit-post/style.css 6.8 kB 0 B
build/edit-site/index.js 26.2 kB 0 B
build/edit-site/style-rtl.css 4.41 kB 0 B
build/edit-site/style.css 4.41 kB 0 B
build/edit-widgets/index.js 20.1 kB 0 B
build/edit-widgets/style-rtl.css 3.2 kB 0 B
build/edit-widgets/style.css 3.2 kB 0 B
build/editor/editor-styles-rtl.css 543 B 0 B
build/editor/editor-styles.css 545 B 0 B
build/editor/index.js 42.1 kB 0 B
build/editor/style-rtl.css 3.89 kB 0 B
build/editor/style.css 3.89 kB 0 B
build/element/index.js 4.61 kB 0 B
build/escape-html/index.js 735 B 0 B
build/format-library/index.js 6.77 kB 0 B
build/format-library/style-rtl.css 637 B 0 B
build/format-library/style.css 639 B 0 B
build/hooks/index.js 2.28 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 4.01 kB 0 B
build/is-shallow-equal/index.js 698 B 0 B
build/keyboard-shortcuts/index.js 2.54 kB 0 B
build/keycodes/index.js 1.95 kB 0 B
build/list-reusable-blocks/index.js 3.14 kB 0 B
build/list-reusable-blocks/style-rtl.css 629 B 0 B
build/list-reusable-blocks/style.css 628 B 0 B
build/media-utils/index.js 5.35 kB 0 B
build/notices/index.js 1.85 kB 0 B
build/nux/index.js 3.41 kB 0 B
build/nux/style-rtl.css 731 B 0 B
build/nux/style.css 727 B 0 B
build/plugins/index.js 2.55 kB 0 B
build/primitives/index.js 1.42 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/react-i18n/index.js 1.45 kB 0 B
build/redux-routine/index.js 2.83 kB 0 B
build/reusable-blocks/index.js 3.77 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 0 B
build/rich-text/index.js 13.4 kB 0 B
build/server-side-render/index.js 2.76 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.27 kB 0 B
build/url/index.js 3.01 kB 0 B
build/viewport/index.js 1.85 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

Copy link
Contributor

@ntsekouras ntsekouras left a comment

Choose a reason for hiding this comment

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

Thanks for working on this @david-szabo97 !

I left some comments but the main functionality was tested and works 👍

);

return (
<PanelBody title={ __( 'Category' ) }>
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 this should be in its own panel and with this title. Same remark about the below label Select template part category. I think we want to avoid template part wording and maybe just Area should be okay? 🤔
@mtias

Copy link
Member Author

Choose a reason for hiding this comment

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

For now, I followed @jameskoster 's mockup that you can find here: #27875

@jameskoster
Copy link
Contributor

Thinking things through a little more... I am not sure that the title + area options should be so prominent in this context. It could easily mislead users into believing that any changes they make here are local to the parent template. I know the multi-entity save flow clears that up, but that might be a bit late...

Therefore, I'm thinking it might be better to move these options to the "Advanced" section:

Screenshot 2021-02-22 at 12 46 01

The prominence could perhaps increase when editing a template part in isolation... something like:

Screenshot 2021-02-22 at 12 52 59

But that is something to explore in more detail elsewhere (#29148).


This is possibly tangential, but should the html element change when you switch area? IE if I switch from Header to Footer, should the tag also change from <header> to <footer>?

@david-szabo97
Copy link
Member Author

david-szabo97 commented Feb 22, 2021

Therefore, I'm thinking it might be better to move these options to the "Advanced" section:

IMO, this makes sense. This is more like a power-user feature anyway.

This is possibly tangential, but should the HTML element change when you switch area? IE if I switch from Header to Footer, should the tag also change from

to ?

I'd say this is OK if the current area matches the current tag. IE, area = header, tag = header, but I when switch to area = footer then tag becomes footer too. But if area = header, tag = div, then I switch to area = footer then tag should stay div.

Maybe that's too smart?

@ntsekouras
Copy link
Contributor

I'd say this is OK if the current area matches the current tag. IE, area = header, tag = header, but I when switch to area = footer then tag becomes footer too. But if area = header, tag = div, then I switch to area = footer then tag should stay div.

Maybe that's too smart?

I think it makes perfect sense to do exactly what you described.

@mtias
Copy link
Member

mtias commented Feb 22, 2021

Agreed with placing them in "Advanced". I think "area" needs some contextual explanatory text. Ideally we could also use the icons on the select element. Considering we might just have 3 or 4 canonical areas. It might make sense to list them as icons in a segmented control like the toolbar?

@Addison-Stavlo
Copy link
Contributor

I'd say this is OK if the current area matches the current tag. IE, area = header, tag = header, but I when switch to area = footer then tag becomes footer too. But if area = header, tag = div, then I switch to area = footer then tag should stay div.

I think it makes sense to only set a tag based on the semantic area if a tagName attribute isn't set. So maybe we add an 'area default' to the tag name dropdown (and maybe add that default value in parens) that corresponds to the tagName being unset. Then when no tagname is set, we default to that value that corresponds to the semantic area.

@jameskoster
Copy link
Contributor

We could use the existing icon buttons to create a simple segmented control:

Screenshot 2021-02-22 at 15 55 06

Or we might create something more elaborate that can also be used in #29222

Screenshot 2021-02-22 at 15 55 56

The helper text needs optimisation.

@Addison-Stavlo
Copy link
Contributor

We could use the existing icon buttons to create a simple segmented control

It looks nice! Im not sure how many different 'areas' we plan to support in the future, but if we add a handful that second one with the large icons might become a bit weighty.

@jameskoster
Copy link
Contributor

It could probably scale in rows – like the Inserter. But yeah, the simpler implementation might be the way to go to begin with.

@mtias
Copy link
Member

mtias commented Feb 22, 2021

The first one looks nice to me :)

@carolinan
Copy link
Contributor

carolinan commented Feb 23, 2021

I prefer it when the text with the area name is visible, or even the select list.
When the icons are used, I have to stop and think, trying to interpret what they mean. The tooltip can't replace that.

@david-szabo97 david-szabo97 force-pushed the add/category-panel-to-template-parts branch from f0a8988 to 23adb49 Compare February 23, 2021 09:59
@jameskoster jameskoster mentioned this pull request Feb 23, 2021
4 tasks
@Addison-Stavlo
Copy link
Contributor

This is working well!
I like the default element tag based on area for when no tagName is set! However, it looks like as a result of that there is no way to set it as a div without the area being 'General'. I wonder if we should just add div to the list for elements now so users can have the power to override the area default with something non-semantic if there is ever any need.

@Addison-Stavlo
Copy link
Contributor

I prefer it when the text with the area name is visible, or even the select list.

Maybe it makes sense to start with the dropdown list in this PR. And explore the icon designs in follow up?

@david-szabo97
Copy link
Member Author

  • Moved controls to Advanced panel
  • Added div as an option for HTML element
  • Added a new "Default based on area" option for HTML elements
  • Fixed tests

Maybe it makes sense to start with the dropdown list in this PR. And explore the icon designs in follow up?

I agree, let's keep them separate. Easier to review and discuss as well.

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 looks great and tests well in both the editor and front end!

@@ -91,31 +93,12 @@ export default function TemplatePartEdit( {

return (
<>
<InspectorControls>
Copy link
Contributor

Choose a reason for hiding this comment

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

Nice call moving all this to another file. Its definitely a bit more organized now.

Comment on lines +44 to +46
const advancedPanelXPath = `//div[contains(@class,"interface-interface-skeleton__sidebar")]//button[@class="components-button components-panel__body-toggle"][contains(text(),"Advanced")]`;
const advancedPanel = await page.waitForXPath( advancedPanelXPath );
await advancedPanel.click();
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if current e2e utils ensureSidebarOpened, findSidebarPanelToggleButtonWithTitle, findSidebarPanelWithTitle, may be useful 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.

Would be great, but just checked them and they are only working in edit-post context 😞

Copy link
Contributor

Choose a reason for hiding this comment

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

are only working in edit-post context

Isn't that the context this function is being run in? It looks like it is used in test setup in before all, after createNewPost and before siteEditor.visit(). Similarly it uses openDocumentSettingsSidebar a few lines above this which is also reliant on edit-post* selectors.

@david-szabo97 david-szabo97 merged commit dc74730 into master Feb 24, 2021
@david-szabo97 david-szabo97 deleted the add/category-panel-to-template-parts branch February 24, 2021 11:48
@github-actions github-actions bot added this to the Gutenberg 10.2 milestone Feb 24, 2021
const AREA_TAGS = {
footer: 'footer',
header: 'header',
unactegorized: 'div',
Copy link
Contributor

Choose a reason for hiding this comment

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

Typo 😬

Suggested change
unactegorized: 'div',
uncategorized: 'div',

Copy link
Contributor

Choose a reason for hiding this comment

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

Or maybe we should consider renaming to something else, now that we're using "area" rather than "category.

Maybe unassigned? 🤔

Copy link
Contributor

Choose a reason for hiding this comment

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

Some template parts need not be assigned to a specific area, but "uncategorized" or "unassigned" might make them feel miss-placed or unorganised. That doesn't feel like the appropriate tone.

Perhaps something like "General" or "Universal"?

Copy link
Contributor

@Addison-Stavlo Addison-Stavlo Mar 17, 2021

Choose a reason for hiding this comment

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

"uncategorized" or "unassigned" seems appropriate in the case that an item exists and this value has never been assigned or distinguished. Or that no other existing value settings are appropriate.

"General" and "Universal" could definitely be 'areas', but they do not fit the same purpose as uncategorized/unassigned. We cannot assume something is "Universal" just because it doesn't fit into the existing categories, and when an item is not universal and does not fit into existing categories something like unassigned/uncategorized serves a purpose.

Copy link
Contributor

Choose a reason for hiding this comment

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

#29937 to fix the typos.

Perhaps something like "General" or "Universal"?

I just realized/remembered on the user facing side, 'uncategorized' is being displayed as "General".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Block] Template Part Affects the Template Parts Block [Type] Feature New feature to highlight in changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants