import React, { useMemo } from 'react' import map from 'lodash/map' import isEmpty from 'lodash/isEmpty' import includes from 'lodash/includes' import { T9n } from 'features/T9n' import { Name } from 'features/Name' import { useLexicsStore } from 'features/LexicsStore' import { isMobileDevice } from 'config/userAgent' import { getAge, getArena, getDivision, getGender, getMainTeam, getRound, } from './helpers' import { TDropDownProps, TFilterItem, TItem, } from './types' import { DropDownContainer, FiltersList, FilterItem, Checkbox, CommonButtonsBlock, ClearButtonContainer, SearchWithAllContainer, SearchContainer, SearchInput, BackButton, } from './styled' const Label = ({ item }: TFilterItem) => { const isNumber = typeof item === 'number' return ( <> {isNumber ? (<>U{item}) : ()} ) } export const DropDown = ({ activeFilters, changeInput, clearFilters, closeDropdownList, filterList, filterTitle, inputValue, setFilters, }: TDropDownProps) => { const { translate } = useLexicsStore() const dropDownList = useMemo(() => { switch (filterTitle) { case 'gender': return getGender(filterList) case 'youth_age': return getAge(filterList) case 'division': return getDivision(filterList) case 'main_team': return getMainTeam(filterList) case 'arena': return getArena(filterList, inputValue) case 'round': return getRound(filterList) default: return [] } }, [filterTitle, filterList, inputValue]) as Array | Array const currentActiveFilter = activeFilters[filterTitle as keyof typeof activeFilters] return ( {/* {isMobileDevice && ()} */} {isMobileDevice && closeDropdownList && ( {filterTitle} )} {filterTitle === 'arena' && ( e.stopPropagation()} placeholder={translate('search')} /> )} {!isEmpty(dropDownList) && map(dropDownList, (filterItem, i) => ( <> { e.preventDefault() e.stopPropagation() setFilters(filterTitle, filterItem) }} > {filterTitle === 'gender' ? ( { e.preventDefault() e.stopPropagation() setFilters(filterTitle, filterItem) }} labelLexic={filterItem.title} /> ) : ( { e.preventDefault() e.stopPropagation() setFilters(filterTitle, filterItem) }} label={( ))} ) }