2025-08-22 20:28:50 +01:00

49 lines
1.2 KiB
JavaScript

import { Select, Flex, Typography } from 'antd'
import PropTypes from 'prop-types'
import Flag from './Flag'
import countries from '../../../database/Countries'
const { Text } = Typography
const CountrySelect = ({
value,
onChange,
style,
placeholder = 'Select country'
}) => {
return (
<Select
showSearch
style={{ width: '100%', ...style }}
placeholder={placeholder}
optionFilterProp='children'
value={value}
onChange={onChange}
filterOption={(input, option) =>
option.name.toLowerCase().indexOf(input.toLowerCase()) >= 0
}
options={countries
.sort((a, b) => a.name.localeCompare(b.name))
.map((country) => ({
value: country.code,
name: country.name,
label: (
<Flex gap='small' align='center'>
<Flag code={country.code} size='small' borderRadius={3} />
<Text elipsis>{country.name}</Text>
</Flex>
)
}))}
/>
)
}
CountrySelect.propTypes = {
value: PropTypes.string,
onChange: PropTypes.func,
style: PropTypes.object,
placeholder: PropTypes.string
}
export default CountrySelect