summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issuable_context.js
blob: 5bc7f8d9cb95e173f533e275734c9bb2bbe8297c (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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import Cookies from 'js-cookie';
import bp from './breakpoints';
import UsersSelect from './users_select';

const PARTICIPANTS_ROW_COUNT = 7;

export default class IssuableContext {
  constructor(currentUser) {
    this.initParticipants();
    this.userSelect = new UsersSelect(currentUser);

    $('select.select2').select2({
      width: 'resolve',
      dropdownAutoWidth: true,
    });

    $('.issuable-sidebar .inline-update').on('change', 'select', function onClickSelect() {
      return $(this).submit();
    });
    $('.issuable-sidebar .inline-update').on('change', '.js-assignee', function onClickAssignee() {
      return $(this).submit();
    });
    $(document)
      .off('click', '.issuable-sidebar .dropdown-content a')
      .on('click', '.issuable-sidebar .dropdown-content a', e => e.preventDefault());

    $(document)
      .off('click', '.edit-link')
      .on('click', '.edit-link', function onClickEdit(e) {
        e.preventDefault();
        const $block = $(this).parents('.block');
        const $selectbox = $block.find('.selectbox');
        if ($selectbox.is(':visible')) {
          $selectbox.hide();
          $block.find('.value').show();
        } else {
          $selectbox.show();
          $block.find('.value').hide();
        }

        if ($selectbox.is(':visible')) {
          setTimeout(() => $block.find('.dropdown-menu-toggle').trigger('click'), 0);
        }
      });

    window.addEventListener('beforeunload', () => {
      // collapsed_gutter cookie hides the sidebar
      const bpBreakpoint = bp.getBreakpointSize();
      if (bpBreakpoint === 'xs' || bpBreakpoint === 'sm') {
        Cookies.set('collapsed_gutter', true);
      }
    });
  }

  initParticipants() {
    $(document).on('click', '.js-participants-more', this.toggleHiddenParticipants);
    return $('.js-participants-author').each(function forEachAuthor(i) {
      if (i >= PARTICIPANTS_ROW_COUNT) {
        $(this).addClass('js-participants-hidden').hide();
      }
    });
  }

  toggleHiddenParticipants() {
    const currentText = $(this).text().trim();
    const lessText = $(this).data('less-text');
    const originalText = $(this).data('original-text');

    if (currentText === originalText) {
      $(this).text(lessText);

      if (gl.lazyLoader) gl.lazyLoader.loadCheck();
    } else {
      $(this).text(originalText);
    }

    $('.js-participants-hidden').toggle();
  }
}