cleanup: fix eslint errors
This commit is contained in:
		
							
								
								
									
										3
									
								
								web/.eslintignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								web/.eslintignore
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					src/shared/generated/*.tsx
 | 
				
			||||||
 | 
					src/shared/generated/*.ts
 | 
				
			||||||
 | 
					src/react-app-env.d.ts
 | 
				
			||||||
@@ -3,6 +3,7 @@
 | 
				
			|||||||
  "version": "0.1.0",
 | 
					  "version": "0.1.0",
 | 
				
			||||||
  "private": true,
 | 
					  "private": true,
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@apollo/react-common": "^3.1.4",
 | 
				
			||||||
    "@apollo/react-hooks": "^3.1.3",
 | 
					    "@apollo/react-hooks": "^3.1.3",
 | 
				
			||||||
    "@fortawesome/fontawesome-svg-core": "^1.2.27",
 | 
					    "@fortawesome/fontawesome-svg-core": "^1.2.27",
 | 
				
			||||||
    "@fortawesome/free-brands-svg-icons": "^5.12.1",
 | 
					    "@fortawesome/free-brands-svg-icons": "^5.12.1",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
import React, { useState, useEffect } from 'react';
 | 
					import React, { useState, useEffect } from 'react';
 | 
				
			||||||
import { createBrowserHistory } from 'history';
 | 
					import { createBrowserHistory } from 'history';
 | 
				
			||||||
import { setAccessToken } from 'shared/utils/accessToken';
 | 
					import { setAccessToken } from 'shared/utils/accessToken';
 | 
				
			||||||
import NormalizeStyles from './NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from './BaseStyles';
 | 
					 | 
				
			||||||
import Routes from './Routes';
 | 
					 | 
				
			||||||
import Navbar from 'shared/components/Navbar';
 | 
					import Navbar from 'shared/components/Navbar';
 | 
				
			||||||
import GlobalTopNavbar from 'App/TopNavbar';
 | 
					import GlobalTopNavbar from 'App/TopNavbar';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
 | 
					import NormalizeStyles from './NormalizeStyles';
 | 
				
			||||||
 | 
					import BaseStyles from './BaseStyles';
 | 
				
			||||||
 | 
					import Routes from './Routes';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const history = createBrowserHistory();
 | 
					const history = createBrowserHistory();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,5 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React, { useState } from 'react';
 | 
				
			||||||
import styled from 'styled-components/macro';
 | 
					import styled from 'styled-components/macro';
 | 
				
			||||||
import { useQuery, useMutation } from '@apollo/react-hooks';
 | 
					 | 
				
			||||||
import gql from 'graphql-tag';
 | 
					 | 
				
			||||||
import { useParams } from 'react-router-dom';
 | 
					import { useParams } from 'react-router-dom';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  useFindProjectQuery,
 | 
					  useFindProjectQuery,
 | 
				
			||||||
@@ -120,7 +118,7 @@ const Project = () => {
 | 
				
			|||||||
  const { loading, data } = useFindProjectQuery({
 | 
					  const { loading, data } = useFindProjectQuery({
 | 
				
			||||||
    variables: { projectId },
 | 
					    variables: { projectId },
 | 
				
			||||||
    onCompleted: newData => {
 | 
					    onCompleted: newData => {
 | 
				
			||||||
      let newListsData: State = { tasks: {}, columns: {} };
 | 
					      const newListsData: State = { tasks: {}, columns: {} };
 | 
				
			||||||
      newData.findProject.taskGroups.forEach((taskGroup: TaskGroup) => {
 | 
					      newData.findProject.taskGroups.forEach((taskGroup: TaskGroup) => {
 | 
				
			||||||
        newListsData.columns[taskGroup.taskGroupID] = {
 | 
					        newListsData.columns[taskGroup.taskGroupID] = {
 | 
				
			||||||
          taskGroupID: taskGroup.taskGroupID,
 | 
					          taskGroupID: taskGroup.taskGroupID,
 | 
				
			||||||
@@ -166,16 +164,13 @@ const Project = () => {
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
  const onCardCreate = (taskGroupID: string, name: string) => {
 | 
					  const onCardCreate = (taskGroupID: string, name: string) => {
 | 
				
			||||||
    const taskGroupTasks = Object.values(listsData.tasks).filter((task: Task) => task.taskGroupID === taskGroupID);
 | 
					    const taskGroupTasks = Object.values(listsData.tasks).filter((task: Task) => task.taskGroupID === taskGroupID);
 | 
				
			||||||
    var position = 65535;
 | 
					    let position = 65535;
 | 
				
			||||||
    console.log(taskGroupID);
 | 
					 | 
				
			||||||
    console.log(taskGroupTasks);
 | 
					 | 
				
			||||||
    if (taskGroupTasks.length !== 0) {
 | 
					    if (taskGroupTasks.length !== 0) {
 | 
				
			||||||
      const [lastTask] = taskGroupTasks.sort((a: any, b: any) => a.position - b.position).slice(-1);
 | 
					      const [lastTask] = taskGroupTasks.sort((a: any, b: any) => a.position - b.position).slice(-1);
 | 
				
			||||||
      console.log(`last tasks position ${lastTask.position}`);
 | 
					 | 
				
			||||||
      position = Math.ceil(lastTask.position) * 2 + 1;
 | 
					      position = Math.ceil(lastTask.position) * 2 + 1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    createTask({ variables: { taskGroupID: taskGroupID, name: name, position: position } });
 | 
					    createTask({ variables: { taskGroupID, name, position } });
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  const onQuickEditorOpen = (e: ContextMenuEvent) => {
 | 
					  const onQuickEditorOpen = (e: ContextMenuEvent) => {
 | 
				
			||||||
    const currentTask = Object.values(listsData.tasks).find(task => task.taskID === e.taskID);
 | 
					    const currentTask = Object.values(listsData.tasks).find(task => task.taskID === e.taskID);
 | 
				
			||||||
@@ -211,16 +206,16 @@ const Project = () => {
 | 
				
			|||||||
        </MainContent>
 | 
					        </MainContent>
 | 
				
			||||||
        {quickCardEditor.isOpen && (
 | 
					        {quickCardEditor.isOpen && (
 | 
				
			||||||
          <QuickCardEditor
 | 
					          <QuickCardEditor
 | 
				
			||||||
            isOpen={true}
 | 
					            isOpen
 | 
				
			||||||
            taskID={quickCardEditor.task ? quickCardEditor.task.taskID : ''}
 | 
					            taskID={quickCardEditor.task ? quickCardEditor.task.taskID : ''}
 | 
				
			||||||
            taskGroupID={quickCardEditor.task ? quickCardEditor.task.taskGroupID : ''}
 | 
					            taskGroupID={quickCardEditor.task ? quickCardEditor.task.taskGroupID : ''}
 | 
				
			||||||
            cardTitle={quickCardEditor.task ? quickCardEditor.task.name : ''}
 | 
					            cardTitle={quickCardEditor.task ? quickCardEditor.task.name : ''}
 | 
				
			||||||
            onCloseEditor={() => setQuickCardEditor(initialQuickCardEditorState)}
 | 
					            onCloseEditor={() => setQuickCardEditor(initialQuickCardEditorState)}
 | 
				
			||||||
            onEditCard={(listId: string, cardId: string, cardName: string) =>
 | 
					            onEditCard={(_listId: string, cardId: string, cardName: string) => {
 | 
				
			||||||
              updateTaskName({ variables: { taskID: cardId, name: cardName } })
 | 
					              updateTaskName({ variables: { taskID: cardId, name: cardName } });
 | 
				
			||||||
            }
 | 
					            }}
 | 
				
			||||||
            onOpenPopup={() => console.log()}
 | 
					            onOpenPopup={() => console.log()}
 | 
				
			||||||
            onArchiveCard={(listId: string, cardId: string) => deleteTask({ variables: { taskID: cardId } })}
 | 
					            onArchiveCard={(_listId: string, cardId: string) => deleteTask({ variables: { taskID: cardId } })}
 | 
				
			||||||
            labels={[]}
 | 
					            labels={[]}
 | 
				
			||||||
            top={quickCardEditor.top}
 | 
					            top={quickCardEditor.top}
 | 
				
			||||||
            left={quickCardEditor.left}
 | 
					            left={quickCardEditor.left}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,6 +13,7 @@ import App from './App';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// https://able.bio/AnasT/apollo-graphql-async-access-token-refresh--470t1c8
 | 
					// https://able.bio/AnasT/apollo-graphql-async-access-token-refresh--470t1c8
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let forward$;
 | 
				
			||||||
let isRefreshing = false;
 | 
					let isRefreshing = false;
 | 
				
			||||||
let pendingRequests: any = [];
 | 
					let pendingRequests: any = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -21,56 +22,57 @@ const resolvePendingRequests = () => {
 | 
				
			|||||||
  pendingRequests = [];
 | 
					  pendingRequests = [];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const resolvePromise = (resolve: () => void) => {
 | 
				
			||||||
 | 
					  pendingRequests.push(() => resolve());
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const resetPendingRequests = () => {
 | 
				
			||||||
 | 
					  pendingRequests = [];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const setRefreshing = (newVal: boolean) => {
 | 
				
			||||||
 | 
					  isRefreshing = newVal;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {
 | 
					const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {
 | 
				
			||||||
  if (graphQLErrors) {
 | 
					  if (graphQLErrors) {
 | 
				
			||||||
    for (const err of graphQLErrors) {
 | 
					    for (const err of graphQLErrors) {
 | 
				
			||||||
      switch (err!.extensions!.code) {
 | 
					      if (err.extensions && err.extensions.code) {
 | 
				
			||||||
        case 'UNAUTHENTICATED':
 | 
					        switch (err.extensions.code) {
 | 
				
			||||||
          // error code is set to UNAUTHENTICATED
 | 
					          case 'UNAUTHENTICATED':
 | 
				
			||||||
          // when AuthenticationError thrown in resolver
 | 
					            if (!isRefreshing) {
 | 
				
			||||||
          let forward$;
 | 
					              setRefreshing(true);
 | 
				
			||||||
 | 
					              forward$ = fromPromise(
 | 
				
			||||||
          if (!isRefreshing) {
 | 
					                getNewToken()
 | 
				
			||||||
            isRefreshing = true;
 | 
					                  .then((response: any) => {
 | 
				
			||||||
            forward$ = fromPromise(
 | 
					                    setAccessToken(response.accessToken);
 | 
				
			||||||
              getNewToken()
 | 
					                    resolvePendingRequests();
 | 
				
			||||||
                .then((response: any) => {
 | 
					                    return response.accessToken;
 | 
				
			||||||
                  // Store the new tokens for your auth link
 | 
					                  })
 | 
				
			||||||
                  setAccessToken(response.accessToken);
 | 
					                  .catch(() => {
 | 
				
			||||||
                  resolvePendingRequests();
 | 
					                    resetPendingRequests();
 | 
				
			||||||
                  return response.accessToken;
 | 
					                    // TODO
 | 
				
			||||||
                })
 | 
					                    // Handle token refresh errors e.g clear stored tokens, redirect to login, ...
 | 
				
			||||||
                .catch((error: any) => {
 | 
					                    return undefined;
 | 
				
			||||||
                  pendingRequests = [];
 | 
					                  })
 | 
				
			||||||
                  // TODO
 | 
					                  .finally(() => {
 | 
				
			||||||
                  // Handle token refresh errors e.g clear stored tokens, redirect to login, ...
 | 
					                    setRefreshing(false);
 | 
				
			||||||
                  return;
 | 
					                  }),
 | 
				
			||||||
                })
 | 
					              ).filter(value => Boolean(value));
 | 
				
			||||||
                .finally(() => {
 | 
					            } else {
 | 
				
			||||||
                  isRefreshing = false;
 | 
					              forward$ = fromPromise(new Promise(resolvePromise));
 | 
				
			||||||
                }),
 | 
					            }
 | 
				
			||||||
            ).filter(value => Boolean(value));
 | 
					            return forward$.flatMap(() => forward(operation));
 | 
				
			||||||
          } else {
 | 
					          default:
 | 
				
			||||||
            // Will only emit once the Promise is resolved
 | 
					          // pass
 | 
				
			||||||
            forward$ = fromPromise(
 | 
					        }
 | 
				
			||||||
              new Promise(resolve => {
 | 
					 | 
				
			||||||
                pendingRequests.push(() => resolve());
 | 
					 | 
				
			||||||
              }),
 | 
					 | 
				
			||||||
            );
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          return forward$.flatMap(() => forward(operation));
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
        // pass
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (networkError) {
 | 
					  if (networkError) {
 | 
				
			||||||
    console.log(`[Network error]: ${networkError}`);
 | 
					    console.log(`[Network error]: ${networkError}`);
 | 
				
			||||||
    // if you would also like to retry automatically on
 | 
					 | 
				
			||||||
    // network errors, we recommend that you use
 | 
					 | 
				
			||||||
    // apollo-link-retry
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  return undefined;
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const requestLink = new ApolloLink(
 | 
					const requestLink = new ApolloLink(
 | 
				
			||||||
@@ -78,10 +80,10 @@ const requestLink = new ApolloLink(
 | 
				
			|||||||
    new Observable((observer: any) => {
 | 
					    new Observable((observer: any) => {
 | 
				
			||||||
      let handle: any;
 | 
					      let handle: any;
 | 
				
			||||||
      Promise.resolve(operation)
 | 
					      Promise.resolve(operation)
 | 
				
			||||||
        .then((operation: any) => {
 | 
					        .then((op: any) => {
 | 
				
			||||||
          const accessToken = getAccessToken();
 | 
					          const accessToken = getAccessToken();
 | 
				
			||||||
          if (accessToken) {
 | 
					          if (accessToken) {
 | 
				
			||||||
            operation.setContext({
 | 
					            op.setContext({
 | 
				
			||||||
              headers: {
 | 
					              headers: {
 | 
				
			||||||
                Authorization: `Bearer ${accessToken}`,
 | 
					                Authorization: `Bearer ${accessToken}`,
 | 
				
			||||||
              },
 | 
					              },
 | 
				
			||||||
@@ -98,7 +100,9 @@ const requestLink = new ApolloLink(
 | 
				
			|||||||
        .catch(observer.error.bind(observer));
 | 
					        .catch(observer.error.bind(observer));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      return () => {
 | 
					      return () => {
 | 
				
			||||||
        if (handle) handle.unsubscribe();
 | 
					        if (handle) {
 | 
				
			||||||
 | 
					          handle.unsubscribe();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
@@ -106,11 +110,14 @@ const requestLink = new ApolloLink(
 | 
				
			|||||||
const client = new ApolloClient({
 | 
					const client = new ApolloClient({
 | 
				
			||||||
  link: ApolloLink.from([
 | 
					  link: ApolloLink.from([
 | 
				
			||||||
    onError(({ graphQLErrors, networkError }) => {
 | 
					    onError(({ graphQLErrors, networkError }) => {
 | 
				
			||||||
      if (graphQLErrors)
 | 
					      if (graphQLErrors) {
 | 
				
			||||||
        graphQLErrors.forEach(({ message, locations, path }) =>
 | 
					        graphQLErrors.forEach(({ message, locations, path }) =>
 | 
				
			||||||
          console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`),
 | 
					          console.log(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`),
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      if (networkError) console.log(`[Network error]: ${networkError}`);
 | 
					      }
 | 
				
			||||||
 | 
					      if (networkError) {
 | 
				
			||||||
 | 
					        console.log(`[Network error]: ${networkError}`);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    }),
 | 
					    }),
 | 
				
			||||||
    errorLink,
 | 
					    errorLink,
 | 
				
			||||||
    requestLink,
 | 
					    requestLink,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import React, { useRef } from 'react';
 | 
					import React, { useRef } from 'react';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					import LabelColors from 'shared/constants/labelColors';
 | 
				
			||||||
import Card from './index';
 | 
					import Card from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: Card,
 | 
					  component: Card,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import React from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import CardComposer from './index';
 | 
					import CardComposer from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: CardComposer,
 | 
					  component: CardComposer,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef } from 'react';
 | 
				
			|||||||
import PropTypes from 'prop-types';
 | 
					import PropTypes from 'prop-types';
 | 
				
			||||||
import useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';
 | 
					import useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';
 | 
				
			||||||
import { faTimes } from '@fortawesome/free-solid-svg-icons';
 | 
					import { faTimes } from '@fortawesome/free-solid-svg-icons';
 | 
				
			||||||
import TextareaAutosize from 'react-autosize-textarea';
 | 
					import useOnOutsideClick from 'shared/hooks/onOutsideClick';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  CardComposerWrapper,
 | 
					  CardComposerWrapper,
 | 
				
			||||||
@@ -15,7 +15,6 @@ import {
 | 
				
			|||||||
  ComposerControlsSaveSection,
 | 
					  ComposerControlsSaveSection,
 | 
				
			||||||
  ComposerControlsActionsSection,
 | 
					  ComposerControlsActionsSection,
 | 
				
			||||||
} from './Styles';
 | 
					} from './Styles';
 | 
				
			||||||
import useOnOutsideClick from 'shared/hooks/onOutsideClick';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Props = {
 | 
					type Props = {
 | 
				
			||||||
  isOpen: boolean;
 | 
					  isOpen: boolean;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,7 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					import React, { createRef, useState } from 'react';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import DropdownMenu from './index';
 | 
					import DropdownMenu from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: DropdownMenu,
 | 
					  component: DropdownMenu,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ import { action } from '@storybook/addon-actions';
 | 
				
			|||||||
import Card from 'shared/components/Card';
 | 
					import Card from 'shared/components/Card';
 | 
				
			||||||
import CardComposer from 'shared/components/CardComposer';
 | 
					import CardComposer from 'shared/components/CardComposer';
 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					import LabelColors from 'shared/constants/labelColors';
 | 
				
			||||||
import List, { ListCards } from './index';
 | 
					import List, { ListCards } from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: List,
 | 
					  component: List,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React, { useState } from 'react';
 | 
				
			||||||
import Lists from './index';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
 | 
					import Lists from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: Lists,
 | 
					  component: Lists,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,3 +9,5 @@ export const Container = styled.div`
 | 
				
			|||||||
  overflow-y: hidden;
 | 
					  overflow-y: hidden;
 | 
				
			||||||
  padding-bottom: 8px;
 | 
					  padding-bottom: 8px;
 | 
				
			||||||
`;
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Container;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,7 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React, { useState } from 'react';
 | 
				
			||||||
import { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd';
 | 
					import { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd';
 | 
				
			||||||
 | 
					 | 
				
			||||||
import List, { ListCards } from 'shared/components/List';
 | 
					import List, { ListCards } from 'shared/components/List';
 | 
				
			||||||
import Card from 'shared/components/Card';
 | 
					import Card from 'shared/components/Card';
 | 
				
			||||||
import { Container } from './Styles';
 | 
					 | 
				
			||||||
import CardComposer from 'shared/components/CardComposer';
 | 
					import CardComposer from 'shared/components/CardComposer';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  isPositionChanged,
 | 
					  isPositionChanged,
 | 
				
			||||||
@@ -12,6 +10,8 @@ import {
 | 
				
			|||||||
  getAfterDropDraggableList,
 | 
					  getAfterDropDraggableList,
 | 
				
			||||||
} from 'shared/utils/draggables';
 | 
					} from 'shared/utils/draggables';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { Container } from './Styles';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
interface Columns {
 | 
					interface Columns {
 | 
				
			||||||
  [key: string]: TaskGroup;
 | 
					  [key: string]: TaskGroup;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -28,13 +28,6 @@ type Props = {
 | 
				
			|||||||
  onQuickEditorOpen: (e: ContextMenuEvent) => void;
 | 
					  onQuickEditorOpen: (e: ContextMenuEvent) => void;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type OnDragEndProps = {
 | 
					 | 
				
			||||||
  draggableId: any;
 | 
					 | 
				
			||||||
  source: any;
 | 
					 | 
				
			||||||
  destination: any;
 | 
					 | 
				
			||||||
  type: any;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Lists = ({ columns, tasks, onCardDrop, onListDrop, onCardCreate, onQuickEditorOpen }: Props) => {
 | 
					const Lists = ({ columns, tasks, onCardDrop, onListDrop, onCardCreate, onQuickEditorOpen }: Props) => {
 | 
				
			||||||
  const onDragEnd = ({ draggableId, source, destination, type }: DropResult) => {
 | 
					  const onDragEnd = ({ draggableId, source, destination, type }: DropResult) => {
 | 
				
			||||||
    if (typeof destination === 'undefined') return;
 | 
					    if (typeof destination === 'undefined') return;
 | 
				
			||||||
@@ -137,7 +130,7 @@ const Lists = ({ columns, tasks, onCardDrop, onListDrop, onCardCreate, onQuickEd
 | 
				
			|||||||
                                  setCurrentComposer('');
 | 
					                                  setCurrentComposer('');
 | 
				
			||||||
                                  onCardCreate(column.taskGroupID, name);
 | 
					                                  onCardCreate(column.taskGroupID, name);
 | 
				
			||||||
                                }}
 | 
					                                }}
 | 
				
			||||||
                                isOpen={true}
 | 
					                                isOpen
 | 
				
			||||||
                              />
 | 
					                              />
 | 
				
			||||||
                            )}
 | 
					                            )}
 | 
				
			||||||
                          </ListCards>
 | 
					                          </ListCards>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
import Login from './index';
 | 
					import Login from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
 | 
					const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					import Modal from '.';
 | 
				
			||||||
import Modal from './index';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: Modal,
 | 
					  component: Modal,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import { ScrollOverlay, ClickableOverlay, StyledModal } from './Styles';
 | 
					import { ScrollOverlay, ClickableOverlay, StyledModal } from './Styles';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const $root: HTMLElement = document.getElementById('root')!;
 | 
					const $root: HTMLElement = document.getElementById('root')!; // eslint-disable-line @typescript-eslint/no-non-null-assertion
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ModalProps = {
 | 
					type ModalProps = {
 | 
				
			||||||
  width: number;
 | 
					  width: number;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,8 @@ import React from 'react';
 | 
				
			|||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
import { Home, Stack, Users, Question } from 'shared/icons';
 | 
					import { Home } from 'shared/icons';
 | 
				
			||||||
import Navbar, { ActionButton, ButtonContainer, PrimaryLogo } from './index';
 | 
					import Navbar, { ActionButton, ButtonContainer, PrimaryLogo } from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: Navbar,
 | 
					  component: Navbar,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					import React, { useState } from 'react';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					import LabelColors from 'shared/constants/labelColors';
 | 
				
			||||||
import MenuTypes from 'shared/constants/menuTypes';
 | 
					import MenuTypes from 'shared/constants/menuTypes';
 | 
				
			||||||
import PopupMenu from './index';
 | 
					import PopupMenu from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: PopupMenu,
 | 
					  component: PopupMenu,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import ProjectGridItem from '.';
 | 
				
			||||||
import ProjectGridItem from './';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: ProjectGridItem,
 | 
					  component: ProjectGridItem,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
import React from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
import Sidebar from './index';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import Navbar from 'shared/components/Navbar';
 | 
					import Navbar from 'shared/components/Navbar';
 | 
				
			||||||
 | 
					import Sidebar from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: Sidebar,
 | 
					  component: Sidebar,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import styled from 'styled-components';
 | 
					import styled from 'styled-components';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const Container = styled.div`
 | 
					const Container = styled.div`
 | 
				
			||||||
  position: fixed;
 | 
					  position: fixed;
 | 
				
			||||||
  z-index: 99;
 | 
					  z-index: 99;
 | 
				
			||||||
  top: 0px;
 | 
					  top: 0px;
 | 
				
			||||||
@@ -13,3 +13,5 @@ export const Container = styled.div`
 | 
				
			|||||||
  background: rgb(244, 245, 247);
 | 
					  background: rgb(244, 245, 247);
 | 
				
			||||||
  border-right: 1px solid rgb(223, 225, 230);
 | 
					  border-right: 1px solid rgb(223, 225, 230);
 | 
				
			||||||
`;
 | 
					`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Container;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
import React from 'react';
 | 
					import React from 'react';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Container } from './Styles';
 | 
					import Container from './Styles';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Sidebar = () => {
 | 
					const Sidebar = () => {
 | 
				
			||||||
  return <Container></Container>;
 | 
					  return <Container />;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Sidebar;
 | 
					export default Sidebar;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,9 +2,8 @@ import React, { useState } from 'react';
 | 
				
			|||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
import styled from 'styled-components';
 | 
					 | 
				
			||||||
import Modal from 'shared/components/Modal';
 | 
					import Modal from 'shared/components/Modal';
 | 
				
			||||||
import TaskDetails from './';
 | 
					import TaskDetails from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: TaskDetails,
 | 
					  component: TaskDetails,
 | 
				
			||||||
@@ -35,9 +34,9 @@ export const Default = () => {
 | 
				
			|||||||
                name: 'Hello, world',
 | 
					                name: 'Hello, world',
 | 
				
			||||||
                position: 1,
 | 
					                position: 1,
 | 
				
			||||||
                labels: [],
 | 
					                labels: [],
 | 
				
			||||||
                description: description,
 | 
					                description,
 | 
				
			||||||
              }}
 | 
					              }}
 | 
				
			||||||
              onTaskDescriptionChange={(task, desc) => setDescription(desc)}
 | 
					              onTaskDescriptionChange={(_task, desc) => setDescription(desc)}
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
          );
 | 
					          );
 | 
				
			||||||
        }}
 | 
					        }}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,9 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					import React, { useState } from 'react';
 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					import NormalizeStyles from 'App/NormalizeStyles';
 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					import BaseStyles from 'App/BaseStyles';
 | 
				
			||||||
 | 
					 | 
				
			||||||
import TopNavbar from './index';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					import { action } from '@storybook/addon-actions';
 | 
				
			||||||
 | 
					 | 
				
			||||||
import DropdownMenu from 'shared/components/DropdownMenu';
 | 
					import DropdownMenu from 'shared/components/DropdownMenu';
 | 
				
			||||||
 | 
					import TopNavbar from '.';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  component: TopNavbar,
 | 
					  component: TopNavbar,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,14 @@
 | 
				
			|||||||
    ts-invariant "^0.4.4"
 | 
					    ts-invariant "^0.4.4"
 | 
				
			||||||
    tslib "^1.10.0"
 | 
					    tslib "^1.10.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"@apollo/react-common@^3.1.4":
 | 
				
			||||||
 | 
					  version "3.1.4"
 | 
				
			||||||
 | 
					  resolved "https://registry.yarnpkg.com/@apollo/react-common/-/react-common-3.1.4.tgz#ec13c985be23ea8e799c9ea18e696eccc97be345"
 | 
				
			||||||
 | 
					  integrity sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==
 | 
				
			||||||
 | 
					  dependencies:
 | 
				
			||||||
 | 
					    ts-invariant "^0.4.4"
 | 
				
			||||||
 | 
					    tslib "^1.10.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"@apollo/react-hooks@^3.1.3":
 | 
					"@apollo/react-hooks@^3.1.3":
 | 
				
			||||||
  version "3.1.3"
 | 
					  version "3.1.3"
 | 
				
			||||||
  resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.3.tgz#ad42c7af78e81fee0f30e53242640410d5bd0293"
 | 
					  resolved "https://registry.yarnpkg.com/@apollo/react-hooks/-/react-hooks-3.1.3.tgz#ad42c7af78e81fee0f30e53242640410d5bd0293"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user