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 / admin / balloon / index.js
vk-blocks / src / admin / balloon Last commit date
images 2 weeks ago add-button.js 2 months ago delete-button.js 2 months ago index.js 2 months ago
index.js
192 lines
1 /**
2 * WordPress dependencies
3 */
4 import { __ } from '@wordpress/i18n';
5 import { SelectControl, Button, TextControl } from '@wordpress/components';
6 import { useContext } from '@wordpress/element';
7 import { MediaUpload } from '@wordpress/media-utils';
8
9 /**
10 * Internal dependencies
11 */
12 import noImage from '@vkblocks/admin/balloon/images/no-image.png';
13 import { AdminContext } from '@vkblocks/admin/index';
14 import { AddButton } from '@vkblocks/admin/balloon/add-button';
15 import { DeleteButton } from '@vkblocks/admin/balloon/delete-button';
16 import { stripHTML } from '@vkblocks/utils/strip-html';
17
18 export default function AdminBalloon() {
19 const { vkBlocksOption, setVkBlocksOption } = useContext(AdminContext);
20
21 const onChange = (key, value, index) => {
22 const newItems = vkBlocksOption.balloon_meta_lists;
23 newItems[index] = {
24 ...vkBlocksOption.balloon_meta_lists[index],
25 [key]: value,
26 };
27 setVkBlocksOption({
28 ...vkBlocksOption,
29 balloon_meta_lists: [...newItems],
30 });
31 };
32
33 return (
34 <>
35 <section>
36 <h3 id="balloon-setting">
37 {__('Balloon Setting', 'vk-blocks')}
38 </h3>
39 <h4 id="balloon-border-width-setting">
40 {__('Balloon Border Width Setting', 'vk-blocks')}
41 </h4>
42 <SelectControl
43 id="balloon-border-width-selector"
44 className="vk_admin_selectControl"
45 name="vk_blocks_options[balloon_border_width]"
46 value={
47 !!vkBlocksOption.balloon_border_width &&
48 vkBlocksOption.balloon_border_width
49 }
50 onChange={(newValue) => {
51 setVkBlocksOption({
52 ...vkBlocksOption,
53 balloon_border_width: newValue,
54 });
55 }}
56 options={[
57 {
58 label: __('1px', 'vk-blocks'),
59 value: 1,
60 },
61 {
62 label: __('2px', 'vk-blocks'),
63 value: 2,
64 },
65 {
66 label: __('3px', 'vk-blocks'),
67 value: 3,
68 },
69 {
70 label: __('4px', 'vk-blocks'),
71 value: 4,
72 },
73 ]}
74 />
75 <h4 id="balloon-image-setting">
76 {__('Balloon Image Setting', 'vk-blocks')}
77 </h4>
78 <p>
79 {__(
80 'You can register frequently used icon images for speech bubble blocks.',
81 'vk-blocks'
82 )}
83 </p>
84 <ul className="balloonIconList">
85 {Object.keys(vkBlocksOption.balloon_meta_lists).map(
86 (key, index) => {
87 const balloonMetaListObj =
88 vkBlocksOption.balloon_meta_lists[key];
89 return (
90 <li key={index}>
91 <MediaUpload
92 label={__('image', 'vk-blocks')}
93 onSelect={(newValue) => {
94 onChange(
95 'src',
96 newValue.url,
97 index
98 );
99 }}
100 type="image"
101 allowedTypes={['image']}
102 value={
103 !balloonMetaListObj.src &&
104 balloonMetaListObj.src
105 }
106 render={({ open }) => (
107 <>
108 {!balloonMetaListObj.src ? (
109 <>
110 <div className="balloonIconList_iconFrame">
111 <img
112 className="balloonIconList_iconFrame_src"
113 src={noImage}
114 alt=""
115 />
116 <Button
117 onClick={open}
118 className="button button-block button-select"
119 >
120 {__(
121 'Select',
122 'vk-blocks'
123 )}
124 </Button>
125 </div>
126 </>
127 ) : (
128 <>
129 <div className="balloonIconList_iconFrame">
130 <img
131 id={`balloonIconList_iconFrame_src_${index}`}
132 className="balloonIconList_iconFrame_src"
133 src={
134 balloonMetaListObj.src
135 }
136 alt=""
137 />
138 <Button
139 className="button button-block button-delete"
140 onClick={() => {
141 onChange(
142 'src',
143 '',
144 index
145 );
146 }}
147 >
148 {__(
149 'Delete',
150 'vk-blocks'
151 )}
152 </Button>
153 </div>
154 </>
155 )}
156 </>
157 )}
158 />
159 <label
160 htmlFor="icon_title"
161 className="balloonIconList_nameLabel"
162 >
163 {__('Balloon Image Name', 'vk-blocks')}
164 </label>
165 <TextControl
166 id={`icon_title_${index}`}
167 className="balloonIconList_name_input"
168 name={`vk_blocks_balloon_meta[default_icons][${index}][name]`}
169 onChange={(value) =>
170 onChange(
171 'name',
172 stripHTML(value),
173 index
174 )
175 }
176 value={balloonMetaListObj.name ?? ''}
177 />
178 <DeleteButton
179 index={index}
180 balloonMetaListObj={balloonMetaListObj}
181 />
182 </li>
183 );
184 }
185 )}
186 </ul>
187 <AddButton />
188 </section>
189 </>
190 );
191 }
192