diff --git a/MoneyMap/Pages/CategoryMappings.cshtml b/MoneyMap/Pages/CategoryMappings.cshtml
index ec891f4..a975a1f 100644
--- a/MoneyMap/Pages/CategoryMappings.cshtml
+++ b/MoneyMap/Pages/CategoryMappings.cshtml
@@ -157,20 +157,25 @@ else
-
-
-
-
+
+
+
Select existing or type new category name
@@ -212,20 +217,13 @@ else
@@ -326,67 +324,7 @@ else
}
}
- // Category dropdown functionality
- function setupCategoryDropdown(inputId, dropdownId) {
- const input = document.getElementById(inputId);
- const dropdown = document.getElementById(dropdownId);
-
- if (!input || !dropdown) return;
-
- const dropdownItems = dropdown.querySelectorAll('.dropdown-item');
-
- // Show dropdown on focus/click
- input.addEventListener('focus', function() {
- filterDropdown('');
- dropdown.classList.add('show');
- });
-
- input.addEventListener('click', function() {
- filterDropdown('');
- dropdown.classList.add('show');
- });
-
- // Filter dropdown as user types
- input.addEventListener('input', function() {
- filterDropdown(this.value);
- dropdown.classList.add('show');
- });
-
- // Select category from dropdown
- dropdownItems.forEach(item => {
- item.addEventListener('click', function(e) {
- e.preventDefault();
- e.stopPropagation();
- const category = this.getAttribute('data-category');
- input.value = category;
- dropdown.classList.remove('show');
- });
- });
-
- // Close dropdown when clicking outside
- document.addEventListener('click', function(e) {
- if (!input.contains(e.target) && !dropdown.contains(e.target)) {
- dropdown.classList.remove('show');
- }
- });
-
- // Filter dropdown items based on search text
- function filterDropdown(searchText) {
- const search = searchText.toLowerCase();
- dropdownItems.forEach(item => {
- const category = item.getAttribute('data-category').toLowerCase();
- if (category.includes(search)) {
- item.style.display = '';
- } else {
- item.style.display = 'none';
- }
- });
- }
- }
-
document.addEventListener('DOMContentLoaded', function() {
- setupCategoryDropdown('addCategory', 'addCategoryDropdown');
- setupCategoryDropdown('editCategory', 'editCategoryDropdown');
// Debug: Log form values before submission
var addForm = document.querySelector('#addModal form');
diff --git a/MoneyMap/Pages/CategoryMappings.cshtml.cs b/MoneyMap/Pages/CategoryMappings.cshtml.cs
index 79cc612..3bf5136 100644
--- a/MoneyMap/Pages/CategoryMappings.cshtml.cs
+++ b/MoneyMap/Pages/CategoryMappings.cshtml.cs
@@ -29,6 +29,8 @@ namespace MoneyMap.Pages
public List
CategoryGroups { get; set; } = new();
public int TotalMappings { get; set; }
public int TotalCategories { get; set; }
+ public List AvailableCategories { get; set; } = new();
+ public List AvailableMerchants { get; set; } = new();
[TempData]
public string? SuccessMessage { get; set; }
@@ -251,6 +253,18 @@ namespace MoneyMap.Pages
TotalMappings = mappings.Count;
TotalCategories = CategoryGroups.Count;
+
+ // Get distinct categories for dropdown
+ AvailableCategories = CategoryGroups
+ .Select(g => g.Category)
+ .OrderBy(c => c)
+ .ToList();
+
+ // Get all merchants for dropdown
+ AvailableMerchants = await _db.Merchants
+ .OrderBy(m => m.Name)
+ .Select(m => m.Name)
+ .ToListAsync();
}
public class CategoryGroup