NEWONE1 / invokeai /frontend /web /src /features /deleteImageModal /components /DeleteImageButton.tsx
| import type { IconButtonProps } from '@invoke-ai/ui-library'; | |
| import { IconButton } from '@invoke-ai/ui-library'; | |
| import { useStore } from '@nanostores/react'; | |
| import { useAppSelector } from 'app/store/storeHooks'; | |
| import { selectSelectionCount } from 'features/gallery/store/gallerySelectors'; | |
| import { memo } from 'react'; | |
| import { useTranslation } from 'react-i18next'; | |
| import { PiTrashSimpleBold } from 'react-icons/pi'; | |
| import { $isConnected } from 'services/events/stores'; | |
| type DeleteImageButtonProps = Omit<IconButtonProps, 'aria-label'> & { | |
| onClick: () => void; | |
| }; | |
| export const DeleteImageButton = memo((props: DeleteImageButtonProps) => { | |
| const { onClick, isDisabled } = props; | |
| const { t } = useTranslation(); | |
| const isConnected = useStore($isConnected); | |
| const imageSelectionLength = useAppSelector(selectSelectionCount); | |
| const labelMessage: string = `${t('gallery.deleteImage', { count: imageSelectionLength })} (Del)`; | |
| return ( | |
| <IconButton | |
| onClick={onClick} | |
| icon={<PiTrashSimpleBold />} | |
| tooltip={labelMessage} | |
| aria-label={labelMessage} | |
| isDisabled={isDisabled || !isConnected} | |
| colorScheme="error" | |
| variant="link" | |
| alignSelf="stretch" | |
| /> | |
| ); | |
| }); | |
| DeleteImageButton.displayName = 'DeleteImageButton'; | |