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

Use interface on widgets screen sidebar #22304

Merged

Conversation

jorgefilipecosta
Copy link
Member

Description

Branched from #22140.

This PR adds the complementary area mechanism from the WordPress interface package into the widgets screen.
This allows the sidebar to be toggled on and off like in the other screens.

@jorgefilipecosta jorgefilipecosta added the [Feature] Widgets Screen The block-based screen that replaced widgets.php. label May 12, 2020
@github-actions
Copy link

github-actions bot commented May 12, 2020

Size Change: +258 B (0%)

Total Size: 835 kB

Filename Size Change
build/annotations/index.js 3.62 kB +3 B (0%)
build/block-editor/index.js 105 kB +4 B (0%)
build/block-library/index.js 118 kB +1 B
build/blocks/index.js 48.1 kB -1 B
build/components/index.js 182 kB +3 B (0%)
build/compose/index.js 6.67 kB +2 B (0%)
build/data/index.js 8.43 kB -1 B
build/dom-ready/index.js 568 B -1 B
build/edit-post/index.js 28.2 kB +29 B (0%)
build/edit-site/index.js 12.1 kB +16 B (0%)
build/edit-widgets/index.js 7.73 kB +354 B (4%)
build/edit-widgets/style-rtl.css 4.59 kB -74 B (1%)
build/edit-widgets/style.css 4.59 kB -77 B (1%)
build/editor/index.js 44.3 kB -1 B
build/redux-routine/index.js 2.85 kB +1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/api-fetch/index.js 3.39 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 6.93 kB 0 B
build/block-directory/style-rtl.css 790 B 0 B
build/block-directory/style.css 791 B 0 B
build/block-editor/style-rtl.css 10.8 kB 0 B
build/block-editor/style.css 10.8 kB 0 B
build/block-library/editor-rtl.css 7.22 kB 0 B
build/block-library/editor.css 7.22 kB 0 B
build/block-library/style-rtl.css 7.48 kB 0 B
build/block-library/style.css 7.48 kB 0 B
build/block-library/theme-rtl.css 683 B 0 B
build/block-library/theme.css 685 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 17 kB 0 B
build/components/style.css 17 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/date/index.js 5.47 kB 0 B
build/deprecated/index.js 772 B 0 B
build/dom/index.js 3.11 kB 0 B
build/edit-navigation/index.js 6.6 kB 0 B
build/edit-navigation/style-rtl.css 857 B 0 B
build/edit-navigation/style.css 856 B 0 B
build/edit-post/style-rtl.css 12.2 kB 0 B
build/edit-post/style.css 12.2 kB 0 B
build/edit-site/style-rtl.css 5.22 kB 0 B
build/edit-site/style.css 5.22 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/style-rtl.css 5.07 kB 0 B
build/editor/style.css 5.08 kB 0 B
build/element/index.js 4.65 kB 0 B
build/escape-html/index.js 733 B 0 B
build/format-library/index.js 7.64 kB 0 B
build/format-library/style-rtl.css 502 B 0 B
build/format-library/style.css 502 B 0 B
build/hooks/index.js 2.13 kB 0 B
build/html-entities/index.js 622 B 0 B
build/i18n/index.js 3.56 kB 0 B
build/is-shallow-equal/index.js 711 B 0 B
build/keyboard-shortcuts/index.js 2.51 kB 0 B
build/keycodes/index.js 1.94 kB 0 B
build/list-reusable-blocks/index.js 3.13 kB 0 B
build/list-reusable-blocks/style-rtl.css 226 B 0 B
build/list-reusable-blocks/style.css 226 B 0 B
build/media-utils/index.js 5.29 kB 0 B
build/notices/index.js 1.79 kB 0 B
build/nux/index.js 3.4 kB 0 B
build/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/plugins/index.js 2.56 kB 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/rich-text/index.js 14.8 kB 0 B
build/server-side-render/index.js 2.68 kB 0 B
build/shortcode/index.js 1.7 kB 0 B
build/token-list/index.js 1.28 kB 0 B
build/url/index.js 4.02 kB 0 B
build/viewport/index.js 1.84 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.17 kB 0 B

compressed-size-action

Copy link
Member

@gziolo gziolo left a comment

Choose a reason for hiding this comment

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

Nice to see how those component integrates so easily. Great job @jorgefilipecosta 😃

For the full picture, I haven’t tested this PR.

.blocks-widgets-container .editor-style-wrapper {
max-width: $widget-area-width;
margin: auto;
}

.edit-widgets-sidebar .components-button.interface-complementary-area__pin-unpin-item {
Copy link
Member

Choose a reason for hiding this comment

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

Was the prop to disable pinning feature ported over from edit-post?

className="edit-widgets-sidebar"
smallScreenTitle={ __( 'Widget Areas' ) }
scope="core/edit-widgets"
complementaryAreaIdentifier="edit-widgets/block-inspector"
Copy link
Member

Choose a reason for hiding this comment

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

I guess the renaming of this prop is in progress in other PR? The name is long and repeats mostly the name of the component.

@@ -4,6 +4,7 @@ export const DEFAULTS = {
complementaryArea: {
'core/edit-site': 'edit-site/block-inspector',
'core/edit-post': 'edit-post/document',
'core/edit-widgets': 'edit-widgets/block-inspector',
Copy link
Contributor

Choose a reason for hiding this comment

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

Why do we need these here? A third-party plugin implementing his own area won't have access to this.

Copy link
Member

Choose a reason for hiding this comment

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

I assumed you were fine with the structure of the reducer 😃

Copy link
Member Author

Choose a reason for hiding this comment

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

This line just ensures a sidebar is open by default when we load a screen for the first time ever. On the follow loads we persist the sidebar state from the local storage.
But it is a good point if a plugin is implementing its own screen, it would not be able to set a default.
I will try to solve this issue and remove these defaults in a separate PR. I have two options on the slot I can add a prop that sets the name of the sidebar open for the first time ever, or on the complimentary area (fill) I set a boolean flag if the complementary should be the one open for the first time. Any preference on these two options?

Copy link
Contributor

Choose a reason for hiding this comment

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

So basically a choice between a prop on the "slot" or on the "fill" right?

Copy link
Contributor

Choose a reason for hiding this comment

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

Slots probably won't know what fills they have (if they come from plugins), so it seems like a prop on the fill might be better. The question becomes what happens if multiple fills do that.

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 advantage of the slot is that we would not have the problem of two fills specifying that flag. The sidebars would be internal so the slot would be able to be aware of them. But I agree it makes more sense to be set on the fill my only fear is it ends up being used by the plugins to have their toolbar open by default. But on second thought they can already do that using our actions.
I will try the fill approach.

The question becomes what happens if multiple fills do that

I guess the first or the last one being rendered would appear open. But it is something we need to test in practice.

@jorgefilipecosta jorgefilipecosta force-pushed the try/use-single-block-editor-for-widgets branch 2 times, most recently from a1c15cb to 8746f6d Compare May 18, 2020 21:12
@jorgefilipecosta jorgefilipecosta changed the base branch from try/use-single-block-editor-for-widgets to master May 18, 2020 21:28
@jorgefilipecosta jorgefilipecosta force-pushed the update/use-interface-package-widgets-screen branch from e7725a6 to 850f956 Compare May 18, 2020 21:35
@jorgefilipecosta jorgefilipecosta merged commit 365bb27 into master May 18, 2020
@jorgefilipecosta jorgefilipecosta deleted the update/use-interface-package-widgets-screen branch May 18, 2020 22:11
@github-actions github-actions bot added this to the Gutenberg 8.2 milestone May 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Widgets Screen The block-based screen that replaced widgets.php.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants