Skip to content

Commit 976b2a8

Browse files
committed
Simplify code and extract shared pieces
1 parent 668c2ea commit 976b2a8

File tree

17 files changed

+42
-184
lines changed

17 files changed

+42
-184
lines changed

packages/carbon-component-mapper/demo/demo-schemas/wizard-schema.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const wizardSchema = {
2727
component: componentTypes.TEXTAREA,
2828
name: 'source.source-name',
2929
type: 'text',
30-
label: 'Source name',
30+
label: 'Source name'
3131
},
3232
{
3333
component: componentTypes.SELECT,
@@ -42,7 +42,7 @@ export const wizardSchema = {
4242
{
4343
value: 'google',
4444
label: 'Google'
45-
},
45+
}
4646
],
4747
validate: [
4848
{

packages/carbon-component-mapper/demo/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from 'react';
22
import ReactDOM from 'react-dom';
33
import FormRenderer from '@data-driven-forms/react-form-renderer';
4-
import { arraySchemaDDF } from './demo-schemas/widget-schema';
4+
// import { arraySchemaDDF } from './demo-schemas/widget-schema';
55
import { componentMapper, FormTemplate } from '../src';
66
import { wizardSchema } from './demo-schemas/wizard-schema';
77
import sandboxSchema from './demo-schemas/sandbox';

packages/carbon-component-mapper/src/common/is-optional.js

Lines changed: 0 additions & 15 deletions
This file was deleted.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import React from 'react';
2+
import WithDescription from './with-description';
3+
4+
const prepareProps = ({ isDisabled, isReadOnly, label, description, ...props }) => ({
5+
disabled: isDisabled,
6+
labelText: label,
7+
readOnly: isReadOnly,
8+
...props,
9+
...(description ? { labelText: <WithDescription description={description} labelText={label || props.labelText} /> } : {})
10+
});
11+
12+
export default prepareProps;

packages/carbon-component-mapper/src/common/with-description.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,7 @@ import PropTypes from 'prop-types';
33

44
import { Tooltip } from 'carbon-components-react';
55

6-
const WithDescription = ({ labelText, description }) => (
7-
<React.Fragment>
8-
{labelText} <Tooltip>{description}</Tooltip>
9-
</React.Fragment>
10-
);
6+
const WithDescription = ({ labelText, description }) => <Tooltip triggerText={labelText}>{description}</Tooltip>;
117

128
WithDescription.propTypes = {
139
labelText: PropTypes.node,

packages/carbon-component-mapper/src/files/checkbox.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import MultipleChoiceListCommon from '@data-driven-forms/common/src/multiple-cho
66
import { Checkbox as CarbonCheckbox, FormGroup } from 'carbon-components-react';
77

88
import WithDescription from '../common/with-description';
9+
import prepareProps from '../common/prepare-props';
910

1011
const Wrapper = ({ label, description, children }) => (
1112
<FormGroup legendText={description ? <WithDescription labelText={label} description={description} /> : label}>{children}</FormGroup>
@@ -18,11 +19,9 @@ Wrapper.propTypes = {
1819
};
1920

2021
const SingleCheckbox = (props) => {
21-
const { input, isDisabled, label, labelText, description, isReadOnly, helperText, ...rest } = useFieldApi({ ...props, type: 'checkbox' });
22+
const { input, ...rest } = useFieldApi(prepareProps({ ...props, type: 'checkbox' }));
2223

23-
const finalLabel = description ? <WithDescription labelText={labelText || label} description={description} /> : labelText || label;
24-
25-
return <CarbonCheckbox {...input} id={input.name} labelText={finalLabel} disabled={isDisabled} {...rest} />;
24+
return <CarbonCheckbox {...input} id={input.name} {...rest} />;
2625
};
2726

2827
const SingleCheckboxInCommon = ({ label, isDisabled, id, ...props }) => <CarbonCheckbox id={id} labelText={label} disabled={isDisabled} />;

packages/carbon-component-mapper/src/files/date-picker.js

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,16 @@ import { useFieldApi } from '@data-driven-forms/react-form-renderer';
44

55
import { DatePicker as CarbonDatePicker, DatePickerInput } from 'carbon-components-react';
66

7-
import IsOptional from '../common/is-optional';
8-
import WithDescription from '../common/with-description';
7+
import prepareProps from '../common/prepare-props';
98

109
const DatePicker = (props) => {
11-
const {
12-
input,
13-
isDisabled,
14-
isReadOnly,
15-
datePickerType,
16-
isRequired,
17-
description,
18-
meta,
19-
labelText,
20-
optionalText,
21-
label,
22-
DatePickerProps,
23-
...rest
24-
} = useFieldApi(props);
25-
26-
const modifiedLabel = description ? <WithDescription description={description} labelText={labelText || label} /> : labelText || label;
27-
28-
const finalLabel = isRequired ? modifiedLabel : <IsOptional labelText={modifiedLabel} optionalText={optionalText} />;
10+
const { input, datePickerType, meta, DatePickerProps, ...rest } = useFieldApi(prepareProps(props));
2911

3012
const invalid = meta.touched && meta.error;
3113

3214
return (
3315
<CarbonDatePicker {...input} datePickerType={datePickerType} {...DatePickerProps}>
34-
<DatePickerInput disabled={isDisabled} labelText={finalLabel} invalid={Boolean(invalid)} invalidText={invalid} autocomplete={false} {...rest} />
16+
<DatePickerInput id={input.name} invalid={Boolean(invalid)} invalidText={invalid ? invalid : ''} {...rest} />
3517
</CarbonDatePicker>
3618
);
3719
};

packages/carbon-component-mapper/src/files/form-group.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

packages/carbon-component-mapper/src/files/radio.js

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,16 @@ import { useFieldApi } from '@data-driven-forms/react-form-renderer';
44

55
import { FormGroup, RadioButtonGroup, RadioButton } from 'carbon-components-react';
66

7-
import WithDescription from '../common/with-description';
7+
import prepareProps from '../common/prepare-props';
88

99
const Radio = (props) => {
10-
const { label, labelText, input, isDisabled, options, FormGroupProps, helperText, description, ...rest } = useFieldApi({ type: 'radio', ...props });
10+
const { labelText, disabled, input, options, FormGroupProps, ...rest } = useFieldApi(prepareProps({ type: 'radio', ...props }));
1111

1212
return (
13-
<FormGroup
14-
legendText={description ? <WithDescription labelText={labelText || label} description={description} /> : labelText || label}
15-
{...FormGroupProps}
16-
>
17-
<RadioButtonGroup {...input} valueSelected={input.value} disabled={isDisabled} {...rest}>
13+
<FormGroup legendText={labelText} {...FormGroupProps}>
14+
<RadioButtonGroup {...input} valueSelected={input.value} disabled={disabled} {...rest}>
1815
{options.map((option) => (
19-
<RadioButton key={option.value} {...props} disabled={isDisabled} labelText={option.label} value={option.value} {...option} />
16+
<RadioButton key={option.value} {...props} disabled={disabled} labelText={option.label} value={option.value} {...option} />
2017
))}
2118
</RadioButtonGroup>
2219
</FormGroup>

packages/carbon-component-mapper/src/files/slider.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@ import { useFieldApi } from '@data-driven-forms/react-form-renderer';
44

55
import { Slider as CarbonSlider } from 'carbon-components-react';
66

7-
import WithDescription from '../common/with-description';
7+
import prepareProps from '../common/prepare-props';
88

99
const Slider = (props) => {
10-
const { input, meta, isDisabled, label, labelText, isRequired, optionalText, description, ...rest } = useFieldApi(props);
11-
12-
const modifiedLabel = description ? <WithDescription description={description} labelText={labelText || label} /> : labelText || label;
10+
const { input, meta, isRequired, ...rest } = useFieldApi(prepareProps(props));
1311

1412
const invalid = meta.touched && meta.error;
1513

@@ -19,8 +17,6 @@ const Slider = (props) => {
1917
value={Number(input.value) || 0}
2018
key={input.name}
2119
id={input.name}
22-
labelText={modifiedLabel}
23-
disabled={isDisabled}
2420
invalid={Boolean(invalid)}
2521
min={0}
2622
max={100}

0 commit comments

Comments
 (0)