@@ -28,6 +28,34 @@ export type * from './types'
2828
2929const TASK_CONNECTOR_STYLE = `1px solid ${ COLORS . grey40 } `
3030
31+ const getSubTaskBackgroundColor = (
32+ isTaskListComplete : boolean ,
33+ isPastSubTask : boolean ,
34+ isSubTaskComplete : boolean | undefined
35+ ) : string => {
36+ if ( isTaskListComplete || isPastSubTask ) {
37+ return COLORS . blue50
38+ }
39+ if ( isSubTaskComplete === true ) {
40+ return COLORS . grey40
41+ }
42+ return 'initial'
43+ }
44+
45+ const getSubTaskConnectorColor = (
46+ isFinalSubTaskOfTaskList : boolean ,
47+ isTaskListComplete : boolean ,
48+ isPastSubTask : boolean
49+ ) : string => {
50+ if ( isFinalSubTaskOfTaskList ) {
51+ return COLORS . transparent
52+ }
53+ if ( isTaskListComplete || isPastSubTask ) {
54+ return COLORS . blue50
55+ }
56+ return COLORS . grey40
57+ }
58+
3159interface ProgressTrackerItemProps {
3260 activeIndex : [ number , number ] | null
3361 subTasks : SubTaskProps [ ]
@@ -143,14 +171,11 @@ function ProgressTrackerItem({
143171 alignItems = { ALIGN_CENTER }
144172 justifyContent = { JUSTIFY_CENTER }
145173 // fill in circle for past or completed subtasks
146- backgroundColor = {
147- // is in the past or list is complete
148- isTaskListComplete || isPastSubTask
149- ? COLORS . blue50
150- : subTask . isComplete === true
151- ? COLORS . grey40
152- : 'initial'
153- }
174+ backgroundColor = { getSubTaskBackgroundColor (
175+ isTaskListComplete ,
176+ isPastSubTask ,
177+ subTask . isComplete
178+ ) }
154179 border = { TASK_CONNECTOR_STYLE }
155180 borderColor = { isFutureSubTask ? COLORS . grey40 : COLORS . blue50 }
156181 borderWidth = { SPACING . spacing2 }
@@ -164,14 +189,11 @@ function ProgressTrackerItem({
164189 < Flex
165190 flex = "1"
166191 borderLeft = { TASK_CONNECTOR_STYLE }
167- borderColor = {
168- // do not show the subtask connector if it's the final subtask of the task list
169- isFinalSubTaskOfTaskList
170- ? COLORS . transparent
171- : isTaskListComplete || isPastSubTask
172- ? COLORS . blue50
173- : COLORS . grey40
174- }
192+ borderColor = { getSubTaskConnectorColor (
193+ isFinalSubTaskOfTaskList ,
194+ isTaskListComplete ,
195+ isPastSubTask
196+ ) }
175197 marginTop = { `-${ SPACING . spacing8 } ` }
176198 marginBottom = {
177199 // extend connector for last subtask
@@ -431,7 +453,8 @@ function Task({
431453 name = { isTaskOpen ? 'chevron-up' : 'chevron-down' }
432454 height = "15px"
433455 />
434- ) : ( isTaskListComplete || isPastTask ) && cta != null ? (
456+ ) : null }
457+ { ! hasSubTasks && ( isTaskListComplete || isPastTask ) && cta != null ? (
435458 < >
436459 < Link
437460 { ...targetProps }
0 commit comments