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)