import React, { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import * as RadixSelect from '@radix-ui/react-select' import classNames from 'classnames' import Overlay from '~components/common/Overlay' import ChevronIcon from '~public/icons/Chevron.svg' import './index.scss' import SegmentedControl from '~components/common/SegmentedControl' import Segment from '~components/common/Segment' import Input from '~components/common/Input' // Props interface Props extends React.DetailedHTMLProps< React.SelectHTMLAttributes, HTMLSelectElement > { altText?: string currentSegment: number iconSrc?: string open: boolean trigger?: React.ReactNode children?: React.ReactNode onOpenChange?: () => void onValueChange?: (value: string) => void onSegmentClick: (segment: number) => void onClose?: () => void triggerClass?: string overlayVisible?: boolean } const RaidSelect = React.forwardRef(function Select( props: Props, forwardedRef ) { // Import translations const { t } = useTranslation('common') const searchInput = React.createRef() const [open, setOpen] = useState(false) const [value, setValue] = useState('') const [query, setQuery] = useState('') const triggerClasses = classNames( { SelectTrigger: true, Disabled: props.disabled, }, props.triggerClass ) useEffect(() => { setOpen(props.open) }, [props.open]) useEffect(() => { if (props.value && props.value !== '') setValue(`${props.value}`) else setValue('') }, [props.value]) function onValueChange(newValue: string) { setValue(`${newValue}`) if (props.onValueChange) props.onValueChange(newValue) } function onCloseAutoFocus() { setOpen(false) if (props.onClose) props.onClose() } function onEscapeKeyDown() { setOpen(false) if (props.onClose) props.onClose() } function onPointerDownOutside() { setOpen(false) if (props.onClose) props.onClose() } return ( {props.iconSrc ? {props.altText} : ''} {!props.disabled ? ( ) : ( '' )} <>
{}} /> props.onSegmentClick(1)} > {t('raids.sections.events')} props.onSegmentClick(0)} > {t('raids.sections.raids')} props.onSegmentClick(2)} > {t('raids.sections.solo')}
{props.children}
) }) RaidSelect.defaultProps = { overlayVisible: true, } export default RaidSelect