summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/vue_shared/components/markdown/header.vue
blob: 1a11f493b7fe8c5c8bacec6084249b3af0aa64ae (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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<script>
  import tooltipMixin from '../../mixins/tooltip';
  import toolbarButton from './toolbar_button.vue';

  export default {
    mixins: [
      tooltipMixin,
    ],
    props: {
      previewMarkdown: {
        type: Boolean,
        required: true,
      },
    },
    components: {
      toolbarButton,
    },
    methods: {
      toggleMarkdownPreview(e, form) {
        if (form && !form.find('.js-vue-markdown-field').length) {
          return;
        } else if (e.target.blur) {
          e.target.blur();
        }

        this.$emit('toggle-markdown');
      },
    },
    mounted() {
      $(document).on('markdown-preview:show.vue', this.toggleMarkdownPreview);
      $(document).on('markdown-preview:hide.vue', this.toggleMarkdownPreview);
    },
    beforeDestroy() {
      $(document).on('markdown-preview:show.vue', this.toggleMarkdownPreview);
      $(document).off('markdown-preview:hide.vue', this.toggleMarkdownPreview);
    },
  };
</script>

<template>
  <div class="md-header">
    <ul class="nav-links clearfix">
      <li :class="{ active: !previewMarkdown }">
        <a
          href="#md-write-holder"
          tabindex="-1"
          @click.prevent="toggleMarkdownPreview($event)">
          Write
        </a>
      </li>
      <li :class="{ active: previewMarkdown }">
        <a
          href="#md-preview-holder"
          tabindex="-1"
          @click.prevent="toggleMarkdownPreview($event)">
          Preview
        </a>
      </li>
      <li class="pull-right">
        <div class="toolbar-group">
          <toolbar-button
            tag="**"
            button-title="Add bold text"
            icon="bold" />
          <toolbar-button
            tag="*"
            button-title="Add italic text"
            icon="italic" />
          <toolbar-button
            tag="> "
            :prepend="true"
            button-title="Insert a quote"
            icon="quote-right" />
          <toolbar-button
            tag="`"
            tag-block="```"
            button-title="Insert code"
            icon="code" />
          <toolbar-button
            tag="* "
            :prepend="true"
            button-title="Add a bullet list"
            icon="list-ul" />
          <toolbar-button
            tag="1. "
            :prepend="true"
            button-title="Add a numbered list"
            icon="list-ol" />
          <toolbar-button
            tag="* [ ] "
            :prepend="true"
            button-title="Add a task list"
            icon="check-square-o" />
        </div>
        <div class="toolbar-group">
          <button
            aria-label="Go full screen"
            class="toolbar-btn js-zen-enter"
            data-container="body"
            tabindex="-1"
            title="Go full screen"
            type="button"
            ref="tooltip">
            <i
              aria-hidden="true"
              class="fa fa-arrows-alt fa-fw">
            </i>
          </button>
        </div>
      </li>
    </ul>
  </div>
</template>