description_template.vue 2.78 KB
Newer Older
1
<script>
2
/* eslint-disable @gitlab/vue-i18n/no-bare-strings */
3 4
import $ from 'jquery';
import IssuableTemplateSelectors from '../../../templates/issuable_template_selectors';
5

6 7 8 9 10
export default {
  props: {
    formState: {
      type: Object,
      required: true,
11
    },
12 13 14 15
    issuableTemplates: {
      type: Array,
      required: false,
      default: () => [],
16
    },
17 18 19 20 21 22 23
    projectPath: {
      type: String,
      required: true,
    },
    projectNamespace: {
      type: String,
      required: true,
24
    },
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
  },
  computed: {
    issuableTemplatesJson() {
      return JSON.stringify(this.issuableTemplates);
    },
  },
  mounted() {
    // Create the editor for the template
    const editor = document.querySelector('.detail-page-description .note-textarea') || {};
    editor.setValue = val => {
      this.formState.description = val;
    };
    editor.getValue = () => this.formState.description;

    this.issuableTemplate = new IssuableTemplateSelectors({
      $dropdowns: $(this.$refs.toggle),
      editor,
    });
  },
};
45 46 47
</script>

<template>
Mike Greiling's avatar
Mike Greiling committed
48
  <div class="dropdown js-issuable-selector-wrap" data-issuable-type="issue">
49
    <button
50 51 52 53
      ref="toggle"
      :data-namespace-path="projectNamespace"
      :data-project-path="projectPath"
      :data-data="issuableTemplatesJson"
54 55 56 57
      class="dropdown-menu-toggle js-issuable-selector"
      type="button"
      data-field-name="issuable_template"
      data-selected="null"
Mike Greiling's avatar
Mike Greiling committed
58 59
      data-toggle="dropdown"
    >
60
      <span class="dropdown-toggle-text">{{ __('Choose a template') }}</span>
Mike Greiling's avatar
Mike Greiling committed
61
      <i aria-hidden="true" class="fa fa-chevron-down"> </i>
62 63 64 65
    </button>
    <div class="dropdown-menu dropdown-select">
      <div class="dropdown-title">
        Choose a template
66 67 68 69 70
        <button
          class="dropdown-title-button dropdown-menu-close"
          :aria-label="__('Close')"
          type="button"
        >
Mike Greiling's avatar
Mike Greiling committed
71
          <i aria-hidden="true" class="fa fa-times dropdown-menu-close-icon"> </i>
72 73 74
        </button>
      </div>
      <div class="dropdown-input">
75 76 77 78 79 80
        <input
          type="search"
          class="dropdown-input-field"
          :placeholder="__('Filter')"
          autocomplete="off"
        />
Mike Greiling's avatar
Mike Greiling committed
81
        <i aria-hidden="true" class="fa fa-search dropdown-input-search"> </i>
82 83
        <i
          role="button"
84
          :aria-label="__('Clear templates search input')"
Mike Greiling's avatar
Mike Greiling committed
85 86
          class="fa fa-times dropdown-input-clear js-dropdown-input-clear"
        >
87 88
        </i>
      </div>
89
      <div class="dropdown-content"></div>
90 91
      <div class="dropdown-footer">
        <ul class="dropdown-footer-list">
92 93 94 95 96 97
          <li>
            <a class="no-template">{{ __('No template') }}</a>
          </li>
          <li>
            <a class="reset-template">{{ __('Reset template') }}</a>
          </li>
98 99 100 101 102
        </ul>
      </div>
    </div>
  </div>
</template>