Skip to content

Commit

Permalink
wired up mailing list checkbox completely
Browse files Browse the repository at this point in the history
  • Loading branch information
dwilt committed Jun 15, 2018
1 parent ab12bdd commit 6e9fe78
Show file tree
Hide file tree
Showing 87 changed files with 664 additions and 527 deletions.
4 changes: 3 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
firebaseFunctions/node_modules
firebaseFunctions/node_modules/**/*
functions/node_modules/**/*
node_modules/**/*
src/registerServiceWorker.js
4 changes: 4 additions & 0 deletions .flowconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[ignore]
.*/firebaseFunctions/node_modules/.*
.*/functions/node_modules/.*
.*/node_modules/.*
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

# dependencies
node_modules
firebaseFunctions/node_modules

# testing
/coverage
Expand Down
23 changes: 23 additions & 0 deletions flow-typed/npm/classnames_v2.x.x.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// flow-typed signature: cf86673cc32d185bdab1d2ea90578d37
// flow-typed version: 614bf49aa8/classnames_v2.x.x/flow_>=v0.25.x

type $npm$classnames$Classes =
| string
| { [className: string]: * }
| false
| void
| null;

declare module "classnames" {
declare module.exports: (
...classes: Array<$npm$classnames$Classes | $npm$classnames$Classes[]>
) => string;
}

declare module "classnames/bind" {
declare module.exports: $Exports<"classnames">;
}

declare module "classnames/dedupe" {
declare module.exports: $Exports<"classnames">;
}
35 changes: 35 additions & 0 deletions flow-typed/npm/prop-types_v15.x.x.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// flow-typed signature: d9a983bb1ac458a256c31c139047bdbb
// flow-typed version: 927687984d/prop-types_v15.x.x/flow_>=v0.41.x

type $npm$propTypes$ReactPropsCheckType = (
props: any,
propName: string,
componentName: string,
href?: string) => ?Error;

declare module 'prop-types' {
declare var array: React$PropType$Primitive<Array<any>>;
declare var bool: React$PropType$Primitive<boolean>;
declare var func: React$PropType$Primitive<Function>;
declare var number: React$PropType$Primitive<number>;
declare var object: React$PropType$Primitive<Object>;
declare var string: React$PropType$Primitive<string>;
declare var symbol: React$PropType$Primitive<Symbol>;
declare var any: React$PropType$Primitive<any>;
declare var arrayOf: React$PropType$ArrayOf;
declare var element: React$PropType$Primitive<any>; /* TODO */
declare var instanceOf: React$PropType$InstanceOf;
declare var node: React$PropType$Primitive<any>; /* TODO */
declare var objectOf: React$PropType$ObjectOf;
declare var oneOf: React$PropType$OneOf;
declare var oneOfType: React$PropType$OneOfType;
declare var shape: React$PropType$Shape;

declare function checkPropTypes<V>(
propTypes: $Subtype<{[_: $Keys<V>]: $npm$propTypes$ReactPropsCheckType}>,
values: V,
location: string,
componentName: string,
getStack: ?(() => ?string)
) : void;
}
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"version": "0.1.0",
"private": true,
"dependencies": {
"classnames": "^2.2.5",
"classnames": "^2.2.6",
"firebase": "^4.11.0",
"firebase-admin": "^5.9.0",
"firebase-functions": "^0.8.1",
Expand Down Expand Up @@ -41,6 +41,7 @@
"dwilt-react-redux-generator": "^1.0.7",
"eslint": "^4.18.2",
"eslint-plugin-react": "^7.6.1",
"flow-bin": "^0.74.0",
"prettier": "^1.11.1"
}
}
18 changes: 9 additions & 9 deletions src/components/ActionButton/ActionButton.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
import React, { Component } from "react";
import React, { Component } from 'react';

import { ActivityIndicator } from "src/components";
import { ActivityIndicator } from 'src/components';

import PropTypes from "prop-types";
import PropTypes from 'prop-types';

import classNames from "classnames";
import classNames from 'classnames';

class ActionButton extends Component {
static propTypes = {
disabled: PropTypes.bool.isRequired,
isLoading: PropTypes.bool.isRequired,
type: PropTypes.oneOf([`button`, `submit`]).isRequired,
type: PropTypes.oneOf(['button', 'submit']).isRequired,
onClick: PropTypes.func,
children: PropTypes.string.isRequired,
};

static defaultProps = {
type: `button`,
type: 'button',
disabled: false,
isLoading: false,
children: `Link Text`,
children: 'Link Text',
};

render() {
const { onClick, children, isLoading, disabled, type } = this.props;

const innerContent = isLoading ? (
<div className={`ActionButton-loading`}>
<div className={'ActionButton-loading'}>
<ActivityIndicator />
</div>
) : (
children
);

const buttonClasses = classNames(`btn`, {
const buttonClasses = classNames('btn', {
disabled,
});

Expand Down
10 changes: 5 additions & 5 deletions src/components/ActionButton/ActionButton.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./ActionButton.js";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './ActionButton.js';

it(`renders without crashing`, () => {
const div = document.createElement(`div`);
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});
2 changes: 1 addition & 1 deletion src/components/ActionButton/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { default as ActionButton } from "./ActionButton";
export { default as ActionButton } from './ActionButton';
30 changes: 15 additions & 15 deletions src/components/ActivityIndicator/ActivityIndicator.component.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
import React, { PureComponent } from "react";
import React, { PureComponent } from 'react';

import "./ActivityIndicator.css";
import './ActivityIndicator.css';

export default class ActivityIndicator extends PureComponent {
render() {
return (
<div className={`ispinner ispinner--white ispinner--animating `}>
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={`ispinner__blade`} />
<div className={'ispinner ispinner--white ispinner--animating '}>
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
<div className={'ispinner__blade'} />
</div>
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/components/ActivityIndicator/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { default as ActivityIndicator } from "./ActivityIndicator.component";
export { default as ActivityIndicator } from './ActivityIndicator.component';
44 changes: 22 additions & 22 deletions src/components/Answer/Answer.component.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import React, { PureComponent } from "react";
import React, { PureComponent } from 'react';

import Highlight from "react-highlight";
import Highlight from 'react-highlight';

import Markdown from "react-remarkable";
import Markdown from 'react-remarkable';

import "highlight.js/styles/github-gist.css";
import 'highlight.js/styles/github-gist.css';

import PropTypes from "prop-types";
import PropTypes from 'prop-types';

import "./Answer.css";
import './Answer.css';

import classNames from "classnames";
import classNames from 'classnames';

const letterMap = {
1: `a`,
2: `b`,
3: `c`,
4: `d`,
1: 'a',
2: 'b',
3: 'c',
4: 'd',
};

export default class Answer extends PureComponent {
Expand All @@ -26,15 +26,15 @@ export default class Answer extends PureComponent {
selectedAnswer: PropTypes.number,
text: PropTypes.string.isRequired,
answerType: PropTypes.string.isRequired,
theme: PropTypes.oneOf([`none`, `green`, `red`, `blue-outline`])
theme: PropTypes.oneOf(['none', 'green', 'red', 'blue-outline'])
.isRequired,
onChange: PropTypes.func,
onEnterPress: PropTypes.func,
};

static defaultProps = {
theme: `none`,
answerType: `markdown`,
theme: 'none',
answerType: 'markdown',
};

handleOnChange = () => {
Expand All @@ -46,7 +46,7 @@ export default class Answer extends PureComponent {
onKeyPress = ({ key }) => {
const { onEnterPress } = this.props;

if (key === `Enter`) {
if (key === 'Enter') {
onEnterPress();
}
};
Expand All @@ -66,34 +66,34 @@ export default class Answer extends PureComponent {
const answerIsSelected = answerNumber === selectedAnswer;

const textEl =
answerType === `code` ? (
<Highlight className={`javascript`}>{text}</Highlight>
answerType === 'code' ? (
<Highlight className={'javascript'}>{text}</Highlight>
) : (
<Markdown>{text}</Markdown>
);

const radioId = `${questionId}-${answerNumber}`;

const containerClasses = classNames(`Answer`, `--theme-${theme}`);
const containerClasses = classNames('Answer', `--theme-${theme}`);

const content = (
<div className={containerClasses}>
<span className={`Answer__question-number`} aria-hidden={true}>
<span className={'Answer__question-number'} aria-hidden={true}>
{letterMap[answerNumber]}
</span>
{onChange && (
<input
className={`visuallyhidden`}
className={'visuallyhidden'}
value={questionId}
checked={answerIsSelected}
onKeyPress={onEnterPress ? this.onKeyPress : null}
onChange={this.handleOnChange}
type={`radio`}
type={'radio'}
name={questionId}
id={radioId}
/>
)}
<div className={`Answer__text`}>{textEl}</div>
<div className={'Answer__text'}>{textEl}</div>
</div>
);

Expand Down
2 changes: 1 addition & 1 deletion src/components/Answer/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { default as Answer } from "./Answer.component";
export { default as Answer } from './Answer.component';
14 changes: 7 additions & 7 deletions src/components/App/App.component.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { Component } from "react";
import "./App.css";
import React, { Component } from 'react';
import './App.css';

import PropTypes from "prop-types";
import PropTypes from 'prop-types';

import { Quiz, Completed } from "src/components";
import { Quiz, Completed } from 'src/components';

class App extends Component {
static propTypes = {
Expand All @@ -16,19 +16,19 @@ class App extends Component {
let content = <div />;

switch (state) {
case `completed`:
case 'completed':
content = <Completed />;
break;

case `quiz`:
case 'quiz':
content = <Quiz />;
break;

default:
content = <div />;
}

return <div className={`App`}>{content}</div>;
return <div className={'App'}>{content}</div>;
}
}

Expand Down
6 changes: 3 additions & 3 deletions src/components/App/App.container.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { connect } from "react-redux";
import { connect } from 'react-redux';

import { stateSelector } from "src/selectors";
import { stateSelector } from 'src/selectors';

import App from "./App.component";
import App from './App.component';

export default connect((st) => ({
state: stateSelector(st),
Expand Down
10 changes: 5 additions & 5 deletions src/components/App/App.test.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App.component";
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.component';

it(`renders without crashing`, () => {
const div = document.createElement(`div`);
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});
2 changes: 1 addition & 1 deletion src/components/App/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { default as App } from "./App.container";
export { default as App } from './App.container';
Loading

0 comments on commit 6e9fe78

Please sign in to comment.