diff --git a/src/App.vue b/src/App.vue
index 1366adc45d5..c968122cd4c 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -457,9 +457,10 @@ export default {
.content {
height: 100%;
+ //FIXME: remove this v-deep once nextcloud vue v4 is adopted
::v-deep .app-navigation-toggle {
- top: 10px;
- right: -10px;
+ top: 8px;
+ right: -8px;
border-radius: var(--border-radius-pill);
}
diff --git a/src/assets/variables.scss b/src/assets/variables.scss
index 31d4c275d48..927449da276 100644
--- a/src/assets/variables.scss
+++ b/src/assets/variables.scss
@@ -68,7 +68,7 @@ $message-utils-width: 100px;
//message form max height
$message-form-max-height: 180px;
-$top-bar-height: 60px;
+$top-bar-height: 61px;
$color-call-background: #444444;
$color-guests-avatar: #ffffff;
diff --git a/src/components/ChatView.vue b/src/components/ChatView.vue
index 2a76975dbcf..9cfed2065af 100644
--- a/src/components/ChatView.vue
+++ b/src/components/ChatView.vue
@@ -153,11 +153,10 @@ export default {
diff --git a/src/components/TopBar/TopBar.vue b/src/components/TopBar/TopBar.vue
index 81b3ef35473..ce6b674613a 100644
--- a/src/components/TopBar/TopBar.vue
+++ b/src/components/TopBar/TopBar.vue
@@ -21,88 +21,114 @@
-
-
-
-
- {{ changeViewText }}
-
-
-
-
-
- {{ labelFullscreen }}
-
-
-
- {{ t('spreed', 'Go to file') }}
-
-
+
+
+
@@ -119,10 +145,17 @@ import { CONVERSATION, PARTICIPANT } from '../../constants'
import { generateUrl } from '@nextcloud/router'
import { callParticipantCollection } from '../../utils/webrtc/index'
import { emit } from '@nextcloud/event-bus'
+import ConversationIcon from '../ConversationIcon'
+import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'
+import richEditor from '@nextcloud/vue/dist/Mixins/richEditor'
export default {
name: 'TopBar',
+ directives: {
+ Tooltip,
+ },
+
components: {
ActionButton,
Actions,
@@ -130,8 +163,11 @@ export default {
CallButton,
ActionSeparator,
MicrophoneOff,
+ ConversationIcon,
},
+ mixins: [richEditor],
+
props: {
isInCall: {
type: Boolean,
@@ -187,9 +223,11 @@ export default {
isFileConversation() {
return this.conversation.objectType === 'file' && this.conversation.objectId
},
+
isOneToOneConversation() {
return this.conversation.type === CONVERSATION.TYPE.ONE_TO_ONE
},
+
linkToFile() {
if (this.isFileConversation) {
return window.location.protocol + '//' + window.location.host + generateUrl('/f/' + this.conversation.objectId)
@@ -209,15 +247,19 @@ export default {
canModerate() {
return this.canFullModerate || this.participantType === PARTICIPANT.TYPE.GUEST_MODERATOR
},
+
showModerationOptions() {
return !this.isOneToOneConversation && this.canModerate
},
+
token() {
return this.$store.getters.getToken()
},
+
conversation() {
return this.$store.getters.conversation(this.token) || this.$store.getters.dummyConversation
},
+
linkToConversation() {
if (this.token !== '') {
return window.location.protocol + '//' + window.location.host + generateUrl('/call/' + this.token)
@@ -225,6 +267,7 @@ export default {
return ''
}
},
+
conversationHasSettings() {
return this.conversation.type === CONVERSATION.TYPE.GROUP
|| this.conversation.type === CONVERSATION.TYPE.PUBLIC
@@ -233,6 +276,10 @@ export default {
isGrid() {
return this.$store.getters.isGrid
},
+
+ renderedDescription() {
+ return this.renderContent(this.conversation.description)
+ },
},
mounted() {
@@ -324,6 +371,10 @@ export default {
callParticipantModel.forceMute()
})
},
+
+ openConversationSettings() {
+ emit('show-conversation-settings')
+ },
},
}
@@ -334,27 +385,39 @@ export default {
.top-bar {
height: $top-bar-height;
- position: absolute;
- top: 0;
right: 12px; /* needed so we can still use the scrollbar */
display: flex;
z-index: 10;
justify-content: flex-end;
padding: 8px;
+ width: 100%;
+ background-color: var(--color-main-background);
+ border-bottom: 1px solid var(--color-border);
&.in-call {
right: 0;
+ background-color: transparent;
+ border: none;
+ position: absolute;
+ top: 0;
+ left:0;
.forced-background {
background-color: rgba(0,0,0,0.1) !important;
border-radius: var(--border-radius-pill);
}
}
+ &__buttons {
+ display: flex;
+ margin-left: 8px;
+ }
+
&__button {
margin: 0 2px;
align-self: center;
display: flex;
align-items: center;
+ white-space: nowrap;
svg {
margin-right: 4px !important;
}
@@ -363,4 +426,35 @@ export default {
}
}
}
+
+.conversation-header {
+ position: relative;
+ display: flex;
+ overflow-x: hidden;
+ overflow-y: clip;
+ margin-left: 48px;
+ white-space: nowrap;
+ width: 100%;
+ cursor: pointer;
+ &__text {
+ display: flex;
+ flex-direction:column;
+ flex-grow: 1;
+ margin-left: 8px;
+ justify-content: center;
+ width: 100%;
+ overflow: hidden;
+ }
+ .title {
+ font-weight: bold;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+ .description {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ max-width: fit-content;
+ color: var(--color-text-lighter);
+ }
+}