import { createElement, Fragment, Component, useContext, useRef, useState, } from '@wordpress/element' import { Overlay, OptionsPanel, getValueFromInput, PlacementsDragDropContext, } from 'blocksy-options' import { __ } from 'ct-i18n' import useFetch from 'react-fetch-hook' import createTrigger from 'react-use-trigger' import useTrigger from 'react-use-trigger/useTrigger' const requestTrigger = createTrigger() const EditConditions = ({ forcedEdit = false, headerId }) => { const [isEditing, setIsEditing] = useState(false) const [localConditions, setConditions] = useState(null) const { builderValueCollection, builderValueDispatch } = useContext( PlacementsDragDropContext ) const containerRef = useRef() const requestTriggerValue = useTrigger(requestTrigger) const saveSettings = () => { fetch( `${wp.ajax.settings.url}?action=blocksy_header_update_all_conditions`, { headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, method: 'POST', body: JSON.stringify(localConditions), } ) .then((r) => r.json()) .then(() => { requestTrigger() setIsEditing(false) }) } const { data: conditions, isLoading, error, } = useFetch( `${blocksy_admin.ajax_url}?action=blocksy_header_get_all_conditions`, { method: 'POST', formatter: async (r) => { const { success, data } = await r.json() if (!success || !data.conditions) { throw new Error() } return data.conditions }, depends: [requestTriggerValue], } ) return ( { setIsEditing(false) setConditions(null) }} render={() => (

{sprintf( __('Display Conditions', 'blocksy-companion') )}

{__( 'Add one or more conditions in order to display your header.', 'blocksy-companion' )}

{ setConditions((localConditions) => [ ...( localConditions || conditions ).filter(({ id }) => id !== headerId), { id: headerId, conditions: cond, }, ]) }} options={{ conditions: { type: 'blocksy-display-condition', design: 'none', value: [], design: 'none', label: false, }, }} value={{ conditions: ( (localConditions || conditions).find( ({ id }) => id === headerId ) || { conditions: [] } ).conditions, }} hasRevertButton={false} />
)} />
) } export default EditConditions