Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RENO-3681: NewsletterSignup Component #1422

Merged
merged 43 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
cde951b
NewsletterSignup as Refactored FeedbackBox
aarnold101 Sep 8, 2023
6e6b373
NewsletterSignup as exposed Form
aarnold101 Sep 8, 2023
d7427a7
React EmailSubscription as DS Component
aarnold101 Sep 8, 2023
8710deb
NewsLetterSignup add getSectionColors function, and other advances
aarnold101 Sep 14, 2023
0b2b4a9
Merge branch 'development' into RENO-3681/newslettersignup-component
aarnold101 Sep 14, 2023
735e4c7
NewsletterSignup Functional Layout
aarnold101 Sep 20, 2023
00f217b
NewsletterSignup w/o onSubmit funtionality
aarnold101 Sep 22, 2023
706bf00
NewsletterSignup Near Complete Functionality
aarnold101 Sep 22, 2023
e7952c1
NewsletterSignup Updates & Fixes
aarnold101 Sep 25, 2023
5983419
NewsletterSignup Tests Round 1
aarnold101 Sep 26, 2023
3bd8d9d
NewsletterSignup w/o 3-second Timer
aarnold101 Sep 26, 2023
ac17c39
code cleanup
nypl-wluisi Sep 26, 2023
747b451
more code cleanup
nypl-wluisi Sep 27, 2023
4b33145
NewsletterSignup Update w/ Testing
aarnold101 Sep 28, 2023
8d53b28
Merge branch 'development' into RENO-3681/newslettersignup-component
aarnold101 Sep 28, 2023
f9dc57d
NewsletterSignup Snapshot Update
aarnold101 Sep 28, 2023
bcbb3b4
NewsletterSignup Minor Updates
aarnold101 Sep 28, 2023
117de84
NewsletterSignup Snapshot Update
aarnold101 Sep 28, 2023
8c603a9
code/storybook clean up
isastettler Oct 4, 2023
39670cc
fix darkmode, update storybook
isastettler Oct 4, 2023
e10e3de
add onChange and onSubmit test
isastettler Oct 5, 2023
26be513
fix onSubmit test, fix dark mode border bug
isastettler Oct 5, 2023
f7532ca
update confirmation props, update storybook, tests and Snapshots acco…
isastettler Oct 5, 2023
fa0c034
update storybook, add privacyPolicyLink prop
isastettler Oct 6, 2023
11aafed
fix title storybook bug, updated styles
isastettler Oct 6, 2023
87cc43d
fix descriptionText bug
isastettler Oct 10, 2023
7d141cc
fix "blogs" border color, add test for html props passed
isastettler Oct 10, 2023
f6bdbe9
add NewsletterSignup to component export file
isastettler Oct 10, 2023
abbe6eb
Add working onSubmit function and update .mdx
aarnold101 Oct 10, 2023
a4460e1
Merge branch 'development' into RENO-3681/newslettersignup-component
aarnold101 Oct 10, 2023
2b15b97
add props for error message, update styling and tests, add Newsletter…
isastettler Oct 11, 2023
9b31ea7
update storybook stories, fix typo
isastettler Oct 11, 2023
650e487
add interavtive example to storybook
isastettler Oct 11, 2023
cfcab79
add actions for onChange and onSubmit
isastettler Oct 11, 2023
8e5430f
remove styling, fix typos
isastettler Oct 12, 2023
d34bcc7
update as per PR comments
isastettler Oct 12, 2023
d926063
update snapshots
isastettler Oct 12, 2023
d99e940
Merge branch 'development' into RENO-3681/newslettersignup-component
isastettler Oct 12, 2023
1e634b1
update props, comments as discussed, update test and doc accordingly
isastettler Oct 12, 2023
3a56d1f
update breakpoints, remove reduntant content
isastettler Oct 12, 2023
917feb0
update breakpoint - the one that got away
isastettler Oct 12, 2023
3f42b6a
change html tags to ds components
isastettler Oct 12, 2023
77c31d7
update Text styles, fix typo for privacyPolicyLink, update tests
isastettler Oct 12, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 8 additions & 11 deletions src/components/NewsletterSignup/NewsletterSignup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,9 @@ import Link from "../Link/Link";

<Description of={NewsletterSignupStories} />

**Note**: The `NewsletterSignup` example below will render different states depending on what email address you input.
* `[email protected]` will display the error screen.
* `[email protected]` will display the bad email screen.
* Any other validly-constructed email address will display the confirmation screen after three seconds to better
demonstrate the `submitting` state.

The value of the email will appear in the console log.

## Component Props

<Canvas of={NewsletterSignupStories.WithControls} sourceState="none"/>
<Canvas of={NewsletterSignupStories.WithControls} />

<ArgTypes of={NewsletterSignupStories.WithControls} />

Expand All @@ -45,6 +37,9 @@ Within the `NewsletterSignup` component, the DS `form` component wraps around tw
Those`FormField` components hold a DS `TextInput` component of `type="email"` and a DS `Button` component of `type="submit"` respectively.
Each of these components has their own accessibility features documented in their respective Storybook pages.

When the form is submitted, focus is set to the confirmation message or the
error message if an error occurs.

Resources:

- [DS Form Accessibility](../?path=/docs/components-form-elements-form--docs#accessibility)
Expand All @@ -56,7 +51,9 @@ Resources:
Alternatively to a `descriptionText` of type `string`, a HTML Element or React component can be passed. When passing a JSX Element, the consuming app is responsible
to assure its accessibility.

<Canvas of={NewsletterSignupStories.DescriptionUsingJSXElements} sourceState="none"/>
_NOTE: This is applicable for all component props excepting HTML/JSX elements._
isastettler marked this conversation as resolved.
Show resolved Hide resolved

<Canvas of={NewsletterSignupStories.DescriptionUsingJSXElements} />

## Form Submission Data

Expand Down Expand Up @@ -107,4 +104,4 @@ language="jsx"

## Component States

<Canvas of={NewsletterSignupStories.ComponentStates} sourceState="none"/>
<Canvas of={NewsletterSignupStories.ComponentStates} />
45 changes: 4 additions & 41 deletions src/components/NewsletterSignup/NewsletterSignup.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { withDesign } from "storybook-addon-designs";
import NewsletterSignup from "./NewsletterSignup";
import { sectionTypeArray } from "../../helpers/types";
import Heading from "../Heading/Heading";
import useStateWithDependencies from "../../hooks/useStateWithDependencies";

const meta: Meta<typeof NewsletterSignup> = {
title: "Components/Form Elements/NewsletterSignup",
Expand Down Expand Up @@ -81,44 +80,6 @@ const meta: Meta<typeof NewsletterSignup> = {
export default meta;
type Story = StoryObj<typeof NewsletterSignup>;

const NewsletterSignupWithControls = (args) => {
const [view, setView] = useStateWithDependencies(args.view);
const [isInvalidEmail, setIsInvalidEmail] = useStateWithDependencies(
args.isInvalidEmail
);

function handleSubmit(event): void {
event.preventDefault();
setView("submitting");
const userEmail = event.target.email.value;
switch (userEmail) {
case "[email protected]":
setView("error");
break;
case "[email protected]":
setView("form");
setIsInvalidEmail(true);
break;
default:
// Add short delay to demonstrate the "submitted" state.
setTimeout(() => {
setView("confirmation");
}, 3000);
}
console.log("Submitted email: ", userEmail);
setTimeout(() => {
setView("form");
}, 10000);
}
return (
<NewsletterSignup
{...args}
onSubmit={handleSubmit}
view={view}
isInvalidEmail={isInvalidEmail}
/>
);
};
/**
* Main Story for the NewsletterSignup component. This must contains the `args`
* and `parameters` properties in this object.
Expand All @@ -130,6 +91,8 @@ export const WithControls: Story = {
confirmationText:
"You can update your email subscription preferences at any time using the links at the bottom of the email.",
descriptionText: undefined,
errorHeading: undefined,
errorText: undefined,
formHelperText: undefined,
id: undefined,
isInvalidEmail: false,
Expand All @@ -147,7 +110,7 @@ export const WithControls: Story = {
},
jest: "NewsletterSignup.test.tsx",
},
render: (args) => <NewsletterSignupWithControls {...args} />,
render: (args) => <NewsletterSignup {...args} />,
};

export const DescriptionUsingJSXElements: Story = {
Expand Down Expand Up @@ -214,7 +177,7 @@ export const ComponentStates: Story = {
</Box>
<Box>
<Heading level="h3" size="heading6">
Deafult Error View
Default Error View
</Heading>
<NewsletterSignup
id="error-view"
Expand Down
Loading