PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.10.0
GiveWP – Donation Plugin and Fundraising Platform v4.10.0
4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 All 253 releases
give / src / EventTickets / resources / admin / components / EventTicketsListTable / index.tsx
index.tsx
106 lines 3.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import {__} from '@wordpress/i18n';
2 import {ListTablePage} from '@givewp/components';
3 import ListTableApi from '@givewp/components/ListTable/api';
4 import {BulkActionsConfig, FilterConfig} from '@givewp/components/ListTable/ListTablePage';
5 import {IdBadge} from '@givewp/components/ListTable/TableCell';
6 import {Interweave} from 'interweave';
7 import {EventTicketsRowActions} from './EventTicketsRowActions';
8 import styles from './EventTicketsListTable.module.scss';
9 import {GiveEventTickets} from './types';
10 import CreateEventModal from '../CreateEventModal';
11 import Feedback from '../../feedback';
12
13 declare global {
14 interface Window {
15 GiveEventTickets: GiveEventTickets;
16 }
17 }
18
19 const API = new ListTableApi(window.GiveEventTickets);
20
21 const filters: Array<FilterConfig> = [
22 {
23 name: 'search',
24 type: 'search',
25 inlineSize: '14rem',
26 text: __('Search by keyword', 'give'),
27 ariaLabel: __('search events', 'give'),
28 },
29 ];
30
31 const bulkActions: Array<BulkActionsConfig> = [
32 {
33 label: __('Delete', 'give'),
34 value: 'delete',
35 type: 'danger',
36 action: async (selected) => {
37 return await API.fetchWithArgs('', {ids: selected.join(',')}, 'DELETE');
38 },
39 confirm: (selected, names) => (
40 <>
41 <p>{__('Really delete the following events?', 'give')}</p>
42 <ul role="document" tabIndex={0}>
43 {selected.map((eventId, index) => (
44 <li key={eventId}>
45 <IdBadge id={eventId} />{' '}
46 <span>
47 {__('from ', 'give')} <Interweave content={names[index]} />
48 </span>
49 </li>
50 ))}
51 </ul>
52 </>
53 ),
54 },
55 ];
56
57 /**
58 * Displays a blank slate for the EventTickets table.
59 *
60 * @since 3.6.0
61 */
62 const ListTableBlankSlate = () => {
63 const imagePath = `${window.GiveEventTickets.pluginUrl}build/assets/dist/images/list-table/blank-slate-events-icon.svg`;
64 return (
65 <div className={styles.container}>
66 <img src={imagePath} alt={__('No event created yet', 'give')} />
67 <h3>{__('No event created yet', 'give')}</h3>
68 <p className={styles.helpMessage}>{__('Don’t worry, let’s help you setup your first event.', 'give')}</p>
69 <p>
70 <a
71 href={`${window.GiveEventTickets.adminUrl}edit.php?post_type=give_forms&page=give-event-tickets&new=event`}
72 className={`button button-primary ${styles.button}`}
73 >
74 {__('Create event', 'give')}
75 </a>
76 </p>
77 </div>
78 );
79 };
80
81 /**
82 * EventTicketsListTable
83 *
84 * @since 3.20.0 Add wrapper class for the EventTicketsListTable
85 * @since 3.6.0
86 */
87 export default function EventTicketsListTable() {
88 return (
89 <div className={styles.listTable}>
90 <Feedback />
91 <ListTablePage
92 title={__('Events', 'give')}
93 singleName={__('event', 'give')}
94 pluralName={__('events', 'give')}
95 apiSettings={window.GiveEventTickets}
96 filterSettings={filters}
97 bulkActions={bulkActions}
98 rowActions={EventTicketsRowActions}
99 listTableBlankSlate={ListTableBlankSlate()}
100 >
101 <CreateEventModal />
102 </ListTablePage>
103 </div>
104 );
105 }
106