PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
1.123.0 1.122.0 1.121.0 1.120.0 1.119.2 1.119.1 1.119.0 1.118.7 1.82.0.0 1.82.0.1 1.83.0.0 1.83.0.1 1.84.0.0 1.84.0.1 1.85.0.2 1.85.0.3 1.85.1.0 1.85.1.1 1.86.0.0 1.86.0.1 1.86.1.0 1.87.0.0 1.87.0.1 1.88.0.1 1.88.0.2 1.89.0.0 1.9.2 1.90.0.0 1.90.0.1 1.90.1.1 1.91.0.0 1.91.1.1 1.92.0.0 1.92.0.1 1.92.1.0 1.92.1.1 1.93.0.0 trunk 1.93.0.1 0.1.1 1.93.1.0 0.10.3 1.93.1.1 0.11.0 1.94.0.0 0.12.6 1.94.0.1 0.15.1 1.94.1.0 0.16.2 1.94.2.1 0.17.6 1.94.2.2 0.2.2 1.95.0.3 0.22.4 1.95.0.4 0.26.7 1.96.2.0 0.3.2 1.96.2.1 0.31.0 1.97.0.1 0.35.5 1.97.0.2 0.37.5 1.99.0.0 0.38.8 1.99.0.1 0.39.4 0.4.7 0.41.0 0.42.0 0.44.13 0.45.2 0.46.1 0.47.0 0.48.0 0.49.8 0.5.2 0.50.3 0.51.0 0.52.2 0.53.2 0.54.0 0.55.0 0.56.2 0.56.3 0.57.6 0.58.10 0.59.0 0.6.0 0.60.1 0.61.2 0.7.1 0.8.2 1.0.16 1.10.0 1.100.0.0 1.100.0.1 1.102.0.0 1.102.0.1 1.103.0.0 1.104.0.0 1.104.0.1 1.105.1.0 1.105.1.1 1.106.0.0 1.106.0.1 1.107.0.0 1.107.0.1 1.107.0.2 1.108.0.0 1.108.0.1 1.109.0.0 1.109.0.1 1.11.4 1.110.0.0 1.110.0.1 1.111.0.0 1.111.0.1 1.111.0.2 1.112.0.0 1.112.0.1 1.113.0.0 1.113.0.1 1.114.0.0 1.114.0.1 1.114.2.0 1.114.2.1 1.115.0.0 1.115.0.1 1.115.1.0 1.115.1.1 1.115.2.0 1.115.2.1 1.116.0.0 1.116.0.1 1.116.1.0 1.116.1.1 1.116.2.0 1.117.0.0 1.117.0.1 1.117.1.0 1.118.2 1.118.5 1.12.0 1.13.2 1.14.1 1.15.1 1.16.11 1.17.0 1.18.6 1.19.0 1.19.1 1.2.3 1.20.7 1.21.0 1.22.4 1.23.0 1.24.5 1.25.1 1.26.2 1.27.7.2 1.28.0.1 1.29.2.0 1.3.9 1.30.0.1 1.31.0.1 1.32.0.2 1.33.2.1 1.36.1.5 1.37.0.0 1.39.2.1 1.4.6 1.40.0.1 1.40.1.0 1.40.1.1 1.41.0.0 1.41.0.1 1.41.2.2 1.41.2.3 1.43.0.0 1.43.0.1 1.43.0.2 1.44.0.0 1.44.0.1 1.45.0.0 1.45.0.1 1.46.0.0 1.46.0.1 1.47.0.0 1.47.0.1 1.47.1.0 1.48.0.0 1.48.0.1 1.48.0.2 1.48.1.0 1.48.1.1 1.5.0 1.50.0.0 1.50.0.1 1.51.0.0 1.51.0.1 1.52.0.0 1.52.0.1 1.53.0.0 1.53.0.1 1.54.0.0 1.54.0.1 1.55.0.0 1.55.0.1 1.56.0.0 1.56.0.1 1.57.0.0 1.57.0.2 1.57.0.3 1.57.0.4 1.57.0.5 1.57.1.0 1.57.1.1 1.57.1.2 1.58.0.0 1.58.0.1 1.59.0.0 1.59.0.1 1.6.0 1.60.0.0 1.60.0.1 1.63.0.0 1.63.0.1 1.64.0.0 1.64.0.1 1.64.1.0 1.64.1.2 1.67.0.0 1.67.0.1 1.68.0.0 1.68.0.1 1.69.0.0 1.69.0.1 1.69.1.1 1.69.1.2 1.7.1 1.70.0.0 1.70.0.1 1.71.0.0 1.71.0.1 1.72.0.0 1.72.1.0 1.72.1.1 1.73.0.0 1.73.0.1 1.74.0.0 1.74.0.1 1.75.0.0 1.75.1.0 1.75.1.1 1.76.0.0 1.76.0.1 1.76.1.0 1.76.1.1 1.76.2.0 1.76.2.1 1.77.0.0 1.77.0.1 1.78.0.0 1.78.0.1 1.79.0.0 1.79.0.1 1.79.0.2 1.79.0.3 1.79.1.0 1.79.1.1 1.8.2 1.80.1.0 1.80.1.1 1.80.1.2 1.81.0.1 1.81.0.2
vk-blocks / src / blocks / icon-outer / edit.js
vk-blocks / src / blocks / icon-outer Last commit date
deprecated 2 months ago block.json 1 month ago edit.js 2 months ago icon.svg 2 months ago index.js 2 months ago index.php 2 months ago save.js 2 months ago style.scss 2 months ago
edit.js
264 lines
1 import { __ } from '@wordpress/i18n';
2 import {
3 InnerBlocks,
4 useBlockProps,
5 InspectorControls,
6 JustifyContentControl,
7 BlockControls,
8 } from '@wordpress/block-editor';
9 import {
10 PanelBody,
11 BaseControl,
12 TextControl,
13 RangeControl,
14 __experimentalToggleGroupControl as ToggleGroupControl,
15 __experimentalToggleGroupControlOption as ToggleGroupControlOption,
16 Button,
17 SelectControl,
18 } from '@wordpress/components';
19 import { useEffect } from '@wordpress/element';
20 import { select, dispatch } from '@wordpress/data';
21
22 export default function IconOuterEdit(props) {
23 const { attributes, setAttributes, clientId } = props;
24 const {
25 iconSize,
26 iconSizeUnit,
27 iconMargin,
28 iconMarginUnit,
29 iconRadius,
30 iconsJustify,
31 iconType,
32 } = attributes;
33
34 const { getBlocksByClientId } = select('core/block-editor');
35 const { updateBlockAttributes } = dispatch('core/block-editor');
36
37 const thisBlock = getBlocksByClientId(clientId);
38
39 useEffect(() => {
40 if (thisBlock && thisBlock[0] && thisBlock[0].innerBlocks) {
41 const thisInnerBlocks = thisBlock[0].innerBlocks;
42 thisInnerBlocks.forEach(function (thisInnerBlock) {
43 updateBlockAttributes(thisInnerBlock.clientId, { iconSize });
44 updateBlockAttributes(thisInnerBlock.clientId, {
45 iconSizeUnit,
46 });
47 updateBlockAttributes(thisInnerBlock.clientId, { iconMargin });
48 updateBlockAttributes(thisInnerBlock.clientId, {
49 iconMarginUnit,
50 });
51 updateBlockAttributes(thisInnerBlock.clientId, { iconRadius });
52 updateBlockAttributes(thisInnerBlock.clientId, { iconType });
53 });
54 }
55 }, [thisBlock, attributes, clientId]);
56
57 // blocksProps を予め定義
58 const blockProps = useBlockProps({
59 className: `vk_icons`,
60 });
61
62 const ALLOWED_BLOCKS = ['vk-blocks/icon'];
63
64 const TEMPLATE = [['vk-blocks/icon'], ['vk-blocks/icon']];
65
66 // 空白チェック
67 const defaultIconSize = 'px' === iconSizeUnit ? 36 : 1;
68 const defaultIconMargin = 'px' === iconMarginUnit ? 22 : 1;
69
70 return (
71 <>
72 <BlockControls group="block">
73 <JustifyContentControl
74 allowedControls={[
75 'left',
76 'center',
77 'right',
78 'space-between',
79 ]}
80 value={iconsJustify}
81 onChange={(value) => setAttributes({ iconsJustify: value })}
82 popoverProps={{
83 position: 'bottom right',
84 variant: 'toolbar',
85 }}
86 />
87 </BlockControls>
88 <InspectorControls>
89 <PanelBody title={__('Icon Common Setting', 'vk-blocks')}>
90 <p className={`mt-0 mb-2`}>{__('Size', 'vk-blocks')}</p>
91 <div className="vk_icon_custombox">
92 <TextControl
93 className={`vk_icon_custombox_number`}
94 value={iconSize}
95 step={'px' === iconSizeUnit ? 1 : 0.1}
96 min={0}
97 onChange={(value) => {
98 let newIconSize = value
99 ? parseFloat(value)
100 : defaultIconSize;
101 if ('px' === iconSizeUnit) {
102 newIconSize = parseInt(newIconSize);
103 }
104 setAttributes({ iconSize: newIconSize });
105 }}
106 type={'number'}
107 />
108 <SelectControl
109 className={`vk_icon_custombox_unit`}
110 value={iconSizeUnit}
111 onChange={(value) => {
112 setAttributes({ iconSizeUnit: value });
113 if ('px' === value) {
114 setAttributes({
115 iconSize: parseInt(iconSize),
116 });
117 }
118 }}
119 options={[
120 {
121 value: 'px',
122 label: __('px', 'vk-blocks'),
123 },
124 {
125 value: 'em',
126 label: __('em', 'vk-blocks'),
127 },
128 {
129 value: 'rem',
130 label: __('rem', 'vk-blocks'),
131 },
132 {
133 value: 'vw',
134 label: __('vw', 'vk-blocks'),
135 },
136 ]}
137 />
138 <Button
139 className="vk_icon_custombox_reset"
140 isSmall
141 isSecondary
142 onClick={() => {
143 setAttributes({ iconSize: 36 });
144 setAttributes({ iconSizeUnit: 'px' });
145 }}
146 >
147 {__('Reset')}
148 </Button>
149 </div>
150 <p className={`mt-0 mb-2`}>{__('Margin', 'vk-blocks')}</p>
151 <div className="vk_icon_custombox">
152 <TextControl
153 className={`vk_icon_custombox_number`}
154 value={iconMargin}
155 step={'px' === iconMarginUnit ? 1 : 0.1}
156 min={0}
157 onChange={(value) => {
158 let newIconMargin = value
159 ? parseFloat(value)
160 : defaultIconMargin;
161 if ('px' === iconMarginUnit) {
162 newIconMargin = parseInt(newIconMargin);
163 }
164 setAttributes({ iconMargin: newIconMargin });
165 }}
166 type={'number'}
167 />
168 <SelectControl
169 className={`vk_icon_custombox_unit`}
170 value={iconMarginUnit}
171 onChange={(value) => {
172 setAttributes({ iconMarginUnit: value });
173 if ('px' === value) {
174 setAttributes({
175 iconMargin: parseInt(iconMargin),
176 });
177 }
178 }}
179 options={[
180 {
181 value: 'px',
182 label: __('px', 'vk-blocks'),
183 },
184 {
185 value: 'em',
186 label: __('em', 'vk-blocks'),
187 },
188 {
189 value: 'rem',
190 label: __('rem', 'vk-blocks'),
191 },
192 {
193 value: 'vw',
194 label: __('vw', 'vk-blocks'),
195 },
196 ]}
197 />
198 <Button
199 className="vk_icon_custombox_reset"
200 isSmall
201 isSecondary
202 onClick={() => {
203 setAttributes({ iconMargin: 22 });
204 setAttributes({ iconMarginUnit: 'px' });
205 }}
206 >
207 {__('Reset')}
208 </Button>
209 </div>
210 <BaseControl
211 label={__('Border radius', 'vk-blocks')}
212 id={`vk_icon-radius`}
213 >
214 <RangeControl
215 value={iconRadius}
216 onChange={(value) =>
217 setAttributes({
218 iconRadius:
219 value !== undefined ? value : 50,
220 })
221 }
222 min={0}
223 max={50}
224 allowReset={true}
225 />
226 </BaseControl>
227 <p className="mt-0 mb-2">{__('Style', 'vk-blocks')}</p>
228
229 <ToggleGroupControl
230 value={iconType}
231 onChange={(value) => setAttributes({ iconType: value })}
232 isBlock
233 >
234 <ToggleGroupControlOption
235 value="0"
236 label={__('Solid color', 'vk-blocks')}
237 />
238 <ToggleGroupControlOption
239 value="1"
240 label={__('Icon & Frame', 'vk-blocks')}
241 />
242 <ToggleGroupControlOption
243 value="2"
244 label={__('Icon only', 'vk-blocks')}
245 />
246 </ToggleGroupControl>
247 </PanelBody>
248 </InspectorControls>
249 <div {...blockProps}>
250 <div
251 className={`vk_icons_col vk_icons_col-justify-${iconsJustify}`}
252 >
253 <InnerBlocks
254 allowedBlocks={ALLOWED_BLOCKS}
255 template={TEMPLATE}
256 templateLock={false}
257 orientation="horizontal"
258 />
259 </div>
260 </div>
261 </>
262 );
263 }
264