From db0c4a1d71313d4530d161116e19827a45c46c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A8sAbhi?= <43380238+tresabhi@users.noreply.github.com> Date: Tue, 16 Jan 2024 14:02:50 -0600 Subject: [PATCH] feat: new search results --- .../components/SearchResults.tsx | 53 +++++++++++++ .../index.tsx} | 79 ++++++------------- 2 files changed, 75 insertions(+), 57 deletions(-) create mode 100644 src/app/tools/tankopedia/[id]/components/AntagonistBar/components/SearchResults.tsx rename src/app/tools/tankopedia/[id]/components/{AntagonistBar.tsx => AntagonistBar/index.tsx} (74%) diff --git a/src/app/tools/tankopedia/[id]/components/AntagonistBar/components/SearchResults.tsx b/src/app/tools/tankopedia/[id]/components/AntagonistBar/components/SearchResults.tsx new file mode 100644 index 000000000..841781ff5 --- /dev/null +++ b/src/app/tools/tankopedia/[id]/components/AntagonistBar/components/SearchResults.tsx @@ -0,0 +1,53 @@ +import { Button, Flex, Text } from '@radix-ui/themes'; +import { use } from 'react'; +import { SmallTankIcon } from '../../../../../../../components/SmallTankIcon'; +import { + TIER_ROMAN_NUMERALS, + tankDefinitions, +} from '../../../../../../../core/blitzkrieg/tankDefinitions'; + +interface SearchResultsProps { + ids: number[]; +} + +export function SearchResults({ ids }: SearchResultsProps) { + const awaitedTankDefinitions = use(tankDefinitions); + + return ( + + + {ids.map((id) => { + const tank = awaitedTankDefinitions[id]; + + return ( + + ); + })} + + + ); +} diff --git a/src/app/tools/tankopedia/[id]/components/AntagonistBar.tsx b/src/app/tools/tankopedia/[id]/components/AntagonistBar/index.tsx similarity index 74% rename from src/app/tools/tankopedia/[id]/components/AntagonistBar.tsx rename to src/app/tools/tankopedia/[id]/components/AntagonistBar/index.tsx index d643b7535..d62718d1e 100644 --- a/src/app/tools/tankopedia/[id]/components/AntagonistBar.tsx +++ b/src/app/tools/tankopedia/[id]/components/AntagonistBar/index.tsx @@ -19,15 +19,15 @@ import { go } from 'fuzzysort'; import { produce } from 'immer'; import { debounce } from 'lodash'; import { Dispatch, SetStateAction, use, useRef, useState } from 'react'; -import { ModuleButton } from '../../../../../components/ModuleButton'; -import { SmallTankIcon } from '../../../../../components/SmallTankIcon'; +import { ModuleButton } from '../../../../../../components/ModuleButton'; +import { SmallTankIcon } from '../../../../../../components/SmallTankIcon'; import { SHELL_NAMES, - tankDefinitions, tankNamesDiacritics, -} from '../../../../../core/blitzkrieg/tankDefinitions'; -import { useTankopedia } from '../../../../../stores/tankopedia'; -import { Duel } from '../page'; +} from '../../../../../../core/blitzkrieg/tankDefinitions'; +import { useTankopedia } from '../../../../../../stores/tankopedia'; +import { Duel } from '../../page'; +import { SearchResults } from './components/SearchResults'; interface AntagonistBarProps { duel: Duel; @@ -38,12 +38,14 @@ export function AntagonistBar({ duel: { antagonist }, setDuel, }: AntagonistBarProps) { - const awaitedTankDefinitions = use(tankDefinitions); const mode = useTankopedia((state) => state.mode); const awaitedTankNamesDiacritics = use(tankNamesDiacritics); const [tab, setTab] = useState('search'); const searchInput = useRef(null); const [searchResults, setSearchResults] = useState([]); + const chunkSize = window.innerWidth > 512 ? 8 : Infinity; + const firstChunk = searchResults.slice(0, chunkSize); + const secondChunk = searchResults.slice(chunkSize); if (mode !== 'armor') return null; @@ -127,62 +129,25 @@ export function AntagonistBar({ go( searchInput.current!.value, awaitedTankNamesDiacritics, - { key: 'combined', limit: 8 }, + { key: 'combined', limit: 16 }, ).map((item) => item.obj.id), ); }, 500)} /> - - {(searchResults.length > 0 || - searchInput.current?.value) && ( - - {searchResults - .map((id) => awaitedTankDefinitions[id]) - .map((tank) => ( - - ))} - - {searchResults.length === 0 && - (searchInput.current - ? searchInput.current.value.length > 0 - : false) && ( - - )} - +
+ + {secondChunk.length > 0 && ( + )} - +
@@ -265,7 +230,7 @@ export function AntagonistBar({