From bc8f89d6fa96a448a8a67141fb51e84227a9516f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20H=C3=B8egh?= Date: Thu, 6 Feb 2025 13:45:02 +0100 Subject: [PATCH] fix(FormStatus): ensure content given as `children` will be displayed in linked GlobalStatus (#4547) --- .../src/components/form-status/FormStatus.js | 6 ++-- .../form-status/__tests__/FormStatus.test.tsx | 35 +++++++++++++++++++ .../Provider/__tests__/Provider.test.tsx | 4 +++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/packages/dnb-eufemia/src/components/form-status/FormStatus.js b/packages/dnb-eufemia/src/components/form-status/FormStatus.js index c2dd61e51a6..091162957d9 100644 --- a/packages/dnb-eufemia/src/components/form-status/FormStatus.js +++ b/packages/dnb-eufemia/src/components/form-status/FormStatus.js @@ -188,14 +188,14 @@ export default class FormStatus extends React.PureComponent { (provider) => { // gets called once ready if (this.props.state === 'error' && this.isReadyToGetVisible()) { - const { state, text, globalStatus, label } = + const { state, text, children, globalStatus, label } = this.getProps(context) provider.add({ state, status_id: this.getStatusId(), item: { item_id: this.state.id, - text: globalStatus?.message || text, + text: globalStatus?.message || text || children, status_anchor_label: label, status_anchor_url: true, }, @@ -280,7 +280,7 @@ export default class FormStatus extends React.PureComponent { status_id, item: { item_id: this.state.id, - text: globalStatus?.message || text, + text: globalStatus?.message || text || children, status_anchor_label: label, status_anchor_url: true, }, diff --git a/packages/dnb-eufemia/src/components/form-status/__tests__/FormStatus.test.tsx b/packages/dnb-eufemia/src/components/form-status/__tests__/FormStatus.test.tsx index b308a81cbd2..f1bc7dbdf08 100644 --- a/packages/dnb-eufemia/src/components/form-status/__tests__/FormStatus.test.tsx +++ b/packages/dnb-eufemia/src/components/form-status/__tests__/FormStatus.test.tsx @@ -235,6 +235,10 @@ describe('FormStatus component', () => { ).toHaveTextContent('Custom GlobalStatus Title') }) + expect( + document.querySelector('.dnb-global-status__message__content') + ).toHaveTextContent('has error') + // Close the GlobalStatus rerender( <> @@ -259,6 +263,37 @@ describe('FormStatus component', () => { document.querySelector('.dnb-global-status__title') ).toBeNull() }) + + // Show the GlobalStatus and set a custom title + rerender( + <> + + + has error given as children + + + ) + + expect(document.querySelector('.dnb-form-status')).toHaveClass('bar') + + await waitFor(() => { + expect( + document.querySelector('.dnb-global-status__title') + ).toHaveTextContent('Custom GlobalStatus Title') + }) + + expect( + document.querySelector('.dnb-global-status__message__content') + ).toHaveTextContent('has error given as children') }) it('should support spacing props', () => { diff --git a/packages/dnb-eufemia/src/extensions/forms/DataContext/Provider/__tests__/Provider.test.tsx b/packages/dnb-eufemia/src/extensions/forms/DataContext/Provider/__tests__/Provider.test.tsx index 2a2d02d4c49..b2dd119a7dc 100644 --- a/packages/dnb-eufemia/src/extensions/forms/DataContext/Provider/__tests__/Provider.test.tsx +++ b/packages/dnb-eufemia/src/extensions/forms/DataContext/Provider/__tests__/Provider.test.tsx @@ -2536,6 +2536,10 @@ describe('DataContext.Provider', () => { ).toHaveTextContent(nb.Field.errorSummaryTitle) }) + expect( + document.querySelector('.dnb-global-status__message__content') + ).toHaveTextContent(nb.Field.errorRequired + 'Gå til') + await userEvent.type(input, 'foo') fireEvent.blur(input)