GroupSwitch.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <script setup>
  2. import userService from '@/services/userService'
  3. import { useUserStore } from '@/stores/user'
  4. import { UseColorMode } from '@vueuse/components'
  5. const user = useUserStore()
  6. const props = defineProps({
  7. showGroupSwitch: Boolean,
  8. groups: Array
  9. })
  10. const emit = defineEmits(['update:showGroupSwitch'])
  11. /**
  12. * Sets the selected group as the active group
  13. */
  14. function setActiveGroup(id) {
  15. user.preferences.activeGroup = id
  16. if( user.preferences.rememberActiveGroup ) {
  17. userService.updatePreference('activeGroup', id)
  18. }
  19. emit('update:showGroupSwitch', false)
  20. }
  21. </script>
  22. <template>
  23. <div id="groupSwitch" class="container groups">
  24. <div class="columns is-centered">
  25. <div class="column is-one-third-tablet is-one-quarter-desktop is-one-quarter-widescreen is-one-quarter-fullhd">
  26. <div class="columns is-multiline">
  27. <div class="column is-full" v-for="group in groups" :key="group.id">
  28. <UseColorMode v-slot="{ mode }">
  29. <button class="button is-fullwidth" :class="{'is-dark has-text-light is-outlined': mode == 'dark'}" @click="setActiveGroup(group.id)">{{ group.name }}</button>
  30. </UseColorMode>
  31. </div>
  32. </div>
  33. <div class="columns is-centered">
  34. <div class="column has-text-centered">
  35. <RouterLink :to="{ name: 'groups' }" >{{ $t('groups.manage_groups') }}</RouterLink>
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. <VueFooter :showButtons="true">
  41. <ButtonBackCloseCancel action="close" :useLinkTag="false" @closed="$emit('update:showGroupSwitch', false)" />
  42. </VueFooter>
  43. </div>
  44. </template>