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

@@ -16,6 +16,10 @@ function adminMerchantDetail() {
error: null,
merchantId: null,
// Modal state
showDeleteMerchantModal: false,
showDeleteMerchantFinalModal: false,
// Subscription state
platforms: [],
subscriptions: [],
@@ -239,8 +243,8 @@ function adminMerchantDetail() {
return formatted;
},
// Delete merchant
async deleteMerchant() {
// Prompt delete merchant (first step of double confirm)
promptDeleteMerchant() {
merchantDetailLog.info('Delete merchant requested:', this.merchantId);
if (this.merchant?.store_count > 0) {
@@ -248,17 +252,16 @@ function adminMerchantDetail() {
return;
}
if (!confirm(`Are you sure you want to delete merchant "${this.merchant.name}"?\n\nThis action cannot be undone.`)) {
merchantDetailLog.info('Delete cancelled by user');
return;
}
this.showDeleteMerchantModal = true;
},
// Second confirmation for safety
if (!confirm(`FINAL CONFIRMATION\n\nAre you absolutely sure you want to delete "${this.merchant.name}"?`)) {
merchantDetailLog.info('Delete cancelled by user (second confirmation)');
return;
}
// Confirm first step, show final confirmation
confirmDeleteMerchantStep() {
this.showDeleteMerchantFinalModal = true;
},
// Delete merchant
async deleteMerchant() {
try {
const url = `/admin/merchants/${this.merchantId}?confirm=true`;
window.LogConfig.logApiCall('DELETE', url, null, 'request');