@thecb/components 11.9.2-beta.2 → 11.9.3-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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thecb/components",
3
- "version": "11.9.2-beta.2",
3
+ "version": "11.9.3-beta.0",
4
4
  "description": "Common lib for CityBase react components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "typings": "dist/index.d.ts",
Binary file
@@ -5,6 +5,7 @@ import { fallbackValues } from "./FormLayouts.theme.js";
5
5
  import { themeComponent } from "../../../util/themeUtils";
6
6
  import { createIdFromString } from "../../../util/general.js";
7
7
  import Text from "../text";
8
+ import ButtonWithAction from "../button-with-action";
8
9
  import { Box, Cluster, Stack } from "../layouts";
9
10
  import { FONT_WEIGHT_REGULAR } from "../../../constants/style_constants";
10
11
  import { ERROR_COLOR, ROYAL_BLUE } from "../../../constants/colors";
@@ -171,7 +172,7 @@ const FormInput = ({
171
172
  </Cluster>
172
173
  ) : (
173
174
  <Box padding="0" minWidth="100%">
174
- <Cluster justify="space-between" align="center">
175
+ <Cluster justify="space-between" align="center" overflow>
175
176
  {labelDisplayOverride ? (
176
177
  labelDisplayOverride
177
178
  ) : (
@@ -191,22 +192,14 @@ const FormInput = ({
191
192
  </Text>
192
193
  )}
193
194
  {type === "password" && (
194
- <Text
195
- variant={labelTextVariant}
196
- color={themeValues.linkColor}
197
- weight={themeValues.fontWeight}
198
- hoverStyles={themeValues.hoverFocusStyles}
199
- extraStyles={`text-decoration: underline; cursor: pointer; &:focus { outline-offset: -2px; }`}
200
- onClick={() => setShowPassword(!showPassword)}
201
- tabIndex="0"
195
+ <ButtonWithAction
196
+ variant="smallGhost"
197
+ text={showPassword ? "Hide" : "Show"}
198
+ action={() => setShowPassword(!showPassword)}
202
199
  aria-label={showPassword ? "Hide Password" : "Show password"}
203
- aria-live="polite"
204
- onKeyPress={e =>
205
- e.key === "Enter" && setShowPassword(!showPassword)
206
- }
207
- >
208
- {showPassword ? "Hide" : "Show"}
209
- </Text>
200
+ extraStyles={`margin: 0; min-width: auto;`}
201
+ textExtraStyles={`color: ${themeValues.linkColor};`}
202
+ />
210
203
  )}
211
204
  {isMobile && decorator && (
212
205
  <Box padding="0 0 0 auto">{decorator}</Box>
@@ -34,8 +34,7 @@ const EmailForm = ({
34
34
  );
35
35
  const emailFieldErrorMessages = {
36
36
  [required.error]: "Email address is required",
37
- [isProbablyEmail.error]:
38
- "Please enter a valid email address in the format user@example.com"
37
+ [isProbablyEmail.error]: "Invalid email address"
39
38
  };
40
39
 
41
40
  return (
@@ -1,210 +0,0 @@
1
- import React from "react";
2
- import EmailForm from "./EmailForm";
3
- import { connect, Provider } from "react-redux";
4
- import { createStore } from "redux";
5
- import { createFormState, isProbablyEmail } from "redux-freeform";
6
- import { noop } from "../../../util/general";
7
- import { fn } from "@storybook/test";
8
-
9
- const formConfig = {
10
- email: {
11
- validators: [isProbablyEmail()]
12
- }
13
- };
14
-
15
- const { mapStateToProps, mapDispatchToProps, reducer } = createFormState(
16
- formConfig
17
- );
18
-
19
- const store = createStore(
20
- reducer,
21
- window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
22
- );
23
-
24
- const FormWrapper = props => <EmailForm {...props} />;
25
-
26
- const ConnectedEmailForm = connect(
27
- mapStateToProps,
28
- mapDispatchToProps
29
- )(FormWrapper);
30
-
31
- export default {
32
- title: "Molecules/EmailForm",
33
- component: ConnectedEmailForm,
34
- tags: ["!autodocs"],
35
- parameters: {
36
- layout: "centered"
37
- },
38
- args: {
39
- variant: "default",
40
- clearOnDismount: undefined,
41
- fields: undefined,
42
- actions: undefined,
43
- showErrors: false,
44
- guestCheckout: false,
45
- handleSubmit: noop,
46
- showWalletCheckbox: false,
47
- saveToWallet: noop,
48
- walletCheckboxMarked: false,
49
- isRequired: false
50
- },
51
- argTypes: {
52
- variant: {
53
- description: "Form container variant.",
54
- control: { type: "text" },
55
- table: {
56
- type: { summary: "string" },
57
- defaultValue: { summary: "default" }
58
- }
59
- },
60
- fields: {
61
- description:
62
- "Field data, usually generated with [redux-freeform](https://github.com/CityBaseInc/redux-freeform).",
63
- control: { type: "object" },
64
- table: {
65
- type: { summary: "object" },
66
- defaultValue: { summary: undefined }
67
- }
68
- },
69
- actions: {
70
- description:
71
- "Field actions, usually generated with [redux-freeform](https://github.com/CityBaseInc/redux-freeform).",
72
- control: { type: "object" },
73
- table: {
74
- type: { summary: "object" },
75
- defaultValue: { summary: undefined }
76
- }
77
- },
78
- clearOnDismount: {
79
- description:
80
- "If `true`, `actions.form.clear()` will be called when the component unmounts.",
81
- control: { type: "boolean" },
82
- table: {
83
- type: { summary: "boolean" },
84
- defaultValue: { summary: undefined }
85
- }
86
- },
87
- showErrors: {
88
- description: "Show form field errors.",
89
- control: { type: "boolean" },
90
- table: {
91
- type: { summary: "boolean" },
92
- defaultValue: { summary: false }
93
- }
94
- },
95
- guestCheckout: {
96
- description:
97
- "If `true`, displays a message about creating a wallet later for faster checkout.",
98
- control: { type: "boolean" },
99
- table: {
100
- type: { summary: "boolean" },
101
- defaultValue: { summary: false }
102
- }
103
- },
104
- handleSubmit: {
105
- description:
106
- "Function called when the `Enter` key is pressed on the email input (via `onKeyDown` prop passed to `FormInput` component).",
107
- control: { type: "object" },
108
- table: {
109
- type: { summary: "function" },
110
- defaultValue: { summary: undefined }
111
- }
112
- },
113
- showWalletCheckbox: {
114
- description:
115
- "If `true`, displays a checkbox to save the email address to wallet.",
116
- control: { type: "boolean" },
117
- table: {
118
- type: { summary: "boolean" },
119
- defaultValue: { summary: false }
120
- }
121
- },
122
- saveToWallet: {
123
- description: "Function called when the wallet checkbox is toggled.",
124
- control: { type: "object" },
125
- table: {
126
- type: { summary: "function" },
127
- defaultValue: { summary: undefined }
128
- }
129
- },
130
- walletCheckboxMarked: {
131
- description: "Whether the wallet checkbox is checked.",
132
- control: { type: "boolean" },
133
- table: {
134
- type: { summary: "boolean" },
135
- defaultValue: { summary: false }
136
- }
137
- },
138
- isRequired: {
139
- description: "If `true`, the email field becomes required.",
140
- control: { type: "boolean" },
141
- table: {
142
- type: { summary: "boolean" },
143
- defaultValue: { summary: false }
144
- }
145
- }
146
- },
147
- decorators: [
148
- Story => (
149
- <Provider store={store}>
150
- <Story />
151
- </Provider>
152
- )
153
- ]
154
- };
155
-
156
- export const Basic = args => <ConnectedEmailForm {...args} />;
157
-
158
- export const ShowErrors = {
159
- args: {
160
- showErrors: true
161
- },
162
- render: args => <ConnectedEmailForm {...args} />
163
- };
164
-
165
- export const GuestCheckout = {
166
- args: {
167
- guestCheckout: true
168
- },
169
- render: args => <ConnectedEmailForm {...args} />
170
- };
171
-
172
- export const WithWalletCheckbox = {
173
- args: {
174
- showWalletCheckbox: true,
175
- saveToWallet: fn()
176
- },
177
- render: args => <ConnectedEmailForm {...args} />
178
- };
179
-
180
- export const Required = {
181
- args: {
182
- isRequired: true
183
- },
184
- render: args => <ConnectedEmailForm {...args} />
185
- };
186
-
187
- export const RequiredWithErrors = {
188
- args: {
189
- isRequired: true,
190
- showErrors: true
191
- },
192
- render: args => <ConnectedEmailForm {...args} />
193
- };
194
-
195
- export const GuestCheckoutWithWallet = {
196
- args: {
197
- guestCheckout: true,
198
- showWalletCheckbox: true,
199
- saveToWallet: fn(),
200
- walletCheckboxMarked: true
201
- },
202
- render: args => <ConnectedEmailForm {...args} />
203
- };
204
-
205
- export const HandleSubmit = {
206
- args: {
207
- handleSubmit: fn()
208
- },
209
- render: args => <ConnectedEmailForm {...args} />
210
- };