mirror of
https://github.com/usatiuk/ustk-todolist.git
synced 2025-10-28 23:57:49 +01:00
reorganize files
This commit is contained in:
@@ -6,7 +6,7 @@ import CssBaseline from '@material-ui/core/CssBaseline';
|
|||||||
import './Container.css';
|
import './Container.css';
|
||||||
import './App.css';
|
import './App.css';
|
||||||
|
|
||||||
import MainViewContainer from '../containers/MainViewContainer';
|
import TodosView from './todolist/TodosView';
|
||||||
import LoginForm from './user/LoginForm';
|
import LoginForm from './user/LoginForm';
|
||||||
import SignupForm from './user/SignupForm';
|
import SignupForm from './user/SignupForm';
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ export default class App extends React.PureComponent {
|
|||||||
<CssBaseline />
|
<CssBaseline />
|
||||||
<Router>
|
<Router>
|
||||||
<div id="container">
|
<div id="container">
|
||||||
<Route exact path="/" component={MainViewContainer} />
|
<Route exact path="/" component={TodosView} />
|
||||||
<Route path="/login" component={LoginForm} />
|
<Route path="/login" component={LoginForm} />
|
||||||
<Route path="/signup" component={SignupForm} />
|
<Route path="/signup" component={SignupForm} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import App from '../components/App';
|
import App from './App';
|
||||||
|
|
||||||
import { loadUser } from '../actions/user';
|
import { loadUser } from '../actions/user';
|
||||||
|
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import UserHeader from './UserHeader';
|
import UserHeader from './user/UserHeader';
|
||||||
import ListsContainer from '../containers/ListsContainer';
|
import Lists from './lists/Lists';
|
||||||
|
|
||||||
export default function Header() {
|
export default function Header() {
|
||||||
return (
|
return (
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<UserHeader />
|
<UserHeader />
|
||||||
<ListsContainer />
|
<Lists />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import TodosContainer from '../containers/TodosContainer';
|
|
||||||
|
|
||||||
export default class MainView extends React.PureComponent {
|
|
||||||
componentDidUpdate() {
|
|
||||||
const { user, history } = this.props;
|
|
||||||
if (!user.user && !user.dirty) {
|
|
||||||
history.replace('/login');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
return <TodosContainer />;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MainView.propTypes = {
|
|
||||||
user: PropTypes.any.isRequired,
|
|
||||||
history: PropTypes.any.isRequired,
|
|
||||||
};
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { Transition } from 'react-spring';
|
|
||||||
|
|
||||||
import InputContainer from '../containers/InputContainer';
|
|
||||||
import TodoListContainer from '../containers/TodoListContainer';
|
|
||||||
import Header from './Header';
|
|
||||||
import Filters from './Filters';
|
|
||||||
|
|
||||||
export default function Todos({ list }) {
|
|
||||||
return (
|
|
||||||
<div id="todos">
|
|
||||||
<Header />
|
|
||||||
<Transition
|
|
||||||
from={{ opacity: 0, maxHeight: 0 }}
|
|
||||||
enter={{ opacity: 1, maxHeight: 38 }}
|
|
||||||
leave={{ opacity: 0, maxHeight: 0 }}
|
|
||||||
>
|
|
||||||
{list && (styles => <InputContainer styles={styles} />)}
|
|
||||||
</Transition>
|
|
||||||
<TodoListContainer />
|
|
||||||
<Transition
|
|
||||||
from={{ opacity: 0, maxHeight: 0 }}
|
|
||||||
enter={{ opacity: 1, maxHeight: 32 }}
|
|
||||||
leave={{ opacity: 0, maxHeight: 0 }}
|
|
||||||
>
|
|
||||||
{list && Filters}
|
|
||||||
</Transition>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Todos.propTypes = {
|
|
||||||
list: PropTypes.bool.isRequired,
|
|
||||||
};
|
|
||||||
@@ -2,7 +2,7 @@ import { connect } from 'react-redux';
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { ButtonBase } from '@material-ui/core';
|
import { ButtonBase } from '@material-ui/core';
|
||||||
import setVisibilityFilter from '../actions/visibilityFilter';
|
import setVisibilityFilter from '../../actions/visibilityFilter';
|
||||||
|
|
||||||
function Link({ active, onClick, children }) {
|
function Link({ active, onClick, children }) {
|
||||||
const classes = ['filter'];
|
const classes = ['filter'];
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import FilterLink from '../containers/FilterLink';
|
import FilterLink from './FilterLink';
|
||||||
import { VisibilityFilters } from '../actions/defs';
|
import { VisibilityFilters } from '../../actions/defs';
|
||||||
|
|
||||||
function Filters(styles) {
|
function Filters(styles) {
|
||||||
return (
|
return (
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import ListActions from '../components/ListActions';
|
import ListActions from './ListActions';
|
||||||
import {
|
import {
|
||||||
startCreateList,
|
startCreateList,
|
||||||
startEditList,
|
startEditList,
|
||||||
removeList,
|
removeList,
|
||||||
stopCreateList,
|
stopCreateList,
|
||||||
stopEditList,
|
stopEditList,
|
||||||
} from '../actions/lists';
|
} from '../../actions/lists';
|
||||||
|
|
||||||
function mapStateToProps(state) {
|
function mapStateToProps(state) {
|
||||||
return {
|
return {
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
|
import { connect } from 'react-redux';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
import ListActionsContainer from '../containers/ListActionsContainer';
|
import ListActionsContainer from './ListActionsContainer';
|
||||||
import SelectorContainer from '../containers/SelectorContainer';
|
import SelectorContainer from '../todolist/SelectorContainer';
|
||||||
|
|
||||||
export default function Lists({ userLoaded, listsLoaded }) {
|
function Lists({ userLoaded, listsLoaded }) {
|
||||||
return (
|
return (
|
||||||
<div id="lists-header">
|
<div id="lists-header">
|
||||||
{userLoaded &&
|
{userLoaded &&
|
||||||
@@ -24,3 +25,12 @@ Lists.propTypes = {
|
|||||||
userLoaded: PropTypes.bool.isRequired,
|
userLoaded: PropTypes.bool.isRequired,
|
||||||
listsLoaded: PropTypes.bool.isRequired,
|
listsLoaded: PropTypes.bool.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function mapStateToProps(state) {
|
||||||
|
return {
|
||||||
|
userLoaded: state.user.loaded,
|
||||||
|
listsLoaded: state.lists.loaded,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(mapStateToProps)(Lists);
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import Selector from '../components/Selector';
|
import Selector from '../lists/Selector';
|
||||||
import { changeList, addList, editList } from '../actions/lists';
|
import { changeList, addList, editList } from '../../actions/lists';
|
||||||
|
|
||||||
function mapStateToProps(state) {
|
function mapStateToProps(state) {
|
||||||
return {
|
return {
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import TodoList from '../components/TodoList';
|
import TodoList from './TodoList';
|
||||||
import { toggleTodo, removeTodo, editTodo } from '../actions/todos';
|
import { toggleTodo, removeTodo, editTodo } from '../../actions/todos';
|
||||||
|
|
||||||
import getVisibleTodos from './getVisibleTodos';
|
import getVisibleTodos from './getVisibleTodos';
|
||||||
|
|
||||||
59
react/src/components/todolist/TodosView.js
Normal file
59
react/src/components/todolist/TodosView.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import { Transition } from 'react-spring';
|
||||||
|
|
||||||
|
import withRouter from 'react-router-dom/withRouter';
|
||||||
|
import Input from '../todos/Input';
|
||||||
|
import TodoListContainer from './TodoListContainer';
|
||||||
|
import Header from '../Header';
|
||||||
|
import Filters from '../filters/Filters';
|
||||||
|
|
||||||
|
class Todos extends React.PureComponent {
|
||||||
|
componentDidUpdate() {
|
||||||
|
const { user, history } = this.props;
|
||||||
|
if (!user.user && !user.dirty) {
|
||||||
|
history.replace('/login');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { list } = this.props;
|
||||||
|
return (
|
||||||
|
<div id="todos">
|
||||||
|
<Header />
|
||||||
|
<Transition
|
||||||
|
from={{ opacity: 0, maxHeight: 0 }}
|
||||||
|
enter={{ opacity: 1, maxHeight: 38 }}
|
||||||
|
leave={{ opacity: 0, maxHeight: 0 }}
|
||||||
|
>
|
||||||
|
{list && (styles => <Input styles={styles} />)}
|
||||||
|
</Transition>
|
||||||
|
<TodoListContainer />
|
||||||
|
<Transition
|
||||||
|
from={{ opacity: 0, maxHeight: 0 }}
|
||||||
|
enter={{ opacity: 1, maxHeight: 32 }}
|
||||||
|
leave={{ opacity: 0, maxHeight: 0 }}
|
||||||
|
>
|
||||||
|
{list && Filters}
|
||||||
|
</Transition>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Todos.propTypes = {
|
||||||
|
list: PropTypes.bool.isRequired,
|
||||||
|
user: PropTypes.any.isRequired,
|
||||||
|
history: PropTypes.any.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
function mapStateToProps(state) {
|
||||||
|
return {
|
||||||
|
list: Boolean(state.lists.list),
|
||||||
|
user: state.user,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default withRouter(connect(mapStateToProps)(Todos));
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { VisibilityFilters } from '../actions/defs';
|
import { VisibilityFilters } from '../../actions/defs';
|
||||||
|
|
||||||
export default function getVisibleTodos(todos, filter) {
|
export default function getVisibleTodos(todos, filter) {
|
||||||
switch (filter) {
|
switch (filter) {
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
|
import { connect } from 'react-redux';
|
||||||
|
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { Button } from '@material-ui/core';
|
import { Button } from '@material-ui/core';
|
||||||
import AddIcon from '@material-ui/icons/Add';
|
import AddIcon from '@material-ui/icons/Add';
|
||||||
|
import { addTodo } from '../../actions/todos';
|
||||||
|
|
||||||
function Input({ onClick, styles }) {
|
function Input({ onClick, styles }) {
|
||||||
let input;
|
let input;
|
||||||
@@ -40,4 +43,17 @@ Input.propTypes = {
|
|||||||
onClick: PropTypes.func.isRequired,
|
onClick: PropTypes.func.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default Input;
|
function mapStateToProps(state, ownProps) {
|
||||||
|
return { ...ownProps };
|
||||||
|
}
|
||||||
|
|
||||||
|
function mapDispatchToProps(dispatch) {
|
||||||
|
return {
|
||||||
|
onClick: text => dispatch(addTodo(text)),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
mapStateToProps,
|
||||||
|
mapDispatchToProps,
|
||||||
|
)(Input);
|
||||||
@@ -3,7 +3,7 @@ import { connect } from 'react-redux';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { ButtonBase } from '@material-ui/core';
|
import { ButtonBase } from '@material-ui/core';
|
||||||
|
|
||||||
import { fetchLists } from '../actions/lists';
|
import { fetchLists } from '../../actions/lists';
|
||||||
|
|
||||||
function FetchButton({ onClick, children }) {
|
function FetchButton({ onClick, children }) {
|
||||||
return (
|
return (
|
||||||
@@ -3,7 +3,7 @@ import { connect } from 'react-redux';
|
|||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { ButtonBase } from '@material-ui/core';
|
import { ButtonBase } from '@material-ui/core';
|
||||||
|
|
||||||
import { logout } from '../actions/user';
|
import { logout } from '../../actions/user';
|
||||||
|
|
||||||
function Link({ onClick, children }) {
|
function Link({ onClick, children }) {
|
||||||
return (
|
return (
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import LogoutLink from '../containers/LogoutLink';
|
import LogoutLink from './LogoutLink';
|
||||||
import FetchButton from '../containers/FetchButton';
|
import FetchButton from './FetchButton';
|
||||||
import Status from '../containers/Status';
|
import Status from './Status';
|
||||||
|
|
||||||
export default function UserHeader() {
|
export default function UserHeader() {
|
||||||
return (
|
return (
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
|
|
||||||
import Input from '../components/Input';
|
|
||||||
import { addTodo } from '../actions/todos';
|
|
||||||
|
|
||||||
function mapStateToProps(state, ownProps) {
|
|
||||||
return { ...ownProps };
|
|
||||||
}
|
|
||||||
|
|
||||||
function mapDispatchToProps(dispatch) {
|
|
||||||
return {
|
|
||||||
onClick: text => dispatch(addTodo(text)),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default connect(
|
|
||||||
mapStateToProps,
|
|
||||||
mapDispatchToProps,
|
|
||||||
)(Input);
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
import Lists from '../components/Lists';
|
|
||||||
|
|
||||||
function mapStateToProps(state) {
|
|
||||||
return {
|
|
||||||
userLoaded: state.user.loaded,
|
|
||||||
listsLoaded: state.lists.loaded,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default connect(mapStateToProps)(Lists);
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
import { withRouter } from 'react-router-dom';
|
|
||||||
|
|
||||||
import MainView from '../components/MainView';
|
|
||||||
|
|
||||||
function mapStateToProps(state) {
|
|
||||||
return {
|
|
||||||
user: state.user,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default withRouter(connect(mapStateToProps)(MainView));
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import { connect } from 'react-redux';
|
|
||||||
|
|
||||||
import Todos from '../components/Todos';
|
|
||||||
|
|
||||||
function mapStateToProps(state) {
|
|
||||||
return {
|
|
||||||
list: Boolean(state.lists.list),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export default connect(mapStateToProps)(Todos);
|
|
||||||
@@ -6,7 +6,7 @@ import { applyMiddleware, createStore, compose } from 'redux';
|
|||||||
import { offline } from '@redux-offline/redux-offline';
|
import { offline } from '@redux-offline/redux-offline';
|
||||||
import offlineConfig from '@redux-offline/redux-offline/lib/defaults';
|
import offlineConfig from '@redux-offline/redux-offline/lib/defaults';
|
||||||
|
|
||||||
import AppContainer from './containers/AppContainer';
|
import AppContainer from './components/AppContainer';
|
||||||
import registerServiceWorker from './registerServiceWorker';
|
import registerServiceWorker from './registerServiceWorker';
|
||||||
import todoApp from './reducers';
|
import todoApp from './reducers';
|
||||||
import { setToken } from './actions/util';
|
import { setToken } from './actions/util';
|
||||||
|
|||||||
Reference in New Issue
Block a user