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

Close button: extensibility in post editor #22323

Merged
merged 2 commits into from
May 13, 2020
Merged

Conversation

vindl
Copy link
Member

@vindl vindl commented May 13, 2020

Description

This is a follow up PR to #22001 and #22179. It's addressing the first part of #20929 issue.

The close button slot introduced for site editor in #22001 is expanded to cover the post editor too. The button can now be replaced in a similar fashion for all editor instances.

  • MainDashboardButton has been moved to interface package so that the same slot can be reused in edit-post and edit-site.
  • SlotFill docs have been updated to reflect the new changes.

How has this been tested?

If you want to replace the whole component:

import { registerPlugin } from '@wordpress/plugins';
import { __experimentalMainDashboardButton as MainDashboardButton } from '@wordpress/interface'

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

If you just want to customize the icon:

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

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

In both cases open check the post editor and site editor and make sure that the custom components are shown there.

Screenshots

image

Types of changes

Breaking change (fix or feature that would cause existing functionality to not work as expected)

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.

@vindl vindl added the [Feature] Extensibility The ability to extend blocks or the editing experience label May 13, 2020
@vindl vindl self-assigned this May 13, 2020
@vindl vindl added this to the Gutenberg 8.2 milestone May 13, 2020
@github-actions
Copy link

github-actions bot commented May 13, 2020

Size Change: +235 B (0%)

Total Size: 832 kB

Filename Size Change
build/block-library/index.js 116 kB +1 B
build/components/index.js 182 kB +3 B (0%)
build/edit-post/index.js 28.2 kB +143 B (0%)
build/edit-site/index.js 12.1 kB -18 B (0%)
build/edit-widgets/index.js 8.47 kB +106 B (1%)
ℹ️ View Unchanged
Filename Size Change
build/a11y/index.js 1.02 kB 0 B
build/annotations/index.js 3.62 kB 0 B
build/api-fetch/index.js 4.08 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.59 kB 0 B
build/block-directory/style-rtl.css 764 B 0 B
build/block-directory/style.css 764 B 0 B
build/block-editor/index.js 104 kB 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.25 kB 0 B
build/block-library/editor.css 7.25 kB 0 B
build/block-library/style-rtl.css 7.48 kB 0 B
build/block-library/style.css 7.49 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/blocks/index.js 48.1 kB 0 B
build/components/style-rtl.css 17.1 kB 0 B
build/components/style.css 17 kB 0 B
build/compose/index.js 6.68 kB 0 B
build/core-data/index.js 11.4 kB 0 B
build/data-controls/index.js 1.29 kB 0 B
build/data/index.js 8.43 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/edit-navigation/index.js 5.59 kB 0 B
build/edit-navigation/style-rtl.css 618 B 0 B
build/edit-navigation/style.css 617 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/edit-widgets/style-rtl.css 4.69 kB 0 B
build/edit-widgets/style.css 4.69 kB 0 B
build/editor/editor-styles-rtl.css 425 B 0 B
build/editor/editor-styles.css 428 B 0 B
build/editor/index.js 44.3 kB 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.63 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 712 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/redux-routine/index.js 2.85 kB 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.18 kB 0 B

compressed-size-action


const { Fill, Slot } = createSlotFill( name );

const MainDashboardButton = Fill;
MainDashboardButton.Slot = Slot;
MainDashboardButton.slotName = name;

export const CloseButton = () => {
export const CloseButtonSlot = ( { children } ) => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Why not make this MainDashboardButton.Slot? Is there any place where we would just use the bare MainDashboardButton.Slot?

Copy link
Member Author

Choose a reason for hiding this comment

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

Now that you mentioned it - no, we probably don't. :) I refactored this in 7d1b948. I had to separate out the assignment though because the linter was complaining otherwise:

React Hook "useSlot" is called in function "MainDashboardButton.Slot" that is neither a React function component nor a custom React Hook function

Likely because it wasn't detected as valid component name for some reason. 🤔

@@ -155,3 +155,4 @@ export { default as PluginPostStatusInfo } from './components/sidebar/plugin-pos
export { default as PluginPrePublishPanel } from './components/sidebar/plugin-pre-publish-panel';
export { default as PluginSidebar } from './components/sidebar/plugin-sidebar';
export { default as PluginSidebarMoreMenuItem } from './components/header/plugin-sidebar-more-menu-item';
export { default as __experimentalFullscreenModeClose } from './components/header/fullscreen-mode-close';
Copy link
Contributor

Choose a reason for hiding this comment

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

Can this component be shared between edit-site and edit-post?

Copy link
Member Author

Choose a reason for hiding this comment

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

We considered that in #20989 (comment) but decided not to do it for now.

@@ -7,12 +7,14 @@ the editor in fullscreen mode.

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

@talldan talldan Nov 27, 2020

Choose a reason for hiding this comment

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

It's great that there are docs here for this, just had a request for this!

Looks like the file just needs to be added to the toc.json file for it to show up in the block editor handbook.

I've made a PR to publish them - #27317 - if you get a chance to review, @vindl.

edit: don't worry about the review, decided to admin merge it.

Copy link
Member Author

Choose a reason for hiding this comment

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

I was afk for a couple of days so just got to this now. Thanks for the update @talldan!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[Feature] Extensibility The ability to extend blocks or the editing experience
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants