/**
* WordPress dependencies.
*/
import apiFetch from '@wordpress/api-fetch';
import { ToggleControl } from '@wordpress/components';
import domReady from '@wordpress/dom-ready';
import { createRoot, render, useState, WPElement } from '@wordpress/element';
import { __ } from '@wordpress/i18n';
/**
* Window dependencies.
*/
const { ajaxurl, epsa } = window;
/**
* Toggle component.
*
* @param {object} props Component props.
* @param {string} props.blogId Blog ID.
* @param {boolean} props.isDefaultChecked Whether checked by default.
* @returns {WPElement} Toggle component.
*/
const ElasticPressToggleControl = ({ blogId, isDefaultChecked }) => {
const [isChecked, setIsChecked] = useState(isDefaultChecked);
const [isLoading, setIsLoading] = useState(false);
/**
* Handle toggle change.
*
* @param {boolean} isChecked New checked state.
* @returns {void}
*/
const onChange = async (isChecked) => {
setIsChecked(isChecked);
setIsLoading(true);
const formData = new FormData();
formData.append('action', 'ep_site_admin');
formData.append('blog_id', blogId);
formData.append('checked', isChecked ? 'yes' : 'no');
formData.append('nonce', epsa.nonce);
await apiFetch({
method: 'POST',
url: ajaxurl,
body: formData,
});
setIsLoading(false);
};
return (
);
};
/**
* Initialize.
*
* @returns {void}
*/
const init = () => {
const toggles = document.getElementsByClassName('index-toggle');
for (const toggle of toggles) {
const element = (
);
if (typeof createRoot === 'function') {
const root = createRoot(toggle.parentElement);
root.render(element);
} else {
render(element, toggle.parentElement);
}
}
};
domReady(init);