@thecb/components 6.0.6 → 6.0.8-beta.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/index.cjs.js +39 -17
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +39 -17
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/atoms/checkbox/Checkbox.theme.js +4 -3
- package/src/components/atoms/dropdown/Dropdown.js +2 -0
- package/src/components/atoms/form-layouts/FormInput.js +14 -4
- package/src/components/atoms/form-layouts/FormLayouts.theme.js +3 -3
- package/src/components/atoms/form-select/FormSelect.js +8 -2
- package/src/components/molecules/account-and-routing-modal/AccountAndRoutingModal.theme.js +1 -1
- package/src/components/molecules/obligation/modules/AutopayModalModule.theme.js +1 -1
- package/src/components/molecules/terms-and-conditions-modal/TermsAndConditionsModal.theme.js +1 -1
- package/src/constants/colors.js +3 -1
- package/src/util/general.js +13 -0
package/package.json
CHANGED
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
SEASHELL_WHITE,
|
|
6
6
|
MATISSE_BLUE,
|
|
7
7
|
RED,
|
|
8
|
-
CHARADE_GREY
|
|
8
|
+
CHARADE_GREY,
|
|
9
|
+
STORM_GREY
|
|
9
10
|
} from "../../../constants/colors";
|
|
10
11
|
|
|
11
12
|
const backgroundColor = { default: `${TRANSPARENT}` };
|
|
@@ -29,7 +30,7 @@ const disabledCheckedStyles = {
|
|
|
29
30
|
const disabledStyles = {
|
|
30
31
|
default: `
|
|
31
32
|
background: ${SEASHELL_WHITE};
|
|
32
|
-
border: 1px solid ${
|
|
33
|
+
border: 1px solid ${STORM_GREY};
|
|
33
34
|
`
|
|
34
35
|
};
|
|
35
36
|
const checkedStyles = {
|
|
@@ -41,7 +42,7 @@ const checkedStyles = {
|
|
|
41
42
|
const defaultStyles = {
|
|
42
43
|
default: `
|
|
43
44
|
background: ${WHITE};
|
|
44
|
-
border: 1px solid ${
|
|
45
|
+
border: 1px solid ${STORM_GREY};
|
|
45
46
|
`
|
|
46
47
|
};
|
|
47
48
|
|
|
@@ -103,6 +103,7 @@ const Dropdown = ({
|
|
|
103
103
|
hasTitles = false,
|
|
104
104
|
autoEraseTypeAhead = true,
|
|
105
105
|
ariaLabelledby,
|
|
106
|
+
ariaDescribedby,
|
|
106
107
|
autocompleteValue = "", // browser autofill value, like country-name or address-level1 for state
|
|
107
108
|
smoothScroll = true
|
|
108
109
|
}) => {
|
|
@@ -292,6 +293,7 @@ const Dropdown = ({
|
|
|
292
293
|
aria-owns={`${ariaLabelledby}_listbox`}
|
|
293
294
|
aria-haspopup="listbox"
|
|
294
295
|
aria-labelledby={ariaLabelledby}
|
|
296
|
+
aria-describedby={ariaDescribedby}
|
|
295
297
|
aria-expanded={isOpen}
|
|
296
298
|
autocomplete={autocompleteValue}
|
|
297
299
|
background={isOpen ? themeValues.hoverColor : WHITE}
|
|
@@ -3,6 +3,7 @@ import styled, { ThemeContext, css } from "styled-components";
|
|
|
3
3
|
import { FormattedInput } from "formatted-input";
|
|
4
4
|
import { fallbackValues } from "./FormLayouts.theme.js";
|
|
5
5
|
import { themeComponent } from "../../../util/themeUtils";
|
|
6
|
+
import { createIdFromString } from "../../../util/general.js";
|
|
6
7
|
import Text from "../text";
|
|
7
8
|
import { Box, Cluster, Stack } from "../layouts";
|
|
8
9
|
import { FONT_WEIGHT_REGULAR } from "../../../constants/style_constants";
|
|
@@ -132,7 +133,7 @@ const FormInput = ({
|
|
|
132
133
|
&::first-letter {
|
|
133
134
|
text-transform: uppercase;
|
|
134
135
|
}`}
|
|
135
|
-
id={labelTextWhenNoError
|
|
136
|
+
id={createIdFromString(labelTextWhenNoError)}
|
|
136
137
|
>
|
|
137
138
|
{labelTextWhenNoError}
|
|
138
139
|
</Text>
|
|
@@ -157,7 +158,7 @@ const FormInput = ({
|
|
|
157
158
|
&::first-letter {
|
|
158
159
|
text-transform: uppercase;
|
|
159
160
|
}`}
|
|
160
|
-
id={labelTextWhenNoError
|
|
161
|
+
id={createIdFromString(labelTextWhenNoError)}
|
|
161
162
|
>
|
|
162
163
|
{labelTextWhenNoError}
|
|
163
164
|
</Text>
|
|
@@ -188,7 +189,11 @@ const FormInput = ({
|
|
|
188
189
|
<Box padding="0">
|
|
189
190
|
{formatter ? (
|
|
190
191
|
<FormattedInputField
|
|
191
|
-
aria-labelledby={labelTextWhenNoError
|
|
192
|
+
aria-labelledby={createIdFromString(labelTextWhenNoError)}
|
|
193
|
+
aria-describedby={createIdFromString(
|
|
194
|
+
labelTextWhenNoError,
|
|
195
|
+
"error message"
|
|
196
|
+
)}
|
|
192
197
|
onChange={e => fieldActions.set(e)}
|
|
193
198
|
type={type}
|
|
194
199
|
value={field.rawValue}
|
|
@@ -205,7 +210,11 @@ const FormInput = ({
|
|
|
205
210
|
/>
|
|
206
211
|
) : (
|
|
207
212
|
<InputField
|
|
208
|
-
aria-labelledby={labelTextWhenNoError
|
|
213
|
+
aria-labelledby={createIdFromString(labelTextWhenNoError)}
|
|
214
|
+
aria-describedby={createIdFromString(
|
|
215
|
+
labelTextWhenNoError,
|
|
216
|
+
"error message"
|
|
217
|
+
)}
|
|
209
218
|
onChange={e => fieldActions.set(e.target.value)}
|
|
210
219
|
type={type === "password" && showPassword ? "text" : type}
|
|
211
220
|
value={field.rawValue}
|
|
@@ -233,6 +242,7 @@ const FormInput = ({
|
|
|
233
242
|
&::first-letter {
|
|
234
243
|
text-transform: uppercase;
|
|
235
244
|
}`}
|
|
245
|
+
id={createIdFromString(labelTextWhenNoError, "error message")}
|
|
236
246
|
>
|
|
237
247
|
{errorMessages[field.errors[0]]}
|
|
238
248
|
</Text>
|
|
@@ -5,9 +5,9 @@ import {
|
|
|
5
5
|
SEASHELL_WHITE,
|
|
6
6
|
MINESHAFT_GREY,
|
|
7
7
|
DUSTY_GREY,
|
|
8
|
-
GREY_CHATEAU,
|
|
9
8
|
ATHENS_GREY,
|
|
10
|
-
INFO_BLUE
|
|
9
|
+
INFO_BLUE,
|
|
10
|
+
STORM_GREY
|
|
11
11
|
} from "../../../constants/colors";
|
|
12
12
|
import { FONT_WEIGHT_REGULAR } from "../../../constants/style_constants";
|
|
13
13
|
|
|
@@ -25,7 +25,7 @@ const inputBackgroundColor = {
|
|
|
25
25
|
};
|
|
26
26
|
const color = { default: `${MINESHAFT_GREY}`, disabled: `${DUSTY_GREY}` };
|
|
27
27
|
const labelColor = { default: `${CHARADE_GREY}`, disabled: `${CHARADE_GREY}` };
|
|
28
|
-
const borderColor = { default: `${
|
|
28
|
+
const borderColor = { default: `${STORM_GREY}`, disabled: `${STORM_GREY}` };
|
|
29
29
|
const lineHeight = { default: "1rem", disabled: "1rem" };
|
|
30
30
|
const fontSize = { default: "0.875rem", disabled: "0.875rem" };
|
|
31
31
|
const errorFontSize = { default: "0.75rem", disabled: "0.75rem" };
|
|
@@ -6,6 +6,7 @@ import { SelectContainer } from "./FormSelect.styled";
|
|
|
6
6
|
import { fallbackValues } from "./FormSelect.theme";
|
|
7
7
|
import { themeComponent } from "../../../util/themeUtils";
|
|
8
8
|
import { Box, Cluster, Stack } from "../layouts";
|
|
9
|
+
import { createIdFromString } from "../../../util/general";
|
|
9
10
|
|
|
10
11
|
const FormSelect = ({
|
|
11
12
|
fieldActions,
|
|
@@ -53,14 +54,18 @@ const FormSelect = ({
|
|
|
53
54
|
&::first-letter {
|
|
54
55
|
text-transform: uppercase;
|
|
55
56
|
}`}
|
|
56
|
-
id={labelTextWhenNoError
|
|
57
|
+
id={createIdFromString(labelTextWhenNoError)}
|
|
57
58
|
>
|
|
58
59
|
{labelTextWhenNoError}
|
|
59
60
|
</Text>
|
|
60
61
|
</Cluster>
|
|
61
62
|
</Box>
|
|
62
63
|
<Dropdown
|
|
63
|
-
ariaLabelledby={labelTextWhenNoError
|
|
64
|
+
ariaLabelledby={createIdFromString(labelTextWhenNoError)}
|
|
65
|
+
ariaDescribedby={createIdFromString(
|
|
66
|
+
labelTextWhenNoError,
|
|
67
|
+
"error message"
|
|
68
|
+
)}
|
|
64
69
|
maxHeight={dropdownMaxHeight}
|
|
65
70
|
hasTitles={hasTitles}
|
|
66
71
|
placeholder={options[0] ? options[0].text : ""}
|
|
@@ -90,6 +95,7 @@ const FormSelect = ({
|
|
|
90
95
|
&::first-letter {
|
|
91
96
|
text-transform: uppercase;
|
|
92
97
|
}`}
|
|
98
|
+
id={createIdFromString(labelTextWhenNoError, "error message")}
|
|
93
99
|
>
|
|
94
100
|
{errorMessages[field.errors[0]]}
|
|
95
101
|
</Text>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FONT_WEIGHT_REGULAR } from "../../../constants/style_constants";
|
|
2
2
|
|
|
3
|
-
const linkColor = { default: "#
|
|
3
|
+
const linkColor = { default: "#3176AA" };
|
|
4
4
|
const fontSize = { default: "1rem" };
|
|
5
5
|
const lineHeight = { default: "1.5rem" };
|
|
6
6
|
const fontWeight = {
|
|
@@ -3,7 +3,7 @@ import { FONT_WEIGHT_REGULAR } from "../../../../constants/style_constants";
|
|
|
3
3
|
const color = "#15749D";
|
|
4
4
|
const hoverColor = "#116285";
|
|
5
5
|
const activeColor = "#0E506D";
|
|
6
|
-
const linkColor = "#
|
|
6
|
+
const linkColor = "#3176AA";
|
|
7
7
|
const fontWeight = FONT_WEIGHT_REGULAR;
|
|
8
8
|
const modalLinkHoverFocus = `outline: none;
|
|
9
9
|
cursor: pointer;
|
package/src/components/molecules/terms-and-conditions-modal/TermsAndConditionsModal.theme.js
CHANGED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "../../../constants/style_constants";
|
|
5
5
|
|
|
6
6
|
const backgroundColor = { default: "#ffffff", footer: "#ffffff" };
|
|
7
|
-
const linkColor = { default: "#
|
|
7
|
+
const linkColor = { default: "#3176AA", footer: "#ffffff" };
|
|
8
8
|
const border = { default: "#cdcdcd", footer: "#cdcdcd" };
|
|
9
9
|
const fontSize = { default: "1rem", footer: "0.875rem" };
|
|
10
10
|
const lineHeight = { default: "1.5rem", footer: "1.25rem" };
|
package/src/constants/colors.js
CHANGED
|
@@ -53,6 +53,7 @@ const INFO_BLUE = "#E4F4FD";
|
|
|
53
53
|
const HOVER_LIGHT_BLUE = "#EFFAFF";
|
|
54
54
|
const MATISSE_BLUE = "#15749D";
|
|
55
55
|
const ROYAL_BLUE = "#3181E3";
|
|
56
|
+
const ASTRAL_BLUE = "#3176AA";
|
|
56
57
|
// GREEN
|
|
57
58
|
const FOREST_GREEN = "#19b03F";
|
|
58
59
|
const MEADOW_GREEN = "#16C98D";
|
|
@@ -74,7 +75,7 @@ const APRICOT_ORANGE = "#FFE8D8";
|
|
|
74
75
|
const RED = "#FF0000";
|
|
75
76
|
const CRIMSON_RED = "#ED1C24";
|
|
76
77
|
const THUNDERBIRD_RED = "#C3191F";
|
|
77
|
-
const RAZZMATAZZ_RED = "#
|
|
78
|
+
const RAZZMATAZZ_RED = "#D11053";
|
|
78
79
|
const FANTASY_RED = "#FCF4F4";
|
|
79
80
|
const COSMOS_RED = "#FFD0D3";
|
|
80
81
|
const BLUSH_RED = "#FFF0F5";
|
|
@@ -159,6 +160,7 @@ export {
|
|
|
159
160
|
HOVER_LIGHT_BLUE,
|
|
160
161
|
MATISSE_BLUE,
|
|
161
162
|
ROYAL_BLUE,
|
|
163
|
+
ASTRAL_BLUE,
|
|
162
164
|
FOREST_GREEN,
|
|
163
165
|
MEADOW_GREEN,
|
|
164
166
|
POLAR_GREEN,
|
package/src/util/general.js
CHANGED
|
@@ -19,6 +19,19 @@ const createUniqueId = () =>
|
|
|
19
19
|
.toString(36)
|
|
20
20
|
.substr(2, 9);
|
|
21
21
|
|
|
22
|
+
export const createIdFromString = (text, postscript, unique = false) => {
|
|
23
|
+
if (text === undefined) {
|
|
24
|
+
return createUniqueId();
|
|
25
|
+
} else {
|
|
26
|
+
// "first name", undefined, false -> "first-name"
|
|
27
|
+
// "email address", "error message", false -> "email-address-error-message"
|
|
28
|
+
// "shopping cart", "order item", true -> "shopping-cart-order-item_2ahtlz608"
|
|
29
|
+
return `${text?.replace(/\s+/g, "-")}${
|
|
30
|
+
postscript ? `-${postscript?.replace(/\s+/g, "-")}` : ``
|
|
31
|
+
}${unique ? createUniqueId() : ``}`;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
22
35
|
export const safeChildren = (children, replacement = []) => {
|
|
23
36
|
const unsafeValues = [false, undefined, NaN, null];
|
|
24
37
|
if (children && children instanceof Array) {
|