         onContinue: _.partial onNextStep, currentStep: step.stepIndex
 
     footerProps = _.omit(@props, 'onContinue')
-
     <ExFooter {...canContinueControlProps} {...footerProps} panel='review'/>
 
   renderIdLink: (related = true) ->

        includeGroup: false
        includeFooter: @shouldControl(part.id)
        keySet: keySet
        key: "exercise-part-#{index}"

      # stim and stem are the same for different steps currently.


ExerciseWithScroll = React.createClass
  displayName: 'ExerciseWithScroll'
  mixins: [ExerciseMixin, ScrollTo]

  componentDidMount: ->
    {currentStep} = @props
    if currentStep?
      @scrollToSelector("[data-step='#{currentStep}']")

  componentWillReceiveProps: (nextProps) ->
    if nextProps.currentStep isnt @props.currentStep
      @scrollToSelector("[data-step='#{nextProps.currentStep}']")


  render: ->
    {parts, footer, pinned} = @props

    if @isSinglePart()
      @renderSinglePart()
    else
      footer ?= @renderFooter() if pinned
      <CardBody footer={footer} pinned={pinned} className='openstax-multipart-exercise-card'>
        <ExerciseBadges isMultipart={true}/>
        {@renderGroup()}
        {@renderMultiParts()}
        {@renderIdLink(false)}
      </CardBody>


Exercise = React.createClass
