- affix_offset = local_assigns.fetch(:affix_offset, "50")
- project = local_assigns[:project]

%aside.right-sidebar.js-right-sidebar{ data: { "offset-top" => affix_offset, "spy" => "affix", "always-show-toggle" => true }, class: sidebar_gutter_collapsed_class, 'aria-live' => 'polite' }
  .issuable-sidebar.milestone-sidebar
    .block.milestone-progress.issuable-sidebar-header
      %a.gutter-toggle.float-right.js-sidebar-toggle{ role: "button", href: "#", "aria-label" => "Toggle sidebar" }
        = sidebar_gutter_toggle_icon

      .sidebar-collapsed-icon
        %span== #{milestone.percent_complete(current_user)}%
        = milestone_progress_bar(milestone)
      .title.hide-collapsed
        %strong.bold== #{milestone.percent_complete(current_user)}%
        %span.hide-collapsed
          complete
      .value.hide-collapsed
        = milestone_progress_bar(milestone)

    .block.start_date.hide-collapsed
      .title
        Start date
        - if @project && can?(current_user, :admin_milestone, @project)
          = link_to 'Edit', edit_project_milestone_path(@project, @milestone), class: 'js-sidebar-dropdown-toggle edit-link float-right'
      .value
        %span.value-content
          - if milestone.start_date
            %span.bold= milestone.start_date.to_s(:medium)
          - else
            %span.no-value No start date

    .block.due_date
      .sidebar-collapsed-icon
        = icon('calendar', 'aria-hidden': 'true')
        %span.collapsed-milestone-date
          - if milestone.start_date && milestone.due_date
            - if milestone.start_date.year == milestone.due_date.year
              .milestone-date= milestone.start_date.strftime('%b %-d')
            - else
              .milestone-date= milestone.start_date.strftime('%b %-d %Y')
            .date-separator -
            .due_date= milestone.due_date.strftime('%b %-d %Y')
          - elsif milestone.start_date
            From
            .milestone-date= milestone.start_date.strftime('%b %-d %Y')
          - elsif milestone.due_date
            Until
            .milestone-date= milestone.due_date.strftime('%b %-d %Y')
          - else
            None
      .title.hide-collapsed
        Due date
        - if @project && can?(current_user, :admin_milestone, @project)
          = link_to 'Edit', edit_project_milestone_path(@project, @milestone), class: 'js-sidebar-dropdown-toggle edit-link float-right'
      .value.hide-collapsed
        %span.value-content
          - if milestone.due_date
            %span.bold= milestone.due_date.to_s(:medium)
          - else
            %span.no-value No due date
        - remaining_days = milestone_remaining_days(milestone)
        - if remaining_days.present?
          = surround '(', ')' do
            %span.remaining-days= remaining_days

    - if !project || can?(current_user, :read_issue, project)
      .block.issues
        .sidebar-collapsed-icon
          %strong
            = custom_icon('issues')
          %span= milestone.issues_visible_to_user(current_user).count
        .title.hide-collapsed
          Issues
          %span.badge.badge-pill= milestone.issues_visible_to_user(current_user).count
          - if project && can?(current_user, :create_issue, project)
            = link_to new_project_issue_path(project, issue: { milestone_id: milestone.id }), class: "float-right", title: "New Issue" do
              New issue
        .value.hide-collapsed.bold
          %span.milestone-stat
            = link_to milestones_browse_issuables_path(milestone, type: :issues) do
              Open:
              = milestone.issues_visible_to_user(current_user).opened.count
          %span.milestone-stat
            = link_to milestones_browse_issuables_path(milestone, type: :issues, state: 'closed') do
              Closed:
              = milestone.issues_visible_to_user(current_user).closed.count

    .block
      #issuable-time-tracker{ data: { time_estimate: @milestone.total_issue_time_estimate, time_spent: @milestone.total_issue_time_spent, human_time_estimate: @milestone.human_total_issue_time_estimate, human_time_spent: @milestone.human_total_issue_time_spent } }
        // Fallback while content is loading
        .title.hide-collapsed
          = _('Time tracking')
          = icon('spinner spin')

    .block.merge-requests
      .sidebar-collapsed-icon
        %strong
          = custom_icon('mr_bold')
        %span= milestone.merge_requests.count
      .title.hide-collapsed
        Merge requests
        %span.badge.badge-pill= milestone.merge_requests.count
      .value.hide-collapsed.bold
        - if !project || can?(current_user, :read_merge_request, project)
          %span.milestone-stat
            = link_to milestones_browse_issuables_path(milestone, type: :merge_requests) do
              Open:
              = milestone.merge_requests.opened.count
          %span.milestone-stat
            = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'closed') do
              Closed:
              = milestone.merge_requests.closed.count
          %span.milestone-stat
            = link_to milestones_browse_issuables_path(milestone, type: :merge_requests, state: 'merged') do
              Merged:
              = milestone.merge_requests.merged.count
        - else
          %span.milestone-stat
            Open:
            = milestone.merge_requests.opened.count
          %span.milestone-stat
            Closed:
            = milestone.merge_requests.closed.count
          %span.milestone-stat
            Merged:
            = milestone.merge_requests.merged.count

    - milestone_ref = milestone.try(:to_reference, full: true)
    - if milestone_ref.present?
      .block.reference
        .sidebar-collapsed-icon.dont-change-state
          = clipboard_button(text: milestone_ref, title: "Copy reference to clipboard", placement: "left")
        .cross-project-reference.hide-collapsed
          %span
            Reference:
            %cite{ title: milestone_ref }
              = milestone_ref
          = clipboard_button(text: milestone_ref, title: "Copy reference to clipboard", placement: "left")