123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <template lang='pug'>
- v-toolbar(color='black', dark, app, clipped-left, fixed, flat, dense)
- v-menu(open-on-hover, offset-y, bottom, left, nudge-top='-18', min-width='250')
- v-toolbar-side-icon(slot='activator')
- v-icon view_module
- v-list(dense).py-0
- v-list-tile(avatar, href='/')
- v-list-tile-avatar: v-icon(color='blue') home
- v-list-tile-content Home
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='green') add_box
- v-list-tile-content New Page
- v-divider.my-0
- v-subheader Current Page
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='indigo') edit
- v-list-tile-content Edit
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='indigo') history
- v-list-tile-content History
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='indigo') code
- v-list-tile-content View Source
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='indigo') forward
- v-list-tile-content Move / Rename
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='red darken-2') delete
- v-list-tile-content Delete
- v-divider.my-0
- v-subheader Assets
- v-list-tile(avatar, @click='')
- v-list-tile-avatar: v-icon(color='blue-grey') burst_mode
- v-list-tile-content Images & Files
- v-toolbar-title
- span.subheading Wiki.js
- v-spacer
- transition(name='navHeaderSearch')
- v-text-field(
- ref='searchField',
- v-if='searchIsShown',
- v-model='search',
- clearable,
- color='blue',
- label='Search...',
- single-line,
- hide-details,
- append-icon='search',
- :append-icon-cb='searchEnter',
- :loading='searchIsLoading',
- @keyup.enter='searchEnter',
- @keyup.esc='searchToggle'
- )
- v-progress-linear(
- indeterminate,
- slot='progress',
- height='2',
- color='blue'
- )
- v-spacer
- v-progress-circular.mr-3(indeterminate, color='blue', :size='22', :width='2' v-show='isLoading')
- slot(name='actions')
- transition(name='navHeaderSearch')
- v-btn(icon, @click='searchToggle', v-if='!searchIsShown')
- v-icon(color='grey') search
- v-btn(icon, href='/a')
- v-icon(color='grey') settings
- v-menu(offset-y, min-width='300')
- v-btn(icon, slot='activator')
- v-icon(color='grey') account_circle
- v-list.py-0
- v-list-tile.py-3(avatar)
- v-list-tile-avatar
- v-avatar.red(:size='40'): span.white--text.subheading JD
- v-list-tile-content
- v-list-tile-title John Doe
- v-list-tile-sub-title john.doe@example.com
- v-divider.my-0
- v-list-tile(href='/p')
- v-list-tile-action: v-icon(color='red') person
- v-list-tile-title Profile
- v-list-tile(href='/logout')
- v-list-tile-action: v-icon(color='red') exit_to_app
- v-list-tile-title Logout
- </template>
- <script>
- import { mapGetters } from 'vuex'
- export default {
- data() {
- return {
- menuIsShown: true,
- searchIsLoading: false,
- searchIsShown: false,
- search: ''
- }
- },
- computed: {
- ...mapGetters(['isLoading'])
- },
- methods: {
- searchToggle() {
- this.searchIsLoading = false
- this.searchIsShown = !this.searchIsShown
- if (this.searchIsShown) {
- this.$nextTick(() => {
- this.$refs.searchField.focus()
- })
- }
- },
- searchEnter() {
- this.searchIsLoading = true
- }
- }
- }
- </script>
- <style lang='scss'>
- .navHeaderSearch {
- &-enter-active, &-leave-active {
- transition: opacity .25s ease, transform .25s ease;
- opacity: 1;
- }
- &-enter-active {
- transition-delay: .25s;
- }
- &-enter, &-leave-to {
- opacity: 0;
- transform: translateY(-25px);
- }
- }
- </style>
|