@onewelcome/react-lib-components 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/Button/IconButton.d.ts +2 -1
  2. package/dist/DataGrid/DataGrid.d.ts +1 -0
  3. package/dist/DataGrid/DataGridActions/DataGridActions.d.ts +2 -1
  4. package/dist/Form/Form.d.ts +3 -3
  5. package/dist/Notifications/SlideInModal/SlideInModal.d.ts +1 -1
  6. package/dist/Tabs/Tab.d.ts +5 -9
  7. package/dist/Tabs/TabButton.d.ts +3 -6
  8. package/dist/Tabs/Tabs.d.ts +1 -2
  9. package/dist/hooks/useDebouncedCallback.d.ts +1 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/react-lib-components.cjs.development.js +472 -395
  12. package/dist/react-lib-components.cjs.development.js.map +1 -1
  13. package/dist/react-lib-components.cjs.production.min.js +1 -1
  14. package/dist/react-lib-components.cjs.production.min.js.map +1 -1
  15. package/dist/react-lib-components.esm.js +473 -397
  16. package/dist/react-lib-components.esm.js.map +1 -1
  17. package/package.json +1 -1
  18. package/src/Breadcrumbs/Breadcrumbs.tsx +46 -38
  19. package/src/Button/BaseButton.tsx +23 -20
  20. package/src/Button/Button.module.scss +9 -0
  21. package/src/Button/Button.tsx +40 -40
  22. package/src/Button/IconButton.tsx +28 -28
  23. package/src/ContextMenu/ContextMenu.tsx +161 -160
  24. package/src/ContextMenu/ContextMenuItem.tsx +55 -49
  25. package/src/DataGrid/DataGrid.tsx +1 -0
  26. package/src/DataGrid/DataGridActions/DataGridActions.module.scss +1 -1
  27. package/src/DataGrid/DataGridActions/DataGridActions.test.tsx +4 -2
  28. package/src/DataGrid/DataGridActions/DataGridActions.tsx +95 -87
  29. package/src/DataGrid/DataGridActions/DataGridColumnsToggle.tsx +64 -64
  30. package/src/DataGrid/DataGridBody/DataGridCell.tsx +42 -44
  31. package/src/DataGrid/DataGridBody/DataGridRow.tsx +29 -29
  32. package/src/DataGrid/DataGridHeader/DataGridHeader.tsx +78 -78
  33. package/src/DataGrid/DataGridHeader/DataGridHeaderCell.tsx +48 -48
  34. package/src/Form/Checkbox/Checkbox.tsx +134 -130
  35. package/src/Form/Fieldset/Fieldset.tsx +81 -78
  36. package/src/Form/Form.tsx +9 -4
  37. package/src/Form/FormControl/FormControl.module.scss +1 -20
  38. package/src/Form/FormControl/FormControl.tsx +36 -35
  39. package/src/Form/FormGroup/FormGroup.tsx +62 -62
  40. package/src/Form/FormHelperText/FormHelperText.tsx +19 -18
  41. package/src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx +58 -53
  42. package/src/Form/Input/Input.tsx +90 -87
  43. package/src/Form/Label/Label.tsx +17 -16
  44. package/src/Form/Radio/Radio.tsx +91 -91
  45. package/src/Form/Select/Option.tsx +66 -60
  46. package/src/Form/Select/Select.tsx +207 -209
  47. package/src/Form/Textarea/Textarea.tsx +51 -53
  48. package/src/Form/Toggle/Toggle.tsx +26 -23
  49. package/src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx +51 -43
  50. package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +112 -106
  51. package/src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx +67 -62
  52. package/src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx +42 -37
  53. package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +94 -94
  54. package/src/Form/Wrapper/Wrapper/Wrapper.tsx +73 -73
  55. package/src/Icon/Icon.module.scss +1 -0
  56. package/src/Icon/Icon.tsx +19 -16
  57. package/src/Link/Link.tsx +68 -63
  58. package/src/Notifications/BaseModal/BaseModal.tsx +68 -68
  59. package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx +13 -10
  60. package/src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx +33 -25
  61. package/src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx +20 -17
  62. package/src/Notifications/Dialog/Dialog.tsx +83 -83
  63. package/src/Notifications/Dialog/DialogActions/DialogActions.tsx +17 -14
  64. package/src/Notifications/Dialog/DialogTitle/DialogTitle.tsx +15 -12
  65. package/src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx +40 -40
  66. package/src/Notifications/SlideInModal/SlideInModal.module.scss +5 -5
  67. package/src/Notifications/SlideInModal/SlideInModal.test.tsx +7 -2
  68. package/src/Notifications/SlideInModal/SlideInModal.tsx +47 -27
  69. package/src/Pagination/Pagination.tsx +169 -169
  70. package/src/Popover/Popover.module.scss +1 -0
  71. package/src/Popover/Popover.tsx +43 -33
  72. package/src/ProgressBar/ProgressBar.tsx +17 -14
  73. package/src/Skeleton/Skeleton.tsx +23 -20
  74. package/src/StatusIndicator/StatusIndicator.tsx +18 -15
  75. package/src/Tabs/{TabPanel.module.scss → Tab.module.scss} +1 -1
  76. package/src/Tabs/Tab.test.tsx +1 -39
  77. package/src/Tabs/Tab.tsx +16 -10
  78. package/src/Tabs/TabButton.module.scss +0 -4
  79. package/src/Tabs/TabButton.test.tsx +3 -31
  80. package/src/Tabs/TabButton.tsx +35 -49
  81. package/src/Tabs/Tabs.test.tsx +40 -33
  82. package/src/Tabs/Tabs.tsx +107 -101
  83. package/src/TextEllipsis/TextEllipsis.tsx +50 -41
  84. package/src/Tiles/Tile.tsx +58 -56
  85. package/src/Tiles/Tiles.tsx +44 -41
  86. package/src/Tooltip/Tooltip.tsx +101 -100
  87. package/src/Typography/Typography.tsx +47 -44
  88. package/src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx +55 -52
  89. package/src/Wizard/WizardSteps/WizardSteps.tsx +25 -22
  90. package/src/hooks/useDebouncedCallback.test.ts +140 -0
  91. package/src/hooks/useDebouncedCallback.tsx +32 -0
  92. package/src/index.ts +1 -0
  93. package/src/mixins.module.scss +2 -2
  94. package/src/util/helper.test.tsx +0 -28
  95. package/dist/Tabs/TabPanel.d.ts +0 -8
  96. package/src/Tabs/TabPanel.test.tsx +0 -92
  97. package/src/Tabs/TabPanel.tsx +0 -43
@@ -14,7 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { ComponentPropsWithRef, ReactElement, useEffect } from "react";
17
+ import React, {
18
+ ForwardRefRenderFunction,
19
+ ComponentPropsWithRef,
20
+ ReactElement,
21
+ useEffect
22
+ } from "react";
18
23
  import classes from "./CheckboxWrapper.module.scss";
19
24
  import { useWrapper } from "../../../hooks/useWrapper";
20
25
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
@@ -27,49 +32,52 @@ export interface Props extends ComponentPropsWithRef<"div">, WrapperProps {
27
32
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
28
33
  }
29
34
 
30
- export const CheckboxWrapper = React.forwardRef<HTMLDivElement, Props>(
31
- ({ children, error = false, helperText, helperProps, fieldsetProps, ...rest }: Props, ref) => {
32
- const { errorId, helperId } = useWrapper();
35
+ const CheckboxWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
36
+ { children, error = false, helperText, helperProps, fieldsetProps, ...rest }: Props,
37
+ ref
38
+ ) => {
39
+ const { errorId, helperId } = useWrapper();
33
40
 
34
- useEffect(() => {
35
- if (fieldsetProps.legend === undefined) {
36
- console.error(
37
- `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: "legend here" }})`
38
- );
39
- }
40
- }, []);
41
-
42
- const renderChildren = () =>
43
- React.Children.map(children, child =>
44
- React.cloneElement(child, {
45
- parentErrorId: errorId,
46
- error: error,
47
- parentHelperId: helperText ? helperId : false,
48
- disabled: rest.disabled
49
- })
41
+ useEffect(() => {
42
+ if (fieldsetProps.legend === undefined) {
43
+ console.error(
44
+ `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: "legend here" }})`
50
45
  );
46
+ }
47
+ }, []);
51
48
 
52
- return (
53
- <Fieldset {...fieldsetProps} error={error} required={rest.required}>
54
- <Wrapper
55
- {...rest}
56
- ref={ref}
57
- label=""
58
- helperId={helperId}
59
- helperText={helperText}
60
- helperProps={{
61
- ...helperProps,
62
- className: `${classes["checkbox-wrapper-helper"]} ${
63
- error ? classes["checkbox-wrapper-error"] : ""
64
- } ${helperProps?.className ?? ""}`
65
- }}
66
- error={error}
67
- errorMessageIcon={Icons.Error}
68
- errorId={errorId}
69
- >
70
- {renderChildren()}
71
- </Wrapper>
72
- </Fieldset>
49
+ const renderChildren = () =>
50
+ React.Children.map(children, child =>
51
+ React.cloneElement(child, {
52
+ parentErrorId: errorId,
53
+ error: error,
54
+ parentHelperId: helperText ? helperId : false,
55
+ disabled: rest.disabled
56
+ })
73
57
  );
74
- }
75
- );
58
+
59
+ return (
60
+ <Fieldset {...fieldsetProps} error={error} required={rest.required}>
61
+ <Wrapper
62
+ {...rest}
63
+ ref={ref}
64
+ label=""
65
+ helperId={helperId}
66
+ helperText={helperText}
67
+ helperProps={{
68
+ ...helperProps,
69
+ className: `${classes["checkbox-wrapper-helper"]} ${
70
+ error ? classes["checkbox-wrapper-error"] : ""
71
+ } ${helperProps?.className ?? ""}`
72
+ }}
73
+ error={error}
74
+ errorMessageIcon={Icons.Error}
75
+ errorId={errorId}
76
+ >
77
+ {renderChildren()}
78
+ </Wrapper>
79
+ </Fieldset>
80
+ );
81
+ };
82
+
83
+ export const CheckboxWrapper = React.forwardRef(CheckboxWrapperComponent);
@@ -14,7 +14,13 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { ComponentPropsWithRef, useEffect, useRef, useState } from "react";
17
+ import React, {
18
+ ForwardRefRenderFunction,
19
+ ComponentPropsWithRef,
20
+ useEffect,
21
+ useRef,
22
+ useState
23
+ } from "react";
18
24
  import { Input, Type, Props as InputProps } from "../../Input/Input";
19
25
  import classes from "./InputWrapper.module.scss";
20
26
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
@@ -58,113 +64,113 @@ const useLabelOffset = (
58
64
  return { labelOffset };
59
65
  };
60
66
 
61
- export const InputWrapper = React.forwardRef<HTMLDivElement, Props>(
62
- (
63
- {
64
- type,
65
- name,
66
- inputProps,
67
- helperText,
68
- helperProps,
69
- value,
70
- className,
71
- error,
72
- onChange,
73
- onBlur,
74
- onFocus,
75
- disabled,
76
- ...rest
77
- }: Props,
78
- ref
79
- ) => {
80
- const {
81
- errorId,
82
- floatingLabelActive,
83
- setFloatingLabelActive,
84
- hasFocus,
85
- setHasFocus,
86
- helperId,
87
- labelId
88
- } = useWrapper(value, inputProps?.placeholder, type);
89
- const { prefix, suffix } = inputProps || {};
90
- const input = useRef<HTMLInputElement>(null);
91
- const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;
92
- const { labelOffset } = useLabelOffset(
93
- (inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,
94
- floatingLabelActive,
95
- prefix
96
- );
67
+ const InputWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
68
+ {
69
+ type,
70
+ name,
71
+ inputProps,
72
+ helperText,
73
+ helperProps,
74
+ value,
75
+ className,
76
+ error,
77
+ onChange,
78
+ onBlur,
79
+ onFocus,
80
+ disabled,
81
+ ...rest
82
+ }: Props,
83
+ ref
84
+ ) => {
85
+ const {
86
+ errorId,
87
+ floatingLabelActive,
88
+ setFloatingLabelActive,
89
+ hasFocus,
90
+ setHasFocus,
91
+ helperId,
92
+ labelId
93
+ } = useWrapper(value, inputProps?.placeholder, type);
94
+ const { prefix, suffix } = inputProps || {};
95
+ const input = useRef<HTMLInputElement>(null);
96
+ const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;
97
+ const { labelOffset } = useLabelOffset(
98
+ (inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,
99
+ floatingLabelActive,
100
+ prefix
101
+ );
97
102
 
98
- const labelClasses = [classes["input-label"]];
99
- hasFocus && labelClasses.push(classes["focus"]);
103
+ const labelClasses = [classes["input-label"]];
104
+ hasFocus && labelClasses.push(classes["focus"]);
100
105
 
101
- const inputWrapperClasses = [];
102
- floatingLabelActive && inputWrapperClasses.push(classes["floating-label-active"]);
103
- inputProps?.wrapperProps?.className &&
104
- inputWrapperClasses.push(inputProps?.wrapperProps?.className);
105
- disabled && inputWrapperClasses.push(classes["disabled"]);
106
+ const inputWrapperClasses = [];
107
+ floatingLabelActive && inputWrapperClasses.push(classes["floating-label-active"]);
108
+ inputProps?.wrapperProps?.className &&
109
+ inputWrapperClasses.push(inputProps?.wrapperProps?.className);
110
+ disabled && inputWrapperClasses.push(classes["disabled"]);
106
111
 
107
- return (
108
- <Wrapper
109
- {...rest}
110
- ref={ref}
111
- name={name}
112
- className={`${classes["input-wrapper"]} ${className ?? ""}`}
113
- labelProps={{
114
- id: labelId,
115
- className: labelClasses.join(" "),
116
- style: { ...labelOffset }
112
+ return (
113
+ <Wrapper
114
+ {...rest}
115
+ ref={ref}
116
+ name={name}
117
+ className={`${classes["input-wrapper"]} ${className ?? ""}`}
118
+ labelProps={{
119
+ id: labelId,
120
+ className: labelClasses.join(" "),
121
+ style: { ...labelOffset }
122
+ }}
123
+ floatingLabelActive={floatingLabelActive}
124
+ errorId={errorId}
125
+ error={error}
126
+ helperId={helperId}
127
+ helperText={helperText}
128
+ helperProps={{
129
+ ...helperProps,
130
+ className: `${classes["input-wrapper-helper"]} ${helperProps?.className ?? ""} `
131
+ }}
132
+ helperIndent={20}
133
+ disabled={disabled}
134
+ >
135
+ <Input
136
+ {...inputProps}
137
+ prefix={hasValueOrActiveFloatingLabel ? prefix : ""}
138
+ suffix={hasValueOrActiveFloatingLabel ? suffix : ""}
139
+ wrapperProps={{
140
+ className: inputWrapperClasses.join(" ")
117
141
  }}
118
- floatingLabelActive={floatingLabelActive}
119
- errorId={errorId}
120
- error={error}
121
- helperId={helperId}
122
- helperText={helperText}
123
- helperProps={{
124
- ...helperProps,
125
- className: `${classes["input-wrapper-helper"]} ${helperProps?.className ?? ""} `
142
+ ref={(inputProps && inputProps.ref) || input}
143
+ aria-labelledby={labelId}
144
+ aria-describedby={error ? errorId : helperId}
145
+ onChange={onChange}
146
+ onFocus={e => {
147
+ onFocus && onFocus(e);
148
+ setHasFocus(true);
149
+ setFloatingLabelActive(true);
150
+ }}
151
+ onBlur={e => {
152
+ onBlur && onBlur(e);
153
+ setHasFocus(false);
154
+ e.target.value ||
155
+ e.target.placeholder ||
156
+ inputProps?.placeholder?.length ||
157
+ type === "datetime-local" ||
158
+ type === "time" ||
159
+ type === "date"
160
+ ? setFloatingLabelActive(true)
161
+ : setFloatingLabelActive(false);
126
162
  }}
127
- helperIndent={20}
128
- disabled={disabled}
129
- >
130
- <Input
131
- {...inputProps}
132
- prefix={hasValueOrActiveFloatingLabel ? prefix : ""}
133
- suffix={hasValueOrActiveFloatingLabel ? suffix : ""}
134
- wrapperProps={{
135
- className: inputWrapperClasses.join(" ")
136
- }}
137
- ref={(inputProps && inputProps.ref) || input}
138
- aria-labelledby={labelId}
139
- aria-describedby={error ? errorId : helperId}
140
- onChange={onChange}
141
- onFocus={e => {
142
- onFocus && onFocus(e);
143
- setHasFocus(true);
144
- setFloatingLabelActive(true);
145
- }}
146
- onBlur={e => {
147
- onBlur && onBlur(e);
148
- setHasFocus(false);
149
- e.target.value ||
150
- e.target.placeholder ||
151
- inputProps?.placeholder?.length ||
152
- type === "datetime-local" ||
153
- type === "time" ||
154
- type === "date"
155
- ? setFloatingLabelActive(true)
156
- : setFloatingLabelActive(false);
157
- }}
158
- className={`${floatingLabelActive ? classes["floating-label"] : ""} ${
159
- inputProps?.className ?? ""
160
- }`}
161
- name={name}
162
- error={error}
163
- id={name}
164
- value={value}
165
- type={type}
166
- />
167
- </Wrapper>
168
- );
169
- }
170
- );
163
+ className={`${floatingLabelActive ? classes["floating-label"] : ""} ${
164
+ inputProps?.className ?? ""
165
+ }`}
166
+ name={name}
167
+ error={error}
168
+ id={name}
169
+ value={value}
170
+ type={type}
171
+ />
172
+ </Wrapper>
173
+ );
174
+ };
175
+
176
+ export const InputWrapper = React.forwardRef(InputWrapperComponent);
@@ -14,7 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { ComponentPropsWithRef, ReactElement, useEffect } from "react";
17
+ import React, {
18
+ ForwardRefRenderFunction,
19
+ ComponentPropsWithRef,
20
+ ReactElement,
21
+ useEffect
22
+ } from "react";
18
23
  import classes from "./RadioWrapper.module.scss";
19
24
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
20
25
  import { useWrapper } from "../../../hooks/useWrapper";
@@ -28,68 +33,68 @@ export interface Props extends ComponentPropsWithRef<"div">, WrapperProps {
28
33
  onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
29
34
  }
30
35
 
31
- export const RadioWrapper = React.forwardRef<HTMLDivElement, Props>(
32
- (
33
- {
34
- children,
35
- error,
36
- name,
37
- helperText,
38
- helperProps,
39
- fieldsetProps,
40
- value,
41
- onChange,
42
- disabled,
43
- ...rest
44
- }: Props,
45
- ref
46
- ) => {
47
- const { errorId, helperId } = useWrapper(value);
36
+ const RadioWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
37
+ {
38
+ children,
39
+ error,
40
+ name,
41
+ helperText,
42
+ helperProps,
43
+ fieldsetProps,
44
+ value,
45
+ onChange,
46
+ disabled,
47
+ ...rest
48
+ }: Props,
49
+ ref
50
+ ) => {
51
+ const { errorId, helperId } = useWrapper(value);
48
52
 
49
- useEffect(() => {
50
- if (fieldsetProps.legend === undefined) {
51
- console.error(
52
- `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: "legend here" }})`
53
- );
54
- }
55
- }, []);
56
-
57
- const renderChildren = () =>
58
- React.Children.map(children, child =>
59
- React.cloneElement(child, {
60
- parentErrorId: errorId,
61
- error: error,
62
- checked: child.props.value === value,
63
- name: name,
64
- parentHelperId: helperText ? helperId : false,
65
- onChange: onChange,
66
- disabled: child.props.disabled !== undefined ? child.props.disabled : disabled
67
- })
53
+ useEffect(() => {
54
+ if (fieldsetProps.legend === undefined) {
55
+ console.error(
56
+ `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: "legend here" }})`
68
57
  );
58
+ }
59
+ }, []);
69
60
 
70
- return (
71
- <Fieldset {...fieldsetProps} error={error} disabled={disabled}>
72
- <Wrapper
73
- {...rest}
74
- ref={ref}
75
- disabled={disabled}
76
- name={name}
77
- helperId={helperId}
78
- helperText={helperText}
79
- helperProps={{
80
- ...helperProps,
81
- className: `${classes["radio-wrapper-helper"]} ${
82
- error ? classes["radio-wrapper-error"] : ""
83
- } ${helperProps?.className ?? ""}`
84
- }}
85
- error={error}
86
- errorId={errorId}
87
- errorMessageIcon={Icons.Error}
88
- floatingLabel={false}
89
- >
90
- {renderChildren()}
91
- </Wrapper>
92
- </Fieldset>
61
+ const renderChildren = () =>
62
+ React.Children.map(children, child =>
63
+ React.cloneElement(child, {
64
+ parentErrorId: errorId,
65
+ error: error,
66
+ checked: child.props.value === value,
67
+ name: name,
68
+ parentHelperId: helperText ? helperId : false,
69
+ onChange: onChange,
70
+ disabled: child.props.disabled !== undefined ? child.props.disabled : disabled
71
+ })
93
72
  );
94
- }
95
- );
73
+
74
+ return (
75
+ <Fieldset {...fieldsetProps} error={error} disabled={disabled}>
76
+ <Wrapper
77
+ {...rest}
78
+ ref={ref}
79
+ disabled={disabled}
80
+ name={name}
81
+ helperId={helperId}
82
+ helperText={helperText}
83
+ helperProps={{
84
+ ...helperProps,
85
+ className: `${classes["radio-wrapper-helper"]} ${
86
+ error ? classes["radio-wrapper-error"] : ""
87
+ } ${helperProps?.className ?? ""}`
88
+ }}
89
+ error={error}
90
+ errorId={errorId}
91
+ errorMessageIcon={Icons.Error}
92
+ floatingLabel={false}
93
+ >
94
+ {renderChildren()}
95
+ </Wrapper>
96
+ </Fieldset>
97
+ );
98
+ };
99
+
100
+ export const RadioWrapper = React.forwardRef(RadioWrapperComponent);
@@ -14,7 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import React, { ComponentPropsWithRef, ReactChild, ReactElement } from "react";
17
+ import React, {
18
+ ForwardRefRenderFunction,
19
+ ComponentPropsWithRef,
20
+ ReactChild,
21
+ ReactElement
22
+ } from "react";
18
23
  import classes from "./SelectWrapper.module.scss";
19
24
  import { Wrapper, WrapperProps } from "../Wrapper/Wrapper";
20
25
  import { Select, Props as SelectProps } from "../../Select/Select";
@@ -33,42 +38,42 @@ export interface Props
33
38
  onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;
34
39
  }
35
40
 
36
- export const SelectWrapper = React.forwardRef<HTMLDivElement, Props>(
37
- (
38
- { children, error, value, placeholder, selectProps, helperProps, onChange, ...rest }: Props,
39
- ref
40
- ) => {
41
- const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);
41
+ const SelectWrapperComponent: ForwardRefRenderFunction<HTMLDivElement, Props> = (
42
+ { children, error, value, placeholder, selectProps, helperProps, onChange, ...rest }: Props,
43
+ ref
44
+ ) => {
45
+ const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);
42
46
 
43
- return (
44
- <Wrapper
45
- {...rest}
46
- ref={ref}
47
- floatingLabelActive={floatingLabelActive}
48
- errorId={errorId}
49
- helperId={helperId}
50
- labelProps={{ id: labelId, className: classes["select-label"] }}
51
- helperProps={{
52
- ...helperProps,
53
- className: `${classes["select-helper-text"]} ${helperProps?.className ?? ""}`
54
- }}
47
+ return (
48
+ <Wrapper
49
+ {...rest}
50
+ ref={ref}
51
+ floatingLabelActive={floatingLabelActive}
52
+ errorId={errorId}
53
+ helperId={helperId}
54
+ labelProps={{ id: labelId, className: classes["select-label"] }}
55
+ helperProps={{
56
+ ...helperProps,
57
+ className: `${classes["select-helper-text"]} ${helperProps?.className ?? ""}`
58
+ }}
59
+ error={error}
60
+ >
61
+ <Select
62
+ {...selectProps}
63
+ value={value}
64
+ labeledBy={labelId}
55
65
  error={error}
66
+ describedBy={error ? errorId : helperId}
67
+ onChange={onChange}
68
+ placeholder={placeholder}
69
+ className={`${floatingLabelActive ? classes["floating-label-active"] : ""} ${
70
+ selectProps?.className ?? ""
71
+ }`}
56
72
  >
57
- <Select
58
- {...selectProps}
59
- value={value}
60
- labeledBy={labelId}
61
- error={error}
62
- describedBy={error ? errorId : helperId}
63
- onChange={onChange}
64
- placeholder={placeholder}
65
- className={`${floatingLabelActive ? classes["floating-label-active"] : ""} ${
66
- selectProps?.className ?? ""
67
- }`}
68
- >
69
- {children as ReactElement[]}
70
- </Select>
71
- </Wrapper>
72
- );
73
- }
74
- );
73
+ {children as ReactElement[]}
74
+ </Select>
75
+ </Wrapper>
76
+ );
77
+ };
78
+
79
+ export const SelectWrapper = React.forwardRef(SelectWrapperComponent);