add hiding menu bar example

This commit is contained in:
Philipp Kühn 2018-08-22 16:05:44 +02:00
parent 88e56c7b27
commit e3aaa0630c
5 changed files with 78 additions and 4 deletions

View File

@ -3,7 +3,7 @@
.page {
&__content {
padding: 2rem;
padding: 4rem 1rem;
}
}
@ -90,10 +90,13 @@
display: flex;
margin-bottom: 1rem;
visibility: hidden;
opacity: 0;
transition: visibility 0.2s 0.4s, opacity 0.2s 0.4s;
&.is-hidden {
visibility: hidden;
opacity: 0;
}
&.is-focused {
visibility: visible;
opacity: 1;

View File

@ -20,6 +20,9 @@
<router-link class="navigation__link" to="/links">
Links
</router-link>
<router-link class="navigation__link" to="/hiding-menu-bar">
Hiding Menu Bar
</router-link>
</div>
</div>

View File

@ -0,0 +1,63 @@
<template>
<div>
<editor :editable="true" class="editor" @update="onUpdate">
<div class="menubar is-hidden" :class="{ 'is-focused': focused }" slot="menubar" slot-scope="{ nodes, marks, focused }">
<div v-if="nodes && marks">
<button
class="menubar__button"
:class="{ 'is-active': marks.bold.active() }"
@click="marks.bold.command"
>
<icon name="bold" />
</button>
<button
class="menubar__button"
:class="{ 'is-active': marks.italic.active() }"
@click="marks.italic.command"
>
<icon name="italic" />
</button>
<button
class="menubar__button"
@click="marks.code.command"
:class="{ 'is-active': marks.code.active() }
">
<icon name="code" />
</button>
</div>
</div>
<div class="editor__content" slot="content" slot-scope="props">
<h1>
Hiding Menu Bar
</h1>
<p>
Try to focus the editor to see the menu. It's like magic. 🔮
</p>
</div>
</editor>
</div>
</template>
<script>
import Icon from 'Components/Icon'
import { Editor } from 'tiptap'
export default {
components: {
Editor,
Icon,
},
methods: {
onUpdate(state) {
this.data = state.doc.toJSON()
},
},
}
</script>

View File

@ -2,7 +2,7 @@
<div>
<editor :editable="true" class="editor" @update="onUpdate">
<div class="menubar" :class="{ 'is-focused': focused }" slot="menubar" slot-scope="{ nodes, marks, focused }">
<div class="menubar" slot="menubar" slot-scope="{ nodes, marks }">
<div v-if="nodes && marks">
<button

View File

@ -6,6 +6,7 @@ import App from 'Components/App'
import RouteMenuBar from 'Components/Routes/MenuBar'
import RouteMenuBubble from 'Components/Routes/MenuBubble'
import RouteLinks from 'Components/Routes/Links'
import RouteHidingMenuBar from 'Components/Routes/HidingMenuBar'
const __svg__ = { path: './assets/images/icons/*.svg', name: 'assets/images/[hash].sprite.svg' }
svgSpriteLoader(__svg__.filename)
@ -27,6 +28,10 @@ const routes = [
path: '/links',
component: RouteLinks,
},
{
path: '/hiding-menu-bar',
component: RouteHidingMenuBar,
},
]
const router = new VueRouter({