fix: replace all native confirm() dialogs with styled modal macros
Some checks failed
CI / ruff (push) Successful in 9s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled

Migrated ~68 native browser confirm() calls across 74 files to use the
project's confirm_modal/confirm_modal_dynamic Jinja2 macros, providing
consistent styled confirmation dialogs instead of plain browser popups.

Modules updated: core, tenancy, cms, marketplace, messaging, billing,
customers, orders, cart. Uses danger/warning/info variants and
double-confirm pattern for destructive delete operations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-19 16:56:25 +01:00
parent 182610283d
commit 167bb50f4f
74 changed files with 939 additions and 436 deletions

View File

@@ -52,6 +52,10 @@ function adminCustomers() {
// Selected store (for prominent display and filtering)
selectedStore: null,
// Toggle status confirm state
showToggleStatusConfirm: false,
pendingToggleCustomer: null,
// Tom Select instance
storeSelectInstance: null,
@@ -351,11 +355,6 @@ function adminCustomers() {
* Toggle customer active status
*/
async toggleStatus(customer) {
const action = customer.is_active ? 'deactivate' : 'activate';
if (!confirm(`Are you sure you want to ${action} this customer?`)) {
return;
}
try {
const response = await apiClient.patch(`/admin/customers/${customer.id}/toggle-status`);
customer.is_active = response.is_active;

View File

@@ -4,6 +4,7 @@
{% from 'shared/macros/alerts.html' import loading_state, error_state %}
{% from 'shared/macros/tables.html' import table_wrapper, table_header %}
{% from 'shared/macros/pagination.html' import pagination %}
{% from 'shared/macros/modals.html' import confirm_modal_dynamic %}
{% block title %}Customers{% endblock %}
@@ -278,7 +279,7 @@
<td class="px-4 py-3">
<div class="flex items-center space-x-2 text-sm">
<button
@click="toggleStatus(customer)"
@click="pendingToggleCustomer = customer; showToggleStatusConfirm = true"
class="px-2 py-1 text-xs font-medium leading-5 rounded-lg"
:class="customer.is_active
? 'text-red-600 hover:bg-red-100 dark:text-red-400 dark:hover:bg-red-700/50'
@@ -298,6 +299,9 @@
<!-- Pagination -->
{{ pagination() }}
</div>
<!-- Toggle Customer Status Confirm Modal -->
{{ confirm_modal_dynamic('toggleStatusConfirm', 'Change Customer Status', "'Are you sure you want to ' + (pendingToggleCustomer?.is_active ? 'deactivate' : 'activate') + ' this customer?'", 'toggleStatus(pendingToggleCustomer)', 'showToggleStatusConfirm', 'Confirm', 'Cancel', 'warning') }}
{% endblock %}
{% block extra_scripts %}