import {__} from '@wordpress/i18n'; import {InspectorControls, useBlockProps} from '@wordpress/block-editor'; import {BlockEditProps} from '@wordpress/blocks'; import {FormTokenField, PanelBody, SelectControl, TextControl, ToggleControl} from '@wordpress/components'; import {TokenItem} from '@wordpress/components/build-types/form-token-field/types' import GridControl from '../shared/components/GridControl'; import useCampaigns from '../shared/hooks/useCampaigns'; import {CampaignGridType} from './types'; import CampaignGridApp from './app/index' export default function Edit({attributes, setAttributes}: BlockEditProps) { const blockProps = useBlockProps(); const {campaigns, hasResolved} = useCampaigns(); const suggestions = campaigns?.map((campaign) => campaign.title); return (
{hasResolved && ( <> setAttributes({layout})} options={[ { value: 'full', label: __('Full Width', 'give'), }, { value: 'double', label: __('Double', 'give'), }, { value: 'triple', label: __('Triple', 'give'), } ]} /> setAttributes({showImage})} /> setAttributes({showDescription})} /> setAttributes({showGoal})} /> setAttributes({sortBy})} value={attributes.sortBy} help={__('The order campaigns are displayed in.', 'give')} options={[ { value: 'date', label: __('Date Created', 'give'), }, { value: 'amount', label: __('Total Amount Raised', 'give'), }, { value: 'donations', label: __('Number of Donations', 'give'), }, { value: 'donors', label: __('Number of Donors', 'give'), } ]} /> setAttributes({orderBy})} value={attributes.orderBy} help={__('Choose whether the campaign order ascends or descends.', 'give')} options={[ { value: 'desc', label: __('Descending', 'give'), }, { value: 'asc', label: __('Ascending', 'give'), } ]} /> item.title)} label={__('Filter by Campaign', 'give')} onChange={(values) => { const filterBy = campaigns .filter((campaign) => values.includes(campaign.title)) .map((campaign) => { return { value: String(campaign.id), title: campaign.title } }); setAttributes({filterBy}) }} suggestions={suggestions} /> setAttributes({perPage: Number(perPage)})} help={__('Set the number of campaigns to be displayed on the first page load.', 'give')} /> setAttributes({showPagination})} help={__('All campaigns will be spread across multiple pages.', 'give')} /> )}
) }