Skip to content

Commit db2de21

Browse files
chore(deps): update dependency eslint-plugin-react-hooks to v7 (#318)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Andreas Kienle <andreas.kienle@sap.com>
1 parent 54975f2 commit db2de21

File tree

17 files changed

+111
-143
lines changed

17 files changed

+111
-143
lines changed

package-lock.json

Lines changed: 43 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@
9595
"eslint-plugin-jsx-a11y": "6.10.2",
9696
"eslint-plugin-prettier": "5.5.4",
9797
"eslint-plugin-react": "7.37.5",
98-
"eslint-plugin-react-hooks": "5.2.0",
98+
"eslint-plugin-react-hooks": "7.0.1",
9999
"fastify-tsconfig": "3.0.0",
100100
"globals": "16.5.0",
101101
"jsdom": "27.1.0",

src/components/ControlPlanes/ControlPlaneCard/ControlPlaneCardMenu.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Button, Menu, MenuItem } from '@ui5/webcomponents-react';
22

3-
import { Dispatch, FC, SetStateAction, useRef, useState } from 'react';
3+
import { Dispatch, FC, SetStateAction, useId, useState } from 'react';
44
import '@ui5/webcomponents-icons/dist/copy';
55
import '@ui5/webcomponents-icons/dist/accept';
66

@@ -17,7 +17,7 @@ export const ControlPlaneCardMenu: FC<ControlPlanesListMenuProps> = ({
1717
isDeleteMcpButtonDisabled,
1818
setIsEditManagedControlPlaneWizardOpen,
1919
}) => {
20-
const buttonRef = useRef(null);
20+
const openerId = useId();
2121
const [menuIsOpen, setMenuIsOpen] = useState(false);
2222
const { t } = useTranslation();
2323

@@ -28,15 +28,15 @@ export const ControlPlaneCardMenu: FC<ControlPlanesListMenuProps> = ({
2828
return (
2929
<>
3030
<Button
31-
ref={buttonRef}
31+
id={openerId}
3232
icon="overflow"
3333
icon-end
3434
data-testid="ControlPlaneCardMenu-opener"
3535
onClick={handleOpenerClick}
3636
/>
3737
<Menu
3838
open={menuIsOpen}
39-
opener={buttonRef.current}
39+
opener={openerId}
4040
onItemClick={(event) => {
4141
const action = (event.detail.item as HTMLElement).dataset.action;
4242
if (action === 'editMcp') {

src/components/ControlPlanes/ControlPlanePageMenu.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Dispatch, FC, SetStateAction, useRef, useState } from 'react';
1+
import { Dispatch, FC, SetStateAction, useId, useState } from 'react';
22
import { useTranslation } from 'react-i18next';
33
import { Button, Menu, MenuItem } from '@ui5/webcomponents-react';
44

@@ -7,7 +7,7 @@ type ControlPlanesListMenuProps = {
77
};
88

99
export const ControlPlanePageMenu: FC<ControlPlanesListMenuProps> = ({ setIsEditManagedControlPlaneWizardOpen }) => {
10-
const buttonRef = useRef(null);
10+
const openerId = useId();
1111
const [menuIsOpen, setMenuIsOpen] = useState(false);
1212
const { t } = useTranslation();
1313

@@ -17,10 +17,10 @@ export const ControlPlanePageMenu: FC<ControlPlanesListMenuProps> = ({ setIsEdit
1717

1818
return (
1919
<>
20-
<Button ref={buttonRef} icon="overflow" icon-end onClick={handleOpenerClick} />
20+
<Button id={openerId} icon="overflow" icon-end onClick={handleOpenerClick} />
2121
<Menu
2222
open={menuIsOpen}
23-
opener={buttonRef.current}
23+
opener={openerId}
2424
onItemClick={(event) => {
2525
const action = (event.detail.item as HTMLElement).dataset.action;
2626
if (action === 'editMcp') {

src/components/ControlPlanes/List/MembersAvatarView.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Avatar, AvatarGroup, Popover } from '@ui5/webcomponents-react';
22
import AvatarGroupType from '@ui5/webcomponents/dist/types/AvatarGroupType.js';
33
import PopoverPlacement from '@ui5/webcomponents/dist/types/PopoverPlacement.js';
4-
import { useRef, useState } from 'react';
4+
import { useId, useState } from 'react';
55
import { MemberTable } from '../../Members/MemberTable.tsx';
66
import { Member } from '../../../lib/api/types/shared/members';
77
import { generateInitialsForEmail } from '../../Helper/generateInitialsForEmail.ts';
@@ -13,7 +13,7 @@ interface Props {
1313
}
1414

1515
export function MembersAvatarView({ members, project, workspace }: Props) {
16-
const openerRef = useRef(null);
16+
const openerId = useId();
1717
const [popoverIsOpen, setPopoverIsOpen] = useState(false);
1818
const avatars = [];
1919

@@ -33,11 +33,11 @@ export function MembersAvatarView({ members, project, workspace }: Props) {
3333

3434
return (
3535
<div style={{ display: 'flex', justifyContent: 'flex-end' }}>
36-
<AvatarGroup ref={openerRef} style={{ maxWidth: '200px' }} type={AvatarGroupType.Group} onClick={handleOnClick}>
36+
<AvatarGroup id={openerId} style={{ maxWidth: '200px' }} type={AvatarGroupType.Group} onClick={handleOnClick}>
3737
{avatars}
3838
</AvatarGroup>
3939
<Popover
40-
opener={openerRef.current!}
40+
opener={openerId}
4141
placement={PopoverPlacement.Bottom}
4242
open={popoverIsOpen}
4343
onClose={() => {

src/components/Core/BreadcrumbFeedbackHeader.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { Button, FlexBox, FlexBoxAlignItems, Menu, MenuItem } from '@ui5/webcomp
33
import { useTranslation } from 'react-i18next';
44
import { FeedbackButton } from './FeedbackButton.tsx';
55
import { BetaButton } from './BetaButton.tsx';
6-
import { useRef, useState } from 'react';
6+
import { useId, useState } from 'react';
77
import { useAuthOnboarding } from '../../spaces/onboarding/auth/AuthContextOnboarding.tsx';
88
import { SearchParamToggleVisibility } from '../Helper/FeatureToggleExistance.tsx';
99
import { PathAwareBreadcrumbs } from './PathAwareBreadcrumbs/PathAwareBreadcrumbs.tsx';
@@ -30,20 +30,20 @@ export function BreadcrumbFeedbackHeader() {
3030
function LogoutMenu() {
3131
const auth = useAuthOnboarding();
3232
const { t } = useTranslation();
33+
const openerId = useId();
3334

34-
const buttonRef = useRef(null);
3535
const [menuIsOpen, setMenuIsOpen] = useState(false);
3636
return (
3737
<>
3838
<Button
39-
ref={buttonRef}
39+
id={openerId}
4040
icon="menu2"
4141
onClick={() => {
4242
setMenuIsOpen(true);
4343
}}
4444
/>
4545
<Menu
46-
opener={buttonRef.current}
46+
opener={openerId}
4747
open={menuIsOpen}
4848
onClose={() => {
4949
setMenuIsOpen(false);

src/components/Dialogs/KubectlCommandInfo/KubectlCreateProjectDialog.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { KubectlBaseDialog, FormField, CustomCommand } from './KubectlBaseDialog';
22
import { useTranslation } from 'react-i18next';
3+
import { useState } from 'react';
34

45
interface KubectlCreateProjectDialogProps {
56
onClose: () => void;
@@ -8,7 +9,7 @@ interface KubectlCreateProjectDialogProps {
89

910
export const KubectlCreateProjectDialog = ({ onClose, isOpen }: KubectlCreateProjectDialogProps) => {
1011
const { t } = useTranslation();
11-
const randomProjectName = Math.random().toString(36).substring(2, 8);
12+
const [randomProjectName] = useState(() => Math.random().toString(36).substring(2, 8));
1213

1314
const formFields: FormField[] = [
1415
{

src/components/Dialogs/KubectlCommandInfo/KubectlCreateWorkspaceDialog.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { KubectlBaseDialog, FormField, CustomCommand } from './KubectlBaseDialog';
22
import { useTranslation } from 'react-i18next';
3+
import { useState } from 'react';
34

45
interface KubectlCreateWorkspaceDialogProps {
56
onClose: () => void;
@@ -9,7 +10,7 @@ interface KubectlCreateWorkspaceDialogProps {
910

1011
export const KubectlCreateWorkspaceDialog = ({ onClose, isOpen, project }: KubectlCreateWorkspaceDialogProps) => {
1112
const { t } = useTranslation();
12-
const randomWorkspaceName = Math.random().toString(36).substring(2, 8);
13+
const [randomWorkspaceName] = useState(() => Math.random().toString(36).substring(2, 8));
1314
const projectName = project || '<Project Namespace>';
1415
const projectNamespace = `project-${projectName}`;
1516

src/components/Dialogs/ManagedResourceDeleteDialog.tsx

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, useState, useEffect } from 'react';
1+
import { FC, useState } from 'react';
22
import {
33
Button,
44
CheckBox,
@@ -20,22 +20,19 @@ type Props = {
2020
onClose: () => void;
2121
item: ManagedResourceItem | null;
2222
onDeletionConfirmed?: (item: ManagedResourceItem, force: boolean) => void;
23-
onCanceled?: () => void;
2423
};
2524

26-
export const ManagedResourceDeleteDialog: FC<Props> = ({ open, onClose, item, onDeletionConfirmed, onCanceled }) => {
25+
export const ManagedResourceDeleteDialog: FC<Props> = ({ open, onClose, item, onDeletionConfirmed }) => {
2726
const { t } = useTranslation();
2827
const [forceDeletion, setForceDeletion] = useState(false);
2928
const [advancedCollapsed, setAdvancedCollapsed] = useState(true);
3029
const [confirmationText, setConfirmationText] = useState('');
3130

32-
useEffect(() => {
33-
if (!open) {
34-
setForceDeletion(false);
35-
setAdvancedCollapsed(true);
36-
setConfirmationText('');
37-
}
38-
}, [open]);
31+
const resetForm = () => {
32+
setForceDeletion(false);
33+
setAdvancedCollapsed(true);
34+
setConfirmationText('');
35+
};
3936

4037
const resourceName = item?.metadata?.name ?? '';
4138

@@ -54,22 +51,21 @@ export const ManagedResourceDeleteDialog: FC<Props> = ({ open, onClose, item, on
5451
if (item && onDeletionConfirmed) {
5552
onDeletionConfirmed(item, forceDeletion);
5653
}
57-
onClose();
54+
handleClose();
5855
};
5956

60-
const handleCancel = () => {
57+
const handleClose = () => {
58+
resetForm();
6159
onClose();
62-
if (onCanceled) {
63-
onCanceled();
64-
}
6560
};
6661

6762
return (
6863
<Dialog
6964
open={open}
7065
headerText={t('ManagedResources.deleteDialogTitle')}
7166
className={styles.dialog}
72-
onClose={handleCancel}
67+
onOpen={resetForm}
68+
onClose={handleClose}
7369
>
7470
<FlexBox direction="Column" className={styles.content}>
7571
<DeleteConfirmationForm
@@ -99,7 +95,7 @@ export const ManagedResourceDeleteDialog: FC<Props> = ({ open, onClose, item, on
9995
</Panel>
10096

10197
<FlexBox justifyContent="End" className={styles.actions}>
102-
<Button design="Transparent" onClick={handleCancel}>
98+
<Button design="Transparent" onClick={handleClose}>
10399
{t('buttons.cancel')}
104100
</Button>
105101
<Button design={ButtonDesign.Negative} disabled={!isConfirmed} onClick={handleDelete}>

src/components/Graphs/useGraph.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export function useGraph(colorBy: ColorBy, onYamlClick: (item: ManagedResourceIt
113113

114114
useEffect(() => {
115115
if (!treeData.length) {
116+
// eslint-disable-next-line react-hooks/set-state-in-effect
116117
setNodes([]);
117118
setEdges([]);
118119
return;

0 commit comments

Comments
 (0)