diff --git a/webapp/components/Button/JoinLeaveButton.vue b/webapp/components/Button/JoinLeaveButton.vue index 9bcb5042a..152039eb0 100644 --- a/webapp/components/Button/JoinLeaveButton.vue +++ b/webapp/components/Button/JoinLeaveButton.vue @@ -6,6 +6,7 @@ :icon="icon" :filled="isMember && !hovered" :danger="isMember && hovered" + v-tooltip="tooltip" @mouseenter.native="onHover" @mouseleave.native="hovered = false" @click.prevent="toggle" @@ -24,6 +25,7 @@ export default { group: { type: Object, required: true }, userId: { type: String, required: true }, isMember: { type: Boolean, required: true }, + isNonePendingMember: { type: Boolean, required: true }, disabled: { type: Boolean, default: false }, loading: { type: Boolean, default: false }, }, @@ -35,17 +37,33 @@ export default { }, computed: { icon() { - if (this.isMember && this.hovered) { - return 'close' - } else { - return this.isMember ? 'check' : 'plus' + if (this.isMember) { + if (this.isNonePendingMember) { + return this.hovered ? 'close' : 'check' + } else { + return this.hovered ? 'close' : 'question-circle' + } } + return 'plus' }, label() { if (this.isMember) { - return this.$t('group.joinLeaveButton.iAmMember') - } else { - return this.$t('group.joinLeaveButton.join') + if (this.isNonePendingMember) { + return this.hovered + ? this.$t('group.joinLeaveButton.leave') + : this.$t('group.joinLeaveButton.iAmMember') + } else { + return this.$t('group.joinLeaveButton.pendingMember') + } + } + return this.$t('group.joinLeaveButton.join') + }, + tooltip() { + return { + content: this.$t('group.joinLeaveButton.tooltip'), + placement: 'right', + show: this.isMember && !this.isNonePendingMember && this.hovered, + trigger: this.isMember && !this.isNonePendingMember ? 'hover' : 'manual', } }, }, diff --git a/webapp/locales/de.json b/webapp/locales/de.json index f4ad97d01..c63e1790c 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -447,7 +447,10 @@ "in": "in", "joinLeaveButton": { "iAmMember": "Bin Mitglied", - "join": "Beitreten" + "join": "Beitreten", + "leave": "Verlassen", + "pendingMember": "Ausstehendes Mitglied", + "tooltip": "Der Gruppeninhaber muss dich noch bestätigen." }, "labelSlug": "Eindeutiger Gruppenname", "leaveModal": { @@ -482,7 +485,7 @@ "admin": "Administrator", "owner": "Inhaber", "pending": "Ausstehendes Mitglied", - "usual": "Einfaches Mitglied" + "usual": "Mitglied" }, "save": "Neue Gruppe anlegen", "type": "Öffentlichkeit der Gruppe", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index d44625b7f..e00075919 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -447,7 +447,10 @@ "in": "in", "joinLeaveButton": { "iAmMember": "I'm a member", - "join": "Join" + "join": "Join", + "leave": "Leave", + "pendingMember": "Pending member", + "tooltip": "The group owner has yet to confirm you." }, "labelSlug": "Unique group name", "leaveModal": { @@ -482,7 +485,7 @@ "admin": "Administrator", "owner": "Owner", "pending": "Pending Member", - "usual": "Simple Member" + "usual": "Member" }, "save": "Create new group", "type": "Visibility of the group", diff --git a/webapp/locales/es.json b/webapp/locales/es.json index a9668c9cf..a313b3dc4 100644 --- a/webapp/locales/es.json +++ b/webapp/locales/es.json @@ -302,7 +302,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/fr.json b/webapp/locales/fr.json index 9149c1493..511ca4568 100644 --- a/webapp/locales/fr.json +++ b/webapp/locales/fr.json @@ -291,7 +291,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/it.json b/webapp/locales/it.json index 3fc2f7e6b..548278fc9 100644 --- a/webapp/locales/it.json +++ b/webapp/locales/it.json @@ -299,7 +299,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/nl.json b/webapp/locales/nl.json index 66f296eb0..27fbc8865 100644 --- a/webapp/locales/nl.json +++ b/webapp/locales/nl.json @@ -87,7 +87,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/pl.json b/webapp/locales/pl.json index 41120dd26..3b7d1200a 100644 --- a/webapp/locales/pl.json +++ b/webapp/locales/pl.json @@ -171,7 +171,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/pt.json b/webapp/locales/pt.json index 9cde701d2..121fc903d 100644 --- a/webapp/locales/pt.json +++ b/webapp/locales/pt.json @@ -337,7 +337,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/locales/ru.json b/webapp/locales/ru.json index 292f83831..4ae664cd8 100644 --- a/webapp/locales/ru.json +++ b/webapp/locales/ru.json @@ -316,7 +316,8 @@ "goal": null, "joinLeaveButton": { "iAmMember": null, - "join": null + "join": null, + "pendingMember": null }, "membersCount": null, "membersListTitle": null diff --git a/webapp/pages/group/_id/_slug.vue b/webapp/pages/group/_id/_slug.vue index 641b8802e..1eda842d3 100644 --- a/webapp/pages/group/_id/_slug.vue +++ b/webapp/pages/group/_id/_slug.vue @@ -102,6 +102,7 @@ :group="group || {}" :userId="currentUser.id" :isMember="isGroupMember" + :isNonePendingMember="isGroupMemberNonePending" :disabled="isGroupOwner" :loading="$apollo.loading" @prepare="prepareJoinLeave"