diff --git a/.circleci/config.yml b/.circleci/config.yml
index 9711ba7ed..76c515c40 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -128,7 +128,7 @@ workflows:
- build-dev
filters:
branches:
- only: ['dev', 'feature/project-plan-simplification-0']
+ only: ['dev', 'feature/cf-2.20']
- deployTest01:
context : org-global
diff --git a/src/components/TeamManagement/TeamManagement.jsx b/src/components/TeamManagement/TeamManagement.jsx
index 6752ac5c2..019b26d88 100644
--- a/src/components/TeamManagement/TeamManagement.jsx
+++ b/src/components/TeamManagement/TeamManagement.jsx
@@ -114,8 +114,10 @@ class TeamManagement extends React.Component {
const copilotRemoveAction = hasPermission(PERMISSIONS.REMOVE_COPILOTS)
const copilotViewAction = hasPermission(PERMISSIONS.VIEW_COPILOTS)
const canRequestCopilot = hasPermission(PERMISSIONS.REQUEST_COPILOTS)
+ const canManageCopilots = hasPermission(PERMISSIONS.MANAGE_COPILOTS)
const copilotRequestLink = `https://topcoder.typeform.com/to/YJ7AL4p8#handle=${currentUser.handle}&projectid=${projectId}`
const canJoinTopcoderTeam = !currentMember && hasPermission(PERMISSIONS.JOIN_TOPCODER_TEAM)
+ const hasCopilot = members.some(member => member.role === 'copilot')
const sortedMembers = members
let projectTeamInviteCount = 0
@@ -194,7 +196,7 @@ class TeamManagement extends React.Component {
Copilot
- {(copilotTeamManageAction || copilotRemoveAction || copilotViewAction) &&
+ {((copilotTeamManageAction || copilotRemoveAction || copilotViewAction) && (canManageCopilots || hasCopilot)) &&
onShowCopilotDialog(true)}>
{(copilotTeamManageAction || copilotRemoveAction) ? 'Manage' : 'View'}
diff --git a/src/components/TeamManagement/TeamManagement.scss b/src/components/TeamManagement/TeamManagement.scss
index 2d5b387a6..4823249ec 100644
--- a/src/components/TeamManagement/TeamManagement.scss
+++ b/src/components/TeamManagement/TeamManagement.scss
@@ -457,6 +457,10 @@
display: flex;
flex-wrap: wrap;
flex-direction: column;
+
+ div {
+ align-items: center;
+ }
}
}
}
diff --git a/src/projects/detail/components/CreatePhaseForm/CreatePhaseForm.jsx b/src/projects/detail/components/CreatePhaseForm/CreatePhaseForm.jsx
index a9547b40e..aec531f1a 100644
--- a/src/projects/detail/components/CreatePhaseForm/CreatePhaseForm.jsx
+++ b/src/projects/detail/components/CreatePhaseForm/CreatePhaseForm.jsx
@@ -120,11 +120,14 @@ class CreatePhaseForm extends React.Component {
const phaseData = {
title: model.title,
- description: model.description || ' ',
startDate: moment(model.startDate),
endDate: moment(model.endDate),
}
+ if (model.description.trim()) {
+ phaseData.description = model.description
+ }
+
const apiMilestones = milestones.map((milestone, index) => ({
// default values
...MILESTONE_DEFAULT_VALUES[milestone.type],
diff --git a/src/projects/detail/components/PhaseCard/EditStageForm.jsx b/src/projects/detail/components/PhaseCard/EditStageForm.jsx
index 1d2c98afe..f7c04504f 100644
--- a/src/projects/detail/components/PhaseCard/EditStageForm.jsx
+++ b/src/projects/detail/components/PhaseCard/EditStageForm.jsx
@@ -86,8 +86,10 @@ class EditStageForm extends React.Component {
if (publishClicked && phase.status === PHASE_STATUS_DRAFT) {
newStatus = PHASE_STATUS_ACTIVE
}
+ if (!model.description.trim()) {
+ delete model.description
+ }
const updateParam = _.assign({}, model, {
- description: model.description || ' ',
startDate: updatedStartDate,
endDate: updatedEndDate || '',
status: newStatus
@@ -285,7 +287,7 @@ class EditStageForm extends React.Component {
wrapperClass={`${styles['input-row']}`}
label="Description"
name="description"
- value={phase.description ? phase.description.trim() : ''}
+ value={phase.description}
maxLength={255}
/>
diff --git a/src/projects/detail/components/timeline/CreateMilestoneForm/CreateMilestoneForm.jsx b/src/projects/detail/components/timeline/CreateMilestoneForm/CreateMilestoneForm.jsx
index c5e59db9e..7a609a8a0 100644
--- a/src/projects/detail/components/timeline/CreateMilestoneForm/CreateMilestoneForm.jsx
+++ b/src/projects/detail/components/timeline/CreateMilestoneForm/CreateMilestoneForm.jsx
@@ -34,13 +34,13 @@ class CreateMilestoneForm extends React.Component {
cancelEdit() {
const { previousMilestone } = this.props
const startDate = previousMilestone ? moment.utc(previousMilestone.completionDate || previousMilestone.endDate) : moment.utc()
- this.state = {
+ this.setState({
isEditing: false,
type: '',
name: '',
startDate: startDate.format('YYYY-MM-DD'),
endDate: startDate.add(3, 'days').format('YYYY-MM-DD')
- }
+ })
}
onAddClick() {