From 6809ec494a65f880252e82de993dfe2413dac69e Mon Sep 17 00:00:00 2001 From: ireic Date: Thu, 19 Dec 2019 22:31:31 +0100 Subject: [PATCH] Polished existing features, added items to sidebar navigation --- client/src/{components => }/App/App.jsx | 0 client/src/{components => }/App/AppStyles.js | 0 .../src/{components => }/App/Authenticate.jsx | 0 client/src/{components => }/App/BaseStyles.js | 0 .../{components => }/App/NavbarLeft/Styles.js | 0 .../{components => }/App/NavbarLeft/index.jsx | 0 .../{components => }/App/NormalizeStyles.js | 0 client/src/{components => }/App/Routes.jsx | 0 .../src/{components => }/App/Toast/Styles.js | 0 .../src/{components => }/App/Toast/index.jsx | 0 .../App/assets/fonts/CircularStd-Black.eot | Bin .../App/assets/fonts/CircularStd-Black.otf | Bin .../App/assets/fonts/CircularStd-Black.svg | 0 .../App/assets/fonts/CircularStd-Black.ttf | Bin .../App/assets/fonts/CircularStd-Black.woff | Bin .../App/assets/fonts/CircularStd-Black.woff2 | Bin .../App/assets/fonts/CircularStd-Bold.eot | Bin .../App/assets/fonts/CircularStd-Bold.otf | Bin .../App/assets/fonts/CircularStd-Bold.svg | 0 .../App/assets/fonts/CircularStd-Bold.ttf | Bin .../App/assets/fonts/CircularStd-Bold.woff | Bin .../App/assets/fonts/CircularStd-Bold.woff2 | Bin .../App/assets/fonts/CircularStd-Book.eot | Bin .../App/assets/fonts/CircularStd-Book.otf | Bin .../App/assets/fonts/CircularStd-Book.svg | 0 .../App/assets/fonts/CircularStd-Book.ttf | Bin .../App/assets/fonts/CircularStd-Book.woff | Bin .../App/assets/fonts/CircularStd-Book.woff2 | Bin .../App/assets/fonts/CircularStd-Medium.eot | Bin .../App/assets/fonts/CircularStd-Medium.otf | Bin .../App/assets/fonts/CircularStd-Medium.svg | 0 .../App/assets/fonts/CircularStd-Medium.ttf | Bin .../App/assets/fonts/CircularStd-Medium.woff | Bin .../App/assets/fonts/CircularStd-Medium.woff2 | Bin .../App/assets/fonts/jira.svg | 5 + .../App/assets/fonts/jira.ttf | Bin 6624 -> 8328 bytes .../App/assets/fonts/jira.woff | Bin 6700 -> 8404 bytes .../src/{components => }/App/fontStyles.css | 0 .../Project/Board/Filters/Styles.js | 0 .../Project/Board/Filters/index.jsx | 0 .../Project/Board/Header/Styles.js | 0 client/src/Project/Board/Header/index.jsx | 29 +++++ .../IssueDetails/Comments/BodyForm/Styles.js | 0 .../IssueDetails/Comments/BodyForm/index.jsx | 0 .../IssueDetails/Comments/Comment/Styles.js | 0 .../IssueDetails/Comments/Comment/index.jsx | 0 .../Comments/Create/ProTip/Style.js | 27 ++++ .../Comments/Create/ProTip/index.jsx | 35 ++++++ .../IssueDetails/Comments/Create/Style.js | 26 +--- .../IssueDetails/Comments/Create/index.jsx | 8 +- .../Board/IssueDetails/Comments/Styles.js | 0 .../Board/IssueDetails/Comments/index.jsx | 2 +- .../Board/IssueDetails/Dates/Styles.js | 12 ++ .../Board/IssueDetails/Dates/index.jsx | 20 +++ .../src/Project/Board/IssueDetails/Delete.jsx | 37 ++++++ .../Board/IssueDetails/Description/Styles.js | 0 .../Board/IssueDetails/Description/index.jsx | 6 +- .../Board/IssueDetails/Feedback/Styles.js | 23 ++++ .../Feedback}/assets/feedback.png | Bin .../Board/IssueDetails/Feedback/index.jsx | 44 +++++++ .../Project/Board/IssueDetails/Loader.jsx | 0 .../Board/IssueDetails/Priority/Styles.js | 24 ++++ .../Board/IssueDetails/Priority/index.jsx | 13 +- .../Board/IssueDetails/Status/Styles.js | 18 +++ .../Board/IssueDetails/Status/index.jsx | 16 +-- .../Project/Board/IssueDetails/Styles.js | 14 +++ .../Board/IssueDetails/Title/Styles.js | 0 .../Board/IssueDetails/Title/index.jsx | 0 .../Board/IssueDetails/Tracking/Styles.js | 16 ++- .../Board/IssueDetails/Tracking/index.jsx | 5 +- .../Board/IssueDetails/Type}/Styles.js | 34 ----- .../Project/Board/IssueDetails/Type/index.jsx | 38 ++++++ .../Board/IssueDetails/Users/Styles.js | 12 +- .../Board/IssueDetails/Users/index.jsx | 14 +-- .../Project/Board/IssueDetails/index.jsx | 25 ++-- .../Project/Board/Lists/Issue/Styles.js | 2 +- .../Project/Board/Lists/Issue/index.jsx | 6 +- .../Project/Board/Lists/Styles.js | 0 .../Project/Board/Lists/index.jsx | 2 +- .../{components => }/Project/Board/index.jsx | 0 client/src/Project/Sidebar/Styles.js | 93 ++++++++++++++ client/src/Project/Sidebar/index.jsx | 53 ++++++++ client/src/{components => }/Project/Styles.js | 0 client/src/{components => }/Project/index.jsx | 0 .../components/Project/Board/Header/index.jsx | 41 ------ .../Board/IssueDetails/Priority/Styles.js | 22 ---- .../Board/IssueDetails/Status/Styles.js | 16 --- .../Board/IssueDetails/TopActions/index.jsx | 118 ------------------ .../src/components/Project/Sidebar/Styles.js | 56 --------- .../src/components/Project/Sidebar/index.jsx | 46 ------- client/src/shared/components/Button/Styles.js | 1 + .../shared/components/ConfirmModal/Styles.js | 3 +- .../src/shared/components/CopyLinkButton.jsx | 4 +- .../components/DatePicker/DateSection.jsx | 2 +- .../components/DatePicker/TimeSection.jsx | 4 +- client/src/shared/components/Icon/index.jsx | 5 + client/src/shared/components/Input/Styles.js | 4 + .../src/shared/components/InputDebounced.jsx | 4 +- .../components/IssuePriorityIcon/index.jsx | 2 +- client/src/shared/components/Modal/Styles.js | 2 +- .../src/shared/components/Select/Dropdown.jsx | 14 ++- client/src/shared/components/Select/Styles.js | 49 ++++---- client/src/shared/components/Select/index.jsx | 37 ++++-- .../shared/components/TextEditor/index.jsx | 2 +- .../src/shared/components/Tooltip/Styles.js | 2 +- .../src/shared/components/Tooltip/index.jsx | 14 +-- client/src/shared/constants/keyCodes.js | 1 + client/src/shared/hooks/onOutsideClick.js | 10 +- client/src/shared/utils/dom.js | 3 + client/src/shared/utils/styles.js | 10 +- client/src/shared/utils/validation.js | 2 +- 111 files changed, 649 insertions(+), 484 deletions(-) rename client/src/{components => }/App/App.jsx (100%) rename client/src/{components => }/App/AppStyles.js (100%) rename client/src/{components => }/App/Authenticate.jsx (100%) rename client/src/{components => }/App/BaseStyles.js (100%) rename client/src/{components => }/App/NavbarLeft/Styles.js (100%) rename client/src/{components => }/App/NavbarLeft/index.jsx (100%) rename client/src/{components => }/App/NormalizeStyles.js (100%) rename client/src/{components => }/App/Routes.jsx (100%) rename client/src/{components => }/App/Toast/Styles.js (100%) rename client/src/{components => }/App/Toast/index.jsx (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.eot (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.otf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.svg (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.ttf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.woff (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Black.woff2 (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.eot (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.otf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.svg (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.ttf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.woff (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Bold.woff2 (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.eot (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.otf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.svg (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.ttf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.woff (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Book.woff2 (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.eot (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.otf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.svg (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.ttf (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.woff (100%) rename client/src/{components => }/App/assets/fonts/CircularStd-Medium.woff2 (100%) rename client/src/{components => }/App/assets/fonts/jira.svg (76%) rename client/src/{components => }/App/assets/fonts/jira.ttf (58%) rename client/src/{components => }/App/assets/fonts/jira.woff (57%) rename client/src/{components => }/App/fontStyles.css (100%) rename client/src/{components => }/Project/Board/Filters/Styles.js (100%) rename client/src/{components => }/Project/Board/Filters/index.jsx (100%) rename client/src/{components => }/Project/Board/Header/Styles.js (100%) create mode 100644 client/src/Project/Board/Header/index.jsx rename client/src/{components => }/Project/Board/IssueDetails/Comments/BodyForm/Styles.js (100%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/BodyForm/index.jsx (100%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/Comment/Styles.js (100%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/Comment/index.jsx (100%) create mode 100644 client/src/Project/Board/IssueDetails/Comments/Create/ProTip/Style.js create mode 100644 client/src/Project/Board/IssueDetails/Comments/Create/ProTip/index.jsx rename client/src/{components => }/Project/Board/IssueDetails/Comments/Create/Style.js (56%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/Create/index.jsx (89%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/Styles.js (100%) rename client/src/{components => }/Project/Board/IssueDetails/Comments/index.jsx (95%) create mode 100644 client/src/Project/Board/IssueDetails/Dates/Styles.js create mode 100644 client/src/Project/Board/IssueDetails/Dates/index.jsx create mode 100644 client/src/Project/Board/IssueDetails/Delete.jsx rename client/src/{components => }/Project/Board/IssueDetails/Description/Styles.js (100%) rename client/src/{components => }/Project/Board/IssueDetails/Description/index.jsx (93%) create mode 100644 client/src/Project/Board/IssueDetails/Feedback/Styles.js rename client/src/{components/Project/Board/IssueDetails/TopActions => Project/Board/IssueDetails/Feedback}/assets/feedback.png (100%) create mode 100644 client/src/Project/Board/IssueDetails/Feedback/index.jsx rename client/src/{components => }/Project/Board/IssueDetails/Loader.jsx (100%) create mode 100644 client/src/Project/Board/IssueDetails/Priority/Styles.js rename client/src/{components => }/Project/Board/IssueDetails/Priority/index.jsx (76%) create mode 100644 client/src/Project/Board/IssueDetails/Status/Styles.js rename client/src/{components => }/Project/Board/IssueDetails/Status/index.jsx (69%) rename client/src/{components => }/Project/Board/IssueDetails/Styles.js (66%) rename client/src/{components => }/Project/Board/IssueDetails/Title/Styles.js (100%) rename client/src/{components => }/Project/Board/IssueDetails/Title/index.jsx (100%) rename client/src/{components => }/Project/Board/IssueDetails/Tracking/Styles.js (82%) rename client/src/{components => }/Project/Board/IssueDetails/Tracking/index.jsx (94%) rename client/src/{components/Project/Board/IssueDetails/TopActions => Project/Board/IssueDetails/Type}/Styles.js (57%) create mode 100644 client/src/Project/Board/IssueDetails/Type/index.jsx rename client/src/{components => }/Project/Board/IssueDetails/Users/Styles.js (74%) rename client/src/{components => }/Project/Board/IssueDetails/Users/index.jsx (85%) rename client/src/{components => }/Project/Board/IssueDetails/index.jsx (74%) rename client/src/{components => }/Project/Board/Lists/Issue/Styles.js (96%) rename client/src/{components => }/Project/Board/Lists/Issue/index.jsx (92%) rename client/src/{components => }/Project/Board/Lists/Styles.js (100%) rename client/src/{components => }/Project/Board/Lists/index.jsx (99%) rename client/src/{components => }/Project/Board/index.jsx (100%) create mode 100644 client/src/Project/Sidebar/Styles.js create mode 100644 client/src/Project/Sidebar/index.jsx rename client/src/{components => }/Project/Styles.js (100%) rename client/src/{components => }/Project/index.jsx (100%) delete mode 100644 client/src/components/Project/Board/Header/index.jsx delete mode 100644 client/src/components/Project/Board/IssueDetails/Priority/Styles.js delete mode 100644 client/src/components/Project/Board/IssueDetails/Status/Styles.js delete mode 100644 client/src/components/Project/Board/IssueDetails/TopActions/index.jsx delete mode 100644 client/src/components/Project/Sidebar/Styles.js delete mode 100644 client/src/components/Project/Sidebar/index.jsx create mode 100644 client/src/shared/utils/dom.js diff --git a/client/src/components/App/App.jsx b/client/src/App/App.jsx similarity index 100% rename from client/src/components/App/App.jsx rename to client/src/App/App.jsx diff --git a/client/src/components/App/AppStyles.js b/client/src/App/AppStyles.js similarity index 100% rename from client/src/components/App/AppStyles.js rename to client/src/App/AppStyles.js diff --git a/client/src/components/App/Authenticate.jsx b/client/src/App/Authenticate.jsx similarity index 100% rename from client/src/components/App/Authenticate.jsx rename to client/src/App/Authenticate.jsx diff --git a/client/src/components/App/BaseStyles.js b/client/src/App/BaseStyles.js similarity index 100% rename from client/src/components/App/BaseStyles.js rename to client/src/App/BaseStyles.js diff --git a/client/src/components/App/NavbarLeft/Styles.js b/client/src/App/NavbarLeft/Styles.js similarity index 100% rename from client/src/components/App/NavbarLeft/Styles.js rename to client/src/App/NavbarLeft/Styles.js diff --git a/client/src/components/App/NavbarLeft/index.jsx b/client/src/App/NavbarLeft/index.jsx similarity index 100% rename from client/src/components/App/NavbarLeft/index.jsx rename to client/src/App/NavbarLeft/index.jsx diff --git a/client/src/components/App/NormalizeStyles.js b/client/src/App/NormalizeStyles.js similarity index 100% rename from client/src/components/App/NormalizeStyles.js rename to client/src/App/NormalizeStyles.js diff --git a/client/src/components/App/Routes.jsx b/client/src/App/Routes.jsx similarity index 100% rename from client/src/components/App/Routes.jsx rename to client/src/App/Routes.jsx diff --git a/client/src/components/App/Toast/Styles.js b/client/src/App/Toast/Styles.js similarity index 100% rename from client/src/components/App/Toast/Styles.js rename to client/src/App/Toast/Styles.js diff --git a/client/src/components/App/Toast/index.jsx b/client/src/App/Toast/index.jsx similarity index 100% rename from client/src/components/App/Toast/index.jsx rename to client/src/App/Toast/index.jsx diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.eot b/client/src/App/assets/fonts/CircularStd-Black.eot similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.eot rename to client/src/App/assets/fonts/CircularStd-Black.eot diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.otf b/client/src/App/assets/fonts/CircularStd-Black.otf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.otf rename to client/src/App/assets/fonts/CircularStd-Black.otf diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.svg b/client/src/App/assets/fonts/CircularStd-Black.svg similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.svg rename to client/src/App/assets/fonts/CircularStd-Black.svg diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.ttf b/client/src/App/assets/fonts/CircularStd-Black.ttf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.ttf rename to client/src/App/assets/fonts/CircularStd-Black.ttf diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.woff b/client/src/App/assets/fonts/CircularStd-Black.woff similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.woff rename to client/src/App/assets/fonts/CircularStd-Black.woff diff --git a/client/src/components/App/assets/fonts/CircularStd-Black.woff2 b/client/src/App/assets/fonts/CircularStd-Black.woff2 similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Black.woff2 rename to client/src/App/assets/fonts/CircularStd-Black.woff2 diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.eot b/client/src/App/assets/fonts/CircularStd-Bold.eot similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.eot rename to client/src/App/assets/fonts/CircularStd-Bold.eot diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.otf b/client/src/App/assets/fonts/CircularStd-Bold.otf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.otf rename to client/src/App/assets/fonts/CircularStd-Bold.otf diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.svg b/client/src/App/assets/fonts/CircularStd-Bold.svg similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.svg rename to client/src/App/assets/fonts/CircularStd-Bold.svg diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.ttf b/client/src/App/assets/fonts/CircularStd-Bold.ttf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.ttf rename to client/src/App/assets/fonts/CircularStd-Bold.ttf diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.woff b/client/src/App/assets/fonts/CircularStd-Bold.woff similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.woff rename to client/src/App/assets/fonts/CircularStd-Bold.woff diff --git a/client/src/components/App/assets/fonts/CircularStd-Bold.woff2 b/client/src/App/assets/fonts/CircularStd-Bold.woff2 similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Bold.woff2 rename to client/src/App/assets/fonts/CircularStd-Bold.woff2 diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.eot b/client/src/App/assets/fonts/CircularStd-Book.eot similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.eot rename to client/src/App/assets/fonts/CircularStd-Book.eot diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.otf b/client/src/App/assets/fonts/CircularStd-Book.otf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.otf rename to client/src/App/assets/fonts/CircularStd-Book.otf diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.svg b/client/src/App/assets/fonts/CircularStd-Book.svg similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.svg rename to client/src/App/assets/fonts/CircularStd-Book.svg diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.ttf b/client/src/App/assets/fonts/CircularStd-Book.ttf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.ttf rename to client/src/App/assets/fonts/CircularStd-Book.ttf diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.woff b/client/src/App/assets/fonts/CircularStd-Book.woff similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.woff rename to client/src/App/assets/fonts/CircularStd-Book.woff diff --git a/client/src/components/App/assets/fonts/CircularStd-Book.woff2 b/client/src/App/assets/fonts/CircularStd-Book.woff2 similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Book.woff2 rename to client/src/App/assets/fonts/CircularStd-Book.woff2 diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.eot b/client/src/App/assets/fonts/CircularStd-Medium.eot similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.eot rename to client/src/App/assets/fonts/CircularStd-Medium.eot diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.otf b/client/src/App/assets/fonts/CircularStd-Medium.otf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.otf rename to client/src/App/assets/fonts/CircularStd-Medium.otf diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.svg b/client/src/App/assets/fonts/CircularStd-Medium.svg similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.svg rename to client/src/App/assets/fonts/CircularStd-Medium.svg diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.ttf b/client/src/App/assets/fonts/CircularStd-Medium.ttf similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.ttf rename to client/src/App/assets/fonts/CircularStd-Medium.ttf diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.woff b/client/src/App/assets/fonts/CircularStd-Medium.woff similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.woff rename to client/src/App/assets/fonts/CircularStd-Medium.woff diff --git a/client/src/components/App/assets/fonts/CircularStd-Medium.woff2 b/client/src/App/assets/fonts/CircularStd-Medium.woff2 similarity index 100% rename from client/src/components/App/assets/fonts/CircularStd-Medium.woff2 rename to client/src/App/assets/fonts/CircularStd-Medium.woff2 diff --git a/client/src/components/App/assets/fonts/jira.svg b/client/src/App/assets/fonts/jira.svg similarity index 76% rename from client/src/components/App/assets/fonts/jira.svg rename to client/src/App/assets/fonts/jira.svg index e13a8e4..8a9a873 100755 --- a/client/src/components/App/assets/fonts/jira.svg +++ b/client/src/App/assets/fonts/jira.svg @@ -28,7 +28,12 @@ + + + + + \ No newline at end of file diff --git a/client/src/components/App/assets/fonts/jira.ttf b/client/src/App/assets/fonts/jira.ttf similarity index 58% rename from client/src/components/App/assets/fonts/jira.ttf rename to client/src/App/assets/fonts/jira.ttf index c4c92ab09aa5ff5b1421f0f7fd900c9a8ee4b47c..a42e6da04cd34feb9ebed7f16acd617be0724800 100755 GIT binary patch delta 2027 zcmZ8iO>7%Q6rMM;JF{zhZSQ8iYbS0J+lli>lQ>T7wrNumA)rX5QCsIy3Z!Y9lr(On zRJ4^)*A*NJ2n3B(5e}#l>ZRt?A{7Y^Rqwr2xFE!#f(is25C;SYvgXaYqAhFB+xgzS zdGF2pnY~}UIPDQ2goH_rFfzLDz{pt4;-kp<3dgGpEAy-F+}%$Jfi&WSi}P!%_>Lo% zZ*B49x#L&wy!IyIvxKCdUph8_)IGAgK**L`xL#U9hPcgsK>Ro2o~4!3XU|m)myk}W z@2!)k7N+MHuAle<8CQ_;%*y=PRWb-aA%1|kyE?yeY-!t_uLAE(FnyKknUg7&CO<0%Ho^^b7=nPD!3nRRN=WcPs1gLRauoB zB8y~=c;sF35xGjPqp2~s6I>@@izo;#cz$BMG%=p1xh(csvFKA_kx^a^rLR0!?vJYc^Po z)v&s9WQy!1FOg*|h|GGECOyDJV$9oe6MdM1Nic1WDbHoHGFubocnK3xgiMg2Vg@rb zp3fzogtBUay{%PR@$2m)re)ifInqu^Fc-W@m|%*oY*Z^L^Pb>5ru#(qVw{TrK;6G) zrcx%%N&5J_Ndi_tSS`@HSwXF4;-LjSt^!dM3{#U-cil5n{-74;!4ubLU6(feTFSCg za@13nv|yzG9q}a3Okv-sq|&_0>g+tWlR*xWmkBl`h~Bb_LzcPYvQ8+D$$*r5abSU( z*g*IXLMUl37Jd|B&>FJSu#H;O#BRcdP;oF5<$~yf>Gie(F6i>I|IIS|e8T^BzoIE3 zDh8FX%0o)T3BjP9))ZA>eS$nC2rJ|_>>)eigfEJS`i^01L1oBwH5SEX7z#UK*Z++L zRa=8WtQ%d>)UNu})Xw?{3IbLBxlTQ-E2^pWNX8Dk5vat|22&{hfk7z7>tRg+jlYQf zyiZtRsxYcz0n%_X>|b*S;(DCdRgJ=ze*F{dByMOhwb_KqXZ~$PVbP8#s`Z~)>V-= zY1`$lu99shg@CjWh)Z2vWyEujc0baH{x#}@iyM~%t^e`8mMN<{nz9<$6E!aCGGLnx zD;4dw0{wwzlz0L^sV2}8WL0LCe7`pR*DJA|f09j?29wtn0l zz)R-?_h>hMpfK8`f@28BFpk2lmYT%(i4jd zfV2RRUjd{!(sL@)3X<Kz#wh{lsC%&3a}qyz6<2%0Qo8z zxg`~83_PYl{sbVuASXZBG10@#38+{C$Y-$1O{^$jP-c7v*OXAx%xngaCr<}^lk;mte68km$p!2raJid*C3`E9;3aI=6l-jWHu z0AhgX$xmd>8D%ER$ffWAB}0K&8;JELFOV}4;=IMx!37K`kQodzj87QYHoudb#Rvc! CJ5(|N diff --git a/client/src/components/App/assets/fonts/jira.woff b/client/src/App/assets/fonts/jira.woff similarity index 57% rename from client/src/components/App/assets/fonts/jira.woff rename to client/src/App/assets/fonts/jira.woff index 492fb829de09308e08af6e74af8d9c42856ed490..5bcf18962465ac7ffeddd20b62e8d11149f2a897 100755 GIT binary patch delta 2101 zcmZ7%OKcle@XdQ~_wCwV+q+)x+KHR^lQ_RN|JZHQrX;EgMg3R>=TZtv(~^`lX{A)O zm7wbi4g~}fvQ&`^LPEXNJ*7xRzyVcUd#UPzP!AO#PyvY(;zDfZt)qT$GP5(Y^Lz7o zdt?0Gv~&LOzI_A;{?hkI(0^VbP&M0}kGICW;rZpcvxLARzIa)JJA3!@g}GHJ`v!S! z6QT>JFTRel?+8h~AmQ4bH{Mx1Id_7Pju7e;B)G@V&M%@6WqXnDk|1ugpB9(TT|k+P z@vel6D~5ae%slEH>i81{QhD$E`l&CM=PqF2&SB)!KJ>${D|5>yQC7m>$0aOozjN>G znbmWs^2K94h7@DJS3|G|Qq==6Ij|ii0ZgCbACUB;RCA-*L>ZbrB0dexpIuHEftz2! z^D$4J)L|=Zg&ZXdWR-a21M&&EM%FRtsM`Uq6SqYegeuhh#CTz1Jl`_~E!>k=M+PC6 zRmE^#sE!+kxGgcN_YA^F)*0!55vMScLb=+LM_CWLC{97KFb0J@nhVu)T&Lh7Gl(G^ z8Lu$z)3#4PE%yyz?NN=F-i0cDhf zk7E=lRY77UMiDVenbL+76B02s2MT8bxI|ql=Zc~*H3KT+3LwkbN-iti?w^@i?(K6} zR13~*?d%O`-Vv{Br>pPTrWb^!iGsdukM8d5y7ZE!b;LDwtTWsmC`^j>L0yY7r>}Q; zW@dlugd6Y4^!x+?EKo5K>f;1e8N*y9cB!CDCeIjznBr@rCS#0)k0P9^sDUS90GyHa z_+{#;q|&Uj3aj8a=ExK|NM0dJI1d?YH8$DAE_c9KX0#wHZsJ4$wide(%T4rPQzpT* zrD86VmHk5vsW>Lh@vXGO`N_qfW#t_Cwxb14zNY0yt!>D(Y}+!2+9>g9p*9HRroa28rRKa(u7%wpQf9{7x{=)e5V^_bZW*o1L#o&2 zwAA>134S}(_~8iGxCo1W9#qr-4>Y;)X3FCVh2s%Nx@dxt98DRF zQ~U=8frwfQY8*865N`NkVFf8?RKby?!9=ie-R+C&QMIOM6uxfMKE>TqJwt=3jV6?D zG;VW^i6EEv7hpj@AA2r^@Mmt+N~w(E=*@sdI$XA4J5&Lb9PIE!}^5;%nZ)Y1A{ zLfx`${XQ9g@nqkYPXuX*jqh`;0@P zaV~I!@c7bNCZ|Y*w`v)YPBLVUT*M?ZW+v{Ax$&G*eOpUBhlyc=yJ0*(gbOnuZ&5!x zZ0aO78}pZI)!Hi5&HPW4tM2BmM=Kk3I#52daKAAd&~?`cySf$#Xu2CVTwM>)iY9hg zNmW#os9s5$8x@)K4xuG%yV%)Tu@x5TlpalcsYBl*Wb5(wq zHlNKJR50W4u_Hh}2NVmW=TxQv#m+D=h;9Mlg5*07GEx&$7#PGGfNIP@SUmjw=M11AP;3W~ zuL8pChnVkXii^pfC5$^?BV8QlABloR3Om-`1^P9;$jP{HYlYJPijU9j@JV56& zF|YuAukcdjrNsZg|NjF;fo8vCcqsaXG+CZ!~`Hh^31m`WT4z61e WGZ ( + <> + + Projects + / + {projectName} + / + Kanban Board + +
+ Kanban board + +
+ +); + +ProjectBoardHeader.propTypes = propTypes; + +export default ProjectBoardHeader; diff --git a/client/src/components/Project/Board/IssueDetails/Comments/BodyForm/Styles.js b/client/src/Project/Board/IssueDetails/Comments/BodyForm/Styles.js similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Comments/BodyForm/Styles.js rename to client/src/Project/Board/IssueDetails/Comments/BodyForm/Styles.js diff --git a/client/src/components/Project/Board/IssueDetails/Comments/BodyForm/index.jsx b/client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Comments/BodyForm/index.jsx rename to client/src/Project/Board/IssueDetails/Comments/BodyForm/index.jsx diff --git a/client/src/components/Project/Board/IssueDetails/Comments/Comment/Styles.js b/client/src/Project/Board/IssueDetails/Comments/Comment/Styles.js similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Comments/Comment/Styles.js rename to client/src/Project/Board/IssueDetails/Comments/Comment/Styles.js diff --git a/client/src/components/Project/Board/IssueDetails/Comments/Comment/index.jsx b/client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Comments/Comment/index.jsx rename to client/src/Project/Board/IssueDetails/Comments/Comment/index.jsx diff --git a/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/Style.js b/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/Style.js new file mode 100644 index 0000000..2432881 --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/Style.js @@ -0,0 +1,27 @@ +import styled from 'styled-components'; + +import { color, font } from 'shared/utils/styles'; + +export const Tip = styled.div` + display: flex; + align-items: center; + padding-top: 8px; + color: ${color.textMedium}; + ${font.size(13)} + strong { + padding-right: 4px; + } +`; + +export const TipLetter = styled.span` + position: relative; + top: 1px; + display: inline-block; + margin: 0 4px; + padding: 0 4px; + border-radius: 2px; + color: ${color.textDarkest}; + background: ${color.backgroundMedium}; + ${font.bold} + ${font.size(12)} +`; diff --git a/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/index.jsx b/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/index.jsx new file mode 100644 index 0000000..1e1c08b --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Comments/Create/ProTip/index.jsx @@ -0,0 +1,35 @@ +import React, { useEffect } from 'react'; +import PropTypes from 'prop-types'; + +import { KeyCodes } from 'shared/constants/keyCodes'; +import { isFocusedElementEditable } from 'shared/utils/dom'; +import { Tip, TipLetter } from './Style'; + +const propTypes = { + setFormOpen: PropTypes.func.isRequired, +}; + +const ProjectBoardIssueDetailsCommentsCreateProTip = ({ setFormOpen }) => { + useEffect(() => { + const handleKeyDown = event => { + if (!isFocusedElementEditable() && event.keyCode === KeyCodes.M) { + event.preventDefault(); + setFormOpen(true); + } + }; + document.addEventListener('keydown', handleKeyDown); + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [setFormOpen]); + + return ( + + Pro tip:pressMto comment + + ); +}; + +ProjectBoardIssueDetailsCommentsCreateProTip.propTypes = propTypes; + +export default ProjectBoardIssueDetailsCommentsCreateProTip; diff --git a/client/src/components/Project/Board/IssueDetails/Comments/Create/Style.js b/client/src/Project/Board/IssueDetails/Comments/Create/Style.js similarity index 56% rename from client/src/components/Project/Board/IssueDetails/Comments/Create/Style.js rename to client/src/Project/Board/IssueDetails/Comments/Create/Style.js index b66a231..040c636 100644 --- a/client/src/components/Project/Board/IssueDetails/Comments/Create/Style.js +++ b/client/src/Project/Board/IssueDetails/Comments/Create/Style.js @@ -20,7 +20,7 @@ export const Right = styled.div` `; export const FakeTextarea = styled.div` - padding: 12px 20px; + padding: 12px 16px; border-radius: 4px; border: 1px solid ${color.borderLightest}; color: ${color.textLight}; @@ -29,27 +29,3 @@ export const FakeTextarea = styled.div` border: 1px solid ${color.borderLight}; } `; - -export const Tip = styled.div` - display: flex; - align-items: center; - padding-top: 8px; - color: ${color.textMedium}; - ${font.size(13)} - strong { - padding-right: 4px; - } -`; - -export const TipLetter = styled.span` - position: relative; - top: 1px; - display: inline-block; - margin: 0 4px; - padding: 0 4px; - border-radius: 2px; - color: ${color.textDarkest}; - background: ${color.backgroundMedium}; - ${font.bold} - ${font.size(12)} -`; diff --git a/client/src/components/Project/Board/IssueDetails/Comments/Create/index.jsx b/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx similarity index 89% rename from client/src/components/Project/Board/IssueDetails/Comments/Create/index.jsx rename to client/src/Project/Board/IssueDetails/Comments/Create/index.jsx index a8baf4d..41f7a5f 100644 --- a/client/src/components/Project/Board/IssueDetails/Comments/Create/index.jsx +++ b/client/src/Project/Board/IssueDetails/Comments/Create/index.jsx @@ -5,7 +5,8 @@ import api from 'shared/utils/api'; import useApi from 'shared/hooks/api'; import toast from 'shared/utils/toast'; import BodyForm from '../BodyForm'; -import { Create, UserAvatar, Right, FakeTextarea, Tip, TipLetter } from './Style'; +import ProTip from './ProTip'; +import { Create, UserAvatar, Right, FakeTextarea } from './Style'; const propTypes = { issueId: PropTypes.number.isRequired, @@ -32,6 +33,7 @@ const ProjectBoardIssueDetailsCommentsCreate = ({ issueId, fetchIssue }) => { toast.error(error); } }; + return ( {currentUser && } @@ -47,9 +49,7 @@ const ProjectBoardIssueDetailsCommentsCreate = ({ issueId, fetchIssue }) => { ) : ( <> setFormOpen(true)}>Add a comment... - - Pro tip:pressMto comment - + )} diff --git a/client/src/components/Project/Board/IssueDetails/Comments/Styles.js b/client/src/Project/Board/IssueDetails/Comments/Styles.js similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Comments/Styles.js rename to client/src/Project/Board/IssueDetails/Comments/Styles.js diff --git a/client/src/components/Project/Board/IssueDetails/Comments/index.jsx b/client/src/Project/Board/IssueDetails/Comments/index.jsx similarity index 95% rename from client/src/components/Project/Board/IssueDetails/Comments/index.jsx rename to client/src/Project/Board/IssueDetails/Comments/index.jsx index 9e89a1f..da3cddb 100644 --- a/client/src/components/Project/Board/IssueDetails/Comments/index.jsx +++ b/client/src/Project/Board/IssueDetails/Comments/index.jsx @@ -6,7 +6,7 @@ import Comment from './Comment'; import { Comments, Title } from './Styles'; const propTypes = { - issue: PropTypes.array.isRequired, + issue: PropTypes.object.isRequired, fetchIssue: PropTypes.func.isRequired, }; diff --git a/client/src/Project/Board/IssueDetails/Dates/Styles.js b/client/src/Project/Board/IssueDetails/Dates/Styles.js new file mode 100644 index 0000000..90f9c91 --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Dates/Styles.js @@ -0,0 +1,12 @@ +import styled from 'styled-components'; + +import { color, font } from 'shared/utils/styles'; + +export const Dates = styled.div` + margin-top: 11px; + padding-top: 13px; + line-height: 22px; + border-top: 1px solid ${color.borderLightest}; + color: ${color.textMedium}; + ${font.size(13)} +`; diff --git a/client/src/Project/Board/IssueDetails/Dates/index.jsx b/client/src/Project/Board/IssueDetails/Dates/index.jsx new file mode 100644 index 0000000..5884aec --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Dates/index.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { formatDateTimeConversational } from 'shared/utils/dateTime'; +import { Dates } from './Styles'; + +const propTypes = { + issue: PropTypes.object.isRequired, +}; + +const ProjectBoardIssueDetailsDates = ({ issue }) => ( + +
Created at {formatDateTimeConversational(issue.createdAt)}
+
Updated at {formatDateTimeConversational(issue.updatedAt)}
+
+); + +ProjectBoardIssueDetailsDates.propTypes = propTypes; + +export default ProjectBoardIssueDetailsDates; diff --git a/client/src/Project/Board/IssueDetails/Delete.jsx b/client/src/Project/Board/IssueDetails/Delete.jsx new file mode 100644 index 0000000..cd31f6d --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Delete.jsx @@ -0,0 +1,37 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import api from 'shared/utils/api'; +import toast from 'shared/utils/toast'; +import { Button, ConfirmModal } from 'shared/components'; + +const propTypes = { + issue: PropTypes.object.isRequired, + fetchProject: PropTypes.func.isRequired, + modalClose: PropTypes.func.isRequired, +}; + +const ProjectBoardIssueDetailsDelete = ({ issue, fetchProject, modalClose }) => { + const handleIssueDelete = async () => { + try { + await api.delete(`/issues/${issue.id}`); + await fetchProject(); + modalClose(); + } catch (error) { + toast.error(error); + } + }; + return ( + + )} + renderContent={() => ( + + + + + + This simplified Jira clone is built with React on the front-end and Node/TypeScript on the + back-end. + + + {'Read more on our website or reach out via '} + + ivor@codetree.co + + + + + + + + + + )} + /> +); + +export default ProjectBoardIssueDetailsFeedback; diff --git a/client/src/components/Project/Board/IssueDetails/Loader.jsx b/client/src/Project/Board/IssueDetails/Loader.jsx similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Loader.jsx rename to client/src/Project/Board/IssueDetails/Loader.jsx diff --git a/client/src/Project/Board/IssueDetails/Priority/Styles.js b/client/src/Project/Board/IssueDetails/Priority/Styles.js new file mode 100644 index 0000000..73bae5b --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Priority/Styles.js @@ -0,0 +1,24 @@ +import styled, { css } from 'styled-components'; + +import { color, font } from 'shared/utils/styles'; + +export const Priority = styled.div` + display: flex; + align-items: center; + ${props => + props.isValue && + css` + padding: 3px 4px 3px 0px; + border-radius: 4px; + &:hover, + &:focus { + background: ${color.backgroundLight}; + } + `} +`; + +export const Label = styled.div` + text-transform: capitalize; + padding: 0 3px 0 8px; + ${font.size(14.5)} +`; diff --git a/client/src/components/Project/Board/IssueDetails/Priority/index.jsx b/client/src/Project/Board/IssueDetails/Priority/index.jsx similarity index 76% rename from client/src/components/Project/Board/IssueDetails/Priority/index.jsx rename to client/src/Project/Board/IssueDetails/Priority/index.jsx index f39431d..77a0ec9 100644 --- a/client/src/components/Project/Board/IssueDetails/Priority/index.jsx +++ b/client/src/Project/Board/IssueDetails/Priority/index.jsx @@ -4,7 +4,7 @@ import { invert } from 'lodash'; import { IssuePriority } from 'shared/constants/issues'; import { Select, IssuePriorityIcon } from 'shared/components'; -import { Priority, Option, Label } from './Styles'; +import { Priority, Label } from './Styles'; import { SectionTitle } from '../Styles'; const IssuePriorityCopy = invert(IssuePriority); @@ -15,8 +15,8 @@ const propTypes = { }; const ProjectBoardIssueDetailsPriority = ({ issue, updateIssue }) => { - const renderPriorityItem = priority => ( - + const renderPriorityItem = (priority, isValue) => ( + @@ -25,16 +25,15 @@ const ProjectBoardIssueDetailsPriority = ({ issue, updateIssue }) => { <> Priority ({ value: status, @@ -22,14 +23,13 @@ const ProjectBoardIssueDetailsStatus = ({ issue, updateIssue }) => ( }))} onChange={status => updateIssue({ status })} renderValue={({ value: status }) => ( - - {IssueStatusCopy[status]} + +
{IssueStatusCopy[status]}
+
)} - renderOption={({ value: status, ...optionProps }) => ( - + renderOption={({ value: status }) => ( + {IssueStatusCopy[status]} )} /> diff --git a/client/src/components/Project/Board/IssueDetails/Styles.js b/client/src/Project/Board/IssueDetails/Styles.js similarity index 66% rename from client/src/components/Project/Board/IssueDetails/Styles.js rename to client/src/Project/Board/IssueDetails/Styles.js index d7aaa43..10b1174 100644 --- a/client/src/components/Project/Board/IssueDetails/Styles.js +++ b/client/src/Project/Board/IssueDetails/Styles.js @@ -17,6 +17,20 @@ export const Right = styled.div` padding-top: 5px; `; +export const TopActions = styled.div` + display: flex; + justify-content: space-between; + padding: 21px 18px 0; +`; + +export const TopActionsRight = styled.div` + display: flex; + align-items: center; + & > * { + margin-left: 4px; + } +`; + export const SectionTitle = styled.div` margin: 24px 0 5px; text-transform: uppercase; diff --git a/client/src/components/Project/Board/IssueDetails/Title/Styles.js b/client/src/Project/Board/IssueDetails/Title/Styles.js similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Title/Styles.js rename to client/src/Project/Board/IssueDetails/Title/Styles.js diff --git a/client/src/components/Project/Board/IssueDetails/Title/index.jsx b/client/src/Project/Board/IssueDetails/Title/index.jsx similarity index 100% rename from client/src/components/Project/Board/IssueDetails/Title/index.jsx rename to client/src/Project/Board/IssueDetails/Title/index.jsx diff --git a/client/src/components/Project/Board/IssueDetails/Tracking/Styles.js b/client/src/Project/Board/IssueDetails/Tracking/Styles.js similarity index 82% rename from client/src/components/Project/Board/IssueDetails/Tracking/Styles.js rename to client/src/Project/Board/IssueDetails/Tracking/Styles.js index d46d73a..7c683af 100644 --- a/client/src/components/Project/Board/IssueDetails/Tracking/Styles.js +++ b/client/src/Project/Board/IssueDetails/Tracking/Styles.js @@ -3,12 +3,20 @@ import styled from 'styled-components'; import { color, font, mixin } from 'shared/utils/styles'; import { Icon } from 'shared/components'; +export const TrackingLink = styled.div` + padding: 4px 4px 2px 0; + border-radius: 4px; + transition: background 0.1s; + ${mixin.clickable} + &:hover { + background: ${color.backgroundLight}; + } +`; + export const Tracking = styled.div` display: flex; justify-content: space-between; align-items: center; - padding-top: 2px; - ${mixin.clickable}; `; export const WatchIcon = styled(Icon)` @@ -22,7 +30,7 @@ export const Right = styled.div` export const BarCont = styled.div` height: 5px; border-radius: 4px; - background: ${color.backgroundLight}; + background: ${color.backgroundMedium}; `; export const Bar = styled.div` @@ -41,7 +49,7 @@ export const Values = styled.div` `; export const ModalContents = styled.div` - padding: 20px; + padding: 20px 25px 25px; `; export const ModalTitle = styled.div` diff --git a/client/src/components/Project/Board/IssueDetails/Tracking/index.jsx b/client/src/Project/Board/IssueDetails/Tracking/index.jsx similarity index 94% rename from client/src/components/Project/Board/IssueDetails/Tracking/index.jsx rename to client/src/Project/Board/IssueDetails/Tracking/index.jsx index df81b72..8fa8612 100644 --- a/client/src/components/Project/Board/IssueDetails/Tracking/index.jsx +++ b/client/src/Project/Board/IssueDetails/Tracking/index.jsx @@ -4,6 +4,7 @@ import { isNil } from 'lodash'; import { InputDebounced, Modal, Button } from 'shared/components'; import { + TrackingLink, Tracking, WatchIcon, Right, @@ -31,7 +32,7 @@ const ProjectBoardIssueDetailsTracking = ({ issue, updateIssue }) => { filter={/^\d{0,6}$/} value={isNil(issue[fieldName]) ? '' : issue[fieldName]} onChange={stringValue => { - const value = stringValue.trim() ? parseInt(stringValue) : null; + const value = stringValue.trim() ? Number(stringValue) : null; updateIssue({ [fieldName]: value }); }} /> @@ -95,7 +96,7 @@ const ProjectBoardIssueDetailsTracking = ({ issue, updateIssue }) => { Time Tracking renderTrackingPreview(modal.open)} + renderLink={modal => {renderTrackingPreview(modal.open)}} renderContent={modal => ( Time tracking diff --git a/client/src/components/Project/Board/IssueDetails/TopActions/Styles.js b/client/src/Project/Board/IssueDetails/Type/Styles.js similarity index 57% rename from client/src/components/Project/Board/IssueDetails/TopActions/Styles.js rename to client/src/Project/Board/IssueDetails/Type/Styles.js index 9ded3f5..0743340 100644 --- a/client/src/components/Project/Board/IssueDetails/TopActions/Styles.js +++ b/client/src/Project/Board/IssueDetails/Type/Styles.js @@ -3,12 +3,6 @@ import styled from 'styled-components'; import { color, font, mixin } from 'shared/utils/styles'; import { Button } from 'shared/components'; -export const TopActions = styled.div` - display: flex; - justify-content: space-between; - padding: 21px 18px 0; -`; - export const TypeButton = styled(Button)` text-transform: uppercase; letter-spacing: 0.5px; @@ -16,14 +10,6 @@ export const TypeButton = styled(Button)` ${font.size(13)} `; -export const Right = styled.div` - display: flex; - align-items: center; - & > * { - margin-left: 4px; - } -`; - export const TypeDropdown = styled.div` padding-bottom: 6px; `; @@ -50,23 +36,3 @@ export const TypeLabel = styled.div` text-transform: capitalize; ${font.size(15)} `; - -export const FeedbackDropdown = styled.div` - padding: 16px 24px 24px; -`; - -export const FeedbackImageCont = styled.div` - padding: 24px 56px 20px; -`; - -export const FeedbackImage = styled.img` - width: 100%; -`; - -export const FeedbackParagraph = styled.p` - margin-bottom: 12px; - ${font.size(15)} - &:last-of-type { - margin-bottom: 22px; - } -`; diff --git a/client/src/Project/Board/IssueDetails/Type/index.jsx b/client/src/Project/Board/IssueDetails/Type/index.jsx new file mode 100644 index 0000000..4980b6e --- /dev/null +++ b/client/src/Project/Board/IssueDetails/Type/index.jsx @@ -0,0 +1,38 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +import { IssueType } from 'shared/constants/issues'; +import { IssueTypeIcon, Tooltip } from 'shared/components'; +import { TypeButton, TypeDropdown, TypeTitle, Type, TypeLabel } from './Styles'; + +const propTypes = { + issue: PropTypes.object.isRequired, + updateIssue: PropTypes.func.isRequired, +}; + +const ProjectBoardIssueDetailsType = ({ issue, updateIssue }) => ( + ( + }> + {`${issue.type}-${issue.id}`} + + )} + renderContent={() => ( + + Change issue type + {Object.values(IssueType).map(type => ( + updateIssue({ type })}> + + {type} + + ))} + + )} + /> +); + +ProjectBoardIssueDetailsType.propTypes = propTypes; + +export default ProjectBoardIssueDetailsType; diff --git a/client/src/components/Project/Board/IssueDetails/Users/Styles.js b/client/src/Project/Board/IssueDetails/Users/Styles.js similarity index 74% rename from client/src/components/Project/Board/IssueDetails/Users/Styles.js rename to client/src/Project/Board/IssueDetails/Users/Styles.js index 8279bb9..2321fa2 100644 --- a/client/src/components/Project/Board/IssueDetails/Users/Styles.js +++ b/client/src/Project/Board/IssueDetails/Users/Styles.js @@ -13,6 +13,10 @@ export const User = styled.div` padding: 4px 8px; border-radius: 4px; background: ${color.backgroundLight}; + transition: background 0.1s; + &:hover { + background: ${color.backgroundMedium}; + } `} `; @@ -20,11 +24,3 @@ export const Username = styled.div` padding: 0 3px 0 8px; ${font.size(14.5)} `; - -export const Option = styled.div` - padding: 8px 12px 5px; - ${mixin.clickable} - &.jira-select-option-is-active { - background: ${color.backgroundLightPrimary}; - } -`; diff --git a/client/src/components/Project/Board/IssueDetails/Users/index.jsx b/client/src/Project/Board/IssueDetails/Users/index.jsx similarity index 85% rename from client/src/components/Project/Board/IssueDetails/Users/index.jsx rename to client/src/Project/Board/IssueDetails/Users/index.jsx index 2aba0e3..887e767 100644 --- a/client/src/components/Project/Board/IssueDetails/Users/index.jsx +++ b/client/src/Project/Board/IssueDetails/Users/index.jsx @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Avatar, Select, Icon } from 'shared/components'; -import { User, Username, Option } from './Styles'; +import { User, Username } from './Styles'; import { SectionTitle } from '../Styles'; const propTypes = { @@ -12,7 +12,7 @@ const propTypes = { }; const ProjectBoardIssueDetailsUsers = ({ issue, updateIssue, projectUsers }) => { - const getUserById = userId => projectUsers.find(user => user.id === parseInt(userId)); + const getUserById = userId => projectUsers.find(user => user.id === userId); const userOptions = projectUsers.map(user => ({ value: user.id, label: user.name })); @@ -41,6 +41,7 @@ const ProjectBoardIssueDetailsUsers = ({ issue, updateIssue, projectUsers }) => Assignees updateIssue({ reporterId: userId })} renderValue={({ value }) => renderUserValue(getUserById(value), false)} - renderOption={({ value, ...optionProps }) => ( - - )} + renderOption={({ value }) => renderUserOption(getUserById(value))} /> ); diff --git a/client/src/components/Project/Board/IssueDetails/index.jsx b/client/src/Project/Board/IssueDetails/index.jsx similarity index 74% rename from client/src/components/Project/Board/IssueDetails/index.jsx rename to client/src/Project/Board/IssueDetails/index.jsx index 72053fd..f333cd6 100644 --- a/client/src/components/Project/Board/IssueDetails/index.jsx +++ b/client/src/Project/Board/IssueDetails/index.jsx @@ -3,9 +3,11 @@ import PropTypes from 'prop-types'; import api from 'shared/utils/api'; import useApi from 'shared/hooks/api'; -import { PageError } from 'shared/components'; +import { PageError, CopyLinkButton, Button } from 'shared/components'; import Loader from './Loader'; -import TopActions from './TopActions'; +import Type from './Type'; +import Feedback from './Feedback'; +import Delete from './Delete'; import Title from './Title'; import Description from './Description'; import Comments from './Comments'; @@ -13,7 +15,8 @@ import Status from './Status'; import Users from './Users'; import Priority from './Priority'; import Tracking from './Tracking'; -import { Content, Left, Right } from './Styles'; +import Dates from './Dates'; +import { TopActions, TopActionsRight, Content, Left, Right } from './Styles'; const propTypes = { issueId: PropTypes.string.isRequired, @@ -54,12 +57,15 @@ const ProjectBoardIssueDetails = ({ return ( <> - + + + + + + +