diff --git a/client/src/components/App.jsx b/client/src/components/App.jsx
index 9a815282..d8458c1d 100755
--- a/client/src/components/App.jsx
+++ b/client/src/components/App.jsx
@@ -1,26 +1,29 @@
import React from 'react';
import PropTypes from 'prop-types';
-import HeaderContainer from '../containers/HeaderContainer';
-import ProjectsContainer from '../containers/ProjectsContainer';
+import ModalTypes from '../constants/ModalTypes';
+import FixedWrapperContainer from '../containers/FixedWrapperContainer';
+import StaticWrapperContainer from '../containers/StaticWrapperContainer';
import UsersModalContainer from '../containers/UsersModalContainer';
import UserSettingsModalContainer from '../containers/UserSettingsModalContainer';
import AddProjectModalContainer from '../containers/AddProjectModalContainer';
-const App = ({ isUsersModalOpened, isUserSettingsModalOpened, isAddProjectModalOpened }) => (
+const App = ({ currentModal }) => (
<>
-
-
- {isUsersModalOpened && }
- {isUserSettingsModalOpened && }
- {isAddProjectModalOpened && }
+
+
+ {currentModal === ModalTypes.USERS && }
+ {currentModal === ModalTypes.USER_SETTINGS && }
+ {currentModal === ModalTypes.ADD_PROJECT && }
>
);
App.propTypes = {
- isUsersModalOpened: PropTypes.bool.isRequired,
- isUserSettingsModalOpened: PropTypes.bool.isRequired,
- isAddProjectModalOpened: PropTypes.bool.isRequired,
+ currentModal: PropTypes.oneOf(Object.values(ModalTypes)),
+};
+
+App.defaultProps = {
+ currentModal: undefined,
};
export default App;
diff --git a/client/src/components/Board/AddList.jsx b/client/src/components/Board/AddList.jsx
index e3c2e1f4..a11998e1 100755
--- a/client/src/components/Board/AddList.jsx
+++ b/client/src/components/Board/AddList.jsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react';
+import React, { useCallback, useEffect, useRef } from 'react';
import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next';
import { Button, Form, Input } from 'semantic-ui-react';
@@ -12,48 +12,23 @@ const DEFAULT_DATA = {
name: '',
};
-const AddList = React.forwardRef(({ children, onCreate }, ref) => {
+const AddList = React.memo(({ onCreate, onClose }) => {
const [t] = useTranslation();
- const [isOpened, setIsOpened] = useState(false);
const [data, handleFieldChange, setData] = useForm(DEFAULT_DATA);
const [selectNameFieldState, selectNameField] = useToggle();
const nameField = useRef(null);
- const open = useCallback(() => {
- setIsOpened(true);
- }, []);
-
- const close = useCallback(() => {
- setIsOpened(false);
- }, []);
-
- useImperativeHandle(
- ref,
- () => ({
- open,
- close,
- }),
- [open, close],
- );
-
- const handleChildrenClick = useCallback(() => {
- open();
- }, [open]);
-
const handleFieldKeyDown = useCallback(
(event) => {
if (event.key === 'Escape') {
- close();
+ onClose();
}
},
- [close],
+ [onClose],
);
- const [handleFieldBlur, handleControlMouseOver, handleControlMouseOut] = useClosableForm(
- isOpened,
- close,
- );
+ const [handleFieldBlur, handleControlMouseOver, handleControlMouseOut] = useClosableForm(onClose);
const handleSubmit = useCallback(() => {
const cleanData = {
@@ -73,21 +48,13 @@ const AddList = React.forwardRef(({ children, onCreate }, ref) => {
}, [onCreate, data, setData, selectNameField]);
useEffect(() => {
- if (isOpened) {
- nameField.current.select();
- }
- }, [isOpened]);
+ nameField.current.select();
+ }, []);
useDidUpdate(() => {
nameField.current.select();
}, [selectNameFieldState]);
- if (!isOpened) {
- return React.cloneElement(children, {
- onClick: handleChildrenClick,
- });
- }
-
return (