From e2a11c0fbde39267d2815fbaa640abc639dbac20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B8egh?= Date: Wed, 5 Feb 2025 15:21:59 +0100 Subject: [PATCH] fix(Forms): ensure `pathUndefined` on Form.Visibility does render when value is `undefined` --- .../__tests__/useVisibility.test.tsx | 35 +++++++++++++++++++ .../forms/Form/Visibility/useVisibility.tsx | 4 ++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/__tests__/useVisibility.test.tsx b/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/__tests__/useVisibility.test.tsx index 716b962e2a5..9c1a2d02f3c 100644 --- a/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/__tests__/useVisibility.test.tsx +++ b/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/__tests__/useVisibility.test.tsx @@ -103,6 +103,19 @@ describe('useVisibility', () => { ) expect(result.current.check()).toBe(true) }) + + it('should return false when value exists but is "undefined"', () => { + const { result } = renderHook(useVisibility, { + wrapper: ({ children }) => ( + {children} + ), + }) + expect( + result.current.check({ + pathUndefined: '/isUndefined', + }) + ).toBe(true) + }) }) describe('pathTruthy', () => { @@ -725,6 +738,28 @@ describe('useVisibility', () => { ) expect(result.current.check()).toBe(true) }) + + it('should return true when value exists but is "undefined"', () => { + const { result } = renderHook( + () => + useVisibility({ + withinIterate: true, + pathUndefined: '/isUndefined', + }), + { + wrapper: ({ children }) => ( + + {children} + + ), + } + ) + expect(result.current.check()).toBe(true) + }) }) describe('pathTruthy', () => { diff --git a/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/useVisibility.tsx b/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/useVisibility.tsx index 738dce5a957..49550e0fe68 100644 --- a/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/useVisibility.tsx +++ b/packages/dnb-eufemia/src/extensions/forms/Form/Visibility/useVisibility.tsx @@ -121,7 +121,9 @@ export default function useVisibility(props?: Partial) { pathUndefined && pointer.has(data, makeLocalPath(pathUndefined)) ) { - return false + return ( + pointer.get(data, makeLocalPath(pathUndefined)) === undefined + ) } const getValue = (path: Path) => {