From a99d82c8e373b1117cc6de123184686d5fad1d24 Mon Sep 17 00:00:00 2001 From: Macbook Date: Sun, 14 Dec 2025 19:07:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BF=D1=82=D0=B8=D0=BC=D0=B8=D0=B7?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BF=D0=BE=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=20=D0=BF=D0=BE=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/static/js/index.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/api/static/js/index.js b/api/static/js/index.js index 69eac11..20c0d0a 100644 --- a/api/static/js/index.js +++ b/api/static/js/index.js @@ -1350,10 +1350,20 @@ function renderToolkitCards(tabId, tools, categoriesMap, filterText = '', catego // Фильтр по поисковому запросу if (filterText) { - const searchLower = filterText.toLowerCase(); - const titleMatch = tool.title.toLowerCase().includes(searchLower); - const descriptionMatch = tool.description.toLowerCase().includes(searchLower); - if (!titleMatch && !descriptionMatch) { + const normalize = s => s.toLowerCase().replace(/ё/g, 'е'); + + const searchWords = normalize(filterText) + .split(/\s+/) + .filter(Boolean); + + const title = normalize(tool.title); + const description = normalize(tool.description); + + const matches = + searchWords.every(word => title.includes(word)) || + searchWords.every(word => description.includes(word)); + + if (!matches) { return false; } }