Common.vue 1.37 KB
Newer Older
1 2 3 4 5 6 7
<template>
  <div
    class="theme-container"
    :class="pageClasses"
    @touchstart="onTouchStart"
    @touchend="onTouchEnd"
  >
8
    <Password v-if="isGlobalEncrypted" @password-verify="checkGlobalPassword" />
9
    <!-- Content -->
10
    <template v-else>
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
      <Navbar v-if="enableNavbar" @toggle-sidebar="toggleSidebar">
        <template #start>
          <slot name="navbar-start" />
        </template>
        <template #center>
          <slot name="navbar-center" />
        </template>
        <template #end>
          <slot name="navbar-end" />
        </template>
      </Navbar>

      <div class="sidebar-mask" @click="toggleSidebar(false)" />

      <Sidebar :items="sidebarItems" @toggle-sidebar="toggleSidebar">
        <template #top>
          <slot name="sidebar-top" />
        </template>
        <template #center>
          <slot name="sidebar-center" />
        </template>
        <template #bottom>
          <slot name="sidebar-bottom" />
        </template>
      </Sidebar>

      <slot :sidebar-items="sidebarItems" :headers="headers" />
38 39

      <PageFooter :key="$route.path" />
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
    </template>
  </div>
</template>

<script src="./Common" />

<style lang="stylus">
.theme-container
  min-height 100vh

.sidebar-mask
  position fixed
  z-index 9
  top 0
  left 0
  width 100vw
  height 100vh
  display none

  .theme-container.sidebar-open &
    display block
</style>