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

@@ -1,5 +1,6 @@
{# app/modules/billing/templates/billing/merchant/subscription-detail.html #}
{% extends "merchant/base.html" %}
{% from 'shared/macros/modals.html' import confirm_modal %}
{% block title %}Subscription Details{% endblock %}
@@ -119,7 +120,7 @@
<span class="inline-block mt-3 px-3 py-1 text-xs font-semibold text-purple-700 dark:text-purple-400 bg-purple-100 dark:bg-purple-900/30 rounded-full">Current Plan</span>
</template>
<template x-if="!t.is_current">
<button @click="changeTier(t.code)"
<button @click="pendingTierCode = t.code; showChangeTierConfirm = true"
:disabled="changingTier"
class="mt-3 inline-flex items-center px-4 py-2 text-sm font-medium text-white rounded-lg transition-colors disabled:opacity-50"
:class="t.can_upgrade ? 'bg-purple-600 hover:bg-purple-700' : 'bg-gray-600 hover:bg-gray-700'"
@@ -133,6 +134,9 @@
</div>
</div>
<!-- Change Tier Confirm Modal -->
{{ confirm_modal('changeTierConfirm', 'Change Plan', 'Are you sure you want to change your plan to this tier? Your billing will be adjusted accordingly.', 'changeTier(pendingTierCode)', 'showChangeTierConfirm', 'Change Plan', 'Cancel', 'warning') }}
{% endblock %}
{% block extra_scripts %}
@@ -145,6 +149,8 @@ function merchantSubscriptionDetail() {
subscription: null,
availableTiers: [],
changingTier: false,
showChangeTierConfirm: false,
pendingTierCode: null,
init() {
this.loadSubscription();
@@ -182,8 +188,6 @@ function merchantSubscriptionDetail() {
},
async changeTier(tierCode) {
if (!confirm(`Are you sure you want to change your plan to this tier?`)) return;
this.changingTier = true;
this.error = null;
this.successMessage = null;

View File

@@ -1,7 +1,7 @@
{# app/templates/store/billing.html #}
{% extends "store/base.html" %}
{% from 'shared/macros/headers.html' import page_header %}
{% from 'shared/macros/modals.html' import modal_simple %}
{% from 'shared/macros/modals.html' import modal_simple, confirm_modal_dynamic %}
{% block title %}Billing & Subscription{% endblock %}
@@ -308,7 +308,7 @@
<span x-text="addon.period_end ? `Renews ${formatDate(addon.period_end)}` : 'Active'"></span>
</p>
</div>
<button @click="cancelAddon(addon)"
<button @click="pendingCancelAddon = addon; showCancelAddonConfirm = true"
class="px-3 py-1 text-sm font-medium text-red-600 bg-red-100 rounded-lg hover:bg-red-200 dark:bg-red-900/50 dark:text-red-400">
Cancel
</button>
@@ -355,6 +355,9 @@
</div>
</div>
<!-- Cancel Add-on Confirm Modal -->
{{ confirm_modal_dynamic('cancelAddonConfirm', 'Cancel Add-on', "'Are you sure you want to cancel ' + (pendingCancelAddon?.addon_name || 'this add-on') + '?'", 'cancelAddon(pendingCancelAddon)', 'showCancelAddonConfirm', 'Cancel Add-on', 'Keep', 'danger') }}
<!-- Cancel Subscription Modal -->
<div x-show="showCancelModal"
x-transition:enter="transition ease-out duration-150"