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 / components / advanced-media-upload / index.js
vk-blocks / src / components / advanced-media-upload Last commit date
index.js 2 months ago
index.js
109 lines
1 import { __ } from '@wordpress/i18n';
2 import { Button } from '@wordpress/components';
3 import { MediaUpload } from '@wordpress/block-editor';
4 import { dispatch } from '@wordpress/data';
5 import noImage from '../../../inc/vk-blocks/images/no-image.svg';
6
7 export const AdvancedMediaUpload = (props) => {
8 const { schema, clientId, setAttributes, attributes } = props;
9
10 const deleteImgBtn = () => {
11 dispatch('core/block-editor').updateBlockAttributes(clientId, {
12 [schema]: null,
13 [schema + 'Id']: null,
14 });
15 };
16
17 const ensureImageId = (callback) => {
18 const schemaIdKey = schema + 'Id';
19
20 if (attributes[schema] && !attributes[schemaIdKey]) {
21 wp.media
22 .attachment(attributes[schema])
23 .fetch()
24 .then((media) => {
25 if (media && media.id) {
26 setAttributes({ [schemaIdKey]: media.id });
27 }
28 });
29 }
30
31 // すぐにコールバック(open)を実行
32 if (callback) {
33 callback();
34 }
35 };
36
37 return (
38 <MediaUpload
39 onSelect={(value) => {
40 const schemaIdKey = schema + 'Id'; // 例: "bgImageId"
41 const newAttributes = { [schema]: value.url };
42
43 if (value.id) {
44 newAttributes[schemaIdKey] = value.id;
45 } else {
46 // IDがない場合、wp.media.attachment() を使って取得
47 wp.media
48 .attachment(value.url)
49 .fetch()
50 .then((media) => {
51 if (media && media.id) {
52 setAttributes({ [schemaIdKey]: media.id });
53 }
54 });
55 }
56 setAttributes(newAttributes);
57 }}
58 type="image"
59 value={attributes[schema + 'Id']}
60 render={({ open }) => (
61 <>
62 {attributes[schema] ? (
63 <>
64 {/* eslint-disable-next-line jsx-a11y/alt-text*/}
65 <img
66 className={'icon-image'}
67 src={attributes[schema]}
68 />
69 <div className="components-button-group">
70 <Button
71 onClick={deleteImgBtn}
72 className={
73 'image-button button button-delete'
74 }
75 >
76 {__('Delete Image', 'vk-blocks')}
77 </Button>
78 <Button
79 onClick={() => {
80 ensureImageId(open);
81 }}
82 className={
83 'image-button button button-replace'
84 }
85 >
86 {__('Replace Image', 'vk-blocks')}
87 </Button>
88 </div>
89 </>
90 ) : (
91 <>
92 {/* eslint-disable-next-line jsx-a11y/alt-text*/}
93 <img className={'icon-image'} src={noImage} />
94 <Button
95 onClick={open}
96 className={
97 'button button-large components-button'
98 }
99 >
100 {__('Select image', 'vk-blocks')}
101 </Button>
102 </>
103 )}
104 </>
105 )}
106 />
107 );
108 };
109