From abc831ee7ccadf2e8db4fdf92f959de0186c16af Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 27 Apr 2020 19:23:17 +0300 Subject: [PATCH 01/39] Fix for #4286 --- .../challenge-detail/Specification/index.jsx | 31 ++++--------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/src/shared/components/challenge-detail/Specification/index.jsx b/src/shared/components/challenge-detail/Specification/index.jsx index 3f425545c8..5c9af5d04a 100644 --- a/src/shared/components/challenge-detail/Specification/index.jsx +++ b/src/shared/components/challenge-detail/Specification/index.jsx @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* Component renders challenge details and specifications */ @@ -468,41 +469,21 @@ export default function ChallengeDetailsView(props) { ) : (

- Topcoder will compensate members in accordance with our - standard payment policies, unless otherwise specified in this - challenge. For information on payment policies, setting up your - profile to receive payments, and general payment questions, - please refer to + Topcoder will compensate members in accordance with our standard payment policies, unless + otherwise specified in this challenge. For information on payment policies, setting up your profile to + receive payments, and general payment questions, please refer to ‌ - https://www.topcoder.com/thrive/articles/Payment%20Policies%20and%20Instructions - + Payment Policies and Instructions + .

) } -
-

- Reliability Rating and Bonus -

-

- For challenges that have a reliability bonus, the bonus depends - on the reliability rating at the moment of registration for that - project. A participant with no previous projects is considered to - have no reliability rating, and therefore gets no bonus. - Reliability bonus does not apply to Digital Run winnings. Since - reliability rating is based on the past 15 projects, it can only - have 15 discrete values. -
- - Read more. - -

-
Date: Tue, 28 Apr 2020 10:55:09 +0300 Subject: [PATCH 02/39] Fixes for #3972 --- src/shared/routes/Topcoder/Routes.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/routes/Topcoder/Routes.jsx b/src/shared/routes/Topcoder/Routes.jsx index eca52ee957..3df86d9ebb 100644 --- a/src/shared/routes/Topcoder/Routes.jsx +++ b/src/shared/routes/Topcoder/Routes.jsx @@ -117,7 +117,7 @@ export default function Topcoder() { { From bdd4fd5d0c25db683239eb36459b5c856121d100 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Tue, 28 Apr 2020 12:19:43 +0300 Subject: [PATCH 03/39] Fix addon for #3972 --- src/shared/routes/Topcoder/Routes.jsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/shared/routes/Topcoder/Routes.jsx b/src/shared/routes/Topcoder/Routes.jsx index 3df86d9ebb..0fb17a5b1a 100644 --- a/src/shared/routes/Topcoder/Routes.jsx +++ b/src/shared/routes/Topcoder/Routes.jsx @@ -117,12 +117,21 @@ export default function Topcoder() { { if (_.isEmpty(data.entries.items)) return ; - const id = data.entries.matches[0].items[0]; + let id = data.entries.matches[0].items[0]; + if (data.entries.matches[0].total !== 1) { + // more than 1 match. we need to try find best + const mId = _.findKey( + data.entries.items, + // eslint-disable-next-line max-len + o => o.fields.title.toLocaleLowerCase() === articleTitle.toLocaleLowerCase(), + ); + id = mId || id; + } const { externalArticle, contentUrl } = data.entries.items[id].fields; if (externalArticle && contentUrl && isomorphy.isClientSide()) { window.location.href = contentUrl; From 13cc53817045b7c1bc15d76e3dff60e00e272e02 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Tue, 28 Apr 2020 13:36:11 +0300 Subject: [PATCH 04/39] Fix for #3960 --- .../Contentful/SearchBar/SearchBar.jsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/shared/components/Contentful/SearchBar/SearchBar.jsx b/src/shared/components/Contentful/SearchBar/SearchBar.jsx index 3e3c53b58a..371118f87b 100644 --- a/src/shared/components/Contentful/SearchBar/SearchBar.jsx +++ b/src/shared/components/Contentful/SearchBar/SearchBar.jsx @@ -55,6 +55,7 @@ export class SearchBarInner extends Component { this.getDropdownPopup = this.getDropdownPopup.bind(this); this.getSuggestionList = this.getSuggestionList.bind(this); this.handleSearchChange = this.handleSearchChange.bind(this); + this.handleClickOutside = this.handleClickOutside.bind(this); // using debounce to avoid processing or requesting too much this.updateSuggestionListWithNewSearch = _.debounce( this.updateSuggestionListWithNewSearch.bind(this), 400, @@ -66,6 +67,10 @@ export class SearchBarInner extends Component { this.apiService = getService({ spaceName: 'EDU' }); } + componentWillUnmount() { + document.removeEventListener('mousedown', this.handleClickOutside); + } + /** * Set the search field ref */ @@ -317,6 +322,13 @@ export class SearchBarInner extends Component { )); } + handleClickOutside(e) { + if (this.popupSearchResultRef && !this.popupSearchResultRef.contains(e.target)) { + this.setState({ isShowSuggestion: false }); + document.removeEventListener('mousedown', this.handleClickOutside); + } + } + /** * Update size of popup search result */ @@ -453,14 +465,10 @@ export class SearchBarInner extends Component { ref={this.setSearchFieldRef} type="text" placeholder="Search..." - onBlur={() => { - _.delay(() => { - this.setState({ isShowSuggestion: false }); - }, 100); - }} onFocus={(e) => { this.updateSuggestionListWithNewSearch(e.target.value); this.setState({ isShowSuggestion: true, isShowFilterPopup: false }); + document.addEventListener('mousedown', this.handleClickOutside); }} onChange={this.handleSearchChange} /> From 4b8016abee5c3ecaeb8ad937e8c2d6e1110f81ff Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Wed, 29 Apr 2020 17:25:05 +0300 Subject: [PATCH 05/39] Implement #4050 --- .../ChallengeHistoryModal/index.jsx | 192 ++++++++++------ .../ChallengeHistoryModal/styles.scss | 207 +++++++++++------- 2 files changed, 261 insertions(+), 138 deletions(-) diff --git a/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx b/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx index fd8f7deb99..7fea82efdb 100644 --- a/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx +++ b/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx @@ -1,77 +1,147 @@ -import React from 'react'; -import { Modal, PrimaryButton } from 'topcoder-react-ui-kit'; +import React, { Component } from 'react'; +import { Modal } from 'topcoder-react-ui-kit'; import PT from 'prop-types'; import LoadingIndicator from 'components/LoadingIndicator'; import { config } from 'topcoder-react-utils'; +import cn from 'classnames'; +import _ from 'lodash'; import theme from './styles.scss'; import PodiumSpot from '../PodiumSpot'; +class ChallengeHistoryModal extends Component { + constructor(props) { + super(props); -function ChallengeHistoryModal({ - challenges, - competitor, - onCancel, - loading, - isCopilot, - isAlgo, -}) { - return ( - -

- Completed Challenges History -

-
- -
-
-
- Challenge Name -
- { - !isCopilot ? ( -
Placement
- ) : null - } -
- TCO Points + this.state = { + sortParam: { + order: '', + field: '', + }, + }; + } + + render() { + const { + challenges, + competitor, + onCancel, + loading, + isCopilot, + isAlgo, + } = this.props; + const { sortParam } = this.state; + const challengesOrdered = _.orderBy(challenges, [sortParam.field], [sortParam.order]); + + return ( + +

+ Completed Challenges History +

+
+
-
-
- { - challenges.map(challenge => ( -
- + + + + { !isCopilot ? ( -
{challenge.place}
+ ) : null } -
- {challenge.points} -
- - )) + + + + + { + challengesOrdered.map(challenge => ( + + + { + !isCopilot ? ( + + ) : null + } + + + )) + } + +
Challenge Name +
+ Placement + +
+
+
+ TCO Points + +
+
+ + {challenge.challenge_name || challenge.challenge_id} + + {challenge.place} + {challenge.points} +
+ { + loading ? : null } -
- { - loading ? : null - } -
- - Close - -
- - ); +
+ +
+ + ); + } } const CHALLENGES_TYPE = PT.arrayOf(PT.shape({ diff --git a/src/shared/components/Leaderboard/ChallengeHistoryModal/styles.scss b/src/shared/components/Leaderboard/ChallengeHistoryModal/styles.scss index 6ef72af9aa..a0eb6e36df 100644 --- a/src/shared/components/Leaderboard/ChallengeHistoryModal/styles.scss +++ b/src/shared/components/Leaderboard/ChallengeHistoryModal/styles.scss @@ -1,75 +1,60 @@ @import "~styles/mixins"; -.col-1 { - padding: 0 30px; - width: 55%; - - .challenge-name { - color: $tc-gray-90; - font-weight: 700; - } - - @media (max-width: 768px) { - padding-left: 2 * $base-unit; - } -} - -.col-2 { - width: 22.5%; - text-align: center; -} - -.col-3 { - color: $tc-gray-40; - width: 22.5%; - text-align: center; -} - -.body { - border: $tc-gray-10 1px solid; -} - -.buttons { - margin-top: 10px; - display: flex; - flex-direction: row; - justify-content: center; -} +$light-gray: #d4d4d4; .container { @include roboto-regular; color: $tc-gray-50; background: $tc-white; - border-radius: 3 * $corner-radius 3 * $corner-radius; + border-radius: 10px; top: 50%; width: 70%; max-height: 90%; overflow-y: auto; + padding: 80px 78px; @media (max-width: 768px) { width: 80%; } - h1 { - color: $tc-gray-80; + h3 { + color: #1e94a3; + font-family: BarlowCondensed, sans-serif; + font-size: 34px; + font-weight: 500; + line-height: 38px; text-align: center; - font-size: 22px; - font-weight: 400; - margin-bottom: 10px; + margin-bottom: 60px; + text-transform: uppercase; @media (max-width: 768px) { - font-size: 4vw; + font-size: 31px !important; + font-weight: 500 !important; + line-height: 33px !important; + margin-bottom: 30px; } } } +.overlay { + background-color: #2a2a2a; + opacity: 0.95; + border: none; + height: 100%; + left: 0; + outline: none; + position: fixed; + top: 0; + width: 100%; + z-index: 998; +} + .podium-spot-wrapper { text-align: center; display: flex; justify-content: center; - margin-top: 15px; - margin-bottom: 1em; + margin-bottom: 50px; > div > span { height: 128px; @@ -86,51 +71,119 @@ } } -.head { - background: $tc-gray-neutral-light; - border: $tc-gray-10 1px solid; - border-bottom: none; - color: $tc-gray-40; - font-weight: 400; - font-size: 13px; - line-height: 15px; - padding: 12.5px 0; +.history-table { + width: 100%; + margin-bottom: 62px; + + thead { + th { + color: #2a2a2a; + font-family: Roboto, sans-serif; + font-size: 14px; + font-weight: 500; + letter-spacing: 0.5px; + line-height: 18px; + text-align: left; + text-transform: uppercase; + border-bottom: 1px solid #d4d4d4; + padding-bottom: 15px; + } + } + + .row { + border-bottom: 1px solid #d4d4d4; + + .name { + .link { + color: #0d61bf; + font-size: 14px; + font-weight: 400; + line-height: 51px; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + } + + .placement { + color: #2a2a2a; + font-size: 14px; + font-weight: 500; + line-height: 51px; + } + + .points { + color: #2a2a2a; + font-size: 14px; + font-weight: 400; + line-height: 51px; + } + } +} + +.buttons { + margin-top: 10px; display: flex; + flex-direction: row; + justify-content: center; - @media (max-width: 768px) { - font-size: 3vw; - padding: 2 * $base-unit 0; + .close-btn { + color: #fafafb; + font-family: Roboto, sans-serif; + font-size: 14px; + font-weight: 700; + letter-spacing: 0.8px; + line-height: 40px; + background-color: #137d60; + border-radius: 20px; + border: none; + text-transform: uppercase; + padding: 0 20px; + + &:hover { + background-color: #0ab88a !important; + box-shadow: 0 1px 5px 0 rgba(0, 0, 0, 0.2); + } } } -.row { +.header-table-content { display: flex; align-items: center; - line-height: 40px; - color: $tc-gray-70; - font-size: 15px; - border-bottom: 1px solid $tc-gray-10; +} - @media (max-width: 768px) { - font-size: 3vw; - } +.sort-container { + display: flex; + flex-direction: column; + margin-left: 5px; + padding: 0; + border: none; + outline: none; + background: transparent; } -.title { - color: $tc-gray-50; - font-size: 13px; - line-height: 15px; - font-weight: 500; +.sort-container > div { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; +} + +.sort-up { + border-bottom: 4px solid $light-gray; + margin-bottom: 2px; + + &.active { + border-bottom: 4px solid $tc-black; + } } -.link { - color: #0681ff; - display: block; - line-height: 1.5; +.sort-down { + border-top: 4px solid $light-gray; - &:visited, - &:hover, - &:active { - color: #0681ff; + &.active { + border-top: 4px solid $tc-black; } } From 2fd6475d02ca264a79ce97da8c77ea034a1b0518 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 30 Apr 2020 11:50:40 +0300 Subject: [PATCH 06/39] Implements #4058 --- .../components/NewsletterArchive/index.jsx | 126 +++++++++++++++--- .../components/NewsletterArchive/style.scss | 92 +++++++++++++ 2 files changed, 196 insertions(+), 22 deletions(-) diff --git a/src/shared/components/NewsletterArchive/index.jsx b/src/shared/components/NewsletterArchive/index.jsx index f38a745761..7e4c9cc089 100644 --- a/src/shared/components/NewsletterArchive/index.jsx +++ b/src/shared/components/NewsletterArchive/index.jsx @@ -1,36 +1,118 @@ import _ from 'lodash'; import moment from 'moment'; -import React, { Fragment } from 'react'; +import React, { Component } from 'react'; import PT from 'prop-types'; import { themr } from 'react-css-super-themr'; +import cn from 'classnames'; import defaultStyle from './style.scss'; /* Date/time format to use in the link. */ -const FORMAT = 'MMM DD, HH:mm'; +const FORMAT = 'MMM DD, YYYY'; -function NewsletterArchive({ - archive, -}) { -// console.log(archive) - return _.map( - archive.campaigns, - (link, indx) => ( - - - {link.settings.title} - - Sent: {moment(link.send_time).format(FORMAT)} - - ), - ); -} +class NewsletterArchive extends Component { + constructor(props) { + super(props); -NewsletterArchive.defaultProps = { - token: null, -}; + this.state = { + sortParam: { + order: '', + field: '', + }, + }; + } + + render() { + const { + archive, + } = this.props; + const { sortParam } = this.state; + const archiveOrdered = _.orderBy(archive.campaigns, [sortParam.field], [sortParam.order]); + + return ( + + + + + + + + + + { + archiveOrdered.map((archiveItem, indx) => ( + + + + + + )) + } + +
Item +
+ NEWSLETTER + +
+
+
+ SEND DATE + +
+
{indx + 1} + + {archiveItem.settings.title} + + + {moment(archiveItem.send_time).format(FORMAT)} +
+ ); + } +} NewsletterArchive.propTypes = { - archive: PT.shape().isRequired, + archive: PT.arrayOf().isRequired, }; export default themr('NewsletterArchive', defaultStyle)(NewsletterArchive); diff --git a/src/shared/components/NewsletterArchive/style.scss b/src/shared/components/NewsletterArchive/style.scss index e55b8bff9d..6c0292052c 100644 --- a/src/shared/components/NewsletterArchive/style.scss +++ b/src/shared/components/NewsletterArchive/style.scss @@ -1,5 +1,7 @@ @import "~styles/mixins"; +$light-gray: #d4d4d4; + .archive-link { display: block; font-size: 15px; @@ -20,3 +22,93 @@ margin-bottom: 10px; display: block; } + +.history-table { + width: 100%; + margin-bottom: 62px; + + thead { + th { + color: #2a2a2a; + font-family: Roboto, sans-serif; + font-size: 14px; + font-weight: 500; + letter-spacing: 0.5px; + line-height: 18px; + text-align: left; + text-transform: uppercase; + border-bottom: 1px solid #d4d4d4; + padding-bottom: 15px; + } + } + + .row { + border-bottom: 1px solid #d4d4d4; + + td { + padding: 0; + border-bottom: 1px solid #d4d4d4; + } + + .name { + .archive-link { + color: #0d61bf; + font-size: 14px; + font-weight: 500; + line-height: 51px; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + } + + .index, + .sent-date { + color: #2a2a2a; + font-size: 14px; + font-weight: 400; + line-height: 51px; + } + } +} + +.header-table-content { + display: flex; + align-items: center; +} + +.sort-container { + display: flex; + flex-direction: column; + margin-left: 5px; + padding: 0; + border: none; + outline: none; + background: transparent; +} + +.sort-container > div { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; +} + +.sort-up { + border-bottom: 4px solid $light-gray; + margin-bottom: 2px; + + &.active { + border-bottom: 4px solid $tc-black; + } +} + +.sort-down { + border-top: 4px solid $light-gray; + + &.active { + border-top: 4px solid $tc-black; + } +} From 6dce16fcb253f621a9b2a2f2b06215e63da54f40 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 30 Apr 2020 15:07:45 +0300 Subject: [PATCH 07/39] Fix TCO Points to Points --- .../components/Leaderboard/ChallengeHistoryModal/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx b/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx index 7fea82efdb..883ebf67ad 100644 --- a/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx +++ b/src/shared/components/Leaderboard/ChallengeHistoryModal/index.jsx @@ -82,7 +82,7 @@ class ChallengeHistoryModal extends Component { }
- TCO Points + Points
About Community Changelog Talk to Sales + Terms
From 2e2a0edc8290ee8486ac4423f4a89fa00f4f4c78 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 7 May 2020 15:23:22 +0300 Subject: [PATCH 11/39] Implement #4165 --- .../Settings/Preferences/Email/index.jsx | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/shared/components/Settings/Preferences/Email/index.jsx b/src/shared/components/Settings/Preferences/Email/index.jsx index b8eae9fa7b..cbe54d4f12 100644 --- a/src/shared/components/Settings/Preferences/Email/index.jsx +++ b/src/shared/components/Settings/Preferences/Email/index.jsx @@ -1,15 +1,23 @@ /** * Email Preferences component. */ -import { debounce, isEqual } from 'lodash'; +import { debounce, isEqual, map } from 'lodash'; import React from 'react'; import PT from 'prop-types'; import ConsentComponent from 'components/Settings/ConsentComponent'; +import ToggleableItem from 'components/Settings/ToggleableItem'; import './styles.scss'; const SAVE_DELAY = 1000; +const newsletters = [ + { + id: 'TOPCODER_NL_GEN', + name: 'General Newsletter', + desc: 'News summary from Topcoder', + }, +]; export default class EmailPreferences extends ConsentComponent { saveEmailPreferences = debounce(() => { @@ -77,11 +85,33 @@ export default class EmailPreferences extends ConsentComponent { } render() { + const { profileState: { emailPreferences } } = this.props; return (

E-Mail Preferences

+
+ { + this.shouldRenderConsent() && this.renderConsent() + } + { + map(newsletters, (newsletter) => { + const checked = emailPreferences ? emailPreferences[newsletter.id] : false; + return ( + this.onHandleChange(newsletter.id, e.target.checked)} + /> + ); + }) + } +
); } From 7cf1c6d135ed2413870a296b7dbbe27dba45edff Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 7 May 2020 17:17:54 +0300 Subject: [PATCH 12/39] Implements #4354 --- .../components/Contentful/Article/Article.jsx | 4 +- .../Contentful/ArticleCard/ArticleCard.jsx | 2 +- .../Contentful/SearchBar/SearchBar.jsx | 10 ++-- .../challenge-detail/ThriveArticles/index.jsx | 2 +- src/shared/routes/Topcoder/Routes.jsx | 52 +++++++++++++++---- 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/src/shared/components/Contentful/Article/Article.jsx b/src/shared/components/Contentful/Article/Article.jsx index c0ef0eae71..809f7c909c 100644 --- a/src/shared/components/Contentful/Article/Article.jsx +++ b/src/shared/components/Contentful/Article/Article.jsx @@ -250,7 +250,7 @@ export default class Article extends React.Component { {subData.entries.items[rec.sys.id].fields.title} ) : ( - + {subData.entries.items[rec.sys.id].fields.title} ) @@ -278,7 +278,7 @@ export default class Article extends React.Component { Read More ) : ( - + Read More ) diff --git a/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx b/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx index 59a6e794bd..d50230a139 100644 --- a/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx +++ b/src/shared/components/Contentful/ArticleCard/ArticleCard.jsx @@ -67,7 +67,7 @@ class ArticleCard extends React.Component { // determine if article cards will redirect to external link or article details page const articlePageUrl = article.externalArticle && article.contentUrl ? article.contentUrl - : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${article.title}`; + : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${article.slug || article.title}`; const articlePageTarget = article.externalArticle && article.contentUrl ? '_blank' : '_self'; diff --git a/src/shared/components/Contentful/SearchBar/SearchBar.jsx b/src/shared/components/Contentful/SearchBar/SearchBar.jsx index 371118f87b..9444c56777 100644 --- a/src/shared/components/Contentful/SearchBar/SearchBar.jsx +++ b/src/shared/components/Contentful/SearchBar/SearchBar.jsx @@ -169,13 +169,13 @@ export class SearchBarInner extends Component { className={theme['group-cell']} onClick={() => { window.location.href = (item.externalArticle && item.contentUrl) - ? item.contentUrl : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${item.title}`; + ? item.contentUrl : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${item.slug || item.title}`; }} onKeyPress={_.noop} > { e.nativeEvent.stopImmediatePropagation(); @@ -220,13 +220,13 @@ export class SearchBarInner extends Component { className={theme['group-cell']} onClick={() => { window.location.href = (item.externalArticle && item.contentUrl) - ? item.contentUrl : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${item.title}`; + ? item.contentUrl : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${item.slug || item.title}`; }} onKeyPress={_.noop} > { e.nativeEvent.stopImmediatePropagation(); @@ -272,7 +272,7 @@ export class SearchBarInner extends Component { > diff --git a/src/shared/components/challenge-detail/ThriveArticles/index.jsx b/src/shared/components/challenge-detail/ThriveArticles/index.jsx index e2f3013320..05407eab2d 100644 --- a/src/shared/components/challenge-detail/ThriveArticles/index.jsx +++ b/src/shared/components/challenge-detail/ThriveArticles/index.jsx @@ -20,7 +20,7 @@ export default function ThriveArticles({ articles }) { const getPageUrl = article => (article.externalArticle && article.contentUrl ? article.contentUrl - : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${article.title}`); + : `${config.TC_EDU_BASE_PATH}${config.TC_EDU_ARTICLES_PATH}/${article.slug || article.title}`); const items = map(articles, (a, idx) => (
diff --git a/src/shared/routes/Topcoder/Routes.jsx b/src/shared/routes/Topcoder/Routes.jsx index 0fb17a5b1a..46fa2b6331 100644 --- a/src/shared/routes/Topcoder/Routes.jsx +++ b/src/shared/routes/Topcoder/Routes.jsx @@ -117,21 +117,53 @@ export default function Topcoder() { { - if (_.isEmpty(data.entries.items)) return ; - let id = data.entries.matches[0].items[0]; - if (data.entries.matches[0].total !== 1) { - // more than 1 match. we need to try find best - const mId = _.findKey( - data.entries.items, - // eslint-disable-next-line max-len - o => o.fields.title.toLocaleLowerCase() === articleTitle.toLocaleLowerCase(), + if (_.isEmpty(data.entries.items)) { + // try search by title match + // this legacy support should be deprecated when all + // Thrive links switched to hypens, someday + return ( + { + if (_.isEmpty(dataTitle.entries.items)) return ; + let id = dataTitle.entries.matches[0].items[0]; + if (dataTitle.entries.matches[0].total !== 1) { + // more than 1 match. we need to try find best + const mId = _.findKey( + dataTitle.entries.items, + // eslint-disable-next-line max-len + o => o.fields.title.toLocaleLowerCase() === articleTitle.toLocaleLowerCase(), + ); + id = mId || id; + } + const { + externalArticle, + contentUrl, + } = dataTitle.entries.items[id].fields; + if (externalArticle && contentUrl && isomorphy.isClientSide()) { + window.location.href = contentUrl; + return null; + } + return ( +
+ ); + }} + renderPlaceholder={LoadingIndicator} + /> ); - id = mId || id; } + const id = data.entries.matches[0].items[0]; const { externalArticle, contentUrl } = data.entries.items[id].fields; if (externalArticle && contentUrl && isomorphy.isClientSide()) { window.location.href = contentUrl; From 10774e0553b3662994d37103c815a48b6d613367 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 8 May 2020 10:48:10 +0300 Subject: [PATCH 13/39] Revert "Implement #4165" This reverts commit 2e2a0edc8290ee8486ac4423f4a89fa00f4f4c78. --- .../Settings/Preferences/Email/index.jsx | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/src/shared/components/Settings/Preferences/Email/index.jsx b/src/shared/components/Settings/Preferences/Email/index.jsx index cbe54d4f12..b8eae9fa7b 100644 --- a/src/shared/components/Settings/Preferences/Email/index.jsx +++ b/src/shared/components/Settings/Preferences/Email/index.jsx @@ -1,23 +1,15 @@ /** * Email Preferences component. */ -import { debounce, isEqual, map } from 'lodash'; +import { debounce, isEqual } from 'lodash'; import React from 'react'; import PT from 'prop-types'; import ConsentComponent from 'components/Settings/ConsentComponent'; -import ToggleableItem from 'components/Settings/ToggleableItem'; import './styles.scss'; const SAVE_DELAY = 1000; -const newsletters = [ - { - id: 'TOPCODER_NL_GEN', - name: 'General Newsletter', - desc: 'News summary from Topcoder', - }, -]; export default class EmailPreferences extends ConsentComponent { saveEmailPreferences = debounce(() => { @@ -85,33 +77,11 @@ export default class EmailPreferences extends ConsentComponent { } render() { - const { profileState: { emailPreferences } } = this.props; return (

E-Mail Preferences

-
- { - this.shouldRenderConsent() && this.renderConsent() - } - { - map(newsletters, (newsletter) => { - const checked = emailPreferences ? emailPreferences[newsletter.id] : false; - return ( - this.onHandleChange(newsletter.id, e.target.checked)} - /> - ); - }) - } -
); } From 4b0957bb526a8d691fc7abe0c11b5978ba7752dd Mon Sep 17 00:00:00 2001 From: Matthew Twomey Date: Sun, 17 May 2020 17:48:38 -0500 Subject: [PATCH 14/39] Change cdn to cname --- config/production.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/production.js b/config/production.js index 4b23f3f9a5..38f339d39c 100644 --- a/config/production.js +++ b/config/production.js @@ -9,7 +9,7 @@ module.exports = { DOMAIN: 'topcoder.auth0.com', }, CDN: { - PUBLIC: 'https://dlxczxztayxv6.cloudfront.net', + PUBLIC: 'https://community-app-cdn.topcoder.com', }, COOKIES: { MAXAGE: 7, From 44b3571e366c9a1b6e90dd629e6c6eaaf55bdbe0 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:09:20 +0530 Subject: [PATCH 15/39] ci: deploying on qa env --- .circleci/config.yml | 35 ++++++++++++- deploy.sh | 119 ------------------------------------------- 2 files changed, 34 insertions(+), 120 deletions(-) delete mode 100755 deploy.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index c44c1dd181..9a8a81fdbc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,7 +91,33 @@ jobs: source awsenvconf source buildenvvar ./master_deploy.sh -d ECS -e DEV -t latest -s test_communityapp_taskvar -i communityapp - + # Build & Deploy against development backend + "build-qa": + <<: *defaults + steps: + # Initialization. + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + # Restoration of node_modules from cache. + - restore_cache: *restore_cache_settings_for_build + # Build of Docker image. + - run: + name: "configuring environment" + command: | + ./awsconfiguration.sh DEV + ./buildenv.sh -e DEV -b qa_communityapp_buildvar,qa_communityapp_deployvar + - run: *build_docker_image + # Caching node modules. + - save_cache: *save_cache_settings + # Deployment. + - deploy: + name: Running MasterScript + command: | + source awsenvconf + source buildenvvar + ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp # Build & Deploy against prod api backend "build-prod-beta": <<: *defaults @@ -211,6 +237,13 @@ workflows: only: - develop - feature-contentful + # This is QA automation env + - "build-qa": + context: org-global + filters: + branches: + only: + - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": context : org-global diff --git a/deploy.sh b/deploy.sh deleted file mode 100755 index 4afa6d464a..0000000000 --- a/deploy.sh +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# more bash-friendly output for jq -JQ="jq --raw-output --exit-status" - -ENV=$1 -TAG=$2 -AWS_REGION=$(eval "echo \$${ENV}_AWS_REGION") -AWS_ECS_CLUSTER=$(eval "echo \$${ENV}_AWS_ECS_CLUSTER") -ACCOUNT_ID=$(eval "echo \$${ENV}_AWS_ACCOUNT_ID") - -AWS_ECS_SERVICE=$(eval "echo \$${ENV}_AWS_ECS_SERVICE") -AWS_REPOSITORY=$(eval "echo \$${ENV}_AWS_REPOSITORY") -AWS_ECS_TASK_FAMILY=$(eval "echo \$${ENV}_AWS_ECS_TASK_FAMILY") - -DD_SERVICE_NAME=$(eval "echo \$${ENV}_DD_SERVICE_NAME") -DD_TRACE_AGENT_HOSTNAME=$(eval "echo \$${ENV}_DD_TRACE_AGENT_HOSTNAME") - -echo $AWS_ECS_SERVICE -configure_aws_cli() { - AWS_ACCESS_KEY_ID=$(eval "echo \$${ENV}_AWS_ACCESS_KEY_ID") - AWS_SECRET_ACCESS_KEY=$(eval "echo \$${ENV}_AWS_SECRET_ACCESS_KEY") - aws --version - aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID - aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY - aws configure set default.region $AWS_REGION - aws configure set default.output json - echo "Configured AWS CLI." -} - -deploy_cluster() { - make_task_def - register_definition - if [[ $(aws ecs update-service --cluster $AWS_ECS_CLUSTER --service $AWS_ECS_SERVICE --task-definition $revision | $JQ '.service.taskDefinition') != $revision ]]; then - echo "Error updating service." - return 1 - fi - - echo "Deployed!" - return 0 -} - -make_task_def(){ - task_template='[ - { - "name": "%s", - "image": "%s.dkr.ecr.%s.amazonaws.com/%s:%s", - "essential": true, - "memory": 1000, - "cpu": 100, - "environment": [ - { - "name": "NODE_CONFIG_ENV", - "value": "%s" - }, - { - "name": "DD_SERVICE_NAME", - "value": "%s" - }, - { - "name": "DD_TRACE_AGENT_HOSTNAME", - "value": "%s" - } - ], - "portMappings": [ - { - "hostPort": 0, - "containerPort": 3000, - "protocol": "tcp" - } - ], - "logConfiguration": { - "logDriver": "awslogs", - "options": { - "awslogs-group": "/aws/ecs/%s", - "awslogs-region": "%s", - "awslogs-stream-prefix": "%s" - } - } - } - ]' - - if [ "$ENV" = "PROD" ]; then - NODE_CONFIG_ENV=production - elif [ "$ENV" = "PRODBETA" ]; then - NODE_CONFIG_ENV=production - elif [ "$ENV" = "PRODSTAGING" ]; then - NODE_CONFIG_ENV=production - elif [ "$ENV" = "DEV" ]; then - NODE_CONFIG_ENV=development - elif [ "$ENV" = "TEST" ]; then - NODE_CONFIG_ENV=development - fi - - task_def=$(printf "$task_template" $AWS_ECS_CLUSTER $ACCOUNT_ID $AWS_REGION $AWS_REPOSITORY $TAG $NODE_CONFIG_ENV $DD_SERVICE_NAME $DD_TRACE_AGENT_HOSTNAME $AWS_ECS_CLUSTER $AWS_REGION $AWS_ECS_CLUSTER) - echo $task_def -} - -push_ecr_image() { - echo "Pushing Docker Image..." - eval $(aws ecr get-login --region $AWS_REGION --no-include-email) - docker push $ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/$AWS_REPOSITORY:$TAG - echo "Docker Image published." -} - -register_definition() { - if revision=$(aws ecs register-task-definition --container-definitions "$task_def" --family $AWS_ECS_TASK_FAMILY | $JQ '.taskDefinition.taskDefinitionArn'); then - echo "Revision: $revision" - else - echo "Failed to register task definition" - return 1 - fi -} - -configure_aws_cli -push_ecr_image -deploy_cluster - From 6cc126043566cc54327f1ccce714097bfd1dd10b Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:16:39 +0530 Subject: [PATCH 16/39] ci: fixed config file --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9a8a81fdbc..b4a25742b3 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -117,7 +117,7 @@ jobs: command: | source awsenvconf source buildenvvar - ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp + ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp # Build & Deploy against prod api backend "build-prod-beta": <<: *defaults From 11c2c27db3b5ffbe526ca5be8e230630a1f4865c Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:19:12 +0530 Subject: [PATCH 17/39] ci: fixed config file --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index b4a25742b3..6cb7214234 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -243,7 +243,7 @@ workflows: filters: branches: only: - - develop-on-qa-env + - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": context : org-global From 19d92653c98e0f59ba418e758ec7eaa55caf3e10 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:20:31 +0530 Subject: [PATCH 18/39] ci: fixed file format --- .circleci/config.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6cb7214234..69c860387a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -237,13 +237,6 @@ workflows: only: - develop - feature-contentful - # This is QA automation env - - "build-qa": - context: org-global - filters: - branches: - only: - - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": context : org-global From 4ec7b03399fd29dcdf6e1c9907dabf7bc995a74b Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:23:46 +0530 Subject: [PATCH 19/39] ci: fixing file --- .circleci/config.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 69c860387a..6cf568d4dd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -237,6 +237,13 @@ workflows: only: - develop - feature-contentful + # This is alternate dev env for parallel testing + - "build-qa": + context : org-global + filters: + branches: + only: + - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": context : org-global From 1a8aacb2185b47f0532727a22bb4aee59ec27832 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:29:00 +0530 Subject: [PATCH 20/39] ci: fixing file --- .circleci/config.yml | 58 +++++++++++++++++++++++--------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6cf568d4dd..82ba682730 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -91,33 +91,35 @@ jobs: source awsenvconf source buildenvvar ./master_deploy.sh -d ECS -e DEV -t latest -s test_communityapp_taskvar -i communityapp - # Build & Deploy against development backend - "build-qa": - <<: *defaults - steps: - # Initialization. - - checkout - - setup_remote_docker - - run: *install_dependency - - run: *install_deploysuite - # Restoration of node_modules from cache. - - restore_cache: *restore_cache_settings_for_build - # Build of Docker image. - - run: - name: "configuring environment" - command: | - ./awsconfiguration.sh DEV - ./buildenv.sh -e DEV -b qa_communityapp_buildvar,qa_communityapp_deployvar - - run: *build_docker_image - # Caching node modules. - - save_cache: *save_cache_settings - # Deployment. - - deploy: - name: Running MasterScript - command: | - source awsenvconf - source buildenvvar - ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp + + # Build & Deploy against testing backend + "build-qa": + <<: *defaults + steps: + # Initialization. + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + # Restoration of node_modules from cache. + - restore_cache: *restore_cache_settings_for_build + - run: + name: "configuring environment" + command: | + ./awsconfiguration.sh DEV + ./buildenv.sh -e DEV -b qa_communityapp_buildvar,qa_communityapp_deployvar + # Build of Docker image. + - run: *build_docker_image + # Caching node modules. + - save_cache: *save_cache_settings + # Deployment. + - deploy: + name: Running MasterScript + command: | + source awsenvconf + source buildenvvar + ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp + # Build & Deploy against prod api backend "build-prod-beta": <<: *defaults @@ -243,7 +245,7 @@ workflows: filters: branches: only: - - develop-on-qa-env + - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": context : org-global From 9c40ac57c77c3b851359775727a7c4873096fe66 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:31:46 +0530 Subject: [PATCH 21/39] ci: fixed config file --- .circleci/config.yml | 54 ++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 82ba682730..cc5753f9f0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -92,33 +92,33 @@ jobs: source buildenvvar ./master_deploy.sh -d ECS -e DEV -t latest -s test_communityapp_taskvar -i communityapp - # Build & Deploy against testing backend - "build-qa": - <<: *defaults - steps: - # Initialization. - - checkout - - setup_remote_docker - - run: *install_dependency - - run: *install_deploysuite - # Restoration of node_modules from cache. - - restore_cache: *restore_cache_settings_for_build - - run: - name: "configuring environment" - command: | - ./awsconfiguration.sh DEV - ./buildenv.sh -e DEV -b qa_communityapp_buildvar,qa_communityapp_deployvar - # Build of Docker image. - - run: *build_docker_image - # Caching node modules. - - save_cache: *save_cache_settings - # Deployment. - - deploy: - name: Running MasterScript - command: | - source awsenvconf - source buildenvvar - ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp + # Build & Deploy against testing backend + "build-qa": + <<: *defaults + steps: + # Initialization. + - checkout + - setup_remote_docker + - run: *install_dependency + - run: *install_deploysuite + # Restoration of node_modules from cache. + - restore_cache: *restore_cache_settings_for_build + - run: + name: "configuring environment" + command: | + ./awsconfiguration.sh DEV + ./buildenv.sh -e DEV -b qa_communityapp_buildvar,qa_communityapp_deployvar + # Build of Docker image. + - run: *build_docker_image + # Caching node modules. + - save_cache: *save_cache_settings + # Deployment. + - deploy: + name: Running MasterScript + command: | + source awsenvconf + source buildenvvar + ./master_deploy.sh -d ECS -e DEV -t latest -s qa_communityapp_taskvar -i communityapp # Build & Deploy against prod api backend "build-prod-beta": From 6999d78fb206be160b641132a70a8af05fb74aea Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Fri, 22 May 2020 17:34:21 +0530 Subject: [PATCH 22/39] ci: fixed file scheme --- .circleci/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index cc5753f9f0..2540011007 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -241,10 +241,10 @@ workflows: - feature-contentful # This is alternate dev env for parallel testing - "build-qa": - context : org-global - filters: - branches: - only: + context : org-global + filters: + branches: + only: - develop-on-qa-env # This is beta env for production soft releases - "build-prod-beta": From 52788d3ac3cda1e8532f53e82cba029bc8963e0a Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Tue, 26 May 2020 07:42:25 +0530 Subject: [PATCH 23/39] ci: disable SW and deploy on beta env --- .circleci/config.yml | 2 +- config/default.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2540011007..4d94bc4b3e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -252,7 +252,7 @@ workflows: filters: branches: only: - - develop + - hot-fix-disable-sw # This is stage env for production QA releases - "build-prod-staging": context : org-global diff --git a/config/default.js b/config/default.js index 7de679aec0..80ecfe7eea 100644 --- a/config/default.js +++ b/config/default.js @@ -57,7 +57,7 @@ module.exports = { /** * Disable PWA service worker. */ - DISABLE_SERVICE_WORKER: false, + DISABLE_SERVICE_WORKER: true, /* API token for logentries.com. The token below is just for local testing of * the setup. To override it use LOG_ENTRIES_TOKEN environment variable. */ From 97051bfc7cfc1fcd04a384873c6f119080988f80 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Tue, 26 May 2020 08:23:07 +0530 Subject: [PATCH 24/39] ci: deploying on beta --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4d94bc4b3e..2540011007 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -252,7 +252,7 @@ workflows: filters: branches: only: - - hot-fix-disable-sw + - develop # This is stage env for production QA releases - "build-prod-staging": context : org-global From c5b00ad6d9e5f28cd2d8fd57e5ed4a53bfe8586c Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Wed, 27 May 2020 15:07:51 +0530 Subject: [PATCH 25/39] ci: deploy only on dev and qa --- .circleci/config.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2540011007..796cd9694d 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -236,8 +236,7 @@ workflows: context : org-global filters: branches: - only: - - develop + only: - feature-contentful # This is alternate dev env for parallel testing - "build-qa": @@ -245,14 +244,14 @@ workflows: filters: branches: only: - - develop-on-qa-env + - develop # This is beta env for production soft releases - "build-prod-beta": context : org-global filters: branches: only: - - develop + - hot-fix # This is stage env for production QA releases - "build-prod-staging": context : org-global From c236857ad215717562faf8ead375c6ebe623da81 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 5 Jun 2020 12:33:54 +0300 Subject: [PATCH 26/39] Init TCO21 #4467 --- src/server/tc-communities/tco21/metadata.json | 20 +++++++ src/shared/actions/contentful.js | 5 +- .../Contentful/MenuLoader/index.jsx | 7 +-- src/shared/routes/Communities/Routes.jsx | 2 + .../routes/Communities/TCO21/Routes.jsx | 57 +++++++++++++++++++ src/shared/routes/Communities/TCO21/index.jsx | 32 +++++++++++ 6 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 src/server/tc-communities/tco21/metadata.json create mode 100644 src/shared/routes/Communities/TCO21/Routes.jsx create mode 100644 src/shared/routes/Communities/TCO21/index.jsx diff --git a/src/server/tc-communities/tco21/metadata.json b/src/server/tc-communities/tco21/metadata.json new file mode 100644 index 0000000000..fa22f3f373 --- /dev/null +++ b/src/server/tc-communities/tco21/metadata.json @@ -0,0 +1,20 @@ +{ + "challengeFilter": { + "tags": ["TCO", "TCO21"] + }, + "communityId": "tco21", + "communityName": "TCO21", + "groupIds": [], + "hideSearch": true, + "logos": [{ + "img": "/community-app-assets/themes/tco/TCO21.svg", + "url": "https://tco21.topcoder.com" + }], + "menuItems": [{ + "navigationMenu": "3UBKZJ0qMHAkqrobue73NB" + }], + "newsFeed": "http://www.topcoder.com/feed", + "subdomains": ["tco21"], + "description": "2021 Topcoder Open. The Ultimate Programming & Design Tournament", + "image": "tco21.jpg" +} diff --git a/src/shared/actions/contentful.js b/src/shared/actions/contentful.js index 2c8f9c3547..153e9d438a 100644 --- a/src/shared/actions/contentful.js +++ b/src/shared/actions/contentful.js @@ -181,12 +181,13 @@ async function getMenuDone(menuProps) { cR2.fields.childRoutes, cR3 => service.getEntry(cR3.sys.id).then( async (c3) => { - const sI3 = menuItemBuilder(url2, c3); + const url3 = urlTarget(url2, cR2); + const sI3 = menuItemBuilder(url3, c3); if (c3.fields.childRoutes) { sI3.subMenu = await Promise.all(_.map( c3.fields.childRoutes, cR4 => service.getEntry(cR4.sys.id).then( - c4 => menuItemBuilder(urlTarget(url2, c3), c4), + c4 => menuItemBuilder(url3, c4), ), )); } diff --git a/src/shared/containers/Contentful/MenuLoader/index.jsx b/src/shared/containers/Contentful/MenuLoader/index.jsx index 2132823f63..cd79399c4b 100644 --- a/src/shared/containers/Contentful/MenuLoader/index.jsx +++ b/src/shared/containers/Contentful/MenuLoader/index.jsx @@ -79,11 +79,6 @@ class MenuLoaderContainer extends React.Component { const { TopNav, LoginNav } = require('navigation-component'); const logoToUse = !_.isEmpty(menuLogo) ? menu logo : ; const menuTheme = fields.theme.split('- '); - const comboMenu = _.flatten(_.map(menu, menuItem => menuItem.subMenu)); - // This is a hack fix that should be removed when possible! - // Its orifing is in the https://github.com/topcoder-platform/navigation-component module - // which breaks if there is NOT an menu item with id = `community` - comboMenu[0].id = 'community'; let normalizedProfile = auth.profile && _.clone(auth.profile); if (auth.profile) { normalizedProfile.photoURL = (_.has(auth.profile, 'photoURL') && auth.profile.photoURL !== null) @@ -94,7 +89,7 @@ class MenuLoaderContainer extends React.Component { return (
+ { + meta.menuItems ? ( + + ) : null + } + + } + exact + path={`${base}/members/:handle([\\w\\-\\[\\].{}]{2,15})`} + /> + } + exact + path={`${base}/members/:handle([\\w\\-\\[\\].{}]{2,15})/details`} + /> + } + id="6wUJl6RRF6MxI3kR6DFq5t" + /> + +
+
+ ); +} + +TCO21.defaultProps = { + base: '', +}; + +TCO21.propTypes = { + base: PT.string, + meta: PT.shape().isRequired, +}; diff --git a/src/shared/routes/Communities/TCO21/index.jsx b/src/shared/routes/Communities/TCO21/index.jsx new file mode 100644 index 0000000000..a1880bb2c2 --- /dev/null +++ b/src/shared/routes/Communities/TCO21/index.jsx @@ -0,0 +1,32 @@ +/** + * Loader for the community's code chunks. + */ + +import LoadingIndicator from 'components/LoadingIndicator'; +import path from 'path'; +import PT from 'prop-types'; +import React from 'react'; +import { AppChunk, webpack } from 'topcoder-react-utils'; + +export default function ChunkLoader({ base, meta }) { + return ( + import(/* webpackChunkName: "tco21-community/chunk" */ './Routes') + .then(({ default: Routes }) => ( + + )) + } + renderPlaceholder={() => } + renderServer={() => { + const Routes = webpack.requireWeak(path.resolve(__dirname, './Routes')); + return ; + }} + /> + ); +} + +ChunkLoader.propTypes = { + base: PT.string.isRequired, + meta: PT.shape().isRequired, +}; From 796d1122222bbd274c55210ea0503ad265b7c328 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 8 Jun 2020 15:40:12 +0300 Subject: [PATCH 27/39] Update config.yml --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2540011007..e99d6afa99 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -231,6 +231,7 @@ workflows: branches: only: - develop + - tco21 # This is alternate dev env for parallel testing - "build-test": context : org-global From 84a523fb324599e775872c0570190fa71bb1aed2 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 8 Jun 2020 16:13:26 +0300 Subject: [PATCH 28/39] Use state data for loaded menus --- .../Contentful/MenuLoader/index.jsx | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/shared/containers/Contentful/MenuLoader/index.jsx b/src/shared/containers/Contentful/MenuLoader/index.jsx index cd79399c4b..a8bb7b45d3 100644 --- a/src/shared/containers/Contentful/MenuLoader/index.jsx +++ b/src/shared/containers/Contentful/MenuLoader/index.jsx @@ -38,16 +38,19 @@ class MenuLoaderContainer extends React.Component { spaceName, environment, baseUrl, + menu, } = this.props; - // initiate loading the menu data - loadMenuData({ - id, - fields, - preview, - spaceName, - environment, - baseUrl, - }); + if (!menu.length) { + // initiate loading the menu data + loadMenuData({ + id, + fields, + preview, + spaceName, + environment, + baseUrl, + }); + } } handleChangeLevel1Id(menuId) { From 0179a62f35c8e745bb98330b4649368edae437cf Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Tue, 9 Jun 2020 00:03:40 +0300 Subject: [PATCH 29/39] Dump menu for debug --- src/shared/containers/Contentful/MenuLoader/index.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shared/containers/Contentful/MenuLoader/index.jsx b/src/shared/containers/Contentful/MenuLoader/index.jsx index a8bb7b45d3..e0d8087f3f 100644 --- a/src/shared/containers/Contentful/MenuLoader/index.jsx +++ b/src/shared/containers/Contentful/MenuLoader/index.jsx @@ -89,6 +89,7 @@ class MenuLoaderContainer extends React.Component { } else { normalizedProfile = null; } + console.log('menu is', menu); // eslint-disable-line no-console return (
Date: Thu, 11 Jun 2020 22:18:38 +0300 Subject: [PATCH 30/39] Update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 66d90fd976..9e9147ffb6 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "moment-timezone": "^0.5.21", "money": "^0.2.0", "morgan": "^1.9.0", - "navigation-component": "topcoder-platform/navigation-component#develop", + "navigation-component": "topcoder-platform/navigation-component#issue-175", "node-forge": "^0.7.5", "nuka-carousel": "^4.5.3", "postcss": "^6.0.23", From 00b302ece02e5e3db127d215ee91de5045e59bd9 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 15 Jun 2020 09:34:23 +0300 Subject: [PATCH 31/39] Remove TC footer --- src/shared/containers/Contentful/MenuLoader/index.jsx | 1 - src/shared/routes/Communities/TCO21/Routes.jsx | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/shared/containers/Contentful/MenuLoader/index.jsx b/src/shared/containers/Contentful/MenuLoader/index.jsx index e0d8087f3f..a8bb7b45d3 100644 --- a/src/shared/containers/Contentful/MenuLoader/index.jsx +++ b/src/shared/containers/Contentful/MenuLoader/index.jsx @@ -89,7 +89,6 @@ class MenuLoaderContainer extends React.Component { } else { normalizedProfile = null; } - console.log('menu is', menu); // eslint-disable-line no-console return (
-
); } From f24225088c426b51c0d10ba491f66974397f7ee6 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Wed, 17 Jun 2020 16:22:54 +0300 Subject: [PATCH 32/39] New theme for counter --- .../components/Contentful/Countdown/index.jsx | 1 + src/shared/components/Countdown/index.jsx | 37 +++++---- .../components/Countdown/themes/TCO21.scss | 77 +++++++++++++++++++ .../Countdown/{ => themes}/style.scss | 8 -- 4 files changed, 101 insertions(+), 22 deletions(-) create mode 100644 src/shared/components/Countdown/themes/TCO21.scss rename src/shared/components/Countdown/{ => themes}/style.scss (94%) diff --git a/src/shared/components/Contentful/Countdown/index.jsx b/src/shared/components/Contentful/Countdown/index.jsx index 0ff5447e93..67ccb5b868 100644 --- a/src/shared/components/Contentful/Countdown/index.jsx +++ b/src/shared/components/Contentful/Countdown/index.jsx @@ -25,6 +25,7 @@ export default function CountdownLoader(props) { title={data.entries.items[id].fields.title} end={new Date(data.entries.items[id].fields.endDate)} extraStylesForContainer={data.entries.items[id].fields.extraStylesForContainer} + themeName={data.entries.items[id].fields.theme} /> )} renderPlaceholder={LoadingIndicator} diff --git a/src/shared/components/Countdown/index.jsx b/src/shared/components/Countdown/index.jsx index 7fd2a42dc8..4cccc74494 100644 --- a/src/shared/components/Countdown/index.jsx +++ b/src/shared/components/Countdown/index.jsx @@ -8,7 +8,13 @@ import PT from 'prop-types'; import React from 'react'; import { fixStyle } from 'utils/contentful'; -import './style.scss'; +import defaultTheme from './themes/style.scss'; +import TCO21 from './themes/TCO21.scss'; + +const THEMES = { + Default: defaultTheme, + TCO21, +}; /* We have to use state component, as we need to manipulate with DOM nodes to * access nuka-carousel state. */ @@ -34,6 +40,8 @@ export default class Countdown extends React.Component { } render() { + const { themeName } = this.props; + const theme = THEMES[themeName]; let { elapsed } = this.state; const oneDay = 24 * 60 * 60; const oneHour = 60 * 60; @@ -54,27 +62,26 @@ export default class Countdown extends React.Component { ); return (
-
{title}
-
:
-
+
{title}
+
-
{day}
-
days
+
{day}
+
days
-
{hour}
-
hours
+
{hour}
+
hours
-
{minute}
-
minutes
+
{minute}
+
minutes
-
-
{second}
-
seconds
+
+
{second}
+
seconds
@@ -85,10 +92,12 @@ export default class Countdown extends React.Component { Countdown.defaultProps = { title: 'Countdown to TCO19 Final', extraStylesForContainer: {}, + themeName: 'Default', }; Countdown.propTypes = { title: PT.string, end: PT.instanceOf(Date).isRequired, extraStylesForContainer: PT.shape(), + themeName: PT.string, }; diff --git a/src/shared/components/Countdown/themes/TCO21.scss b/src/shared/components/Countdown/themes/TCO21.scss new file mode 100644 index 0000000000..01abb24ba4 --- /dev/null +++ b/src/shared/components/Countdown/themes/TCO21.scss @@ -0,0 +1,77 @@ +@import "~styles/mixins"; + +$text-color-gray: #37373b; +$container-background-yello: #fce217; + +.container { + @include roboto-regular; + + display: -webkit-flex; /* Safari */ + display: flex; + -webkit-flex-direction: row; /* Safari */ + flex-direction: row; + -webkit-justify-content: center; /* Safari */ + justify-content: center; + padding: 40px; + background: $container-background-yello; + + @media only screen and (max-width: 767px) { + -webkit-flex-direction: column; /* Safari */ + flex-direction: column; + } + + .title { + @include barlow-condensed-medium; + + color: #2a2a2a; + font-size: 48px; + line-height: 50px; + text-align: center; + margin: auto 41px auto 0; + text-transform: uppercase; + + @media only screen and (max-width: 767px) { + margin-bottom: 20px; + } + } + + .time-container { + display: -webkit-flex; /* Safari */ + display: flex; + -webkit-flex-direction: row; /* Safari */ + flex-direction: row; + -webkit-justify-content: center; /* Safari */ + justify-content: center; + } + + .time-value { + @include barlow-condensed; + + color: #9d41c9; + font-size: 80px; + line-height: 74px; + text-align: center; + } + + .time-label { + color: #2a2a2a; + font-size: 14px; + letter-spacing: 0.5px; + line-height: 18px; + text-align: center; + width: 100px; + text-transform: uppercase; + margin-top: 4px; + + @media only screen and (max-width: 767px) { + width: auto; + margin-left: 10px; + margin-right: 10px; + font-size: 18px; + } + } + + .time-second { + display: block; + } +} diff --git a/src/shared/components/Countdown/style.scss b/src/shared/components/Countdown/themes/style.scss similarity index 94% rename from src/shared/components/Countdown/style.scss rename to src/shared/components/Countdown/themes/style.scss index feec44e436..966b7500ee 100644 --- a/src/shared/components/Countdown/style.scss +++ b/src/shared/components/Countdown/themes/style.scss @@ -31,16 +31,8 @@ $container-background-yello: #fce217; margin-bottom: auto; text-transform: uppercase; - &.colon { - margin-right: 30px; - } - @media only screen and (max-width: 767px) { margin-bottom: 20px; - - &.colon { - display: none; - } } } From 1d10df6c19e73940a9e032392c1229b8867653d5 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 18 Jun 2020 10:49:52 +0300 Subject: [PATCH 33/39] Add empty routes support for Navi --- src/shared/actions/contentful.js | 7 ++++--- src/shared/utils/contentful.js | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/shared/actions/contentful.js b/src/shared/actions/contentful.js index 153e9d438a..dd17409407 100644 --- a/src/shared/actions/contentful.js +++ b/src/shared/actions/contentful.js @@ -240,9 +240,10 @@ async function getMenuDone(menuProps) { } else { menu = menuData; } - // add the preconfigured secondary menus - menu[0].secondaryMenuForLoggedInUser = config.SECONDARY_MENU_FOR_LOGGED_USER; - menu[0].secondaryMenuForGuest = config.SECONDARY_MENU_FOR_GUEST; + // add the preconfigured secondary menus? + if (fields.showSecondaryNaviMenu) { + menu[0].secondaryMenu = config.HEADER_MENU[1].secondaryMenu; + } return { id: menuProps.id, diff --git a/src/shared/utils/contentful.js b/src/shared/utils/contentful.js index 17c7b5ff65..3c253aa36b 100644 --- a/src/shared/utils/contentful.js +++ b/src/shared/utils/contentful.js @@ -94,13 +94,13 @@ export function menuItemBuilder(baseUrl, item) { case 'route': return { title: item.fields.naviMenuLinkText || item.fields.name, - href: target(baseUrl, item), + href: item.fields.viewport ? target(baseUrl, item) : null, id: item.sys.id, }; case 'navigationMenuItem': return { title: item.fields.linkText || item.fields.name, - href: target(baseUrl, item), + href: item.fields.viewport ? target(baseUrl, item) : null, id: item.sys.id, }; default: return {}; From 7550f71612d48d81c738c26effb13a0a60ea78fd Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 18 Jun 2020 11:28:07 +0300 Subject: [PATCH 34/39] Themed buttons fixes and grid --- src/shared/components/Contentful/Viewport/themes/grid.scss | 1 + src/shared/components/buttons/themed/tc.scss | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/shared/components/Contentful/Viewport/themes/grid.scss b/src/shared/components/Contentful/Viewport/themes/grid.scss index 4a9d33cc93..24e8e3c0be 100644 --- a/src/shared/components/Contentful/Viewport/themes/grid.scss +++ b/src/shared/components/Contentful/Viewport/themes/grid.scss @@ -6,6 +6,7 @@ overflow: auto; justify-content: center; width: 100%; + align-items: center; @include xl { max-width: $screen-lg; diff --git a/src/shared/components/buttons/themed/tc.scss b/src/shared/components/buttons/themed/tc.scss index 265c60e689..b990bf4abc 100644 --- a/src/shared/components/buttons/themed/tc.scss +++ b/src/shared/components/buttons/themed/tc.scss @@ -6,6 +6,7 @@ font-weight: 700 !important; text-decoration: none !important; text-transform: uppercase !important; + margin: 0 !important; } @mixin primary-green { @@ -105,6 +106,7 @@ font-weight: 700 !important; text-decoration: none !important; text-transform: uppercase !important; + margin: 0 !important; } @mixin secondary-gray { @@ -130,6 +132,7 @@ font-weight: 700 !important; text-transform: uppercase !important; + margin: 0 !important; } @mixin warn-red { From a9d3461499922e76371dbf74a4e097a78d367502 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Thu, 18 Jun 2020 12:46:13 +0300 Subject: [PATCH 35/39] Remove grid align --- src/shared/components/Contentful/Viewport/themes/grid.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shared/components/Contentful/Viewport/themes/grid.scss b/src/shared/components/Contentful/Viewport/themes/grid.scss index 24e8e3c0be..4a9d33cc93 100644 --- a/src/shared/components/Contentful/Viewport/themes/grid.scss +++ b/src/shared/components/Contentful/Viewport/themes/grid.scss @@ -6,7 +6,6 @@ overflow: auto; justify-content: center; width: 100%; - align-items: center; @include xl { max-width: $screen-lg; From 12ce76af52b9194965826f0b6a12b0ee0e5d6027 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 19 Jun 2020 13:06:53 +0300 Subject: [PATCH 36/39] Leaderbord headers fixes --- src/shared/components/Contentful/ContentBlock/themes/TCO19.scss | 2 +- src/shared/components/Contentful/ContentBlock/themes/TCO20.scss | 2 +- .../components/Contentful/ContentBlock/themes/general.scss | 2 +- .../components/Leaderboard/LeaderboardTable/themes/tco20.scss | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss b/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss index 6d1dba8192..bffbc19320 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss @@ -78,7 +78,7 @@ strong a { th { @include roboto-regular; - color: #808080; + color: #2a2a2a; font-size: 15px; font-weight: bold; line-height: 25px; diff --git a/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss b/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss index 7dca7a7556..936794b27d 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss @@ -94,7 +94,7 @@ strong a { th { @include roboto-regular; - color: #808080; + color: #2a2a2a; font-size: 15px; font-weight: bold; line-height: 25px; diff --git a/src/shared/components/Contentful/ContentBlock/themes/general.scss b/src/shared/components/Contentful/ContentBlock/themes/general.scss index ad01f09abc..55eb8d43ba 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/general.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/general.scss @@ -122,7 +122,7 @@ strong a { th { @include roboto-regular; - color: #808080; + color: #2a2a2a; font-size: 15px; font-weight: bold; line-height: 25px; diff --git a/src/shared/components/Leaderboard/LeaderboardTable/themes/tco20.scss b/src/shared/components/Leaderboard/LeaderboardTable/themes/tco20.scss index 9a787cf24f..fe4938c6b1 100644 --- a/src/shared/components/Leaderboard/LeaderboardTable/themes/tco20.scss +++ b/src/shared/components/Leaderboard/LeaderboardTable/themes/tco20.scss @@ -191,7 +191,7 @@ $table-bg-hover: #f5f5f5; .col-fulfillment, .col-challenges, .col-points { - color: #7f7f7f; + color: #2a2a2a; font-family: Roboto, sans-serif; font-size: 14px; font-weight: 500; From b6ea43f71e031e1d54bf9cc42b50f5df18d7d65d Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Fri, 19 Jun 2020 14:04:05 +0300 Subject: [PATCH 37/39] More tables style fixes --- .../components/Contentful/ContentBlock/themes/TCO19.scss | 8 ++++---- .../components/Contentful/ContentBlock/themes/TCO20.scss | 8 ++++---- .../Contentful/ContentBlock/themes/general.scss | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss b/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss index bffbc19320..6dd6d736f7 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/TCO19.scss @@ -81,10 +81,10 @@ strong a { color: #2a2a2a; font-size: 15px; font-weight: bold; - line-height: 25px; + line-height: 18px; text-align: left; text-transform: uppercase; - padding: 7px 10px 7px 0; + padding: 18px 10px 14px 0; @include md-to-xl { white-space: nowrap; @@ -102,8 +102,8 @@ strong a { line-height: 25px; text-align: left; color: $tc-gray-80; - border-top: 1px solid #ededf2; - border-bottom: 1px solid #ededf2; + border-top: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; padding: 20px 50px 20px 0; min-height: 51px; diff --git a/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss b/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss index 936794b27d..e6b4a5a3e7 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/TCO20.scss @@ -97,10 +97,10 @@ strong a { color: #2a2a2a; font-size: 15px; font-weight: bold; - line-height: 25px; + line-height: 18px; text-align: left; text-transform: uppercase; - padding: 7px 10px 7px 0; + padding: 18px 10px 14px 0; @include md-to-xl { white-space: nowrap; @@ -118,8 +118,8 @@ strong a { line-height: 25px; text-align: left; color: $tc-gray-80; - border-top: 1px solid #ededf2; - border-bottom: 1px solid #ededf2; + border-top: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; padding: 20px 50px 20px 0; min-height: 51px; diff --git a/src/shared/components/Contentful/ContentBlock/themes/general.scss b/src/shared/components/Contentful/ContentBlock/themes/general.scss index 55eb8d43ba..195069213b 100644 --- a/src/shared/components/Contentful/ContentBlock/themes/general.scss +++ b/src/shared/components/Contentful/ContentBlock/themes/general.scss @@ -125,10 +125,10 @@ strong a { color: #2a2a2a; font-size: 15px; font-weight: bold; - line-height: 25px; + line-height: 18px; text-align: left; text-transform: uppercase; - padding: 7px 10px 7px 0; + padding: 18px 10px 14px 0; @include md-to-xl { white-space: nowrap; @@ -146,8 +146,8 @@ strong a { line-height: 25px; text-align: left; color: $tc-gray-80; - border-top: 1px solid #ededf2; - border-bottom: 1px solid #ededf2; + border-top: 1px solid #d4d4d4; + border-bottom: 1px solid #d4d4d4; padding: 20px 50px 20px 0; min-height: 51px; From 64b377e7f875e46bce04833ff8c514a46a7915aa Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Mon, 22 Jun 2020 14:46:49 +0530 Subject: [PATCH 38/39] fix: added develop branch to the nav component --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e9147ffb6..66d90fd976 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "moment-timezone": "^0.5.21", "money": "^0.2.0", "morgan": "^1.9.0", - "navigation-component": "topcoder-platform/navigation-component#issue-175", + "navigation-component": "topcoder-platform/navigation-component#develop", "node-forge": "^0.7.5", "nuka-carousel": "^4.5.3", "postcss": "^6.0.23", From 446aa56cd19f04c7b0c7a271407f6f5474b30e05 Mon Sep 17 00:00:00 2001 From: Sushil Shinde Date: Mon, 22 Jun 2020 14:51:13 +0530 Subject: [PATCH 39/39] ci: deploy on beta --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6e4578cf16..fbe4c60282 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -252,7 +252,7 @@ workflows: filters: branches: only: - - hot-fix + - develop # This is stage env for production QA releases - "build-prod-staging": context : org-global