From a97211afdf3533e97832dc71980270b7b035121e Mon Sep 17 00:00:00 2001 From: N-Pex Date: Thu, 8 May 2025 11:52:39 +0200 Subject: [PATCH] Dialogs and Vuetify styling changes --- src/assets/css/chat.scss | 24 +++++- src/assets/css/main.scss | 9 ++- src/components/AudioLayout.vue | 4 +- src/components/BottomSheet.vue | 10 +-- src/components/Chat.vue | 75 ++++++++----------- src/components/ChatHeader.vue | 11 ++- src/components/ChatHeaderPrivate.vue | 14 ++-- src/components/CreatePollDialog.vue | 29 +------ src/components/CreateRoom.vue | 12 +-- src/components/DeviceList.vue | 6 +- src/components/GetLink.vue | 2 +- src/components/InputControl.vue | 1 + src/components/InteractiveAuth.vue | 4 +- src/components/Invite.vue | 8 +- src/components/Join.vue | 10 +-- src/components/LeaveRoomDialog.vue | 31 ++------ src/components/Login.vue | 4 +- .../MessageOperationsBottomSheet.vue | 10 +-- src/components/MessageRetentionDialog.vue | 35 +++------ src/components/Profile.vue | 16 ++-- src/components/PurgeRoomDialog.vue | 38 ++-------- src/components/ReportRoomDialog.vue | 26 +------ src/components/RoomDialogBase.vue | 43 +++++++++++ src/components/RoomExport.vue | 1 + src/components/RoomInfo.vue | 59 ++++++--------- src/components/RoomList.vue | 26 ++++--- src/components/RoomTypeSelector.vue | 2 +- src/components/RoundedDialog.vue | 14 ++++ src/components/SelectLanguageDialog.vue | 9 ++- src/components/StickerPickerBottomSheet.vue | 29 ++++--- src/components/UserProfileDialog.vue | 24 +++--- src/components/YouAre.vue | 2 +- src/components/createRoomMixin.js | 7 +- src/components/file_mode/FileDropLayout.vue | 6 +- src/components/languageMixin.js | 1 + .../messages/MessageIncomingPoll.vue | 2 +- src/components/messages/MessageOperations.vue | 12 +-- src/components/messages/MessageOutgoing.vue | 2 +- .../messages/MessageOutgoingPoll.vue | 2 +- src/components/messages/QuickReactions.vue | 18 ++--- src/components/messages/SeenBy.vue | 6 +- .../channel/MessageOperationsChannel.vue | 8 +- .../welcome_headers/WelcomeHeaderChannel.vue | 4 +- src/plugins/vuetify.js | 3 +- src/router/index.js | 7 +- 45 files changed, 320 insertions(+), 346 deletions(-) create mode 100644 src/components/RoomDialogBase.vue create mode 100644 src/components/RoundedDialog.vue diff --git a/src/assets/css/chat.scss b/src/assets/css/chat.scss index 213cefe..6eddbdf 100644 --- a/src/assets/css/chat.scss +++ b/src/assets/css/chat.scss @@ -22,6 +22,15 @@ body { } } +.v-input.no-underline { + .v-field__outline { + /* Remove text underline */ + color: transparent !important; + min-height: 20px; + overflow: hidden; + } +} + .home { .v-card { background-color: white; @@ -312,7 +321,20 @@ body { font-family: "Inter", sans-serif; font-weight: 300; font-size: 18 * $chat-text-size; - .v-input__slot { + + .v-field__overlay { + display: none; + } + .v-field__input { + padding: 0; + min-height: 32px; + mask-image: none; + -webkit-mask-image: none; + font-family: "Inter", sans-serif; + font-weight: 300; + font-size: 18 * $chat-text-size; + } + .v-field__outline { /* Remove text underline */ color: transparent !important; min-height: 20px; diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss index dbcde48..327cf50 100644 --- a/src/assets/css/main.scss +++ b/src/assets/css/main.scss @@ -131,21 +131,28 @@ body { position:absolute; top:0; bottom:0; right:0; left:0; } } } -.v-dialog { +.v-dialog-rounded > * { border-radius: 20px !important; +} + +.v-dialog { .dialog-content { + border-radius: 20px !important; padding: 20px; background-color: white; } + .dialog-title { word-break: break-word; text-align: center; + padding: 16px 24px 10px 24px; margin-bottom: 20px; } .dialog-text { text-align: left; word-break: break-word; + a { color: black; text-decoration: underline; diff --git a/src/components/AudioLayout.vue b/src/components/AudioLayout.vue index d234f5d..6f2fc73 100644 --- a/src/components/AudioLayout.vue +++ b/src/components/AudioLayout.vue @@ -70,9 +70,8 @@
👏 - - mic
expand_more @@ -92,6 +91,7 @@ import emitter from 'tiny-emitter/instance'; export default { mixins: [messageMixin], components: { AuthedImage }, + emits: ['mark-read','loadprevious','loadnext','start-recording','sendclap'], props: { autoplay: { type: Boolean, diff --git a/src/components/BottomSheet.vue b/src/components/BottomSheet.vue index 5b034ab..318f2ad 100644 --- a/src/components/BottomSheet.vue +++ b/src/components/BottomSheet.vue @@ -18,15 +18,13 @@ :style="{ top: `${isMove ? y : calcY()}px` }" > - cancel
@@ -220,8 +218,8 @@ export default { .bottom-sheet-close { position: absolute; - right: 0; - top: 0; + right: 4px; + top: 4px; z-index: 1; } diff --git a/src/components/Chat.vue b/src/components/Chat.vue index 6b34feb..2e22618 100644 --- a/src/components/Chat.vue +++ b/src/components/Chat.vue @@ -117,9 +117,8 @@ - - arrow_downward @@ -133,7 +132,7 @@
{{ $t("message.replying_to", { user: senderDisplayName }) }}
- {{ replyToEvent.getContent().body | latestReply }} + {{ latestReply }}
{{ replyToThreadMessage }}
{{ $t("message.reply_image") }}
@@ -146,11 +145,10 @@ class="rounded" /> - $vuetify.icons.poll + $vuetify.icons.poll
- - cancel +
@@ -163,7 +161,7 @@ - - cancel + - - $vuetify.icons.poll + + $vuetify.icons.poll - - mic - - mic - - {{ editedEvent ? "save" : "arrow_upward" }} - - $vuetify.icons.addReaction + " icon="$vuetify.icons.addReaction"> - - face @@ -296,7 +288,7 @@ + variant="solo" full-width auto-grow rows="1" no-resize hide-details :placeholder="$t('file_mode.add_a_message')">
{{ currentSendError }}
@@ -347,14 +339,13 @@ - + @@ -552,16 +543,6 @@ export default { }; }, - filters: { - latestReply(contents) { - const contentArr = contents.split("\n").reverse(); - if (contentArr[0] === "") { - contentArr.shift(); - } - return (contentArr && contentArr.length > 0) ? contentArr[0].replace(/^> (<.*> )?/g, "") : ""; - }, - }, - mounted() { emitter.on('audio-playback-ended', this.audioPlaybackEnded); const container = this.chatContainer; @@ -589,6 +570,14 @@ export default { }, computed: { + latestReply() { + const contents = this.replyToEvent ? this.replyToEvent.getContent().body : ""; + const contentArr = contents.split("\n").reverse(); + if (contentArr[0] === "") { + contentArr.shift(); + } + return (contentArr && contentArr.length > 0) ? contentArr[0].replace(/^> (<.*> )?/g, "") : ""; + }, heartEmoji() { return this.$refs.emojiPicker.mapEmojis["Symbols"].find(({ aliases }) => aliases.includes('heart')).data; }, @@ -800,20 +789,20 @@ export default { roomWelcomeHeader() { if (!this.hideRoomWelcomeHeader && this.roomCreatedByUsRecently) { if (this.roomDisplayType == ROOM_TYPE_CHANNEL) { - return WelcomeHeaderChannel; + return markRaw(WelcomeHeaderChannel); } if (this.isDirectRoom) { - return WelcomeHeaderDirectChat; + return markRaw(WelcomeHeaderDirectChat); } - return WelcomeHeaderRoom; + return markRaw(WelcomeHeaderRoom); } return null; }, messageOperationsComponent() { if (this.room.displayType == ROOM_TYPE_CHANNEL) { - return MessageOperationsChannel; + return markRaw(MessageOperationsChannel); } - return MessageOperations; + return markRaw(MessageOperations); }, chatContainerStyle() { if (this.$config.chat_backgrounds && this.room && this.roomId) { diff --git a/src/components/ChatHeader.vue b/src/components/ChatHeader.vue index 71d9b71..fc8ffdd 100644 --- a/src/components/ChatHeader.vue +++ b/src/components/ChatHeader.vue @@ -38,17 +38,15 @@ - - $vuetify.icons.ic_moderator-delete - - $vuetify.icons.ic_member-leave +
- + $vuetify.icons.ic_more
@@ -56,7 +54,7 @@
- + @@ -79,6 +77,7 @@ import roomInfoMixin from "./roomInfoMixin"; export default { name: "ChatHeader", mixins: [profileInfoMixin, roomInfoMixin], + emits: ['download','view-room-details','header-click'], components: { LeaveRoomDialog, ProfileInfoPopup, diff --git a/src/components/ChatHeaderPrivate.vue b/src/components/ChatHeaderPrivate.vue index 6059c1a..e558844 100644 --- a/src/components/ChatHeaderPrivate.vue +++ b/src/components/ChatHeaderPrivate.vue @@ -43,22 +43,20 @@ - - $vuetify.icons.ic_moderator-delete
- + $vuetify.icons.ic_more
@@ -66,7 +64,7 @@ - + diff --git a/src/components/CreatePollDialog.vue b/src/components/CreatePollDialog.vue index e177b6c..efc9489 100644 --- a/src/components/CreatePollDialog.vue +++ b/src/components/CreatePollDialog.vue @@ -1,7 +1,6 @@ + + \ No newline at end of file diff --git a/src/components/RoomExport.vue b/src/components/RoomExport.vue index a52a08c..4e068a8 100644 --- a/src/components/RoomExport.vue +++ b/src/components/RoomExport.vue @@ -101,6 +101,7 @@ import "../services/filesaver.cjs"; export default { name: "RoomExport", mixins: [chatMixin], + emits: ["close"], components: { ChatHeader, MessageIncomingText, diff --git a/src/components/RoomInfo.vue b/src/components/RoomInfo.vue index dc59071..b293219 100644 --- a/src/components/RoomInfo.vue +++ b/src/components/RoomInfo.vue @@ -58,7 +58,7 @@ maxlength="50" @blur="updateRoomName()" @keyup.enter="updateRoomName()" - solo + variant="solo" >
@@ -81,7 +81,7 @@ autofocus @blur="updateRoomTopic()" @keyup.enter="updateRoomTopic()" - solo + variant="solo" >
@@ -108,36 +108,26 @@ {{ item.text }} - - - + - + - +
- + {{ $t("room_info.members") }}
{{ members.length }}
-