/**
* Forms Page - Form management with full table features
*/
import { __ } from '@wordpress/i18n';
import DataTable from '../components/shared/DataTable';
// SweetAlert2 is loaded via WordPress (global scope)
const Swal = window.Swal;
export default function FormsPage() {
const ajaxUrl = window.formipayAdmin?.ajaxUrl || '/wp-admin/admin-ajax.php';
const nonce = window.formipayAdmin?.nonce || '';
const handleDelete = async (id) => {
const result = await Swal.fire({
icon: 'info',
html: __('Do you want to delete this item?', 'formipay'),
showCancelButton: true,
confirmButtonText: __('Delete Permanently', 'formipay'),
cancelButtonText: __('Cancel', 'formipay'),
});
if (result.isConfirmed) {
await fetch(`${ajaxUrl}?action=formipay-delete-form`, {
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
id,
_wpnonce: nonce,
}),
});
window.location.reload();
}
};
const handleDuplicate = async (id) => {
const result = await Swal.fire({
icon: 'info',
html: __('Do you want to duplicate this item?', 'formipay'),
showCancelButton: true,
confirmButtonText: __('Confirm', 'formipay'),
cancelButtonText: __('Cancel', 'formipay'),
});
if (result.isConfirmed) {
await fetch(`${ajaxUrl}?action=formipay-duplicate-form`, {
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
id,
_wpnonce: nonce,
}),
});
window.location.reload();
}
};
const columns = [
{
key: 'ID',
label: __('ID', 'formipay'),
render: (row) => #{row.ID}
},
{
key: 'title',
label: __('Title', 'formipay'),
render: (row) => (
<>
{row.title}
{__('edit', 'formipay')}
{' | '}
{' | '}
>
)
},
{
key: 'date',
label: __('Date', 'formipay'),
render: (row) => {
const date = new Date(row.date);
return (
{date.toLocaleDateString()}
{date.toLocaleTimeString()}
);
}
},
{
key: 'status',
label: __('Status', 'formipay'),
render: (row) => {
const status = row.post_status || row.status || 'unknown';
const statusLabels = {
publish: __('Published', 'formipay'),
draft: __('Draft', 'formipay'),
pending: __('Pending', 'formipay'),
};
return (
{statusLabels[status] || status}
);
}
},
{
key: 'shortcode',
label: __('Shortcode', 'formipay'),
render: (row) => (
<>
>
)
},
];
return (
);
}