fix: prevent modal from showing unexpectedly and fix inline actions

Remove duplicate inline actions from Forms page title column to prevent
conflicts with DataTable's built-in actions column.

Fix DataTable actions column:
- Only show delete/duplicate on hover using CSS
- Add proper event propagation handling (stopPropagation)
- Remove unnecessary wrapper div that was causing issues

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
dwindown
2026-04-18 17:28:49 +07:00
parent bb74df4d6b
commit 83b7294fa4
11 changed files with 90 additions and 92 deletions

View File

@@ -185,34 +185,34 @@ class Customer {
// Assets now handled by ReactAdmin class
return;
$customer_id = intval(filter_input(INPUT_GET, 'customer_id', FILTER_SANITIZE_STRING));
if(empty($customer_id)){
wp_enqueue_style( 'page-customers', FORMIPAY_URL . 'admin/assets/css/admin-customers.css', [], FORMIPAY_VERSION, 'all' );
wp_enqueue_script( 'page-customers', FORMIPAY_URL . 'admin/assets/js/admin-customers.js', ['jquery', 'gridjs'], FORMIPAY_VERSION, true );
}else{
wp_enqueue_style( 'bootstrap-icon', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap-icons.css', [], '1.11.1', 'all');
wp_enqueue_style( 'bootstrap', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap.min.css', [], '5.3.2' );
wp_enqueue_style( 'page-customers', FORMIPAY_URL . 'admin/assets/css/admin-customer-details.css', [], FORMIPAY_VERSION, 'all' );
wp_enqueue_script( 'handlebars', FORMIPAY_URL . 'vendor/HandleBars/handlebars.min.js', [], '4.7.7', true);
wp_enqueue_script( 'bootstrap', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap.bundle.min.js', ['jquery'], '5.3.2', true );
wp_enqueue_script( 'page-customers', FORMIPAY_URL . 'admin/assets/js/admin-customer-details.js', ['jquery'], FORMIPAY_VERSION, true );
}
// $customer_id = intval(filter_input(INPUT_GET, 'customer_id', FILTER_SANITIZE_STRING));
// if(empty($customer_id)){
// wp_enqueue_style( 'page-customers', FORMIPAY_URL . 'admin/assets/css/admin-customers.css', [], FORMIPAY_VERSION, 'all' );
// wp_enqueue_script( 'page-customers', FORMIPAY_URL . 'admin/assets/js/admin-customers.js', ['jquery', 'gridjs'], FORMIPAY_VERSION, true );
// }else{
// wp_enqueue_style( 'bootstrap-icon', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap-icons.css', [], '1.11.1', 'all');
// wp_enqueue_style( 'bootstrap', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap.min.css', [], '5.3.2' );
// wp_enqueue_style( 'page-customers', FORMIPAY_URL . 'admin/assets/css/admin-customer-details.css', [], FORMIPAY_VERSION, 'all' );
// wp_enqueue_script( 'handlebars', FORMIPAY_URL . 'vendor/HandleBars/handlebars.min.js', [], '4.7.7', true);
// wp_enqueue_script( 'bootstrap', FORMIPAY_URL . 'vendor/Bootstrap/bootstrap.bundle.min.js', ['jquery'], '5.3.2', true );
// wp_enqueue_script( 'page-customers', FORMIPAY_URL . 'admin/assets/js/admin-customer-details.js', ['jquery'], FORMIPAY_VERSION, true );
// }
wp_localize_script( 'page-customers', 'formipay_customers_page', [
'ajax_url' => admin_url('admin-ajax.php'),
'site_url' => site_url(),
'customer_id' => $customer_id,
'nonce' => wp_create_nonce( 'formipay-admin-access-nonce' ),
'columns' => [
'id' => esc_html__( 'ID', 'formipay' ),
'name' => esc_html__( 'Name', 'formipay' ),
'email' => esc_html__( 'Email', 'formipay' ),
'phone' => esc_html__( 'Phone', 'formipay' ),
'total_order' => esc_html__( 'Total Order', 'formipay' ),
]
] );
// wp_localize_script( 'page-customers', 'formipay_customers_page', [
// 'ajax_url' => admin_url('admin-ajax.php'),
// 'site_url' => site_url(),
// 'customer_id' => $customer_id,
// 'nonce' => wp_create_nonce( 'formipay-admin-access-nonce' ),
// 'columns' => [
// 'id' => esc_html__( 'ID', 'formipay' ),
// 'name' => esc_html__( 'Name', 'formipay' ),
// 'email' => esc_html__( 'Email', 'formipay' ),
// 'phone' => esc_html__( 'Phone', 'formipay' ),
// 'total_order' => esc_html__( 'Total Order', 'formipay' ),
// ]
// ] );
}
// }
}

View File

@@ -78,46 +78,46 @@ class License {
public function enqueue() {
// Assets now handled by ReactAdmin class
return;
wp_enqueue_style('page-licenses', FORMIPAY_URL . 'admin/assets/css/admin-licenses.css', [], FORMIPAY_VERSION, 'all');
wp_enqueue_script('page-licenses', FORMIPAY_URL . 'admin/assets/js/admin-licenses.js', ['jquery', 'gridjs'], FORMIPAY_VERSION, true);
wp_localize_script('page-licenses', 'formipay_licenses_page', [
'ajax_url' => admin_url('admin-ajax.php'),
'site_url' => site_url(),
'columns' => [
'id' => __('ID','formipay'),
'product' => __('Product','formipay'),
'order' => __('Order','formipay'),
'email' => __('Email','formipay'),
'key' => __('Key','formipay'),
'status' => __('Status','formipay'),
'expiry' => __('Expiry','formipay'),
'date' => __('Date','formipay'),
],
'filter_form' => [
'products' => [
'placeholder' => __('Filter by Product','formipay'),
'noresult_text' => __('No results found','formipay')
],
'status' => [
'placeholder' => __('Filter by Status','formipay'),
'noresult_text' => __('No results found','formipay')
]
],
'modal' => [
'delete' => [
'question' => __('Do you want to delete the license?','formipay'),
'cancelButton' => __('Cancel','formipay'),
'confirmButton' => __('Delete Permanently','formipay')
],
'bulk_delete' => [
'question' => __('Do you want to delete the selected license(s)?','formipay'),
'cancelButton' => __('Cancel','formipay'),
'confirmButton' => __('Confirm','formipay')
],
],
'nonce' => wp_create_nonce('formipay-admin-licenses')
]);
}
// wp_enqueue_style('page-licenses', FORMIPAY_URL . 'admin/assets/css/admin-licenses.css', [], FORMIPAY_VERSION, 'all');
// wp_enqueue_script('page-licenses', FORMIPAY_URL . 'admin/assets/js/admin-licenses.js', ['jquery', 'gridjs'], FORMIPAY_VERSION, true);
// wp_localize_script('page-licenses', 'formipay_licenses_page', [
// 'ajax_url' => admin_url('admin-ajax.php'),
// 'site_url' => site_url(),
// 'columns' => [
// 'id' => __('ID','formipay'),
// 'product' => __('Product','formipay'),
// 'order' => __('Order','formipay'),
// 'email' => __('Email','formipay'),
// 'key' => __('Key','formipay'),
// 'status' => __('Status','formipay'),
// 'expiry' => __('Expiry','formipay'),
// 'date' => __('Date','formipay'),
// ],
// 'filter_form' => [
// 'products' => [
// 'placeholder' => __('Filter by Product','formipay'),
// 'noresult_text' => __('No results found','formipay')
// ],
// 'status' => [
// 'placeholder' => __('Filter by Status','formipay'),
// 'noresult_text' => __('No results found','formipay')
// ]
// ],
// 'modal' => [
// 'delete' => [
// 'question' => __('Do you want to delete the license?','formipay'),
// 'cancelButton' => __('Cancel','formipay'),
// 'confirmButton' => __('Delete Permanently','formipay')
// ],
// 'bulk_delete' => [
// 'question' => __('Do you want to delete the selected license(s)?','formipay'),
// 'cancelButton' => __('Cancel','formipay'),
// 'confirmButton' => __('Confirm','formipay')
// ],
// ],
// 'nonce' => wp_create_nonce('formipay-admin-licenses')
// ]);
// }
}
/** GridJS data source */

View File

@@ -655,6 +655,7 @@ class Order {
public function enqueue() {
// Assets now handled by ReactAdmin class
return;
}
public function formipay_get_all_forms() {