From 5920a613add7ce327b702d8ff503b0ec6703a314 Mon Sep 17 00:00:00 2001 From: MdIbrahim21 Date: Tue, 5 Nov 2024 07:10:06 +0000 Subject: [PATCH 1/2] Added full text search --- .eslintrc | 8 ++++++-- src/lib/fuzzySearch.js | 9 +++++++++ src/useSelect.js | 4 ++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/.eslintrc b/.eslintrc index 893f15c..2f9c284 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,5 +1,9 @@ { - "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], + "extends": [ + "eslint:recommended", + "plugin:react/recommended", + "prettier" + ], "env": { "browser": true, "node": true, @@ -15,4 +19,4 @@ "rules": { "react/react-in-jsx-scope": "off" } -} +} \ No newline at end of file diff --git a/src/lib/fuzzySearch.js b/src/lib/fuzzySearch.js index 1902335..d57d931 100644 --- a/src/lib/fuzzySearch.js +++ b/src/lib/fuzzySearch.js @@ -35,3 +35,12 @@ export default function fuzzySearch(options, query) { ), ); } + +export default function fulltextSearch(options, query) { + return !query.length + ? options + : options.filter((o) => + query.toLowerCase().includes( + `${o.name} ${o.group || ''}`.trim().toLowerCase()) + ); +} diff --git a/src/useSelect.js b/src/useSelect.js index b1d3f05..1d40d3f 100644 --- a/src/useSelect.js +++ b/src/useSelect.js @@ -4,7 +4,7 @@ import updateOption from './lib/updateOption'; import getDisplayValue from './lib/getDisplayValue'; import getValue from './lib/getValue'; import groupOptions from './lib/groupOptions'; -import fuzzySearch from './lib/fuzzySearch'; +import {fuzzySearch,fulltextSearch} from './lib/fuzzySearch'; import reduce from './lib/reduce'; import useOptions from './useOptions'; import useHighlight from './useHighlight'; @@ -59,7 +59,7 @@ export default function useSelect({ }; const middleware = [ - useFuzzySearch ? fuzzySearch : null, + useFuzzySearch ? fuzzySearch : fulltextSearch, ...(filterOptions ? filterOptions : []), ]; const filteredOptions = groupOptions(reduce(middleware, options, q)); From e941425b15abc141c8910aef01e8f6be11754cd3 Mon Sep 17 00:00:00 2001 From: MdIbrahim21 Date: Tue, 5 Nov 2024 08:04:38 +0000 Subject: [PATCH 2/2] Fulltext search added --- src/lib/fuzzySearch.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/fuzzySearch.js b/src/lib/fuzzySearch.js index d57d931..16957ed 100644 --- a/src/lib/fuzzySearch.js +++ b/src/lib/fuzzySearch.js @@ -25,22 +25,22 @@ function search(q, text) { return true; } -export default function fuzzySearch(options, query) { +export function fuzzySearch(options, query) { return !query.length ? options : options.filter((o) => - search( - query.toLowerCase(), - `${o.name} ${o.group || ''}`.trim().toLowerCase(), - ), - ); + search( + query.toLowerCase(), + `${o.name} ${o.group || ''}`.trim().toLowerCase(), + ), + ); } -export default function fulltextSearch(options, query) { +export function fulltextSearch(options, query) { return !query.length ? options - : options.filter((o) => - query.toLowerCase().includes( - `${o.name} ${o.group || ''}`.trim().toLowerCase()) - ); + : options?.filter((o) => + `${o?.name}`.trim().toLowerCase().indexOf(query.toLowerCase()) == 0 + ); } +