-
Notifications
You must be signed in to change notification settings - Fork 57
Expand file tree
/
Copy pathSESConfigurationTable.tsx
More file actions
103 lines (93 loc) · 3.4 KB
/
SESConfigurationTable.tsx
File metadata and controls
103 lines (93 loc) · 3.4 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* Copyright (c) 2024. Devtron Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { useMemo } from 'react'
import { useHistory } from 'react-router-dom'
import {
FiltersTypeEnum,
InteractiveCellText,
PaginationEnum,
Table,
useSearchString,
} from '@devtron-labs/devtron-fe-common-lib'
import { ConfigurationRowActionButtonWrapper } from './ConfigTableRowActionButton'
import { BASE_CONFIG, ConfigurationsTabTypes, SES_TABLE_COLUMNS } from './constants'
import { renderDefaultTag } from './notifications.util'
import { ConfigurationTableProps, SESConfigurationTableRowType } from './types'
import './notifications.scss'
const SESConfigurationTable = ({ state, deleteClickHandler }: ConfigurationTableProps) => {
const { searchParams } = useSearchString()
const history = useHistory()
const onClickEditRow = (id: number) => () => {
const newParams = {
...searchParams,
configId: id.toString(),
modal: ConfigurationsTabTypes.SES,
}
history.push({
search: new URLSearchParams(newParams).toString(),
})
}
const tableRows = useMemo(
() =>
state.sesConfigurationList.map((sesConfig) => ({
id: `${sesConfig.id}`,
data: {
name: (
<div className="flex left dc__gap-8 py-10">
<InteractiveCellText text={sesConfig.name} onClickHandler={onClickEditRow(sesConfig.id)} />
{renderDefaultTag(sesConfig.isDefault)}
</div>
),
accessKeyId: sesConfig.accessKeyId,
email: sesConfig.email,
},
})),
[state.sesConfigurationList],
)
const onRowClick = (rowData) => {
onClickEditRow(Number(rowData.id))()
}
return (
<Table<SESConfigurationTableRowType, FiltersTypeEnum.STATE>
id="table__ses-configuration"
columns={SES_TABLE_COLUMNS}
rows={tableRows}
emptyStateConfig={{
noRowsConfig: {
title: 'No SES Configurations Found',
},
}}
filtersVariant={FiltersTypeEnum.STATE}
additionalFilterProps={{
initialSortKey: BASE_CONFIG[0].field,
}}
paginationVariant={PaginationEnum.NOT_PAGINATED}
filter={null}
rowStartIconConfig={{
name: 'ic-ses',
color: null,
size: 24,
}}
rowActionOnHoverConfig={{
width: 100,
Component: ConfigurationRowActionButtonWrapper,
}}
additionalProps={{ deleteClickHandler, modal: ConfigurationsTabTypes.SES }}
onRowClick={onRowClick}
/>
)
}
export default SESConfigurationTable