Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add preferences modal to site editor
  • Loading branch information
tellthemachines committed Mar 16, 2022
commit 0a3d1437eb16d032c00400e349fa3ed04fa0bbc2
15 changes: 15 additions & 0 deletions packages/edit-site/src/components/header/more-menu/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { PreferenceToggleMenuItem } from '@wordpress/preferences';
* Internal dependencies
*/
import KeyboardShortcutHelpModal from '../../keyboard-shortcut-help-modal';
import EditSitePreferencesModal from '../../preferences-modal';
import ToolsMoreMenuGroup from '../tools-more-menu-group';
import SiteExport from './site-export';
import WelcomeGuideMenuItem from './welcome-guide-menu-item';
Expand All @@ -26,6 +27,11 @@ export default function MoreMenu() {
false
);

const [ isPreferencesModalActive, togglePreferencesModal ] = useReducer(
( isActive ) => ! isActive,
false
);

useShortcut( 'core/edit-site/keyboard-shortcuts', toggleModal );

return (
Expand Down Expand Up @@ -99,13 +105,22 @@ export default function MoreMenu() {
fillProps={ { onClose } }
/>
</MenuGroup>
<MenuGroup>
<MenuItem onClick={ togglePreferencesModal }>
{ __( 'Preferences' ) }
</MenuItem>
</MenuGroup>
</>
) }
</MoreMenuDropdown>
<KeyboardShortcutHelpModal
isModalActive={ isModalActive }
toggleModal={ toggleModal }
/>
<EditSitePreferencesModal
isModalActive={ isPreferencesModalActive }
toggleModal={ togglePreferencesModal }
/>
</>
);
}
38 changes: 38 additions & 0 deletions packages/edit-site/src/components/preferences-modal/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/**
* WordPress dependencies
*/
import {
PreferencesModal,
PreferencesModalTabs,
PreferencesModalSection,
} from '@wordpress/interface';
import { useMemo } from '@wordpress/element';
import { __ } from '@wordpress/i18n';

export default function EditSitePreferencesModal( {
isModalActive,
toggleModal,
} ) {
const sections = useMemo( () => [
{
name: 'general',
tabLabel: __( 'General' ),
content: (
<PreferencesModalSection
title={ __( 'Appearance' ) }
description={ __(
'Customize options related to the block editor interface and editing flow.'
) }
></PreferencesModalSection>
),
},
] );
if ( ! isModalActive ) {
return null;
}
return (
<PreferencesModal closeModal={ toggleModal }>
<PreferencesModalTabs sections={ sections } />
Copy link
Contributor

Choose a reason for hiding this comment

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

It does still feel a bit empty with one setting per tab. I wonder if right now an option could be to not add the tabs until there are more settings later on, and instead render the two PreferenceModalSections directly in the modal.

I don't know if the styles will work out of the box, but it might be possible to make some quick fixes there.

Could be good to get some design feedback on it though.

Copy link
Member

Choose a reason for hiding this comment

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

I think tabs will fill up faster now that we've modal.

Copy link
Contributor

@talldan talldan Mar 17, 2022

Choose a reason for hiding this comment

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

Should be pretty easy to get the block manager in there as well now.

I think the component needs to be moved out of edit-post, but the rest of the implementation shouldn't be too difficult.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yeah, I added the second tab mainly thinking about the block manager which takes up a huge chunk of space 😄

Plus with #38317 there'll be at least one more item under Appearance soon.

</PreferencesModal>
);
}