forked from linode/manager
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStreamActionMenu.tsx
More file actions
57 lines (50 loc) · 1.5 KB
/
StreamActionMenu.tsx
File metadata and controls
57 lines (50 loc) · 1.5 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
import { type Stream, streamStatus } from '@linode/api-v4';
import * as React from 'react';
import { ActionMenu } from 'src/components/ActionMenu/ActionMenu';
import type { Action } from 'src/components/ActionMenu/ActionMenu';
export interface StreamHandlers {
onDelete: (stream: Stream) => void;
onDisableOrEnable: (stream: Stream) => void;
onEdit: (stream: Stream) => void;
}
interface StreamActionMenuProps extends StreamHandlers {
stream: Stream;
}
export const StreamActionMenu = (props: StreamActionMenuProps) => {
const { stream, onDelete, onDisableOrEnable, onEdit } = props;
const { status, label } = stream;
const menuActions: Action[] = [
{
onClick: () => {
onEdit(stream);
},
title: 'Edit',
pendoId: 'Logs Delivery Streams-Edit',
},
{
onClick: () => {
onDisableOrEnable(stream);
},
title: status === streamStatus.Active ? 'Deactivate' : 'Activate',
pendoId: `Logs Delivery Streams-${status === streamStatus.Active ? 'Deactivate' : 'Activate'}`,
disabled:
status === streamStatus.Deactivating ||
status === streamStatus.Failed ||
status === streamStatus.Provisioning,
},
{
onClick: () => {
onDelete(stream);
},
title: 'Delete',
pendoId: 'Logs Delivery Streams-Delete',
},
];
return (
<ActionMenu
actionsList={menuActions}
ariaLabel={`Action menu for Stream ${label}`}
pendoId="Logs Delivery Streams-Action Menu"
/>
);
};