summaryrefslogtreecommitdiff
path: root/app/views/shared/issuable/_sidebar_assignees.html.haml
blob: ed3ef6155db67ad1c3a2bccbb2d1972051fb3169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
- if issuable.is_a?(Issue)
  #js-vue-sidebar-assignees{ data: { field: "#{issuable.to_ability_name}[assignee_ids]", signed_in: signed_in } }
    .title.hide-collapsed
      = _('Assignee')
      = icon('spinner spin')
- else
  .sidebar-collapsed-icon.sidebar-collapsed-user{ data: { toggle: "tooltip", placement: "left", container: "body", boundary: 'viewport' }, title: sidebar_assignee_tooltip_label(issuable) }
    - if issuable.assignee
      = link_to_member(@project, issuable.assignee, size: 24)
    - else
      = icon('user', 'aria-hidden': 'true')
  .title.hide-collapsed
    = _('Assignee')
    = icon('spinner spin', class: 'hidden block-loading', 'aria-hidden': 'true')
    - if can_edit_issuable
      = link_to _('Edit'), '#', class: 'js-sidebar-dropdown-toggle edit-link float-right'
    - if !signed_in
      %a.gutter-toggle.float-right.js-sidebar-toggle{ role: "button", href: "#", "aria-label" => _('Toggle sidebar') }
        = sidebar_gutter_toggle_icon
  .value.hide-collapsed
    - if issuable.assignee
      = link_to_member(@project, issuable.assignee, size: 32, extra_class: 'bold') do
        - if !issuable.can_be_merged_by?(issuable.assignee)
          %span.float-right.cannot-be-merged{ data: { toggle: 'tooltip', placement: 'left' }, title: _('Not allowed to merge') }
            = icon('exclamation-triangle', 'aria-hidden': 'true')
        %span.username
          = issuable.assignee.to_reference
    - else
      %span.assign-yourself.no-value
        = _('No assignee')
        - if can_edit_issuable
          \-
          %a.js-assign-yourself{ href: '#' }
            = _('assign yourself')

.selectbox.hide-collapsed
  - issuable.assignees.each do |assignee|
    = hidden_field_tag "#{issuable.to_ability_name}[assignee_ids][]", assignee.id, id: nil, data: { avatar_url: assignee.avatar_url, name: assignee.name, username: assignee.username }

  - options = { toggle_class: 'js-user-search js-author-search', title: _('Assign to'), filter: true, dropdown_class: 'dropdown-menu-user dropdown-menu-selectable dropdown-menu-author', placeholder: _('Search users'), data: { first_user: current_user&.username, current_user: true, project_id: @project&.id, author_id: issuable.author_id, field_name: "#{issuable.to_ability_name}[assignee_ids][]", issue_update: issuable_json_path(issuable), ability_name: issuable.to_ability_name, null_user: true, display: 'static' } }
  - title = _('Select assignee')

  - if issuable.is_a?(Issue)
    - unless issuable.assignees.any?
      = hidden_field_tag "#{issuable.to_ability_name}[assignee_ids][]", 0, id: nil
    - dropdown_options = issue_assignees_dropdown_options
    - title = dropdown_options[:title]
    - options[:toggle_class] += ' js-multiselect js-save-user-data'
    - data = { field_name: "#{issuable.to_ability_name}[assignee_ids][]" }
    - data[:multi_select] = true
    - data['dropdown-title'] = title
    - data['dropdown-header'] = dropdown_options[:data][:'dropdown-header']
    - data['max-select'] = dropdown_options[:data][:'max-select']
    - options[:data].merge!(data)

  = dropdown_tag(title, options: options)