import {ExternalLink, PanelBody, PanelRow, SelectControl, TextControl, ToggleControl} from '@wordpress/components'; import {__} from '@wordpress/i18n'; import {InspectorControls} from '@wordpress/block-editor'; import type {FormOption} from '../../../shared/hooks/useFormOptions'; import useCampaigns from '../../../shared/hooks/useCampaigns'; import {useSelect} from '@wordpress/data'; import {useEffect} from '@wordpress/element'; /** * @unreleasaed */ interface BlockInspectorControls { attributes: Readonly; setAttributes: (newAttributes: Record) => void; entityOptions: FormOption[]; isResolving: boolean; isLegacyTemplate: boolean; isLegacyForm: boolean; } /** * @since 4.3.0 */ export default function DonationFormBlockControls({ attributes, setAttributes, entityOptions, isResolving, isLegacyTemplate, isLegacyForm, }: BlockInspectorControls) { const { id, displayStyle, continueButtonTitle = __('Donate now', 'give'), showTitle, contentDisplay, showGoal, showContent, useDefaultForm, } = attributes; const showOpenFormButton = ['newTab', 'modal', 'reveal', 'button'].includes(displayStyle); const {campaigns, hasResolved} = useCampaigns({status: ['active', 'draft']}); const defaultFormId = campaigns?.find((campaign) => campaign.id === attributes?.campaignId)?.defaultFormId; useEffect(() => { if (defaultFormId) { setAttributes({ id: defaultFormId, useDefaultForm: true, }); } }, [attributes?.campaignId]); const displayStyleOptions = ( options: {label: string; value: string}[], legacy: {label: string; value: string}[], v3: {label: string; value: string}[] ) => { return isLegacyTemplate ? options.concat(legacy) : !isLegacyForm ? options.concat(v3) : options; }; const adminBaseUrl = useSelect( // @ts-ignore (select) => select('core').getSite()?.url + '/wp-admin/edit.php?post_type=give_forms&page=give-campaigns', [] ); return ( { setAttributes({useDefaultForm}); if (useDefaultForm) { setAttributes({id: defaultFormId}); } }} help={ <> {__('Uses the campaign’s default form.', 'give')} {` `} {__('Change default form', 'give')} } /> {!useDefaultForm && ( ({label: form.label, value: String(form.value)}))]} onChange={(newFormId) => { setAttributes({id: Number(newFormId)}); }} /> )} { setAttributes({displayStyle: value}); }} /> {showOpenFormButton && ( { setAttributes({continueButtonTitle: value}); }} /> )} {isLegacyTemplate && ( <> { setAttributes({showTitle: value}); }} /> { setAttributes({showGoal: value}); }} /> { setAttributes({contentDisplay: value}); }} /> {contentDisplay && ( { setAttributes({showContent: value}); }} /> )} )} {id && ( {__('Edit donation form', 'give')} )} ); }