-
+
);
diff --git a/packages/edit-site/src/components/list/style.scss b/packages/edit-site/src/components/list/style.scss
index 972bda61d6eff..e044aaf052f7f 100644
--- a/packages/edit-site/src/components/list/style.scss
+++ b/packages/edit-site/src/components/list/style.scss
@@ -27,6 +27,11 @@
}
}
+.edit-site-list-header__right {
+ // Creating a stacking context so that it won't be covered by title.
+ position: relative;
+}
+
.edit-site {
.edit-site-list {
.interface-interface-skeleton__editor {
diff --git a/packages/edit-site/src/components/template-part-converter/convert-to-template-part.js b/packages/edit-site/src/components/template-part-converter/convert-to-template-part.js
index 7274344816f1f..35f8428b60dac 100644
--- a/packages/edit-site/src/components/template-part-converter/convert-to-template-part.js
+++ b/packages/edit-site/src/components/template-part-converter/convert-to-template-part.js
@@ -6,61 +6,36 @@ import { kebabCase } from 'lodash';
/**
* WordPress dependencies
*/
-import { useDispatch, useSelect } from '@wordpress/data';
+import { useDispatch } from '@wordpress/data';
import {
BlockSettingsMenuControls,
store as blockEditorStore,
} from '@wordpress/block-editor';
-import {
- MenuItem,
- Icon,
- BaseControl,
- TextControl,
- Flex,
- FlexItem,
- FlexBlock,
- Button,
- Modal,
- __experimentalRadioGroup as RadioGroup,
- __experimentalRadio as Radio,
-} from '@wordpress/components';
-import { useInstanceId } from '@wordpress/compose';
+import { MenuItem } from '@wordpress/components';
import { createBlock, serialize } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import { useState } from '@wordpress/element';
import { store as coreStore } from '@wordpress/core-data';
import { store as noticesStore } from '@wordpress/notices';
-import { store as editorStore } from '@wordpress/editor';
-import { check } from '@wordpress/icons';
/**
* Internal dependencies
*/
-import { TEMPLATE_PART_AREA_GENERAL } from '../../store/constants';
+import CreateTemplatePartModal from '../create-template-part-modal';
export default function ConvertToTemplatePart( { clientIds, blocks } ) {
- const instanceId = useInstanceId( ConvertToTemplatePart );
const [ isModalOpen, setIsModalOpen ] = useState( false );
- const [ title, setTitle ] = useState( '' );
const { replaceBlocks } = useDispatch( blockEditorStore );
const { saveEntityRecord } = useDispatch( coreStore );
const { createSuccessNotice } = useDispatch( noticesStore );
- const [ area, setArea ] = useState( TEMPLATE_PART_AREA_GENERAL );
-
- const templatePartAreas = useSelect(
- ( select ) =>
- select( editorStore ).__experimentalGetDefaultTemplatePartAreas(),
- []
- );
- const onConvert = async ( templatePartTitle ) => {
- const defaultTitle = __( 'Untitled Template Part' );
+ const onConvert = async ( { title, area } ) => {
const templatePart = await saveEntityRecord(
'postType',
'wp_template_part',
{
- slug: kebabCase( templatePartTitle || defaultTitle ),
- title: templatePartTitle || defaultTitle,
+ slug: kebabCase( title ),
+ title,
content: serialize( blocks ),
area,
}
@@ -78,122 +53,27 @@ export default function ConvertToTemplatePart( { clientIds, blocks } ) {
};
return (
-
- { ( { onClose } ) => (
- <>
+ <>
+
+ { ( { onClose } ) => (
- { isModalOpen && (
- {
- setIsModalOpen( false );
- setTitle( '' );
- } }
- overlayClassName="edit-site-template-part-converter__modal"
- >
-
-
- ) }
- >
+ ) }
+
+ { isModalOpen && (
+ {
+ setIsModalOpen( false );
+ } }
+ onCreate={ onConvert }
+ />
) }
-
+ >
);
}
diff --git a/packages/edit-site/src/index.js b/packages/edit-site/src/index.js
index 83f918dc63a94..9b9a00a7a3e54 100644
--- a/packages/edit-site/src/index.js
+++ b/packages/edit-site/src/index.js
@@ -12,6 +12,7 @@ import {
__experimentalFetchLinkSuggestions as fetchLinkSuggestions,
__experimentalFetchUrlData as fetchUrlData,
} from '@wordpress/core-data';
+import { store as editorStore } from '@wordpress/editor';
/**
* Internal dependencies
@@ -73,10 +74,16 @@ export function initializeEditor( id, settings ) {
*
* @param {string} id ID of the root element to render the screen in.
* @param {string} templateType The type of the list. "wp_template" or "wp_template_part".
+ * @param {Object} settings Editor settings.
*/
-export function initializeList( id, templateType ) {
+export function initializeList( id, templateType, settings ) {
const target = document.getElementById( id );
+ dispatch( editorStore ).updateEditorSettings( {
+ defaultTemplateTypes: settings.defaultTemplateTypes,
+ defaultTemplatePartAreas: settings.defaultTemplatePartAreas,
+ } );
+
render(
, target );
}
diff --git a/packages/edit-site/src/store/actions.js b/packages/edit-site/src/store/actions.js
index 3b46c91ed2ead..4f9dc3f418489 100644
--- a/packages/edit-site/src/store/actions.js
+++ b/packages/edit-site/src/store/actions.js
@@ -116,7 +116,8 @@ export function* removeTemplate( template ) {
'deleteEntityRecord',
'postType',
template.type,
- template.id
+ template.id,
+ { force: true }
);
}
diff --git a/packages/edit-site/src/store/test/actions.js b/packages/edit-site/src/store/test/actions.js
index 52532cbd612e1..5d45a0f0556ca 100644
--- a/packages/edit-site/src/store/test/actions.js
+++ b/packages/edit-site/src/store/test/actions.js
@@ -86,7 +86,12 @@ describe( 'actions', () => {
const it = removeTemplate( template );
expect( it.next().value ).toEqual( {
actionName: 'deleteEntityRecord',
- args: [ 'postType', 'wp_template_part', 'tt1-blocks//general' ],
+ args: [
+ 'postType',
+ 'wp_template_part',
+ 'tt1-blocks//general',
+ { force: true },
+ ],
storeKey: 'core',
type: '@@data/DISPATCH',
} );
diff --git a/packages/edit-site/src/style.scss b/packages/edit-site/src/style.scss
index 56dddd41499ee..6502a0ae1dd51 100644
--- a/packages/edit-site/src/style.scss
+++ b/packages/edit-site/src/style.scss
@@ -8,12 +8,13 @@
@import "./components/navigation-sidebar/navigation-toggle/style.scss";
@import "./components/navigation-sidebar/navigation-panel/style.scss";
@import "./components/list/style.scss";
+@import "./components/add-new-template/style.scss";
@import "./components/sidebar/style.scss";
@import "./components/sidebar/settings-header/style.scss";
@import "./components/sidebar/template-card/style.scss";
@import "./components/editor/style.scss";
@import "./components/template-details/style.scss";
-@import "./components/template-part-converter/style.scss";
+@import "./components/create-template-part-modal/style.scss";
@import "./components/secondary-sidebar/style.scss";
@import "./components/welcome-guide/style.scss";