/**
* WordPress dependencies
*/
import { registerBlockVariation } from '@wordpress/blocks';
import type { BlockVariation } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import { addFilter } from '@wordpress/hooks';
import { SinglePostPicker } from './single-post-picker';
const VARIATION_NAME = 'creativeandrew/single-post-query-loop-selector';
interface BlockCoreQueryAttributes extends BlockVariation {
allowedControls: [];
}
registerBlockVariation( 'core/query', {
name: VARIATION_NAME,
title: __( 'Single Post Query Loop', 'single-post-query-loop-selector' ),
description: __(
'Allow you to search and select a single post.',
'single-post-query-loop-selector'
),
category: 'theme',
isActive: [ 'namespace' ],
attributes: {
namespace: VARIATION_NAME,
query: {
perPage: 1,
postType: 'post',
sticky: 'exclude',
},
className: 'is-style-single-post-query-loop-selector',
},
allowedControls: [],
innerBlocks: [
[
'core/post-template',
{},
[ [ 'core/post-title' ], [ 'core/post-excerpt' ] ],
],
],
scope: [ 'inserter' ],
} as BlockCoreQueryAttributes );
const isSingePostPicker = ( props: { attributes: { namespace: string } } ) => {
const {
attributes: { namespace },
} = props;
return namespace && namespace === VARIATION_NAME;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const withAdvancedQueryControls = ( BlockEdit: React.FC ) => ( props: any ) => {
if ( isSingePostPicker( props ) ) {
const { setAttributes, attributes } = props;
return (
<>
>
);
}
return ;
};
addFilter( 'editor.BlockEdit', 'core/query', withAdvancedQueryControls );