Header.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <!--
  2. Header de l'application
  3. Contient entre autres le nom de l'organisation, l'accès à l'aide et aux préférences de l'utilisateur
  4. -->
  5. <template>
  6. <v-app-bar
  7. order="0"
  8. density="compact"
  9. class="bg-ot-green text-ot-white"
  10. >
  11. <template #prepend>
  12. <v-app-bar-nav-icon
  13. v-if="hasMainMenu"
  14. :icon="isMainMenuOpened ? 'mdi:mdi-menu-open' : 'mdi:mdi-menu'"
  15. class="text-ot-white"
  16. @click="toggleMainMenu"
  17. >
  18. </v-app-bar-nav-icon>
  19. </template>
  20. <v-toolbar-title v-text="title" />
  21. <v-spacer />
  22. <!-- <LayoutHeaderUniversalCreationCreateButton v-if="showUniversalButton" />-->
  23. <!-- <v-tooltip :text="$t('welcome')" location="bottom">-->
  24. <!-- <template #activator="{ props }">-->
  25. <!-- <v-btn-->
  26. <!-- v-bind="props"-->
  27. <!-- icon="fas fa-home"-->
  28. <!-- :href="homeUrl"-->
  29. <!-- class="ml-2 text-ot-white"-->
  30. <!-- size="small"-->
  31. <!-- ></v-btn>-->
  32. <!-- </template>-->
  33. <!-- </v-tooltip>-->
  34. <LayoutHeaderMenu name="WebsiteList" />
  35. <!-- <LayoutHeaderMenu name="MyAccesses" />-->
  36. <!-- <LayoutHeaderMenu name="MyFamily" />-->
  37. <!-- <LayoutHeaderNotification />-->
  38. <!-- <LayoutHeaderMenu name="Configuration" />-->
  39. <!-- <LayoutHeaderMenu name="Account" />-->
  40. <!-- <a-->
  41. <!-- href="https://support.opentalent.fr/"-->
  42. <!-- class="text-body pa-3 ml-2 bg-ot-dark-grey text-ot-white text-decoration-none"-->
  43. <!-- target="_blank"-->
  44. <!-- >-->
  45. <!-- &lt;!&ndash; TODO: mettre le lien vers le support dans les .env ou dans la conf &ndash;&gt;-->
  46. <!-- <span class="d-none d-sm-none d-md-flex">{{ $t('help_access') }}</span>-->
  47. <!-- <v-icon icon="fas fa-question-circle" class="d-sm-flex d-md-none" color="white"></v-icon>-->
  48. <!-- </a>-->
  49. </v-app-bar>
  50. </template>
  51. <script setup lang="ts">
  52. import {computed, ComputedRef} from "@vue/reactivity";
  53. import {useMenu} from "~/composables/layout/useMenu";
  54. import {useAbility} from "@casl/vue";
  55. import {useOrganizationProfileStore} from "~/stores/organizationProfile";
  56. import {useRuntimeConfig} from "#app";
  57. const organizationProfile = useOrganizationProfileStore()
  58. const title: ComputedRef<string> = computed(() => organizationProfile.name ?? 'Opentalent')
  59. const { hasMenu, isMenuOpened, toggleMenu } = useMenu()
  60. const hasMainMenu = computed(() => hasMenu('Main'))
  61. const isMainMenuOpened = computed(() => isMenuOpened('Main'))
  62. const toggleMainMenu = () => toggleMenu('Main')
  63. const runtimeConfig = useRuntimeConfig()
  64. const homeUrl = runtimeConfig.baseUrlAdminLegacy
  65. const { can } = useAbility()
  66. const showUniversalButton =
  67. can('manage', 'users')
  68. || can('manage', 'courses')
  69. || can('manage', 'examens')
  70. || can('manage', 'educationalprojects')
  71. || can('manage', 'events')
  72. || can('manage', 'emails')
  73. || can('manage', 'mails')
  74. || can('manage', 'texto')
  75. || can('display', 'message_send_page')
  76. || can('manage', 'equipments') ;
  77. </script>
  78. <style scoped>
  79. .help {
  80. padding: 14px 14px 13px;
  81. font-size: 14px;
  82. text-decoration: none;
  83. }
  84. </style>