| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import { useTranslation } from 'react-i18next'
- import { useFileTreeActionable } from '../../contexts/file-tree-actionable'
- import OLModal, {
- OLModalBody,
- OLModalFooter,
- OLModalHeader,
- OLModalTitle,
- } from '@/features/ui/components/ol/ol-modal'
- import OLButton from '@/features/ui/components/ol/ol-button'
- import OLNotification from '@/features/ui/components/ol/ol-notification'
- import { useFileTreeSelectable } from '../../contexts/file-tree-selectable'
- function FileTreeModalDelete() {
- const { t } = useTranslation()
- const {
- isDeleting,
- inFlight,
- finishDeleting,
- actionedEntities,
- cancel,
- error,
- } = useFileTreeActionable()
- const { select } = useFileTreeSelectable()
- if (!isDeleting) return null // the modal will not be rendered; return early
- function handleHide() {
- cancel()
- }
- function handleDelete() {
- select([])
- finishDeleting()
- }
- return (
- <OLModal show onHide={handleHide}>
- <OLModalHeader>
- <OLModalTitle>{t('delete')}</OLModalTitle>
- </OLModalHeader>
- <OLModalBody>
- <p>{t('sure_you_want_to_delete')}</p>
- <ul>
- {actionedEntities.map(entity => (
- <li key={entity._id}>{entity.name}</li>
- ))}
- </ul>
- {error && (
- <OLNotification
- type="error"
- content={t('generic_something_went_wrong')}
- />
- )}
- </OLModalBody>
- <OLModalFooter>
- {inFlight ? (
- <OLButton variant="danger" disabled isLoading />
- ) : (
- <>
- <OLButton variant="secondary" onClick={handleHide}>
- {t('cancel')}
- </OLButton>
- <OLButton variant="danger" onClick={handleDelete}>
- {t('delete')}
- </OLButton>
- </>
- )}
- </OLModalFooter>
- </OLModal>
- )
- }
- export default FileTreeModalDelete
|