summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issue_show/index.js
blob: f06e33dee603fb8aa874556dac60dba58b81a12b (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
import Vue from 'vue';
import issuableApp from './components/app.vue';
import '../vue_shared/vue_resource_interceptor';

document.addEventListener('DOMContentLoaded', () => new Vue({
  el: document.getElementById('js-issuable-app'),
  components: {
    issuableApp,
  },
  data() {
    const issuableElement = this.$options.el;
    const issuableTitleElement = issuableElement.querySelector('.title');
    const issuableDescriptionElement = issuableElement.querySelector('.wiki');
    const issuableDescriptionTextarea = issuableElement.querySelector('.js-task-list-field');
    const {
      canUpdate,
      endpoint,
      issuableRef,
    } = issuableElement.dataset;

    return {
      canUpdate: gl.utils.convertPermissionToBoolean(canUpdate),
      endpoint,
      issuableRef,
      initialTitle: issuableTitleElement.innerHTML,
      initialDescriptionHtml: issuableDescriptionElement ? issuableDescriptionElement.innerHTML : '',
      initialDescriptionText: issuableDescriptionTextarea ? issuableDescriptionTextarea.textContent : '',
    };
  },
  render(createElement) {
    return createElement('issuable-app', {
      props: {
        canUpdate: this.canUpdate,
        endpoint: this.endpoint,
        issuableRef: this.issuableRef,
        initialTitle: this.initialTitle,
        initialDescriptionHtml: this.initialDescriptionHtml,
        initialDescriptionText: this.initialDescriptionText,
      },
    });
  },
}));