-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathEditCollectionDropdown.tsx
More file actions
79 lines (74 loc) · 2.71 KB
/
EditCollectionDropdown.tsx
File metadata and controls
79 lines (74 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import { Link } from 'react-router-dom'
import { useTranslation } from 'react-i18next'
import {
DropdownButton,
DropdownButtonItem,
DropdownHeader,
DropdownSeparator,
Icon,
IconName
} from '@iqss/dataverse-design-system'
import { PencilFill } from 'react-bootstrap-icons'
import { Collection } from '@/collection/domain/models/Collection'
import { RouteWithParams } from '@/sections/Route.enum'
import { CollectionRepository } from '@/collection/domain/repositories/CollectionRepository'
import { CollectionHelper } from '../CollectionHelper'
import { DeleteCollectionButton } from './delete-collection-button/DeleteCollectionButton'
import styles from './EditCollectionDropdown.module.scss'
interface EditCollectionDropdownProps {
collection: Collection
canUserDeleteCollection: boolean
collectionRepository: CollectionRepository
}
export const EditCollectionDropdown = ({
collection,
collectionRepository,
canUserDeleteCollection
}: EditCollectionDropdownProps) => {
const { t } = useTranslation('collection')
const canCollectionBeDeleted =
canUserDeleteCollection &&
!CollectionHelper.isRootCollection(collection.hierarchy) &&
collection.childCount === 0
return (
<DropdownButton
id="edit-collection-dropdown"
title={t('editCollection.edit')}
asButtonGroup
variant="secondary"
icon={<PencilFill className={styles['dropdown-icon']} />}>
<DropdownHeader className={styles['dropdown-header']}>
<div className={styles['collection-icon']}>
<Icon name={IconName.COLLECTION} />
</div>
<div>
<p className={styles['collection-name']}>
{collection.name}{' '}
{collection.affiliation ? <span>({collection.affiliation})</span> : null}
</p>
<p className={styles['collection-alias']}>{collection.id}</p>
</div>
</DropdownHeader>
<DropdownSeparator />
<DropdownButtonItem as={Link} to={RouteWithParams.EDIT_COLLECTION(collection.id)}>
{t('editCollection.generalInfo')}
</DropdownButtonItem>
<DropdownButtonItem as={Link} to={RouteWithParams.EDIT_FEATURED_ITEMS(collection.id)}>
{t('featuredItems.title')}
</DropdownButtonItem>
<DropdownButtonItem as={Link} to={RouteWithParams.COLLECTION_TEMPLATES(collection.id)}>
{t('editCollection.datasetTemplates')}
</DropdownButtonItem>
{canCollectionBeDeleted && (
<>
<DropdownSeparator />
<DeleteCollectionButton
collectionId={collection.id}
parentCollection={CollectionHelper.getParentCollection(collection.hierarchy)}
collectionRepository={collectionRepository}
/>
</>
)}
</DropdownButton>
)
}