/** * Search Dropdown & Add Product Fix * ================================= * 1. Khôi phục dropdown kết quả khi tìm kiếm thường * 2. Khôi phục nút "Thêm sản phẩm" mở modal */ (function() { 'use strict'; // === PATCH doSearch() để hiện dropdown === // Ghi đè hàm doSearch gốc var originalDoSearch = window.doSearch; window.doSearch = function() { var input = document.getElementById('q'); var sidebar = document.getElementById('sidebar'); var grid = document.getElementById('grid'); // Ẩn sidebar khi search if (sidebar) sidebar.style.display = 'none'; // Tạo dropdown nếu chưa có var dropdown = document.getElementById('searchDropdown'); if (!dropdown) { dropdown = document.createElement('div'); dropdown.id = 'searchDropdown'; dropdown.style.cssText = 'position:absolute;z-index:100;top:100%;left:0;right:0;background:#fff;border:1px solid #e2e8f0;border-radius:10px;max-height:400px;overflow-y:auto;box-shadow:0 4px 16px rgba(0,0,0,0.1);margin-top:5px'; input.parentNode.appendChild(dropdown); } var query = (input.value || '').trim(); if (!query || query.length < 2) { dropdown.innerHTML = ''; dropdown.style.display = 'none'; if (originalDoSearch) originalDoSearch(); return; } // Tìm kiếm trong dữ liệu var D = window.D || []; var results = []; var qNorm = query.toLowerCase().normalize('NFD').replace(/[̀-ͯ]/g, '').replace(/đ/g, 'd'); for (var i = 0; i < D.length && results.length < 10; i++) { var p = D[i]; var name = (p.name || '').toLowerCase(); var sku = (p.sku || '').toLowerCase(); var model = (p.sku || p.mod || ''); if (name.indexOf(qNorm) !== -1 || sku.indexOf(qNorm) !== -1) { results.push(p); } } if (results.length === 0) { dropdown.innerHTML = '
Không tìm thấy sản phẩm
'; dropdown.style.display = 'block'; return; } // Render dropdown results dropdown.innerHTML = results.map(function(p, i) { var idx = window.D.indexOf(p); var brandColor = p.brand === 'Eurogold' ? '#c8102c' : (p.brand === 'Grob' ? '#2e7d32' : '#003f62'); return '
' + '' + '
' + p.name + '
' + '
' + model + ' ' + (p.price ? ' — ' + p.price : '') + '
' + '
'; }).join(''); dropdown.style.display = 'block'; // Bind click to show detail setTimeout(function() { dropdown.querySelectorAll('[data-idx]').forEach(function(el) { el.onclick = function() { var idx = parseInt(this.getAttribute('data-idx')); showDetail(idx); dropdown.innerHTML = ''; dropdown.style.display = 'none'; input.value = ''; }; }); }, 100); }; // Ẩn dropdown khi click ngoài document.addEventListener('click', function(e) { var dropdown = document.getElementById('searchDropdown'); var input = document.getElementById('q'); if (dropdown && input && !input.contains(e.target) && !dropdown.contains(e.target)) { dropdown.innerHTML = ''; dropdown.style.display = 'none'; } }); // === THÊM NÚT "THÊM SẢN PHẨM" === // Kiểm tra nút đã tồn tại chưa function addAddProductButton() { var existing = document.getElementById('addProductQuickBtn'); if (existing) return; // Tạo nút var btn = document.createElement('button'); btn.id = 'addProductQuickBtn'; btn.innerHTML = ' Thêm sản phẩm'; btn.style.cssText = 'padding:8px 16px;background:#003f62;color:#fff;border:none;border-radius:8px;font-size:.8rem;cursor:pointer;margin-left:10px'; btn.onclick = function() { // Mở modal thêm sản phẩm var modal = document.getElementById('addProductOverlay'); if (modal) { modal.classList.add('open'); modal.style.display = 'flex'; } }; // Thêm vào header var navIcons = document.querySelector('.nav-icons'); if (navIcons) { navIcons.insertBefore(btn, navIcons.firstChild); } console.log('[Search Fix] Added "Thêm sản phẩm" button'); } // Chờ DOM sẵn sàng setTimeout(addAddProductButton, 2000); console.log('[Search Dropdown Fix] Loaded'); })();