Skip to content

Commit

Permalink
♻️ DRY the shared tab titles/definitions
Browse files Browse the repository at this point in the history
  • Loading branch information
sergei-maertens committed Aug 25, 2023
1 parent 803fab1 commit 7d06a88
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 69 deletions.
1 change: 1 addition & 0 deletions src/components/builder/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ export * as Validate from './validate';
export * as Registration from './registration';
export * as Prefill from './prefill';
export * as Translations from './i18n';
export * as BuilderTabs from './tabs';
57 changes: 57 additions & 0 deletions src/components/builder/tabs.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import {FormattedMessage} from 'react-intl';

import {Tab} from '@/components/formio';

export interface TabProps {
hasErrors: boolean;
}

export const Basic: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Basic' tab"
defaultMessage="Basic"
/>
</Tab>
);

export const Advanced: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Advanced' tab"
defaultMessage="Advanced"
/>
</Tab>
);
export const Validation: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Validation' tab"
defaultMessage="Validation"
/>
</Tab>
);
export const Registration: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Registration' tab"
defaultMessage="Registration"
/>
</Tab>
);
export const Prefill: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Prefill' tab"
defaultMessage="Prefill"
/>
</Tab>
);
export const Translations: React.FC<TabProps> = props => (
<Tab {...props}>
<FormattedMessage
description="Component edit form tab title for 'Translations' tab"
defaultMessage="Translations"
/>
</Tab>
);
41 changes: 9 additions & 32 deletions src/registry/email/edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {FormattedMessage, defineMessage, useIntl} from 'react-intl';

import {
AutoComplete,
BuilderTabs,
ClearOnHide,
Description,
Hidden,
Expand All @@ -19,7 +20,7 @@ import {
Validate,
useDeriveComponentKey,
} from '@/components/builder';
import {Checkbox, Tab, TabList, TabPanel, Tabs, TextField} from '@/components/formio';
import {Checkbox, TabList, TabPanel, Tabs, TextField} from '@/components/formio';
import {getErrorNames} from '@/utils/errors';

import {EditFormDefinition} from '../types';
Expand Down Expand Up @@ -52,7 +53,7 @@ const EditForm: EditFormDefinition<EmailComponentSchema> = () => {
return (
<Tabs>
<TabList>
<Tab
<BuilderTabs.Basic
hasErrors={hasAnyError(
'label',
'key',
Expand All @@ -68,36 +69,12 @@ const EditForm: EditFormDefinition<EmailComponentSchema> = () => {
'defaultValue',
'autocomplete'
)}
>
<FormattedMessage
description="Component edit form tab title for 'Basic' tab"
defaultMessage="Basic"
/>
</Tab>
<Tab hasErrors={hasAnyError('conditional')}>
<FormattedMessage
description="Component edit form tab title for 'Advanced' tab"
defaultMessage="Advanced"
/>
</Tab>
<Tab hasErrors={hasAnyError('validate')}>
<FormattedMessage
description="Component edit form tab title for 'Validation' tab"
defaultMessage="Validation"
/>
</Tab>
<Tab hasErrors={hasAnyError('registration')}>
<FormattedMessage
description="Component edit form tab title for 'Registration' tab"
defaultMessage="Registration"
/>
</Tab>
<Tab hasErrors={hasAnyError('openForms.translations')}>
<FormattedMessage
description="Component edit form tab title for 'Translations' tab"
defaultMessage="Translations"
/>
</Tab>
/>
<BuilderTabs.Advanced hasErrors={hasAnyError('conditional')} />
<BuilderTabs.Validation hasErrors={hasAnyError('validate')} />
<BuilderTabs.Registration hasErrors={hasAnyError('registration')} />
<BuilderTabs.Prefill hasErrors={hasAnyError('prefill')} />
<BuilderTabs.Translations hasErrors={hasAnyError('openForms.translations')} />
</TabList>

{/* Basic tab */}
Expand Down
45 changes: 8 additions & 37 deletions src/registry/textfield/edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {FormattedMessage, useIntl} from 'react-intl';

import {
AutoComplete,
BuilderTabs,
ClearOnHide,
ComponentSelect,
Description,
Expand Down Expand Up @@ -62,7 +63,7 @@ const EditForm: EditFormDefinition<TextFieldComponentSchema> = () => {
return (
<Tabs>
<TabList>
<Tab
<BuilderTabs.Basic
hasErrors={hasAnyError(
'label',
'key',
Expand All @@ -81,12 +82,7 @@ const EditForm: EditFormDefinition<TextFieldComponentSchema> = () => {
'placeholder',
'showCharCount'
)}
>
<FormattedMessage
description="Component edit form tab title for 'Basic' tab"
defaultMessage="Basic"
/>
</Tab>
/>
<Tab
hasErrors={hasAnyError(
'deriveStreetName',
Expand All @@ -100,36 +96,11 @@ const EditForm: EditFormDefinition<TextFieldComponentSchema> = () => {
defaultMessage="Location"
/>
</Tab>
<Tab hasErrors={hasAnyError('conditional')}>
<FormattedMessage
description="Component edit form tab title for 'Advanced' tab"
defaultMessage="Advanced"
/>
</Tab>
<Tab hasErrors={hasAnyError('validate')}>
<FormattedMessage
description="Component edit form tab title for 'Validation' tab"
defaultMessage="Validation"
/>
</Tab>
<Tab hasErrors={hasAnyError('registration')}>
<FormattedMessage
description="Component edit form tab title for 'Registration' tab"
defaultMessage="Registration"
/>
</Tab>
<Tab hasErrors={hasAnyError('prefill')}>
<FormattedMessage
description="Component edit form tab title for 'Prefill' tab"
defaultMessage="Prefill"
/>
</Tab>
<Tab hasErrors={hasAnyError('openForms.translations')}>
<FormattedMessage
description="Component edit form tab title for 'Translations' tab"
defaultMessage="Translations"
/>
</Tab>
<BuilderTabs.Advanced hasErrors={hasAnyError('conditional')} />
<BuilderTabs.Validation hasErrors={hasAnyError('validate')} />
<BuilderTabs.Registration hasErrors={hasAnyError('registration')} />
<BuilderTabs.Prefill hasErrors={hasAnyError('prefill')} />
<BuilderTabs.Translations hasErrors={hasAnyError('openForms.translations')} />
</TabList>

{/* Basic tab */}
Expand Down

0 comments on commit 7d06a88

Please sign in to comment.