Skip to content

Commit 02bf28b

Browse files
committed
fix(carbon): allow to pass props to wrapper div
1 parent 5bc6fc3 commit 02bf28b

File tree

7 files changed

+33
-15
lines changed

7 files changed

+33
-15
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ Wrapper.propTypes = {
2626
};
2727

2828
const SingleCheckbox = (props) => {
29-
const { input, meta, validateOnMount, helperText, ...rest } = useFieldApi(prepareProps({ ...props, type: 'checkbox' }));
29+
const { input, meta, validateOnMount, helperText, WrapperProps, ...rest } = useFieldApi(prepareProps({ ...props, type: 'checkbox' }));
3030

3131
const invalid = (meta.touched || validateOnMount) && meta.error;
3232

3333
return (
34-
<div>
34+
<div {...WrapperProps}>
3535
<CarbonCheckbox {...input} id={input.name} {...rest} />
3636
<HelperTextBlock helperText={helperText} errorText={invalid} />
3737
</div>
@@ -45,7 +45,8 @@ SingleCheckboxInCommon.propTypes = {
4545
input: PropTypes.object,
4646
isDisabled: PropTypes.bool,
4747
name: PropTypes.string,
48-
id: PropTypes.string
48+
id: PropTypes.string,
49+
WrapperProps: PropTypes.object
4950
};
5051

5152
const Checkbox = ({ options, ...props }) =>

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import prepareProps from '../common/prepare-props';
88
import HelperTextBlock from '../common/helper-text-block';
99

1010
const DatePicker = (props) => {
11-
const { input, datePickerType, meta, DatePickerProps, validateOnMount, helperText, ...rest } = useFieldApi(prepareProps(props));
11+
const { input, datePickerType, meta, DatePickerProps, validateOnMount, helperText, WrapperProps, ...rest } = useFieldApi(prepareProps(props));
1212

1313
const invalid = (meta.touched || validateOnMount) && meta.error;
1414

1515
return (
16-
<div>
16+
<div {...WrapperProps}>
1717
<CarbonDatePicker {...input} datePickerType={datePickerType} {...DatePickerProps}>
1818
<DatePickerInput id={input.name} invalid={Boolean(invalid)} invalidText={invalid ? invalid : ''} {...rest} />
1919
</CarbonDatePicker>
@@ -25,7 +25,8 @@ const DatePicker = (props) => {
2525
DatePicker.propTypes = {
2626
isDisabled: PropTypes.bool,
2727
datePickerType: PropTypes.string,
28-
DatePickerProps: PropTypes.object
28+
DatePickerProps: PropTypes.object,
29+
WrapperProps: PropTypes.object
2930
};
3031

3132
DatePicker.defaultProps = {

packages/carbon-component-mapper/src/files/form-group.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export interface FormGroupInternalProps {
99
labelText?: ReactNode;
1010
description?: ReactNode;
1111
validateOnMount?: boolean;
12+
WrapperProps?: React.HTMLProps<HTMLDivElement>;
1213
}
1314

1415
export type FormGroupProps = FormGroupInternalProps & UseFieldApiComponentConfig;

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import prepareProps from '../common/prepare-props';
88
import HelperTextBlock from '../common/helper-text-block';
99

1010
const Slider = (props) => {
11-
const { input, meta, isRequired, validateOnMount, helperText, ...rest } = useFieldApi(prepareProps(props));
11+
const { input, meta, isRequired, validateOnMount, helperText, WrapperProps, ...rest } = useFieldApi(prepareProps(props));
1212

1313
const invalid = (meta.touched || validateOnMount) && meta.error;
1414

1515
return (
16-
<div>
16+
<div {...WrapperProps}>
1717
<CarbonSlider
1818
{...input}
1919
value={Number(input.value) || 0}
@@ -35,7 +35,8 @@ Slider.propTypes = {
3535
isRequired: PropTypes.bool,
3636
label: PropTypes.node,
3737
labelText: PropTypes.node,
38-
description: PropTypes.node
38+
description: PropTypes.node,
39+
WrapperProps: PropTypes.object
3940
};
4041

4142
export default Slider;

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import prepareProps from '../common/prepare-props';
88
import HelperTextBlock from '../common/helper-text-block';
99

1010
const Switch = (props) => {
11-
const { input, meta, onText, offText, validateOnMount, helperText, ...rest } = useFieldApi(prepareProps(props));
11+
const { input, meta, onText, offText, validateOnMount, helperText, WrapperProps, ...rest } = useFieldApi(prepareProps(props));
1212

1313
const invalid = (meta.touched || validateOnMount) && meta.error;
1414

1515
return (
16-
<div>
16+
<div {...WrapperProps}>
1717
<Toggle {...input} key={input.name} id={input.name} labelA={offText} labelB={onText} {...rest} />
1818
<HelperTextBlock helperText={helperText} errorText={invalid} />
1919
</div>
@@ -25,7 +25,8 @@ Switch.propTypes = {
2525
isReadOnly: PropTypes.bool,
2626
label: PropTypes.node,
2727
labelText: PropTypes.node,
28-
description: PropTypes.node
28+
description: PropTypes.node,
29+
WrapperProps: PropTypes.object
2930
};
3031

3132
export default Switch;

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import prepareProps from '../common/prepare-props';
88
import HelperTextBlock from '../common/helper-text-block';
99

1010
const TimePicker = (props) => {
11-
const { input, meta, twelveHoursFormat, timezones, validateOnMount, helperText, ...rest } = useFieldApi(prepareProps(props));
11+
const { input, meta, twelveHoursFormat, timezones, validateOnMount, helperText, WrapperProps, ...rest } = useFieldApi(prepareProps(props));
1212

1313
const [timezone, selectTimezone] = useState(timezones ? timezones[0]?.value : '');
1414
const [format, selectFormat] = useState('AM');
@@ -64,7 +64,7 @@ const TimePicker = (props) => {
6464
}, [timezone, format]);
6565

6666
return (
67-
<div>
67+
<div {...WrapperProps}>
6868
<CarbonTimePicker
6969
{...input}
7070
value={finalValue}
@@ -112,7 +112,8 @@ TimePicker.propTypes = {
112112
label: PropTypes.node.isRequired,
113113
showAs: PropTypes.string.isRequired
114114
})
115-
)
115+
),
116+
WrapperProps: PropTypes.object
116117
};
117118

118119
export default TimePicker;

packages/react-renderer-demo/src/pages/mappers/carbon-component-mapper.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,4 +127,16 @@ No known workaround.
127127

128128
_Possible workaround: reimplement Carbon select as we did for PF4/PF3_
129129

130+
## WrapperProps
131+
132+
Components that do not support `helperText` natively are wrapped in a `div` element. To pass props to this div, please use `WrapperProps` prop.
133+
134+
Wrapped components:
135+
136+
- Single checkbox
137+
- DatePicker
138+
- Slider
139+
- Switch
140+
- TimePicker
141+
130142
</DocPage>

0 commit comments

Comments
 (0)