diff --git a/client/.eslintrc.json b/client/.eslintrc.json
index 902e319..16afce3 100644
--- a/client/.eslintrc.json
+++ b/client/.eslintrc.json
@@ -29,6 +29,7 @@
"react/no-array-index-key": 0,
"react/forbid-prop-types": 0,
"react/prop-types": [2, { "skipUndeclared": true }],
+ "react/jsx-fragments": [2, "element"],
"react/state-in-constructor": 0,
"react/jsx-props-no-spreading": 0,
"jsx-a11y/click-events-have-key-events": 0
diff --git a/client/src/App/index.jsx b/client/src/App/index.jsx
index ca099ca..0a57edf 100644
--- a/client/src/App/index.jsx
+++ b/client/src/App/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import NormalizeStyles from './NormalizeStyles';
import BaseStyles from './BaseStyles';
@@ -11,12 +11,12 @@ import Routes from './Routes';
import './fontStyles.css';
const App = () => (
- <>
+
- >
+
);
export default App;
diff --git a/client/src/Project/Board/IssueDetails/AssigneesReporter/index.jsx b/client/src/Project/Board/IssueDetails/AssigneesReporter/index.jsx
index 8208942..1b7d1da 100644
--- a/client/src/Project/Board/IssueDetails/AssigneesReporter/index.jsx
+++ b/client/src/Project/Board/IssueDetails/AssigneesReporter/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { Avatar, Select, Icon } from 'shared/components';
@@ -18,7 +18,7 @@ const ProjectBoardIssueDetailsAssigneesReporter = ({ issue, updateIssue, project
const userOptions = projectUsers.map(user => ({ value: user.id, label: user.name }));
return (
- <>
+
Assignees
);
};
diff --git a/client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx b/client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx
index fe3dd7c..3c6e9b6 100644
--- a/client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx
@@ -1,4 +1,4 @@
-import React, { useRef } from 'react';
+import React, { Fragment, useRef } from 'react';
import PropTypes from 'prop-types';
import { Textarea } from 'shared/components';
@@ -29,7 +29,7 @@ const ProjectBoardIssueDetailsCommentsBodyForm = ({
};
return (
- <>
+
);
};
diff --git a/client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx b/client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx
index 69f85d7..c1cb46f 100644
--- a/client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { Fragment, useState } from 'react';
import PropTypes from 'prop-types';
import api from 'shared/utils/api';
@@ -65,7 +65,7 @@ const ProjectBoardIssueDetailsComment = ({ comment, fetchIssue }) => {
onCancel={() => setFormOpen(false)}
/>
) : (
- <>
+
{comment.body}
setFormOpen(true)}>Edit
{
onConfirm={handleCommentDelete}
renderLink={modal => Delete}
/>
- >
+
)}
diff --git a/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx b/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx
index a443a3c..0eacd05 100644
--- a/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { Fragment, useState } from 'react';
import PropTypes from 'prop-types';
import api from 'shared/utils/api';
@@ -47,10 +47,10 @@ const ProjectBoardIssueDetailsCommentsCreate = ({ issueId, fetchIssue }) => {
onCancel={() => setFormOpen(false)}
/>
) : (
- <>
+
setFormOpen(true)}>Add a comment...
- >
+
)}
diff --git a/client/src/Project/Board/IssueDetails/Description/index.jsx b/client/src/Project/Board/IssueDetails/Description/index.jsx
index efb4f55..2340fde 100644
--- a/client/src/Project/Board/IssueDetails/Description/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Description/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { Fragment, useState } from 'react';
import PropTypes from 'prop-types';
import { getTextContentsFromHtmlString } from 'shared/utils/browser';
@@ -23,10 +23,10 @@ const ProjectBoardIssueDetailsDescription = ({ issue, updateIssue }) => {
const isDescriptionEmpty = getTextContentsFromHtmlString(description).trim().length === 0;
return (
- <>
+
Description
{isEditing ? (
- <>
+
{
Cancel
- >
+
) : (
- <>
+
{isDescriptionEmpty ? (
setEditing(true)}>Add a description...
) : (
setEditing(true)} />
)}
- >
+
)}
- >
+
);
};
diff --git a/client/src/Project/Board/IssueDetails/EstimateTracking/index.jsx b/client/src/Project/Board/IssueDetails/EstimateTracking/index.jsx
index 296f5f0..cc03e67 100644
--- a/client/src/Project/Board/IssueDetails/EstimateTracking/index.jsx
+++ b/client/src/Project/Board/IssueDetails/EstimateTracking/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { isNil } from 'lodash';
@@ -22,7 +22,7 @@ const propTypes = {
};
const ProjectBoardIssueDetailsEstimateTracking = ({ issue, updateIssue }) => (
- <>
+
Original Estimate (hours)
{renderHourInput('estimate', issue, updateIssue)}
@@ -57,7 +57,7 @@ const ProjectBoardIssueDetailsEstimateTracking = ({ issue, updateIssue }) => (
)}
/>
- >
+
);
const renderHourInput = (fieldName, issue, updateIssue) => (
diff --git a/client/src/Project/Board/IssueDetails/Priority/index.jsx b/client/src/Project/Board/IssueDetails/Priority/index.jsx
index fef14ff..1f03361 100644
--- a/client/src/Project/Board/IssueDetails/Priority/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Priority/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { IssuePriority, IssuePriorityCopy } from 'shared/constants/issues';
@@ -13,7 +13,7 @@ const propTypes = {
};
const ProjectBoardIssueDetailsPriority = ({ issue, updateIssue }) => (
- <>
+
Priority
);
const renderPriorityItem = (priority, isValue) => (
diff --git a/client/src/Project/Board/IssueDetails/Status/index.jsx b/client/src/Project/Board/IssueDetails/Status/index.jsx
index bba590d..177d7e3 100644
--- a/client/src/Project/Board/IssueDetails/Status/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Status/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { IssueStatus, IssueStatusCopy } from 'shared/constants/issues';
@@ -13,7 +13,7 @@ const propTypes = {
};
const ProjectBoardIssueDetailsStatus = ({ issue, updateIssue }) => (
- <>
+
Status
);
ProjectBoardIssueDetailsStatus.propTypes = propTypes;
diff --git a/client/src/Project/Board/IssueDetails/Title/index.jsx b/client/src/Project/Board/IssueDetails/Title/index.jsx
index 6ad869a..d569f24 100644
--- a/client/src/Project/Board/IssueDetails/Title/index.jsx
+++ b/client/src/Project/Board/IssueDetails/Title/index.jsx
@@ -1,4 +1,4 @@
-import React, { useRef, useState } from 'react';
+import React, { Fragment, useRef, useState } from 'react';
import PropTypes from 'prop-types';
import { KeyCodes } from 'shared/constants/keyCodes';
@@ -31,7 +31,7 @@ const ProjectBoardIssueDetailsTitle = ({ issue, updateIssue }) => {
};
return (
- <>
+
{
}}
/>
{error && {error}}
- >
+
);
};
diff --git a/client/src/Project/Board/IssueDetails/index.jsx b/client/src/Project/Board/IssueDetails/index.jsx
index 2111457..bf708fb 100644
--- a/client/src/Project/Board/IssueDetails/index.jsx
+++ b/client/src/Project/Board/IssueDetails/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import api from 'shared/utils/api';
@@ -55,7 +55,7 @@ const ProjectBoardIssueDetails = ({
};
return (
- <>
+
@@ -85,7 +85,7 @@ const ProjectBoardIssueDetails = ({
- >
+
);
};
diff --git a/client/src/Project/Board/index.jsx b/client/src/Project/Board/index.jsx
index c8acfd8..31e8da7 100644
--- a/client/src/Project/Board/index.jsx
+++ b/client/src/Project/Board/index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { Route, useRouteMatch, useHistory } from 'react-router-dom';
@@ -30,7 +30,7 @@ const ProjectBoard = ({ project, fetchProject, updateLocalProjectIssues }) => {
const [filters, mergeFilters] = useMergeState(defaultFilters);
return (
- <>
+
{
/>
)}
/>
- >
+
);
};
diff --git a/client/src/Project/IssueSearch/index.jsx b/client/src/Project/IssueSearch/index.jsx
index f9f8315..aeaeb22 100644
--- a/client/src/Project/IssueSearch/index.jsx
+++ b/client/src/Project/IssueSearch/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { Fragment, useState } from 'react';
import PropTypes from 'prop-types';
import { Link } from 'react-router-dom';
import { get } from 'lodash';
@@ -60,17 +60,17 @@ const ProjectIssueSearch = ({ project }) => {
{isSearchTermEmpty && recentIssues.length > 0 && (
- <>
+
Recent Issues
{recentIssues.map(renderIssue)}
- >
+
)}
{!isSearchTermEmpty && matchingIssues.length > 0 && (
- <>
+
Matching Issues
{matchingIssues.map(renderIssue)}
- >
+
)}
{!isSearchTermEmpty && !isLoading && matchingIssues.length === 0 && (
diff --git a/client/src/shared/components/ConfirmModal/index.jsx b/client/src/shared/components/ConfirmModal/index.jsx
index 5605d01..81e14b8 100644
--- a/client/src/shared/components/ConfirmModal/index.jsx
+++ b/client/src/shared/components/ConfirmModal/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { Fragment, useState } from 'react';
import PropTypes from 'prop-types';
import { StyledConfirmModal, Title, Message, Actions, StyledButton } from './Styles';
@@ -52,7 +52,7 @@ const ConfirmModal = ({
withCloseIcon={false}
renderLink={renderLink}
renderContent={modal => (
- <>
+
{title}
{message && {message}}
@@ -67,7 +67,7 @@ const ConfirmModal = ({
{cancelText}
- >
+
)}
/>
);
diff --git a/client/src/shared/components/Modal/index.jsx b/client/src/shared/components/Modal/index.jsx
index 6e7a6d9..3b7c84c 100644
--- a/client/src/shared/components/Modal/index.jsx
+++ b/client/src/shared/components/Modal/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useRef, useEffect, useCallback } from 'react';
+import React, { Fragment, useState, useRef, useEffect, useCallback } from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
@@ -68,7 +68,7 @@ const Modal = ({
}, [isOpen]);
return (
- <>
+
{!isControlled && renderLink({ open: () => setStateOpen(true) })}
{isOpen &&
@@ -89,7 +89,7 @@ const Modal = ({
,
$root,
)}
- >
+
);
};
diff --git a/client/src/shared/components/Tooltip/index.jsx b/client/src/shared/components/Tooltip/index.jsx
index 8f90f5d..d16aaf0 100644
--- a/client/src/shared/components/Tooltip/index.jsx
+++ b/client/src/shared/components/Tooltip/index.jsx
@@ -1,4 +1,4 @@
-import React, { useState, useRef, useLayoutEffect } from 'react';
+import React, { Fragment, useState, useRef, useLayoutEffect } from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
@@ -58,7 +58,7 @@ const Tooltip = ({ className, placement, offset, width, renderLink, renderConten
}, [isOpen, offset, placement]);
return (
- <>
+
{renderLink({ ref: $linkRef, onClick: isOpen ? closeTooltip : openTooltip })}
{isOpen &&
@@ -68,7 +68,7 @@ const Tooltip = ({ className, placement, offset, width, renderLink, renderConten
,
$root,
)}
- >
+
);
};