import React, { useState } from 'react'; import { Dropdown, DropdownItem, DropdownList, MenuToggle, MenuToggleCheckbox, MenuToggleElement, } from '@patternfly/react-core'; import { ApiRepositoryResponseRead } from '../../../../../store/contentSourcesApi'; interface BulkSelectProps { selected: Set; contentList: ApiRepositoryResponseRead[]; deselectAll: () => void; perPage: number; handleAddRemove: ( repo: ApiRepositoryResponseRead | ApiRepositoryResponseRead[], selected: boolean ) => void; isDisabled: boolean; } export function BulkSelect({ selected, contentList, deselectAll, perPage, handleAddRemove, isDisabled, }: BulkSelectProps) { const [dropdownIsOpen, setDropdownIsOpen] = useState(false); const allChecked = !contentList.some(({ uuid }) => !selected.has(uuid!)); const someChecked = allChecked || contentList.some(({ uuid }) => selected.has(uuid!)); const toggleDropdown = () => setDropdownIsOpen(!dropdownIsOpen); const handleSelectPage = () => handleAddRemove(contentList, !allChecked); return ( ) => ( , ], }} onClick={toggleDropdown} > {someChecked ? `${selected.size} selected` : null} )} isOpen={dropdownIsOpen} > { deselectAll(); toggleDropdown(); }} >{`Clear all (${selected.size} items)`} { handleSelectPage(); toggleDropdown(); }} >{`${allChecked ? 'Remove' : 'Select'} page (${ perPage > contentList.length ? contentList.length : perPage } items)`} ); }