From 6d1ce949e704c950f5bed3beb171187fda5b7d6b Mon Sep 17 00:00:00 2001 From: Cagdas U Date: Mon, 17 May 2021 10:03:33 +0300 Subject: [PATCH] fix(interview-scheduler): P3 & P4 issues Addresses: https://github.com/topcoder-platform/taas-app/issues/181 https://github.com/topcoder-platform/taas-app/issues/199 https://github.com/topcoder-platform/taas-app/issues/204 https://github.com/topcoder-platform/taas-app/issues/206 https://github.com/topcoder-platform/taas-app/issues/218 https://github.com/topcoder-platform/taas-app/issues/230 https://github.com/topcoder-platform/taas-app/issues/231 https://github.com/topcoder-platform/taas-app/issues/232 https://github.com/topcoder-platform/taas-app/issues/240 https://github.com/topcoder-platform/taas-app/issues/260 --- src/assets/images/icon-check.svg | 2 +- src/assets/images/icon-cross-light.svg | 2 +- src/assets/images/icon-cross.svg | 2 +- src/assets/images/icon-moon.svg | 2 +- src/assets/images/icon-resume.svg | 2 +- src/assets/images/icon-sun.svg | 2 +- src/components/BaseModal/index.jsx | 4 +++- src/components/BaseModal/styles.module.scss | 4 ++++ .../MarkdownEditor/styles.module.scss | 4 ++++ src/components/Select/styles.module.scss | 3 +-- src/components/SkillsSummary/index.jsx | 2 +- src/constants/index.js | 11 ++++++++++- .../components/InterviewDetailsPopup/index.jsx | 7 ++++++- .../components/LatestInterview/index.jsx | 4 ++-- .../components/PositionCandidates/index.jsx | 2 +- .../components/PrevInterviewItem/index.jsx | 4 ++-- .../components/SelectCandidatePopup/index.jsx | 4 ++-- src/styles/main.module.scss | 3 +++ src/utils/format.js | 18 ++++++++++++++---- 19 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/assets/images/icon-check.svg b/src/assets/images/icon-check.svg index 0c319764..395ff485 100644 --- a/src/assets/images/icon-check.svg +++ b/src/assets/images/icon-check.svg @@ -1,6 +1,6 @@ - 7D2319F6-3344-4A11-B8BD-A4BA891B5123 + check icon diff --git a/src/assets/images/icon-cross-light.svg b/src/assets/images/icon-cross-light.svg index 8f9ee96f..dba2714a 100644 --- a/src/assets/images/icon-cross-light.svg +++ b/src/assets/images/icon-cross-light.svg @@ -1,6 +1,6 @@ - D450CF0B-B6EF-4991-8E48-E34846C2F842 + cross icon diff --git a/src/assets/images/icon-cross.svg b/src/assets/images/icon-cross.svg index 1cbe9802..75f24b3b 100644 --- a/src/assets/images/icon-cross.svg +++ b/src/assets/images/icon-cross.svg @@ -1,6 +1,6 @@ - D450CF0B-B6EF-4991-8E48-E34846C2F842 + cross icon diff --git a/src/assets/images/icon-moon.svg b/src/assets/images/icon-moon.svg index 12cc3e46..39d03240 100644 --- a/src/assets/images/icon-moon.svg +++ b/src/assets/images/icon-moon.svg @@ -1,7 +1,7 @@ - moon + moon icon Created with Sketch. diff --git a/src/assets/images/icon-resume.svg b/src/assets/images/icon-resume.svg index 16465a52..e0f1eaa5 100644 --- a/src/assets/images/icon-resume.svg +++ b/src/assets/images/icon-resume.svg @@ -1,6 +1,6 @@ - D2E2FC7A-435A-4F30-905C-B828DBC261C6 + resume icon diff --git a/src/assets/images/icon-sun.svg b/src/assets/images/icon-sun.svg index f2f3a517..fe74554a 100644 --- a/src/assets/images/icon-sun.svg +++ b/src/assets/images/icon-sun.svg @@ -1,7 +1,7 @@ - daylight + daylight icon Created with Sketch. diff --git a/src/components/BaseModal/index.jsx b/src/components/BaseModal/index.jsx index 91950b2f..88f31ce5 100644 --- a/src/components/BaseModal/index.jsx +++ b/src/components/BaseModal/index.jsx @@ -34,6 +34,7 @@ function BaseModal({ children, title, button, + closeButtonText, disabled, extraModalStyle, }) { @@ -58,7 +59,7 @@ function BaseModal({ onClick={onClose} disabled={disabled} > - Cancel + {closeButtonText ? closeButtonText : "Cancel"} @@ -71,6 +72,7 @@ BaseModal.propTypes = { children: PT.node, title: PT.string, button: PT.element, + closeButtonText: PT.string, disabled: PT.bool, extraModalStyle: PT.object, }; diff --git a/src/components/BaseModal/styles.module.scss b/src/components/BaseModal/styles.module.scss index e1c1d36c..418bd607 100644 --- a/src/components/BaseModal/styles.module.scss +++ b/src/components/BaseModal/styles.module.scss @@ -1,5 +1,9 @@ @import "styles/include"; +svg { + pointer-events: none; +} + .title { @include font-barlow-condensed; font-weight: normal; diff --git a/src/components/MarkdownEditor/styles.module.scss b/src/components/MarkdownEditor/styles.module.scss index a901cd13..d444b248 100644 --- a/src/components/MarkdownEditor/styles.module.scss +++ b/src/components/MarkdownEditor/styles.module.scss @@ -43,6 +43,10 @@ border: 1px solid #aaaaab; border-radius: 4px; overflow: hidden; + &:focus-within:not(.error) { + border-color: #55a5ff; + box-shadow: 0 0 2px 1px #cee6ff; + } } .te-toolbar-section { diff --git a/src/components/Select/styles.module.scss b/src/components/Select/styles.module.scss index 597fce9a..5a1e0c5e 100644 --- a/src/components/Select/styles.module.scss +++ b/src/components/Select/styles.module.scss @@ -5,7 +5,7 @@ cursor: pointer; appearance: none; background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTVweCIgaGVpZ2h0PSI5cHgiIHZpZXdCb3g9IjAgMCAxNSA5IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgaWQ9IlBhZ2UtMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IjAyQi1DYW5kaWRhdGUtU2VsZWN0aW9uIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTI3Ny4wMDAwMDAsIC0yMTYuMDAwMDAwKSIgZmlsbD0iIzEzN0Q2MCI+CiAgICAgICAgICAgIDxnIGlkPSJHcm91cC0zIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDUuMDAwMDAwLCAxODIuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iVUktS2l0L0Zvcm1zL3RleHRib3gvZW1wdHkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDYyMi4wMDAwMDAsIDQuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9IlBhZGRpbmctR3JvdXAtMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzUwLjAwMDAwMCwgMzAuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02Ljc5MTM2MTAzLDguMjg4Mjc5OTkgTDAuNzA2Njk0MTE3LDIuMTc3MTU4IEMwLjMxMjA0MDA1NywxLjc4MDc4ODA2IDAuMzAxMDU2MTE0LDEuMTQzNDI4NzUgMC42ODE4MTgxODIsMC43MzM2OTU2NTIgQzEuMDQ0MDQxMDgsMC4zNDM5MTIzMTggMS42NTM2NjI1OCwwLjMyMTU3MDE2OSAyLjA0MzQ0NTkxLDAuNjgzNzkzMDY1IEMyLjA1MjU3NDU3LDAuNjkyMjc2MjYxIDIuMDYxNTM3NzgsMC43MDA5MzU3NjggMi4wNzAzMzA0OCwwLjcwOTc2NjcgTDcuNSw2LjE2MzA0MzQ4IEw3LjUsNi4xNjMwNDM0OCBMMTIuOTI5NjY5NSwwLjcwOTc2NjcgQzEzLjMwNTEwOCwwLjMzMjY5NTg2NyAxMy45MTUxMzc0LDAuMzMxMzcyNTkzIDE0LjI5MjIwODIsMC43MDY4MTEwODUgQzE0LjMwMTAzOTEsMC43MTU2MDM3ODcgMTQuMzA5Njk4NiwwLjcyNDU2Njk5NiAxNC4zMTgxODE4LDAuNzMzNjk1NjUyIEMxNC42OTg5NDM5LDEuMTQzNDI4NzUgMTQuNjg3OTU5OSwxLjc4MDc4ODA2IDE0LjI5MzMwNTksMi4xNzcxNTggTDguMjA4NjM4OTcsOC4yODgyNzk5OSBDNy44MTg5NjI3Miw4LjY3OTY1MDQ5IDcuMTg1Nzk5MjMsOC42ODEwMjM5NCA2Ljc5NDQyODczLDguMjkxMzQ3NjkgQzYuNzkzNDAzOTUsOC4yOTAzMjczNSA2Ljc5MjM4MTM4LDguMjg5MzA0NzggNi43OTEzNjEwMyw4LjI4ODI3OTk5IFoiIGlkPSJhcnJvdyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==") - no-repeat center right; + no-repeat 96% center; border: 0; color: #2a2a2a; outline: none; @@ -23,7 +23,6 @@ border-radius: 6px; display: flex; height: 40px; - padding-right: 15px; position: relative; } diff --git a/src/components/SkillsSummary/index.jsx b/src/components/SkillsSummary/index.jsx index ceccbb62..b892e153 100644 --- a/src/components/SkillsSummary/index.jsx +++ b/src/components/SkillsSummary/index.jsx @@ -21,7 +21,7 @@ const SkillsSummary = ({ skills, requiredSkills = [], limit }) => {
- {Math.round(skillsMatchedRatio * 100)}% skill matched + {Math.round(skillsMatchedRatio * 100)}% skills matched
= MAX_ALLOWED_INTERVIEWS ) { return ( - +

You've reached the cap of {MAX_ALLOWED_INTERVIEWS} interviews with this candidate. Now please make your decision to Select and Decline diff --git a/src/routes/PositionDetails/components/LatestInterview/index.jsx b/src/routes/PositionDetails/components/LatestInterview/index.jsx index de78b88b..de1fb2d9 100644 --- a/src/routes/PositionDetails/components/LatestInterview/index.jsx +++ b/src/routes/PositionDetails/components/LatestInterview/index.jsx @@ -6,7 +6,7 @@ import React from "react"; import PT from "prop-types"; import "./styles.module.scss"; -import { formatDate } from "utils/format"; +import { formatInterviewDate } from "utils/format"; function LatestInterview({ interviews }) { if (!interviews || !interviews.length) { @@ -19,7 +19,7 @@ function LatestInterview({ interviews }) { <>

Interview Round {latestInterview.round}

{latestInterview.status}

-

{formatDate(latestInterview.startTimestamp)}

+

{formatInterviewDate(latestInterview.startTimestamp)}

); } diff --git a/src/routes/PositionDetails/components/PositionCandidates/index.jsx b/src/routes/PositionDetails/components/PositionCandidates/index.jsx index 61cd6f98..cafbea79 100644 --- a/src/routes/PositionDetails/components/PositionCandidates/index.jsx +++ b/src/routes/PositionDetails/components/PositionCandidates/index.jsx @@ -200,7 +200,7 @@ const PositionCandidates = ({ position, statusFilterKey, updateCandidate }) => { /> {filteredCandidates.length === 0 && ( -
No {statusFilter.title}
+
{statusFilter.noCandidateMessage}
)} {filteredCandidates.length > 0 && (
diff --git a/src/routes/PositionDetails/components/PrevInterviewItem/index.jsx b/src/routes/PositionDetails/components/PrevInterviewItem/index.jsx index 58d6adc4..75c242f8 100644 --- a/src/routes/PositionDetails/components/PrevInterviewItem/index.jsx +++ b/src/routes/PositionDetails/components/PrevInterviewItem/index.jsx @@ -5,7 +5,7 @@ */ import React from "react"; import PT from "prop-types"; -import { formatDate } from "utils/format"; +import { formatInterviewDate } from "utils/format"; import Accordion from "components/Accordion"; import "./styles.module.scss"; @@ -15,7 +15,7 @@ function PrevInterviewItem(props) { return (
    diff --git a/src/routes/PositionDetails/components/SelectCandidatePopup/index.jsx b/src/routes/PositionDetails/components/SelectCandidatePopup/index.jsx index c2bf6c14..1000066a 100644 --- a/src/routes/PositionDetails/components/SelectCandidatePopup/index.jsx +++ b/src/routes/PositionDetails/components/SelectCandidatePopup/index.jsx @@ -70,13 +70,13 @@ const SelectCandidatePopup = ({ ) : ( <>

    - You have selected this applicant - you want this member on your + You have selected this candidate - you want this member on your team! What happens next:

    1. Upon confirmation, Topcoder will confirm the arrangement with - the selected member + the selected candidate
    2. A Topcoder Rep will contact you with details on the work diff --git a/src/styles/main.module.scss b/src/styles/main.module.scss index 84a0cbc3..d5fa41ba 100644 --- a/src/styles/main.module.scss +++ b/src/styles/main.module.scss @@ -5,4 +5,7 @@ .topcoder-micro-frontends-teams-app { @include font-roboto; color: #2a2a2a; + svg { + pointer-events: none; + } } diff --git a/src/utils/format.js b/src/utils/format.js index 0e1801b7..e2eb8991 100644 --- a/src/utils/format.js +++ b/src/utils/format.js @@ -5,7 +5,7 @@ import _ from "lodash"; import { RATE_TYPE } from "constants"; import { EMAIL_REQUEST_EXTENSION, CONNECT_WEBSITE_URL } from "../../config"; import moment from "moment"; -import { DAY_FORMAT } from "constants/"; +import { DAY_FORMAT, DATE_WITH_TIME_FORMAT } from "constants/"; /** * Format URL to the project (team) in Connect App. @@ -233,11 +233,11 @@ export const formatDateRange = (startDate, endDate) => { * Format date * * @param {string|Date|moment.Moment} date date - * + * @param {string} format date/time format * @returns {string} formatted date range */ -export const formatDate = (date) => { - const dateStr = date ? moment(date).format(DAY_FORMAT) : ""; +export const formatDate = (date, format = DAY_FORMAT) => { + const dateStr = date ? moment(date).format(format) : ""; if (!dateStr) { return "TBD"; @@ -246,6 +246,16 @@ export const formatDate = (date) => { return `${dateStr}`; }; +/** + * Format interview date/time. + * + * @param {string|Date|moment.Moment} date date + * @returns {string} formatted date + */ +export const formatInterviewDate = (date) => { + return formatDate(date, DATE_WITH_TIME_FORMAT); +}; + /** * Format page title to show in the browser header. *