// Libraries import React, {FunctionComponent, ChangeEvent, useState} from 'react' // Components import {DapperScrollbars} from '../DapperScrollbars' import {Input} from '../Input' import {TableSidebarItem} from './TableSidebarItem' // Types import {IconFont, FluxTable, Theme} from '../../types' // Styles import styles from './TableGraphs.scss' interface Props { data: FluxTable[] selectedTableName: string onSelectTable: (name: string) => void theme?: Theme } const handleSearch = ( event: ChangeEvent, setSearchTerm: Function ): void => setSearchTerm(event.target.value) const getFilteredData = ( data: FluxTable[], searchTerm: string ): FluxTable[] => { return data.filter(table => table.name.includes(searchTerm)) } export const TableSidebar: FunctionComponent = (props: Props) => { const {data, selectedTableName, onSelectTable, theme} = props const [searchTerm, setSearchTerm] = useState('') return (
{data.length > 0 && (
) => handleSearch(event, setSearchTerm) } placeholder="Filter tables..." value={searchTerm} className={styles['time-machine-sidebar--filter']} />
)}
{getFilteredData(data, searchTerm).map(({groupKey, id, name}) => { return ( ) })}
) }