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

ToolsPanel: Refine component behaviour #34530

Merged
merged 14 commits into from
Sep 14, 2021
Merged

Conversation

aaronrobertshaw
Copy link
Contributor

@aaronrobertshaw aaronrobertshaw commented Sep 3, 2021

Fixes: #34257

Depends on:

Description

  • Updates the ToolsPanel to improve its UX following the suggestions outlined on the corresponding issue.
  • Adds min-width to ToolsPanel dropdown menu
  • Adds aria-labels to menu items

How has this been tested?

Manually:

  • Tested using the group block with padding and margin support
  • Tested using changes from 34065 and its injected min-height control for the cover block
  • Manually updated storybook story to test various configurations

Test instructions

  1. For testing, update the Group block's config to opt into padding and margin support, enabling one as a default control.
		"spacing": {
			"padding": true,
			"margin": true,
			"__experimentalDefaultControls": {
				"padding": true
			}
		},
  1. Depending on your theme, you'll likely also need to enable the margin support UI by setting the settings.spacing.customMargin property to true in your theme.json file.
  2. Add a group block in the post editor and select it
  3. Explore the behaviour of the ToolsPanel via the block's "Dimensions" panel.
  4. Fire up native and confirm that the Stepper component displays its check icon correctly. Any UnitControl on native will show this Stepper component, one easy block to test with on native is the Cover block.

Screenshots

Cover Block with cherry-picked commit from #34065

Screen.Recording.2021-09-06.at.4.50.05.pm.mp4

Storybook

Screen.Recording.2021-09-08.at.12.00.56.am.mp4

Types of changes

Enhancement

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).

@aaronrobertshaw aaronrobertshaw added [Type] Enhancement A suggestion for improvement. [Feature] UI Components Impacts or related to the UI component system [Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi labels Sep 3, 2021
@aaronrobertshaw aaronrobertshaw self-assigned this Sep 3, 2021
@aaronrobertshaw aaronrobertshaw changed the base branch from trunk to try/inspector-controls-with-toolspanel September 3, 2021 07:30
@github-actions
Copy link

github-actions bot commented Sep 3, 2021

Size Change: +444 B (0%)

Total Size: 1.06 MB

Filename Size Change
build/block-editor/index.min.js 128 kB -5 B (0%)
build/block-library/index.min.js 153 kB -3 B (0%)
build/components/index.min.js 209 kB +463 B (0%)
build/customize-widgets/index.min.js 11.1 kB +2 B (0%)
build/edit-navigation/index.min.js 15.4 kB -1 B (0%)
build/edit-post/index.min.js 29 kB -1 B (0%)
build/edit-site/index.min.js 26.6 kB -1 B (0%)
build/edit-widgets/index.min.js 16.1 kB -4 B (0%)
build/editor/index.min.js 37.7 kB -6 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 931 B
build/admin-manifest/index.min.js 1.09 kB
build/annotations/index.min.js 2.7 kB
build/api-fetch/index.min.js 2.19 kB
build/autop/index.min.js 2.08 kB
build/blob/index.min.js 459 B
build/block-directory/index.min.js 6.2 kB
build/block-directory/style-rtl.css 1.01 kB
build/block-directory/style.css 1.01 kB
build/block-editor/default-editor-styles-rtl.css 378 B
build/block-editor/default-editor-styles.css 378 B
build/block-editor/style-rtl.css 13.8 kB
build/block-editor/style.css 13.8 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 65 B
build/block-library/blocks/archives/style.css 65 B
build/block-library/blocks/audio/editor-rtl.css 58 B
build/block-library/blocks/audio/editor.css 58 B
build/block-library/blocks/audio/style-rtl.css 111 B
build/block-library/blocks/audio/style.css 111 B
build/block-library/blocks/audio/theme-rtl.css 125 B
build/block-library/blocks/audio/theme.css 125 B
build/block-library/blocks/block/editor-rtl.css 161 B
build/block-library/blocks/block/editor.css 161 B
build/block-library/blocks/button/editor-rtl.css 474 B
build/block-library/blocks/button/editor.css 474 B
build/block-library/blocks/button/style-rtl.css 600 B
build/block-library/blocks/button/style.css 600 B
build/block-library/blocks/buttons/editor-rtl.css 315 B
build/block-library/blocks/buttons/editor.css 315 B
build/block-library/blocks/buttons/style-rtl.css 370 B
build/block-library/blocks/buttons/style.css 370 B
build/block-library/blocks/calendar/style-rtl.css 207 B
build/block-library/blocks/calendar/style.css 207 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 79 B
build/block-library/blocks/categories/style.css 79 B
build/block-library/blocks/code/style-rtl.css 90 B
build/block-library/blocks/code/style.css 90 B
build/block-library/blocks/code/theme-rtl.css 131 B
build/block-library/blocks/code/theme.css 131 B
build/block-library/blocks/columns/editor-rtl.css 206 B
build/block-library/blocks/columns/editor.css 205 B
build/block-library/blocks/columns/style-rtl.css 497 B
build/block-library/blocks/columns/style.css 496 B
build/block-library/blocks/cover/editor-rtl.css 666 B
build/block-library/blocks/cover/editor.css 670 B
build/block-library/blocks/cover/style-rtl.css 1.23 kB
build/block-library/blocks/cover/style.css 1.23 kB
build/block-library/blocks/embed/editor-rtl.css 488 B
build/block-library/blocks/embed/editor.css 488 B
build/block-library/blocks/embed/style-rtl.css 417 B
build/block-library/blocks/embed/style.css 417 B
build/block-library/blocks/embed/theme-rtl.css 124 B
build/block-library/blocks/embed/theme.css 124 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/style-rtl.css 255 B
build/block-library/blocks/file/style.css 255 B
build/block-library/blocks/file/view.min.js 322 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 983 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.6 kB
build/block-library/blocks/gallery/style.css 1.59 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 159 B
build/block-library/blocks/group/editor.css 159 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 70 B
build/block-library/blocks/group/theme.css 70 B
build/block-library/blocks/heading/style-rtl.css 114 B
build/block-library/blocks/heading/style.css 114 B
build/block-library/blocks/home-link/style-rtl.css 247 B
build/block-library/blocks/home-link/style.css 247 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/editor-rtl.css 728 B
build/block-library/blocks/image/editor.css 728 B
build/block-library/blocks/image/style-rtl.css 482 B
build/block-library/blocks/image/style.css 487 B
build/block-library/blocks/image/theme-rtl.css 124 B
build/block-library/blocks/image/theme.css 124 B
build/block-library/blocks/latest-comments/style-rtl.css 284 B
build/block-library/blocks/latest-comments/style.css 284 B
build/block-library/blocks/latest-posts/editor-rtl.css 137 B
build/block-library/blocks/latest-posts/editor.css 137 B
build/block-library/blocks/latest-posts/style-rtl.css 528 B
build/block-library/blocks/latest-posts/style.css 527 B
build/block-library/blocks/list/style-rtl.css 94 B
build/block-library/blocks/list/style.css 94 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 488 B
build/block-library/blocks/media-text/style.css 485 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 489 B
build/block-library/blocks/navigation-link/editor.css 488 B
build/block-library/blocks/navigation-link/style-rtl.css 94 B
build/block-library/blocks/navigation-link/style.css 94 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 300 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation-submenu/style-rtl.css 298 B
build/block-library/blocks/navigation-submenu/style.css 298 B
build/block-library/blocks/navigation-submenu/view.min.js 343 B
build/block-library/blocks/navigation/editor-rtl.css 1.72 kB
build/block-library/blocks/navigation/editor.css 1.72 kB
build/block-library/blocks/navigation/style-rtl.css 1.44 kB
build/block-library/blocks/navigation/style.css 1.44 kB
build/block-library/blocks/navigation/view.min.js 2.52 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 310 B
build/block-library/blocks/page-list/editor.css 310 B
build/block-library/blocks/page-list/style-rtl.css 241 B
build/block-library/blocks/page-list/style.css 241 B
build/block-library/blocks/paragraph/editor-rtl.css 157 B
build/block-library/blocks/paragraph/editor.css 157 B
build/block-library/blocks/paragraph/style-rtl.css 273 B
build/block-library/blocks/paragraph/style.css 273 B
build/block-library/blocks/post-author/editor-rtl.css 210 B
build/block-library/blocks/post-author/editor.css 210 B
build/block-library/blocks/post-author/style-rtl.css 182 B
build/block-library/blocks/post-author/style.css 181 B
build/block-library/blocks/post-comments-form/style-rtl.css 140 B
build/block-library/blocks/post-comments-form/style.css 140 B
build/block-library/blocks/post-comments/style-rtl.css 360 B
build/block-library/blocks/post-comments/style.css 359 B
build/block-library/blocks/post-content/editor-rtl.css 138 B
build/block-library/blocks/post-content/editor.css 138 B
build/block-library/blocks/post-excerpt/editor-rtl.css 73 B
build/block-library/blocks/post-excerpt/editor.css 73 B
build/block-library/blocks/post-excerpt/style-rtl.css 69 B
build/block-library/blocks/post-excerpt/style.css 69 B
build/block-library/blocks/post-featured-image/editor-rtl.css 398 B
build/block-library/blocks/post-featured-image/editor.css 398 B
build/block-library/blocks/post-featured-image/style-rtl.css 143 B
build/block-library/blocks/post-featured-image/style.css 143 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 378 B
build/block-library/blocks/post-template/style.css 379 B
build/block-library/blocks/post-terms/style-rtl.css 73 B
build/block-library/blocks/post-terms/style.css 73 B
build/block-library/blocks/post-title/style-rtl.css 60 B
build/block-library/blocks/post-title/style.css 60 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 198 B
build/block-library/blocks/pullquote/editor.css 198 B
build/block-library/blocks/pullquote/style-rtl.css 378 B
build/block-library/blocks/pullquote/style.css 378 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 301 B
build/block-library/blocks/query-pagination/editor.css 292 B
build/block-library/blocks/query-pagination/style-rtl.css 259 B
build/block-library/blocks/query-pagination/style.css 257 B
build/block-library/blocks/query-title/editor-rtl.css 85 B
build/block-library/blocks/query-title/editor.css 85 B
build/block-library/blocks/query/editor-rtl.css 131 B
build/block-library/blocks/query/editor.css 132 B
build/block-library/blocks/quote/style-rtl.css 187 B
build/block-library/blocks/quote/style.css 187 B
build/block-library/blocks/quote/theme-rtl.css 220 B
build/block-library/blocks/quote/theme.css 222 B
build/block-library/blocks/rss/editor-rtl.css 202 B
build/block-library/blocks/rss/editor.css 204 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 374 B
build/block-library/blocks/search/style.css 375 B
build/block-library/blocks/search/theme-rtl.css 64 B
build/block-library/blocks/search/theme.css 64 B
build/block-library/blocks/separator/editor-rtl.css 99 B
build/block-library/blocks/separator/editor.css 99 B
build/block-library/blocks/separator/style-rtl.css 250 B
build/block-library/blocks/separator/style.css 250 B
build/block-library/blocks/separator/theme-rtl.css 172 B
build/block-library/blocks/separator/theme.css 172 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/editor-rtl.css 462 B
build/block-library/blocks/site-logo/editor.css 464 B
build/block-library/blocks/site-logo/style-rtl.css 153 B
build/block-library/blocks/site-logo/style.css 153 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 84 B
build/block-library/blocks/site-title/editor.css 84 B
build/block-library/blocks/social-link/editor-rtl.css 165 B
build/block-library/blocks/social-link/editor.css 165 B
build/block-library/blocks/social-links/editor-rtl.css 812 B
build/block-library/blocks/social-links/editor.css 811 B
build/block-library/blocks/social-links/style-rtl.css 1.3 kB
build/block-library/blocks/social-links/style.css 1.3 kB
build/block-library/blocks/spacer/editor-rtl.css 307 B
build/block-library/blocks/spacer/editor.css 307 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 471 B
build/block-library/blocks/table/editor.css 472 B
build/block-library/blocks/table/style-rtl.css 481 B
build/block-library/blocks/table/style.css 481 B
build/block-library/blocks/table/theme-rtl.css 188 B
build/block-library/blocks/table/theme.css 188 B
build/block-library/blocks/tag-cloud/style-rtl.css 146 B
build/block-library/blocks/tag-cloud/style.css 146 B
build/block-library/blocks/template-part/editor-rtl.css 636 B
build/block-library/blocks/template-part/editor.css 635 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/term-description/editor-rtl.css 90 B
build/block-library/blocks/term-description/editor.css 90 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 87 B
build/block-library/blocks/verse/style.css 87 B
build/block-library/blocks/video/editor-rtl.css 571 B
build/block-library/blocks/video/editor.css 572 B
build/block-library/blocks/video/style-rtl.css 173 B
build/block-library/blocks/video/style.css 173 B
build/block-library/blocks/video/theme-rtl.css 124 B
build/block-library/blocks/video/theme.css 124 B
build/block-library/common-rtl.css 853 B
build/block-library/common.css 849 B
build/block-library/editor-rtl.css 9.69 kB
build/block-library/editor.css 9.68 kB
build/block-library/reset-rtl.css 527 B
build/block-library/reset.css 527 B
build/block-library/style-rtl.css 10.3 kB
build/block-library/style.css 10.3 kB
build/block-library/theme-rtl.css 658 B
build/block-library/theme.css 663 B
build/block-serialization-default-parser/index.min.js 1.09 kB
build/block-serialization-spec-parser/index.min.js 2.79 kB
build/blocks/index.min.js 46.9 kB
build/components/style-rtl.css 15.8 kB
build/components/style.css 15.8 kB
build/compose/index.min.js 10.2 kB
build/core-data/index.min.js 12.3 kB
build/customize-widgets/style-rtl.css 1.5 kB
build/customize-widgets/style.css 1.49 kB
build/data-controls/index.min.js 614 B
build/data/index.min.js 7.1 kB
build/date/index.min.js 31.5 kB
build/deprecated/index.min.js 428 B
build/dom-ready/index.min.js 304 B
build/dom/index.min.js 4.45 kB
build/edit-navigation/style-rtl.css 3.41 kB
build/edit-navigation/style.css 3.41 kB
build/edit-post/classic-rtl.css 492 B
build/edit-post/classic.css 494 B
build/edit-post/style-rtl.css 7.2 kB
build/edit-post/style.css 7.2 kB
build/edit-site/style-rtl.css 5.07 kB
build/edit-site/style.css 5.07 kB
build/edit-widgets/style-rtl.css 4.06 kB
build/edit-widgets/style.css 4.06 kB
build/editor/style-rtl.css 3.74 kB
build/editor/style.css 3.73 kB
build/element/index.min.js 3.17 kB
build/escape-html/index.min.js 517 B
build/format-library/index.min.js 5.34 kB
build/format-library/style-rtl.css 668 B
build/format-library/style.css 670 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 424 B
build/i18n/index.min.js 3.6 kB
build/is-shallow-equal/index.min.js 501 B
build/keyboard-shortcuts/index.min.js 1.72 kB
build/keycodes/index.min.js 1.3 kB
build/list-reusable-blocks/index.min.js 1.85 kB
build/list-reusable-blocks/style-rtl.css 838 B
build/list-reusable-blocks/style.css 838 B
build/media-utils/index.min.js 2.88 kB
build/notices/index.min.js 845 B
build/nux/index.min.js 2.03 kB
build/nux/style-rtl.css 747 B
build/nux/style.css 743 B
build/plugins/index.min.js 1.83 kB
build/primitives/index.min.js 921 B
build/priority-queue/index.min.js 582 B
build/react-i18n/index.min.js 671 B
build/redux-routine/index.min.js 2.63 kB
build/reusable-blocks/index.min.js 2.28 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.6 kB
build/server-side-render/index.min.js 1.32 kB
build/shortcode/index.min.js 1.48 kB
build/token-list/index.min.js 562 B
build/url/index.min.js 1.74 kB
build/viewport/index.min.js 1.02 kB
build/warning/index.min.js 248 B
build/widgets/index.min.js 7.27 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.04 kB

compressed-size-action

@ciampo ciampo added this to In progress (owned) ⏳ in WordPress Components via automation Sep 3, 2021
@ciampo ciampo moved this from In progress (owned) ⏳ to Next 📌 (un-owned) in WordPress Components Sep 3, 2021
@ciampo ciampo moved this from Next 📌 (un-owned) to In progress ⏳ (un-owned) in WordPress Components Sep 3, 2021
@aaronrobertshaw aaronrobertshaw changed the title [WIP] ToolsPanel: Refine component behaviour ToolsPanel: Refine component behaviour Sep 6, 2021
@aaronrobertshaw aaronrobertshaw marked this pull request as ready for review September 6, 2021 07:02
@aaronrobertshaw
Copy link
Contributor Author

It's worth noting here that the current iteration actually sets disabled={ true } on a default control's menu item when it does not have a customized value. In the mockup, the text for the item is normal and only the icon greyed out. Clicking the item would do nothing. I think disabled in this context with the separation of default and optional controls makes sense.

Open to other ideas or opinions though.

@jasmussen
Copy link
Contributor

Thanks for tackling this one!

I had a bit of a challenge getting things to work as your recording; my Cover block still has a separate min-height panel, and I couldn't get margin to show despite trying a few different themes, and updating the Group block.json file. However I did see this:

hey

Some good steps here: the default panel is separate, I can reset it using the minus, I can reset all, and the check clears and removes non-default options.

We need the new icons from the mockup, these:

Screenshot 2021-09-06 at 10 51 41

Updated check:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z" /></svg>

New reset:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 11.5h10V13H7z" /></svg>

The new check is actually a bit smaller than the existing one:

Screenshot 2021-09-06 at 10 55 18

I see that we already have a minus, I had forgotten that. Do you know if/where it's used at the moment? We might want to rename it to "reset" and replace it, depending on where and how much it's used.

I'm not sure whether we want a new check-small icon, or whether we just replace the existing one. I'm tempted to do the former.

Let me know if you'd like me to add these separately.

@ciampo ciampo self-requested a review September 6, 2021 16:26
Copy link
Contributor

@ciampo ciampo left a comment

Choose a reason for hiding this comment

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

Thank you for starting to work on this, @aaronrobertshaw !

I've left a few initial inline comments, and I'm going to follow the progress of this PR in the upcoming days

}
) }
</MenuGroup>
{ !! defaultItems?.length && (
Copy link
Contributor

Choose a reason for hiding this comment

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

This block is starting to get quite hard to parse, have you considered extracting it to a separate component? (it could live in this same file and it wouldn't need to be exported).

Also, have you considered using ternaries instead of the && operator?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This block is starting to get quite hard to parse, have you considered extracting it to a separate component?

Agreed. I've wavered on extracting the MenuItems to their own components previously but it didn't reduce the code much. I'll look at refactoring the menu groups out into separate components instead.

Also, have you considered using ternaries instead of the && operator?

In this instance, the use of !! was to specifically guard against the issue highlighted by that link. The && operator still appears to be the prevailing style within the codebase. I understand that using a ternary makes missing the !! a non-issue. Is this something that should be added to the Gutenberg coding guidelines?

Copy link
Contributor

@ciampo ciampo Sep 7, 2021

Choose a reason for hiding this comment

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

I'll look at refactoring the menu groups out into separate components instead.

Sounds good! Thank you :)

In this instance, the use of !! was to specifically guard against the issue highlighted by that link. The && operator still appears to be the prevailing style within the codebase. I understand that using a ternary makes missing the !! a non-issue. Is this something that should be added to the Gutenberg coding guidelines?

Thank you for the explanation about using !!. I'm not sure if this should be added to the coding guidelines or even as an ESLint rule — that is something that @gziolo may advise about!

packages/components/src/tools-panel/tools-panel/hook.js Outdated Show resolved Hide resolved
@ciampo
Copy link
Contributor

ciampo commented Sep 7, 2021

I had a bit of a challenge getting things to work as your recording; my Cover block still has a separate min-height panel, and I couldn't get margin to show despite trying a few different themes, and updating the Group block.json file

Just wanted to flag that I also had the same issues when trying to follow the instructions in the PR.

I also tried to use Storybook, but visiting the ToolsPanel story at the moment generates an error:

Screenshot 2021-09-07 at 10 35 19

@aaronrobertshaw
Copy link
Contributor Author

Thanks @jasmussen for your time and effort as always 👍

I had a bit of a challenge getting things to work as your recording; my Cover block still has a separate min-height panel, and I couldn't get margin to show despite trying a few different themes, and updating the Group block.json file. However I did see this:

The theme I was testing with already had the customMargin setting turned on enabling the UI. I believe this was the key step missing, so I've updated the PR test instructions accordingly.

To test with the cover block's min-height control injected via the proposed inspector controls slots, you'd need to apply commits from #34065 on top of this PR. I did this to test the updated ToolsPanel with a SlotFill injected control, I didn't intend for you to need to do it at this point in time.

I fixed the issue with the ToolsPanel story that @ciampo highlighted so that is the easiest option for getting your hands on the updated panel now.

We need the new icons from the mockup

Awesome, thank you. I've added the new icons.

I see that we already have a minus, I had forgotten that. Do you know if/where it's used at the moment? We might want to rename it to "reset" and replace it, depending on where and how much it's used.

At a quick glance, it only appears that the minus icon is used for the iOS stepper.

I'm not sure whether we want a new check-small icon, or whether we just replace the existing one. I'm tempted to do the former.

I added the icon as a new check icon rather than replace the existing one.

@aaronrobertshaw
Copy link
Contributor Author

I'm happy to update the check and reset icons however needed. Including handling them via a separate PR if the extra changes to existing icons are preferred.

@aaronrobertshaw aaronrobertshaw force-pushed the try/inspector-controls-with-toolspanel branch from f058696 to 574c27b Compare September 8, 2021 06:04
@aaronrobertshaw aaronrobertshaw force-pushed the try/inspector-controls-with-toolspanel branch from 574c27b to e9bbbed Compare September 8, 2021 06:06
@aaronrobertshaw aaronrobertshaw changed the base branch from try/inspector-controls-with-toolspanel to update/tools-panel-for-slotfills-use September 8, 2021 06:16
Copy link
Contributor

@ciampo ciampo left a comment

Choose a reason for hiding this comment

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

From a quick look, code changes LGTM! I also tried the component in Storybook and it seemed to work as intended.

I'll let @jasmussen give the final seal of approval ✅

@apeatling apeatling self-requested a review September 13, 2021 18:45
Copy link
Contributor

@apeatling apeatling 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 definitely an improvement, and should be merged.

I do want to note that I think there's still too much assumed knowledge wrapped up in how this works. For example this first experience for someone who has never seen this before:

2021-09-13 11 41 27

I don't think it's clear what the difference in expected action between the minus and check icon is. It's assuming I know that the padding is a default control and therefore can't be "unchecked".

It's a tough one when only icons are being used with no labels indicating which controls are the default and therefore can't be removed. I don't have any good suggestions, but wanted to note this as something to think about further.

Default and optional controls will now be displayed via separate menu groups and behave slightly differently. Default controls will always be shown and display a checkmark when empty or a minus icon when customized.
Adds default controls so that the updated behaviour separating default and optional controls into menu groups can be seen via the story.
Instead of adding a second smaller check icon, we are replacing the existing check icon as it is not widely used.
@aaronrobertshaw
Copy link
Contributor Author

aaronrobertshaw commented Sep 14, 2021

✅ The check and minus (now reset) icons have now been replaced with the supplied vectors
✅ Note about breaking change for minus icon added to changelog
✅ Confirmed native Stepper component still works after switching to reset icon
✅ Rebased this on top of trunk

@aaronrobertshaw
Copy link
Contributor Author

I do want to note that I think there's still too much assumed knowledge wrapped up in how this works.

I agree with this. Solving it is a tricky one though.

It's a tough one when only icons are being used with no labels indicating which controls are the default and therefore can't be removed. I don't have any good suggestions, but wanted to note this as something to think about further.

Adding some tooltips to the panel's menu items was trialled but it made the UI incredibly busy, undermining any improvements to the UX.

This is definitely an improvement, and should be merged.

I'd be happy for this to land once @jasmussen has a chance to approve the PR in its current state.

We can then iterate on this further in follow up PRs. Merging this will also allow for the ToolsPanel conversion to TypeScript to continue with less conflicts.

@jasmussen
Copy link
Contributor

Took it for a quick spin, and the paddings, margins, and behavior looks right to me:

tools

I do want to note that I think there's still too much assumed knowledge wrapped up in how this works.

The goal of the interface is to provide additional tools first and foremost, and secondarily to provide an additional and intentionally de-emphasized affordance for clearing values. Knowing that this interface can and will be iterated upon in the future, it feels important to start as simple as possible.

In that vein, let's definitely ship this one. And if we find the need to adjust further, we will. Thanks Aaron!

WordPress Components automation moved this from In progress ⏳ (un-owned) to In progress (owned) ⏳ Sep 14, 2021
@aaronrobertshaw aaronrobertshaw merged commit 41e1ca8 into trunk Sep 14, 2021
WordPress Components automation moved this from In progress (owned) ⏳ to Done 🎉 Sep 14, 2021
@aaronrobertshaw aaronrobertshaw deleted the try/updated-tools-panel-ux branch September 14, 2021 08:37
@github-actions github-actions bot added this to the Gutenberg 11.6 milestone Sep 14, 2021
@ciampo ciampo mentioned this pull request Sep 15, 2021
62 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Design Tools Tools that impact the appearance of blocks both to expand the number of tools and improve the experi [Feature] UI Components Impacts or related to the UI component system [Type] Enhancement A suggestion for improvement.
Projects
Development

Successfully merging this pull request may close these issues.

ToolsPanel: Refining the component's behaviour
4 participants