import React, { useState, useCallback, useContext } from 'react'; import PropTypes from 'prop-types'; import { I18nContext } from '../../../contexts/i18n'; import Popover from '../../../components/ui/popover'; import Button from '../../../components/ui/button'; import QuoteDetails from './quote-details'; import SortList from './sort-list'; import { QUOTE_DATA_ROWS_PROPTYPES_SHAPE } from './select-quote-popover-constants'; const SelectQuotePopover = ({ quoteDataRows = [], onClose = null, onSubmit = null, swapToSymbol, initialAggId, onQuoteDetailsIsOpened, }) => { const t = useContext(I18nContext); const [sortDirection, setSortDirection] = useState(1); const [sortColumn, setSortColumn] = useState(null); const [selectedAggId, setSelectedAggId] = useState(initialAggId); const [contentView, setContentView] = useState('sortList'); const [viewingAgg, setViewingAgg] = useState(null); const onSubmitClick = useCallback(() => { onSubmit(selectedAggId); onClose(); }, [selectedAggId, onClose, onSubmit]); const closeQuoteDetails = useCallback(() => { setViewingAgg(null); setContentView('sortList'); }, []); const onRowClick = useCallback((aggId) => setSelectedAggId(aggId), [ setSelectedAggId, ]); const onCaretClick = useCallback( (aggId) => { const agg = quoteDataRows.find((quote) => quote.aggId === aggId); setContentView('quoteDetails'); onQuoteDetailsIsOpened(); setViewingAgg(agg); }, [quoteDataRows, onQuoteDetailsIsOpened], ); const CustomBackground = useCallback( () => (
), [onClose], ); const footer = ( <> ); return (
{contentView === 'sortList' && ( )} {contentView === 'quoteDetails' && viewingAgg && ( )}
); }; SelectQuotePopover.propTypes = { onClose: PropTypes.func, onSubmit: PropTypes.func, swapToSymbol: PropTypes.string, renderableData: PropTypes.array, quoteDataRows: PropTypes.arrayOf(QUOTE_DATA_ROWS_PROPTYPES_SHAPE), initialAggId: PropTypes.string, onQuoteDetailsIsOpened: PropTypes.func, }; export default SelectQuotePopover;