@wordpress/block-library
Version:
Block library for the WordPress editor.
79 lines (74 loc) • 2.77 kB
JavaScript
/**
* WordPress dependencies
*/
import {
PanelBody,
__experimentalVStack as VStack,
} from '@wordpress/components';
import { __ } from '@wordpress/i18n';
/**
* Internal dependencies
*/
import OverlayTemplatePartSelector from './overlay-template-part-selector';
import OverlayVisibilityControl from './overlay-visibility-control';
import OverlayMenuPreviewButton from './overlay-menu-preview-button';
/**
* Overlay Panel component for Navigation block.
*
* @param {Object} props Component props.
* @param {string} props.overlayMenu Overlay menu setting ('never', 'mobile', 'always').
* @param {string} props.overlay Currently selected overlay template part ID.
* @param {Function} props.setAttributes Function to update block attributes.
* @param {Function} props.onNavigateToEntityRecord Function to navigate to template part editor.
* @param {boolean} props.overlayMenuPreview Whether overlay menu preview is open.
* @param {Function} props.setOverlayMenuPreview Function to toggle overlay menu preview.
* @param {boolean} props.hasIcon Whether the overlay menu has an icon.
* @param {string} props.icon Icon type for overlay menu.
* @param {string} props.overlayMenuPreviewClasses CSS classes for overlay menu preview button.
* @param {string} props.overlayMenuPreviewId ID for overlay menu preview.
* @param {boolean} props.isResponsive Whether overlay menu is responsive.
* @return {JSX.Element|null} The overlay panel component or null if overlay is disabled.
*/
export default function OverlayPanel( {
overlayMenu,
overlay,
setAttributes,
onNavigateToEntityRecord,
overlayMenuPreview,
setOverlayMenuPreview,
hasIcon,
icon,
overlayMenuPreviewClasses,
overlayMenuPreviewId,
isResponsive,
} ) {
return (
<PanelBody title={ __( 'Overlay' ) } initialOpen>
<VStack spacing={ 4 }>
<OverlayVisibilityControl
overlayMenu={ overlayMenu }
setAttributes={ setAttributes }
/>
{ overlayMenu !== 'never' && (
<OverlayMenuPreviewButton
isResponsive={ isResponsive }
overlayMenuPreview={ overlayMenuPreview }
setOverlayMenuPreview={ setOverlayMenuPreview }
hasIcon={ hasIcon }
icon={ icon }
setAttributes={ setAttributes }
overlayMenuPreviewClasses={ overlayMenuPreviewClasses }
overlayMenuPreviewId={ overlayMenuPreviewId }
/>
) }
{ overlayMenu !== 'never' && (
<OverlayTemplatePartSelector
overlay={ overlay }
setAttributes={ setAttributes }
onNavigateToEntityRecord={ onNavigateToEntityRecord }
/>
) }
</VStack>
</PanelBody>
);
}