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={()}
/>
)}
>
))}
)
}