summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issue_show/components/fields/project_move.vue
blob: f811fb0de24e2d9e0ace87463c4f01b63ca20e17 (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
80
81
82
83
<script>
  import tooltipMixin from '../../../vue_shared/mixins/tooltip';

  export default {
    mixins: [
      tooltipMixin,
    ],
    props: {
      formState: {
        type: Object,
        required: true,
      },
      projectsAutocompleteUrl: {
        type: String,
        required: true,
      },
    },
    mounted() {
      const $moveDropdown = $(this.$refs['move-dropdown']);

      $moveDropdown.select2({
        ajax: {
          url: this.projectsAutocompleteUrl,
          quietMillis: 125,
          data(term, page, context) {
            return {
              search: term,
              offset_id: context,
            };
          },
          results(data) {
            const more = data.length >= 50;
            const context = data[data.length - 1] ? data[data.length - 1].id : null;

            return {
              results: data,
              more,
              context,
            };
          },
        },
        formatResult(project) {
          return project.name_with_namespace;
        },
        formatSelection(project) {
          return project.name_with_namespace;
        },
      })
      .on('change', (e) => {
        this.formState.move_to_project_id = parseInt(e.target.value, 10);
      });
    },
    beforeDestroy() {
      $(this.$refs['move-dropdown']).select2('destroy');
    },
  };
</script>

<template>
  <fieldset>
    <label
      for="issuable-move"
      class="sr-only">
      Move
    </label>
    <div class="issuable-form-select-holder append-right-5">
      <input
        ref="move-dropdown"
        type="hidden"
        id="issuable-move"
        data-placeholder="Move to a different project" />
    </div>
    <span
      data-placement="auto top"
      title="Moving an issue will copy the discussion to a different project and close it here. All participants will be notified of the new location."
      ref="tooltip">
      <i
        class="fa fa-question-circle"
        aria-hidden="true">
      </i>
    </span>
  </fieldset>
</template>