diff --git a/package.json b/package.json index 4fc9f6d..1c1023d 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "@fortawesome/fontawesome-svg-core": "^1.2.19", "@fortawesome/free-solid-svg-icons": "^5.9.0", "@fortawesome/react-fontawesome": "^0.1.4", + "@material-ui/core": "^4.3.0", "es6-promise": "^4.2.8", "font-awesome": "^4.7.0", "moment": "^2.24.0", diff --git a/src/api/Routes/index.js b/src/api/Routes/index.js index f7d51e1..cae8310 100644 --- a/src/api/Routes/index.js +++ b/src/api/Routes/index.js @@ -10,18 +10,18 @@ const history = createBrowserHistory(); class Navigation extends PureComponent { render() { - const { userEmail } = this.props + const { user } = this.props return ( - + ); } } const mapStateToProps = state => ({ - userEmail: state.auth.user.email + user: state.auth.user }) export default connect(mapStateToProps)(Navigation); diff --git a/src/api/SignIn/index.js b/src/api/SignIn/index.js index 11785aa..2d8be0c 100644 --- a/src/api/SignIn/index.js +++ b/src/api/SignIn/index.js @@ -5,7 +5,8 @@ export function sendLoginRequest(data) { if (email === 'test@mail.com' && password === 'test') { return resolve({ user: { - email: 'test@mail.com' + email: 'test@mail.com', + username: 'Sergey' } }); } diff --git a/src/api/tasks.js b/src/api/tasks.js new file mode 100644 index 0000000..1052226 --- /dev/null +++ b/src/api/tasks.js @@ -0,0 +1,10 @@ +export function createTask(data) { + return new Promise((resolve) => { + const id = Date.now() + Math.random().toString() + return resolve({ + taskName: data['New meeting'], + id: id.substr(-5) + }); + }) +} + diff --git a/src/components/Forms/TasksForm/index.js b/src/components/Forms/TasksForm/index.js new file mode 100644 index 0000000..6b35271 --- /dev/null +++ b/src/components/Forms/TasksForm/index.js @@ -0,0 +1,13 @@ +import React, { PureComponent, Fragment } from 'react'; +import { Checkbox } from '@material-ui/core'; + +export class TasksForm extends PureComponent { + render() { + return( + + + + ) + } +} + diff --git a/src/components/Task/index.js b/src/components/Task/index.js new file mode 100644 index 0000000..4be8c6d --- /dev/null +++ b/src/components/Task/index.js @@ -0,0 +1,68 @@ +import React, { Fragment, PureComponent } from 'react'; +import Checkbox from '@material-ui/core/Checkbox'; +import { connect } from 'react-redux'; +import { faTrash } from '@fortawesome/free-solid-svg-icons'; +import NewTaskForm from '../../scenes/MyMeeting/NewTaskForm' +import { createTaskDescription, deleteTask } from '../../redux/actions/tasks' +import { Wrapper, CheckboxWrapper, CommentForm, Comment, DeleteIcon } from './styles'; + +class Task extends PureComponent { + state = { + isChecked: false, + isClicked: false + } + + get checkboxStatus() { + return this.state.isChecked ? { textDecoration: 'line-through' } : { textDecoration: 'none' } + } + + handleCheckboxCheck = () => this.setState({ isChecked: !this.state.isChecked }) + + handleAddComment = () => this.setState({ isClicked: !this.state.isClicked}) + + handleCreationComment = data => { + const { onCreateTaskDescription, id } = this.props + onCreateTaskDescription({id, ...data}) + this.handleAddComment() + } + + handleDeleteTask = () => { + const { onDeleteTask, id } = this.props + onDeleteTask({id}) + } + + render() { + const { task, id } = this.props + const { isClicked, isChecked } = this.state + return( + + + + +

{task.taskName}

+
+ {!isChecked ?
+ + { (isClicked && !isChecked) && ( + + ) + } + + + { task.comment || null } + +
+ ) + } +} + +const mapDispatchToProps = dispatch => { + return { + onCreateTaskDescription: data => dispatch(createTaskDescription(data)), + onDeleteTask: id => dispatch(deleteTask(id)) + } +} + +export default connect(null, mapDispatchToProps)(Task) diff --git a/src/components/Task/styles.js b/src/components/Task/styles.js new file mode 100644 index 0000000..0bc1fa9 --- /dev/null +++ b/src/components/Task/styles.js @@ -0,0 +1,29 @@ +import styled from 'styled-components'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; + +export const Wrapper = styled.div` + display: flex; + align-items: center; + justify-content: space-between; +`; + +export const CheckboxWrapper = styled.div` + display: flex; + align-items: center; + cursor: pointer; +`; + +export const CommentForm = styled.div` + margin-left: 50px; +`; + +export const Comment = styled.div` + margin: 0 0 10px 42px; + color: grey; +`; + +export const DeleteIcon = styled(FontAwesomeIcon)` + cursor: pointer; + pointer-events: ${props => props.disabled ? "none" : "auto"}; + color: ${props => props.color ? "grey" : "black"} +`; diff --git a/src/redux/actions/tasks.js b/src/redux/actions/tasks.js new file mode 100644 index 0000000..3b2d969 --- /dev/null +++ b/src/redux/actions/tasks.js @@ -0,0 +1,14 @@ +import { TASK_CREATION_SUCCESS, TASK_DESCRIPTION_CREATION_SUCCESS, TASK_DELETE } from '../constants/tasks'; +import { createTask as createTaskRequest } from '../../api/tasks'; + +export function createTask(data) { + return dispatch => createTaskRequest(data).then(res => dispatch({ type: TASK_CREATION_SUCCESS, payload: res})) +}; + +export function createTaskDescription(data) { + return dispatch => dispatch({ type: TASK_DESCRIPTION_CREATION_SUCCESS, payload: data}) +} + +export function deleteTask(id) { + return dispatch => dispatch({ type: TASK_DELETE, payload: id }) +} diff --git a/src/redux/constants/tasks.js b/src/redux/constants/tasks.js new file mode 100644 index 0000000..0db7cb6 --- /dev/null +++ b/src/redux/constants/tasks.js @@ -0,0 +1,3 @@ +export const TASK_CREATION_SUCCESS = 'TASK_CREATION_SUCCESS'; +export const TASK_DESCRIPTION_CREATION_SUCCESS = 'TASK_DESCRIPTION_CREATION_SUCCESS'; +export const TASK_DELETE = 'TASK_DELETE'; diff --git a/src/redux/reducers/tasks.js b/src/redux/reducers/tasks.js new file mode 100644 index 0000000..27f311d --- /dev/null +++ b/src/redux/reducers/tasks.js @@ -0,0 +1,23 @@ +import { TASK_CREATION_SUCCESS, TASK_DESCRIPTION_CREATION_SUCCESS, TASK_DELETE } from '../constants/tasks'; + +const initialState = [] + +export default function task(state = initialState, action) { + switch (action.type) { + case TASK_CREATION_SUCCESS: + return [ ...state, { ...action.payload, comment: '' } ]; + case TASK_DESCRIPTION_CREATION_SUCCESS: + return buildTasks(state, action.payload) + case TASK_DELETE: + return state.filter(item => item.id != action.payload.id) + default: + return state; + } +} + +function buildTasks(state, payload) { + const findTaskById = () => state.find(task => task.id === payload['id']) + const taskPosition = state.indexOf(findTaskById()) + state[taskPosition].comment = payload[`task-comment-${payload.id}`] + return state +} diff --git a/src/redux/store.js b/src/redux/store.js index bf6ba8e..1ddc561 100644 --- a/src/redux/store.js +++ b/src/redux/store.js @@ -3,9 +3,11 @@ import { reducer as formReducer } from 'redux-form'; import thunk from 'redux-thunk'; import logger from 'redux-logger'; import auth from './reducers/auth'; +import tasks from './reducers/tasks' const rootReducer = combineReducers({ auth, + tasks, form: formReducer }) diff --git a/src/scenes/MyMeeting/NewTaskForm/index.js b/src/scenes/MyMeeting/NewTaskForm/index.js new file mode 100644 index 0000000..4a1e50f --- /dev/null +++ b/src/scenes/MyMeeting/NewTaskForm/index.js @@ -0,0 +1,46 @@ +import React, { PureComponent } from 'react'; +import { Field, reduxForm } from 'redux-form' +import { compose } from 'redux'; +import { connect } from 'react-redux' +import Input from '@material-ui/core/Input'; + +const renderTextField = ({ + input, + label, + meta: { touched, error }, + ...custom +}) => ( + +) + +class NewTaskForm extends PureComponent{ + handleFormSubmit = (data) => { + this.props.handleSubmit(data) + this.props.reset() + } + render() { + const { placeholder, name } = this.props + return( +
+ + + ) + } +} + +const mapStateToProps = (state, ownProps) => { + return { + form: ownProps.name + } +} + +export default compose( + connect(mapStateToProps), + reduxForm({}) +)(NewTaskForm); diff --git a/src/scenes/MyMeeting/index.js b/src/scenes/MyMeeting/index.js index ae48894..ae77681 100644 --- a/src/scenes/MyMeeting/index.js +++ b/src/scenes/MyMeeting/index.js @@ -3,8 +3,11 @@ import { connect } from 'react-redux'; import { logout } from '../../redux/actions/auth'; import { faTimes } from '@fortawesome/free-solid-svg-icons'; import moment from 'moment'; +import NewTaskForm from './NewTaskForm'; +import { createTask } from '../../redux/actions/tasks' +import Task from '../../components/Task'; import "react-datepicker/dist/react-datepicker.css"; -import { CalendarContainer, Header, HeaderContainer, HeaderAction, DatePicker, Body, Logo, Img, HeaderLabel, TasksList, ActionButton } from './styles' +import { CalendarContainer, Header, HeaderContainer, HeaderAction, DatePicker, Body, Logo, Img, HeaderLabel, TasksList, ActionButton, Kek } from './styles' class MyMeeting extends PureComponent { state = { @@ -26,7 +29,10 @@ class MyMeeting extends PureComponent { handleChange = date => this.setState({day: date}) + handleNewTaskCreation = data => this.props.onCreateTask(data) + render() { + const { tasks, user } = this.props return (
@@ -37,7 +43,7 @@ class MyMeeting extends PureComponent { -

Hi, Test

+

Hi, {user.username}

@@ -48,23 +54,30 @@ class MyMeeting extends PureComponent {
- задача - delete icon -
- -
- Complete meeting + { tasks && tasks.map(task => )} +
+ + Complete meeting +
); } } +const mapStateToProps = state => { + return { + tasks: state.tasks, + user: state.auth.user + } +} + const mapDispatchToProps = dispatch => { return { - logoutAction: () => dispatch(logout()) + logoutAction: () => dispatch(logout()), + onCreateTask: data => dispatch(createTask(data)), } } -export default connect(null, mapDispatchToProps)(MyMeeting); +export default connect(mapStateToProps, mapDispatchToProps)(MyMeeting); diff --git a/src/scenes/MyMeeting/styles.js b/src/scenes/MyMeeting/styles.js index 7cf2f5b..19b47c3 100644 --- a/src/scenes/MyMeeting/styles.js +++ b/src/scenes/MyMeeting/styles.js @@ -87,3 +87,8 @@ export const ActionButton = styled.button` background-color: white; } `; + +export const Kek = styled.div` + display: flex; + justify-content: flex-end; +`; diff --git a/yarn.lock b/yarn.lock index 9ccaaa7..bec0282 100644 --- a/yarn.lock +++ b/yarn.lock @@ -781,6 +781,13 @@ dependencies: regenerator-runtime "^0.13.2" +"@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ== + dependencies: + regenerator-runtime "^0.13.2" + "@babel/template@^7.1.0", "@babel/template@^7.4.0", "@babel/template@^7.4.4": version "7.4.4" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" @@ -826,6 +833,11 @@ version "9.0.1" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-9.0.1.tgz#c27b391d8457d1e893f1eddeaf5e5412d12ffbb5" +"@emotion/hash@^0.7.1": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.7.2.tgz#53211e564604beb9befa7a4400ebf8147473eeef" + integrity sha512-RMtr1i6E8MXaBWwhXL3yeOU8JXRnz8GNxHvaUfVvwxokvayUY0zoBeWbKw1S9XkufmGEEdQd228pSZXFkAln8Q== + "@emotion/is-prop-valid@^0.8.1": version "0.8.2" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.2.tgz#b9692080da79041683021fcc32f96b40c54c59dc" @@ -1028,6 +1040,78 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^12.0.9" +"@material-ui/core@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-4.3.0.tgz#ce44f7fad736f44b70f6d44d390ba8b848fcfca0" + integrity sha512-KAYvvq8Z/uP4zvdF3Adi53OfjmcnLiIi+KXb0vROkZ+soYkRQcw6X7VoCuQNwL7Sp7Rr1SSFTxgtJ3G+YBSVyA== + dependencies: + "@babel/runtime" "^7.4.4" + "@material-ui/styles" "^4.2.0" + "@material-ui/system" "^4.3.0" + "@material-ui/types" "^4.1.1" + "@material-ui/utils" "^4.1.0" + "@types/react-transition-group" "^4.2.0" + clsx "^1.0.2" + convert-css-length "^2.0.1" + deepmerge "^4.0.0" + hoist-non-react-statics "^3.2.1" + is-plain-object "^3.0.0" + normalize-scroll-left "^0.2.0" + popper.js "^1.14.1" + prop-types "^15.7.2" + react-transition-group "^4.0.0" + warning "^4.0.1" + +"@material-ui/styles@^4.2.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@material-ui/styles/-/styles-4.3.0.tgz#27f11fbf061d8a20ad5703acb0dbb0e69cc00345" + integrity sha512-7yOu+IOvbTVM+LfFJ0c7RZKksSpi2PmPwMhVnAKo1Ca3Nadjd950ALL6WG+R/W3C3GqakUvOqA5OLMvN/8N2jg== + dependencies: + "@babel/runtime" "^7.4.4" + "@emotion/hash" "^0.7.1" + "@material-ui/types" "^4.1.1" + "@material-ui/utils" "^4.1.0" + clsx "^1.0.2" + csstype "^2.5.2" + deepmerge "^4.0.0" + hoist-non-react-statics "^3.2.1" + jss "10.0.0-alpha.23" + jss-plugin-camel-case "10.0.0-alpha.23" + jss-plugin-default-unit "10.0.0-alpha.23" + jss-plugin-global "10.0.0-alpha.23" + jss-plugin-nested "10.0.0-alpha.23" + jss-plugin-props-sort "10.0.0-alpha.23" + jss-plugin-rule-value-function "10.0.0-alpha.23" + jss-plugin-vendor-prefixer "10.0.0-alpha.23" + prop-types "^15.7.2" + warning "^4.0.1" + +"@material-ui/system@^4.3.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@material-ui/system/-/system-4.3.1.tgz#5fe508d4ca94cdf1d76f7fe535413fcc949b23d9" + integrity sha512-Krrc/p/A3rod4M3FYcsWSqE5KxpoyMzYuUHhs0Pns3KH+5kcFyBU+aYbIzMfUz58rhbHkqrShf1fjj7EKcgY0g== + dependencies: + "@babel/runtime" "^7.2.0" + deepmerge "^4.0.0" + prop-types "^15.7.2" + warning "^4.0.1" + +"@material-ui/types@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@material-ui/types/-/types-4.1.1.tgz#b65e002d926089970a3271213a3ad7a21b17f02b" + integrity sha512-AN+GZNXytX9yxGi0JOfxHrRTbhFybjUJ05rnsBVjcB+16e466Z0Xe5IxawuOayVZgTBNDxmPKo5j4V6OnMtaSQ== + dependencies: + "@types/react" "*" + +"@material-ui/utils@^4.1.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-4.3.0.tgz#ea7f09815c792e80f270ef8b916517c3f9caba13" + integrity sha512-tK3Z/ap5ifPQwIryuGQ+AHLh2hEyBLRPj4NCMcqVrQfD+0KH2IP5BXR4A+wGVsyamKfLaOc8tz1fzxZblsztpw== + dependencies: + "@babel/runtime" "^7.4.4" + prop-types "^15.7.2" + react-is "^16.8.6" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -1180,10 +1264,30 @@ version "12.0.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.0.0.tgz#d11813b9c0ff8aaca29f04cbc12817f4c7d656e5" +"@types/prop-types@*": + version "15.7.1" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6" + integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg== + "@types/q@^1.5.1": version "1.5.2" resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" +"@types/react-transition-group@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.2.0.tgz#86ddb509ce3de27341c7cb7797abb99b1c4676bf" + integrity sha512-8KkpFRwqS9U1dtVVw1kt/MmWgLmbd5iK5TgqsaeC7fAm74J4j/HiBiRC8eETvwjGGju48RAwyZ3l5iv1H1x93Q== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.8.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.23.tgz#ec6be3ceed6353a20948169b6cb4c97b65b97ad2" + integrity sha512-abkEOIeljniUN9qB5onp++g0EY38h7atnDHxwKUFz1r3VH1+yG1OKi2sNPTyObL40goBmfKFpdii2lEzwLX1cA== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + "@types/stack-utils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" @@ -2248,6 +2352,11 @@ clone-deep@^2.0.1: kind-of "^6.0.0" shallow-clone "^1.0.0" +clsx@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.0.4.tgz#0c0171f6d5cb2fe83848463c15fcc26b4df8c2ec" + integrity sha512-1mQ557MIZTrL/140j+JVdRM6e31/OA4vTYxXgqIIZlndyfjHpyawKZia1Im05Vp9BWmImkcNrNtFYQMyFcgJDg== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -2398,6 +2507,11 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +convert-css-length@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/convert-css-length/-/convert-css-length-2.0.1.tgz#90a76bde5bfd24d72881a5b45d02249b2c1d257c" + integrity sha512-iGpbcvhLPRKUbBc0Quxx7w/bV14AC3ItuBEGMahA5WTYqB8lq9jH0kTXFheCBASsYnqeMFZhiTruNxr1N59Axg== + convert-source-map@^1.1.0, convert-source-map@^1.4.0: version "1.6.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" @@ -2641,6 +2755,14 @@ css-url-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec" +css-vendor@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/css-vendor/-/css-vendor-2.0.5.tgz#949c58fd5307e79a9417daa0939506f0e5d0a187" + integrity sha512-36w+4Cg0zqFIt5TAkaM3proB6XWh5kSGmbddRCPdrRLQiYNfHPTgaWPOlCrcuZIO0iAtrG+5wsHJZ6jj8AUULA== + dependencies: + "@babel/runtime" "^7.3.1" + is-in-browser "^1.0.2" + css-what@2.1, css-what@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" @@ -2735,6 +2857,11 @@ cssstyle@^1.0.0, cssstyle@^1.1.1: dependencies: cssom "0.3.x" +csstype@^2.2.0, csstype@^2.5.2, csstype@^2.6.5: + version "2.6.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41" + integrity sha512-RpFbQGUE74iyPgvr46U9t1xoQBM8T4BL8SxrN66Le2xYAPSaDJJKeztV3awugusb3g3G9iL8StmkBBXhcbbXhg== + cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -2815,6 +2942,11 @@ deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +deepmerge@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.0.0.tgz#3e3110ca29205f120d7cb064960a39c3d2087c09" + integrity sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww== + default-gateway@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" @@ -2961,6 +3093,13 @@ dom-converter@^0.2: dependencies: utila "~0.4" +dom-helpers@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.4.0.tgz#e9b369700f959f62ecde5a6babde4bccd9169af8" + integrity sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA== + dependencies: + "@babel/runtime" "^7.1.2" + dom-serializer@0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" @@ -4163,6 +4302,11 @@ humps@^2.0.1: resolved "https://registry.yarnpkg.com/humps/-/humps-2.0.1.tgz#dd02ea6081bd0568dc5d073184463957ba9ef9aa" integrity sha1-3QLqYIG9BWjcXQcxhEY5V7qe+ao= +hyphenate-style-name@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" + integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== + iconv-lite@0.4.23: version "0.4.23" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" @@ -4486,6 +4630,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-in-browser@^1.0.2, is-in-browser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-in-browser/-/is-in-browser-1.1.3.tgz#56ff4db683a078c6082eb95dad7dc62e1d04f835" + integrity sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -4522,6 +4671,13 @@ is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-plain-object@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.0.tgz#47bfc5da1b5d50d64110806c199359482e75a928" + integrity sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg== + dependencies: + isobject "^4.0.0" + is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -4600,6 +4756,11 @@ isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +isobject@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" + integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== + isomorphic-fetch@^2.1.1: version "2.2.1" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" @@ -5159,6 +5320,75 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" +jss-plugin-camel-case@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-camel-case/-/jss-plugin-camel-case-10.0.0-alpha.23.tgz#c4fe7c6f537acfbe617788464a69d89b1e9f10c3" + integrity sha512-QaXi/t4Efx0BhwbVf6GCcpn/IDAP9cK/GJoWBoAIVM9BAj7RXBU0UifFojRbeDGDtpf5djDWCOMviydYiWYYWg== + dependencies: + "@babel/runtime" "^7.3.1" + hyphenate-style-name "^1.0.3" + jss "10.0.0-alpha.23" + +jss-plugin-default-unit@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-default-unit/-/jss-plugin-default-unit-10.0.0-alpha.23.tgz#826b8d9e7d35af86331279acd9c2d3647aaf0365" + integrity sha512-XE4CcrQMF2rI6TL+/bJUDVlmgIqOax8uCPLZxZnqUFTbH0cM9f66OhRIe51yECfAb1nAiHalZtkUv2kfycLVjQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.0.0-alpha.23" + +jss-plugin-global@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-global/-/jss-plugin-global-10.0.0-alpha.23.tgz#b8343c313c31e4a55310a446b1ffe3f83b5dc5af" + integrity sha512-uaoO4yp24dtvKiMd8fLzy2Of3rDSzA9e1y8mHw4vNDTPDSF39pYfpAxxnGnvRadsAVlZGgj4Ro+LveLz8ZUHgw== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.0.0-alpha.23" + +jss-plugin-nested@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-nested/-/jss-plugin-nested-10.0.0-alpha.23.tgz#43735395cabc7252398ffa9efa3c7234aea15f06" + integrity sha512-xHoBBUz9U8INvizthl0k9u79z+ObzY0HvzPy7+BKxySQzHSTLG40iRYizJo7Antq7uH8i8uI/5RgS/7dy+YVSQ== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.0.0-alpha.23" + tiny-warning "^1.0.2" + +jss-plugin-props-sort@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-props-sort/-/jss-plugin-props-sort-10.0.0-alpha.23.tgz#8955d6f37c923e1193a9a2cbcba13a85d2428e8c" + integrity sha512-/h6epoQ/ta61e6rG3/Pq47qPlg9YX5t2rSKJBLzaASEe/KfxjVvnbJKC8tE27lG6TjwbeWpKONuJfZxjWKLnDg== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.0.0-alpha.23" + +jss-plugin-rule-value-function@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.0.0-alpha.23.tgz#3dab866811005761cbae06a2bc2bc0b1c99f3fb4" + integrity sha512-N0g7x6RzeEj+GI5303JOUTyo5x7/F+0SRJv3R0lAUSS782mZipcvpFzHlEz3q5g+0t/bhbOLT6i0RYAhN3IW7g== + dependencies: + "@babel/runtime" "^7.3.1" + jss "10.0.0-alpha.23" + +jss-plugin-vendor-prefixer@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.0.0-alpha.23.tgz#93a8026f260666c679074590fd4191862fabb64d" + integrity sha512-WtTXR+H1tGGhmEP3kqDawxnV1tbXboxtJ93A1O9p+7OLseafIaQoPkMPKEh5a+P4jzETIqmQoJJoG5KmT/Tgsg== + dependencies: + "@babel/runtime" "^7.3.1" + css-vendor "^2.0.5" + jss "10.0.0-alpha.23" + +jss@10.0.0-alpha.23: + version "10.0.0-alpha.23" + resolved "https://registry.yarnpkg.com/jss/-/jss-10.0.0-alpha.23.tgz#8a866cc49513b1558b1a2c0504a4b592079c0ff8" + integrity sha512-r3fg6nrNdqxhaE4s3ZkyEmpVTb2UUmSu0uhKrvfSAy+N45MmlLmhgyFFaUyJOvFJzm69XYXM2Q62VhGccV6qMA== + dependencies: + "@babel/runtime" "^7.3.1" + csstype "^2.6.5" + is-in-browser "^1.1.3" + tiny-warning "^1.0.2" + jsx-ast-utils@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" @@ -5798,6 +6028,11 @@ normalize-range@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" +normalize-scroll-left@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/normalize-scroll-left/-/normalize-scroll-left-0.2.0.tgz#9445d74275f303cc661e113329aefa492f58114c" + integrity sha512-t5oCENZJl8TGusJKoCJm7+asaSsPuNmK6+iEjrZ5TyBj2f02brCRsd4c83hwtu+e5d4LCSBZ0uoDlMjBo+A8yA== + normalize-url@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" @@ -6267,7 +6502,7 @@ pnp-webpack-plugin@1.2.1: dependencies: ts-pnp "^1.0.0" -popper.js@^1.14.4: +popper.js@^1.14.1, popper.js@^1.14.4: version "1.15.0" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== @@ -7255,6 +7490,16 @@ react-scripts@3.0.1: optionalDependencies: fsevents "2.0.6" +react-transition-group@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.2.1.tgz#61fc9e36568bff9a1fe4e60fae323c8a6dbc0680" + integrity sha512-IXrPr93VzCPupwm2O6n6C2kJIofJ/Rp5Ltihhm9UfE8lkuVX2ng/SUUl/oWjblybK9Fq2Io7LGa6maVqPB762Q== + dependencies: + "@babel/runtime" "^7.4.5" + dom-helpers "^3.4.0" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react@^16.8.6: version "16.8.6" resolved "https://registry.yarnpkg.com/react/-/react-16.8.6.tgz#ad6c3a9614fd3a4e9ef51117f54d888da01f2bbe" @@ -8738,7 +8983,7 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -warning@^4.0.2: +warning@^4.0.1, warning@^4.0.2: version "4.0.3" resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==