((pr
}
});
- if (_size === 'auto' && splitterElementRef.current) {
+ if (splitterElementRef.current) {
elementObserver.observe(splitterElementRef.current);
- } else {
- setFlexStyles({ flex: `0 1 ${_size}` });
}
return () => {
elementObserver.disconnect();
};
- }, [_size, flexBasisApplied, vertical]);
+ }, [_size, flexBasisApplied, splitterElementRef, vertical]);
useIsomorphicLayoutEffect(() => {
if (reset) {
- setFlexStyles(undefined);
+ setObservedFlex(null);
setFlexBasisApplied(false);
}
- }, [reset, _size]);
-
- useIsomorphicLayoutEffect(() => {
- if (flexStyles === undefined) {
- setFlexStyles(defaultFlexStyles);
- }
- }, [flexStyles]);
+ }, [reset]);
return (
{
})
.realMouseUp({ position: 'center' });
+ cy.wait(100);
+
cy.findByTestId('0')
.invoke('text')
.then((txt) => parseInt(txt, 10))
diff --git a/packages/main/src/components/SplitterLayout/index.tsx b/packages/main/src/components/SplitterLayout/index.tsx
index 92f22f39542..f0d84ecfa0b 100644
--- a/packages/main/src/components/SplitterLayout/index.tsx
+++ b/packages/main/src/components/SplitterLayout/index.tsx
@@ -53,6 +53,8 @@ const SplitterLayout = forwardRef((prop
setReset(true);
}
initialCustomDep.current = false;
+ // Can't determine external dependencies
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, options?.resetOnCustomDepsChange ?? []);
useEffect(() => {
@@ -76,7 +78,7 @@ const SplitterLayout = forwardRef((prop
layoutObserver.disconnect();
};
}
- }, [vertical, options?.resetOnSizeChange]);
+ }, [vertical, options?.resetOnSizeChange, sLRef]);
useEffect(() => {
if (reset) {
diff --git a/packages/main/src/components/ThemeProvider/I18n.cy.tsx b/packages/main/src/components/ThemeProvider/I18n.cy.tsx
index 771bc9231ae..ce91ef89d25 100644
--- a/packages/main/src/components/ThemeProvider/I18n.cy.tsx
+++ b/packages/main/src/components/ThemeProvider/I18n.cy.tsx
@@ -72,6 +72,7 @@ describe('I18nProvider', () => {
return (
<>
{i18nBundle.getText('PLEASE_WAIT')}
+ {/* eslint-disable-next-line react-hooks/refs */}
{renderCounter.current}
>
);
diff --git a/packages/main/src/internal/useObserveHeights.ts b/packages/main/src/internal/useObserveHeights.ts
index b5a9ffdd1c9..8aa07bad48c 100644
--- a/packages/main/src/internal/useObserveHeights.ts
+++ b/packages/main/src/internal/useObserveHeights.ts
@@ -26,6 +26,8 @@ export const useObserveHeights = (
const prevScrollTop = useRef(0);
const onScroll = useCallback(
+ // ToDo: Check how to properly memoize this callback so it supports React Compiler
+ // eslint-disable-next-line react-hooks/preserve-manual-memoization
(e) => {
const scrollDown = prevScrollTop.current <= e.target.scrollTop;
prevScrollTop.current = e.target.scrollTop;
diff --git a/packages/main/src/webComponents/Card/Card.stories.tsx b/packages/main/src/webComponents/Card/Card.stories.tsx
index 6f505ddc0e2..1b3533fd67d 100644
--- a/packages/main/src/webComponents/Card/Card.stories.tsx
+++ b/packages/main/src/webComponents/Card/Card.stories.tsx
@@ -72,7 +72,7 @@ const simpleDataSet = [
];
export const WithAnalyticalCardHeader = {
- render: (args) => {
+ render: () => {
return (
diff --git a/patterns/navigation-layout/package-lock.json b/patterns/navigation-layout/package-lock.json
index aeb70a1b839..5a007897dec 100644
--- a/patterns/navigation-layout/package-lock.json
+++ b/patterns/navigation-layout/package-lock.json
@@ -21,7 +21,7 @@
"@types/react-dom": "19.2.3",
"@vitejs/plugin-react": "5.1.2",
"eslint": "9.39.2",
- "eslint-plugin-react-hooks": "6.1.1",
+ "eslint-plugin-react-hooks": "7.0.0",
"eslint-plugin-react-refresh": "0.5.0",
"globals": "17.3.0",
"typescript": "5.8.3",
@@ -2332,14 +2332,15 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-6.1.1.tgz",
- "integrity": "sha512-St9EKZzOAQF704nt2oJvAKZHjhrpg25ClQoaAlHmPZuajFldVLqRDW4VBNAS01NzeiQF0m0qhG1ZA807K6aVaQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.0.tgz",
+ "integrity": "sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.24.4",
"@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
"zod": "^3.22.4 || ^4.0.0",
"zod-validation-error": "^3.0.3 || ^4.0.0"
},
@@ -2638,6 +2639,23 @@
"node": ">=8"
}
},
+ "node_modules/hermes-estree": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.25.1"
+ }
+ },
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
diff --git a/patterns/navigation-layout/package.json b/patterns/navigation-layout/package.json
index 1e505a72fbd..78731078cc3 100644
--- a/patterns/navigation-layout/package.json
+++ b/patterns/navigation-layout/package.json
@@ -23,7 +23,7 @@
"@types/react-dom": "19.2.3",
"@vitejs/plugin-react": "5.1.2",
"eslint": "9.39.2",
- "eslint-plugin-react-hooks": "6.1.1",
+ "eslint-plugin-react-hooks": "7.0.0",
"eslint-plugin-react-refresh": "0.5.0",
"globals": "17.3.0",
"typescript": "5.8.3",
diff --git a/patterns/selection-assistant/InputSelectionAssistant.tsx b/patterns/selection-assistant/InputSelectionAssistant.tsx
index 5f122a1c01b..3e5a088bcbc 100644
--- a/patterns/selection-assistant/InputSelectionAssistant.tsx
+++ b/patterns/selection-assistant/InputSelectionAssistant.tsx
@@ -1,7 +1,7 @@
import getElementSelection from '@ui5/webcomponents-base/dist/util/SelectionAssistant.js';
import ai from '@ui5/webcomponents-icons/dist/ai.js';
-import type { ButtonDomRef, InputPropTypes } from '@ui5/webcomponents-react';
import { Button, Input, Label, Toast } from '@ui5/webcomponents-react';
+import type { ButtonDomRef, InputPropTypes } from '@ui5/webcomponents-react';
import type { CSSProperties } from 'react';
import { useRef, useState } from 'react';
import { SelectionAssistantContainer } from '@/patterns/selection-assistant/SelectionAssistantContainer.js';
diff --git a/templates/vite-ts/package-lock.json b/templates/vite-ts/package-lock.json
index 7a118e863ee..061524ba090 100644
--- a/templates/vite-ts/package-lock.json
+++ b/templates/vite-ts/package-lock.json
@@ -23,7 +23,7 @@
"@vitejs/plugin-react": "5.1.2",
"cypress": "15.9.0",
"eslint": "9.39.2",
- "eslint-plugin-react-hooks": "6.1.1",
+ "eslint-plugin-react-hooks": "7.0.0",
"eslint-plugin-react-refresh": "0.5.0",
"globals": "17.3.0",
"typescript": "5.8.3",
@@ -2994,14 +2994,15 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-6.1.1.tgz",
- "integrity": "sha512-St9EKZzOAQF704nt2oJvAKZHjhrpg25ClQoaAlHmPZuajFldVLqRDW4VBNAS01NzeiQF0m0qhG1ZA807K6aVaQ==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.0.tgz",
+ "integrity": "sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/core": "^7.24.4",
"@babel/parser": "^7.24.4",
+ "hermes-parser": "^0.25.1",
"zod": "^3.22.4 || ^4.0.0",
"zod-validation-error": "^3.0.3 || ^4.0.0"
},
@@ -3632,6 +3633,23 @@
"node": ">= 0.4"
}
},
+ "node_modules/hermes-estree": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz",
+ "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/hermes-parser": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz",
+ "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hermes-estree": "0.25.1"
+ }
+ },
"node_modules/http-signature": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz",
diff --git a/templates/vite-ts/package.json b/templates/vite-ts/package.json
index 175e73b1f95..b52b879e049 100644
--- a/templates/vite-ts/package.json
+++ b/templates/vite-ts/package.json
@@ -27,7 +27,7 @@
"@ui5/webcomponents-cypress-commands": "2.18.1",
"cypress": "15.9.0",
"eslint": "9.39.2",
- "eslint-plugin-react-hooks": "6.1.1",
+ "eslint-plugin-react-hooks": "7.0.0",
"eslint-plugin-react-refresh": "0.5.0",
"globals": "17.3.0",
"typescript": "5.8.3",
diff --git a/yarn.lock b/yarn.lock
index 57312deaecb..21917a8eb31 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5403,7 +5403,7 @@ __metadata:
dependencies:
"@ui5/webcomponents-react-base": "workspace:~"
peerDependencies:
- "@ui5/webcomponents-ai": ~2.18.0
+ "@ui5/webcomponents-ai": ~2.18.0 || ~2.19.0
react: ^18 || ^19
languageName: unknown
linkType: soft
@@ -5446,8 +5446,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "@ui5/webcomponents-cypress-commands@workspace:packages/cypress-commands"
peerDependencies:
- "@ui5/webcomponents": ~2.18.0
- "@ui5/webcomponents-base": ~2.18.0
+ "@ui5/webcomponents": ~2.18.0 || ~2.19.0
+ "@ui5/webcomponents-base": ~2.18.0 || ~2.19.0
cypress: ^12 || ^13 || ^14 || ^15
peerDependenciesMeta:
"@ui5/webcomponents":
@@ -5512,7 +5512,7 @@ __metadata:
resolution: "@ui5/webcomponents-react-base@workspace:packages/base"
peerDependencies:
"@types/react": "*"
- "@ui5/webcomponents-base": ~2.18.0
+ "@ui5/webcomponents-base": ~2.18.0 || ~2.19.0
react: ^18 || ^19
peerDependenciesMeta:
"@types/react":
@@ -5556,7 +5556,7 @@ __metadata:
peerDependencies:
"@types/react": "*"
"@types/react-dom": "*"
- "@ui5/webcomponents-compat": ~2.18.0
+ "@ui5/webcomponents-compat": ~2.18.0 || ~2.19.0
"@ui5/webcomponents-react": ~2.18.0
react: ^18 || ^19
react-dom: ^18 || ^19
@@ -5583,10 +5583,10 @@ __metadata:
peerDependencies:
"@types/react": "*"
"@types/react-dom": "*"
- "@ui5/webcomponents": ~2.18.0
- "@ui5/webcomponents-base": ~2.18.0
- "@ui5/webcomponents-fiori": ~2.18.0
- "@ui5/webcomponents-icons": ~2.18.0
+ "@ui5/webcomponents": ~2.18.0 || ~2.19.0
+ "@ui5/webcomponents-base": ~2.18.0 || ~2.19.0
+ "@ui5/webcomponents-fiori": ~2.18.0 || ~2.19.0
+ "@ui5/webcomponents-icons": ~2.18.0 || ~2.19.0
react: ^18 || ^19
react-dom: ^18 || ^19
peerDependenciesMeta:
@@ -10126,17 +10126,18 @@ __metadata:
languageName: node
linkType: hard
-"eslint-plugin-react-hooks@npm:6.1.1":
- version: 6.1.1
- resolution: "eslint-plugin-react-hooks@npm:6.1.1"
+"eslint-plugin-react-hooks@npm:7.0.1":
+ version: 7.0.1
+ resolution: "eslint-plugin-react-hooks@npm:7.0.1"
dependencies:
"@babel/core": "npm:^7.24.4"
"@babel/parser": "npm:^7.24.4"
- zod: "npm:^3.22.4 || ^4.0.0"
- zod-validation-error: "npm:^3.0.3 || ^4.0.0"
+ hermes-parser: "npm:^0.25.1"
+ zod: "npm:^3.25.0 || ^4.0.0"
+ zod-validation-error: "npm:^3.5.0 || ^4.0.0"
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
- checksum: 10c0/579be053bc89c995a6c03996f9ee3f6bac88946b4b1c8b891b42f981e7c05a9c5de46324bbd2a33199855c0a602820c0e3eeb7f840730301b77a9ba3dc7a0ae2
+ checksum: 10c0/1e711d1a9d1fa9cfc51fa1572500656577201199c70c795c6a27adfc1df39e5c598f69aab6aa91117753d23cc1f11388579a2bed14921cf9a4efe60ae8618496
languageName: node
linkType: hard
@@ -11906,6 +11907,22 @@ __metadata:
languageName: node
linkType: hard
+"hermes-estree@npm:0.25.1":
+ version: 0.25.1
+ resolution: "hermes-estree@npm:0.25.1"
+ checksum: 10c0/48be3b2fa37a0cbc77a112a89096fa212f25d06de92781b163d67853d210a8a5c3784fac23d7d48335058f7ed283115c87b4332c2a2abaaccc76d0ead1a282ac
+ languageName: node
+ linkType: hard
+
+"hermes-parser@npm:^0.25.1":
+ version: 0.25.1
+ resolution: "hermes-parser@npm:0.25.1"
+ dependencies:
+ hermes-estree: "npm:0.25.1"
+ checksum: 10c0/3abaa4c6f1bcc25273f267297a89a4904963ea29af19b8e4f6eabe04f1c2c7e9abd7bfc4730ddb1d58f2ea04b6fee74053d8bddb5656ec6ebf6c79cc8d14202c
+ languageName: node
+ linkType: hard
+
"highlight.js@npm:^11.6.0":
version: 11.10.0
resolution: "highlight.js@npm:11.10.0"
@@ -20766,7 +20783,7 @@ __metadata:
eslint-plugin-no-only-tests: "npm:3.3.0"
eslint-plugin-prettier: "npm:5.5.5"
eslint-plugin-react: "npm:7.37.5"
- eslint-plugin-react-hooks: "npm:6.1.1"
+ eslint-plugin-react-hooks: "npm:7.0.1"
eslint-plugin-storybook: "npm:10.2.3"
glob: "npm:13.0.0"
globals: "npm:17.3.0"
@@ -22233,7 +22250,7 @@ __metadata:
languageName: node
linkType: hard
-"zod-validation-error@npm:^3.0.3 || ^4.0.0":
+"zod-validation-error@npm:^3.5.0 || ^4.0.0":
version: 4.0.2
resolution: "zod-validation-error@npm:4.0.2"
peerDependencies:
@@ -22242,10 +22259,10 @@ __metadata:
languageName: node
linkType: hard
-"zod@npm:^3.22.4 || ^4.0.0":
- version: 4.1.12
- resolution: "zod@npm:4.1.12"
- checksum: 10c0/b64c1feb19e99d77075261eaf613e0b2be4dfcd3551eff65ad8b4f2a079b61e379854d066f7d447491fcf193f45babd8095551a9d47973d30b46b6d8e2c46774
+"zod@npm:^3.25.0 || ^4.0.0":
+ version: 4.3.6
+ resolution: "zod@npm:4.3.6"
+ checksum: 10c0/860d25a81ab41d33aa25f8d0d07b091a04acb426e605f396227a796e9e800c44723ed96d0f53a512b57be3d1520f45bf69c0cb3b378a232a00787a2609625307
languageName: node
linkType: hard