138 lines
3.3 KiB
Vue
138 lines
3.3 KiB
Vue
<script>
|
|
import tooltip from '../../directives/tooltip';
|
|
import toolbarButton from './toolbar_button.vue';
|
|
import icon from '../icon.vue';
|
|
|
|
export default {
|
|
directives: {
|
|
tooltip,
|
|
},
|
|
components: {
|
|
toolbarButton,
|
|
icon,
|
|
},
|
|
props: {
|
|
previewMarkdown: {
|
|
type: Boolean,
|
|
required: true,
|
|
},
|
|
},
|
|
mounted() {
|
|
$(document).on('markdown-preview:show.vue', this.previewMarkdownTab);
|
|
$(document).on('markdown-preview:hide.vue', this.writeMarkdownTab);
|
|
},
|
|
beforeDestroy() {
|
|
$(document).off('markdown-preview:show.vue', this.previewMarkdownTab);
|
|
$(document).off('markdown-preview:hide.vue', this.writeMarkdownTab);
|
|
},
|
|
methods: {
|
|
isMarkdownForm(form) {
|
|
return form && !form.find('.js-vue-markdown-field').length;
|
|
},
|
|
|
|
previewMarkdownTab(event, form) {
|
|
if (event.target.blur) event.target.blur();
|
|
if (this.isMarkdownForm(form)) return;
|
|
|
|
this.$emit('preview-markdown');
|
|
},
|
|
|
|
writeMarkdownTab(event, form) {
|
|
if (event.target.blur) event.target.blur();
|
|
if (this.isMarkdownForm(form)) return;
|
|
|
|
this.$emit('write-markdown');
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<div class="md-header">
|
|
<ul class="nav-links clearfix">
|
|
<li
|
|
class="md-header-tab"
|
|
:class="{ active: !previewMarkdown }"
|
|
>
|
|
<a
|
|
class="js-write-link"
|
|
href="#md-write-holder"
|
|
tabindex="-1"
|
|
@click.prevent="writeMarkdownTab($event)"
|
|
>
|
|
Write
|
|
</a>
|
|
</li>
|
|
<li
|
|
class="md-header-tab"
|
|
:class="{ active: previewMarkdown }">
|
|
<a
|
|
class="js-preview-link"
|
|
href="#md-preview-holder"
|
|
tabindex="-1"
|
|
@click.prevent="previewMarkdownTab($event)"
|
|
>
|
|
Preview
|
|
</a>
|
|
</li>
|
|
<li
|
|
class="md-header-toolbar"
|
|
:class="{ active: !previewMarkdown }"
|
|
>
|
|
<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"
|
|
/>
|
|
<toolbar-button
|
|
tag="`"
|
|
tag-block="```"
|
|
button-title="Insert code"
|
|
icon="code"
|
|
/>
|
|
<toolbar-button
|
|
tag="* "
|
|
:prepend="true"
|
|
button-title="Add a bullet list"
|
|
icon="list-bulleted"
|
|
/>
|
|
<toolbar-button
|
|
tag="1. "
|
|
:prepend="true"
|
|
button-title="Add a numbered list"
|
|
icon="list-numbered"
|
|
/>
|
|
<toolbar-button
|
|
tag="* [ ] "
|
|
:prepend="true"
|
|
button-title="Add a task list"
|
|
icon="task-done"
|
|
/>
|
|
<button
|
|
v-tooltip
|
|
aria-label="Go full screen"
|
|
class="toolbar-btn toolbar-fullscreen-btn js-zen-enter"
|
|
data-container="body"
|
|
tabindex="-1"
|
|
title="Go full screen"
|
|
type="button"
|
|
>
|
|
<icon
|
|
name="screen-full"
|
|
/>
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</template>
|