import React from 'react'; import { I18n } from '@lingui/react'; import { t } from '@lingui/macro'; import { Button, Checkbox, Dropdown, DropdownPosition, DropdownToggle, DropdownItem, Level, LevelItem, TextInput, Toolbar, ToolbarGroup, ToolbarItem, } from '@patternfly/react-core'; import { BarsIcon, EqualsIcon, SortAlphaDownIcon, SortAlphaUpIcon, SortNumericDownIcon, SortNumericUpIcon, TrashAltIcon, PlusIcon } from '@patternfly/react-icons'; import { Link } from 'react-router-dom'; import Tooltip from '../Tooltip'; class DataListToolbar extends React.Component { constructor (props) { super(props); const { sortedColumnKey } = this.props; this.state = { isSearchDropdownOpen: false, isSortDropdownOpen: false, searchKey: sortedColumnKey, searchValue: '', }; this.handleSearchInputChange = this.handleSearchInputChange.bind(this); this.onSortDropdownToggle = this.onSortDropdownToggle.bind(this); this.onSortDropdownSelect = this.onSortDropdownSelect.bind(this); this.onSearch = this.onSearch.bind(this); this.onSearchDropdownToggle = this.onSearchDropdownToggle.bind(this); this.onSearchDropdownSelect = this.onSearchDropdownSelect.bind(this); } handleSearchInputChange (searchValue) { this.setState({ searchValue }); } onSortDropdownToggle (isSortDropdownOpen) { this.setState({ isSortDropdownOpen }); } onSortDropdownSelect ({ target }) { const { columns, onSort, sortOrder } = this.props; const [{ key }] = columns.filter(({ name }) => name === target.innerText); this.setState({ isSortDropdownOpen: false }); onSort(key, sortOrder); } onSearchDropdownToggle (isSearchDropdownOpen) { this.setState({ isSearchDropdownOpen }); } onSearchDropdownSelect ({ target }) { const { columns } = this.props; const targetName = target.innerText; const [{ key }] = columns.filter(({ name }) => name === targetName); this.setState({ isSearchDropdownOpen: false, searchKey: key }); } onSearch () { const { searchValue } = this.state; const { onSearch } = this.props; onSearch(searchValue); } render () { const { up } = DropdownPosition; const { columns, isAllSelected, onSelectAll, onSort, sortedColumnKey, sortOrder, addUrl, showExpandCollapse } = this.props; const { // isActionDropdownOpen, isSearchDropdownOpen, isSortDropdownOpen, searchKey, searchValue, } = this.state; const [searchColumn] = columns .filter(({ key }) => key === searchKey); const searchColumnName = searchColumn.name; const [sortedColumn] = columns .filter(({ key }) => key === sortedColumnKey); const sortedColumnName = sortedColumn.name; const isSortNumeric = sortedColumn.isNumeric; const displayedSortIcon = () => { let icon; if (sortOrder === 'ascending') { icon = isSortNumeric ? () : (); } else { icon = isSortNumeric ? () : (); } return icon; }; const searchDropdownItems = columns .filter(({ key }) => key !== searchKey) .map(({ key, name }) => ( { name } )); const sortDropdownItems = columns .filter(({ key, isSortable }) => isSortable && key !== sortedColumnKey) .map(({ key, name }) => ( { name } )); return ( {({ i18n }) => (
{ searchColumnName } )} dropdownItems={searchDropdownItems} />