discussion_navigation.js 1.3 KB
Newer Older
1
import { scrollToElement } from '~/lib/utils/common_utils';
2
import eventHub from '../../notes/event_hub';
3 4 5

export default {
  methods: {
6 7
    diffsJump(id) {
      const selector = `ul.notes[data-discussion-id="${id}"]`;
8

9 10
      eventHub.$once('scrollToDiscussion', () => {
        const el = document.querySelector(selector);
11 12 13

        if (el) {
          scrollToElement(el);
14

15 16
          return true;
        }
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

        return false;
      });

      this.expandDiscussion({ discussionId: id });
    },
    discussionJump(id) {
      const selector = `div.discussion[data-discussion-id="${id}"]`;

      const el = document.querySelector(selector);

      this.expandDiscussion({ discussionId: id });

      if (el) {
        scrollToElement(el);

        return true;
34 35 36 37
      }

      return false;
    },
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
    jumpToDiscussion(id) {
      if (id) {
        const activeTab = window.mrTabs.currentAction;

        if (activeTab === 'diffs') {
          this.diffsJump(id);
        } else if (activeTab === 'commits' || activeTab === 'pipelines') {
          window.mrTabs.eventHub.$once('MergeRequestTabChange', () => {
            setTimeout(() => this.discussionJump(id), 0);
          });

          window.mrTabs.tabShown('show');
        } else {
          this.discussionJump(id);
        }
      }
    },
55 56
  },
};