-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Expand file tree
/
Copy pathSettingsRolePermissionsObjectLevelTableRowOptionsDropdown.tsx
More file actions
67 lines (61 loc) · 2.3 KB
/
SettingsRolePermissionsObjectLevelTableRowOptionsDropdown.tsx
File metadata and controls
67 lines (61 loc) · 2.3 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
import { useResetObjectPermission } from '@/settings/roles/role-permissions/object-level-permissions/hooks/useResetObjectPermission';
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown';
import { t } from '@lingui/core/macro';
import { IconDotsVertical, IconPencil, IconTrash } from 'twenty-ui/display';
import { IconButton } from 'twenty-ui/input';
import { MenuItem, UndecoratedLink } from 'twenty-ui/navigation';
type SettingsRolePermissionsObjectLevelTableRowOptionsDropdownProps = {
roleId: string;
objectMetadataId: string;
objectPermissionDetailUrl: string;
};
export const SettingsRolePermissionsObjectLevelTableRowOptionsDropdown = ({
roleId,
objectMetadataId,
objectPermissionDetailUrl,
}: SettingsRolePermissionsObjectLevelTableRowOptionsDropdownProps) => {
const dropdownId = `settings-role-object-level-options-${objectMetadataId}`;
const { closeDropdown } = useCloseDropdown();
const { resetObjectPermission } = useResetObjectPermission(roleId);
const handleRemove = () => {
closeDropdown(dropdownId);
resetObjectPermission(objectMetadataId);
};
return (
<Dropdown
dropdownId={dropdownId}
clickableComponent={
<IconButton
aria-label={t`Object permission options`}
variant="tertiary"
Icon={IconDotsVertical}
/>
}
dropdownComponents={
<DropdownContent>
<DropdownMenuItemsContainer>
<MenuItem
text={t`Remove rule`}
onClick={handleRemove}
LeftIcon={IconTrash}
accent="danger"
/>
</DropdownMenuItemsContainer>
<DropdownMenuItemsContainer>
<UndecoratedLink
fullWidth
to={objectPermissionDetailUrl}
onClick={() => closeDropdown(dropdownId)}
>
<MenuItem text={t`Edit`} LeftIcon={IconPencil} />
</UndecoratedLink>
</DropdownMenuItemsContainer>
</DropdownContent>
}
dropdownPlacement="bottom-end"
/>
);
};