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

Site Editor: Add 'area' selection to convert to template part flow. #30395

Merged
merged 17 commits into from
Apr 12, 2021

Conversation

Addison-Stavlo
Copy link
Contributor

@Addison-Stavlo Addison-Stavlo commented Mar 30, 2021

Description

Attempts to resolve #29222 - by adding selection for 'area' in this modal per design suggestion #29222 (comment) (update to #30395 (comment))

How has this been tested?

To Test:

  1. Load the Site Editor (must have a block based theme such as tt1-blocks activated).
  2. Select an/some existing blocks in the editor (or create new ones).
  3. On the block toolbar, click the ellipsis menu and select the "Convert to Template Part" option.
  4. A modal should appear to name the template part and select its area (this area selection is what has been added in this PR).
  5. Create the template part and verify its block variation corresponds to the area selected in step 4.

Screenshots

Types of changes

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 (please manually search all *.native.js files for terms that need renaming or removal).

@Addison-Stavlo Addison-Stavlo self-assigned this Mar 30, 2021
@Addison-Stavlo Addison-Stavlo added the [Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") label Mar 30, 2021
@Addison-Stavlo
Copy link
Contributor Author

cc @jameskoster - how do you feel about the styles and interaction at this point?

@github-actions
Copy link

github-actions bot commented Mar 30, 2021

Size Change: +917 B (0%)

Total Size: 1.43 MB

Filename Size Change
build/annotations/index.js 3.79 kB +2 B (0%)
build/block-directory/index.js 8.63 kB +1 B (0%)
build/block-editor/index.js 127 kB +1 B (0%)
build/block-library/index.js 153 kB -1 B (0%)
build/blocks/index.js 48.5 kB -2 B (0%)
build/components/index.js 286 kB -1 B (0%)
build/customize-widgets/index.js 7.09 kB +1 B (0%)
build/edit-navigation/index.js 17 kB -1 B (0%)
build/edit-post/index.js 307 kB -3 B (0%)
build/edit-site/index.js 28.3 kB +257 B (+1%)
build/edit-site/style-rtl.css 4.9 kB +289 B (+6%) 🔍
build/edit-site/style.css 4.89 kB +286 B (+6%) 🔍
build/edit-widgets/index.js 15.7 kB -2 B (0%)
build/editor/index.js 42.5 kB +96 B (0%)
build/element/index.js 4.62 kB +1 B (0%)
build/format-library/index.js 6.76 kB -1 B (0%)
build/keyboard-shortcuts/index.js 2.53 kB -1 B (0%)
build/primitives/index.js 1.42 kB -2 B (0%)
build/rich-text/index.js 13.5 kB -2 B (0%)
build/server-side-render/index.js 2.6 kB -1 B (0%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.14 kB 0 B
build/api-fetch/index.js 3.41 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 665 B 0 B
build/block-directory/style-rtl.css 1 kB 0 B
build/block-directory/style.css 1.01 kB 0 B
build/block-editor/style-rtl.css 12.4 kB 0 B
build/block-editor/style.css 12.4 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 112 B 0 B
build/block-library/blocks/audio/style.css 112 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 503 B 0 B
build/block-library/blocks/button/style.css 503 B 0 B
build/block-library/blocks/buttons/editor-rtl.css 315 B 0 B
build/block-library/blocks/buttons/editor.css 315 B 0 B
build/block-library/blocks/buttons/style-rtl.css 368 B 0 B
build/block-library/blocks/buttons/style.css 368 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 436 B 0 B
build/block-library/blocks/columns/style.css 435 B 0 B
build/block-library/blocks/cover/editor-rtl.css 605 B 0 B
build/block-library/blocks/cover/editor.css 605 B 0 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB 0 B
build/block-library/blocks/cover/style.css 1.23 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 401 B 0 B
build/block-library/blocks/embed/style.css 400 B 0 B
build/block-library/blocks/file/editor-rtl.css 175 B 0 B
build/block-library/blocks/file/editor.css 174 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.44 kB 0 B
build/block-library/blocks/freeform/editor.css 2.44 kB 0 B
build/block-library/blocks/gallery/editor-rtl.css 704 B 0 B
build/block-library/blocks/gallery/editor.css 705 B 0 B
build/block-library/blocks/gallery/style-rtl.css 1.09 kB 0 B
build/block-library/blocks/gallery/style.css 1.09 kB 0 B
build/block-library/blocks/group/editor-rtl.css 160 B 0 B
build/block-library/blocks/group/editor.css 160 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 476 B 0 B
build/block-library/blocks/image/style.css 478 B 0 B
build/block-library/blocks/latest-comments/style-rtl.css 281 B 0 B
build/block-library/blocks/latest-comments/style.css 282 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/legacy-widget/editor-rtl.css 398 B 0 B
build/block-library/blocks/legacy-widget/editor.css 399 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 597 B 0 B
build/block-library/blocks/navigation-link/editor.css 597 B 0 B
build/block-library/blocks/navigation-link/style-rtl.css 1.07 kB 0 B
build/block-library/blocks/navigation-link/style.css 1.07 kB 0 B
build/block-library/blocks/navigation/editor-rtl.css 1.24 kB 0 B
build/block-library/blocks/navigation/editor.css 1.24 kB 0 B
build/block-library/blocks/navigation/style-rtl.css 204 B 0 B
build/block-library/blocks/navigation/style.css 205 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 239 B 0 B
build/block-library/blocks/page-list/editor.css 240 B 0 B
build/block-library/blocks/page-list/style-rtl.css 167 B 0 B
build/block-library/blocks/page-list/style.css 167 B 0 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B 0 B
build/block-library/blocks/paragraph/editor.css 157 B 0 B
build/block-library/blocks/paragraph/style-rtl.css 247 B 0 B
build/block-library/blocks/paragraph/style.css 248 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-excerpt/style-rtl.css 69 B 0 B
build/block-library/blocks/post-excerpt/style.css 69 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 103 B 0 B
build/block-library/blocks/preformatted/style.css 103 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 318 B 0 B
build/block-library/blocks/pullquote/style.css 318 B 0 B
build/block-library/blocks/query-loop/editor-rtl.css 83 B 0 B
build/block-library/blocks/query-loop/editor.css 82 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-title/editor-rtl.css 86 B 0 B
build/block-library/blocks/query-title/editor.css 86 B 0 B
build/block-library/blocks/query/editor-rtl.css 795 B 0 B
build/block-library/blocks/query/editor.css 794 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 189 B 0 B
build/block-library/blocks/search/editor.css 189 B 0 B
build/block-library/blocks/search/style-rtl.css 359 B 0 B
build/block-library/blocks/search/style.css 362 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 251 B 0 B
build/block-library/blocks/separator/style.css 251 B 0 B
build/block-library/blocks/shortcode/editor-rtl.css 512 B 0 B
build/block-library/blocks/shortcode/editor.css 512 B 0 B
build/block-library/blocks/site-logo/editor-rtl.css 438 B 0 B
build/block-library/blocks/site-logo/editor.css 438 B 0 B
build/block-library/blocks/site-logo/style-rtl.css 150 B 0 B
build/block-library/blocks/site-logo/style.css 150 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 776 B 0 B
build/block-library/blocks/social-links/editor.css 776 B 0 B
build/block-library/blocks/social-links/style-rtl.css 1.32 kB 0 B
build/block-library/blocks/social-links/style.css 1.33 kB 0 B
build/block-library/blocks/spacer/editor-rtl.css 308 B 0 B
build/block-library/blocks/spacer/editor.css 308 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/table/editor-rtl.css 478 B 0 B
build/block-library/blocks/table/editor.css 478 B 0 B
build/block-library/blocks/table/style-rtl.css 402 B 0 B
build/block-library/blocks/table/style.css 402 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 552 B 0 B
build/block-library/blocks/template-part/editor.css 551 B 0 B
build/block-library/blocks/term-description/editor-rtl.css 90 B 0 B
build/block-library/blocks/term-description/editor.css 90 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 50 B 0 B
build/block-library/blocks/verse/editor.css 50 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 173 B 0 B
build/block-library/blocks/video/style.css 173 B 0 B
build/block-library/common-rtl.css 1.31 kB 0 B
build/block-library/common.css 1.31 kB 0 B
build/block-library/editor-rtl.css 9.76 kB 0 B
build/block-library/editor.css 9.75 kB 0 B
build/block-library/reset-rtl.css 502 B 0 B
build/block-library/reset.css 503 B 0 B
build/block-library/style-rtl.css 9.38 kB 0 B
build/block-library/style.css 9.39 kB 0 B
build/block-library/theme-rtl.css 692 B 0 B
build/block-library/theme.css 693 B 0 B
build/block-serialization-default-parser/index.js 1.87 kB 0 B
build/block-serialization-spec-parser/index.js 3.06 kB 0 B
build/components/style-rtl.css 16.3 kB 0 B
build/components/style.css 16.3 kB 0 B
build/compose/index.js 11.2 kB 0 B
build/core-data/index.js 17.1 kB 0 B
build/customize-widgets/style-rtl.css 630 B 0 B
build/customize-widgets/style.css 631 B 0 B
build/data-controls/index.js 839 B 0 B
build/data/index.js 8.88 kB 0 B
build/date/index.js 31.9 kB 0 B
build/deprecated/index.js 787 B 0 B
build/dom-ready/index.js 576 B 0 B
build/dom/index.js 5.25 kB 0 B
build/edit-navigation/style-rtl.css 2.86 kB 0 B
build/edit-navigation/style.css 2.86 kB 0 B
build/edit-post/classic-rtl.css 454 B 0 B
build/edit-post/classic.css 454 B 0 B
build/edit-post/style-rtl.css 6.94 kB 0 B
build/edit-post/style.css 6.93 kB 0 B
build/edit-widgets/style-rtl.css 2.97 kB 0 B
build/edit-widgets/style.css 2.98 kB 0 B
build/editor/style-rtl.css 3.92 kB 0 B
build/editor/style.css 3.92 kB 0 B
build/escape-html/index.js 735 B 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 623 B 0 B
build/i18n/index.js 4.01 kB 0 B
build/is-shallow-equal/index.js 699 B 0 B
build/keycodes/index.js 1.96 kB 0 B
build/list-reusable-blocks/index.js 3.19 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.38 kB 0 B
build/notices/index.js 1.86 kB 0 B
build/nux/index.js 3.42 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.95 kB 0 B
build/priority-queue/index.js 790 B 0 B
build/react-i18n/index.js 1.46 kB 0 B
build/redux-routine/index.js 2.84 kB 0 B
build/reusable-blocks/index.js 3.79 kB 0 B
build/reusable-blocks/style-rtl.css 225 B 0 B
build/reusable-blocks/style.css 225 B 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.02 kB 0 B
build/viewport/index.js 1.86 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.22 kB 0 B

compressed-size-action

@jameskoster
Copy link
Contributor

Everything works as expected :)

I made a couple of adjustments to the design to better match other similar UI elements. Mainly using the checkmark to indicate selection rather than the background color:

Screenshot 2021-03-31 at 09 51 30

@Addison-Stavlo
Copy link
Contributor Author

Addison-Stavlo commented Mar 31, 2021

I made a couple of adjustments to the design to better match other similar UI elements. Mainly using the checkmark to indicate selection rather than the background color:

Interesting, where else do we use this checkmark currently? (still waking up / drawing a blank on this 😆 )

to better match other similar UI elements.

This is what the button styles currently do by default (the opacity drop):

Screen Shot 2021-03-31 at 11 12 33 AM

It feels a bit ugly in this case to me. I think the checkbox or dark background both work better.

@Addison-Stavlo
Copy link
Contributor Author

I made a couple of adjustments to the design

Oh, I just realized you added those changes to this PR. 😆 Thanks a bunch!

@Addison-Stavlo
Copy link
Contributor Author

Here is a pic of me hovering over the selected button:

Screen Shot 2021-03-31 at 11 22 22 AM

I assume we want to get rid of the hover effect on the selected item (no change to blue)?

@jameskoster
Copy link
Contributor

where else do we use this checkmark currently?

It's a slightly different application to this, but the checkmark appears in the options here:

Screenshot 2021-03-31 at 16 33 40

I assume we want to get rid of the hover effect on the selected item (no change to blue)?

Ah yes, good spot.

@Addison-Stavlo
Copy link
Contributor Author

the checkmark appears in the options here

Ah right! Thanks for pointing it out. I have seen them plenty of times in the past but they don't stick in my memory. Thats probably a good sign that they do their job well without forcing me to think about them 😆

@Addison-Stavlo
Copy link
Contributor Author

Updated a bit to see if we could get better a11y navigation that will scale with more options in the future. I kind of got in a rabbit-hole with VoiceOver, things seem to work pretty well except my one complaint now is it doesn't announce when I'm in the "Area" selection region, it just immediately starts talking about the "General" option (while I think a voiceover user would be asking "what is this an option for?"). 🤔

@jameskoster
Copy link
Contributor

I'm not too familiar with voice over functionality, do you think some helper text beneath the area options could help there? Or even simpler – a (slightly) more descriptive label?

@Addison-Stavlo
Copy link
Contributor Author

I'm not too familiar with voice over functionality, do you think some helper text beneath the area options could help there? Or even simpler – a (slightly) more descriptive label?

Im not super familiar with it as well. But it seems like the label and/or helper text I tried aren't read when we navigate into that selection area. (For the 'name' input above it is, and for our similar dropdown/select input for area in the block inspector for the TP block it is.. but I guess this interaction is a bit different for it). It could be a quirk of the specific voiceover software as well.

All that said though, I think it is still usable and it may not be a huge deal (although it would be nice to fix that tiny bit). It does announce that it is a radio type item selection, whether or not the item is selected, and reads the area description for the first item which does add a lot of context.

@jameskoster jameskoster added the [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes). label Apr 1, 2021
@jeyip
Copy link
Contributor

jeyip commented Apr 1, 2021

Updated a bit to see if we could get better a11y navigation that will scale with more options in the future. I kind of got in a rabbit-hole with VoiceOver, things seem to work pretty well except my one complaint now is it doesn't announce when I'm in the "Area" selection region, it just immediately starts talking about the "General" option (while I think a voiceover user would be asking "what is this an option for?"). 🤔

I can reproduce this as well. I'm not entirely certain what's causing it, but I started digging into the wrapper BaseControl element we're using. A few things I noticed:

  • Looking at how the component is structured, I'm fairly certain that BaseControl should only be wrapping one form control element, and not multiple children.
  • The id prop we pass to BaseControl is applied as a for attribute to theBaseControl label. We should be applying the same id to whatever form control element BaseControl is wrapping : Link
    <BaseControl
        id="textarea-1"
        label="Text"
        help="Enter some text"
    >
        <textarea
            id="textarea-1"
        />
    </BaseControl>

@Addison-Stavlo
Copy link
Contributor Author

BaseControl should only be wrapping one form control element, and not multiple children.

The one element would be the Composite here, then the compsite's children CompositeItem are the options for that input.

We should be applying the same id to whatever form control element BaseControl is wrapping

oh good catch! I missed that same id was applied to the inner element. I was thinking that id was set on the bascontrol and the for on its corresponding label element. I tried it out, but it still seems to have the same behavior 🤔

@jeyip
Copy link
Contributor

jeyip commented Apr 1, 2021

The one element would be the Composite here, then the compsite's children CompositeItem are the options for that input.

Ahhh that makes sense. To clarify, did you add the id to the Composite component?

I tried it out, but it still seems to have the same behavior 🤔

I think it still might be an issue because I'm not sure if the label element generated by BaseControl and the label's for attribute can associate itself with a div ( the Composite component renders as a div ). I believe it can only bind to other control elements like textarea or input. Looking up more information...

Edit:
I found this excerpt from the whatwg html spec : Link

"Some elements, not all of them form-associated, are categorized as labelable elements. These are elements that can be associated with a label element. button, input (if the type attribute is not in the Hidden state) meter, output, progress, select, textarea, form-associated custom elements"

I don't think the label element that's auto-generated from BaseControl can bind to the Composite component correctly, because Composite renders as a div and not as a labelable element.

@Addison-Stavlo
Copy link
Contributor Author

Addison-Stavlo commented Apr 1, 2021

🤔 That makes sense, but im not sure what to do about it. We could use the 'as' prop if there was a form associated element that would work for this case. This also seems to be a problem with some pre-existing components as well (such as RadioGroup/Radio), as the RadioGroup also renders as a div.

Note - I could be making an issue out of nothing. Im not super familiar with using voiceover and after testing out other examples (like radio inputs in w3 etc.) the voiceover seems to read about the same as here. Its probably best not to invest too much time into this issue before we get some feedback from a11y.

@Addison-Stavlo
Copy link
Contributor Author

Besides that a11y ❓ in so much discussion above, this should be ready for review.

@Addison-Stavlo
Copy link
Contributor Author

Thanks for taking a look @ntsekouras ! Updated per your suggestions.

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.

Nice work @Addison-Stavlo 💯

With happy CI (some valid php linting issues right now) let's 🚢 !

@Addison-Stavlo Addison-Stavlo force-pushed the add/convert-to-template-part-area-selection branch from dd74d5f to e865df8 Compare April 12, 2021 15:59
@Addison-Stavlo Addison-Stavlo merged commit 53214b1 into trunk Apr 12, 2021
@Addison-Stavlo Addison-Stavlo deleted the add/convert-to-template-part-area-selection branch April 12, 2021 16:50
@github-actions github-actions bot added this to the Gutenberg 10.5 milestone Apr 12, 2021
@paaljoachim
Copy link
Contributor

Testing with WordPress 5.7
TT1
Special Gutenberg build version.

Selecting an image in the Index template.
Screen Shot 2021-04-12 at 23 04 07

Clicking "Make template part"

Screen Shot 2021-04-12 at 23 04 23

I see the screen with three options. General, Header and Footer.
To me General could be any sidebar area. Such as a template area just seen on posts. A under header area. A left or right sidebar. Or any other sidebar added to the site.

It uses the text:
General
General template often perform a specific role like displaying post content, and are not tied to any particular area.
---> To me it feels like it is missing some information which says that any area that are not associated with Header or Footer could be a general area.

@Addison-Stavlo
Copy link
Contributor Author

Thanks for taking a look @paaljoachim!

To me General could be any sidebar area.
To me it feels like it is missing some information which says that any area that are not associated with Header or Footer could be a general area.

We can definitely update the descriptions if needed. But I think the idea in the future is to actually support a "Sidebar" area in addition to header/footer/general. Its a bit more complicated than the other cases and we dont yet have the in-editor tools to support it, but I would assume once we get to developing sidebar support it would be its own item in this list? cc @jameskoster

@jameskoster
Copy link
Contributor

We can perhaps simplify the description a bit by leaving out the example.

General template parts are not tied to any particular area, and can appear in several locations across a site

Is that better?

@paaljoachim
Copy link
Contributor

Yeah! That fits in nicely with a general template parts area.

@Addison-Stavlo
Copy link
Contributor Author

#30811 - heres a PR to update the description. Feel free to update the copy if needed.

@priethor priethor changed the title Add 'area' selection to convert to template part flow. Site Editor: Add 'area' selection to convert to template part flow. Apr 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Site Editor Related to the overarching Site Editor (formerly "full site editing") [Focus] Accessibility (a11y) Changes that impact accessibility and need corresponding review (e.g. markup changes).
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create template part flow: Add "Area" selection input to modal.
7 participants