|
|
<template lang="pug"> .navigator .navigator-bar .navigator-fab .navigator-fab-button(@click='toggleMainMenu') svg.icons.is-24(role='img') title Navigation use(xlink:href='#gg-apps-grid') .navigator-title h1 {{ siteTitle }} .navigator-subtitle(:class='subtitleClass') transition(name='navigator-subtitle-icon') svg.icons.is-24.navigator-subtitle-icon(role='img', v-if='subtitleIcon') title {{subtitleText}} use(:xlink:href='subtitleIconClass') h2 {{subtitleText}} .navigator-action .navigator-action-item(:class='{"is-active": userMenuShown}', @click='toggleUserMenu') svg.icons.is-32(role='img') title User use(xlink:href='#nc-user-circle') transition(name='navigator-action-item-dropdown') ul.navigator-action-item-dropdown(v-show='userMenuShown', v-cloak) li label Account svg.icons.is-24(role='img') title Account use(xlink:href='#nc-man-green') li(@click='logout') label Sign out svg.icons.is-24(role='img') title Sign Out use(xlink:href='#nc-exit') transition(name='navigator-sd') .navigator-sd(v-show='sdShown', v-cloak) .navigator-sd-actions a.is-active(href='', title='Search') svg.icons.is-24(role='img') title Search use(xlink:href='#gg-search') a(href='', title='New Document') svg.icons.is-24(role='img') title New Document use(xlink:href='#nc-plus-circle') a(href='', title='Edit Document') svg.icons.is-24(role='img') title Edit Document use(xlink:href='#nc-pen-red') a(href='', title='History') svg.icons.is-24(role='img') title History use(xlink:href='#nc-restore') a(href='', title='View Source') svg.icons.is-24(role='img') title View Source use(xlink:href='#nc-code-editor') a(href='', title='Move Document') svg.icons.is-24(role='img') title Move Document use(xlink:href='#nc-move') a(href='', title='Delete Document') svg.icons.is-24(role='img') title Delete Document use(xlink:href='#nc-trash') .navigator-sd-search input(type='text', ref='iptSearch', placeholder='Search') .navigator-sd-results .navigator-sd-footer a(href='', title='Settings') svg.icons.is-24(role='img') title Settings use(xlink:href='#nc-gear') a(href='', title='Users') svg.icons.is-24(role='img') title Users use(xlink:href='#nc-users') a(href='', title='Assets') svg.icons.is-24(role='img') title Assets use(xlink:href='#nc-image') </template>
<script> /* global siteConfig */
import { mapState } from 'vuex'
export default { data() { return { sdShown: false, userMenuShown: false } }, computed: { ...mapState('navigator', [ 'subtitleShown', 'subtitleStyle', 'subtitleText', 'subtitleIcon' ]), siteTitle() { return siteConfig.title }, subtitleClass() { return { 'is-active': this.subtitleShown, 'is-error': this.subtitleStyle === 'error', 'is-warning': this.subtitleStyle === 'warning', 'is-success': this.subtitleStyle === 'success', 'is-info': this.subtitleStyle === 'info' } }, subtitleIconClass() { return '#' + this.subtitleIcon } }, methods: { toggleMainMenu() { this.sdShown = !this.sdShown this.userMenuShown = false if (this.sdShown) { this.$nextTick(() => { this.bindOutsideClick() this.$refs.iptSearch.focus() }) } else { this.unbindOutsideClick() } }, toggleUserMenu() { this.userMenuShown = !this.userMenuShown this.sdShown = false if (this.userMenuShown) { this.bindOutsideClick() } else { this.unbindOutsideClick() } }, bindOutsideClick() { document.addEventListener('mousedown', this.handleOutsideClick, false) }, unbindOutsideClick() { document.removeEventListener('mousedown', this.handleOutsideClick, false) }, handleOutsideClick(ev) { if (!this.$el.contains(ev.target)) { this.sdShown = false this.userMenuShown = false } }, logout() { window.location.assign(this.$helpers.resolvePath('logout')) } } } </script>
|