From d9bd488f2abce5b0ccce35bb34cc2c9631117abe Mon Sep 17 00:00:00 2001 From: Srinivas-Saravanan Date: Tue, 25 Feb 2025 14:55:33 +0530 Subject: [PATCH] FIX_POLICY_TRANSACTION_INCEPTION_EDIT/DELETE_SRI --- .../policy_transaction_inception_list.php | 135 +++++++++--------- 1 file changed, 70 insertions(+), 65 deletions(-) diff --git a/app/Views/policy_transaction_inception_list.php b/app/Views/policy_transaction_inception_list.php index 6509a81f..173a128a 100644 --- a/app/Views/policy_transaction_inception_list.php +++ b/app/Views/policy_transaction_inception_list.php @@ -319,7 +319,7 @@ table.dataTable tbody td { Edit - + Delete @@ -370,25 +370,25 @@ table.dataTable tbody td { document.addEventListener("DOMContentLoaded", function () { const table = document.getElementById("tickets-table"); - // Create custom dropdown function createCustomDropdown(row) { - // Get the original dropdown items const originalDropdown = row.querySelector('.dropdown-menu'); if (!originalDropdown) return null; - // Create new dropdown with proper background and spacing const customDropdown = document.createElement('div'); customDropdown.className = 'custom-dropdown-menu'; - // Copy inner content while maintaining icon alignment - customDropdown.innerHTML = originalDropdown.innerHTML; + const items = originalDropdown.querySelectorAll('.dropdown-item'); + items.forEach(item => { + const newItem = item.cloneNode(true); + newItem.removeAttribute('onclick'); + customDropdown.appendChild(newItem); + }); return customDropdown; } let activeDropdown = null; - // Add click event listener to rows table.querySelectorAll("tbody tr").forEach(row => { const customDropdown = createCustomDropdown(row); if (!customDropdown) return; @@ -401,51 +401,56 @@ document.addEventListener("DOMContentLoaded", function () { return; } - // Hide any active dropdown - if (activeDropdown) { + // Close any existing dropdown + if (activeDropdown && activeDropdown !== customDropdown) { activeDropdown.style.display = 'none'; } - // Get click position const rect = event.target.getBoundingClientRect(); - // Position the dropdown with some offset customDropdown.style.display = 'block'; customDropdown.style.position = 'fixed'; customDropdown.style.left = `${rect.left}px`; - customDropdown.style.top = `${rect.bottom + 5}px`; // Add 5px gap + customDropdown.style.top = `${rect.bottom + 5}px`; - // Set as active dropdown activeDropdown = customDropdown; - event.stopPropagation(); }); - // Preserve click handlers and add auto-close + // Handle clicks on dropdown items customDropdown.querySelectorAll('.dropdown-item').forEach(item => { item.addEventListener('click', function(e) { - const onclickAttr = this.getAttribute('onclick'); - if (onclickAttr) { - eval(onclickAttr); - } + e.preventDefault(); + e.stopPropagation(); + + const id = this.getAttribute('data-id'); - const href = this.getAttribute('href'); - if (href && href !== '#') { - window.location.href = href; + // Handle edit button + if (this.classList.contains('btnEdit') && id) { + getPolicyTransactionDataForEdit(id); + } + // Handle delete button + else if (this.classList.contains('delete') && id) { + removePolicyTransaction(this, id); + } + // Handle other links + else { + const href = this.getAttribute('href'); + if (href && href !== '#' && href !== 'javascript: void(0);') { + window.location.href = href; + } } - // Close the dropdown after handling the click + // Close dropdown if (activeDropdown) { activeDropdown.style.display = 'none'; activeDropdown = null; } - - e.stopPropagation(); - }); + }, { once: true }); }); }); - // Close dropdown when clicking outside + // Close dropdown on outside click document.addEventListener("click", function() { if (activeDropdown) { activeDropdown.style.display = 'none'; @@ -1486,7 +1491,7 @@ function onlyNumbers(event)