1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-24 19:10:22 +01:00
metamask-extension/ui/app/pages/swaps/searchable-item-list/searchable-item-list.js

78 lines
2.0 KiB
JavaScript
Raw Normal View History

2020-10-06 20:28:38 +02:00
import React, { useState, useRef } from 'react'
import PropTypes from 'prop-types'
import ItemList from './item-list'
import ListItemSearch from './list-item-search'
2020-11-03 00:41:28 +01:00
export default function SearchableItemList({
2020-10-06 20:28:38 +02:00
className,
defaultToAll,
fuseSearchKeys,
itemSelectorError,
itemsToSearch = [],
listTitle,
maxListItems,
onClickItem,
Placeholder,
searchPlaceholderText,
hideRightLabels,
hideItemIf,
listContainerClassName,
}) {
const itemListRef = useRef()
const [results, setResults] = useState(defaultToAll ? itemsToSearch : [])
const [searchQuery, setSearchQuery] = useState('')
return (
<div className={className}>
<ListItemSearch
listToSearch={itemsToSearch}
fuseSearchKeys={fuseSearchKeys}
2020-11-03 00:41:28 +01:00
onSearch={({
searchQuery: newSearchQuery = '',
results: newResults = [],
}) => {
2020-10-06 20:28:38 +02:00
setSearchQuery(newSearchQuery)
setResults(newResults)
}}
error={itemSelectorError}
searchPlaceholderText={searchPlaceholderText}
defaultToAll={defaultToAll}
/>
<ItemList
searchQuery={searchQuery}
results={results}
onClickItem={onClickItem}
Placeholder={Placeholder}
listTitle={listTitle}
maxListItems={maxListItems}
containerRef={itemListRef}
hideRightLabels={hideRightLabels}
hideItemIf={hideItemIf}
listContainerClassName={listContainerClassName}
/>
</div>
)
}
SearchableItemList.propTypes = {
itemSelectorError: PropTypes.string,
itemsToSearch: PropTypes.array,
onClickItem: PropTypes.func,
Placeholder: PropTypes.func,
className: PropTypes.string,
searchPlaceholderText: PropTypes.string,
2020-11-03 00:41:28 +01:00
fuseSearchKeys: PropTypes.arrayOf(
PropTypes.shape({
name: PropTypes.string,
weight: PropTypes.number,
}),
),
2020-10-06 20:28:38 +02:00
listTitle: PropTypes.string,
defaultToAll: PropTypes.bool,
maxListItems: PropTypes.number,
hideRightLabels: PropTypes.bool,
hideItemIf: PropTypes.func,
listContainerClassName: PropTypes.string,
}