From 61497b75aa6b93731a6f6472cb58d9fa36d75d03 Mon Sep 17 00:00:00 2001 From: Geoffroy Baccarini Date: Fri, 11 Oct 2024 16:05:10 +0200 Subject: [PATCH 1/3] feat(TMC-25993): change default UIForm collapsible panel title --- .changeset/shiny-mirrors-fail.md | 5 +++++ .../CollapsibleFieldset.component.js | 6 +++++- .../CollapsibleFieldset.component.test.js | 11 ++++++----- .../CollapsibleFieldset.component.test.js.snap | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .changeset/shiny-mirrors-fail.md diff --git a/.changeset/shiny-mirrors-fail.md b/.changeset/shiny-mirrors-fail.md new file mode 100644 index 00000000000..51deb5be4e2 --- /dev/null +++ b/.changeset/shiny-mirrors-fail.md @@ -0,0 +1,5 @@ +--- +'@talend/react-forms': minor +--- + +feat: Better handle collapsible fieldset title for UIForm definitions by using schema title by default diff --git a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.js b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.js index 42cfd409d84..a301268f602 100644 --- a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.js +++ b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.js @@ -32,6 +32,10 @@ function getDrillKey(key) { } export function defaultTitle(formData, schema, options) { + if (schema.title) { + return schema.title; + } + const title = (schema.items || []).reduce((acc, item) => { let value; if (item.key) { @@ -66,7 +70,7 @@ export function defaultTitle(formData, schema, options) { return schema.options.emptyTitleFallback; } - return schema.title; + return ''; } /** diff --git a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js index 62aae154343..75d5d824a95 100644 --- a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js +++ b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js @@ -14,7 +14,6 @@ function customTitle(value, schema) { } const schema = { - title: 'Basic', description: 'This is description', items: [ { @@ -68,7 +67,10 @@ const defaultTitleMockData = { const props = { id: 'my-fieldset', - schema, + schema: { + ...schema, + title: 'Basic', + }, value, onChange: jest.fn(), }; @@ -91,7 +93,7 @@ describe('CollapsibleFieldset', () => { , ); - expect(screen.getByText('Jimmy, Somsanith')).toBeInTheDocument(); + expect(screen.getByText('Basic')).toBeInTheDocument(); expect(screen.getByRole('button')).toHaveAttribute('aria-expanded', 'false'); }); it('should render a custom title', () => { @@ -182,7 +184,7 @@ describe('CollapsibleFieldset', () => { }); describe('defaultTitle', () => { - it('should return schema.title by default if no emptyTitleFallback has been provided in options', () => { + it('should return schema.title by default', () => { // given not used in an array you have the schema.title expect(defaultTitle({}, { title: 'Comment' })).toBe('Comment'); // given no value, you have the schema.title @@ -218,7 +220,6 @@ describe('defaultTitle', () => { }); it('should support recursive call on deeper objects', () => { const complexSchema = { - title: 'Basic', items: [ { key: ['type'], diff --git a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/__snapshots__/CollapsibleFieldset.component.test.js.snap b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/__snapshots__/CollapsibleFieldset.component.test.js.snap index 54d6a3d1972..eafad93e88d 100644 --- a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/__snapshots__/CollapsibleFieldset.component.test.js.snap +++ b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/__snapshots__/CollapsibleFieldset.component.test.js.snap @@ -34,7 +34,7 @@ exports[`CollapsibleFieldset should render 1`] = ` - Jimmy, Somsanith + Basic
Date: Fri, 11 Oct 2024 16:27:03 +0200 Subject: [PATCH 2/3] fix test --- .../CollapsibleFieldset/CollapsibleFieldset.component.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js index 75d5d824a95..fdea60a9d1f 100644 --- a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js +++ b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js @@ -188,7 +188,7 @@ describe('defaultTitle', () => { // given not used in an array you have the schema.title expect(defaultTitle({}, { title: 'Comment' })).toBe('Comment'); // given no value, you have the schema.title - expect(defaultTitle({}, schema)).toBe(schema.title); + expect(defaultTitle({}, schema)).toBe('Comment'); }); it('should return if emptyTitleFallback has been provided and computed title is empty', () => { From 975e7f7151b1da6c30dac6f0aa063a87b36f2a79 Mon Sep 17 00:00:00 2001 From: Geoffroy Baccarini Date: Fri, 11 Oct 2024 16:38:36 +0200 Subject: [PATCH 3/3] fix test --- .../CollapsibleFieldset/CollapsibleFieldset.component.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js index fdea60a9d1f..c0605a72773 100644 --- a/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js +++ b/packages/forms/src/UIForm/fieldsets/CollapsibleFieldset/CollapsibleFieldset.component.test.js @@ -188,7 +188,7 @@ describe('defaultTitle', () => { // given not used in an array you have the schema.title expect(defaultTitle({}, { title: 'Comment' })).toBe('Comment'); // given no value, you have the schema.title - expect(defaultTitle({}, schema)).toBe('Comment'); + expect(defaultTitle({}, schema)).toBe(''); }); it('should return if emptyTitleFallback has been provided and computed title is empty', () => {