PluginProbe ʕ •ᴥ•ʔ
VK Blocks / trunk
VK Blocks vtrunk
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 / save-button.js
vk-blocks / src / admin Last commit date
balloon 1 week ago block-manager 2 months ago block-style-manager 2 months ago custom-block-style 2 months ago custom-format 2 months ago import-export 2 months ago utils 2 months ago block-category-position.js 2 months ago breadcrumb.js 2 months ago custom-css.js 2 months ago index.js 2 months ago license.js 2 months ago load-separate.js 2 months ago margin.js 2 months ago new-faq.js 2 months ago save-button.js 2 months ago toc.js 2 months ago
save-button.js
94 lines
1 /**
2 * External dependencies
3 */
4 import classNames from 'classnames';
5
6 /**
7 * WordPress dependencies
8 */
9 import { __ } from '@wordpress/i18n';
10 import { useState, useEffect, useContext } from '@wordpress/element';
11 import { Button, Snackbar } from '@wordpress/components';
12 import apiFetch from '@wordpress/api-fetch';
13 import { useSelect, useDispatch } from '@wordpress/data';
14
15 /**
16 * Internal dependencies
17 */
18 import { API_PATH, STORE_NAME } from '@vkblocks/utils/store/constants';
19 import { AdminContext } from '@vkblocks/admin/index';
20
21 export const SaveButton = (props) => {
22 const { vkBlocksOption, reloadFlag } = useContext(AdminContext);
23 const { classOption, isChanged, setIsChanged } = props;
24 const [isLoading, setIsLoading] = useState(false);
25 const [isSaveSuccess, setIsSaveSuccess] = useState('');
26 const storeOptions = useSelect((select) => {
27 const { getOptions } = select(STORE_NAME);
28 return getOptions();
29 }, []);
30 const { setOptions } = useDispatch(STORE_NAME);
31
32 const onClickUpdate = () => {
33 setIsLoading(true);
34
35 const newObj = {
36 ...storeOptions,
37 vkBlocksOption: {
38 ...vkBlocksOption,
39 },
40 };
41 setOptions(newObj);
42
43 apiFetch({
44 path: API_PATH,
45 method: 'POST',
46 data: {
47 vkBlocksOption,
48 },
49 }).then((/*response, status*/) => {
50 setTimeout(() => {
51 // console.log(response);
52 // console.log(status);
53 setIsLoading(false);
54 setIsSaveSuccess(true);
55 setIsChanged(false);
56 }, 600);
57 if (reloadFlag === true) {
58 // eslint-disable-next-line no-undef
59 location.reload();
60 }
61 });
62 };
63
64 // snackbar更新する
65 useEffect(() => {
66 if (isSaveSuccess) {
67 setTimeout(() => {
68 setIsSaveSuccess();
69 }, 3000);
70 }
71 }, [isSaveSuccess]);
72
73 return (
74 <>
75 <div className={classNames('submit', classOption)}>
76 <Button
77 className="update-button"
78 isPrimary
79 onClick={onClickUpdate}
80 isBusy={isLoading}
81 disabled={!isChanged}
82 >
83 {__('Save setting', 'vk-blocks')}
84 </Button>
85 {isSaveSuccess && (
86 <div>
87 <Snackbar>{__('Save Success', 'vk-blocks')} </Snackbar>
88 </div>
89 )}
90 </div>
91 </>
92 );
93 };
94