index.tsx
48 lines
| 1 | import {useState} from 'react'; |
| 2 | import {__} from '@wordpress/i18n'; |
| 3 | import styles from './CreateCampaignModal.module.scss'; |
| 4 | import CampaignFormModal from '../CampaignFormModal'; |
| 5 | import {getGiveCampaignsListTableWindowData} from '../CampaignsListTable'; |
| 6 | |
| 7 | /** |
| 8 | * Create Campaign Modal component |
| 9 | * |
| 10 | * @since 4.0.0 |
| 11 | */ |
| 12 | export default function CreateCampaignModal({isOpen, setOpen}) { |
| 13 | |
| 14 | const openModal = () => setOpen(true); |
| 15 | const closeModal = (response: ResponseProps = {}) => { |
| 16 | setOpen(false); |
| 17 | |
| 18 | if (response?.id) { |
| 19 | window.location.href = |
| 20 | getGiveCampaignsListTableWindowData().adminUrl + |
| 21 | 'edit.php?post_type=give_forms&page=give-campaigns&id=' + |
| 22 | response?.id; |
| 23 | } |
| 24 | }; |
| 25 | |
| 26 | const apiSettings = getGiveCampaignsListTableWindowData(); |
| 27 | // Remove the /list-table from the apiRoot. This is a hack to make the API work while we don't refactor other list tables. |
| 28 | apiSettings.apiRoot = apiSettings.apiRoot.replace('/list-table', ''); |
| 29 | |
| 30 | return ( |
| 31 | <> |
| 32 | <a style={{borderRadius: '4px'}} className={`button button-primary ${styles.createCampaignButton}`} onClick={openModal}> |
| 33 | {__('Create campaign', 'give')} |
| 34 | </a> |
| 35 | <CampaignFormModal |
| 36 | isOpen={isOpen} |
| 37 | handleClose={closeModal} |
| 38 | title={__('Create your campaign', 'give')} |
| 39 | apiSettings={apiSettings} |
| 40 | /> |
| 41 | </> |
| 42 | ); |
| 43 | } |
| 44 | |
| 45 | type ResponseProps = { |
| 46 | id?: string; |
| 47 | }; |
| 48 |