@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onewelcome/react-lib-components",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "OneWelcome B.V.",
6
6
  "main": "dist/index.js",
@@ -24,6 +24,7 @@
24
24
  box-sizing: border-box;
25
25
  border: 0;
26
26
  border-radius: var(--input-border-radius);
27
+ transition: all 0.2s ease-in-out;
27
28
 
28
29
  &:disabled {
29
30
  background-color: var(--disabled);
@@ -12,19 +12,26 @@ input {
12
12
  margin-top: 0.25rem;
13
13
  }
14
14
 
15
- .input-wrapper [data-icon]:before {
16
- transition: 0.2s ease-in-out;
17
- transform: translateY(0px);
18
- font-size: 1.125rem;
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
- .input-wrapper .floating-label-active [data-icon]:before {
22
- transform: translateY(5px);
23
- }
22
+ .floating-label-active [data-icon]:before {
23
+ transform: translateY(5px);
24
+ }
24
25
 
25
- .input-wrapper [data-prefix],
26
- .input-wrapper [data-suffix] {
27
- transform: translateY(-0.125rem);
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: `${floatingLabelActive ? classes["floating-label-active"] : ""} ${
112
- inputProps?.wrapperProps?.className ?? ""
113
- }`
119
+ className: inputWrapperClasses.join(" ")
114
120
  }}
115
121
  ref={(inputProps && inputProps.ref) || input}
116
122
  aria-labelledby={labelId}
@@ -22,6 +22,10 @@
22
22
  &.error {
23
23
  color: var(--error);
24
24
  }
25
+
26
+ &.disabled {
27
+ color: var(--greyed-out);
28
+ }
25
29
  }
26
30
 
27
31
  .wrapper + fieldset,
@@ -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 ? className : ""}`}>
75
+ <div {...rest} ref={ref} className={`${classes.wrapper} ${className ?? ""}`}>
75
76
  <FormGroup
76
77
  error={error}
77
78
  errorMessage={errorMessage}