File "BlockControls.js"
Full path: /home/webcknlt/admissiontell.com/wp-content/plugins/generateblocks/src/blocks/query-loop/components/BlockControls.js
File
size: 2.71 B (2.71 KB bytes)
MIME-type: text/x-java
Charset: utf-8
Download Open Edit Advanced Editor &nnbsp; Back
import { BlockControls } from '@wordpress/block-editor';
import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
import getIcon from '../../../utils/get-icon';
import { __ } from '@wordpress/i18n';
import { createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';
import { useDispatch, useSelect } from '@wordpress/data';
export default ( { clientId } ) => {
const { insertBlocks } = useDispatch( 'core/block-editor' );
const {
getBlock,
} = useSelect( ( select ) => select( 'core/block-editor' ), [] );
const { selectBlock } = useDispatch( 'core/block-editor' );
const thisBlock = getBlock( clientId );
const gridBlock = thisBlock ? thisBlock?.innerBlocks[ 0 ] : false;
const containerBlock = thisBlock ? thisBlock?.innerBlocks[ 0 ]?.innerBlocks[ 0 ] : false;
const DEFAULT_BUTTON_ATTRIBUTES = {
useDynamicData: true,
isPagination: true,
};
const PAGINATION_TEMPLATE = [
'generateblocks/container', {
marginTop: '20',
variantRole: 'button-container',
display: 'flex',
isPagination: true,
},
[
[
'generateblocks/button',
Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
text: __( 'Previous', 'generateblocks' ),
dynamicLinkType: 'pagination-prev',
dynamicLinkRemoveIfEmpty: true,
} ),
],
[
'generateblocks/button',
Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
text: __( '1 2 … 10', 'generateblocks' ),
dynamicContentType: 'pagination-numbers',
} ),
],
[
'generateblocks/button',
Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
text: __( 'Next', 'generateblocks' ),
dynamicLinkType: 'pagination-next',
dynamicLinkRemoveIfEmpty: true,
} ),
],
],
];
return (
<BlockControls>
{ ( !! gridBlock || !! containerBlock ) &&
<ToolbarGroup>
{ !! gridBlock &&
<ToolbarButton
icon={ getIcon( 'grid' ) }
label={ __( 'Open Grid', 'generateblocks' ) }
onClick={ () => {
selectBlock( gridBlock.clientId );
} }
showTooltip
/>
}
{ !! containerBlock &&
<ToolbarButton
icon={ getIcon( 'container' ) }
label={ __( 'Open Container', 'generateblocks' ) }
onClick={ () => {
selectBlock( containerBlock.clientId );
} }
showTooltip
/>
}
</ToolbarGroup>
}
<ToolbarGroup>
<ToolbarButton
icon={ getIcon( 'add-pagination' ) }
label={ __( 'Add Pagination', 'generateblocks' ) }
onClick={ () => {
insertBlocks( createBlocksFromInnerBlocksTemplate( [ PAGINATION_TEMPLATE ] ), undefined, clientId );
} }
showTooltip
/>
</ToolbarGroup>
</BlockControls>
);
};