Skip to content
Snippets Groups Projects
index.js 1.1 KiB
Newer Older
Erick Hitter's avatar
Erick Hitter committed
/* global externalPermalinksReduxConfig */

import { compose } from '@wordpress/compose';
import { withSelect } from '@wordpress/data';
import { PluginDocumentSettingPanel } from '@wordpress/edit-post';
import { link } from '@wordpress/icons';
import { registerPlugin } from '@wordpress/plugins';

Erick Hitter's avatar
Erick Hitter committed
import PanelBody from './panel-body';

Erick Hitter's avatar
Erick Hitter committed
const { postTypes } = externalPermalinksReduxConfig;
const slug = 'external-permalinks-redux';

Erick Hitter's avatar
Erick Hitter committed
/**
 * Render panel view.
 *
Erick Hitter's avatar
Erick Hitter committed
 * @param {Object} props          Component props.
Erick Hitter's avatar
Erick Hitter committed
 * @param {string} props.postType Post type.
Erick Hitter's avatar
Erick Hitter committed
 * @return {JSX.Element|null} Sidebar panel.
Erick Hitter's avatar
Erick Hitter committed
 */
Erick Hitter's avatar
Erick Hitter committed
const View = ( { postType } ) => {
	if ( ! postType ) {
		return null;
	}

	return (
		<PluginDocumentSettingPanel
			name={ slug }
			title={ postTypes[ postType ] }
			className={ slug }
		>
Erick Hitter's avatar
Erick Hitter committed
			<PanelBody />
Erick Hitter's avatar
Erick Hitter committed
		</PluginDocumentSettingPanel>
	);
};

Erick Hitter's avatar
Erick Hitter committed
/**
 * HOC to provide the post type.
 */
Erick Hitter's avatar
Erick Hitter committed
const Panel = compose( [
	withSelect( ( select ) => {
		const { type: postType } = select( 'core/editor' ).getCurrentPost();

		return {
			postType,
		};
	} ),
] )( View );

registerPlugin( slug, {
	icon: link,
	render: Panel,
} );