diff --git a/js/src/components/Event/EventMinimalistCard.vue b/js/src/components/Event/EventMinimalistCard.vue index 2a120151f..8c93c63b0 100644 --- a/js/src/components/Event/EventMinimalistCard.vue +++ b/js/src/components/Event/EventMinimalistCard.vue @@ -1,6 +1,6 @@ <template> <router-link - class="event-minimalist-card-wrapper" + class="event-minimalist-card-wrapper bg-white rounded-lg shadow-md" dir="auto" :to="{ name: RouteName.EVENT, params: { uuid: event.uuid } }" > diff --git a/js/src/components/Utils/EmptyContent.vue b/js/src/components/Utils/EmptyContent.vue index 60102696e..d76ae818f 100644 --- a/js/src/components/Utils/EmptyContent.vue +++ b/js/src/components/Utils/EmptyContent.vue @@ -1,5 +1,9 @@ <template> - <div class="empty-content" :class="{ inline }" role="note"> + <div + class="empty-content" + :class="{ inline, 'text-center': center }" + role="note" + > <b-icon :icon="icon" size="is-large" /> <h2 class="empty-content__title"> <!-- @slot Mandatory title --> @@ -18,6 +22,7 @@ import { Component, Prop, Vue } from "vue-property-decorator"; export default class EmptyContent extends Vue { @Prop({ type: String, required: true }) icon!: string; @Prop({ type: Boolean, required: false, default: false }) inline!: boolean; + @Prop({ type: Boolean, required: false, default: false }) center!: boolean; } </script> diff --git a/js/src/i18n/en_US.json b/js/src/i18n/en_US.json index 7d40c9578..37835ede4 100644 --- a/js/src/i18n/en_US.json +++ b/js/src/i18n/en_US.json @@ -1318,5 +1318,8 @@ "return to the homepage": "return to the homepage", "Thanks a lot, your feedback was submitted!": "Thanks a lot, your feedback was submitted!", "You may also:": "You may also:", - "You may now close this page or {return_to_the_homepage}.": "You may now close this page or {return_to_the_homepage}." -} + "You may now close this page or {return_to_the_homepage}.": "You may now close this page or {return_to_the_homepage}.", + "This group is a remote group, it's possible the original instance has more informations.": "This group is a remote group, it's possible the original instance has more informations.", + "View the group profile on the original instance": "View the group profile on the original instance", + "View past events": "View past events" +} \ No newline at end of file diff --git a/js/src/i18n/fr_FR.json b/js/src/i18n/fr_FR.json index 8a2b01d61..35a52c4a3 100644 --- a/js/src/i18n/fr_FR.json +++ b/js/src/i18n/fr_FR.json @@ -1309,5 +1309,8 @@ "Category": "Catégorie", "Select a category": "Choisissez une categorie", "Any category": "N'importe quelle catégorie", - "No instance found.": "Aucune instance trouvée." + "No instance found.": "Aucune instance trouvée.", + "This group is a remote group, it's possible the original instance has more informations.": "Ce groupe est un groupe distant, il est possible que l'instance d'origine ait plus d'informations.", + "View the group profile on the original instance": "Afficher le profil du groupe sur l'instance d'origine", + "View past events": "Voir les événements passés" } diff --git a/js/src/views/Event/GroupEvents.vue b/js/src/views/Event/GroupEvents.vue index 642892a9b..a930c1bf9 100644 --- a/js/src/views/Event/GroupEvents.vue +++ b/js/src/views/Event/GroupEvents.vue @@ -43,21 +43,40 @@ <subtitle> {{ showPassedEvents ? $t("Past events") : $t("Upcoming events") }} </subtitle> - <b-switch v-model="showPassedEvents">{{ $t("Past events") }}</b-switch> + <b-switch class="mb-4" v-model="showPassedEvents">{{ + $t("Past events") + }}</b-switch> <grouped-multi-event-minimalist-card :events="group.organizedEvents.elements" :isCurrentActorMember="isCurrentActorMember" /> - <b-message + <empty-content v-if=" group.organizedEvents.elements.length === 0 && $apollo.loading === false " - type="is-danger" + icon="calendar" + :inline="true" + :center="true" > {{ $t("No events found") }} - </b-message> + <template v-if="group.domain !== null"> + <div class="mt-4"> + <p> + {{ + $t( + "This group is a remote group, it's possible the original instance has more informations." + ) + }} + </p> + <b-button type="is-text" tag="a" :href="group.url"> + {{ $t("View the group profile on the original instance") }} + </b-button> + </div> + </template> + </empty-content> <b-pagination + class="mt-4" :total="group.organizedEvents.total" v-model="eventsPage" :per-page="EVENTS_PAGE_LIMIT" @@ -81,6 +100,7 @@ import { PERSON_MEMBERSHIPS } from "@/graphql/actor"; import GroupMixin from "@/mixins/group"; import { IMember } from "@/types/actor/member.model"; import { FETCH_GROUP_EVENTS } from "@/graphql/event"; +import EmptyContent from "../../components/Utils/EmptyContent.vue"; import { displayName, usernameWithDomain } from "../../types/actor"; const EVENTS_PAGE_LIMIT = 10; @@ -114,6 +134,7 @@ const EVENTS_PAGE_LIMIT = 10; }, }, components: { + EmptyContent, Subtitle, GroupedMultiEventMinimalistCard, }, diff --git a/js/src/views/Group/Group.vue b/js/src/views/Group/Group.vue index 2ed8013ac..b8e693efe 100644 --- a/js/src/views/Group/Group.vue +++ b/js/src/views/Group/Group.vue @@ -579,29 +579,47 @@ </div> <empty-content v-else-if="group" icon="calendar" :inline="true"> {{ $t("No public upcoming events") }} - <template #desc v-if="isCurrentActorFollowing"> - <i18n - class="has-text-grey-dark" - path="You will receive notifications about this group's public activity depending on %{notification_settings}." - > - <router-link - :to="{ name: RouteName.NOTIFICATIONS }" - slot="notification_settings" - >{{ $t("your notification settings") }}</router-link + <template #desc> + <template v-if="isCurrentActorFollowing"> + <i18n + class="has-text-grey-dark" + path="You will receive notifications about this group's public activity depending on %{notification_settings}." > - </i18n> + <router-link + :to="{ name: RouteName.NOTIFICATIONS }" + slot="notification_settings" + >{{ $t("your notification settings") }}</router-link + > + </i18n> + </template> + <b-button + tag="router-link" + class="my-2" + type="is-text" + :to="{ + name: RouteName.GROUP_EVENTS, + params: { preferredUsername: usernameWithDomain(group) }, + query: { future: false }, + }" + >{{ $t("View past events") }}</b-button + > </template> </empty-content> <b-skeleton animated v-else-if="$apollo.loading"></b-skeleton> - <router-link - v-if="organizedEvents.total > 0" - :to="{ - name: RouteName.GROUP_EVENTS, - params: { preferredUsername: usernameWithDomain(group) }, - query: { future: organizedEvents.elements.length > 0 }, - }" - >{{ $t("View all events") }}</router-link - > + <div class="flex justify-center"> + <b-button + tag="router-link" + class="my-4" + type="is-text" + v-if="organizedEvents.total > 0" + :to="{ + name: RouteName.GROUP_EVENTS, + params: { preferredUsername: usernameWithDomain(group) }, + query: { future: organizedEvents.elements.length > 0 }, + }" + >{{ $t("View all events") }}</b-button + > + </div> </section> <section> <subtitle>{{ $t("Latest posts") }}</subtitle>