-
Notifications
You must be signed in to change notification settings - Fork 4.2k
/
edit.js
57 lines (51 loc) · 1.39 KB
/
edit.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* External dependencies
*/
import clsx from 'clsx';
/**
* WordPress dependencies
*/
import { useBlockProps, useInnerBlocksProps } from '@wordpress/block-editor';
import { useSelect } from '@wordpress/data';
import { store as blocksStore } from '@wordpress/blocks';
const DEFAULT_BLOCK = {
name: 'core/button',
attributesToCopy: [
'backgroundColor',
'border',
'className',
'fontFamily',
'fontSize',
'gradient',
'style',
'textColor',
'width',
],
};
function ButtonsEdit( { attributes, className } ) {
const { fontSize, layout, style } = attributes;
const blockProps = useBlockProps( {
className: clsx( className, {
'has-custom-font-size': fontSize || style?.typography?.fontSize,
} ),
} );
const { hasButtonVariations } = useSelect( ( select ) => {
const buttonVariations = select( blocksStore ).getBlockVariations(
'core/button',
'inserter'
);
return {
hasButtonVariations: buttonVariations.length > 0,
};
}, [] );
const innerBlocksProps = useInnerBlocksProps( blockProps, {
defaultBlock: DEFAULT_BLOCK,
// This check should be handled by the `Inserter` internally to be consistent across all blocks that use it.
directInsert: ! hasButtonVariations,
template: [ [ 'core/button' ] ],
templateInsertUpdatesSelection: true,
orientation: layout?.orientation ?? 'horizontal',
} );
return <div { ...innerBlocksProps } />;
}
export default ButtonsEdit;