PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 1.5.3
GenerateBlocks v1.5.3
trunk 1.0 1.0.1 1.0.2 1.1.0 1.1.1 1.1.2 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.8.3 1.9.0 1.9.1 2.0.0 2.0.1 2.0.2 2.1.0 2.1.1 2.1.2 2.2.0 2.2.1 2.3.0
generateblocks / src / blocks / query-loop / components / BlockControls.js
generateblocks / src / blocks / query-loop / components Last commit date
inspector-controls 3 years ago BlockControls.js 4 years ago InspectorControls.js 3 years ago LayoutSelector.js 4 years ago LoopRenderer.js 3 years ago QueryLoopRenderer.js 4 years ago utils.js 3 years ago
BlockControls.js
96 lines
1 import { BlockControls } from '@wordpress/block-editor';
2 import { ToolbarButton, ToolbarGroup } from '@wordpress/components';
3 import getIcon from '../../../utils/get-icon';
4 import { __ } from '@wordpress/i18n';
5 import { createBlocksFromInnerBlocksTemplate } from '@wordpress/blocks';
6 import { useDispatch, useSelect } from '@wordpress/data';
7
8 export default ( { clientId } ) => {
9 const { insertBlocks } = useDispatch( 'core/block-editor' );
10 const {
11 getBlock,
12 } = useSelect( ( select ) => select( 'core/block-editor' ), [] );
13 const { selectBlock } = useDispatch( 'core/block-editor' );
14
15 const thisBlock = getBlock( clientId );
16 const gridBlock = thisBlock ? thisBlock?.innerBlocks[ 0 ] : false;
17 const containerBlock = thisBlock ? thisBlock?.innerBlocks[ 0 ]?.innerBlocks[ 0 ] : false;
18
19 const DEFAULT_BUTTON_ATTRIBUTES = {
20 useDynamicData: true,
21 isPagination: true,
22 };
23
24 const PAGINATION_TEMPLATE = [
25 'generateblocks/button-container', {
26 isPagination: true,
27 },
28 [
29 [
30 'generateblocks/button',
31 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
32 text: __( 'Previous', 'generateblocks' ),
33 dynamicLinkType: 'pagination-prev',
34 dynamicLinkRemoveIfEmpty: true,
35 } ),
36 ],
37 [
38 'generateblocks/button',
39 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
40 text: __( '1 2 … 10', 'generateblocks' ),
41 dynamicContentType: 'pagination-numbers',
42 } ),
43 ],
44 [
45 'generateblocks/button',
46 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
47 text: __( 'Next', 'generateblocks' ),
48 dynamicLinkType: 'pagination-next',
49 dynamicLinkRemoveIfEmpty: true,
50 } ),
51 ],
52 ],
53 ];
54
55 return (
56 <BlockControls>
57 { ( !! gridBlock || !! containerBlock ) &&
58 <ToolbarGroup>
59 { !! gridBlock &&
60 <ToolbarButton
61 icon={ getIcon( 'grid' ) }
62 label={ __( 'Open Grid', 'generateblocks' ) }
63 onClick={ () => {
64 selectBlock( gridBlock.clientId );
65 } }
66 showTooltip
67 />
68 }
69
70 { !! containerBlock &&
71 <ToolbarButton
72 icon={ getIcon( 'container' ) }
73 label={ __( 'Open Container', 'generateblocks' ) }
74 onClick={ () => {
75 selectBlock( containerBlock.clientId );
76 } }
77 showTooltip
78 />
79 }
80 </ToolbarGroup>
81 }
82
83 <ToolbarGroup>
84 <ToolbarButton
85 icon={ getIcon( 'add-pagination' ) }
86 label={ __( 'Add Pagination', 'generateblocks' ) }
87 onClick={ () => {
88 insertBlocks( createBlocksFromInnerBlocksTemplate( [ PAGINATION_TEMPLATE ] ), undefined, clientId );
89 } }
90 showTooltip
91 />
92 </ToolbarGroup>
93 </BlockControls>
94 );
95 };
96