Skip to content

Commit 4d5a8fd

Browse files
authored
RI-7747: hide db delete popover on confirm (#5213)
1 parent db46561 commit 4d5a8fd

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

redisinsight/ui/src/pages/home/components/databases-list/components/DatabasesListCellControls/DatabasesListCellControls.spec.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
screen,
55
userEvent,
66
waitForRiPopoverVisible,
7+
waitFor,
78
} from 'uiSrc/utils/test-utils'
89
import { Instance } from 'uiSrc/slices/interfaces'
910
import {
@@ -118,4 +119,30 @@ describe('DatabasesListCellControls component', () => {
118119
expect(mockHandleDeleteInstances).toHaveBeenCalledWith(instance)
119120
expect(openDialogSpy).toHaveBeenLastCalledWith(null)
120121
})
122+
123+
it('should close controls popover after confirming delete (closeControlsPopover)', async () => {
124+
renderWithProvider()
125+
126+
// Open controls popover
127+
await userEvent.click(screen.getByTestId(`controls-button-${instance.id}`))
128+
await waitForRiPopoverVisible()
129+
expect(await screen.findByTestId(`edit-instance-${instance.id}`)).toBeInTheDocument()
130+
131+
// Trigger delete flow
132+
await userEvent.click(
133+
await screen.findByTestId(`delete-instance-${instance.id}-icon`),
134+
)
135+
await waitForRiPopoverVisible() // wait for confirmation popover
136+
137+
// Confirm deletion -> this calls closeControlsPopover inside handleDeleteItem
138+
await userEvent.click(
139+
await screen.findByTestId(`delete-instance-${instance.id}`),
140+
{ pointerEventsCheck: 0 },
141+
)
142+
143+
// Assert the controls popover content is gone (popover closed)
144+
await waitFor(() =>
145+
expect(screen.queryByTestId(`edit-instance-${instance.id}`)).not.toBeInTheDocument(),
146+
)
147+
})
121148
})

redisinsight/ui/src/pages/home/components/databases-list/components/DatabasesListCellControls/DatabasesListCellControls.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,13 @@ const suffix = '_db_instance'
3434
const DatabasesListCellControls: IDatabaseListCell = ({ row }) => {
3535
const instance = row.original
3636
const { setOpenDialog } = useHomePageDataProvider()
37+
const [isControlsPopoverOpen, setControlsPopoverOpen] = useState(false)
3738
const [isDeletePopoverOpen, setIsDeletePopoverOpen] = useState(false)
3839

3940
const deletingId = isDeletePopoverOpen ? `${instance.id + suffix}` : ''
40-
const closePopover = () => setIsDeletePopoverOpen(false)
41-
const showPopover = () => setIsDeletePopoverOpen(true)
41+
const closeControlsPopover = () => setControlsPopoverOpen(false)
42+
const closeDeletePopover = () => setIsDeletePopoverOpen(false)
43+
const showDeletePopover = () => setIsDeletePopoverOpen(true)
4244

4345
return (
4446
<Row
@@ -77,6 +79,9 @@ const DatabasesListCellControls: IDatabaseListCell = ({ row }) => {
7779
ownFocus
7880
anchorPosition="leftUp"
7981
panelPaddingSize="s"
82+
isOpen={isControlsPopoverOpen}
83+
closePopover={closeControlsPopover}
84+
onOpenChange={setControlsPopoverOpen}
8085
button={
8186
<IconButton
8287
icon={MoreactionsIcon}
@@ -106,12 +111,13 @@ const DatabasesListCellControls: IDatabaseListCell = ({ row }) => {
106111
item={instance.id}
107112
suffix={suffix}
108113
deleting={deletingId}
109-
closePopover={closePopover}
114+
closePopover={closeDeletePopover}
110115
updateLoading={false}
111-
showPopover={showPopover}
116+
showPopover={showDeletePopover}
112117
handleDeleteItem={() => {
113118
handleDeleteInstances(instance)
114119
setOpenDialog(null)
120+
closeControlsPopover()
115121
}}
116122
handleButtonClick={() => handleClickDeleteInstance(instance)}
117123
testid={`delete-instance-${instance.id}`}

0 commit comments

Comments
 (0)