@thecb/components 3.7.0-beta.2 → 4.0.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/.storybook/main.js +1 -1
- package/.storybook/page.js +2 -0
- package/dist/index.cjs.js +170 -146
- package/package.json +2 -2
- package/src/components/atoms/alert/Alert.js +53 -35
- package/src/components/atoms/breadcrumb/Breadcrumb.js +4 -1
- package/src/components/atoms/button-with-action/ButtonWithAction.js +2 -2
- package/src/components/atoms/checkbox/Checkbox.js +1 -0
- package/src/components/atoms/checkbox-list/CheckboxList.js +3 -1
- package/src/components/atoms/display-card/DisplayCard.js +4 -2
- package/src/components/atoms/dropdown/Dropdown.js +4 -4
- package/src/components/atoms/dropdown/Dropdown.stories.js +10 -33
- package/src/components/atoms/form-layouts/FormInput.js +7 -4
- package/src/components/atoms/form-layouts/FormLayouts.stories.js +5 -5
- package/src/components/atoms/hamburger-button/HamburgerButton.js +4 -3
- package/src/components/atoms/icons/AccountsIconSmall.js +6 -13
- package/src/components/atoms/icons/icons.stories.js +1 -1
- package/src/components/atoms/layouts/Box.styled.js +1 -0
- package/src/components/atoms/layouts/Cluster.styled.js +5 -1
- package/src/components/atoms/layouts/Sidebar.styled.js +7 -1
- package/src/components/atoms/radio-button/RadioButton.js +1 -0
- package/src/components/atoms/radio-button/RadioButton.stories.js +26 -61
- package/src/components/atoms/toggle-switch/ToggleSwitch.js +1 -0
- package/src/components/atoms/toggle-switch/ToggleSwitch.stories.js +10 -51
- package/src/components/molecules/editable-list/EditableList.js +11 -8
- package/src/components/molecules/nav-menu/NavMenuDesktop.js +2 -1
- package/src/components/molecules/nav-menu/NavMenuMobile.js +7 -1
- package/src/components/molecules/obligation/Obligation.js +9 -7
- package/src/components/molecules/obligation/modules/PaymentDetailsActions.js +23 -23
- package/src/components/molecules/pagination/Pagination.js +20 -4
- package/src/components/molecules/radio-section/RadioSection.js +7 -3
- package/src/deprecated/components/radio-button/radio-button.js +5 -1
- package/src/deprecated/icons/IconInvalid.js +7 -31
- package/src/deprecated/icons/IconNeutral.js +5 -4
- package/src/deprecated/icons/IconValid.js +8 -33
- package/src/util/general.js +10 -1
- package/src/components/molecules/content/Content.js +0 -20
- package/src/components/molecules/content/Content.theme.js +0 -60
- package/src/components/molecules/content/blocks/accordion-block/AccordionBlock.js +0 -108
- package/src/components/molecules/content/blocks/accordion-block/index.js +0 -3
- package/src/components/molecules/content/blocks/article-block/ArticleBlock.js +0 -58
- package/src/components/molecules/content/blocks/article-block/index.js +0 -3
- package/src/components/molecules/content/blocks/attached-file-block/AttachedFileBlock.js +0 -60
- package/src/components/molecules/content/blocks/attached-file-block/index.js +0 -3
- package/src/components/molecules/content/blocks/featured-content-block/FeaturedContentBlock.js +0 -0
- package/src/components/molecules/content/blocks/featured-content-block/index.js +0 -0
- package/src/components/molecules/content/blocks/hero-block/HeroBlock.js +0 -54
- package/src/components/molecules/content/blocks/hero-block/index.js +0 -3
- package/src/components/molecules/content/blocks/highlight-block/HighlightBlock.js +0 -42
- package/src/components/molecules/content/blocks/highlight-block/index.js +0 -3
- package/src/components/molecules/content/blocks/index.js +0 -33
- package/src/components/molecules/content/blocks/info-block/InfoBlock.js +0 -15
- package/src/components/molecules/content/blocks/info-block/index.js +0 -3
- package/src/components/molecules/content/blocks/location-block/LocationBlock.js +0 -228
- package/src/components/molecules/content/blocks/location-block/index.js +0 -3
- package/src/components/molecules/content/blocks/related-links-block/RelatedLinksBlock.js +0 -35
- package/src/components/molecules/content/blocks/related-links-block/index.js +0 -3
- package/src/components/molecules/content/blocks/screendoor-block/ScreendoorBlock.js +0 -57
- package/src/components/molecules/content/blocks/screendoor-block/ScreendoorForm.styled.js +0 -314
- package/src/components/molecules/content/blocks/screendoor-block/index.js +0 -3
- package/src/components/molecules/content/blocks/tagline-block/TaglineBlock.js +0 -45
- package/src/components/molecules/content/blocks/tagline-block/index.js +0 -3
- package/src/components/molecules/content/blocks/task-block/TaskBlock.js +0 -40
- package/src/components/molecules/content/blocks/task-block/index.js +0 -3
- package/src/components/molecules/content/blocks/text-block/TextBlock.js +0 -40
- package/src/components/molecules/content/blocks/text-block/index.js +0 -3
- package/src/components/molecules/content/header/Header.js +0 -283
- package/src/components/molecules/content/header/Header.theme.js +0 -11
- package/src/components/molecules/content/header/index.js +0 -3
- package/src/components/molecules/content/index.js +0 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thecb/components",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Common lib for CityBase react components",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@babel/preset-react": "^7.0.0",
|
|
26
26
|
"@babel/register": "^7.6.2",
|
|
27
27
|
"@rollup/plugin-json": "^4.0.3",
|
|
28
|
-
"@storybook/addon-a11y": "
|
|
28
|
+
"@storybook/addon-a11y": "5.3.14",
|
|
29
29
|
"@storybook/addon-actions": "^5.3.14",
|
|
30
30
|
"@storybook/addon-console": "^1.2.1",
|
|
31
31
|
"@storybook/addon-docs": "^5.3.19",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { AlertIcons, IconQuit } from "../../../deprecated/icons";
|
|
3
|
-
import { Box, Cluster, Stack, Cover, Sidebar } from "../layouts";
|
|
3
|
+
import { Box, Center, Cluster, Stack, Cover, Sidebar } from "../layouts";
|
|
4
4
|
import Text from "../text";
|
|
5
5
|
import { fallbackValues } from "./Alert.theme";
|
|
6
6
|
import { themeComponent } from "../../../util/themeUtils";
|
|
@@ -8,37 +8,35 @@ import { themeComponent } from "../../../util/themeUtils";
|
|
|
8
8
|
const Alert = ({
|
|
9
9
|
heading,
|
|
10
10
|
text,
|
|
11
|
+
textOverride,
|
|
11
12
|
variant,
|
|
12
13
|
children,
|
|
13
14
|
height,
|
|
14
15
|
onLinkClick,
|
|
16
|
+
padding = "0.5rem",
|
|
15
17
|
showQuitLink = true,
|
|
16
|
-
themeValues
|
|
18
|
+
themeValues,
|
|
19
|
+
extraStyles,
|
|
20
|
+
maxContentWidth
|
|
17
21
|
}) => {
|
|
18
22
|
const Icon = AlertIcons[variant];
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
</Cover>
|
|
37
|
-
</Box>
|
|
38
|
-
<Box padding="0">
|
|
39
|
-
<Sidebar sidebarOnRight width="24px" childGap="0rem">
|
|
40
|
-
<Box padding="1rem 1rem 1rem 0.5rem">
|
|
41
|
-
<Cluster justify="flex-start" align="center">
|
|
23
|
+
|
|
24
|
+
const content = (
|
|
25
|
+
<Sidebar width="24px" childGap="0rem">
|
|
26
|
+
<Box padding="0 0 0 1rem" minHeight="100%">
|
|
27
|
+
<Cover minHeight="100%" singleChild>
|
|
28
|
+
<Box padding="0" width="1.5rem" minHeight="1.5rem">
|
|
29
|
+
<Icon />
|
|
30
|
+
</Box>
|
|
31
|
+
</Cover>
|
|
32
|
+
</Box>
|
|
33
|
+
<Box padding="0">
|
|
34
|
+
<Sidebar onRight width="24px" childGap="0rem">
|
|
35
|
+
<Box padding={`${padding} 1rem`}>
|
|
36
|
+
<Cluster justify="flex-start" align="center">
|
|
37
|
+
{textOverride ? (
|
|
38
|
+
textOverride
|
|
39
|
+
) : (
|
|
42
40
|
<Stack fullHeight childGap="0.25rem">
|
|
43
41
|
<Text variant="p" color={themeValues.text} weight="600">
|
|
44
42
|
{heading}
|
|
@@ -48,18 +46,38 @@ const Alert = ({
|
|
|
48
46
|
</Text>
|
|
49
47
|
{children}
|
|
50
48
|
</Stack>
|
|
51
|
-
</Cluster>
|
|
52
|
-
</Box>
|
|
53
|
-
<Cluster justify="flex-end" align="flex-start">
|
|
54
|
-
{showQuitLink && (
|
|
55
|
-
<Box padding="0" minHeight="100%" onClick={onLinkClick}>
|
|
56
|
-
<IconQuit />
|
|
57
|
-
</Box>
|
|
58
49
|
)}
|
|
59
50
|
</Cluster>
|
|
60
|
-
</
|
|
61
|
-
|
|
62
|
-
|
|
51
|
+
</Box>
|
|
52
|
+
<Cluster justify="flex-end" align="flex-start">
|
|
53
|
+
{showQuitLink && (
|
|
54
|
+
<Box padding="0" minHeight="100%" onClick={onLinkClick}>
|
|
55
|
+
<IconQuit />
|
|
56
|
+
</Box>
|
|
57
|
+
)}
|
|
58
|
+
</Cluster>
|
|
59
|
+
</Sidebar>
|
|
60
|
+
</Box>
|
|
61
|
+
</Sidebar>
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
return (
|
|
65
|
+
<Box
|
|
66
|
+
padding={padding}
|
|
67
|
+
width="100%"
|
|
68
|
+
minHeight={height && parseInt(height) < 100 ? height : "100px"}
|
|
69
|
+
height={height ? height : "auto"}
|
|
70
|
+
background={themeValues.background}
|
|
71
|
+
borderRadius="4px"
|
|
72
|
+
borderColor={themeValues.border}
|
|
73
|
+
borderSize="1px"
|
|
74
|
+
extraStyles={extraStyles}
|
|
75
|
+
>
|
|
76
|
+
{maxContentWidth ? (
|
|
77
|
+
<Center maxWidth={maxContentWidth}>{content}</Center>
|
|
78
|
+
) : (
|
|
79
|
+
content
|
|
80
|
+
)}
|
|
63
81
|
</Box>
|
|
64
82
|
);
|
|
65
83
|
};
|
|
@@ -15,12 +15,15 @@ const Breadcrumbs = ({ breadcrumbsList = [] }) => {
|
|
|
15
15
|
"Breadcrumb"
|
|
16
16
|
);
|
|
17
17
|
return (
|
|
18
|
-
<Box padding="0"
|
|
18
|
+
<Box padding="0" as="nav" aria-label="Breadcrumb navigation">
|
|
19
19
|
<Cluster justify="flex-start" align="center">
|
|
20
20
|
{breadcrumbsList.map(
|
|
21
21
|
({ linkText, linkDestination, isActive }, index) => (
|
|
22
22
|
<Fragment key={`breadcrumb-${linkText}`}>
|
|
23
23
|
<InternalLink
|
|
24
|
+
aria-current={
|
|
25
|
+
index === breadcrumbsList.length - 1 && "location"
|
|
26
|
+
}
|
|
24
27
|
to={linkDestination}
|
|
25
28
|
active={isActive.toString()}
|
|
26
29
|
color={themeValues.color}
|
|
@@ -103,7 +103,7 @@ const ButtonWithAction = ({
|
|
|
103
103
|
`;
|
|
104
104
|
const disabledStyles = `
|
|
105
105
|
background-clor: #6E727E;
|
|
106
|
-
border-
|
|
106
|
+
border-color: #6E727E;
|
|
107
107
|
color: #FFFFFF;
|
|
108
108
|
&:focus {
|
|
109
109
|
box-shadow: 0 0 10px #6E727E;
|
|
@@ -123,7 +123,7 @@ const ButtonWithAction = ({
|
|
|
123
123
|
activeStyles={activeStyles}
|
|
124
124
|
disabledStyles={disabledStyles}
|
|
125
125
|
as="button"
|
|
126
|
-
onClick={action}
|
|
126
|
+
onClick={!isLoading && action}
|
|
127
127
|
borderRadius="2px"
|
|
128
128
|
theme={themeContext}
|
|
129
129
|
extraStyles={isLoading ? loadingExtraStyles : extraStyles}
|
|
@@ -35,6 +35,7 @@ const CheckboxListItem = ({
|
|
|
35
35
|
name,
|
|
36
36
|
imageUrl,
|
|
37
37
|
image,
|
|
38
|
+
imageAlt = "checkbox icon",
|
|
38
39
|
disabled,
|
|
39
40
|
borderColor,
|
|
40
41
|
color,
|
|
@@ -57,6 +58,7 @@ const CheckboxListItem = ({
|
|
|
57
58
|
<HiddenCheckboxInput id={`checkbox-${name}-${index}`} />
|
|
58
59
|
<CheckboxLabel
|
|
59
60
|
name={name}
|
|
61
|
+
aria-label={name}
|
|
60
62
|
htmlFor={`checkbox-${name}-${index}`}
|
|
61
63
|
onClick={disabled ? noop : onSelect}
|
|
62
64
|
onKeyDown={disabled ? noop : onSelect}
|
|
@@ -73,7 +75,7 @@ const CheckboxListItem = ({
|
|
|
73
75
|
</CheckboxLabel>
|
|
74
76
|
<Box padding="0rem 0.5rem 0rem 0rem" hiddenStyles={!imageUrl}>
|
|
75
77
|
<Cluster justify="flex-start" align="center">
|
|
76
|
-
<CheckboxItemIcon src={imageUrl} />
|
|
78
|
+
<CheckboxItemIcon src={imageUrl} alt={imageAlt} />
|
|
77
79
|
</Cluster>
|
|
78
80
|
</Box>
|
|
79
81
|
<Box padding="0rem 0.5rem 0rem 0rem" hiddenStyles={!image}>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import React, { Fragment } from "react";
|
|
2
2
|
import Stack from "../layouts/Stack";
|
|
3
3
|
import Box from "../layouts/Box";
|
|
4
4
|
import Text from "../text";
|
|
@@ -48,7 +48,7 @@ const DisplayCard = ({
|
|
|
48
48
|
dataQa={buttonText}
|
|
49
49
|
extraStyles={`min-width: 0;`}
|
|
50
50
|
/>
|
|
51
|
-
) : (
|
|
51
|
+
) : buttonAction ? (
|
|
52
52
|
<ButtonWithAction
|
|
53
53
|
text={buttonText}
|
|
54
54
|
action={buttonAction}
|
|
@@ -56,6 +56,8 @@ const DisplayCard = ({
|
|
|
56
56
|
dataQa={buttonText}
|
|
57
57
|
extraStyles={`min-width: 0;`}
|
|
58
58
|
/>
|
|
59
|
+
) : (
|
|
60
|
+
<Fragment />
|
|
59
61
|
)}
|
|
60
62
|
</Cluster>
|
|
61
63
|
</Box>
|
|
@@ -44,7 +44,7 @@ const DropdownItemWrapper = styled.div`
|
|
|
44
44
|
background-color: ${({ selected, themeValues }) =>
|
|
45
45
|
selected ? themeValues.selectedColor : WHITE};
|
|
46
46
|
text-align: start;
|
|
47
|
-
border-
|
|
47
|
+
border-width: 0px;
|
|
48
48
|
border-color: transparent;
|
|
49
49
|
box-shadow: none;
|
|
50
50
|
padding: 1rem;
|
|
@@ -200,7 +200,7 @@ const Dropdown = ({
|
|
|
200
200
|
tabIndex={0}
|
|
201
201
|
padding="0"
|
|
202
202
|
width="100%"
|
|
203
|
-
|
|
203
|
+
hoverStyles={`background-color: ${themeValues.hoverColor};`}
|
|
204
204
|
aria-expanded={isOpen}
|
|
205
205
|
>
|
|
206
206
|
<Box
|
|
@@ -209,7 +209,6 @@ const Dropdown = ({
|
|
|
209
209
|
width="100%"
|
|
210
210
|
padding="12px"
|
|
211
211
|
hoverStyles={`background-color: ${themeValues.hoverColor};`}
|
|
212
|
-
focusStyles={`background-color: ${themeValues.hoverColor};`}
|
|
213
212
|
borderSize="1px"
|
|
214
213
|
borderColor={
|
|
215
214
|
isError
|
|
@@ -225,6 +224,7 @@ const Dropdown = ({
|
|
|
225
224
|
<Stack direction="row" bottomItem={2}>
|
|
226
225
|
{isOpen ? (
|
|
227
226
|
<SearchInput
|
|
227
|
+
aria-label={inputValue || "Dropdown awaiting search value"}
|
|
228
228
|
value={inputValue}
|
|
229
229
|
onChange={noop}
|
|
230
230
|
themeValues={themeValues}
|
|
@@ -242,7 +242,7 @@ const Dropdown = ({
|
|
|
242
242
|
</Stack>
|
|
243
243
|
</Box>
|
|
244
244
|
{isOpen ? (
|
|
245
|
-
<DropdownContentWrapper open={isOpen} ref={dropdownRef} tabIndex={
|
|
245
|
+
<DropdownContentWrapper open={isOpen} ref={dropdownRef} tabIndex={0}>
|
|
246
246
|
<Stack childGap="0">
|
|
247
247
|
{filteredOptions.map((choice, i) => (
|
|
248
248
|
<DropdownItemWrapper
|
|
@@ -1,37 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect } from "react";
|
|
2
|
-
import { withKnobs, text } from "@storybook/addon-knobs";
|
|
3
2
|
import Dropdown from "./Dropdown";
|
|
4
|
-
import
|
|
5
|
-
import { ThemeProvider } from "styled-components";
|
|
6
|
-
|
|
7
|
-
const fakeTheme = {
|
|
8
|
-
Dropdown: {
|
|
9
|
-
selectedColor: "#15749D",
|
|
10
|
-
hoverColor: "#EFFAFF"
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
title: "Dropdown",
|
|
16
|
-
component: Dropdown,
|
|
17
|
-
decorators: [
|
|
18
|
-
withKnobs,
|
|
19
|
-
storyFn => (
|
|
20
|
-
<ThemeProvider
|
|
21
|
-
theme={{
|
|
22
|
-
name: text("Theme Name", "default"),
|
|
23
|
-
values: fakeTheme
|
|
24
|
-
}}
|
|
25
|
-
>
|
|
26
|
-
<Cover>
|
|
27
|
-
<div />
|
|
28
|
-
<Center>{storyFn()}</Center>
|
|
29
|
-
<div />
|
|
30
|
-
</Cover>
|
|
31
|
-
</ThemeProvider>
|
|
32
|
-
)
|
|
33
|
-
]
|
|
34
|
-
};
|
|
3
|
+
import page from "../../../../.storybook/page";
|
|
35
4
|
|
|
36
5
|
const options = [
|
|
37
6
|
{ text: "Please select an option", value: "" },
|
|
@@ -42,7 +11,7 @@ const options = [
|
|
|
42
11
|
|
|
43
12
|
const disabledValues = ["DISABLED_OPTION"];
|
|
44
13
|
|
|
45
|
-
export const
|
|
14
|
+
export const dropdown = () => {
|
|
46
15
|
const [isOpen, setOpen] = useState(false);
|
|
47
16
|
const [value, setValue] = useState(null);
|
|
48
17
|
const [isError, setError] = useState(false);
|
|
@@ -68,3 +37,11 @@ export const dropdownDefault = () => {
|
|
|
68
37
|
/>
|
|
69
38
|
);
|
|
70
39
|
};
|
|
40
|
+
|
|
41
|
+
const story = page({
|
|
42
|
+
title: "Components|Atoms/Dropdown",
|
|
43
|
+
Component: Dropdown,
|
|
44
|
+
height: "500px"
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export default story;
|
|
@@ -46,7 +46,7 @@ const InputField = styled.input`
|
|
|
46
46
|
`;
|
|
47
47
|
|
|
48
48
|
// eslint-disable-next-line no-unused-vars
|
|
49
|
-
const FormattedInputField = styled(({ showErrors, ...props }) => (
|
|
49
|
+
const FormattedInputField = styled(({ showErrors, themeValues, ...props }) => (
|
|
50
50
|
<FormattedInput {...props} />
|
|
51
51
|
))`
|
|
52
52
|
border: 1px solid
|
|
@@ -106,6 +106,7 @@ const FormInput = ({
|
|
|
106
106
|
{helperModal ? (
|
|
107
107
|
<Cluster justify="space-between" align="center">
|
|
108
108
|
<Text
|
|
109
|
+
as="label"
|
|
109
110
|
color={themeValues.labelColor}
|
|
110
111
|
variant="pS"
|
|
111
112
|
weight={themeValues.fontWeight}
|
|
@@ -114,6 +115,7 @@ const FormInput = ({
|
|
|
114
115
|
&::first-letter {
|
|
115
116
|
text-transform: uppercase;
|
|
116
117
|
}`}
|
|
118
|
+
id={labelTextWhenNoError.replace(/\s+/g, "-")}
|
|
117
119
|
>
|
|
118
120
|
{labelTextWhenNoError}
|
|
119
121
|
</Text>
|
|
@@ -129,6 +131,7 @@ const FormInput = ({
|
|
|
129
131
|
<Box padding="0" minWidth="100%">
|
|
130
132
|
<Cluster justify="space-between" align="center">
|
|
131
133
|
<Text
|
|
134
|
+
as="label"
|
|
132
135
|
color={themeValues.labelColor}
|
|
133
136
|
variant="pS"
|
|
134
137
|
fontWeight={themeValues.fontWeight}
|
|
@@ -137,7 +140,7 @@ const FormInput = ({
|
|
|
137
140
|
&::first-letter {
|
|
138
141
|
text-transform: uppercase;
|
|
139
142
|
}`}
|
|
140
|
-
id={labelTextWhenNoError}
|
|
143
|
+
id={labelTextWhenNoError.replace(/\s+/g, "-")}
|
|
141
144
|
>
|
|
142
145
|
{labelTextWhenNoError}
|
|
143
146
|
</Text>
|
|
@@ -168,7 +171,7 @@ const FormInput = ({
|
|
|
168
171
|
<Box padding="0">
|
|
169
172
|
{formatter ? (
|
|
170
173
|
<FormattedInputField
|
|
171
|
-
aria-labelledby={labelTextWhenNoError}
|
|
174
|
+
aria-labelledby={labelTextWhenNoError.replace(/\s+/g, "-")}
|
|
172
175
|
onChange={e => fieldActions.set(e)}
|
|
173
176
|
type={type}
|
|
174
177
|
value={field.rawValue}
|
|
@@ -185,7 +188,7 @@ const FormInput = ({
|
|
|
185
188
|
/>
|
|
186
189
|
) : (
|
|
187
190
|
<InputField
|
|
188
|
-
aria-labelledby={labelTextWhenNoError}
|
|
191
|
+
aria-labelledby={labelTextWhenNoError.replace(/\s+/g, "-")}
|
|
189
192
|
onChange={e => fieldActions.set(e.target.value)}
|
|
190
193
|
type={type === "password" && showPassword ? "text" : type}
|
|
191
194
|
value={field.rawValue}
|
|
@@ -30,7 +30,7 @@ export const formLayouts = () => {
|
|
|
30
30
|
>
|
|
31
31
|
<FormInputRow childGap={text("rowChildGap", "1rem", "props")}>
|
|
32
32
|
<FormInput
|
|
33
|
-
labelTextWhenNoError="Form Layouts"
|
|
33
|
+
labelTextWhenNoError="Form Layouts 1"
|
|
34
34
|
errorMessages="Error"
|
|
35
35
|
field={data.test}
|
|
36
36
|
/>
|
|
@@ -38,24 +38,24 @@ export const formLayouts = () => {
|
|
|
38
38
|
<FormInputRow childGap={text("rowChildGap", "1rem", "props")}>
|
|
39
39
|
<FormInputColumn childGap={text("columnChildGap", "0.5rem", "props")}>
|
|
40
40
|
<FormInput
|
|
41
|
-
labelTextWhenNoError="Form Layouts"
|
|
41
|
+
labelTextWhenNoError="Form Layouts 2"
|
|
42
42
|
errorMessages="Error"
|
|
43
43
|
field={data.test}
|
|
44
44
|
/>
|
|
45
45
|
<FormInput
|
|
46
|
-
labelTextWhenNoError="Form Layouts"
|
|
46
|
+
labelTextWhenNoError="Form Layouts 3"
|
|
47
47
|
errorMessages="Error"
|
|
48
48
|
field={data.test}
|
|
49
49
|
/>
|
|
50
50
|
</FormInputColumn>
|
|
51
51
|
<FormInputColumn childGap={text("columnChildGap", "0.5rem", "props")}>
|
|
52
52
|
<FormInput
|
|
53
|
-
labelTextWhenNoError="Form Layouts"
|
|
53
|
+
labelTextWhenNoError="Form Layouts 4"
|
|
54
54
|
errorMessages="Error"
|
|
55
55
|
field={data.test}
|
|
56
56
|
/>
|
|
57
57
|
<FormInput
|
|
58
|
-
labelTextWhenNoError="Form Layouts"
|
|
58
|
+
labelTextWhenNoError="Form Layouts 5"
|
|
59
59
|
errorMessages="Error"
|
|
60
60
|
field={data.test}
|
|
61
61
|
/>
|
|
@@ -97,14 +97,15 @@ const HamburgerButton = ({
|
|
|
97
97
|
activeColor,
|
|
98
98
|
inactiveColor,
|
|
99
99
|
isActive,
|
|
100
|
-
onClick = noop
|
|
100
|
+
onClick = noop,
|
|
101
|
+
controls
|
|
101
102
|
}) => (
|
|
102
103
|
<Hamburger
|
|
103
104
|
className={isActive === true ? "active" : ""}
|
|
104
105
|
onClick={onClick}
|
|
105
106
|
type="button"
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
aria-label="Menu"
|
|
108
|
+
aria-controls={controls}
|
|
108
109
|
>
|
|
109
110
|
<HamburgerBox>
|
|
110
111
|
<HamburgerInner
|
|
@@ -22,25 +22,18 @@ const AccountsIconSmall = ({ themeValues }) => {
|
|
|
22
22
|
height="27"
|
|
23
23
|
></rect>
|
|
24
24
|
</defs>
|
|
25
|
-
<g
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
strokeWidth="1"
|
|
29
|
-
fill="none"
|
|
30
|
-
fillRule="evenodd"
|
|
31
|
-
>
|
|
32
|
-
<g id="Header/Desktop/Menu">
|
|
33
|
-
<g id="Header/Desktop/Menu/Accounts-Tab">
|
|
25
|
+
<g stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
|
|
26
|
+
<g>
|
|
27
|
+
<g>
|
|
34
28
|
<g>
|
|
35
|
-
<g
|
|
36
|
-
<g
|
|
29
|
+
<g>
|
|
30
|
+
<g>
|
|
37
31
|
<mask id="mask-2-accountssmall" fill="white">
|
|
38
32
|
<use xlinkHref="#path-1-accountssmall"></use>
|
|
39
33
|
</mask>
|
|
40
|
-
<g
|
|
34
|
+
<g></g>
|
|
41
35
|
<path
|
|
42
36
|
d="M1.875,17.9609424 L4.30077547,13.8125148 C4.60546242,13.2968908 5.01561733,12.8867359 5.53124128,12.5820489 C6.04686523,12.277362 6.60936389,12.1250188 7.21873726,12.1250188 L7.21873726,12.1250188 L18.7499598,12.1250188 L18.7499598,10.4375228 C18.7499598,9.9687741 18.5858975,9.57033719 18.2577734,9.24221315 C17.9296494,8.91408911 17.5312125,8.75002682 17.0624638,8.75002682 L17.0624638,8.75002682 L11.4374772,8.75002682 L9.18748257,6.50003219 L3.56249598,6.50003219 C3.09374727,6.50003219 2.69531037,6.66409447 2.36718633,6.99221851 C2.03906229,7.32034255 1.875,7.71877946 1.875,8.18752816 L1.875,8.18752816 L1.875,17.9609424 Z M17.519494,20 C17.9179303,20 18.2929296,19.900391 18.6444913,19.7011726 C18.9960529,19.5019541 19.2655837,19.2265643 19.4530831,18.8750027 L19.4530831,18.8750027 L22.0194832,14.5156381 C22.1835455,14.2343887 22.1835455,13.9531394 22.0194832,13.6718901 C21.8554209,13.3906408 21.6093278,13.2500161 21.2812037,13.2500161 L21.2812037,13.2500161 L7.21873726,13.2500161 C6.82030089,13.2500161 6.4453016,13.3496251 6.09373994,13.5488435 C5.74217828,13.748062 5.47264749,14.0234517 5.28514812,14.3750134 L5.28514812,14.3750134 L2.71874799,18.734378 C2.5546857,19.0156273 2.5546857,19.2968767 2.71874799,19.578126 C2.88281028,19.8593753 3.12890344,20 3.45702748,20 L3.45702748,20 L17.519494,20 Z"
|
|
43
|
-
id="f"
|
|
44
37
|
fill={themeValues.singleIconColor}
|
|
45
38
|
fillRule="nonzero"
|
|
46
39
|
mask="url(#mask-2-accountssmall)"
|
|
@@ -48,5 +48,5 @@ export const routingNumberImage = () => <RoutingNumberImage />;
|
|
|
48
48
|
export const checkmarkIcon = () => <CheckmarkIcon />;
|
|
49
49
|
export const bankIcon = () => <BankIcon />;
|
|
50
50
|
export const genericCard = () => <GenericCard />;
|
|
51
|
-
export const
|
|
51
|
+
export const paymentIcon = () => <PaymentIcon />;
|
|
52
52
|
export const autopayOnIcon = () => <AutopayOnIcon />;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import styled from "styled-components";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
/* eslint-disable no-unused-vars */
|
|
5
|
+
export const ClusterWrapper = styled(({ overflow, ...props }) => (
|
|
6
|
+
<div {...props} />
|
|
7
|
+
))`
|
|
4
8
|
overflow: ${({ overflow }) => (overflow ? "visible" : "hidden")};
|
|
5
9
|
box-sizing: border-box;
|
|
6
10
|
`;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import styled from "styled-components";
|
|
2
3
|
|
|
3
4
|
export const SidebarWrapper = styled.div`
|
|
@@ -7,7 +8,12 @@ export const SidebarWrapper = styled.div`
|
|
|
7
8
|
${({ fullHeight }) => (fullHeight ? `height: 100%;` : ``)}
|
|
8
9
|
`;
|
|
9
10
|
|
|
10
|
-
export const SidebarInnerWrapper = styled
|
|
11
|
+
export const SidebarInnerWrapper = styled(
|
|
12
|
+
// eslint-disable-next-line no-unused-vars
|
|
13
|
+
({ onRight, childGap, contentMinWidth, minHeight, fullHeight, ...props }) => (
|
|
14
|
+
<div {...props} />
|
|
15
|
+
)
|
|
16
|
+
)`
|
|
11
17
|
display: flex;
|
|
12
18
|
flex-wrap: wrap;
|
|
13
19
|
box-sizing: border-box;
|
|
@@ -1,69 +1,34 @@
|
|
|
1
1
|
import React, { useState } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { boolean } from "@storybook/addon-knobs";
|
|
3
3
|
import RadioButton from "./RadioButton";
|
|
4
|
-
import { Box
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
const fakeTheme = {
|
|
8
|
-
RadioButton: {
|
|
9
|
-
activeColor: "#15749D",
|
|
10
|
-
inactiveColor: "#959CA8"
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export default {
|
|
15
|
-
title: "Radio Button",
|
|
16
|
-
component: RadioButton,
|
|
17
|
-
decorators: [
|
|
18
|
-
withKnobs,
|
|
19
|
-
storyFn => (
|
|
20
|
-
<ThemeProvider
|
|
21
|
-
theme={{
|
|
22
|
-
name: text("Theme Name", "default"),
|
|
23
|
-
values: fakeTheme
|
|
24
|
-
}}
|
|
25
|
-
>
|
|
26
|
-
<Cover>
|
|
27
|
-
<div />
|
|
28
|
-
<Center>{storyFn()}</Center>
|
|
29
|
-
<div />
|
|
30
|
-
</Cover>
|
|
31
|
-
</ThemeProvider>
|
|
32
|
-
)
|
|
33
|
-
]
|
|
34
|
-
};
|
|
4
|
+
import { Box } from "../layouts";
|
|
5
|
+
import page from "../../../../.storybook/page";
|
|
35
6
|
|
|
36
7
|
export const radioButtonsDefault = () => {
|
|
37
|
-
const buttons = 3;
|
|
38
|
-
|
|
39
8
|
const [selected, setSelected] = useState(null);
|
|
40
9
|
const [focused, setFocused] = useState(null);
|
|
41
10
|
|
|
42
|
-
return
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
radios(
|
|
59
|
-
"Disable Radio Buttons",
|
|
60
|
-
{ Enabled: "enabled", Disabled: "disabled" },
|
|
61
|
-
"enabled",
|
|
62
|
-
"RADIO-GROUP-1"
|
|
63
|
-
) === "disabled"
|
|
64
|
-
}
|
|
65
|
-
/>
|
|
66
|
-
</Box>
|
|
67
|
-
);
|
|
68
|
-
});
|
|
11
|
+
return (
|
|
12
|
+
<Box
|
|
13
|
+
onFocus={() => setFocused(name)}
|
|
14
|
+
onBlur={() => setFocused(null)}
|
|
15
|
+
extraStyles="outline: none;"
|
|
16
|
+
tabIndex="0"
|
|
17
|
+
>
|
|
18
|
+
<RadioButton
|
|
19
|
+
name="demo"
|
|
20
|
+
radioOn={selected === name}
|
|
21
|
+
radioFocused={focused === name}
|
|
22
|
+
toggleRadio={() => setSelected(name)}
|
|
23
|
+
disabled={boolean("disabled", false, "props")}
|
|
24
|
+
/>
|
|
25
|
+
</Box>
|
|
26
|
+
);
|
|
69
27
|
};
|
|
28
|
+
|
|
29
|
+
const story = page({
|
|
30
|
+
title: "Components|Atoms/RadioButton",
|
|
31
|
+
Component: RadioButton
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
export default story;
|