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..c0605a72773 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,11 +184,11 @@ 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 - expect(defaultTitle({}, schema)).toBe(schema.title); + expect(defaultTitle({}, schema)).toBe(''); }); it('should return if emptyTitleFallback has been provided and computed title is empty', () => { @@ -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