import {__} from '@wordpress/i18n'; import {ListTablePage} from '@givewp/components'; import ListTableApi from '@givewp/components/ListTable/api'; import {BulkActionsConfig, FilterConfig} from '@givewp/components/ListTable/ListTablePage'; import {CampaignsRowActions} from './CampaignsRowActions'; import styles from './CampaignsListTable.module.scss'; import {GiveCampaignsListTable} from './types'; import CreateCampaignModal from '../CreateCampaignModal'; import {useState} from 'react'; import MergeCampaignModal from '../MergeCampaign/Modal'; import ExistingUserIntroModal from '@givewp/campaigns/admin/components/ExistingUserIntroModal'; import {getCampaignOptionsWindowData} from '@givewp/campaigns/utils'; import {useCampaignNoticeHook} from '@givewp/campaigns/hooks'; import CampaignNotice from '@givewp/campaigns/admin/components/CampaignDetailsPage/Components/Notices/CampaignNotice'; declare const window: { GiveCampaignsListTable: GiveCampaignsListTable; } & Window; /** * Auto open modal if the URL has the query parameter id as new * * @since 4.0.0 */ const autoOpenCreateCampaignModal = () => { const queryParams = new URLSearchParams(window.location.search); const newParam = queryParams.get('new'); return newParam === 'campaign'; }; const shouldShowExistingUserIntroModal = getCampaignOptionsWindowData().admin.showExistingUserIntroNotice; export function getGiveCampaignsListTableWindowData() { return window.GiveCampaignsListTable; } const API = new ListTableApi(getGiveCampaignsListTableWindowData()); const campaignStatus = [ { value: 'any', text: __('All Status', 'give'), }, { value: 'active', text: __('Active', 'give'), }, { value: 'inactive', text: __('Archived', 'give'), }, ]; const filters: Array = [ { name: 'status', type: 'select', text: __('status', 'give'), ariaLabel: __('Filter campaign by status', 'give'), options: campaignStatus, }, { name: 'search', type: 'search', text: __('Search by name or ID', 'give'), ariaLabel: __('Search donation forms', 'give'), }, ]; const bulkActions: Array = [ { label: __('Merge', 'give'), value: 'merge', type: 'custom', confirm: (selected, names, isOpen, setOpen) => { return ( ); }, }, ]; export default function CampaignsListTable() { const [isCreateCampaignModalOpen, setCreateCampaignModalOpen] = useState(autoOpenCreateCampaignModal()); const [isExistingUserIntroModalOpen, setExistingUserIntroModalOpen] = useState( shouldShowExistingUserIntroModal ); const [showTooltip, dismissTooltip] = useCampaignNoticeHook('givewp_campaign_listtable_notice'); /** * Displays a blank slate for the Campaigns table. * * @since 4.0.0 */ const ListTableBlankSlate = () => { const imagePath = `${ getGiveCampaignsListTableWindowData().pluginUrl }build/assets/dist/images/list-table/blank-slate-campaigns-icon.svg`; return (
{__('No

{__('No campaign created yet', 'give')}

{__('Don’t worry, let’s help you set up your first campaign.', 'give')}

setCreateCampaignModalOpen(true)} className={`button button-primary ${styles.button}`} > {__('Create campaign', 'give')}

); }; return ( <> {!isExistingUserIntroModalOpen && showTooltip && ( )} ); }