import React from 'react'; import { Menu, MenuContent, MenuItem, MenuItemAction, MenuGroup, MenuList, Divider } from '@breakaway/preact-core'; import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon'; import ClipboardIcon from '@patternfly/react-icons/dist/esm/icons/clipboard-icon'; import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon'; export const MenuWithFavorites: React.FunctionComponent = () => { const [activeItem, setActiveItem] = React.useState(0); const [favorites, setFavorites] = React.useState([]); const onSelect = (_event: React.MouseEvent | undefined, itemId: number | string | undefined) => { const item = itemId as number; // eslint-disable-next-line no-console console.log(`clicked ${item}`); setActiveItem(item); }; const onFavorite = (event, itemId: string, actionId: string) => { // eslint-disable-next-line no-console console.log(`clicked ${itemId} - ${actionId}`); if (actionId === 'fav') { const isFavorite = favorites.includes(itemId); if (isFavorite) { setFavorites(favorites.filter((fav) => fav !== itemId)); } else { setFavorites([...favorites, itemId]); } } }; const items = [ { text: 'Item 1', description: 'Description 1', itemId: 'item-1', action: , actionId: 'bars' }, { text: 'Item 2', description: 'Description 2', itemId: 'item-2', action: , actionId: 'clipboard' }, { text: 'Item 3', description: 'Description 3', itemId: 'item-3', action: , actionId: 'bell' } ]; return ( {favorites.length > 0 && ( {items .filter((item) => favorites.includes(item.itemId)) .map((item) => { const { text, description, itemId, action, actionId } = item; return ( } > {text} ); })} )} {items.map((item) => { const { text, description, itemId, action, actionId } = item; const isFavorited = favorites.includes(item.itemId); return ( } > {text} ); })} ); };