Skip to content

Commit 208b570

Browse files
authored
feat: add edit functionality to BindingDetailDialog (#447)
- Introduced an optional `onEdit` prop to the BindingDetailDialog component, allowing users to trigger an edit action. - Updated the dialog title to display the binding name instead of a static label. - Integrated the edit functionality into both ClusterRoleBindingsContent and NamespaceRoleBindingsContent components, enabling editing of selected bindings. Signed-off-by: Stefinie Fernando <minolispencer@gmail.com>
1 parent c89d18a commit 208b570

3 files changed

Lines changed: 40 additions & 5 deletions

File tree

plugins/openchoreo/src/components/AccessControl/MappingsTab/BindingDetailDialog.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
import { makeStyles } from '@material-ui/core/styles';
1414
import CheckCircleIcon from '@material-ui/icons/CheckCircle';
1515
import BlockIcon from '@material-ui/icons/Block';
16+
import EditIcon from '@material-ui/icons/EditOutlined';
1617
import { CHOREO_LABELS } from '@openchoreo/backstage-plugin-common';
1718
import { useSharedStyles } from './styles';
1819

@@ -122,15 +123,15 @@ export interface BindingDetail {
122123
interface BindingDetailDialogProps {
123124
open: boolean;
124125
onClose: () => void;
126+
onEdit?: () => void;
125127
binding: BindingDetail | null;
126-
scopeLabel: string;
127128
}
128129

129130
export const BindingDetailDialog = ({
130131
open,
131132
onClose,
133+
onEdit,
132134
binding,
133-
scopeLabel,
134135
}: BindingDetailDialogProps) => {
135136
const classes = useStyles();
136137
const sharedClasses = useSharedStyles();
@@ -142,7 +143,7 @@ export const BindingDetailDialog = ({
142143
return (
143144
<Dialog open={open} onClose={onClose} maxWidth="sm" fullWidth>
144145
<DialogTitle disableTypography>
145-
<Typography variant="h4">{scopeLabel} Role Binding Details</Typography>
146+
<Typography variant="h4">{binding.name}</Typography>
146147
</DialogTitle>
147148
<DialogContent>
148149
<Paper variant="outlined" className={classes.summaryCard}>
@@ -243,6 +244,16 @@ export const BindingDetailDialog = ({
243244
</Paper>
244245
</DialogContent>
245246
<DialogActions>
247+
{onEdit && (
248+
<Button
249+
onClick={onEdit}
250+
variant="outlined"
251+
color="primary"
252+
startIcon={<EditIcon />}
253+
>
254+
Edit
255+
</Button>
256+
)}
246257
<Button onClick={onClose} variant="contained" color="primary">
247258
Close
248259
</Button>

plugins/openchoreo/src/components/AccessControl/MappingsTab/ClusterRoleBindingsContent.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -577,8 +577,20 @@ export const ClusterRoleBindingsContent = ({
577577
<BindingDetailDialog
578578
open={!!detailBinding}
579579
onClose={() => setDetailBinding(null)}
580+
onEdit={
581+
canUpdate && detailBinding
582+
? () => {
583+
const original = bindings.find(
584+
b => b.name === detailBinding.name,
585+
);
586+
setDetailBinding(null);
587+
if (original) {
588+
handleEditBinding(original);
589+
}
590+
}
591+
: undefined
592+
}
580593
binding={detailBinding}
581-
scopeLabel="Cluster"
582594
/>
583595
</Box>
584596
);

plugins/openchoreo/src/components/AccessControl/MappingsTab/NamespaceRoleBindingsContent.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,8 +648,20 @@ export const NamespaceRoleBindingsContent = ({
648648
<BindingDetailDialog
649649
open={!!detailBinding}
650650
onClose={() => setDetailBinding(null)}
651+
onEdit={
652+
canUpdate && detailBinding
653+
? () => {
654+
const original = bindings.find(
655+
b => b.name === detailBinding.name,
656+
);
657+
setDetailBinding(null);
658+
if (original) {
659+
handleEditBinding(original);
660+
}
661+
}
662+
: undefined
663+
}
651664
binding={detailBinding}
652-
scopeLabel="Namespace"
653665
/>
654666
</Box>
655667
);

0 commit comments

Comments
 (0)