@onewelcome/react-lib-components 0.2.6 → 0.3.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.
- package/dist/react-lib-components.cjs.development.js +19 -12
- package/dist/react-lib-components.cjs.development.js.map +1 -1
- package/dist/react-lib-components.cjs.production.min.js +1 -1
- package/dist/react-lib-components.cjs.production.min.js.map +1 -1
- package/dist/react-lib-components.esm.js +19 -12
- package/dist/react-lib-components.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/Form/Input/Input.module.scss +1 -0
- package/src/Form/Wrapper/InputWrapper/InputWrapper.module.scss +18 -11
- package/src/Form/Wrapper/InputWrapper/InputWrapper.test.tsx +20 -0
- package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +10 -4
- package/src/Form/Wrapper/Wrapper/Wrapper.module.scss +4 -0
- package/src/Form/Wrapper/Wrapper/Wrapper.tsx +2 -1
package/package.json
CHANGED
|
@@ -12,19 +12,26 @@ input {
|
|
|
12
12
|
margin-top: 0.25rem;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
.input-wrapper
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
.input-wrapper {
|
|
16
|
+
[data-icon]:before {
|
|
17
|
+
transition: 0.2s ease-in-out;
|
|
18
|
+
transform: translateY(0px);
|
|
19
|
+
font-size: 1.125rem;
|
|
20
|
+
}
|
|
20
21
|
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
}
|
|
22
|
+
.floating-label-active [data-icon]:before {
|
|
23
|
+
transform: translateY(5px);
|
|
24
|
+
}
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
[data-prefix],
|
|
27
|
+
[data-suffix] {
|
|
28
|
+
transform: translateY(-0.125rem);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.disabled {
|
|
32
|
+
background-color: var(--disabled);
|
|
33
|
+
cursor: not-allowed;
|
|
34
|
+
}
|
|
28
35
|
}
|
|
29
36
|
|
|
30
37
|
.floating-label-active [data-prefix],
|
|
@@ -58,6 +58,26 @@ describe("InputWrapper should render", () => {
|
|
|
58
58
|
|
|
59
59
|
expect(input).toHaveAttribute("aria-describedby", helperId);
|
|
60
60
|
});
|
|
61
|
+
|
|
62
|
+
it("disabled input", () => {
|
|
63
|
+
const { getByLabelText } = createInputWrapper(defaultParams => ({
|
|
64
|
+
...defaultParams,
|
|
65
|
+
disabled: true
|
|
66
|
+
}));
|
|
67
|
+
|
|
68
|
+
const input = getByLabelText("Example label");
|
|
69
|
+
|
|
70
|
+
expect(input).toBeDisabled();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("consume wrapper props classname", () => {
|
|
74
|
+
const { container } = createInputWrapper(defaultParams => ({
|
|
75
|
+
...defaultParams,
|
|
76
|
+
inputProps: { wrapperProps: { className: "testClass" } }
|
|
77
|
+
}));
|
|
78
|
+
|
|
79
|
+
expect(container.querySelector(".testClass")).toBeDefined();
|
|
80
|
+
});
|
|
61
81
|
});
|
|
62
82
|
|
|
63
83
|
describe("ref should work", () => {
|
|
@@ -56,6 +56,7 @@ export const InputWrapper = React.forwardRef<HTMLDivElement, Props>(
|
|
|
56
56
|
onChange,
|
|
57
57
|
onBlur,
|
|
58
58
|
onFocus,
|
|
59
|
+
disabled,
|
|
59
60
|
...rest
|
|
60
61
|
}: Props,
|
|
61
62
|
ref
|
|
@@ -72,15 +73,21 @@ export const InputWrapper = React.forwardRef<HTMLDivElement, Props>(
|
|
|
72
73
|
const { prefix, suffix } = inputProps || {};
|
|
73
74
|
const input = useRef<HTMLInputElement>(null);
|
|
74
75
|
const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;
|
|
75
|
-
const labelClasses = [classes["input-label"]];
|
|
76
76
|
const { labelOffset } = useLabelOffset(
|
|
77
77
|
(inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,
|
|
78
78
|
floatingLabelActive,
|
|
79
79
|
prefix
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
+
const labelClasses = [classes["input-label"]];
|
|
82
83
|
hasFocus && labelClasses.push(classes["focus"]);
|
|
83
84
|
|
|
85
|
+
const inputWrapperClasses = [];
|
|
86
|
+
floatingLabelActive && inputWrapperClasses.push(classes["floating-label-active"]);
|
|
87
|
+
inputProps?.wrapperProps?.className &&
|
|
88
|
+
inputWrapperClasses.push(inputProps?.wrapperProps?.className);
|
|
89
|
+
disabled && inputWrapperClasses.push(classes["disabled"]);
|
|
90
|
+
|
|
84
91
|
return (
|
|
85
92
|
<Wrapper
|
|
86
93
|
{...rest}
|
|
@@ -102,15 +109,14 @@ export const InputWrapper = React.forwardRef<HTMLDivElement, Props>(
|
|
|
102
109
|
className: `${classes["input-wrapper-helper"]} ${helperProps?.className ?? ""} `
|
|
103
110
|
}}
|
|
104
111
|
helperIndent={20}
|
|
112
|
+
disabled={disabled}
|
|
105
113
|
>
|
|
106
114
|
<Input
|
|
107
115
|
{...inputProps}
|
|
108
116
|
prefix={hasValueOrActiveFloatingLabel ? prefix : ""}
|
|
109
117
|
suffix={hasValueOrActiveFloatingLabel ? suffix : ""}
|
|
110
118
|
wrapperProps={{
|
|
111
|
-
className:
|
|
112
|
-
inputProps?.wrapperProps?.className ?? ""
|
|
113
|
-
}`
|
|
119
|
+
className: inputWrapperClasses.join(" ")
|
|
114
120
|
}}
|
|
115
121
|
ref={(inputProps && inputProps.ref) || input}
|
|
116
122
|
aria-labelledby={labelId}
|
|
@@ -69,9 +69,10 @@ export const Wrapper = React.forwardRef<HTMLDivElement, Props>(
|
|
|
69
69
|
labelProps?.className && labelClasses.push(labelProps.className);
|
|
70
70
|
required && labelClasses.push(classes["required"]);
|
|
71
71
|
error && labelClasses.push(classes["error"]);
|
|
72
|
+
disabled && labelClasses.push(classes["disabled"]);
|
|
72
73
|
|
|
73
74
|
return (
|
|
74
|
-
<div {...rest} ref={ref} className={`${classes.wrapper} ${className
|
|
75
|
+
<div {...rest} ref={ref} className={`${classes.wrapper} ${className ?? ""}`}>
|
|
75
76
|
<FormGroup
|
|
76
77
|
error={error}
|
|
77
78
|
errorMessage={errorMessage}
|