Files
2026-07-12 10:17:17 -04:00

1.6 KiB

ShopProQuote Modal Click-Outside Behavior

Default pattern (to REMOVE)

ShopProQuote modals use this pattern to close on outside click:

// Close on outside click
modal.addEventListener('click', (e) => {
    if (e.target === modal) {
        modal.classList.add('hidden');  // or closeModal() or modal.remove()
    }
});

Or for confirm dialogs in shared/modal-manager.js:

overlay.onclick = (e) => { if (e.target === overlay) { overlay.remove(); resolve(false); } };

Finding all instances

grep -rn "e\.target\s*===.*modal\|e\.target\s*===.*overlay" /mnt/seagate8tb/Websites/ShopProQuote/

Locations (as of June 2026)

File Context
quote-tab-manager.js:1379 Service edit modal — modal.classList.add('hidden')
quote-tab-manager.js:1680 Parts availability modal — closeModal()
shared/customer-lookup.js:253 Customer lookup modal — modal.remove()
settings.js:315 Site settings modal — closeModal()
shared/modal-manager.js:328 Confirm dialog overlay — overlay.remove(); resolve(false)

Fix

Remove the entire modal.addEventListener('click', ...) block (or overlay.onclick = ... line) and replace with a comment:

// Click-outside-to-close disabled per user preference: only close via save or close button

What NOT to touch

Dropdown menus (ui.js, dashboard.js, repair-orders.js, financial-dashboard.js, shared/customer-lookup.js search results) — these use the same pattern but closing on outside click is expected UX for dropdowns. Only disable for modal dialogs.