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: refactor close button slot #22179

Merged
merged 3 commits into from
May 8, 2020
Merged

Conversation

vindl
Copy link
Member

@vindl vindl commented May 7, 2020

Description

This is a follow up to #22001 that addresses some of the outstanding feedback there. A couple of things were changed when compared to the previous version:

  • The soon to be deprecated regular slot was replaced with the one that uses bubblesVirtually in order to make this compliant with Deprecate the original slot implementation and refactor usage #22027
  • Changed the custom wordPressLogo icon with the one from the @wordpress/icons package. This was done in order to align it with latest changes in post editor.
  • Added docs for MainDashboardButton
  • Provides a way to customize only the icon while retaining the rest of the functionality

For the last item I experimented with a couple of things. I didn't see a way to make it work with fill props since we are replacing the whole component that we want to customize if the fill is present. I tried adding a separate slot just for the icon. While that works it seems unnecessarily convoluted. In the end I settled for exporting the existing close button component from the edit-site package so it can be customized via props and used as a fill.

How has this been tested?

If you want to replace the whole component:

import { registerPlugin } from '@wordpress/plugins';
import { __experimentalMainDashboardButton as MainDashboardButton } from '@wordpress/edit-site'

registerPlugin( 'main-dashboard-button-test', {
    render() {
        return (
            <MainDashboardButton>
	        <CustomCloseButton />
	    </MainDashboardButton>
        );
    },
} );

If you just want to customize the icon:

import { registerPlugin } from '@wordpress/plugins';
import { 
__experimentalMainDashboardButton as MainDashboardButton,
__experimentalFullscrenModeClose as FullscrenModeClose } from '@wordpress/edit-site'
import { close } from '@wordpress/icons';

registerPlugin( 'main-dashboard-button-test', {
    render() {
        return (
            <MainDashboardButton>
	        <FullscreenModeClose icon={ close } />
	    </MainDashboardButton>
        );
    },
} );

Screenshots

Before After
Screenshot 2020-05-07 at 18 07 12 Screenshot 2020-05-07 at 18 06 00

Types of changes

Checklist:

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

@github-actions
Copy link

github-actions bot commented May 7, 2020

Size Change: +1.07 kB (0%)

Total Size: 824 kB

Filename Size Change
build/api-fetch/index.js 4.08 kB +1 B
build/block-editor/index.js 102 kB +416 B (0%)
build/block-editor/style-rtl.css 10.3 kB +124 B (1%)
build/block-editor/style.css 10.3 kB +123 B (1%)
build/block-library/index.js 115 kB -33 B (0%)
build/blocks/index.js 48.1 kB +4 B (0%)
build/components/index.js 180 kB +610 B (0%)
build/components/style-rtl.css 17 kB +40 B (0%)
build/components/style.css 16.9 kB +40 B (0%)
build/compose/index.js 6.66 kB -1 B
build/data/index.js 8.45 kB +4 B (0%)
build/edit-navigation/index.js 4.4 kB -1 B
build/edit-navigation/style-rtl.css 618 B +10 B (1%)
build/edit-navigation/style.css 617 B +10 B (1%)
build/edit-post/index.js 28 kB -134 B (0%)
build/edit-post/style-rtl.css 12.2 kB +20 B (0%)
build/edit-post/style.css 12.2 kB +20 B (0%)
build/edit-site/index.js 12.1 kB -188 B (1%)
build/edit-site/style-rtl.css 5.21 kB +14 B (0%)
build/edit-site/style.css 5.21 kB +15 B (0%)
build/edit-widgets/index.js 8.37 kB +1 B
build/edit-widgets/style-rtl.css 4.69 kB +13 B (0%)
build/edit-widgets/style.css 4.69 kB +12 B (0%)
build/editor/index.js 44.3 kB -38 B (0%)
build/element/index.js 4.65 kB +1 B
build/format-library/index.js 7.63 kB -2 B (0%)
build/keyboard-shortcuts/index.js 2.51 kB -1 B
build/keycodes/index.js 1.94 kB -1 B
build/media-utils/index.js 5.29 kB +1 B
build/notices/index.js 1.79 kB -1 B
build/nux/index.js 3.4 kB +1 B
build/plugins/index.js 2.56 kB -2 B (0%)
build/redux-routine/index.js 2.85 kB -2 B (0%)
build/rich-text/index.js 14.8 kB +1 B
build/server-side-render/index.js 2.67 kB -1 B
build/token-list/index.js 1.28 kB -1 B
build/url/index.js 4.02 kB +1 B
build/viewport/index.js 1.84 kB -1 B
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/autop/index.js 2.82 kB 0 B
build/blob/index.js 620 B 0 B
build/block-directory/index.js 6.61 kB 0 B
build/block-directory/style-rtl.css 760 B 0 B
build/block-directory/style.css 761 B 0 B
build/block-library/editor-rtl.css 7.08 kB 0 B
build/block-library/editor.css 7.08 kB 0 B
build/block-library/style-rtl.css 7.28 kB 0 B
build/block-library/style.css 7.29 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/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-ready/index.js 568 B 0 B
build/dom/index.js 3.1 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/escape-html/index.js 734 B 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.14 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 710 B 0 B
build/list-reusable-blocks/index.js 3.12 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/nux/style-rtl.css 616 B 0 B
build/nux/style.css 613 B 0 B
build/primitives/index.js 1.5 kB 0 B
build/priority-queue/index.js 789 B 0 B
build/shortcode/index.js 1.7 kB 0 B
build/warning/index.js 1.14 kB 0 B
build/wordcount/index.js 1.18 kB 0 B

compressed-size-action

@vindl vindl changed the title Update/site editor close slot Site Editor: refactor close button slot May 7, 2020
@@ -21,10 +20,12 @@ function FullscreenModeClose() {
return null;
}

const buttonIcon = ! isEmpty( icon ) ? icon : wordpress;
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
const buttonIcon = ! isEmpty( icon ) ? icon : wordpress;
const buttonIcon = icon || wordpress;

When would an icon ever be falsy?

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated in cbc8eba.

Comment on lines 29 to 38
const CloseButton = () => {
const slot = useSlot( MainDashboardButton.slotName );
const hasFills = Boolean( slot.fills && slot.fills.length );

if ( ! hasFills ) {
return <FullscreenModeClose />;
}

return <MainDashboardButton.Slot bubblesVirtually />;
};
Copy link
Contributor

Choose a reason for hiding this comment

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

This should be defined in the slot's file.

Copy link
Member Author

Choose a reason for hiding this comment

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

Moved in cbc8eba.


```js
import { registerPlugin } from '@wordpress/plugins';
import { __experimentalMainDashboardButton } from '@wordpress/edit-site';
Copy link
Contributor

Choose a reason for hiding this comment

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

so this slot is just an edit-site slot? Would we need to offer the same for the other screens. Also, if the fallback button is the same across screens, should the slot be the same across screens too?

Copy link
Contributor

Choose a reason for hiding this comment

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

This shouldn't block this PR. I think it's ready.

Copy link
Member Author

Choose a reason for hiding this comment

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

so this slot is just an edit-site slot?

Yes.

Would we need to offer the same for the other screens. Also, if the fallback button is the same across screens, should the slot be the same across screens too?

I was planning to make a separate slot for post editor. The rationale being that someone might want to provide a different component in other screens. Or it might look the same but we might want it to behave differently.

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 100% certain we need a separate component especially if we add support to more and more screens (widgets...). Also it seems possible to enqueue the extension based on the screen or check the screen and change the behavior.

Copy link
Member Author

@vindl vindl May 8, 2020

Choose a reason for hiding this comment

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

Also it seems possible to enqueue the extension based on the screen or check the screen and change the behavior.

That's true. Since I was planning on starting a separate PR for post editor, would it be fine if I consolidate this to use the same slot in it and merge this as is for now?

Or I could expand this PR to take care of both. 🤔I generally prefer to keep them smaller.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yes, we should merge this and see in a separate PR if we can have the same slot.

@vindl vindl merged commit 104a04f into master May 8, 2020
@vindl vindl deleted the update/site-editor-close-slot branch May 8, 2020 12:08
@github-actions github-actions bot added this to the Gutenberg 8.1 milestone May 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants