summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/repo/components/repo.vue
blob: a00e1e9d80920eee4b6597eca0adfb844efd1fb3 (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
<script>
import { mapState, mapGetters } from 'vuex';
import RepoSidebar from './repo_sidebar.vue';
import RepoCommitSection from './repo_commit_section.vue';
import RepoTabs from './repo_tabs.vue';
import RepoFileButtons from './repo_file_buttons.vue';
import RepoPreview from './repo_preview.vue';
import repoEditor from './repo_editor.vue';

export default {
  computed: {
    ...mapState([
      'currentBlobView',
    ]),
    ...mapGetters([
      'isCollapsed',
      'changedFiles',
    ]),
  },
  components: {
    RepoSidebar,
    RepoTabs,
    RepoFileButtons,
    repoEditor,
    RepoCommitSection,
    RepoPreview,
  },
  mounted() {
    const returnValue = 'Are you sure you want to lose unsaved changes?';
    window.onbeforeunload = (e) => {
      if (!this.changedFiles.length) return undefined;

      Object.assign(e, {
        returnValue,
      });
      return returnValue;
    };
  },
};
</script>

<template>
  <div
    class="multi-file"
    :class="{
      'is-collapsed': isCollapsed
    }"
  >
    <repo-sidebar/>
    <div
      v-if="isCollapsed"
      class="multi-file-edit-pane"
    >
      <repo-tabs />
      <component
        class="multi-file-edit-pane-content"
        :is="currentBlobView"
      />
      <repo-file-buttons />
    </div>
    <repo-commit-section />
  </div>
</template>