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 / extend / inspector-control / controls / icon / index.js
generateblocks / src / extend / inspector-control / controls / icon Last commit date
components 2 years ago attributes.js 2 years ago index.js 2 years ago options.js 3 years ago
index.js
119 lines
1 import PanelArea from '../../../../components/panel-area';
2 import { __ } from '@wordpress/i18n';
3 import getIcon from '../../../../utils/get-icon';
4 import IconPicker from '../../../../components/icon-picker';
5 import IconStyles from './components/icon-styles';
6 import { useContext } from '@wordpress/element';
7 import ControlsContext from '../../../../block-context';
8 import getDeviceType from '../../../../utils/get-device-type';
9 import FlexControl from '../../../../components/flex-control';
10 import UnitControl from '../../../../components/unit-control';
11 import getResponsivePlaceholder from '../../../../utils/get-responsive-placeholder';
12 import getAttribute from '../../../../utils/get-attribute';
13
14 export default function IconControls( { attributes, setAttributes } ) {
15 const { id, supports: { icon: iconSupport } } = useContext( ControlsContext );
16
17 const device = getDeviceType();
18 const {
19 icon,
20 iconLocation,
21 iconLocationTablet,
22 iconLocationMobile,
23 removeText,
24 } = attributes;
25
26 return (
27 <PanelArea
28 title={ __( 'Icon', 'generateblocks' ) }
29 initialOpen={ false }
30 icon={ getIcon( 'icons' ) }
31 className="gblocks-panel-label"
32 id={ `${ id }Icon` }
33 >
34 { 'Desktop' === device &&
35 <>
36 <IconPicker
37 attributes={ attributes }
38 setAttributes={ setAttributes }
39 attrIcon={ 'icon' }
40 attrRemoveText={ 'removeText' }
41 attrAriaLabel={ 'ariaLabel' }
42 id={ id }
43 />
44
45 { !! icon && ! removeText &&
46 <IconStyles
47 attributes={ attributes }
48 setAttributes={ setAttributes }
49 iconLocation={ iconLocation }
50 locationOptions={ iconSupport.location }
51 onChangeLocation={ ( value ) => {
52 setAttributes( {
53 iconLocation: value,
54 iconPaddingRight: 'inline' === value || 'left' === value ? '0.5' : '',
55 iconPaddingBottom: 'above' === value ? '0.5' : '',
56 iconPaddingLeft: 'right' === value ? '0.5' : '',
57 } );
58 } }
59 />
60 }
61 </>
62 }
63
64 { 'Tablet' === device && !! icon && ! removeText &&
65 <IconStyles
66 attributes={ attributes }
67 setAttributes={ setAttributes }
68 iconLocation={ iconLocationTablet }
69 locationOptions={ iconSupport.location }
70 onChangeLocation={ ( value ) => {
71 setAttributes( {
72 iconLocationTablet: value,
73 iconPaddingRightTablet: 'inline' === value || 'left' === value ? '0.5' : '',
74 iconPaddingBottomTablet: 'above' === value ? '0.5' : '',
75 iconPaddingLeftTablet: 'right' === value ? '0.5' : '',
76 } );
77 } }
78 />
79 }
80
81 { 'Mobile' === device && !! icon && ! removeText &&
82 <IconStyles
83 attributes={ attributes }
84 setAttributes={ setAttributes }
85 iconLocation={ iconLocationMobile }
86 locationOptions={ iconSupport.location }
87 onChangeLocation={ ( value ) => {
88 setAttributes( {
89 iconLocationMobile: value,
90 iconPaddingRightMobile: 'inline' === value || 'left' === value ? '0.5' : '',
91 iconPaddingBottomMobile: 'above' === value ? '0.5' : '',
92 iconPaddingLeftMobile: 'right' === value ? '0.5' : '',
93 } );
94 } }
95 />
96 }
97
98 { !! icon && !! iconSupport.iconSize &&
99 <FlexControl>
100 <UnitControl
101 id="gblocks-icon-width"
102 label={ __( 'Icon Size', 'generateblocks' ) }
103 value={ getAttribute( 'width', { attributes: attributes.iconStyles, deviceType: device } ) }
104 placeholder={ getResponsivePlaceholder( 'width', attributes.iconStyles, device ) }
105 onChange={ ( value ) => {
106 setAttributes( {
107 iconStyles: {
108 [ getAttribute( 'width', { attributes: attributes.iconStyles, deviceType: device }, true ) ]: value,
109 [ getAttribute( 'height', { attributes: attributes.iconStyles, deviceType: device }, true ) ]: value,
110 },
111 } );
112 } }
113 />
114 </FlexControl>
115 }
116 </PanelArea>
117 );
118 }
119