PluginProbe ʕ •ᴥ•ʔ
GenerateBlocks / 2.0.0
GenerateBlocks v2.0.0
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 3 years ago InspectorAdvancedControls.js 2 years ago InspectorControls.js 3 years ago LayoutSelector.js 3 years ago LoopRenderer.js 3 years ago QueryLoopRenderer.js 2 years ago utils.js 3 years ago
BlockControls.js
99 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/container', {
26 marginTop: '20',
27 variantRole: 'button-container',
28 display: 'flex',
29 isPagination: true,
30 },
31 [
32 [
33 'generateblocks/button',
34 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
35 text: __( 'Previous', 'generateblocks' ),
36 dynamicLinkType: 'pagination-prev',
37 dynamicLinkRemoveIfEmpty: true,
38 } ),
39 ],
40 [
41 'generateblocks/button',
42 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
43 text: __( '1 2 … 10', 'generateblocks' ),
44 dynamicContentType: 'pagination-numbers',
45 } ),
46 ],
47 [
48 'generateblocks/button',
49 Object.assign( {}, DEFAULT_BUTTON_ATTRIBUTES, generateBlocksStyling.button, {
50 text: __( 'Next', 'generateblocks' ),
51 dynamicLinkType: 'pagination-next',
52 dynamicLinkRemoveIfEmpty: true,
53 } ),
54 ],
55 ],
56 ];
57
58 return (
59 <BlockControls>
60 { ( !! gridBlock || !! containerBlock ) &&
61 <ToolbarGroup>
62 { !! gridBlock &&
63 <ToolbarButton
64 icon={ getIcon( 'grid' ) }
65 label={ __( 'Open Grid', 'generateblocks' ) }
66 onClick={ () => {
67 selectBlock( gridBlock.clientId );
68 } }
69 showTooltip
70 />
71 }
72
73 { !! containerBlock &&
74 <ToolbarButton
75 icon={ getIcon( 'container' ) }
76 label={ __( 'Open Container', 'generateblocks' ) }
77 onClick={ () => {
78 selectBlock( containerBlock.clientId );
79 } }
80 showTooltip
81 />
82 }
83 </ToolbarGroup>
84 }
85
86 <ToolbarGroup>
87 <ToolbarButton
88 icon={ getIcon( 'add-pagination' ) }
89 label={ __( 'Add Pagination', 'generateblocks' ) }
90 onClick={ () => {
91 insertBlocks( createBlocksFromInnerBlocksTemplate( [ PAGINATION_TEMPLATE ] ), undefined, clientId );
92 } }
93 showTooltip
94 />
95 </ToolbarGroup>
96 </BlockControls>
97 );
98 };
99