123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <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>
|