diff --git a/public/app.js b/public/app.js index f7a95cf..d2bb473 100644 --- a/public/app.js +++ b/public/app.js @@ -479,21 +479,26 @@ async function selectTable(schema, tableName) { // ✅ Проверяем - загружены ли все значения const allLoaded = values.length >= total; - // ✅ ФИЛЬТР В ЗАГОЛОВКЕ - выпадающий список для FK колонок + // ✅ ФИЛЬТР В ЗАГОЛОВКЕ - ввод с автоподстановкой для FK колонок if (allLoaded || total <= 1000) { - // Формируем список значений для фильтра с пустым значением - const filterValues = { "": "-- Все --" }; - values.forEach(v => { filterValues[v] = v; }); - colDef.headerFilter = "list"; colDef.headerFilterParams = { - values: filterValues, - clearable: false // Не показываем кнопку очистки, есть "Все" + values: values, + autocomplete: true, + clearable: true, + listOnEmpty: true, + freetext: true, // Разрешаем свободный ввод для поиска + placeholderEmpty: "Введите для поиска...", + filterFunc: function(term, label, value, item) { + // Фильтрация по вхождению подстроки + if (!term) return true; + return String(label).toLowerCase().includes(term.toLowerCase()); + } }; // Серверная фильтрация - пропускаем все на клиенте colDef.headerFilterFunc = function() { return true; }; } else { - // Много значений - оставляем текстовый поиск + // Много значений - текстовый поиск colDef.headerFilter = "input"; colDef.headerFilterPlaceholder = `Поиск (${total})...`; colDef.headerFilterFunc = function() { return true; };